{"version":3,"file":"test.mjs","sources":["../playwright/packages/playwright/src/common/globals.ts","../playwright/packages/playwright/src/isomorphic/teleReceiver.ts","../playwright/packages/playwright/src/common/test.ts","../playwright/packages/playwright/src/matchers/matcherHint.ts","../playwright/packages/playwright/src/util.ts","../playwright/packages/playwright/src/matchers/toBeTruthy.ts","../playwright/packages/playwright/src/matchers/toEqual.ts","../playwright/packages/playwright/bundles/expect/node_modules/color-name/index.js","../playwright/packages/playwright/bundles/expect/node_modules/color-convert/conversions.js","../playwright/packages/playwright/bundles/expect/node_modules/color-convert/route.js","../playwright/packages/playwright/bundles/expect/node_modules/color-convert/index.js","../playwright/packages/playwright/bundles/expect/node_modules/ansi-styles/index.js","../playwright/packages/playwright/bundles/expect/node_modules/supports-color/browser.js","../playwright/packages/playwright/bundles/expect/node_modules/chalk/source/util.js","../playwright/packages/playwright/bundles/expect/node_modules/chalk/source/templates.js","../playwright/packages/playwright/bundles/expect/node_modules/chalk/source/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-get-type/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/node_modules/ansi-styles/index.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/collections.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/AsymmetricMatcher.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/DOMCollection.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/lib/escapeHTML.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/lib/markup.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/DOMElement.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/Immutable.js","../playwright/packages/playwright/bundles/expect/node_modules/react-is/cjs/react-is.production.min.js","../playwright/packages/playwright/bundles/expect/node_modules/react-is/cjs/react-is.development.js","../playwright/packages/playwright/bundles/expect/node_modules/react-is/index.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/ReactElement.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/plugins/ReactTestComponent.js","../playwright/packages/playwright/bundles/expect/node_modules/pretty-format/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/cleanupSemantic.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/constants.js","../playwright/packages/playwright/bundles/expect/node_modules/diff-sequences/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/joinAlignedDiffs.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/normalizeDiffOptions.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/diffLines.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/diffStrings.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/getAlignedDiffs.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/printDiffs.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-diff/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-matcher-utils/build/Replaceable.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-matcher-utils/build/deepCyclicCopyReplaceable.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-matcher-utils/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@jest/expect-utils/build/jasmineUtils.js","../playwright/packages/playwright/bundles/expect/node_modules/@jest/expect-utils/build/immutableUtils.js","../playwright/packages/playwright/bundles/expect/node_modules/@jest/expect-utils/build/utils.js","../playwright/packages/playwright/bundles/expect/node_modules/@jest/expect-utils/build/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/clearLine.js","../playwright/packages/playwright/bundles/expect/node_modules/ci-info/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/isInteractive.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/preRunMessage.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/specialChars.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/createDirectory.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/ErrorWithStack.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/deepCyclicCopy.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/createProcessObject.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/installCommonGlobals.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/interopRequireDefault.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/isPromise.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/setGlobal.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/convertDescriptorToString.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/replacePathSepForGlob.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/testPathPatternToRegExp.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/lib/constants.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/lib/utils.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/lib/scan.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/lib/parse.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/lib/picomatch.js","../playwright/packages/playwright/bundles/expect/node_modules/picomatch/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/globsToMatcher.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/pluralize.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/formatTime.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/tryRealpath.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/requireOrImportModule.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/invariant.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/isNonNullable.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-util/build/index.js","../playwright/packages/playwright/bundles/expect/third_party/jestMatchersObject.ts","../playwright/packages/playwright/bundles/expect/third_party/asymmetricMatchers.ts","../playwright/packages/playwright/bundles/expect/third_party/extractExpectedAssertionsErrors.ts","../playwright/packages/playwright/bundles/expect/third_party/print.ts","../playwright/packages/playwright/bundles/expect/third_party/matchers.ts","../playwright/packages/playwright/bundles/expect/third_party/spyMatchers.ts","../playwright/packages/playwright/bundles/expect/node_modules/js-tokens/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/helper-validator-identifier/src/identifier.ts","../playwright/packages/playwright/bundles/expect/node_modules/@babel/helper-validator-identifier/src/keyword.ts","../playwright/packages/playwright/bundles/expect/node_modules/@babel/helper-validator-identifier/src/index.ts","../playwright/packages/playwright/bundles/expect/node_modules/picocolors/picocolors.browser.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/escape-string-regexp/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/color-name/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/color-convert/conversions.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/color-convert/route.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/color-convert/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/ansi-styles/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/supports-color/browser.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/chalk/templates.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/node_modules/chalk/index.js","../playwright/packages/playwright/bundles/expect/node_modules/@babel/highlight/src/index.ts","../playwright/packages/playwright/bundles/expect/node_modules/@babel/code-frame/src/index.ts","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/utils.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/stringify.js","../playwright/packages/playwright/bundles/expect/node_modules/is-number/index.js","../playwright/packages/playwright/bundles/expect/node_modules/to-regex-range/index.js","../playwright/packages/playwright/bundles/expect/node_modules/fill-range/index.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/compile.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/expand.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/constants.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/lib/parse.js","../playwright/packages/playwright/bundles/expect/node_modules/braces/index.js","../playwright/packages/playwright/bundles/expect/node_modules/micromatch/index.js","../playwright/packages/playwright/bundles/expect/node_modules/slash/index.js","../playwright/packages/playwright/bundles/expect/node_modules/escape-string-regexp/index.js","../src/shims/module.ts","../playwright/packages/playwright/bundles/expect/node_modules/stack-utils/index.js","../playwright/packages/playwright/bundles/expect/node_modules/jest-message-util/build/index.js","../playwright/packages/playwright/bundles/expect/third_party/toThrowMatchers.ts","../playwright/packages/playwright/bundles/expect/third_party/index.ts","../playwright/packages/playwright/bundles/expect/node_modules/jest-mock/build/index.js","../playwright/packages/playwright/bundles/expect/src/expectBundleImpl.ts","../playwright/packages/playwright/src/common/expectBundle.ts","../playwright/packages/playwright/src/matchers/toHaveURL.ts","../playwright/packages/playwright/src/matchers/toMatchText.ts","../playwright/packages/playwright/src/common/config.ts","../playwright/packages/playwright/src/worker/timeoutManager.ts","../playwright/packages/playwright/src/worker/testTracing.ts","../playwright/packages/playwright/src/worker/util.ts","../playwright/packages/playwright/src/worker/testInfo.ts","../playwright/packages/playwright/src/matchers/matchers.ts","../playwright/packages/playwright/src/matchers/toMatchAriaSnapshot.ts","../playwright/packages/playwright/src/matchers/toMatchSnapshot.ts","../playwright/packages/playwright/src/matchers/expect.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-plugin-utils/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-import-attributes/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-decorators/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/utils/shallowEqual.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/utils/deprecationWarning.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/generated/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/matchesPattern.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/buildMatchMemberExpression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/react/isReactComponent.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/react/isCompatTag.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isType.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isPlaceholderType.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/is.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-identifier/src/identifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-identifier/src/keyword.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-identifier/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isValidIdentifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-string-parser/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/constants/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/utils.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/core.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/flow.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/jsx.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/placeholders.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/misc.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/experimental.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/typescript.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/deprecated-aliases.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/definitions/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/validate.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/generated/lowercase.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/generated/uppercase.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/generated/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/utils/react/cleanJSXElementLiteralChild.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/react/buildChildren.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isNode.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/asserts/assertNode.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/asserts/generated/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/flow/createTypeAnnotationBasedOnTypeof.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/flow/removeTypeDuplicates.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/flow/createFlowUnionType.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/typescript/removeTypeDuplicates.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/typescript/createTSUnionType.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/builders/productions.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/clone/cloneNode.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/clone/clone.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/clone/cloneDeep.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/clone/cloneDeepWithoutLoc.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/clone/cloneWithoutLoc.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/addComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/addComment.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/utils/inherit.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/inheritInnerComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/inheritLeadingComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/inheritTrailingComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/inheritsComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/comments/removeComments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/constants/generated/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toBlock.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/ensureBlock.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toIdentifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toBindingIdentifierName.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toComputedKey.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toExpression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/traverse/traverseFast.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/removeProperties.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/removePropertiesDeep.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toKeyAlias.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toStatement.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/valueToNode.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/appendToMemberExpression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/inherits.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/modifications/prependToMemberExpression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/retrievers/getAssignmentIdentifiers.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/retrievers/getBindingIdentifiers.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/retrievers/getOuterBindingIdentifiers.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/retrievers/getFunctionName.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/traverse/traverse.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isBinding.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isLet.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isBlockScoped.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isImmutable.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isNodesEquivalent.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isReferenced.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isScope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isSpecifierDefault.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isValidES3Identifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/validators/isVar.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/gatherSequenceExpressions.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/converters/toSequenceExpression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/types/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/formatters.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/options.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/location.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error/module-errors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error/to-node-description.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error/standard-errors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error/strict-mode-errors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error/pipeline-operator-errors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parse-error.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/options.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/estree.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/tokenizer/context.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/tokenizer/types.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/babel-helper-validator-identifier/src/identifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/babel-helper-validator-identifier/src/keyword.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/identifier.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/scope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/flow/scope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/base.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/comments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/whitespace.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/tokenizer/state.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/babel-helper-string-parser/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/tokenizer/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/class-scope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/expression-scope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/util/production-parameter.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/util.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/node.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/flow/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/jsx/xhtml.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/jsx/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/typescript/scope.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/lval.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/typescript/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/placeholders.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugins/v8intrinsic.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/plugin-utils.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/expression.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/statement.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/parser/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/parser/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/picocolors/picocolors.browser.js","../playwright/packages/playwright/bundles/babel/node_modules/js-tokens/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/code-frame/src/defs.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/code-frame/src/highlight.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/code-frame/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/parse.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/populate.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/string.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/literal.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/builder.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/template/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helpers/src/helpers-generated.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helpers/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/lib/virtual-types.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/lib/virtual-types-validator.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/visitors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/scope/lib/renamer.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/scope/binding.ts","../playwright/packages/playwright/bundles/babel/node_modules/globals/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/cache.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/scope/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/set-array/src/set-array.ts","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/sourcemap-codec/src/sourcemap-codec.ts","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/resolve-uri/src/resolve-uri.ts","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/trace-mapping/dist/trace-mapping.umd.js","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/gen-mapping/src/sourcemap-segment.ts","../playwright/packages/playwright/bundles/babel/node_modules/@jridgewell/gen-mapping/src/gen-mapping.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/source-map.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/buffer.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/node/whitespace.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/node/parentheses.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/node/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/token-map.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/template-literals.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/expressions.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/statements.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/classes.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/methods.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/modules.ts","../playwright/packages/playwright/bundles/babel/node_modules/jsesc/jsesc.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/types.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/flow.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/base.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/jsx.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/typescript.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/generators/deprecated.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/printer.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/generator/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/ancestry.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/inference/util.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/inference/inferer-reference.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/inference/inferers.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/inference/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/lib/removal-hooks.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/removal.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/lib/hoister.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/modification.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/replacement.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/evaluation.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/conversion.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/introspection.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/family.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/comments.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/context.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/traverse-node.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/path/context.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/hub.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/traverse/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/semver/semver.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-imports/src/import-builder.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-imports/src/is-module.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-imports/src/import-injector.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-imports/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/rewrite-this.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/rewrite-live-references.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/normalize-and-load-metadata.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/lazy-modules.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/dynamic-import.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/get-module-name.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-module-transforms/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/file/babel-7-helpers.cjs","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/file/file.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/tools/build-external-helpers.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/files/index-browser.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/helpers/environment.ts","../playwright/packages/playwright/bundles/babel/node_modules/gensync/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/gensync-utils/async.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/util.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/helpers/deep-array.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/plugin.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/gensync-utils/functional.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/caching.ts","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/data/browsers.js","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/dist/unpacker/browsers.js","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/data/browserVersions.js","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/dist/unpacker/browserVersions.js","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/data/agents.js","../playwright/packages/playwright/bundles/babel/node_modules/caniuse-lite/dist/unpacker/agents.js","../playwright/packages/playwright/bundles/babel/node_modules/electron-to-chromium/versions.js","../playwright/packages/playwright/bundles/babel/node_modules/browserslist/error.js","../playwright/packages/playwright/bundles/babel/node_modules/browserslist/browser.js","../playwright/packages/playwright/bundles/babel/node_modules/browserslist/parse.js","../playwright/packages/playwright/bundles/babel/node_modules/browserslist/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-option/src/find-suggestion.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-option/src/validator.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-validator-option/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/compat-data/native-modules.js","../playwright/packages/playwright/bundles/babel/node_modules/yallist/iterator.js","../playwright/packages/playwright/bundles/babel/node_modules/yallist/yallist.js","../playwright/packages/playwright/bundles/babel/node_modules/lru-cache/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/targets.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/utils.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/options.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/pretty.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/debug.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/compat-data/plugins.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/filter-items.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-compilation-targets/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/resolve-targets-browser.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/config-descriptors.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/item.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/validation/removed.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/validation/option-assertions.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/errors/rewrite-stack-trace.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/errors/config-error.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/validation/options.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/pattern-to-regex.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/printer.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/config-chain.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/validation/plugins.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/helpers/config-api.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/partial.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/full.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/config/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/plugin-pass.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/block-hoist-plugin.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/normalize-opts.ts","../playwright/packages/playwright/bundles/babel/node_modules/convert-source-map/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/parser/util/missing-plugin-helper.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/parser/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/util/clone-deep.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/normalize-file.ts","../playwright/packages/playwright/bundles/babel/node_modules/@ampproject/remapping/src/source-map-tree.ts","../playwright/packages/playwright/bundles/babel/node_modules/@ampproject/remapping/src/build-source-map-tree.ts","../playwright/packages/playwright/bundles/babel/node_modules/@ampproject/remapping/src/source-map.ts","../playwright/packages/playwright/bundles/babel/node_modules/@ampproject/remapping/src/remapping.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/file/merge-map.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/file/generate.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transformation/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transform.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transform-file-browser.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/transform-ast.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/parse.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/core/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-member-expression-to-functions/src/util.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-member-expression-to-functions/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-optimise-call-expression/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-replace-supers/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-annotate-as-pure/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-skip-transparent-expression-wrappers/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/typescript.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/fields.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/misc.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/decorators.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/decorators-2018-09.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/features.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/helper-create-class-features-plugin/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-proposal-decorators/src/transformer-legacy.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-proposal-decorators/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-proposal-explicit-resource-management/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-class-properties/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-class-static-block/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-numeric-separator/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-logical-assignment-operators/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-nullish-coalescing-operator/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-optional-chaining/src/util.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-optional-chaining/src/transform.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-optional-chaining/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-private-methods/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-json-strings/lib/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-optional-catch-binding/lib/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-async-generators/lib/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-object-rest-spread/lib/index.js","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-export-namespace-from/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-jsx/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-react-jsx/src/create-plugin.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-react-jsx/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-modules-commonjs/src/dynamic-import.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-modules-commonjs/src/lazy.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-modules-commonjs/src/hooks.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-modules-commonjs/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-syntax-typescript/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-typescript/src/enum.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-typescript/src/const-enum.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-typescript/src/global-types.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-typescript/src/namespace.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/plugin-transform-typescript/src/index.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/preset-typescript/src/normalize-options.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/preset-typescript/src/plugin-rewrite-ts-imports.ts","../playwright/packages/playwright/bundles/babel/node_modules/@babel/preset-typescript/src/index.ts","../playwright/packages/playwright/bundles/babel/src/babelBundleImpl.ts","../playwright/packages/playwright/src/transform/babelBundle.ts","../playwright/packages/playwright/bundles/utils/node_modules/json5/dist/index.mjs","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/base64.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/base64-vlq.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/util.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/array-set.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/mapping-list.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/source-map-generator.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/binary-search.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/quick-sort.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/source-map-consumer.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/lib/source-node.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map/source-map.js","../playwright/packages/playwright/bundles/utils/node_modules/buffer-from/index.js","../playwright/packages/playwright/bundles/utils/node_modules/source-map-support/source-map-support.js","../playwright/packages/playwright/bundles/utils/node_modules/stoppable/lib/stoppable.js","../playwright/packages/playwright/bundles/utils/node_modules/ansi-colors/symbols.js","../playwright/packages/playwright/bundles/utils/node_modules/ansi-colors/index.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/utils.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/combos.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/keypress.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/timer.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/state.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/styles.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/symbols.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/theme.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/ansi.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompt.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/roles.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/array.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/select.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/autocomplete.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/placeholder.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/form.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/auth.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/basicauth.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/boolean.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/confirm.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/editable.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/string.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/completer.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/input.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/invisible.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/list.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/multiselect.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/number.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/numeral.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/password.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/scale.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/interpolate.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/snippet.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/sort.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/survey.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/text.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/toggle.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/quiz.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/prompts/index.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/lib/types/index.js","../playwright/packages/playwright/bundles/utils/node_modules/enquirer/index.js","../src/shims/chokidar.ts","../playwright/packages/playwright/bundles/utils/node_modules/get-east-asian-width/lookup.js","../playwright/packages/playwright/bundles/utils/node_modules/get-east-asian-width/index.js","../playwright/packages/playwright/bundles/utils/src/utilsBundleImpl.ts","../playwright/packages/playwright/src/utilsBundle.ts","../playwright/packages/playwright/src/transform/compilationCache.ts","../playwright/packages/playwright/src/transform/transform.ts","../playwright/packages/playwright/src/common/testType.ts","../playwright/packages/playwright/src/index.ts"],"sourcesContent":["/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Suite } from './test';\nimport type { TestInfoImpl } from '../worker/testInfo';\n\nlet currentTestInfoValue: TestInfoImpl | null = null;\nexport function setCurrentTestInfo(testInfo: TestInfoImpl | null) {\n  currentTestInfoValue = testInfo;\n}\nexport function currentTestInfo(): TestInfoImpl | null {\n  return currentTestInfoValue;\n}\n\nlet currentFileSuite: Suite | undefined;\nexport function setCurrentlyLoadingFileSuite(suite: Suite | undefined) {\n  currentFileSuite = suite;\n}\nexport function currentlyLoadingFileSuite() {\n  return currentFileSuite;\n}\n\nlet _isWorkerProcess = false;\n\nexport function setIsWorkerProcess() {\n  _isWorkerProcess = true;\n}\n\nexport function isWorkerProcess() {\n  return _isWorkerProcess;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Metadata, TestAnnotation } from '../../types/test';\nimport type * as reporterTypes from '../../types/testReporter';\nimport type { ReporterV2 } from '../reporters/reporterV2';\n\nexport type StringIntern = (s: string) => string;\nexport type JsonLocation = reporterTypes.Location;\nexport type JsonError = string;\nexport type JsonStackFrame = { file: string, line: number, column: number };\n\nexport type JsonStdIOType = 'stdout' | 'stderr';\n\nexport type JsonConfig = Pick<reporterTypes.FullConfig, 'configFile' | 'globalTimeout' | 'maxFailures' | 'metadata' | 'rootDir' | 'version' | 'workers'>;\n\nexport type JsonPattern = {\n  s?: string;\n  r?: { source: string, flags: string };\n};\n\nexport type JsonProject = {\n  grep: JsonPattern[];\n  grepInvert: JsonPattern[];\n  metadata: Metadata;\n  name: string;\n  dependencies: string[];\n  // This is relative to root dir.\n  snapshotDir: string;\n  // This is relative to root dir.\n  outputDir: string;\n  repeatEach: number;\n  retries: number;\n  suites: JsonSuite[];\n  teardown?: string;\n  // This is relative to root dir.\n  testDir: string;\n  testIgnore: JsonPattern[];\n  testMatch: JsonPattern[];\n  timeout: number;\n  use: { [key: string]: any };\n};\n\nexport type JsonSuite = {\n  title: string;\n  location?: JsonLocation;\n  entries: (JsonSuite | JsonTestCase)[];\n};\n\nexport type JsonTestCase = {\n  testId: string;\n  title: string;\n  location: JsonLocation;\n  retries: number;\n  tags?: string[];\n  repeatEachIndex: number;\n  annotations?: TestAnnotation[];\n};\n\nexport type JsonTestEnd = {\n  testId: string;\n  expectedStatus: reporterTypes.TestStatus;\n  timeout: number;\n  // Dropped in 1.52. Kept as empty array for backwards compatibility.\n  annotations: [];\n};\n\nexport type JsonTestResultStart = {\n  id: string;\n  retry: number;\n  workerIndex: number;\n  parallelIndex: number;\n  startTime: number;\n};\n\nexport type JsonAttachment = Omit<reporterTypes.TestResult['attachments'][0], 'body'> & { base64?: string; };\n\nexport type JsonTestResultEnd = {\n  id: string;\n  duration: number;\n  status: reporterTypes.TestStatus;\n  errors: reporterTypes.TestError[];\n  /** No longer emitted, but kept for backwards compatibility */\n  attachments?: JsonAttachment[];\n  annotations?: TestAnnotation[];\n};\n\nexport type JsonTestStepStart = {\n  id: string;\n  parentStepId?: string;\n  title: string;\n  category: string,\n  startTime: number;\n  location?: reporterTypes.Location;\n};\n\nexport type JsonTestStepEnd = {\n  id: string;\n  duration: number;\n  error?: reporterTypes.TestError;\n  attachments?: number[]; // index of JsonTestResultEnd.attachments\n  annotations?: TestAnnotation[];\n};\n\nexport type JsonTestResultOnAttach = {\n  testId: string;\n  resultId: string;\n  attachments: JsonAttachment[];\n};\n\nexport type JsonFullResult = {\n  status: reporterTypes.FullResult['status'];\n  startTime: number;\n  duration: number;\n};\n\nexport type JsonEvent = {\n  method: string;\n  params: any\n};\n\ntype TeleReporterReceiverOptions = {\n  mergeProjects?: boolean;\n  mergeTestCases?: boolean;\n  resolvePath?: (rootDir: string, relativePath: string) => string;\n  configOverrides?: Pick<reporterTypes.FullConfig, 'configFile' | 'quiet' | 'reportSlowTests' | 'reporter'>;\n  clearPreviousResultsWhenTestBegins?: boolean;\n};\n\nexport class TeleReporterReceiver {\n  public isListing = false;\n  private _rootSuite: TeleSuite;\n  private _options: TeleReporterReceiverOptions;\n  private _reporter: ReporterV2;\n  private _tests = new Map<string, TeleTestCase>();\n  private _rootDir!: string;\n  private _config!: reporterTypes.FullConfig;\n\n  constructor(reporter: ReporterV2, options: TeleReporterReceiverOptions = {}) {\n    this._rootSuite = new TeleSuite('', 'root');\n    this._options = options;\n    this._reporter = reporter;\n  }\n\n  reset() {\n    this._rootSuite._entries = [];\n    this._tests.clear();\n  }\n\n  dispatch(message: JsonEvent): Promise<void> | void {\n    const { method, params } = message;\n    if (method === 'onConfigure') {\n      this._onConfigure(params.config);\n      return;\n    }\n    if (method === 'onProject') {\n      this._onProject(params.project);\n      return;\n    }\n    if (method === 'onBegin') {\n      this._onBegin();\n      return;\n    }\n    if (method === 'onTestBegin') {\n      this._onTestBegin(params.testId, params.result);\n      return;\n    }\n    if (method === 'onTestEnd') {\n      this._onTestEnd(params.test, params.result);\n      return;\n    }\n    if (method === 'onStepBegin') {\n      this._onStepBegin(params.testId, params.resultId, params.step);\n      return;\n    }\n    if (method === 'onAttach') {\n      this._onAttach(params.testId, params.resultId, params.attachments);\n      return;\n    }\n    if (method === 'onStepEnd') {\n      this._onStepEnd(params.testId, params.resultId, params.step);\n      return;\n    }\n    if (method === 'onError') {\n      this._onError(params.error);\n      return;\n    }\n    if (method === 'onStdIO') {\n      this._onStdIO(params.type, params.testId, params.resultId, params.data, params.isBase64);\n      return;\n    }\n    if (method === 'onEnd')\n      return this._onEnd(params.result);\n    if (method === 'onExit')\n      return this._onExit();\n  }\n\n  private _onConfigure(config: JsonConfig) {\n    this._rootDir = config.rootDir;\n    this._config = this._parseConfig(config);\n    this._reporter.onConfigure?.(this._config);\n  }\n\n  private _onProject(project: JsonProject) {\n    let projectSuite = this._options.mergeProjects ? this._rootSuite.suites.find(suite => suite.project()!.name === project.name) : undefined;\n    if (!projectSuite) {\n      projectSuite = new TeleSuite(project.name, 'project');\n      this._rootSuite._addSuite(projectSuite);\n    }\n    // Always update project in watch mode.\n    projectSuite._project = this._parseProject(project);\n    for (const suite of project.suites)\n      this._mergeSuiteInto(suite, projectSuite);\n  }\n\n  private _onBegin() {\n    this._reporter.onBegin?.(this._rootSuite);\n  }\n\n  private _onTestBegin(testId: string, payload: JsonTestResultStart) {\n    const test = this._tests.get(testId)!;\n    if (this._options.clearPreviousResultsWhenTestBegins)\n      test.results = [];\n    const testResult = test._createTestResult(payload.id);\n    testResult.retry = payload.retry;\n    testResult.workerIndex = payload.workerIndex;\n    testResult.parallelIndex = payload.parallelIndex;\n    testResult.setStartTimeNumber(payload.startTime);\n    this._reporter.onTestBegin?.(test, testResult);\n  }\n\n  private _onTestEnd(testEndPayload: JsonTestEnd, payload: JsonTestResultEnd) {\n    const test = this._tests.get(testEndPayload.testId)!;\n    test.timeout = testEndPayload.timeout;\n    test.expectedStatus = testEndPayload.expectedStatus;\n    const result = test.results.find(r => r._id === payload.id)!;\n    result.duration = payload.duration;\n    result.status = payload.status;\n    result.errors = payload.errors;\n    result.error = result.errors?.[0];\n    // Attachments are only present here from legacy blobs. These override all _onAttach events\n    if (!!payload.attachments)\n      result.attachments = this._parseAttachments(payload.attachments);\n    if (payload.annotations) {\n      result.annotations = payload.annotations;\n      test.annotations = result.annotations;\n    }\n    this._reporter.onTestEnd?.(test, result);\n    // Free up the memory as won't see these step ids.\n    result._stepMap = new Map();\n  }\n\n  private _onStepBegin(testId: string, resultId: string, payload: JsonTestStepStart) {\n    const test = this._tests.get(testId)!;\n    const result = test.results.find(r => r._id === resultId)!;\n    const parentStep = payload.parentStepId ? result._stepMap.get(payload.parentStepId) : undefined;\n\n    const location = this._absoluteLocation(payload.location);\n    const step = new TeleTestStep(payload, parentStep, location, result);\n    if (parentStep)\n      parentStep.steps.push(step);\n    else\n      result.steps.push(step);\n    result._stepMap.set(payload.id, step);\n    this._reporter.onStepBegin?.(test, result, step);\n  }\n\n  private _onStepEnd(testId: string, resultId: string, payload: JsonTestStepEnd) {\n    const test = this._tests.get(testId)!;\n    const result = test.results.find(r => r._id === resultId)!;\n    const step = result._stepMap.get(payload.id)!;\n    step._endPayload = payload;\n    step.duration = payload.duration;\n    step.error = payload.error;\n    this._reporter.onStepEnd?.(test, result, step);\n  }\n\n  private _onAttach(testId: string, resultId: string, attachments: JsonAttachment[]) {\n    const test = this._tests.get(testId)!;\n    const result = test.results.find(r => r._id === resultId)!;\n    result.attachments.push(...attachments.map(a => ({\n      name: a.name,\n      contentType: a.contentType,\n      path: a.path,\n      body: a.base64 && (globalThis as any).Buffer ? Buffer.from(a.base64, 'base64') : undefined,\n    })));\n  }\n\n  private _onError(error: reporterTypes.TestError) {\n    this._reporter.onError?.(error);\n  }\n\n  private _onStdIO(type: JsonStdIOType, testId: string | undefined, resultId: string | undefined, data: string, isBase64: boolean) {\n    const chunk = isBase64 ? ((globalThis as any).Buffer ? Buffer.from(data, 'base64') : atob(data)) : data;\n    const test = testId ? this._tests.get(testId) : undefined;\n    const result = test && resultId ? test.results.find(r => r._id === resultId) : undefined;\n    if (type === 'stdout') {\n      result?.stdout.push(chunk);\n      this._reporter.onStdOut?.(chunk, test, result);\n    } else {\n      result?.stderr.push(chunk);\n      this._reporter.onStdErr?.(chunk, test, result);\n    }\n  }\n\n  private async _onEnd(result: JsonFullResult): Promise<void> {\n    await this._reporter.onEnd?.({\n      status: result.status,\n      startTime: new Date(result.startTime),\n      duration: result.duration,\n    });\n  }\n\n  private _onExit(): Promise<void> | void {\n    return this._reporter.onExit?.();\n  }\n\n  private _parseConfig(config: JsonConfig): reporterTypes.FullConfig {\n    const result = { ...baseFullConfig, ...config };\n    if (this._options.configOverrides) {\n      result.configFile = this._options.configOverrides.configFile;\n      result.reportSlowTests = this._options.configOverrides.reportSlowTests;\n      result.quiet = this._options.configOverrides.quiet;\n      result.reporter = [...this._options.configOverrides.reporter];\n    }\n    return result;\n  }\n\n  private _parseProject(project: JsonProject): TeleFullProject {\n    return {\n      metadata: project.metadata,\n      name: project.name,\n      outputDir: this._absolutePath(project.outputDir),\n      repeatEach: project.repeatEach,\n      retries: project.retries,\n      testDir: this._absolutePath(project.testDir),\n      testIgnore: parseRegexPatterns(project.testIgnore),\n      testMatch: parseRegexPatterns(project.testMatch),\n      timeout: project.timeout,\n      grep: parseRegexPatterns(project.grep) as RegExp[],\n      grepInvert: parseRegexPatterns(project.grepInvert) as RegExp[],\n      dependencies: project.dependencies,\n      teardown: project.teardown,\n      snapshotDir: this._absolutePath(project.snapshotDir),\n      use: project.use,\n    };\n  }\n\n  private _parseAttachments(attachments: JsonAttachment[]): reporterTypes.TestResult['attachments'] {\n    return attachments.map(a => {\n      return {\n        ...a,\n        body: a.base64 && (globalThis as any).Buffer ? Buffer.from(a.base64, 'base64') : undefined,\n      };\n    });\n  }\n\n  private _mergeSuiteInto(jsonSuite: JsonSuite, parent: TeleSuite): void {\n    let targetSuite = parent.suites.find(s => s.title === jsonSuite.title);\n    if (!targetSuite) {\n      targetSuite = new TeleSuite(jsonSuite.title, parent.type === 'project' ? 'file' : 'describe');\n      parent._addSuite(targetSuite);\n    }\n    targetSuite.location = this._absoluteLocation(jsonSuite.location);\n    jsonSuite.entries.forEach(e => {\n      if ('testId' in e)\n        this._mergeTestInto(e, targetSuite!);\n      else\n        this._mergeSuiteInto(e, targetSuite!);\n    });\n  }\n\n  private _mergeTestInto(jsonTest: JsonTestCase, parent: TeleSuite) {\n    let targetTest = this._options.mergeTestCases ? parent.tests.find(s => s.title === jsonTest.title && s.repeatEachIndex === jsonTest.repeatEachIndex) : undefined;\n    if (!targetTest) {\n      targetTest = new TeleTestCase(jsonTest.testId, jsonTest.title, this._absoluteLocation(jsonTest.location), jsonTest.repeatEachIndex);\n      parent._addTest(targetTest);\n      this._tests.set(targetTest.id, targetTest);\n    }\n    this._updateTest(jsonTest, targetTest);\n  }\n\n  private _updateTest(payload: JsonTestCase, test: TeleTestCase): TeleTestCase {\n    test.id = payload.testId;\n    test.location = this._absoluteLocation(payload.location);\n    test.retries = payload.retries;\n    test.tags = payload.tags ?? [];\n    test.annotations = payload.annotations ?? [];\n    return test;\n  }\n\n  private _absoluteLocation(location: reporterTypes.Location): reporterTypes.Location;\n  private _absoluteLocation(location?: reporterTypes.Location): reporterTypes.Location | undefined;\n  private _absoluteLocation(location: reporterTypes.Location | undefined): reporterTypes.Location | undefined {\n    if (!location)\n      return location;\n    return {\n      ...location,\n      file: this._absolutePath(location.file),\n    };\n  }\n\n  private _absolutePath(relativePath: string): string;\n  private _absolutePath(relativePath?: string): string | undefined;\n  private _absolutePath(relativePath?: string): string | undefined {\n    if (relativePath === undefined)\n      return;\n    return this._options.resolvePath ? this._options.resolvePath(this._rootDir, relativePath) : this._rootDir + '/' + relativePath;\n  }\n}\n\nexport class TeleSuite implements reporterTypes.Suite {\n  title: string;\n  location?: reporterTypes.Location;\n  parent?: TeleSuite;\n  _entries: (TeleSuite | TeleTestCase)[] = [];\n  _requireFile: string = '';\n  _timeout: number | undefined;\n  _retries: number | undefined;\n  _project: TeleFullProject | undefined;\n  _parallelMode: 'none' | 'default' | 'serial' | 'parallel' = 'none';\n  private readonly _type: 'root' | 'project' | 'file' | 'describe';\n\n  constructor(title: string, type: 'root' | 'project' | 'file' | 'describe') {\n    this.title = title;\n    this._type = type;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  get suites(): TeleSuite[] {\n    return this._entries.filter(e => e.type !== 'test') as TeleSuite[];\n  }\n\n  get tests(): TeleTestCase[] {\n    return this._entries.filter(e => e.type === 'test') as TeleTestCase[];\n  }\n\n  entries() {\n    return this._entries;\n  }\n\n  allTests(): reporterTypes.TestCase[] {\n    const result: reporterTypes.TestCase[] = [];\n    const visit = (suite: reporterTypes.Suite) => {\n      for (const entry of suite.entries()) {\n        if (entry.type === 'test')\n          result.push(entry);\n        else\n          visit(entry);\n      }\n    };\n    visit(this);\n    return result;\n  }\n\n  titlePath(): string[] {\n    const titlePath = this.parent ? this.parent.titlePath() : [];\n    // Ignore anonymous describe blocks.\n    if (this.title || this._type !== 'describe')\n      titlePath.push(this.title);\n    return titlePath;\n  }\n\n  project(): TeleFullProject | undefined {\n    return this._project ?? this.parent?.project();\n  }\n\n  _addTest(test: TeleTestCase) {\n    test.parent = this;\n    this._entries.push(test);\n  }\n\n  _addSuite(suite: TeleSuite) {\n    suite.parent = this;\n    this._entries.push(suite);\n  }\n}\n\nexport class TeleTestCase implements reporterTypes.TestCase {\n  title: string;\n  fn = () => {};\n  results: TeleTestResult[] = [];\n  location: reporterTypes.Location;\n  parent!: TeleSuite;\n  type: 'test' = 'test';\n\n  expectedStatus: reporterTypes.TestStatus = 'passed';\n  timeout = 0;\n  annotations: TestAnnotation[] = [];\n  retries = 0;\n  tags: string[] = [];\n  repeatEachIndex = 0;\n  id: string;\n\n  constructor(id: string, title: string, location: reporterTypes.Location, repeatEachIndex: number) {\n    this.id = id;\n    this.title = title;\n    this.location = location;\n    this.repeatEachIndex = repeatEachIndex;\n  }\n\n  titlePath(): string[] {\n    const titlePath = this.parent ? this.parent.titlePath() : [];\n    titlePath.push(this.title);\n    return titlePath;\n  }\n\n  outcome(): 'skipped' | 'expected' | 'unexpected' | 'flaky' {\n    return computeTestCaseOutcome(this);\n  }\n\n  ok(): boolean {\n    const status = this.outcome();\n    return status === 'expected' || status === 'flaky' || status === 'skipped';\n  }\n\n  _createTestResult(id: string): TeleTestResult {\n    const result = new TeleTestResult(this.results.length, id);\n    this.results.push(result);\n    return result;\n  }\n}\n\nclass TeleTestStep implements reporterTypes.TestStep {\n  title: string;\n  category: string;\n  location: reporterTypes.Location | undefined;\n  parent: reporterTypes.TestStep | undefined;\n  duration: number = -1;\n  steps: reporterTypes.TestStep[] = [];\n  error: reporterTypes.TestError | undefined;\n\n  private _result: TeleTestResult;\n  _endPayload?: JsonTestStepEnd;\n\n  private _startTime: number = 0;\n\n  constructor(payload: JsonTestStepStart, parentStep: reporterTypes.TestStep | undefined, location: reporterTypes.Location | undefined, result: TeleTestResult) {\n    this.title = payload.title;\n    this.category = payload.category;\n    this.location = location;\n    this.parent = parentStep;\n    this._startTime = payload.startTime;\n    this._result = result;\n  }\n\n  titlePath() {\n    const parentPath = this.parent?.titlePath() || [];\n    return [...parentPath, this.title];\n  }\n\n  get startTime(): Date {\n    return new Date(this._startTime);\n  }\n\n  set startTime(value: Date) {\n    this._startTime = +value;\n  }\n\n  get attachments() {\n    return this._endPayload?.attachments?.map(index => this._result.attachments[index]) ?? [];\n  }\n\n  get annotations() {\n    return this._endPayload?.annotations ?? [];\n  }\n}\n\nexport class TeleTestResult implements reporterTypes.TestResult {\n  retry: reporterTypes.TestResult['retry'];\n  parallelIndex: reporterTypes.TestResult['parallelIndex'] = -1;\n  workerIndex: reporterTypes.TestResult['workerIndex'] = -1;\n  duration: reporterTypes.TestResult['duration'] = -1;\n  stdout: reporterTypes.TestResult['stdout'] = [];\n  stderr: reporterTypes.TestResult['stderr'] = [];\n  attachments: reporterTypes.TestResult['attachments'] = [];\n  annotations: reporterTypes.TestResult['annotations'] = [];\n  status: reporterTypes.TestStatus = 'skipped';\n  steps: TeleTestStep[] = [];\n  errors: reporterTypes.TestResult['errors'] = [];\n  error: reporterTypes.TestResult['error'];\n\n  _stepMap = new Map<string, TeleTestStep>();\n  _id: string;\n\n  private _startTime: number = 0;\n\n  constructor(retry: number, id: string) {\n    this.retry = retry;\n    this._id = id;\n  }\n\n  setStartTimeNumber(startTime: number) {\n    this._startTime = startTime;\n  }\n\n  get startTime(): Date {\n    return new Date(this._startTime);\n  }\n\n  set startTime(value: Date) {\n    this._startTime = +value;\n  }\n}\n\nexport type TeleFullProject = reporterTypes.FullProject;\n\nexport const baseFullConfig: reporterTypes.FullConfig = {\n  forbidOnly: false,\n  fullyParallel: false,\n  globalSetup: null,\n  globalTeardown: null,\n  globalTimeout: 0,\n  grep: /.*/,\n  grepInvert: null,\n  maxFailures: 0,\n  metadata: {},\n  preserveOutput: 'always',\n  projects: [],\n  reporter: [[process.env.CI ? 'dot' : 'list']],\n  reportSlowTests: { max: 5, threshold: 300_000 /* 5 minutes */ },\n  configFile: '',\n  rootDir: '',\n  quiet: false,\n  shard: null,\n  updateSnapshots: 'missing',\n  updateSourceMethod: 'patch',\n  version: '',\n  workers: 0,\n  webServer: null,\n};\n\nexport function serializeRegexPatterns(patterns: string | RegExp | (string | RegExp)[]): JsonPattern[] {\n  if (!Array.isArray(patterns))\n    patterns = [patterns];\n  return patterns.map(s => {\n    if (typeof s === 'string')\n      return { s };\n    return { r: { source: s.source, flags: s.flags } };\n  });\n}\n\nexport function parseRegexPatterns(patterns: JsonPattern[]): (string | RegExp)[] {\n  return patterns.map(p => {\n    if (p.s !== undefined)\n      return p.s;\n    return new RegExp(p.r!.source, p.r!.flags);\n  });\n}\n\nexport function computeTestCaseOutcome(test: reporterTypes.TestCase) {\n  let skipped = 0;\n  let didNotRun = 0;\n  let expected = 0;\n  let interrupted = 0;\n  let unexpected = 0;\n  for (const result of test.results) {\n    if (result.status === 'interrupted') {\n      ++interrupted; // eslint-disable-line @typescript-eslint/no-unused-vars\n    } else if (result.status === 'skipped' && test.expectedStatus === 'skipped') {\n      // Only tests \"expected to be skipped\" are skipped. These were specifically\n      // marked with test.skip or test.fixme.\n      ++skipped;\n    } else if (result.status === 'skipped') {\n      // Tests that were expected to run, but were skipped are \"did not run\".\n      // This happens when:\n      // - testing finished early;\n      // - test failure prevented other tests in the serial suite to run;\n      // - probably more cases!\n      ++didNotRun; // eslint-disable-line @typescript-eslint/no-unused-vars\n    } else if (result.status === test.expectedStatus) {\n      // Either passed and expected to pass, or failed and expected to fail.\n      ++expected;\n    } else {\n      ++unexpected;\n    }\n  }\n\n  // Tests that were \"skipped as expected\" are considered equal to \"expected\" below,\n  // because that's the expected outcome.\n  //\n  // However, we specifically differentiate the case of \"only skipped\"\n  // and show it as \"skipped\" in all reporters.\n  //\n  // More exotic cases like \"failed on first run and skipped on retry\" are flaky.\n  if (expected === 0 && unexpected === 0)\n    return 'skipped';  // all results were skipped or interrupted\n  if (unexpected === 0)\n    return 'expected';  // no failures, just expected+skipped\n  if (expected === 0 && skipped === 0)\n    return 'unexpected';  // only failures\n  return 'flaky';  // expected+unexpected or skipped+unexpected\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { rootTestType } from './testType';\nimport { computeTestCaseOutcome } from '../isomorphic/teleReceiver';\n\nimport type { FixturesWithLocation, FullProjectInternal } from './config';\nimport type { FixturePool } from './fixtures';\nimport type { TestTypeImpl } from './testType';\nimport type { TestAnnotation } from '../../types/test';\nimport type * as reporterTypes from '../../types/testReporter';\nimport type { FullProject, Location } from '../../types/testReporter';\n\n\nclass Base {\n  title: string;\n  _only = false;\n  _requireFile: string = '';\n\n  constructor(title: string) {\n    this.title = title;\n  }\n}\n\nexport type Modifier = {\n  type: 'slow' | 'fixme' | 'skip' | 'fail',\n  fn: Function,\n  location: Location,\n  description: string | undefined\n};\n\nexport class Suite extends Base {\n  location?: Location;\n  parent?: Suite;\n  _use: FixturesWithLocation[] = [];\n  _entries: (Suite | TestCase)[] = [];\n  _hooks: { type: 'beforeEach' | 'afterEach' | 'beforeAll' | 'afterAll', fn: Function, title: string, location: Location }[] = [];\n  _timeout: number | undefined;\n  _retries: number | undefined;\n  // Annotations known statically before running the test, e.g. `test.describe.skip()` or `test.describe({ annotation }, body)`.\n  _staticAnnotations: TestAnnotation[] = [];\n  // Explicitly declared tags that are not a part of the title.\n  _tags: string[] = [];\n  _modifiers: Modifier[] = [];\n  _parallelMode: 'none' | 'default' | 'serial' | 'parallel' = 'none';\n  _fullProject: FullProjectInternal | undefined;\n  _fileId: string | undefined;\n  readonly _type: 'root' | 'project' | 'file' | 'describe';\n\n  constructor(title: string, type: 'root' | 'project' | 'file' | 'describe') {\n    super(title);\n    this._type = type;\n  }\n\n  get type(): 'root' | 'project' | 'file' | 'describe' {\n    return this._type;\n  }\n\n  entries() {\n    return this._entries;\n  }\n\n  get suites(): Suite[] {\n    return this._entries.filter(entry => entry instanceof Suite) as Suite[];\n  }\n\n  get tests(): TestCase[] {\n    return this._entries.filter(entry => entry instanceof TestCase) as TestCase[];\n  }\n\n  _addTest(test: TestCase) {\n    test.parent = this;\n    this._entries.push(test);\n  }\n\n  _addSuite(suite: Suite) {\n    suite.parent = this;\n    this._entries.push(suite);\n  }\n\n  _prependSuite(suite: Suite) {\n    suite.parent = this;\n    this._entries.unshift(suite);\n  }\n\n  allTests(): TestCase[] {\n    const result: TestCase[] = [];\n    const visit = (suite: Suite) => {\n      for (const entry of suite._entries) {\n        if (entry instanceof Suite)\n          visit(entry);\n        else\n          result.push(entry);\n      }\n    };\n    visit(this);\n    return result;\n  }\n\n  _hasTests(): boolean {\n    let result = false;\n    const visit = (suite: Suite) => {\n      for (const entry of suite._entries) {\n        if (result)\n          return;\n        if (entry instanceof Suite)\n          visit(entry);\n        else\n          result = true;\n      }\n    };\n    visit(this);\n    return result;\n  }\n\n  titlePath(): string[] {\n    const titlePath = this.parent ? this.parent.titlePath() : [];\n    // Ignore anonymous describe blocks.\n    if (this.title || this._type !== 'describe')\n      titlePath.push(this.title);\n    return titlePath;\n  }\n\n  _collectGrepTitlePath(path: string[]) {\n    if (this.parent)\n      this.parent._collectGrepTitlePath(path);\n    if (this.title || this._type !== 'describe')\n      path.push(this.title);\n    path.push(...this._tags);\n  }\n\n  _getOnlyItems(): (TestCase | Suite)[] {\n    const items: (TestCase | Suite)[] = [];\n    if (this._only)\n      items.push(this);\n    for (const suite of this.suites)\n      items.push(...suite._getOnlyItems());\n    items.push(...this.tests.filter(test => test._only));\n    return items;\n  }\n\n  _deepClone(): Suite {\n    const suite = this._clone();\n    for (const entry of this._entries) {\n      if (entry instanceof Suite)\n        suite._addSuite(entry._deepClone());\n      else\n        suite._addTest(entry._clone());\n    }\n    return suite;\n  }\n\n  _deepSerialize(): any {\n    const suite = this._serialize();\n    suite.entries = [];\n    for (const entry of this._entries) {\n      if (entry instanceof Suite)\n        suite.entries.push(entry._deepSerialize());\n      else\n        suite.entries.push(entry._serialize());\n    }\n    return suite;\n  }\n\n  static _deepParse(data: any): Suite {\n    const suite = Suite._parse(data);\n    for (const entry of data.entries) {\n      if (entry.kind === 'suite')\n        suite._addSuite(Suite._deepParse(entry));\n      else\n        suite._addTest(TestCase._parse(entry));\n    }\n    return suite;\n  }\n\n  forEachTest(visitor: (test: TestCase, suite: Suite) => void) {\n    for (const entry of this._entries) {\n      if (entry instanceof Suite)\n        entry.forEachTest(visitor);\n      else\n        visitor(entry, this);\n    }\n  }\n\n  _serialize(): any {\n    return {\n      kind: 'suite',\n      title: this.title,\n      type: this._type,\n      location: this.location,\n      only: this._only,\n      requireFile: this._requireFile,\n      timeout: this._timeout,\n      retries: this._retries,\n      staticAnnotations: this._staticAnnotations.slice(),\n      tags: this._tags.slice(),\n      modifiers: this._modifiers.slice(),\n      parallelMode: this._parallelMode,\n      hooks: this._hooks.map(h => ({ type: h.type, location: h.location, title: h.title })),\n      fileId: this._fileId,\n    };\n  }\n\n  static _parse(data: any): Suite {\n    const suite = new Suite(data.title, data.type);\n    suite.location = data.location;\n    suite._only = data.only;\n    suite._requireFile = data.requireFile;\n    suite._timeout = data.timeout;\n    suite._retries = data.retries;\n    suite._staticAnnotations = data.staticAnnotations;\n    suite._tags = data.tags;\n    suite._modifiers = data.modifiers;\n    suite._parallelMode = data.parallelMode;\n    suite._hooks = data.hooks.map((h: any) => ({ type: h.type, location: h.location, title: h.title, fn: () => { } }));\n    suite._fileId = data.fileId;\n    return suite;\n  }\n\n  _clone(): Suite {\n    const data = this._serialize();\n    const suite = Suite._parse(data);\n    suite._use = this._use.slice();\n    suite._hooks = this._hooks.slice();\n    suite._fullProject = this._fullProject;\n    return suite;\n  }\n\n  project(): FullProject | undefined {\n    return this._fullProject?.project || this.parent?.project();\n  }\n}\n\nexport class TestCase extends Base implements reporterTypes.TestCase {\n  fn: Function;\n  results: reporterTypes.TestResult[] = [];\n  location: Location;\n  parent!: Suite;\n  type: 'test' = 'test';\n\n  expectedStatus: reporterTypes.TestStatus = 'passed';\n  timeout = 0;\n  annotations: TestAnnotation[] = [];\n  retries = 0;\n  repeatEachIndex = 0;\n\n  _testType: TestTypeImpl;\n  id = '';\n  _pool: FixturePool | undefined;\n  _poolDigest = '';\n  _workerHash = '';\n  _projectId = '';\n  // Explicitly declared tags that are not a part of the title.\n  _tags: string[] = [];\n\n  constructor(title: string, fn: Function, testType: TestTypeImpl, location: Location) {\n    super(title);\n    this.fn = fn;\n    this._testType = testType;\n    this.location = location;\n  }\n\n  titlePath(): string[] {\n    const titlePath = this.parent ? this.parent.titlePath() : [];\n    titlePath.push(this.title);\n    return titlePath;\n  }\n\n  outcome(): 'skipped' | 'expected' | 'unexpected' | 'flaky' {\n    return computeTestCaseOutcome(this);\n  }\n\n  ok(): boolean {\n    const status = this.outcome();\n    return status === 'expected' || status === 'flaky' || status === 'skipped';\n  }\n\n  get tags(): string[] {\n    return this._grepTitle().match(/@[\\S]+/g) || [];\n  }\n\n  _serialize(): any {\n    return {\n      kind: 'test',\n      id: this.id,\n      title: this.title,\n      retries: this.retries,\n      timeout: this.timeout,\n      expectedStatus: this.expectedStatus,\n      location: this.location,\n      only: this._only,\n      requireFile: this._requireFile,\n      poolDigest: this._poolDigest,\n      workerHash: this._workerHash,\n      annotations: this.annotations.slice(),\n      tags: this._tags.slice(),\n      projectId: this._projectId,\n    };\n  }\n\n  static _parse(data: any): TestCase {\n    const test = new TestCase(data.title, () => {}, rootTestType, data.location);\n    test.id = data.id;\n    test.retries = data.retries;\n    test.timeout = data.timeout;\n    test.expectedStatus = data.expectedStatus;\n    test._only = data.only;\n    test._requireFile = data.requireFile;\n    test._poolDigest = data.poolDigest;\n    test._workerHash = data.workerHash;\n    test.annotations = data.annotations;\n    test._tags = data.tags;\n    test._projectId = data.projectId;\n    return test;\n  }\n\n  _clone(): TestCase {\n    const data = this._serialize();\n    const test = TestCase._parse(data);\n    test._testType = this._testType;\n    test.fn = this.fn;\n    return test;\n  }\n\n  _appendTestResult(): reporterTypes.TestResult {\n    const result: reporterTypes.TestResult = {\n      retry: this.results.length,\n      parallelIndex: -1,\n      workerIndex: -1,\n      duration: 0,\n      startTime: new Date(),\n      stdout: [],\n      stderr: [],\n      attachments: [],\n      status: 'skipped',\n      steps: [],\n      errors: [],\n      annotations: [],\n    };\n    this.results.push(result);\n    return result;\n  }\n\n  _grepTitle() {\n    const path: string[] = [];\n    this.parent._collectGrepTitlePath(path);\n    path.push(this.title);\n    path.push(...this._tags);\n    return path.join(' ');\n  }\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringifyStackFrames } from 'playwright-core/lib/utils';\nimport { colors } from 'playwright-core/lib/utils';\n\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { StackFrame } from '@protocol/channels';\nimport type { Locator } from 'playwright-core';\n\nexport const kNoElementsFoundError = '<element(s) not found>';\n\nexport function matcherHint(state: ExpectMatcherState, locator: Locator | undefined, matcherName: string, expression: any, actual: any, matcherOptions: any, timeout?: number) {\n  let header = state.utils.matcherHint(matcherName, expression, actual, matcherOptions).replace(/ \\/\\/ deep equality/, '') + '\\n\\n';\n  if (timeout)\n    header = colors.red(`Timed out ${timeout}ms waiting for `) + header;\n  if (locator)\n    header += `Locator: ${String(locator)}\\n`;\n  return header;\n}\n\nexport type MatcherResult<E, A> = {\n  name: string;\n  expected?: E;\n  message: () => string;\n  pass: boolean;\n  actual?: A;\n  log?: string[];\n  timeout?: number;\n  suggestedRebaseline?: string;\n};\n\nexport type MatcherResultProperty = Omit<MatcherResult<unknown, unknown>, 'message'> & {\n  message: string;\n};\n\ntype JestError = Error & {\n  matcherResult: MatcherResultProperty;\n};\n\nexport class ExpectError extends Error {\n  matcherResult: MatcherResultProperty;\n\n  constructor(jestError: JestError, customMessage: string, stackFrames: StackFrame[]) {\n    super('');\n    // Copy to erase the JestMatcherError constructor name from the console.log(error).\n    this.name = jestError.name;\n    this.message = jestError.message;\n    this.matcherResult = jestError.matcherResult;\n\n    if (customMessage)\n      this.message = customMessage + '\\n\\n' + this.message;\n    this.stack = this.name + ': ' + this.message + '\\n' + stringifyStackFrames(stackFrames).join('\\n');\n  }\n}\n\nexport function isJestError(e: unknown): e is JestError {\n  return e instanceof Error && 'matcherResult' in e;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\nimport url from 'url';\nimport util from 'util';\n\nimport { parseStackFrame, sanitizeForFilePath, calculateSha1, isRegExp, isString, stringifyStackFrames, escapeWithQuotes } from 'playwright-core/lib/utils';\nimport { colors, debug, mime, minimatch } from 'playwright-core/lib/utilsBundle';\n\nimport type { Location } from './../types/testReporter';\nimport type { TestInfoErrorImpl } from './common/ipc';\nimport type { StackFrame } from '@protocol/channels';\nimport type { RawStack } from 'playwright-core/lib/utils';\n\nconst PLAYWRIGHT_TEST_PATH = path.join(__dirname, '..');\nconst PLAYWRIGHT_CORE_PATH = path.dirname(require.resolve('playwright-core/package.json'));\n\nexport function filterStackTrace(e: Error): { message: string, stack: string, cause?: ReturnType<typeof filterStackTrace> } {\n  const name = e.name ? e.name + ': ' : '';\n  const cause = e.cause instanceof Error ? filterStackTrace(e.cause) : undefined;\n  if (process.env.PWDEBUGIMPL)\n    return { message: name + e.message, stack: e.stack || '', cause };\n\n  const stackLines = stringifyStackFrames(filteredStackTrace(e.stack?.split('\\n') || []));\n  return {\n    message: name + e.message,\n    stack: `${name}${e.message}${stackLines.map(line => '\\n' + line).join('')}`,\n    cause,\n  };\n}\n\nexport function filterStackFile(file: string) {\n  if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_TEST_PATH))\n    return false;\n  if (!process.env.PWDEBUGIMPL && file.startsWith(PLAYWRIGHT_CORE_PATH))\n    return false;\n  return true;\n}\n\nexport function filteredStackTrace(rawStack: RawStack): StackFrame[] {\n  const frames: StackFrame[] = [];\n  for (const line of rawStack) {\n    const frame = parseStackFrame(line, path.sep, !!process.env.PWDEBUGIMPL);\n    if (!frame || !frame.file)\n      continue;\n    if (!filterStackFile(frame.file))\n      continue;\n    frames.push(frame);\n  }\n  return frames;\n}\n\nexport function serializeError(error: Error | any): TestInfoErrorImpl {\n  if (error instanceof Error)\n    return filterStackTrace(error);\n  return {\n    value: util.inspect(error)\n  };\n}\n\nexport type Matcher = (value: string) => boolean;\n\nexport type TestFileFilter = {\n  re?: RegExp;\n  exact?: string;\n  line: number | null;\n  column: number | null;\n};\n\nexport function createFileFiltersFromArguments(args: string[]): TestFileFilter[] {\n  return args.map(arg => {\n    const match = /^(.*?):(\\d+):?(\\d+)?$/.exec(arg);\n    return {\n      re: forceRegExp(match ? match[1] : arg),\n      line: match ? parseInt(match[2], 10) : null,\n      column: match?.[3] ? parseInt(match[3], 10) : null,\n    };\n  });\n}\n\nexport function createFileMatcherFromArguments(args: string[]): Matcher {\n  const filters = createFileFiltersFromArguments(args);\n  return createFileMatcher(filters.map(filter => filter.re || filter.exact || ''));\n}\n\nexport function createFileMatcher(patterns: string | RegExp | (string | RegExp)[]): Matcher {\n  const reList: RegExp[] = [];\n  const filePatterns: string[] = [];\n  for (const pattern of Array.isArray(patterns) ? patterns : [patterns]) {\n    if (isRegExp(pattern)) {\n      reList.push(pattern);\n    } else {\n      if (!pattern.startsWith('**/'))\n        filePatterns.push('**/' + pattern);\n      else\n        filePatterns.push(pattern);\n    }\n  }\n  return (filePath: string) => {\n    for (const re of reList) {\n      re.lastIndex = 0;\n      if (re.test(filePath))\n        return true;\n    }\n    // Windows might still receive unix style paths from Cygwin or Git Bash.\n    // Check against the file url as well.\n    if (path.sep === '\\\\') {\n      const fileURL = url.pathToFileURL(filePath).href;\n      for (const re of reList) {\n        re.lastIndex = 0;\n        if (re.test(fileURL))\n          return true;\n      }\n    }\n    for (const pattern of filePatterns) {\n      if (minimatch(filePath, pattern, { nocase: true, dot: true }))\n        return true;\n    }\n    return false;\n  };\n}\n\nexport function createTitleMatcher(patterns: RegExp | RegExp[]): Matcher {\n  const reList = Array.isArray(patterns) ? patterns : [patterns];\n  return (value: string) => {\n    for (const re of reList) {\n      re.lastIndex = 0;\n      if (re.test(value))\n        return true;\n    }\n    return false;\n  };\n}\n\nexport function mergeObjects<A extends object, B extends object, C extends object>(a: A | undefined | void, b: B | undefined | void, c: B | undefined | void): A & B & C {\n  const result = { ...a } as any;\n  for (const x of [b, c].filter(Boolean)) {\n    for (const [name, value] of Object.entries(x as any)) {\n      if (!Object.is(value, undefined))\n        result[name] = value;\n    }\n  }\n  return result as any;\n}\n\nexport function forceRegExp(pattern: string): RegExp {\n  const match = pattern.match(/^\\/(.*)\\/([gi]*)$/);\n  if (match)\n    return new RegExp(match[1], match[2]);\n  return new RegExp(pattern, 'gi');\n}\n\nexport function relativeFilePath(file: string): string {\n  if (!path.isAbsolute(file))\n    return file;\n  return path.relative(process.cwd(), file);\n}\n\nexport function formatLocation(location: Location) {\n  return relativeFilePath(location.file) + ':' + location.line + ':' + location.column;\n}\n\nexport function errorWithFile(file: string, message: string) {\n  return new Error(`${relativeFilePath(file)}: ${message}`);\n}\n\nexport function expectTypes(receiver: any, types: string[], matcherName: string) {\n  if (typeof receiver !== 'object' || !types.includes(receiver.constructor.name)) {\n    const commaSeparated = types.slice();\n    const lastType = commaSeparated.pop();\n    const typesString = commaSeparated.length ? commaSeparated.join(', ') + ' or ' + lastType : lastType;\n    throw new Error(`${matcherName} can be only used with ${typesString} object${types.length > 1 ? 's' : ''}`);\n  }\n}\n\nexport const windowsFilesystemFriendlyLength = 60;\n\nexport function trimLongString(s: string, length = 100) {\n  if (s.length <= length)\n    return s;\n  const hash = calculateSha1(s);\n  const middle = `-${hash.substring(0, 5)}-`;\n  const start = Math.floor((length - middle.length) / 2);\n  const end = length - middle.length - start;\n  return s.substring(0, start) + middle + s.slice(-end);\n}\n\nexport function addSuffixToFilePath(filePath: string, suffix: string): string {\n  const ext = path.extname(filePath);\n  const base = filePath.substring(0, filePath.length - ext.length);\n  return base + suffix + ext;\n}\n\nexport function sanitizeFilePathBeforeExtension(filePath: string, ext?: string): string {\n  ext ??= path.extname(filePath);\n  const base = filePath.substring(0, filePath.length - ext.length);\n  return sanitizeForFilePath(base) + ext;\n}\n\n/**\n * Returns absolute path contained within parent directory.\n */\nexport function getContainedPath(parentPath: string, subPath: string = ''): string | null {\n  const resolvedPath = path.resolve(parentPath, subPath);\n  if (resolvedPath === parentPath || resolvedPath.startsWith(parentPath + path.sep))\n    return resolvedPath;\n  return null;\n}\n\nexport const debugTest = debug('pw:test');\n\nexport const callLogText = (log: string[] | undefined) => {\n  if (!log || !log.some(l => !!l))\n    return '';\n  return `\nCall log:\n${colors.dim(log.join('\\n'))}\n`;\n};\n\nconst folderToPackageJsonPath = new Map<string, string>();\n\nexport function getPackageJsonPath(folderPath: string): string {\n  const cached = folderToPackageJsonPath.get(folderPath);\n  if (cached !== undefined)\n    return cached;\n\n  const packageJsonPath = path.join(folderPath, 'package.json');\n  if (fs.existsSync(packageJsonPath)) {\n    folderToPackageJsonPath.set(folderPath, packageJsonPath);\n    return packageJsonPath;\n  }\n\n  const parentFolder = path.dirname(folderPath);\n  if (folderPath === parentFolder) {\n    folderToPackageJsonPath.set(folderPath, '');\n    return '';\n  }\n\n  const result = getPackageJsonPath(parentFolder);\n  folderToPackageJsonPath.set(folderPath, result);\n  return result;\n}\n\nexport function resolveReporterOutputPath(defaultValue: string, configDir: string, configValue: string | undefined) {\n  if (configValue)\n    return path.resolve(configDir, configValue);\n  let basePath = getPackageJsonPath(configDir);\n  basePath = basePath ? path.dirname(basePath) : process.cwd();\n  return path.resolve(basePath, defaultValue);\n}\n\nexport async function normalizeAndSaveAttachment(outputPath: string, name: string, options: { path?: string, body?: string | Buffer, contentType?: string } = {}): Promise<{ name: string; path?: string; body?: Buffer; contentType: string; }> {\n  if (options.path === undefined && options.body === undefined)\n    return { name, contentType: 'text/plain' };\n  if ((options.path !== undefined ? 1 : 0) + (options.body !== undefined ? 1 : 0) !== 1)\n    throw new Error(`Exactly one of \"path\" and \"body\" must be specified`);\n  if (options.path !== undefined) {\n    const hash = calculateSha1(options.path);\n\n    if (!isString(name))\n      throw new Error('\"name\" should be string.');\n\n    const sanitizedNamePrefix = sanitizeForFilePath(name) + '-';\n    const dest = path.join(outputPath, 'attachments', sanitizedNamePrefix + hash + path.extname(options.path));\n    await fs.promises.mkdir(path.dirname(dest), { recursive: true });\n    await fs.promises.copyFile(options.path, dest);\n    const contentType = options.contentType ?? (mime.getType(path.basename(options.path)) || 'application/octet-stream');\n    return { name, contentType, path: dest };\n  } else {\n    const contentType = options.contentType ?? (typeof options.body === 'string' ? 'text/plain' : 'application/octet-stream');\n    return { name, contentType, body: typeof options.body === 'string' ? Buffer.from(options.body) : options.body };\n  }\n}\n\nexport function fileIsModule(file: string): boolean {\n  if (file.endsWith('.mjs') || file.endsWith('.mts'))\n    return true;\n  if (file.endsWith('.cjs') || file.endsWith('.cts'))\n    return false;\n  const folder = path.dirname(file);\n  return folderIsModule(folder);\n}\n\nfunction folderIsModule(folder: string): boolean {\n  const packageJsonPath = getPackageJsonPath(folder);\n  if (!packageJsonPath)\n    return false;\n  // Rely on `require` internal caching logic.\n  return require(packageJsonPath).type === 'module';\n}\n\nconst packageJsonMainFieldCache = new Map<string, string | undefined>();\n\nfunction getMainFieldFromPackageJson(packageJsonPath: string) {\n  if (!packageJsonMainFieldCache.has(packageJsonPath)) {\n    let mainField: string | undefined;\n    try {\n      mainField = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8')).main;\n    } catch {\n    }\n    packageJsonMainFieldCache.set(packageJsonPath, mainField);\n  }\n  return packageJsonMainFieldCache.get(packageJsonPath);\n}\n\n// This method performs \"file extension subsitution\" to find the ts, js or similar source file\n// based on the import specifier, which might or might not have an extension. See TypeScript docs:\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#file-extension-substitution.\nconst kExtLookups = new Map([\n  ['.js', ['.jsx', '.ts', '.tsx']],\n  ['.jsx', ['.tsx']],\n  ['.cjs', ['.cts']],\n  ['.mjs', ['.mts']],\n  ['', ['.js', '.ts', '.jsx', '.tsx', '.cjs', '.mjs', '.cts', '.mts']],\n]);\nfunction resolveImportSpecifierExtension(resolved: string): string | undefined {\n  if (fileExists(resolved))\n    return resolved;\n\n  for (const [ext, others] of kExtLookups) {\n    if (!resolved.endsWith(ext))\n      continue;\n    for (const other of others) {\n      const modified = resolved.substring(0, resolved.length - ext.length) + other;\n      if (fileExists(modified))\n        return modified;\n    }\n    break;  // Do not try '' when a more specific extension like '.jsx' matched.\n  }\n}\n\n// This method resolves directory imports and performs \"file extension subsitution\".\n// It is intended to be called after the path mapping resolution.\n//\n// Directory imports follow the --moduleResolution=bundler strategy from tsc.\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#directory-modules-index-file-resolution\n// https://www.typescriptlang.org/docs/handbook/modules/reference.html#bundler\n//\n// See also Node.js \"folder as module\" behavior:\n// https://nodejs.org/dist/latest-v20.x/docs/api/modules.html#folders-as-modules.\nexport function resolveImportSpecifierAfterMapping(resolved: string, afterPathMapping: boolean): string | undefined {\n  const resolvedFile = resolveImportSpecifierExtension(resolved);\n  if (resolvedFile)\n    return resolvedFile;\n\n  if (dirExists(resolved)) {\n    const packageJsonPath = path.join(resolved, 'package.json');\n\n    if (afterPathMapping) {\n      // Most notably, the module resolution algorithm is not performed after the path mapping.\n      // This means no node_modules lookup or package.json#exports.\n      //\n      // Only the \"folder as module\" Node.js behavior is respected:\n      //  - consult `package.json#main`;\n      //  - look for `index.js` or similar.\n      const mainField = getMainFieldFromPackageJson(packageJsonPath);\n      const mainFieldResolved = mainField ? resolveImportSpecifierExtension(path.resolve(resolved, mainField)) : undefined;\n      return mainFieldResolved || resolveImportSpecifierExtension(path.join(resolved, 'index'));\n    }\n\n    // If we import a package, let Node.js figure out the correct import based on package.json.\n    // This also covers the \"main\" field for \"folder as module\".\n    if (fileExists(packageJsonPath))\n      return resolved;\n\n    // Implement the \"folder as module\" Node.js behavior.\n    // Note that we do not delegate to Node.js, because we support this for ESM as well,\n    // following the TypeScript \"bundler\" mode.\n    const dirImport = path.join(resolved, 'index');\n    return resolveImportSpecifierExtension(dirImport);\n  }\n}\n\nfunction fileExists(resolved: string) {\n  return fs.statSync(resolved, { throwIfNoEntry: false })?.isFile();\n}\n\nexport async function fileExistsAsync(resolved: string) {\n  try {\n    const stat = await fs.promises.stat(resolved);\n    return stat.isFile();\n  } catch {\n    return false;\n  }\n}\n\nfunction dirExists(resolved: string) {\n  return fs.statSync(resolved, { throwIfNoEntry: false })?.isDirectory();\n}\n\nexport async function removeDirAndLogToConsole(dir: string) {\n  try {\n    if (!fs.existsSync(dir))\n      return;\n    // eslint-disable-next-line no-console\n    console.log(`Removing ${await fs.promises.realpath(dir)}`);\n    await fs.promises.rm(dir, { recursive: true, force: true });\n  } catch {\n  }\n}\n\nexport const ansiRegex = new RegExp('([\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:[a-zA-Z\\\\d]*(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)|(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~])))', 'g');\nexport function stripAnsiEscapes(str: string): string {\n  return str.replace(ansiRegex, '');\n}\n\nexport type TestStepCategory = 'expect' | 'fixture' | 'hook' | 'pw:api' | 'test.step' | 'test.attach';\n\nexport function stepTitle(category: TestStepCategory, title: string): string {\n  switch (category) {\n    case 'fixture':\n      return `Fixture ${escapeWithQuotes(title, '\"')}`;\n    case 'expect':\n      return `Expect ${escapeWithQuotes(title, '\"')}`;\n    case 'test.step':\n      return title;\n    case 'test.attach':\n      return `Attach ${escapeWithQuotes(title, '\"')}`;\n    case 'hook':\n    case 'pw:api':\n      return title;\n    default:\n      return `[${category}] ${title}`;\n  }\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { callLogText, expectTypes } from '../util';\nimport { kNoElementsFoundError, matcherHint } from './matcherHint';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { Locator } from 'playwright-core';\n\nexport async function toBeTruthy(\n  this: ExpectMatcherState,\n  matcherName: string,\n  receiver: Locator,\n  receiverType: string,\n  expected: string,\n  arg: string,\n  query: (isNot: boolean, timeout: number) => Promise<{ matches: boolean, log?: string[], received?: any, timedOut?: boolean }>,\n  options: { timeout?: number } = {},\n): Promise<MatcherResult<any, any>> {\n  expectTypes(receiver, [receiverType], matcherName);\n\n  const matcherOptions = {\n    isNot: this.isNot,\n    promise: this.promise,\n  };\n\n  const timeout = options.timeout ?? this.timeout;\n  const { matches: pass, log, timedOut, received } = await query(!!this.isNot, timeout);\n  if (pass === !this.isNot) {\n    return {\n      name: matcherName,\n      message: () => '',\n      pass,\n      expected\n    };\n  }\n\n  const notFound = received === kNoElementsFoundError ? received : undefined;\n  let printedReceived: string | undefined;\n  let printedExpected: string | undefined;\n  if (pass) {\n    printedExpected = `Expected: not ${expected}`;\n    printedReceived = `Received: ${notFound ? kNoElementsFoundError : expected}`;\n  } else {\n    printedExpected = `Expected: ${expected}`;\n    printedReceived = `Received: ${notFound ? kNoElementsFoundError : received}`;\n  }\n  const message = () => {\n    const header = matcherHint(this, receiver, matcherName, 'locator', arg, matcherOptions, timedOut ? timeout : undefined);\n    const logText = callLogText(log);\n    return `${header}${printedExpected}\\n${printedReceived}${logText}`;\n  };\n  return {\n    message,\n    pass,\n    actual: received,\n    name: matcherName,\n    expected,\n    log,\n    timeout: timedOut ? timeout : undefined,\n  };\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isRegExp } from 'playwright-core/lib/utils';\n\nimport { callLogText, expectTypes } from '../util';\nimport { matcherHint } from './matcherHint';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { Locator } from 'playwright-core';\n\n// Omit colon and one or more spaces, so can call getLabelPrinter.\nconst EXPECTED_LABEL = 'Expected';\nconst RECEIVED_LABEL = 'Received';\n\nexport async function toEqual<T>(\n  this: ExpectMatcherState,\n  matcherName: string,\n  receiver: Locator,\n  receiverType: string,\n  query: (isNot: boolean, timeout: number) => Promise<{ matches: boolean, received?: any, log?: string[], timedOut?: boolean }>,\n  expected: T,\n  options: { timeout?: number, contains?: boolean } = {},\n): Promise<MatcherResult<any, any>> {\n  expectTypes(receiver, [receiverType], matcherName);\n\n  const matcherOptions = {\n    comment: options.contains ? '' : 'deep equality',\n    isNot: this.isNot,\n    promise: this.promise,\n  };\n\n  const timeout = options.timeout ?? this.timeout;\n\n  const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout);\n  if (pass === !this.isNot) {\n    return {\n      name: matcherName,\n      message: () => '',\n      pass,\n      expected\n    };\n  }\n\n  let printedReceived: string | undefined;\n  let printedExpected: string | undefined;\n  let printedDiff: string | undefined;\n  if (pass) {\n    printedExpected = `Expected: not ${this.utils.printExpected(expected)}`;\n    printedReceived = `Received: ${this.utils.printReceived(received)}`;\n  } else if (Array.isArray(expected) && Array.isArray(received)) {\n    const normalizedExpected = expected.map((exp, index) => {\n      const rec = received[index];\n      if (isRegExp(exp))\n        return exp.test(rec) ? rec : exp;\n\n      return exp;\n    });\n    printedDiff = this.utils.printDiffOrStringify(\n        normalizedExpected,\n        received,\n        EXPECTED_LABEL,\n        RECEIVED_LABEL,\n        false,\n    );\n  } else {\n    printedDiff = this.utils.printDiffOrStringify(\n        expected,\n        received,\n        EXPECTED_LABEL,\n        RECEIVED_LABEL,\n        false,\n    );\n  }\n  const message = () => {\n    const header = matcherHint(this, receiver, matcherName, 'locator', undefined, matcherOptions, timedOut ? timeout : undefined);\n    const details = printedDiff || `${printedExpected}\\n${printedReceived}`;\n    return `${header}${details}${callLogText(log)}`;\n  };\n  // Passing the actual and expected objects so that a custom reporter\n  // could access them, for example in order to display a custom visual diff,\n  // or create a different error message\n  return {\n    actual: received,\n    expected, message,\n    name: matcherName,\n    pass,\n    log,\n    timeout: timedOut ? timeout : undefined,\n  };\n}\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.getType = getType;\nexports.isPrimitive = void 0;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// get the type of a value with handling the edge cases like `typeof []`\n// and `typeof null`\nfunction getType(value) {\n  if (value === undefined) {\n    return 'undefined';\n  } else if (value === null) {\n    return 'null';\n  } else if (Array.isArray(value)) {\n    return 'array';\n  } else if (typeof value === 'boolean') {\n    return 'boolean';\n  } else if (typeof value === 'function') {\n    return 'function';\n  } else if (typeof value === 'number') {\n    return 'number';\n  } else if (typeof value === 'string') {\n    return 'string';\n  } else if (typeof value === 'bigint') {\n    return 'bigint';\n  } else if (typeof value === 'object') {\n    if (value != null) {\n      if (value.constructor === RegExp) {\n        return 'regexp';\n      } else if (value.constructor === Map) {\n        return 'map';\n      } else if (value.constructor === Set) {\n        return 'set';\n      } else if (value.constructor === Date) {\n        return 'date';\n      }\n    }\n    return 'object';\n  } else if (typeof value === 'symbol') {\n    return 'symbol';\n  }\n  throw new Error(`value of unknown type: ${value}`);\n}\nconst isPrimitive = value => Object(value) !== value;\nexports.isPrimitive = isPrimitive;\n","'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?<colorString>[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n  const rawKeys = Object.keys(object);\n  const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n  if (Object.getOwnPropertySymbols) {\n    Object.getOwnPropertySymbols(object).forEach(symbol => {\n      if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n        keys.push(symbol);\n      }\n    });\n  }\n  return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  // Too bad, so sad that separator for ECMAScript Map has been ' => '\n  // What a distracting diff if you change a data structure to/from\n  // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n  separator = ': '\n) {\n  let result = '';\n  let width = 0;\n  let current = iterator.next();\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    while (!current.done) {\n      result += indentationNext;\n      if (width++ === config.maxWidth) {\n        result += '…';\n        break;\n      }\n      const name = printer(\n        current.value[0],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      const value = printer(\n        current.value[1],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      result += name + separator + value;\n      current = iterator.next();\n      if (!current.done) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) {\n  let result = '';\n  let width = 0;\n  let current = iterator.next();\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    while (!current.done) {\n      result += indentationNext;\n      if (width++ === config.maxWidth) {\n        result += '…';\n        break;\n      }\n      result += printer(current.value, config, indentationNext, depth, refs);\n      current = iterator.next();\n      if (!current.done) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n  let result = '';\n  if (list.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    for (let i = 0; i < list.length; i++) {\n      result += indentationNext;\n      if (i === config.maxWidth) {\n        result += '…';\n        break;\n      }\n      if (i in list) {\n        result += printer(list[i], config, indentationNext, depth, refs);\n      }\n      if (i < list.length - 1) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n  let result = '';\n  const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n  if (keys.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const name = printer(key, config, indentationNext, depth, refs);\n      const value = printer(val[key], config, indentationNext, depth, refs);\n      result += `${indentationNext + name}: ${value}`;\n      if (i < keys.length - 1) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('jest.asymmetricMatcher')\n    : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  const stringedValue = val.toString();\n  if (\n    stringedValue === 'ArrayContaining' ||\n    stringedValue === 'ArrayNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return `[${stringedValue}]`;\n    }\n    return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n      val.sample,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer\n    )}]`;\n  }\n  if (\n    stringedValue === 'ObjectContaining' ||\n    stringedValue === 'ObjectNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return `[${stringedValue}]`;\n    }\n    return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n      val.sample,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer\n    )}}`;\n  }\n  if (\n    stringedValue === 'StringMatching' ||\n    stringedValue === 'StringNotMatching'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n  if (\n    stringedValue === 'StringContaining' ||\n    stringedValue === 'StringNotContaining'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n  if (typeof val.toAsymmetricMatcher !== 'function') {\n    throw new Error(\n      `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n    );\n  }\n  return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n  OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n  val &&\n  val.constructor &&\n  !!val.constructor.name &&\n  testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n  collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n  const name = collection.constructor.name;\n  if (++depth > config.maxDepth) {\n    return `[${name}]`;\n  }\n  return (\n    (config.min ? '' : name + SPACE) +\n    (OBJECT_NAMES.indexOf(name) !== -1\n      ? `{${(0, _collections.printObjectProperties)(\n          isNamedNodeMap(collection)\n            ? Array.from(collection).reduce((props, attribute) => {\n                props[attribute.name] = attribute.value;\n                return props;\n              }, {})\n            : {\n                ...collection\n              },\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}}`\n      : `[${(0, _collections.printListItems)(\n          Array.from(collection),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`)\n  );\n};\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n  return str.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printText =\n  exports.printProps =\n  exports.printElementAsLeaf =\n  exports.printElement =\n  exports.printComment =\n  exports.printChildren =\n    void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n  const indentationNext = indentation + config.indent;\n  const colors = config.colors;\n  return keys\n    .map(key => {\n      const value = props[key];\n      let printed = printer(value, config, indentationNext, depth, refs);\n      if (typeof value !== 'string') {\n        if (printed.indexOf('\\n') !== -1) {\n          printed =\n            config.spacingOuter +\n            indentationNext +\n            printed +\n            config.spacingOuter +\n            indentation;\n        }\n        printed = `{${printed}}`;\n      }\n      return `${\n        config.spacingInner +\n        indentation +\n        colors.prop.open +\n        key +\n        colors.prop.close\n      }=${colors.value.open}${printed}${colors.value.close}`;\n    })\n    .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n  children\n    .map(\n      child =>\n        config.spacingOuter +\n        indentation +\n        (typeof child === 'string'\n          ? printText(child, config)\n          : printer(child, config, indentation, depth, refs))\n    )\n    .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n  const contentColor = config.colors.content;\n  return (\n    contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n  );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n  const commentColor = config.colors.comment;\n  return `${commentColor.open}<!--${(0, _escapeHTML.default)(comment)}-->${\n    commentColor.close\n  }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n  type,\n  printedProps,\n  printedChildren,\n  config,\n  indentation\n) => {\n  const tagColor = config.colors.tag;\n  return `${tagColor.open}<${type}${\n    printedProps &&\n    tagColor.close +\n      printedProps +\n      config.spacingOuter +\n      indentation +\n      tagColor.open\n  }${\n    printedChildren\n      ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}</${type}`\n      : `${printedProps && !config.min ? '' : ' '}/`\n  }>${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n  const tagColor = config.colors.tag;\n  return `${tagColor.open}<${type}${tagColor.close} …${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n  try {\n    return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n  } catch {\n    return false;\n  }\n};\nconst testNode = val => {\n  const constructorName = val.constructor.name;\n  const {nodeType, tagName} = val;\n  const isCustomElement =\n    (typeof tagName === 'string' && tagName.includes('-')) ||\n    testHasAttribute(val);\n  return (\n    (nodeType === ELEMENT_NODE &&\n      (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n    (nodeType === TEXT_NODE && constructorName === 'Text') ||\n    (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n    (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n  );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n  return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n  return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n  return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n  if (nodeIsText(node)) {\n    return (0, _markup.printText)(node.data, config);\n  }\n  if (nodeIsComment(node)) {\n    return (0, _markup.printComment)(node.data, config);\n  }\n  const type = nodeIsFragment(node)\n    ? 'DocumentFragment'\n    : node.tagName.toLowerCase();\n  if (++depth > config.maxDepth) {\n    return (0, _markup.printElementAsLeaf)(type, config);\n  }\n  return (0, _markup.printElement)(\n    type,\n    (0, _markup.printProps)(\n      nodeIsFragment(node)\n        ? []\n        : Array.from(node.attributes, attr => attr.name).sort(),\n      nodeIsFragment(node)\n        ? {}\n        : Array.from(node.attributes).reduce((props, attribute) => {\n            props[attribute.name] = attribute.value;\n            return props;\n          }, {}),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    (0, _markup.printChildren)(\n      Array.prototype.slice.call(node.childNodes || node.children),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    config,\n    indentation\n  );\n};\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '…'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : `${getImmutableName(type) + SPACE}{${(0,\n      _collections.printIteratorEntries)(\n        val.entries(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n  let i = 0;\n  return {\n    next() {\n      if (i < val._keys.length) {\n        const key = val._keys[i++];\n        return {\n          done: false,\n          value: [key, val.get(key)]\n        };\n      }\n      return {\n        done: true,\n        value: undefined\n      };\n    }\n  };\n}\nconst printImmutableRecord = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) => {\n  // _name property is defined only for an Immutable Record instance\n  // which was constructed with a second optional descriptive name arg\n  const name = getImmutableName(val._name || 'Record');\n  return ++depth > config.maxDepth\n    ? printAsLeaf(name)\n    : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n        getRecordEntries(val),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n  const name = getImmutableName('Seq');\n  if (++depth > config.maxDepth) {\n    return printAsLeaf(name);\n  }\n  if (val[IS_KEYED_SENTINEL]) {\n    return `${name + SPACE}{${\n      // from Immutable collection of entries or from ECMAScript object\n      val._iter || val._object\n        ? (0, _collections.printIteratorEntries)(\n            val.entries(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          )\n        : LAZY\n    }}`;\n  }\n  return `${name + SPACE}[${\n    val._iter ||\n    // from Immutable collection of values\n    val._array ||\n    // from ECMAScript array\n    val._collection ||\n    // from ECMAScript collection in immutable v4\n    val._iterable // from ECMAScript collection in immutable v3\n      ? (0, _collections.printIteratorValues)(\n          val.values(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )\n      : LAZY\n  }]`;\n};\nconst printImmutableValues = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : `${getImmutableName(type) + SPACE}[${(0,\n      _collections.printIteratorValues)(\n        val.values(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  if (val[IS_MAP_SENTINEL]) {\n    return printImmutableEntries(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n    );\n  }\n  if (val[IS_LIST_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'List'\n    );\n  }\n  if (val[IS_SET_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n    );\n  }\n  if (val[IS_STACK_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'Stack'\n    );\n  }\n  if (val[IS_SEQ_SENTINEL]) {\n    return printImmutableSeq(val, config, indentation, depth, refs, printer);\n  }\n\n  // For compatibility with immutable v3 and v4, let record be the default.\n  return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n  val &&\n  (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n","/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n  if (Array.isArray(arg)) {\n    arg.forEach(item => {\n      getChildren(item, children);\n    });\n  } else if (arg != null && arg !== false) {\n    children.push(arg);\n  }\n  return children;\n};\nconst getType = element => {\n  const type = element.type;\n  if (typeof type === 'string') {\n    return type;\n  }\n  if (typeof type === 'function') {\n    return type.displayName || type.name || 'Unknown';\n  }\n  if (ReactIs.isFragment(element)) {\n    return 'React.Fragment';\n  }\n  if (ReactIs.isSuspense(element)) {\n    return 'React.Suspense';\n  }\n  if (typeof type === 'object' && type !== null) {\n    if (ReactIs.isContextProvider(element)) {\n      return 'Context.Provider';\n    }\n    if (ReactIs.isContextConsumer(element)) {\n      return 'Context.Consumer';\n    }\n    if (ReactIs.isForwardRef(element)) {\n      if (type.displayName) {\n        return type.displayName;\n      }\n      const functionName = type.render.displayName || type.render.name || '';\n      return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n    }\n    if (ReactIs.isMemo(element)) {\n      const functionName =\n        type.displayName || type.type.displayName || type.type.name || '';\n      return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n    }\n  }\n  return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n  const {props} = element;\n  return Object.keys(props)\n    .filter(key => key !== 'children' && props[key] !== undefined)\n    .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(getType(element), config)\n    : (0, _markup.printElement)(\n        getType(element),\n        (0, _markup.printProps)(\n          getPropKeys(element),\n          element.props,\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        (0, _markup.printChildren)(\n          getChildren(element.props.children),\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        config,\n        indentation\n      );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('react.test.json')\n    : 0xea71357;\nconst getPropKeys = object => {\n  const {props} = object;\n  return props\n    ? Object.keys(props)\n        .filter(key => props[key] !== undefined)\n        .sort()\n    : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(object.type, config)\n    : (0, _markup.printElement)(\n        object.type,\n        object.props\n          ? (0, _markup.printProps)(\n              getPropKeys(object),\n              object.props,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        object.children\n          ? (0, _markup.printChildren)(\n              object.children,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        config,\n        indentation\n      );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n  require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n  require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n  (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n  constructor(message, stack) {\n    super(message);\n    this.stack = stack;\n    this.name = this.constructor.name;\n  }\n}\nfunction isToStringedArrayType(toStringed) {\n  return (\n    toStringed === '[object Array]' ||\n    toStringed === '[object ArrayBuffer]' ||\n    toStringed === '[object DataView]' ||\n    toStringed === '[object Float32Array]' ||\n    toStringed === '[object Float64Array]' ||\n    toStringed === '[object Int8Array]' ||\n    toStringed === '[object Int16Array]' ||\n    toStringed === '[object Int32Array]' ||\n    toStringed === '[object Uint8Array]' ||\n    toStringed === '[object Uint8ClampedArray]' ||\n    toStringed === '[object Uint16Array]' ||\n    toStringed === '[object Uint32Array]'\n  );\n}\nfunction printNumber(val) {\n  return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n  return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n  if (!printFunctionName) {\n    return '[Function]';\n  }\n  return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n  return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n  return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n  if (val === true || val === false) {\n    return `${val}`;\n  }\n  if (val === undefined) {\n    return 'undefined';\n  }\n  if (val === null) {\n    return 'null';\n  }\n  const typeOf = typeof val;\n  if (typeOf === 'number') {\n    return printNumber(val);\n  }\n  if (typeOf === 'bigint') {\n    return printBigInt(val);\n  }\n  if (typeOf === 'string') {\n    if (escapeString) {\n      return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n    }\n    return `\"${val}\"`;\n  }\n  if (typeOf === 'function') {\n    return printFunction(val, printFunctionName);\n  }\n  if (typeOf === 'symbol') {\n    return printSymbol(val);\n  }\n  const toStringed = toString.call(val);\n  if (toStringed === '[object WeakMap]') {\n    return 'WeakMap {}';\n  }\n  if (toStringed === '[object WeakSet]') {\n    return 'WeakSet {}';\n  }\n  if (\n    toStringed === '[object Function]' ||\n    toStringed === '[object GeneratorFunction]'\n  ) {\n    return printFunction(val, printFunctionName);\n  }\n  if (toStringed === '[object Symbol]') {\n    return printSymbol(val);\n  }\n  if (toStringed === '[object Date]') {\n    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n  }\n  if (toStringed === '[object Error]') {\n    return printError(val);\n  }\n  if (toStringed === '[object RegExp]') {\n    if (escapeRegex) {\n      // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n      return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n    return regExpToString.call(val);\n  }\n  if (val instanceof Error) {\n    return printError(val);\n  }\n  return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  hasCalledToJSON\n) {\n  if (refs.indexOf(val) !== -1) {\n    return '[Circular]';\n  }\n  refs = refs.slice();\n  refs.push(val);\n  const hitMaxDepth = ++depth > config.maxDepth;\n  const min = config.min;\n  if (\n    config.callToJSON &&\n    !hitMaxDepth &&\n    val.toJSON &&\n    typeof val.toJSON === 'function' &&\n    !hasCalledToJSON\n  ) {\n    return printer(val.toJSON(), config, indentation, depth, refs, true);\n  }\n  const toStringed = toString.call(val);\n  if (toStringed === '[object Arguments]') {\n    return hitMaxDepth\n      ? '[Arguments]'\n      : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`;\n  }\n  if (isToStringedArrayType(toStringed)) {\n    return hitMaxDepth\n      ? `[${val.constructor.name}]`\n      : `${\n          min\n            ? ''\n            : !config.printBasicPrototype && val.constructor.name === 'Array'\n            ? ''\n            : `${val.constructor.name} `\n        }[${(0, _collections.printListItems)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`;\n  }\n  if (toStringed === '[object Map]') {\n    return hitMaxDepth\n      ? '[Map]'\n      : `Map {${(0, _collections.printIteratorEntries)(\n          val.entries(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer,\n          ' => '\n        )}}`;\n  }\n  if (toStringed === '[object Set]') {\n    return hitMaxDepth\n      ? '[Set]'\n      : `Set {${(0, _collections.printIteratorValues)(\n          val.values(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}}`;\n  }\n\n  // Avoid failure to serialize global window object in jsdom test environment.\n  // For example, not even relevant if window is prop of React element.\n  return hitMaxDepth || isWindow(val)\n    ? `[${getConstructorName(val)}]`\n    : `${\n        min\n          ? ''\n          : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n          ? ''\n          : `${getConstructorName(val)} `\n      }{${(0, _collections.printObjectProperties)(\n        val,\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n}\nfunction isNewPlugin(plugin) {\n  return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n  let printed;\n  try {\n    printed = isNewPlugin(plugin)\n      ? plugin.serialize(val, config, indentation, depth, refs, printer)\n      : plugin.print(\n          val,\n          valChild => printer(valChild, config, indentation, depth, refs),\n          str => {\n            const indentationNext = indentation + config.indent;\n            return (\n              indentationNext +\n              str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n            );\n          },\n          {\n            edgeSpacing: config.spacingOuter,\n            min: config.min,\n            spacing: config.spacingInner\n          },\n          config.colors\n        );\n  } catch (error) {\n    throw new PrettyFormatPluginError(error.message, error.stack);\n  }\n  if (typeof printed !== 'string') {\n    throw new Error(\n      `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n    );\n  }\n  return printed;\n}\nfunction findPlugin(plugins, val) {\n  for (let p = 0; p < plugins.length; p++) {\n    try {\n      if (plugins[p].test(val)) {\n        return plugins[p];\n      }\n    } catch (error) {\n      throw new PrettyFormatPluginError(error.message, error.stack);\n    }\n  }\n  return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n  const plugin = findPlugin(config.plugins, val);\n  if (plugin !== null) {\n    return printPlugin(plugin, val, config, indentation, depth, refs);\n  }\n  const basicResult = printBasicValue(\n    val,\n    config.printFunctionName,\n    config.escapeRegex,\n    config.escapeString\n  );\n  if (basicResult !== null) {\n    return basicResult;\n  }\n  return printComplexValue(\n    val,\n    config,\n    indentation,\n    depth,\n    refs,\n    hasCalledToJSON\n  );\n}\nconst DEFAULT_THEME = {\n  comment: 'gray',\n  content: 'reset',\n  prop: 'yellow',\n  tag: 'cyan',\n  value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n  callToJSON: true,\n  compareKeys: undefined,\n  escapeRegex: false,\n  escapeString: true,\n  highlight: false,\n  indent: 2,\n  maxDepth: Infinity,\n  maxWidth: Infinity,\n  min: false,\n  plugins: [],\n  printBasicPrototype: true,\n  printFunctionName: true,\n  theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n  Object.keys(options).forEach(key => {\n    if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n      throw new Error(`pretty-format: Unknown option \"${key}\".`);\n    }\n  });\n  if (options.min && options.indent !== undefined && options.indent !== 0) {\n    throw new Error(\n      'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n    );\n  }\n  if (options.theme !== undefined) {\n    if (options.theme === null) {\n      throw new Error('pretty-format: Option \"theme\" must not be null.');\n    }\n    if (typeof options.theme !== 'object') {\n      throw new Error(\n        `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n      );\n    }\n  }\n}\nconst getColorsHighlight = options =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    const value =\n      options.theme && options.theme[key] !== undefined\n        ? options.theme[key]\n        : DEFAULT_THEME[key];\n    const color = value && _ansiStyles.default[value];\n    if (\n      color &&\n      typeof color.close === 'string' &&\n      typeof color.open === 'string'\n    ) {\n      colors[key] = color;\n    } else {\n      throw new Error(\n        `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n      );\n    }\n    return colors;\n  }, Object.create(null));\nconst getColorsEmpty = () =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    colors[key] = {\n      close: '',\n      open: ''\n    };\n    return colors;\n  }, Object.create(null));\nconst getPrintFunctionName = options =>\n  options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n  options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n  options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n  callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n  colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n  compareKeys:\n    typeof options?.compareKeys === 'function' || options?.compareKeys === null\n      ? options.compareKeys\n      : DEFAULT_OPTIONS.compareKeys,\n  escapeRegex: getEscapeRegex(options),\n  escapeString: getEscapeString(options),\n  indent: options?.min\n    ? ''\n    : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n  maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n  maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n  min: options?.min ?? DEFAULT_OPTIONS.min,\n  plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n  printBasicPrototype: options?.printBasicPrototype ?? true,\n  printFunctionName: getPrintFunctionName(options),\n  spacingInner: options?.min ? ' ' : '\\n',\n  spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n  return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n  if (options) {\n    validateOptions(options);\n    if (options.plugins) {\n      const plugin = findPlugin(options.plugins, val);\n      if (plugin !== null) {\n        return printPlugin(plugin, val, getConfig(options), '', 0, []);\n      }\n    }\n  }\n  const basicResult = printBasicValue(\n    val,\n    getPrintFunctionName(options),\n    getEscapeRegex(options),\n    getEscapeString(options)\n  );\n  if (basicResult !== null) {\n    return basicResult;\n  }\n  return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n  AsymmetricMatcher: _AsymmetricMatcher.default,\n  DOMCollection: _DOMCollection.default,\n  DOMElement: _DOMElement.default,\n  Immutable: _Immutable.default,\n  ReactElement: _ReactElement.default,\n  ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.cleanupSemantic =\n  exports.Diff =\n  exports.DIFF_INSERT =\n  exports.DIFF_EQUAL =\n  exports.DIFF_DELETE =\n    void 0;\n/**\n * Diff Match and Patch\n * Copyright 2018 The diff-match-patch Authors.\n * https://github.com/google/diff-match-patch\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *   http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @fileoverview Computes the difference between two texts to create a patch.\n * Applies the patch onto another text, allowing for errors.\n * @author fraser@google.com (Neil Fraser)\n */\n\n/**\n * CHANGES by pedrottimark to diff_match_patch_uncompressed.ts file:\n *\n * 1. Delete anything not needed to use diff_cleanupSemantic method\n * 2. Convert from prototype properties to var declarations\n * 3. Convert Diff to class from constructor and prototype\n * 4. Add type annotations for arguments and return values\n * 5. Add exports\n */\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nexports.DIFF_DELETE = DIFF_DELETE;\nvar DIFF_INSERT = 1;\nexports.DIFF_INSERT = DIFF_INSERT;\nvar DIFF_EQUAL = 0;\n\n/**\n * Class representing one diff tuple.\n * Attempts to look like a two-element array (which is what this used to be).\n * @param {number} op Operation, one of: DIFF_DELETE, DIFF_INSERT, DIFF_EQUAL.\n * @param {string} text Text to be deleted, inserted, or retained.\n * @constructor\n */\nexports.DIFF_EQUAL = DIFF_EQUAL;\nclass Diff {\n  0;\n  1;\n  constructor(op, text) {\n    this[0] = op;\n    this[1] = text;\n  }\n}\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n *     string.\n */\nexports.Diff = Diff;\nvar diff_commonPrefix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerstart = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(pointerstart, pointermid) ==\n      text2.substring(pointerstart, pointermid)\n    ) {\n      pointermin = pointermid;\n      pointerstart = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nvar diff_commonSuffix = function (text1, text2) {\n  // Quick check for common null cases.\n  if (\n    !text1 ||\n    !text2 ||\n    text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)\n  ) {\n    return 0;\n  }\n  // Binary search.\n  // Performance analysis: https://neil.fraser.name/news/2007/10/09/\n  var pointermin = 0;\n  var pointermax = Math.min(text1.length, text2.length);\n  var pointermid = pointermax;\n  var pointerend = 0;\n  while (pointermin < pointermid) {\n    if (\n      text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n      text2.substring(text2.length - pointermid, text2.length - pointerend)\n    ) {\n      pointermin = pointermid;\n      pointerend = pointermin;\n    } else {\n      pointermax = pointermid;\n    }\n    pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n  }\n  return pointermid;\n};\n\n/**\n * Determine if the suffix of one string is the prefix of another.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of the first\n *     string and the start of the second string.\n * @private\n */\nvar diff_commonOverlap_ = function (text1, text2) {\n  // Cache the text lengths to prevent multiple calls.\n  var text1_length = text1.length;\n  var text2_length = text2.length;\n  // Eliminate the null case.\n  if (text1_length == 0 || text2_length == 0) {\n    return 0;\n  }\n  // Truncate the longer string.\n  if (text1_length > text2_length) {\n    text1 = text1.substring(text1_length - text2_length);\n  } else if (text1_length < text2_length) {\n    text2 = text2.substring(0, text1_length);\n  }\n  var text_length = Math.min(text1_length, text2_length);\n  // Quick check for the worst case.\n  if (text1 == text2) {\n    return text_length;\n  }\n\n  // Start by looking for a single character match\n  // and increase length until no match is found.\n  // Performance analysis: https://neil.fraser.name/news/2010/11/04/\n  var best = 0;\n  var length = 1;\n  while (true) {\n    var pattern = text1.substring(text_length - length);\n    var found = text2.indexOf(pattern);\n    if (found == -1) {\n      return best;\n    }\n    length += found;\n    if (\n      found == 0 ||\n      text1.substring(text_length - length) == text2.substring(0, length)\n    ) {\n      best = length;\n      length++;\n    }\n  }\n};\n\n/**\n * Reduce the number of edits by eliminating semantically trivial equalities.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\nvar diff_cleanupSemantic = function (diffs) {\n  var changes = false;\n  var equalities = []; // Stack of indices where equalities are found.\n  var equalitiesLength = 0; // Keeping our own length var is faster in JS.\n  /** @type {?string} */\n  var lastEquality = null;\n  // Always equal to diffs[equalities[equalitiesLength - 1]][1]\n  var pointer = 0; // Index of current position.\n  // Number of characters that changed prior to the equality.\n  var length_insertions1 = 0;\n  var length_deletions1 = 0;\n  // Number of characters that changed after the equality.\n  var length_insertions2 = 0;\n  var length_deletions2 = 0;\n  while (pointer < diffs.length) {\n    if (diffs[pointer][0] == DIFF_EQUAL) {\n      // Equality found.\n      equalities[equalitiesLength++] = pointer;\n      length_insertions1 = length_insertions2;\n      length_deletions1 = length_deletions2;\n      length_insertions2 = 0;\n      length_deletions2 = 0;\n      lastEquality = diffs[pointer][1];\n    } else {\n      // An insertion or deletion.\n      if (diffs[pointer][0] == DIFF_INSERT) {\n        length_insertions2 += diffs[pointer][1].length;\n      } else {\n        length_deletions2 += diffs[pointer][1].length;\n      }\n      // Eliminate an equality that is smaller or equal to the edits on both\n      // sides of it.\n      if (\n        lastEquality &&\n        lastEquality.length <=\n          Math.max(length_insertions1, length_deletions1) &&\n        lastEquality.length <= Math.max(length_insertions2, length_deletions2)\n      ) {\n        // Duplicate record.\n        diffs.splice(\n          equalities[equalitiesLength - 1],\n          0,\n          new Diff(DIFF_DELETE, lastEquality)\n        );\n        // Change second copy to insert.\n        diffs[equalities[equalitiesLength - 1] + 1][0] = DIFF_INSERT;\n        // Throw away the equality we just deleted.\n        equalitiesLength--;\n        // Throw away the previous equality (it needs to be reevaluated).\n        equalitiesLength--;\n        pointer = equalitiesLength > 0 ? equalities[equalitiesLength - 1] : -1;\n        length_insertions1 = 0; // Reset the counters.\n        length_deletions1 = 0;\n        length_insertions2 = 0;\n        length_deletions2 = 0;\n        lastEquality = null;\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n\n  // Normalize the diff.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n  diff_cleanupSemanticLossless(diffs);\n\n  // Find any overlaps between deletions and insertions.\n  // e.g: <del>abcxxx</del><ins>xxxdef</ins>\n  //   -> <del>abc</del>xxx<ins>def</ins>\n  // e.g: <del>xxxabc</del><ins>defxxx</ins>\n  //   -> <ins>def</ins>xxx<del>abc</del>\n  // Only extract an overlap if it is as big as the edit ahead or behind it.\n  pointer = 1;\n  while (pointer < diffs.length) {\n    if (\n      diffs[pointer - 1][0] == DIFF_DELETE &&\n      diffs[pointer][0] == DIFF_INSERT\n    ) {\n      var deletion = diffs[pointer - 1][1];\n      var insertion = diffs[pointer][1];\n      var overlap_length1 = diff_commonOverlap_(deletion, insertion);\n      var overlap_length2 = diff_commonOverlap_(insertion, deletion);\n      if (overlap_length1 >= overlap_length2) {\n        if (\n          overlap_length1 >= deletion.length / 2 ||\n          overlap_length1 >= insertion.length / 2\n        ) {\n          // Overlap found.  Insert an equality and trim the surrounding edits.\n          diffs.splice(\n            pointer,\n            0,\n            new Diff(DIFF_EQUAL, insertion.substring(0, overlap_length1))\n          );\n          diffs[pointer - 1][1] = deletion.substring(\n            0,\n            deletion.length - overlap_length1\n          );\n          diffs[pointer + 1][1] = insertion.substring(overlap_length1);\n          pointer++;\n        }\n      } else {\n        if (\n          overlap_length2 >= deletion.length / 2 ||\n          overlap_length2 >= insertion.length / 2\n        ) {\n          // Reverse overlap found.\n          // Insert an equality and swap and trim the surrounding edits.\n          diffs.splice(\n            pointer,\n            0,\n            new Diff(DIFF_EQUAL, deletion.substring(0, overlap_length2))\n          );\n          diffs[pointer - 1][0] = DIFF_INSERT;\n          diffs[pointer - 1][1] = insertion.substring(\n            0,\n            insertion.length - overlap_length2\n          );\n          diffs[pointer + 1][0] = DIFF_DELETE;\n          diffs[pointer + 1][1] = deletion.substring(overlap_length2);\n          pointer++;\n        }\n      }\n      pointer++;\n    }\n    pointer++;\n  }\n};\n\n/**\n * Look for single edits surrounded on both sides by equalities\n * which can be shifted sideways to align the edit to a word boundary.\n * e.g: The c<ins>at c</ins>ame. -> The <ins>cat </ins>came.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\nexports.cleanupSemantic = diff_cleanupSemantic;\nvar diff_cleanupSemanticLossless = function (diffs) {\n  /**\n   * Given two strings, compute a score representing whether the internal\n   * boundary falls on logical boundaries.\n   * Scores range from 6 (best) to 0 (worst).\n   * Closure, but does not reference any external variables.\n   * @param {string} one First string.\n   * @param {string} two Second string.\n   * @return {number} The score.\n   * @private\n   */\n  function diff_cleanupSemanticScore_(one, two) {\n    if (!one || !two) {\n      // Edges are the best.\n      return 6;\n    }\n\n    // Each port of this function behaves slightly differently due to\n    // subtle differences in each language's definition of things like\n    // 'whitespace'.  Since this function's purpose is largely cosmetic,\n    // the choice has been made to use each language's native features\n    // rather than force total conformity.\n    var char1 = one.charAt(one.length - 1);\n    var char2 = two.charAt(0);\n    var nonAlphaNumeric1 = char1.match(nonAlphaNumericRegex_);\n    var nonAlphaNumeric2 = char2.match(nonAlphaNumericRegex_);\n    var whitespace1 = nonAlphaNumeric1 && char1.match(whitespaceRegex_);\n    var whitespace2 = nonAlphaNumeric2 && char2.match(whitespaceRegex_);\n    var lineBreak1 = whitespace1 && char1.match(linebreakRegex_);\n    var lineBreak2 = whitespace2 && char2.match(linebreakRegex_);\n    var blankLine1 = lineBreak1 && one.match(blanklineEndRegex_);\n    var blankLine2 = lineBreak2 && two.match(blanklineStartRegex_);\n    if (blankLine1 || blankLine2) {\n      // Five points for blank lines.\n      return 5;\n    } else if (lineBreak1 || lineBreak2) {\n      // Four points for line breaks.\n      return 4;\n    } else if (nonAlphaNumeric1 && !whitespace1 && whitespace2) {\n      // Three points for end of sentences.\n      return 3;\n    } else if (whitespace1 || whitespace2) {\n      // Two points for whitespace.\n      return 2;\n    } else if (nonAlphaNumeric1 || nonAlphaNumeric2) {\n      // One point for non-alphanumeric.\n      return 1;\n    }\n    return 0;\n  }\n  var pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] == DIFF_EQUAL &&\n      diffs[pointer + 1][0] == DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      var equality1 = diffs[pointer - 1][1];\n      var edit = diffs[pointer][1];\n      var equality2 = diffs[pointer + 1][1];\n\n      // First, shift the edit as far left as possible.\n      var commonOffset = diff_commonSuffix(equality1, edit);\n      if (commonOffset) {\n        var commonString = edit.substring(edit.length - commonOffset);\n        equality1 = equality1.substring(0, equality1.length - commonOffset);\n        edit = commonString + edit.substring(0, edit.length - commonOffset);\n        equality2 = commonString + equality2;\n      }\n\n      // Second, step character by character right, looking for the best fit.\n      var bestEquality1 = equality1;\n      var bestEdit = edit;\n      var bestEquality2 = equality2;\n      var bestScore =\n        diff_cleanupSemanticScore_(equality1, edit) +\n        diff_cleanupSemanticScore_(edit, equality2);\n      while (edit.charAt(0) === equality2.charAt(0)) {\n        equality1 += edit.charAt(0);\n        edit = edit.substring(1) + equality2.charAt(0);\n        equality2 = equality2.substring(1);\n        var score =\n          diff_cleanupSemanticScore_(equality1, edit) +\n          diff_cleanupSemanticScore_(edit, equality2);\n        // The >= encourages trailing rather than leading whitespace on edits.\n        if (score >= bestScore) {\n          bestScore = score;\n          bestEquality1 = equality1;\n          bestEdit = edit;\n          bestEquality2 = equality2;\n        }\n      }\n      if (diffs[pointer - 1][1] != bestEquality1) {\n        // We have an improvement, save it back to the diff.\n        if (bestEquality1) {\n          diffs[pointer - 1][1] = bestEquality1;\n        } else {\n          diffs.splice(pointer - 1, 1);\n          pointer--;\n        }\n        diffs[pointer][1] = bestEdit;\n        if (bestEquality2) {\n          diffs[pointer + 1][1] = bestEquality2;\n        } else {\n          diffs.splice(pointer + 1, 1);\n          pointer--;\n        }\n      }\n    }\n    pointer++;\n  }\n};\n\n// Define some regex patterns for matching boundaries.\nvar nonAlphaNumericRegex_ = /[^a-zA-Z0-9]/;\nvar whitespaceRegex_ = /\\s/;\nvar linebreakRegex_ = /[\\r\\n]/;\nvar blanklineEndRegex_ = /\\n\\r?\\n$/;\nvar blanklineStartRegex_ = /^\\r?\\n\\r?\\n/;\n\n/**\n * Reorder and merge like edit sections.  Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {!Array.<!diff_match_patch.Diff>} diffs Array of diff tuples.\n */\nvar diff_cleanupMerge = function (diffs) {\n  // Add a dummy entry at the end.\n  diffs.push(new Diff(DIFF_EQUAL, ''));\n  var pointer = 0;\n  var count_delete = 0;\n  var count_insert = 0;\n  var text_delete = '';\n  var text_insert = '';\n  var commonlength;\n  while (pointer < diffs.length) {\n    switch (diffs[pointer][0]) {\n      case DIFF_INSERT:\n        count_insert++;\n        text_insert += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_DELETE:\n        count_delete++;\n        text_delete += diffs[pointer][1];\n        pointer++;\n        break;\n      case DIFF_EQUAL:\n        // Upon reaching an equality, check for prior redundancies.\n        if (count_delete + count_insert > 1) {\n          if (count_delete !== 0 && count_insert !== 0) {\n            // Factor out any common prefixies.\n            commonlength = diff_commonPrefix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              if (\n                pointer - count_delete - count_insert > 0 &&\n                diffs[pointer - count_delete - count_insert - 1][0] ==\n                  DIFF_EQUAL\n              ) {\n                diffs[pointer - count_delete - count_insert - 1][1] +=\n                  text_insert.substring(0, commonlength);\n              } else {\n                diffs.splice(\n                  0,\n                  0,\n                  new Diff(DIFF_EQUAL, text_insert.substring(0, commonlength))\n                );\n                pointer++;\n              }\n              text_insert = text_insert.substring(commonlength);\n              text_delete = text_delete.substring(commonlength);\n            }\n            // Factor out any common suffixies.\n            commonlength = diff_commonSuffix(text_insert, text_delete);\n            if (commonlength !== 0) {\n              diffs[pointer][1] =\n                text_insert.substring(text_insert.length - commonlength) +\n                diffs[pointer][1];\n              text_insert = text_insert.substring(\n                0,\n                text_insert.length - commonlength\n              );\n              text_delete = text_delete.substring(\n                0,\n                text_delete.length - commonlength\n              );\n            }\n          }\n          // Delete the offending records and add the merged ones.\n          pointer -= count_delete + count_insert;\n          diffs.splice(pointer, count_delete + count_insert);\n          if (text_delete.length) {\n            diffs.splice(pointer, 0, new Diff(DIFF_DELETE, text_delete));\n            pointer++;\n          }\n          if (text_insert.length) {\n            diffs.splice(pointer, 0, new Diff(DIFF_INSERT, text_insert));\n            pointer++;\n          }\n          pointer++;\n        } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n          // Merge this equality with the previous one.\n          diffs[pointer - 1][1] += diffs[pointer][1];\n          diffs.splice(pointer, 1);\n        } else {\n          pointer++;\n        }\n        count_insert = 0;\n        count_delete = 0;\n        text_delete = '';\n        text_insert = '';\n        break;\n    }\n  }\n  if (diffs[diffs.length - 1][1] === '') {\n    diffs.pop(); // Remove the dummy entry at the end.\n  }\n\n  // Second pass: look for single edits surrounded on both sides by equalities\n  // which can be shifted sideways to eliminate an equality.\n  // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n  var changes = false;\n  pointer = 1;\n  // Intentionally ignore the first and last element (don't need checking).\n  while (pointer < diffs.length - 1) {\n    if (\n      diffs[pointer - 1][0] == DIFF_EQUAL &&\n      diffs[pointer + 1][0] == DIFF_EQUAL\n    ) {\n      // This is a single edit surrounded by equalities.\n      if (\n        diffs[pointer][1].substring(\n          diffs[pointer][1].length - diffs[pointer - 1][1].length\n        ) == diffs[pointer - 1][1]\n      ) {\n        // Shift the edit over the previous equality.\n        diffs[pointer][1] =\n          diffs[pointer - 1][1] +\n          diffs[pointer][1].substring(\n            0,\n            diffs[pointer][1].length - diffs[pointer - 1][1].length\n          );\n        diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n        diffs.splice(pointer - 1, 1);\n        changes = true;\n      } else if (\n        diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n        diffs[pointer + 1][1]\n      ) {\n        // Shift the edit over the next equality.\n        diffs[pointer - 1][1] += diffs[pointer + 1][1];\n        diffs[pointer][1] =\n          diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n          diffs[pointer + 1][1];\n        diffs.splice(pointer + 1, 1);\n        changes = true;\n      }\n    }\n    pointer++;\n  }\n  // If shifts were made, the diff needs reordering and another shift sweep.\n  if (changes) {\n    diff_cleanupMerge(diffs);\n  }\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.SIMILAR_MESSAGE = exports.NO_DIFF_MESSAGE = void 0;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst NO_DIFF_MESSAGE = 'Compared values have no visual difference.';\nexports.NO_DIFF_MESSAGE = NO_DIFF_MESSAGE;\nconst SIMILAR_MESSAGE =\n  'Compared values serialize to the same structure.\\n' +\n  'Printing internal object structure without calling `toJSON` instead.';\nexports.SIMILAR_MESSAGE = SIMILAR_MESSAGE;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = diffSequence;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// This diff-sequences package implements the linear space variation in\n// An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers\n\n// Relationship in notation between Myers paper and this package:\n// A is a\n// N is aLength, aEnd - aStart, and so on\n// x is aIndex, aFirst, aLast, and so on\n// B is b\n// M is bLength, bEnd - bStart, and so on\n// y is bIndex, bFirst, bLast, and so on\n// Δ = N - M is negative of baDeltaLength = bLength - aLength\n// D is d\n// k is kF\n// k + Δ is kF = kR - baDeltaLength\n// V is aIndexesF or aIndexesR (see comment below about Indexes type)\n// index intervals [1, N] and [1, M] are [0, aLength) and [0, bLength)\n// starting point in forward direction (0, 0) is (-1, -1)\n// starting point in reverse direction (N + 1, M + 1) is (aLength, bLength)\n\n// The “edit graph” for sequences a and b corresponds to items:\n// in a on the horizontal axis\n// in b on the vertical axis\n//\n// Given a-coordinate of a point in a diagonal, you can compute b-coordinate.\n//\n// Forward diagonals kF:\n// zero diagonal intersects top left corner\n// positive diagonals intersect top edge\n// negative diagonals insersect left edge\n//\n// Reverse diagonals kR:\n// zero diagonal intersects bottom right corner\n// positive diagonals intersect right edge\n// negative diagonals intersect bottom edge\n\n// The graph contains a directed acyclic graph of edges:\n// horizontal: delete an item from a\n// vertical: insert an item from b\n// diagonal: common item in a and b\n//\n// The algorithm solves dual problems in the graph analogy:\n// Find longest common subsequence: path with maximum number of diagonal edges\n// Find shortest edit script: path with minimum number of non-diagonal edges\n\n// Input callback function compares items at indexes in the sequences.\n\n// Output callback function receives the number of adjacent items\n// and starting indexes of each common subsequence.\n// Either original functions or wrapped to swap indexes if graph is transposed.\n// Indexes in sequence a of last point of forward or reverse paths in graph.\n// Myers algorithm indexes by diagonal k which for negative is bad deopt in V8.\n// This package indexes by iF and iR which are greater than or equal to zero.\n// and also updates the index arrays in place to cut memory in half.\n// kF = 2 * iF - d\n// kR = d - 2 * iR\n// Division of index intervals in sequences a and b at the middle change.\n// Invariant: intervals do not have common items at the start or end.\nconst pkg = 'diff-sequences'; // for error messages\nconst NOT_YET_SET = 0; // small int instead of undefined to avoid deopt in V8\n\n// Return the number of common items that follow in forward direction.\n// The length of what Myers paper calls a “snake” in a forward path.\nconst countCommonItemsF = (aIndex, aEnd, bIndex, bEnd, isCommon) => {\n  let nCommon = 0;\n  while (aIndex < aEnd && bIndex < bEnd && isCommon(aIndex, bIndex)) {\n    aIndex += 1;\n    bIndex += 1;\n    nCommon += 1;\n  }\n  return nCommon;\n};\n\n// Return the number of common items that precede in reverse direction.\n// The length of what Myers paper calls a “snake” in a reverse path.\nconst countCommonItemsR = (aStart, aIndex, bStart, bIndex, isCommon) => {\n  let nCommon = 0;\n  while (aStart <= aIndex && bStart <= bIndex && isCommon(aIndex, bIndex)) {\n    aIndex -= 1;\n    bIndex -= 1;\n    nCommon += 1;\n  }\n  return nCommon;\n};\n\n// A simple function to extend forward paths from (d - 1) to d changes\n// when forward and reverse paths cannot yet overlap.\nconst extendPathsF = (\n  d,\n  aEnd,\n  bEnd,\n  bF,\n  isCommon,\n  aIndexesF,\n  iMaxF // return the value because optimization might decrease it\n) => {\n  // Unroll the first iteration.\n  let iF = 0;\n  let kF = -d; // kF = 2 * iF - d\n  let aFirst = aIndexesF[iF]; // in first iteration always insert\n  let aIndexPrev1 = aFirst; // prev value of [iF - 1] in next iteration\n  aIndexesF[iF] += countCommonItemsF(\n    aFirst + 1,\n    aEnd,\n    bF + aFirst - kF + 1,\n    bEnd,\n    isCommon\n  );\n\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n  const nF = d < iMaxF ? d : iMaxF;\n\n  // The diagonals kF are odd when d is odd and even when d is even.\n  for (iF += 1, kF += 2; iF <= nF; iF += 1, kF += 2) {\n    // To get first point of path segment, move one change in forward direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In last possible iteration when iF === d and kF === d always delete.\n    if (iF !== d && aIndexPrev1 < aIndexesF[iF]) {\n      aFirst = aIndexesF[iF]; // vertical to insert from b\n    } else {\n      aFirst = aIndexPrev1 + 1; // horizontal to delete from a\n\n      if (aEnd <= aFirst) {\n        // Optimization: delete moved past right of graph.\n        return iF - 1;\n      }\n    }\n\n    // To get last point of path segment, move along diagonal of common items.\n    aIndexPrev1 = aIndexesF[iF];\n    aIndexesF[iF] =\n      aFirst +\n      countCommonItemsF(aFirst + 1, aEnd, bF + aFirst - kF + 1, bEnd, isCommon);\n  }\n  return iMaxF;\n};\n\n// A simple function to extend reverse paths from (d - 1) to d changes\n// when reverse and forward paths cannot yet overlap.\nconst extendPathsR = (\n  d,\n  aStart,\n  bStart,\n  bR,\n  isCommon,\n  aIndexesR,\n  iMaxR // return the value because optimization might decrease it\n) => {\n  // Unroll the first iteration.\n  let iR = 0;\n  let kR = d; // kR = d - 2 * iR\n  let aFirst = aIndexesR[iR]; // in first iteration always insert\n  let aIndexPrev1 = aFirst; // prev value of [iR - 1] in next iteration\n  aIndexesR[iR] -= countCommonItemsR(\n    aStart,\n    aFirst - 1,\n    bStart,\n    bR + aFirst - kR - 1,\n    isCommon\n  );\n\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n  const nR = d < iMaxR ? d : iMaxR;\n\n  // The diagonals kR are odd when d is odd and even when d is even.\n  for (iR += 1, kR -= 2; iR <= nR; iR += 1, kR -= 2) {\n    // To get first point of path segment, move one change in reverse direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In last possible iteration when iR === d and kR === -d always delete.\n    if (iR !== d && aIndexesR[iR] < aIndexPrev1) {\n      aFirst = aIndexesR[iR]; // vertical to insert from b\n    } else {\n      aFirst = aIndexPrev1 - 1; // horizontal to delete from a\n\n      if (aFirst < aStart) {\n        // Optimization: delete moved past left of graph.\n        return iR - 1;\n      }\n    }\n\n    // To get last point of path segment, move along diagonal of common items.\n    aIndexPrev1 = aIndexesR[iR];\n    aIndexesR[iR] =\n      aFirst -\n      countCommonItemsR(\n        aStart,\n        aFirst - 1,\n        bStart,\n        bR + aFirst - kR - 1,\n        isCommon\n      );\n  }\n  return iMaxR;\n};\n\n// A complete function to extend forward paths from (d - 1) to d changes.\n// Return true if a path overlaps reverse path of (d - 1) changes in its diagonal.\nconst extendOverlappablePathsF = (\n  d,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  iMaxF,\n  aIndexesR,\n  iMaxR,\n  division // update prop values if return true\n) => {\n  const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart;\n  const baDeltaLength = bLength - aLength; // kF = kR - baDeltaLength\n\n  // Range of diagonals in which forward and reverse paths might overlap.\n  const kMinOverlapF = -baDeltaLength - (d - 1); // -(d - 1) <= kR\n  const kMaxOverlapF = -baDeltaLength + (d - 1); // kR <= (d - 1)\n\n  let aIndexPrev1 = NOT_YET_SET; // prev value of [iF - 1] in next iteration\n\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n  const nF = d < iMaxF ? d : iMaxF;\n\n  // The diagonals kF = 2 * iF - d are odd when d is odd and even when d is even.\n  for (let iF = 0, kF = -d; iF <= nF; iF += 1, kF += 2) {\n    // To get first point of path segment, move one change in forward direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In first iteration when iF === 0 and kF === -d always insert.\n    // In last possible iteration when iF === d and kF === d always delete.\n    const insert = iF === 0 || (iF !== d && aIndexPrev1 < aIndexesF[iF]);\n    const aLastPrev = insert ? aIndexesF[iF] : aIndexPrev1;\n    const aFirst = insert\n      ? aLastPrev // vertical to insert from b\n      : aLastPrev + 1; // horizontal to delete from a\n\n    // To get last point of path segment, move along diagonal of common items.\n    const bFirst = bF + aFirst - kF;\n    const nCommonF = countCommonItemsF(\n      aFirst + 1,\n      aEnd,\n      bFirst + 1,\n      bEnd,\n      isCommon\n    );\n    const aLast = aFirst + nCommonF;\n    aIndexPrev1 = aIndexesF[iF];\n    aIndexesF[iF] = aLast;\n    if (kMinOverlapF <= kF && kF <= kMaxOverlapF) {\n      // Solve for iR of reverse path with (d - 1) changes in diagonal kF:\n      // kR = kF + baDeltaLength\n      // kR = (d - 1) - 2 * iR\n      const iR = (d - 1 - (kF + baDeltaLength)) / 2;\n\n      // If this forward path overlaps the reverse path in this diagonal,\n      // then this is the middle change of the index intervals.\n      if (iR <= iMaxR && aIndexesR[iR] - 1 <= aLast) {\n        // Unlike the Myers algorithm which finds only the middle “snake”\n        // this package can find two common subsequences per division.\n        // Last point of previous path segment is on an adjacent diagonal.\n        const bLastPrev = bF + aLastPrev - (insert ? kF + 1 : kF - 1);\n\n        // Because of invariant that intervals preceding the middle change\n        // cannot have common items at the end,\n        // move in reverse direction along a diagonal of common items.\n        const nCommonR = countCommonItemsR(\n          aStart,\n          aLastPrev,\n          bStart,\n          bLastPrev,\n          isCommon\n        );\n        const aIndexPrevFirst = aLastPrev - nCommonR;\n        const bIndexPrevFirst = bLastPrev - nCommonR;\n        const aEndPreceding = aIndexPrevFirst + 1;\n        const bEndPreceding = bIndexPrevFirst + 1;\n        division.nChangePreceding = d - 1;\n        if (d - 1 === aEndPreceding + bEndPreceding - aStart - bStart) {\n          // Optimization: number of preceding changes in forward direction\n          // is equal to number of items in preceding interval,\n          // therefore it cannot contain any common items.\n          division.aEndPreceding = aStart;\n          division.bEndPreceding = bStart;\n        } else {\n          division.aEndPreceding = aEndPreceding;\n          division.bEndPreceding = bEndPreceding;\n        }\n        division.nCommonPreceding = nCommonR;\n        if (nCommonR !== 0) {\n          division.aCommonPreceding = aEndPreceding;\n          division.bCommonPreceding = bEndPreceding;\n        }\n        division.nCommonFollowing = nCommonF;\n        if (nCommonF !== 0) {\n          division.aCommonFollowing = aFirst + 1;\n          division.bCommonFollowing = bFirst + 1;\n        }\n        const aStartFollowing = aLast + 1;\n        const bStartFollowing = bFirst + nCommonF + 1;\n        division.nChangeFollowing = d - 1;\n        if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n          // Optimization: number of changes in reverse direction\n          // is equal to number of items in following interval,\n          // therefore it cannot contain any common items.\n          division.aStartFollowing = aEnd;\n          division.bStartFollowing = bEnd;\n        } else {\n          division.aStartFollowing = aStartFollowing;\n          division.bStartFollowing = bStartFollowing;\n        }\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\n// A complete function to extend reverse paths from (d - 1) to d changes.\n// Return true if a path overlaps forward path of d changes in its diagonal.\nconst extendOverlappablePathsR = (\n  d,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  iMaxF,\n  aIndexesR,\n  iMaxR,\n  division // update prop values if return true\n) => {\n  const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart;\n  const baDeltaLength = bLength - aLength; // kR = kF + baDeltaLength\n\n  // Range of diagonals in which forward and reverse paths might overlap.\n  const kMinOverlapR = baDeltaLength - d; // -d <= kF\n  const kMaxOverlapR = baDeltaLength + d; // kF <= d\n\n  let aIndexPrev1 = NOT_YET_SET; // prev value of [iR - 1] in next iteration\n\n  // Optimization: skip diagonals in which paths cannot ever overlap.\n  const nR = d < iMaxR ? d : iMaxR;\n\n  // The diagonals kR = d - 2 * iR are odd when d is odd and even when d is even.\n  for (let iR = 0, kR = d; iR <= nR; iR += 1, kR -= 2) {\n    // To get first point of path segment, move one change in reverse direction\n    // from last point of previous path segment in an adjacent diagonal.\n    // In first iteration when iR === 0 and kR === d always insert.\n    // In last possible iteration when iR === d and kR === -d always delete.\n    const insert = iR === 0 || (iR !== d && aIndexesR[iR] < aIndexPrev1);\n    const aLastPrev = insert ? aIndexesR[iR] : aIndexPrev1;\n    const aFirst = insert\n      ? aLastPrev // vertical to insert from b\n      : aLastPrev - 1; // horizontal to delete from a\n\n    // To get last point of path segment, move along diagonal of common items.\n    const bFirst = bR + aFirst - kR;\n    const nCommonR = countCommonItemsR(\n      aStart,\n      aFirst - 1,\n      bStart,\n      bFirst - 1,\n      isCommon\n    );\n    const aLast = aFirst - nCommonR;\n    aIndexPrev1 = aIndexesR[iR];\n    aIndexesR[iR] = aLast;\n    if (kMinOverlapR <= kR && kR <= kMaxOverlapR) {\n      // Solve for iF of forward path with d changes in diagonal kR:\n      // kF = kR - baDeltaLength\n      // kF = 2 * iF - d\n      const iF = (d + (kR - baDeltaLength)) / 2;\n\n      // If this reverse path overlaps the forward path in this diagonal,\n      // then this is a middle change of the index intervals.\n      if (iF <= iMaxF && aLast - 1 <= aIndexesF[iF]) {\n        const bLast = bFirst - nCommonR;\n        division.nChangePreceding = d;\n        if (d === aLast + bLast - aStart - bStart) {\n          // Optimization: number of changes in reverse direction\n          // is equal to number of items in preceding interval,\n          // therefore it cannot contain any common items.\n          division.aEndPreceding = aStart;\n          division.bEndPreceding = bStart;\n        } else {\n          division.aEndPreceding = aLast;\n          division.bEndPreceding = bLast;\n        }\n        division.nCommonPreceding = nCommonR;\n        if (nCommonR !== 0) {\n          // The last point of reverse path segment is start of common subsequence.\n          division.aCommonPreceding = aLast;\n          division.bCommonPreceding = bLast;\n        }\n        division.nChangeFollowing = d - 1;\n        if (d === 1) {\n          // There is no previous path segment.\n          division.nCommonFollowing = 0;\n          division.aStartFollowing = aEnd;\n          division.bStartFollowing = bEnd;\n        } else {\n          // Unlike the Myers algorithm which finds only the middle “snake”\n          // this package can find two common subsequences per division.\n          // Last point of previous path segment is on an adjacent diagonal.\n          const bLastPrev = bR + aLastPrev - (insert ? kR - 1 : kR + 1);\n\n          // Because of invariant that intervals following the middle change\n          // cannot have common items at the start,\n          // move in forward direction along a diagonal of common items.\n          const nCommonF = countCommonItemsF(\n            aLastPrev,\n            aEnd,\n            bLastPrev,\n            bEnd,\n            isCommon\n          );\n          division.nCommonFollowing = nCommonF;\n          if (nCommonF !== 0) {\n            // The last point of reverse path segment is start of common subsequence.\n            division.aCommonFollowing = aLastPrev;\n            division.bCommonFollowing = bLastPrev;\n          }\n          const aStartFollowing = aLastPrev + nCommonF; // aFirstPrev\n          const bStartFollowing = bLastPrev + nCommonF; // bFirstPrev\n\n          if (d - 1 === aEnd + bEnd - aStartFollowing - bStartFollowing) {\n            // Optimization: number of changes in forward direction\n            // is equal to number of items in following interval,\n            // therefore it cannot contain any common items.\n            division.aStartFollowing = aEnd;\n            division.bStartFollowing = bEnd;\n          } else {\n            division.aStartFollowing = aStartFollowing;\n            division.bStartFollowing = bStartFollowing;\n          }\n        }\n        return true;\n      }\n    }\n  }\n  return false;\n};\n\n// Given index intervals and input function to compare items at indexes,\n// divide at the middle change.\n//\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because this function will throw the “no overlap” error.\nconst divide = (\n  nChange,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  isCommon,\n  aIndexesF,\n  aIndexesR,\n  division // output\n) => {\n  const bF = bStart - aStart; // bIndex = bF + aIndex - kF\n  const bR = bEnd - aEnd; // bIndex = bR + aIndex - kR\n  const aLength = aEnd - aStart;\n  const bLength = bEnd - bStart;\n\n  // Because graph has square or portrait orientation,\n  // length difference is minimum number of items to insert from b.\n  // Corresponding forward and reverse diagonals in graph\n  // depend on length difference of the sequences:\n  // kF = kR - baDeltaLength\n  // kR = kF + baDeltaLength\n  const baDeltaLength = bLength - aLength;\n\n  // Optimization: max diagonal in graph intersects corner of shorter side.\n  let iMaxF = aLength;\n  let iMaxR = aLength;\n\n  // Initialize no changes yet in forward or reverse direction:\n  aIndexesF[0] = aStart - 1; // at open start of interval, outside closed start\n  aIndexesR[0] = aEnd; // at open end of interval\n\n  if (baDeltaLength % 2 === 0) {\n    // The number of changes in paths is 2 * d if length difference is even.\n    const dMin = (nChange || baDeltaLength) / 2;\n    const dMax = (aLength + bLength) / 2;\n    for (let d = 1; d <= dMax; d += 1) {\n      iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n      if (d < dMin) {\n        iMaxR = extendPathsR(d, aStart, bStart, bR, isCommon, aIndexesR, iMaxR);\n      } else if (\n        // If a reverse path overlaps a forward path in the same diagonal,\n        // return a division of the index intervals at the middle change.\n        extendOverlappablePathsR(\n          d,\n          aStart,\n          aEnd,\n          bStart,\n          bEnd,\n          isCommon,\n          aIndexesF,\n          iMaxF,\n          aIndexesR,\n          iMaxR,\n          division\n        )\n      ) {\n        return;\n      }\n    }\n  } else {\n    // The number of changes in paths is 2 * d - 1 if length difference is odd.\n    const dMin = ((nChange || baDeltaLength) + 1) / 2;\n    const dMax = (aLength + bLength + 1) / 2;\n\n    // Unroll first half iteration so loop extends the relevant pairs of paths.\n    // Because of invariant that intervals have no common items at start or end,\n    // and limitation not to call divide with empty intervals,\n    // therefore it cannot be called if a forward path with one change\n    // would overlap a reverse path with no changes, even if dMin === 1.\n    let d = 1;\n    iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n    for (d += 1; d <= dMax; d += 1) {\n      iMaxR = extendPathsR(\n        d - 1,\n        aStart,\n        bStart,\n        bR,\n        isCommon,\n        aIndexesR,\n        iMaxR\n      );\n      if (d < dMin) {\n        iMaxF = extendPathsF(d, aEnd, bEnd, bF, isCommon, aIndexesF, iMaxF);\n      } else if (\n        // If a forward path overlaps a reverse path in the same diagonal,\n        // return a division of the index intervals at the middle change.\n        extendOverlappablePathsF(\n          d,\n          aStart,\n          aEnd,\n          bStart,\n          bEnd,\n          isCommon,\n          aIndexesF,\n          iMaxF,\n          aIndexesR,\n          iMaxR,\n          division\n        )\n      ) {\n        return;\n      }\n    }\n  }\n\n  /* istanbul ignore next */\n  throw new Error(\n    `${pkg}: no overlap aStart=${aStart} aEnd=${aEnd} bStart=${bStart} bEnd=${bEnd}`\n  );\n};\n\n// Given index intervals and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence. Divide and conquer with only linear space.\n//\n// The index intervals are half open [start, end) like array slice method.\n// DO NOT CALL if start === end, because interval cannot contain common items\n// and because divide function will throw the “no overlap” error.\nconst findSubsequences = (\n  nChange,\n  aStart,\n  aEnd,\n  bStart,\n  bEnd,\n  transposed,\n  callbacks,\n  aIndexesF,\n  aIndexesR,\n  division // temporary memory, not input nor output\n) => {\n  if (bEnd - bStart < aEnd - aStart) {\n    // Transpose graph so it has portrait instead of landscape orientation.\n    // Always compare shorter to longer sequence for consistency and optimization.\n    transposed = !transposed;\n    if (transposed && callbacks.length === 1) {\n      // Lazily wrap callback functions to swap args if graph is transposed.\n      const {foundSubsequence, isCommon} = callbacks[0];\n      callbacks[1] = {\n        foundSubsequence: (nCommon, bCommon, aCommon) => {\n          foundSubsequence(nCommon, aCommon, bCommon);\n        },\n        isCommon: (bIndex, aIndex) => isCommon(aIndex, bIndex)\n      };\n    }\n    const tStart = aStart;\n    const tEnd = aEnd;\n    aStart = bStart;\n    aEnd = bEnd;\n    bStart = tStart;\n    bEnd = tEnd;\n  }\n  const {foundSubsequence, isCommon} = callbacks[transposed ? 1 : 0];\n\n  // Divide the index intervals at the middle change.\n  divide(\n    nChange,\n    aStart,\n    aEnd,\n    bStart,\n    bEnd,\n    isCommon,\n    aIndexesF,\n    aIndexesR,\n    division\n  );\n  const {\n    nChangePreceding,\n    aEndPreceding,\n    bEndPreceding,\n    nCommonPreceding,\n    aCommonPreceding,\n    bCommonPreceding,\n    nCommonFollowing,\n    aCommonFollowing,\n    bCommonFollowing,\n    nChangeFollowing,\n    aStartFollowing,\n    bStartFollowing\n  } = division;\n\n  // Unless either index interval is empty, they might contain common items.\n  if (aStart < aEndPreceding && bStart < bEndPreceding) {\n    // Recursely find and return common subsequences preceding the division.\n    findSubsequences(\n      nChangePreceding,\n      aStart,\n      aEndPreceding,\n      bStart,\n      bEndPreceding,\n      transposed,\n      callbacks,\n      aIndexesF,\n      aIndexesR,\n      division\n    );\n  }\n\n  // Return common subsequences that are adjacent to the middle change.\n  if (nCommonPreceding !== 0) {\n    foundSubsequence(nCommonPreceding, aCommonPreceding, bCommonPreceding);\n  }\n  if (nCommonFollowing !== 0) {\n    foundSubsequence(nCommonFollowing, aCommonFollowing, bCommonFollowing);\n  }\n\n  // Unless either index interval is empty, they might contain common items.\n  if (aStartFollowing < aEnd && bStartFollowing < bEnd) {\n    // Recursely find and return common subsequences following the division.\n    findSubsequences(\n      nChangeFollowing,\n      aStartFollowing,\n      aEnd,\n      bStartFollowing,\n      bEnd,\n      transposed,\n      callbacks,\n      aIndexesF,\n      aIndexesR,\n      division\n    );\n  }\n};\nconst validateLength = (name, arg) => {\n  if (typeof arg !== 'number') {\n    throw new TypeError(`${pkg}: ${name} typeof ${typeof arg} is not a number`);\n  }\n  if (!Number.isSafeInteger(arg)) {\n    throw new RangeError(`${pkg}: ${name} value ${arg} is not a safe integer`);\n  }\n  if (arg < 0) {\n    throw new RangeError(`${pkg}: ${name} value ${arg} is a negative integer`);\n  }\n};\nconst validateCallback = (name, arg) => {\n  const type = typeof arg;\n  if (type !== 'function') {\n    throw new TypeError(`${pkg}: ${name} typeof ${type} is not a function`);\n  }\n};\n\n// Compare items in two sequences to find a longest common subsequence.\n// Given lengths of sequences and input function to compare items at indexes,\n// return by output function the number of adjacent items and starting indexes\n// of each common subsequence.\nfunction diffSequence(aLength, bLength, isCommon, foundSubsequence) {\n  validateLength('aLength', aLength);\n  validateLength('bLength', bLength);\n  validateCallback('isCommon', isCommon);\n  validateCallback('foundSubsequence', foundSubsequence);\n\n  // Count common items from the start in the forward direction.\n  const nCommonF = countCommonItemsF(0, aLength, 0, bLength, isCommon);\n  if (nCommonF !== 0) {\n    foundSubsequence(nCommonF, 0, 0);\n  }\n\n  // Unless both sequences consist of common items only,\n  // find common items in the half-trimmed index intervals.\n  if (aLength !== nCommonF || bLength !== nCommonF) {\n    // Invariant: intervals do not have common items at the start.\n    // The start of an index interval is closed like array slice method.\n    const aStart = nCommonF;\n    const bStart = nCommonF;\n\n    // Count common items from the end in the reverse direction.\n    const nCommonR = countCommonItemsR(\n      aStart,\n      aLength - 1,\n      bStart,\n      bLength - 1,\n      isCommon\n    );\n\n    // Invariant: intervals do not have common items at the end.\n    // The end of an index interval is open like array slice method.\n    const aEnd = aLength - nCommonR;\n    const bEnd = bLength - nCommonR;\n\n    // Unless one sequence consists of common items only,\n    // therefore the other trimmed index interval consists of changes only,\n    // find common items in the trimmed index intervals.\n    const nCommonFR = nCommonF + nCommonR;\n    if (aLength !== nCommonFR && bLength !== nCommonFR) {\n      const nChange = 0; // number of change items is not yet known\n      const transposed = false; // call the original unwrapped functions\n      const callbacks = [\n        {\n          foundSubsequence,\n          isCommon\n        }\n      ];\n\n      // Indexes in sequence a of last points in furthest reaching paths\n      // from outside the start at top left in the forward direction:\n      const aIndexesF = [NOT_YET_SET];\n      // from the end at bottom right in the reverse direction:\n      const aIndexesR = [NOT_YET_SET];\n\n      // Initialize one object as output of all calls to divide function.\n      const division = {\n        aCommonFollowing: NOT_YET_SET,\n        aCommonPreceding: NOT_YET_SET,\n        aEndPreceding: NOT_YET_SET,\n        aStartFollowing: NOT_YET_SET,\n        bCommonFollowing: NOT_YET_SET,\n        bCommonPreceding: NOT_YET_SET,\n        bEndPreceding: NOT_YET_SET,\n        bStartFollowing: NOT_YET_SET,\n        nChangeFollowing: NOT_YET_SET,\n        nChangePreceding: NOT_YET_SET,\n        nCommonFollowing: NOT_YET_SET,\n        nCommonPreceding: NOT_YET_SET\n      };\n\n      // Find and return common subsequences in the trimmed index intervals.\n      findSubsequences(\n        nChange,\n        aStart,\n        aEnd,\n        bStart,\n        bEnd,\n        transposed,\n        callbacks,\n        aIndexesF,\n        aIndexesR,\n        division\n      );\n    }\n    if (nCommonR !== 0) {\n      foundSubsequence(nCommonR, aEnd, bEnd);\n    }\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.joinAlignedDiffsNoExpand = exports.joinAlignedDiffsExpand = void 0;\nvar _cleanupSemantic = require('./cleanupSemantic');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst formatTrailingSpaces = (line, trailingSpaceFormatter) =>\n  line.replace(/\\s+$/, match => trailingSpaceFormatter(match));\nconst printDiffLine = (\n  line,\n  isFirstOrLast,\n  color,\n  indicator,\n  trailingSpaceFormatter,\n  emptyFirstOrLastLinePlaceholder\n) =>\n  line.length !== 0\n    ? color(\n        `${indicator} ${formatTrailingSpaces(line, trailingSpaceFormatter)}`\n      )\n    : indicator !== ' '\n    ? color(indicator)\n    : isFirstOrLast && emptyFirstOrLastLinePlaceholder.length !== 0\n    ? color(`${indicator} ${emptyFirstOrLastLinePlaceholder}`)\n    : '';\nconst printDeleteLine = (\n  line,\n  isFirstOrLast,\n  {\n    aColor,\n    aIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    aColor,\n    aIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\nconst printInsertLine = (\n  line,\n  isFirstOrLast,\n  {\n    bColor,\n    bIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    bColor,\n    bIndicator,\n    changeLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\nconst printCommonLine = (\n  line,\n  isFirstOrLast,\n  {\n    commonColor,\n    commonIndicator,\n    commonLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  }\n) =>\n  printDiffLine(\n    line,\n    isFirstOrLast,\n    commonColor,\n    commonIndicator,\n    commonLineTrailingSpaceColor,\n    emptyFirstOrLastLinePlaceholder\n  );\n\n// In GNU diff format, indexes are one-based instead of zero-based.\nconst createPatchMark = (aStart, aEnd, bStart, bEnd, {patchColor}) =>\n  patchColor(\n    `@@ -${aStart + 1},${aEnd - aStart} +${bStart + 1},${bEnd - bStart} @@`\n  );\n\n// jest --no-expand\n//\n// Given array of aligned strings with inverse highlight formatting,\n// return joined lines with diff formatting (and patch marks, if needed).\nconst joinAlignedDiffsNoExpand = (diffs, options) => {\n  const iLength = diffs.length;\n  const nContextLines = options.contextLines;\n  const nContextLines2 = nContextLines + nContextLines;\n\n  // First pass: count output lines and see if it has patches.\n  let jLength = iLength;\n  let hasExcessAtStartOrEnd = false;\n  let nExcessesBetweenChanges = 0;\n  let i = 0;\n  while (i !== iLength) {\n    const iStart = i;\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n    if (iStart !== i) {\n      if (iStart === 0) {\n        // at start\n        if (i > nContextLines) {\n          jLength -= i - nContextLines; // subtract excess common lines\n          hasExcessAtStartOrEnd = true;\n        }\n      } else if (i === iLength) {\n        // at end\n        const n = i - iStart;\n        if (n > nContextLines) {\n          jLength -= n - nContextLines; // subtract excess common lines\n          hasExcessAtStartOrEnd = true;\n        }\n      } else {\n        // between changes\n        const n = i - iStart;\n        if (n > nContextLines2) {\n          jLength -= n - nContextLines2; // subtract excess common lines\n          nExcessesBetweenChanges += 1;\n        }\n      }\n    }\n    while (i !== iLength && diffs[i][0] !== _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n  }\n  const hasPatch = nExcessesBetweenChanges !== 0 || hasExcessAtStartOrEnd;\n  if (nExcessesBetweenChanges !== 0) {\n    jLength += nExcessesBetweenChanges + 1; // add patch lines\n  } else if (hasExcessAtStartOrEnd) {\n    jLength += 1; // add patch line\n  }\n\n  const jLast = jLength - 1;\n  const lines = [];\n  let jPatchMark = 0; // index of placeholder line for current patch mark\n  if (hasPatch) {\n    lines.push(''); // placeholder line for first patch mark\n  }\n\n  // Indexes of expected or received lines in current patch:\n  let aStart = 0;\n  let bStart = 0;\n  let aEnd = 0;\n  let bEnd = 0;\n  const pushCommonLine = line => {\n    const j = lines.length;\n    lines.push(printCommonLine(line, j === 0 || j === jLast, options));\n    aEnd += 1;\n    bEnd += 1;\n  };\n  const pushDeleteLine = line => {\n    const j = lines.length;\n    lines.push(printDeleteLine(line, j === 0 || j === jLast, options));\n    aEnd += 1;\n  };\n  const pushInsertLine = line => {\n    const j = lines.length;\n    lines.push(printInsertLine(line, j === 0 || j === jLast, options));\n    bEnd += 1;\n  };\n\n  // Second pass: push lines with diff formatting (and patch marks, if needed).\n  i = 0;\n  while (i !== iLength) {\n    let iStart = i;\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_EQUAL) {\n      i += 1;\n    }\n    if (iStart !== i) {\n      if (iStart === 0) {\n        // at beginning\n        if (i > nContextLines) {\n          iStart = i - nContextLines;\n          aStart = iStart;\n          bStart = iStart;\n          aEnd = aStart;\n          bEnd = bStart;\n        }\n        for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n          pushCommonLine(diffs[iCommon][1]);\n        }\n      } else if (i === iLength) {\n        // at end\n        const iEnd = i - iStart > nContextLines ? iStart + nContextLines : i;\n        for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n          pushCommonLine(diffs[iCommon][1]);\n        }\n      } else {\n        // between changes\n        const nCommon = i - iStart;\n        if (nCommon > nContextLines2) {\n          const iEnd = iStart + nContextLines;\n          for (let iCommon = iStart; iCommon !== iEnd; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n          lines[jPatchMark] = createPatchMark(\n            aStart,\n            aEnd,\n            bStart,\n            bEnd,\n            options\n          );\n          jPatchMark = lines.length;\n          lines.push(''); // placeholder line for next patch mark\n\n          const nOmit = nCommon - nContextLines2;\n          aStart = aEnd + nOmit;\n          bStart = bEnd + nOmit;\n          aEnd = aStart;\n          bEnd = bStart;\n          for (let iCommon = i - nContextLines; iCommon !== i; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n        } else {\n          for (let iCommon = iStart; iCommon !== i; iCommon += 1) {\n            pushCommonLine(diffs[iCommon][1]);\n          }\n        }\n      }\n    }\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_DELETE) {\n      pushDeleteLine(diffs[i][1]);\n      i += 1;\n    }\n    while (i !== iLength && diffs[i][0] === _cleanupSemantic.DIFF_INSERT) {\n      pushInsertLine(diffs[i][1]);\n      i += 1;\n    }\n  }\n  if (hasPatch) {\n    lines[jPatchMark] = createPatchMark(aStart, aEnd, bStart, bEnd, options);\n  }\n  return lines.join('\\n');\n};\n\n// jest --expand\n//\n// Given array of aligned strings with inverse highlight formatting,\n// return joined lines with diff formatting.\nexports.joinAlignedDiffsNoExpand = joinAlignedDiffsNoExpand;\nconst joinAlignedDiffsExpand = (diffs, options) =>\n  diffs\n    .map((diff, i, diffs) => {\n      const line = diff[1];\n      const isFirstOrLast = i === 0 || i === diffs.length - 1;\n      switch (diff[0]) {\n        case _cleanupSemantic.DIFF_DELETE:\n          return printDeleteLine(line, isFirstOrLast, options);\n        case _cleanupSemantic.DIFF_INSERT:\n          return printInsertLine(line, isFirstOrLast, options);\n        default:\n          return printCommonLine(line, isFirstOrLast, options);\n      }\n    })\n    .join('\\n');\nexports.joinAlignedDiffsExpand = joinAlignedDiffsExpand;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.normalizeDiffOptions = exports.noColor = void 0;\nvar _chalk = _interopRequireDefault(require('chalk'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst noColor = string => string;\nexports.noColor = noColor;\nconst DIFF_CONTEXT_DEFAULT = 5;\nconst OPTIONS_DEFAULT = {\n  aAnnotation: 'Expected',\n  aColor: _chalk.default.green,\n  aIndicator: '-',\n  bAnnotation: 'Received',\n  bColor: _chalk.default.red,\n  bIndicator: '+',\n  changeColor: _chalk.default.inverse,\n  changeLineTrailingSpaceColor: noColor,\n  commonColor: _chalk.default.dim,\n  commonIndicator: ' ',\n  commonLineTrailingSpaceColor: noColor,\n  compareKeys: undefined,\n  contextLines: DIFF_CONTEXT_DEFAULT,\n  emptyFirstOrLastLinePlaceholder: '',\n  expand: true,\n  includeChangeCounts: false,\n  omitAnnotationLines: false,\n  patchColor: _chalk.default.yellow\n};\nconst getCompareKeys = compareKeys =>\n  compareKeys && typeof compareKeys === 'function'\n    ? compareKeys\n    : OPTIONS_DEFAULT.compareKeys;\nconst getContextLines = contextLines =>\n  typeof contextLines === 'number' &&\n  Number.isSafeInteger(contextLines) &&\n  contextLines >= 0\n    ? contextLines\n    : DIFF_CONTEXT_DEFAULT;\n\n// Pure function returns options with all properties.\nconst normalizeDiffOptions = (options = {}) => ({\n  ...OPTIONS_DEFAULT,\n  ...options,\n  compareKeys: getCompareKeys(options.compareKeys),\n  contextLines: getContextLines(options.contextLines)\n});\nexports.normalizeDiffOptions = normalizeDiffOptions;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printDiffLines =\n  exports.diffLinesUnified2 =\n  exports.diffLinesUnified =\n  exports.diffLinesRaw =\n    void 0;\nvar _diffSequences = _interopRequireDefault(require('diff-sequences'));\nvar _cleanupSemantic = require('./cleanupSemantic');\nvar _joinAlignedDiffs = require('./joinAlignedDiffs');\nvar _normalizeDiffOptions = require('./normalizeDiffOptions');\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst isEmptyString = lines => lines.length === 1 && lines[0].length === 0;\nconst countChanges = diffs => {\n  let a = 0;\n  let b = 0;\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        a += 1;\n        break;\n      case _cleanupSemantic.DIFF_INSERT:\n        b += 1;\n        break;\n    }\n  });\n  return {\n    a,\n    b\n  };\n};\nconst printAnnotation = (\n  {\n    aAnnotation,\n    aColor,\n    aIndicator,\n    bAnnotation,\n    bColor,\n    bIndicator,\n    includeChangeCounts,\n    omitAnnotationLines\n  },\n  changeCounts\n) => {\n  if (omitAnnotationLines) {\n    return '';\n  }\n  let aRest = '';\n  let bRest = '';\n  if (includeChangeCounts) {\n    const aCount = String(changeCounts.a);\n    const bCount = String(changeCounts.b);\n\n    // Padding right aligns the ends of the annotations.\n    const baAnnotationLengthDiff = bAnnotation.length - aAnnotation.length;\n    const aAnnotationPadding = ' '.repeat(Math.max(0, baAnnotationLengthDiff));\n    const bAnnotationPadding = ' '.repeat(Math.max(0, -baAnnotationLengthDiff));\n\n    // Padding left aligns the ends of the counts.\n    const baCountLengthDiff = bCount.length - aCount.length;\n    const aCountPadding = ' '.repeat(Math.max(0, baCountLengthDiff));\n    const bCountPadding = ' '.repeat(Math.max(0, -baCountLengthDiff));\n    aRest = `${aAnnotationPadding}  ${aIndicator} ${aCountPadding}${aCount}`;\n    bRest = `${bAnnotationPadding}  ${bIndicator} ${bCountPadding}${bCount}`;\n  }\n  const a = `${aIndicator} ${aAnnotation}${aRest}`;\n  const b = `${bIndicator} ${bAnnotation}${bRest}`;\n  return `${aColor(a)}\\n${bColor(b)}\\n\\n`;\n};\nconst printDiffLines = (diffs, options) =>\n  printAnnotation(options, countChanges(diffs)) +\n  (options.expand\n    ? (0, _joinAlignedDiffs.joinAlignedDiffsExpand)(diffs, options)\n    : (0, _joinAlignedDiffs.joinAlignedDiffsNoExpand)(diffs, options));\n\n// Compare two arrays of strings line-by-line. Format as comparison lines.\nexports.printDiffLines = printDiffLines;\nconst diffLinesUnified = (aLines, bLines, options) =>\n  printDiffLines(\n    diffLinesRaw(\n      isEmptyString(aLines) ? [] : aLines,\n      isEmptyString(bLines) ? [] : bLines\n    ),\n    (0, _normalizeDiffOptions.normalizeDiffOptions)(options)\n  );\n\n// Given two pairs of arrays of strings:\n// Compare the pair of comparison arrays line-by-line.\n// Format the corresponding lines in the pair of displayable arrays.\nexports.diffLinesUnified = diffLinesUnified;\nconst diffLinesUnified2 = (\n  aLinesDisplay,\n  bLinesDisplay,\n  aLinesCompare,\n  bLinesCompare,\n  options\n) => {\n  if (isEmptyString(aLinesDisplay) && isEmptyString(aLinesCompare)) {\n    aLinesDisplay = [];\n    aLinesCompare = [];\n  }\n  if (isEmptyString(bLinesDisplay) && isEmptyString(bLinesCompare)) {\n    bLinesDisplay = [];\n    bLinesCompare = [];\n  }\n  if (\n    aLinesDisplay.length !== aLinesCompare.length ||\n    bLinesDisplay.length !== bLinesCompare.length\n  ) {\n    // Fall back to diff of display lines.\n    return diffLinesUnified(aLinesDisplay, bLinesDisplay, options);\n  }\n  const diffs = diffLinesRaw(aLinesCompare, bLinesCompare);\n\n  // Replace comparison lines with displayable lines.\n  let aIndex = 0;\n  let bIndex = 0;\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        diff[1] = aLinesDisplay[aIndex];\n        aIndex += 1;\n        break;\n      case _cleanupSemantic.DIFF_INSERT:\n        diff[1] = bLinesDisplay[bIndex];\n        bIndex += 1;\n        break;\n      default:\n        diff[1] = bLinesDisplay[bIndex];\n        aIndex += 1;\n        bIndex += 1;\n    }\n  });\n  return printDiffLines(\n    diffs,\n    (0, _normalizeDiffOptions.normalizeDiffOptions)(options)\n  );\n};\n\n// Compare two arrays of strings line-by-line.\nexports.diffLinesUnified2 = diffLinesUnified2;\nconst diffLinesRaw = (aLines, bLines) => {\n  const aLength = aLines.length;\n  const bLength = bLines.length;\n  const isCommon = (aIndex, bIndex) => aLines[aIndex] === bLines[bIndex];\n  const diffs = [];\n  let aIndex = 0;\n  let bIndex = 0;\n  const foundSubsequence = (nCommon, aCommon, bCommon) => {\n    for (; aIndex !== aCommon; aIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, aLines[aIndex])\n      );\n    }\n    for (; bIndex !== bCommon; bIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, bLines[bIndex])\n      );\n    }\n    for (; nCommon !== 0; nCommon -= 1, aIndex += 1, bIndex += 1) {\n      diffs.push(\n        new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_EQUAL, bLines[bIndex])\n      );\n    }\n  };\n  (0, _diffSequences.default)(aLength, bLength, isCommon, foundSubsequence);\n\n  // After the last common subsequence, push remaining change items.\n  for (; aIndex !== aLength; aIndex += 1) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, aLines[aIndex])\n    );\n  }\n  for (; bIndex !== bLength; bIndex += 1) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, bLines[bIndex])\n    );\n  }\n  return diffs;\n};\nexports.diffLinesRaw = diffLinesRaw;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\nvar _diffSequences = _interopRequireDefault(require('diff-sequences'));\nvar _cleanupSemantic = require('./cleanupSemantic');\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst diffStrings = (a, b) => {\n  const isCommon = (aIndex, bIndex) => a[aIndex] === b[bIndex];\n  let aIndex = 0;\n  let bIndex = 0;\n  const diffs = [];\n  const foundSubsequence = (nCommon, aCommon, bCommon) => {\n    if (aIndex !== aCommon) {\n      diffs.push(\n        new _cleanupSemantic.Diff(\n          _cleanupSemantic.DIFF_DELETE,\n          a.slice(aIndex, aCommon)\n        )\n      );\n    }\n    if (bIndex !== bCommon) {\n      diffs.push(\n        new _cleanupSemantic.Diff(\n          _cleanupSemantic.DIFF_INSERT,\n          b.slice(bIndex, bCommon)\n        )\n      );\n    }\n    aIndex = aCommon + nCommon; // number of characters compared in a\n    bIndex = bCommon + nCommon; // number of characters compared in b\n    diffs.push(\n      new _cleanupSemantic.Diff(\n        _cleanupSemantic.DIFF_EQUAL,\n        b.slice(bCommon, bIndex)\n      )\n    );\n  };\n  (0, _diffSequences.default)(a.length, b.length, isCommon, foundSubsequence);\n\n  // After the last common subsequence, push remaining change items.\n  if (aIndex !== a.length) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_DELETE, a.slice(aIndex))\n    );\n  }\n  if (bIndex !== b.length) {\n    diffs.push(\n      new _cleanupSemantic.Diff(_cleanupSemantic.DIFF_INSERT, b.slice(bIndex))\n    );\n  }\n  return diffs;\n};\nvar _default = diffStrings;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\nvar _cleanupSemantic = require('./cleanupSemantic');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given change op and array of diffs, return concatenated string:\n// * include common strings\n// * include change strings which have argument op with changeColor\n// * exclude change strings which have opposite op\nconst concatenateRelevantDiffs = (op, diffs, changeColor) =>\n  diffs.reduce(\n    (reduced, diff) =>\n      reduced +\n      (diff[0] === _cleanupSemantic.DIFF_EQUAL\n        ? diff[1]\n        : diff[0] === op && diff[1].length !== 0 // empty if change is newline\n        ? changeColor(diff[1])\n        : ''),\n    ''\n  );\n\n// Encapsulate change lines until either a common newline or the end.\nclass ChangeBuffer {\n  op;\n  line; // incomplete line\n  lines; // complete lines\n  changeColor;\n  constructor(op, changeColor) {\n    this.op = op;\n    this.line = [];\n    this.lines = [];\n    this.changeColor = changeColor;\n  }\n  pushSubstring(substring) {\n    this.pushDiff(new _cleanupSemantic.Diff(this.op, substring));\n  }\n  pushLine() {\n    // Assume call only if line has at least one diff,\n    // therefore an empty line must have a diff which has an empty string.\n\n    // If line has multiple diffs, then assume it has a common diff,\n    // therefore change diffs have change color;\n    // otherwise then it has line color only.\n    this.lines.push(\n      this.line.length !== 1\n        ? new _cleanupSemantic.Diff(\n            this.op,\n            concatenateRelevantDiffs(this.op, this.line, this.changeColor)\n          )\n        : this.line[0][0] === this.op\n        ? this.line[0] // can use instance\n        : new _cleanupSemantic.Diff(this.op, this.line[0][1]) // was common diff\n    );\n\n    this.line.length = 0;\n  }\n  isLineEmpty() {\n    return this.line.length === 0;\n  }\n\n  // Minor input to buffer.\n  pushDiff(diff) {\n    this.line.push(diff);\n  }\n\n  // Main input to buffer.\n  align(diff) {\n    const string = diff[1];\n    if (string.includes('\\n')) {\n      const substrings = string.split('\\n');\n      const iLast = substrings.length - 1;\n      substrings.forEach((substring, i) => {\n        if (i < iLast) {\n          // The first substring completes the current change line.\n          // A middle substring is a change line.\n          this.pushSubstring(substring);\n          this.pushLine();\n        } else if (substring.length !== 0) {\n          // The last substring starts a change line, if it is not empty.\n          // Important: This non-empty condition also automatically omits\n          // the newline appended to the end of expected and received strings.\n          this.pushSubstring(substring);\n        }\n      });\n    } else {\n      // Append non-multiline string to current change line.\n      this.pushDiff(diff);\n    }\n  }\n\n  // Output from buffer.\n  moveLinesTo(lines) {\n    if (!this.isLineEmpty()) {\n      this.pushLine();\n    }\n    lines.push(...this.lines);\n    this.lines.length = 0;\n  }\n}\n\n// Encapsulate common and change lines.\nclass CommonBuffer {\n  deleteBuffer;\n  insertBuffer;\n  lines;\n  constructor(deleteBuffer, insertBuffer) {\n    this.deleteBuffer = deleteBuffer;\n    this.insertBuffer = insertBuffer;\n    this.lines = [];\n  }\n  pushDiffCommonLine(diff) {\n    this.lines.push(diff);\n  }\n  pushDiffChangeLines(diff) {\n    const isDiffEmpty = diff[1].length === 0;\n\n    // An empty diff string is redundant, unless a change line is empty.\n    if (!isDiffEmpty || this.deleteBuffer.isLineEmpty()) {\n      this.deleteBuffer.pushDiff(diff);\n    }\n    if (!isDiffEmpty || this.insertBuffer.isLineEmpty()) {\n      this.insertBuffer.pushDiff(diff);\n    }\n  }\n  flushChangeLines() {\n    this.deleteBuffer.moveLinesTo(this.lines);\n    this.insertBuffer.moveLinesTo(this.lines);\n  }\n\n  // Input to buffer.\n  align(diff) {\n    const op = diff[0];\n    const string = diff[1];\n    if (string.includes('\\n')) {\n      const substrings = string.split('\\n');\n      const iLast = substrings.length - 1;\n      substrings.forEach((substring, i) => {\n        if (i === 0) {\n          const subdiff = new _cleanupSemantic.Diff(op, substring);\n          if (\n            this.deleteBuffer.isLineEmpty() &&\n            this.insertBuffer.isLineEmpty()\n          ) {\n            // If both current change lines are empty,\n            // then the first substring is a common line.\n            this.flushChangeLines();\n            this.pushDiffCommonLine(subdiff);\n          } else {\n            // If either current change line is non-empty,\n            // then the first substring completes the change lines.\n            this.pushDiffChangeLines(subdiff);\n            this.flushChangeLines();\n          }\n        } else if (i < iLast) {\n          // A middle substring is a common line.\n          this.pushDiffCommonLine(new _cleanupSemantic.Diff(op, substring));\n        } else if (substring.length !== 0) {\n          // The last substring starts a change line, if it is not empty.\n          // Important: This non-empty condition also automatically omits\n          // the newline appended to the end of expected and received strings.\n          this.pushDiffChangeLines(new _cleanupSemantic.Diff(op, substring));\n        }\n      });\n    } else {\n      // Append non-multiline string to current change lines.\n      // Important: It cannot be at the end following empty change lines,\n      // because newline appended to the end of expected and received strings.\n      this.pushDiffChangeLines(diff);\n    }\n  }\n\n  // Output from buffer.\n  getLines() {\n    this.flushChangeLines();\n    return this.lines;\n  }\n}\n\n// Given diffs from expected and received strings,\n// return new array of diffs split or joined into lines.\n//\n// To correctly align a change line at the end, the algorithm:\n// * assumes that a newline was appended to the strings\n// * omits the last newline from the output array\n//\n// Assume the function is not called:\n// * if either expected or received is empty string\n// * if neither expected nor received is multiline string\nconst getAlignedDiffs = (diffs, changeColor) => {\n  const deleteBuffer = new ChangeBuffer(\n    _cleanupSemantic.DIFF_DELETE,\n    changeColor\n  );\n  const insertBuffer = new ChangeBuffer(\n    _cleanupSemantic.DIFF_INSERT,\n    changeColor\n  );\n  const commonBuffer = new CommonBuffer(deleteBuffer, insertBuffer);\n  diffs.forEach(diff => {\n    switch (diff[0]) {\n      case _cleanupSemantic.DIFF_DELETE:\n        deleteBuffer.align(diff);\n        break;\n      case _cleanupSemantic.DIFF_INSERT:\n        insertBuffer.align(diff);\n        break;\n      default:\n        commonBuffer.align(diff);\n    }\n  });\n  return commonBuffer.getLines();\n};\nvar _default = getAlignedDiffs;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.diffStringsUnified = exports.diffStringsRaw = void 0;\nvar _cleanupSemantic = require('./cleanupSemantic');\nvar _diffLines = require('./diffLines');\nvar _diffStrings = _interopRequireDefault(require('./diffStrings'));\nvar _getAlignedDiffs = _interopRequireDefault(require('./getAlignedDiffs'));\nvar _normalizeDiffOptions = require('./normalizeDiffOptions');\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst hasCommonDiff = (diffs, isMultiline) => {\n  if (isMultiline) {\n    // Important: Ignore common newline that was appended to multiline strings!\n    const iLast = diffs.length - 1;\n    return diffs.some(\n      (diff, i) =>\n        diff[0] === _cleanupSemantic.DIFF_EQUAL &&\n        (i !== iLast || diff[1] !== '\\n')\n    );\n  }\n  return diffs.some(diff => diff[0] === _cleanupSemantic.DIFF_EQUAL);\n};\n\n// Compare two strings character-by-character.\n// Format as comparison lines in which changed substrings have inverse colors.\nconst diffStringsUnified = (a, b, options) => {\n  if (a !== b && a.length !== 0 && b.length !== 0) {\n    const isMultiline = a.includes('\\n') || b.includes('\\n');\n\n    // getAlignedDiffs assumes that a newline was appended to the strings.\n    const diffs = diffStringsRaw(\n      isMultiline ? `${a}\\n` : a,\n      isMultiline ? `${b}\\n` : b,\n      true // cleanupSemantic\n    );\n\n    if (hasCommonDiff(diffs, isMultiline)) {\n      const optionsNormalized = (0, _normalizeDiffOptions.normalizeDiffOptions)(\n        options\n      );\n      const lines = (0, _getAlignedDiffs.default)(\n        diffs,\n        optionsNormalized.changeColor\n      );\n      return (0, _diffLines.printDiffLines)(lines, optionsNormalized);\n    }\n  }\n\n  // Fall back to line-by-line diff.\n  return (0, _diffLines.diffLinesUnified)(\n    a.split('\\n'),\n    b.split('\\n'),\n    options\n  );\n};\n\n// Compare two strings character-by-character.\n// Optionally clean up small common substrings, also known as chaff.\nexports.diffStringsUnified = diffStringsUnified;\nconst diffStringsRaw = (a, b, cleanup) => {\n  const diffs = (0, _diffStrings.default)(a, b);\n  if (cleanup) {\n    (0, _cleanupSemantic.cleanupSemantic)(diffs); // impure function\n  }\n\n  return diffs;\n};\nexports.diffStringsRaw = diffStringsRaw;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nObject.defineProperty(exports, 'DIFF_DELETE', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_DELETE;\n  }\n});\nObject.defineProperty(exports, 'DIFF_EQUAL', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_EQUAL;\n  }\n});\nObject.defineProperty(exports, 'DIFF_INSERT', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.DIFF_INSERT;\n  }\n});\nObject.defineProperty(exports, 'Diff', {\n  enumerable: true,\n  get: function () {\n    return _cleanupSemantic.Diff;\n  }\n});\nexports.diff = diff;\nObject.defineProperty(exports, 'diffLinesRaw', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesRaw;\n  }\n});\nObject.defineProperty(exports, 'diffLinesUnified', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesUnified;\n  }\n});\nObject.defineProperty(exports, 'diffLinesUnified2', {\n  enumerable: true,\n  get: function () {\n    return _diffLines.diffLinesUnified2;\n  }\n});\nObject.defineProperty(exports, 'diffStringsRaw', {\n  enumerable: true,\n  get: function () {\n    return _printDiffs.diffStringsRaw;\n  }\n});\nObject.defineProperty(exports, 'diffStringsUnified', {\n  enumerable: true,\n  get: function () {\n    return _printDiffs.diffStringsUnified;\n  }\n});\nvar _chalk = _interopRequireDefault(require('chalk'));\nvar _jestGetType = require('jest-get-type');\nvar _prettyFormat = require('pretty-format');\nvar _cleanupSemantic = require('./cleanupSemantic');\nvar _constants = require('./constants');\nvar _diffLines = require('./diffLines');\nvar _normalizeDiffOptions = require('./normalizeDiffOptions');\nvar _printDiffs = require('./printDiffs');\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst getCommonMessage = (message, options) => {\n  const {commonColor} = (0, _normalizeDiffOptions.normalizeDiffOptions)(\n    options\n  );\n  return commonColor(message);\n};\nconst {\n  AsymmetricMatcher,\n  DOMCollection,\n  DOMElement,\n  Immutable,\n  ReactElement,\n  ReactTestComponent\n} = _prettyFormat.plugins;\nconst PLUGINS = [\n  ReactTestComponent,\n  ReactElement,\n  DOMElement,\n  DOMCollection,\n  Immutable,\n  AsymmetricMatcher\n];\nconst FORMAT_OPTIONS = {\n  plugins: PLUGINS\n};\nconst FALLBACK_FORMAT_OPTIONS = {\n  callToJSON: false,\n  maxDepth: 10,\n  plugins: PLUGINS\n};\n\n// Generate a string that will highlight the difference between two values\n// with green and red. (similar to how github does code diffing)\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction diff(a, b, options) {\n  if (Object.is(a, b)) {\n    return getCommonMessage(_constants.NO_DIFF_MESSAGE, options);\n  }\n  const aType = (0, _jestGetType.getType)(a);\n  let expectedType = aType;\n  let omitDifference = false;\n  if (aType === 'object' && typeof a.asymmetricMatch === 'function') {\n    if (a.$$typeof !== Symbol.for('jest.asymmetricMatcher')) {\n      // Do not know expected type of user-defined asymmetric matcher.\n      return null;\n    }\n    if (typeof a.getExpectedType !== 'function') {\n      // For example, expect.anything() matches either null or undefined\n      return null;\n    }\n    expectedType = a.getExpectedType();\n    // Primitive types boolean and number omit difference below.\n    // For example, omit difference for expect.stringMatching(regexp)\n    omitDifference = expectedType === 'string';\n  }\n  if (expectedType !== (0, _jestGetType.getType)(b)) {\n    return (\n      '  Comparing two different types of values.' +\n      ` Expected ${_chalk.default.green(expectedType)} but ` +\n      `received ${_chalk.default.red((0, _jestGetType.getType)(b))}.`\n    );\n  }\n  if (omitDifference) {\n    return null;\n  }\n  switch (aType) {\n    case 'string':\n      return (0, _diffLines.diffLinesUnified)(\n        a.split('\\n'),\n        b.split('\\n'),\n        options\n      );\n    case 'boolean':\n    case 'number':\n      return comparePrimitive(a, b, options);\n    case 'map':\n      return compareObjects(sortMap(a), sortMap(b), options);\n    case 'set':\n      return compareObjects(sortSet(a), sortSet(b), options);\n    default:\n      return compareObjects(a, b, options);\n  }\n}\nfunction comparePrimitive(a, b, options) {\n  const aFormat = (0, _prettyFormat.format)(a, FORMAT_OPTIONS);\n  const bFormat = (0, _prettyFormat.format)(b, FORMAT_OPTIONS);\n  return aFormat === bFormat\n    ? getCommonMessage(_constants.NO_DIFF_MESSAGE, options)\n    : (0, _diffLines.diffLinesUnified)(\n        aFormat.split('\\n'),\n        bFormat.split('\\n'),\n        options\n      );\n}\nfunction sortMap(map) {\n  return new Map(Array.from(map.entries()).sort());\n}\nfunction sortSet(set) {\n  return new Set(Array.from(set.values()).sort());\n}\nfunction compareObjects(a, b, options) {\n  let difference;\n  let hasThrown = false;\n  try {\n    const formatOptions = getFormatOptions(FORMAT_OPTIONS, options);\n    difference = getObjectsDifference(a, b, formatOptions, options);\n  } catch {\n    hasThrown = true;\n  }\n  const noDiffMessage = getCommonMessage(_constants.NO_DIFF_MESSAGE, options);\n  // If the comparison yields no results, compare again but this time\n  // without calling `toJSON`. It's also possible that toJSON might throw.\n  if (difference === undefined || difference === noDiffMessage) {\n    const formatOptions = getFormatOptions(FALLBACK_FORMAT_OPTIONS, options);\n    difference = getObjectsDifference(a, b, formatOptions, options);\n    if (difference !== noDiffMessage && !hasThrown) {\n      difference = `${getCommonMessage(\n        _constants.SIMILAR_MESSAGE,\n        options\n      )}\\n\\n${difference}`;\n    }\n  }\n  return difference;\n}\nfunction getFormatOptions(formatOptions, options) {\n  const {compareKeys} = (0, _normalizeDiffOptions.normalizeDiffOptions)(\n    options\n  );\n  return {\n    ...formatOptions,\n    compareKeys\n  };\n}\nfunction getObjectsDifference(a, b, formatOptions, options) {\n  const formatOptionsZeroIndent = {\n    ...formatOptions,\n    indent: 0\n  };\n  const aCompare = (0, _prettyFormat.format)(a, formatOptionsZeroIndent);\n  const bCompare = (0, _prettyFormat.format)(b, formatOptionsZeroIndent);\n  if (aCompare === bCompare) {\n    return getCommonMessage(_constants.NO_DIFF_MESSAGE, options);\n  } else {\n    const aDisplay = (0, _prettyFormat.format)(a, formatOptions);\n    const bDisplay = (0, _prettyFormat.format)(b, formatOptions);\n    return (0, _diffLines.diffLinesUnified2)(\n      aDisplay.split('\\n'),\n      bDisplay.split('\\n'),\n      aCompare.split('\\n'),\n      bCompare.split('\\n'),\n      options\n    );\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\nvar _jestGetType = require('jest-get-type');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst supportTypes = ['map', 'array', 'object'];\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nclass Replaceable {\n  object;\n  type;\n  constructor(object) {\n    this.object = object;\n    this.type = (0, _jestGetType.getType)(object);\n    if (!supportTypes.includes(this.type)) {\n      throw new Error(`Type ${this.type} is not support in Replaceable!`);\n    }\n  }\n  static isReplaceable(obj1, obj2) {\n    const obj1Type = (0, _jestGetType.getType)(obj1);\n    const obj2Type = (0, _jestGetType.getType)(obj2);\n    return obj1Type === obj2Type && supportTypes.includes(obj1Type);\n  }\n  forEach(cb) {\n    if (this.type === 'object') {\n      const descriptors = Object.getOwnPropertyDescriptors(this.object);\n      [\n        ...Object.keys(descriptors),\n        ...Object.getOwnPropertySymbols(descriptors)\n      ]\n        //@ts-expect-error because typescript do not support symbol key in object\n        //https://github.com/microsoft/TypeScript/issues/1863\n        .filter(key => descriptors[key].enumerable)\n        .forEach(key => {\n          cb(this.object[key], key, this.object);\n        });\n    } else {\n      this.object.forEach(cb);\n    }\n  }\n  get(key) {\n    if (this.type === 'map') {\n      return this.object.get(key);\n    }\n    return this.object[key];\n  }\n  set(key, value) {\n    if (this.type === 'map') {\n      this.object.set(key, value);\n    } else {\n      this.object[key] = value;\n    }\n  }\n}\n/* eslint-enable */\nexports.default = Replaceable;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = deepCyclicCopyReplaceable;\nvar _prettyFormat = require('pretty-format');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst builtInObject = [\n  Array,\n  Date,\n  Float32Array,\n  Float64Array,\n  Int16Array,\n  Int32Array,\n  Int8Array,\n  Map,\n  Set,\n  RegExp,\n  Uint16Array,\n  Uint32Array,\n  Uint8Array,\n  Uint8ClampedArray\n];\nif (typeof Buffer !== 'undefined') {\n  builtInObject.push(Buffer);\n}\nconst isBuiltInObject = object => builtInObject.includes(object.constructor);\nconst isMap = value => value.constructor === Map;\nfunction deepCyclicCopyReplaceable(value, cycles = new WeakMap()) {\n  if (typeof value !== 'object' || value === null) {\n    return value;\n  } else if (cycles.has(value)) {\n    return cycles.get(value);\n  } else if (Array.isArray(value)) {\n    return deepCyclicCopyArray(value, cycles);\n  } else if (isMap(value)) {\n    return deepCyclicCopyMap(value, cycles);\n  } else if (isBuiltInObject(value)) {\n    return value;\n  } else if (_prettyFormat.plugins.DOMElement.test(value)) {\n    return value.cloneNode(true);\n  } else {\n    return deepCyclicCopyObject(value, cycles);\n  }\n}\nfunction deepCyclicCopyObject(object, cycles) {\n  const newObject = Object.create(Object.getPrototypeOf(object));\n  let descriptors = {};\n  let obj = object;\n  do {\n    descriptors = Object.assign(\n      {},\n      Object.getOwnPropertyDescriptors(obj),\n      descriptors\n    );\n  } while (\n    (obj = Object.getPrototypeOf(obj)) &&\n    obj !== Object.getPrototypeOf({})\n  );\n  cycles.set(object, newObject);\n  const newDescriptors = [\n    ...Object.keys(descriptors),\n    ...Object.getOwnPropertySymbols(descriptors)\n  ].reduce(\n    //@ts-expect-error because typescript do not support symbol key in object\n    //https://github.com/microsoft/TypeScript/issues/1863\n    (newDescriptors, key) => {\n      const enumerable = descriptors[key].enumerable;\n      newDescriptors[key] = {\n        configurable: true,\n        enumerable,\n        value: deepCyclicCopyReplaceable(\n          // this accesses the value or getter, depending. We just care about the value anyways, and this allows us to not mess with accessors\n          // it has the side effect of invoking the getter here though, rather than copying it over\n          object[key],\n          cycles\n        ),\n        writable: true\n      };\n      return newDescriptors;\n    },\n    {}\n  );\n  //@ts-expect-error because typescript do not support symbol key in object\n  //https://github.com/microsoft/TypeScript/issues/1863\n  return Object.defineProperties(newObject, newDescriptors);\n}\nfunction deepCyclicCopyArray(array, cycles) {\n  const newArray = new (Object.getPrototypeOf(array).constructor)(array.length);\n  const length = array.length;\n  cycles.set(array, newArray);\n  for (let i = 0; i < length; i++) {\n    newArray[i] = deepCyclicCopyReplaceable(array[i], cycles);\n  }\n  return newArray;\n}\nfunction deepCyclicCopyMap(map, cycles) {\n  const newMap = new Map();\n  cycles.set(map, newMap);\n  map.forEach((value, key) => {\n    newMap.set(key, deepCyclicCopyReplaceable(value, cycles));\n  });\n  return newMap;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printReceived =\n  exports.printExpected =\n  exports.printDiffOrStringify =\n  exports.pluralize =\n  exports.matcherHint =\n  exports.matcherErrorMessage =\n  exports.highlightTrailingWhitespace =\n  exports.getLabelPrinter =\n  exports.ensureNumbers =\n  exports.ensureNoExpected =\n  exports.ensureExpectedIsNumber =\n  exports.ensureExpectedIsNonNegativeInteger =\n  exports.ensureActualIsNumber =\n  exports.diff =\n  exports.SUGGEST_TO_CONTAIN_EQUAL =\n  exports.RECEIVED_COLOR =\n  exports.INVERTED_COLOR =\n  exports.EXPECTED_COLOR =\n  exports.DIM_COLOR =\n  exports.BOLD_WEIGHT =\n    void 0;\nexports.printWithType = printWithType;\nexports.replaceMatchedToAsymmetricMatcher = replaceMatchedToAsymmetricMatcher;\nexports.stringify = void 0;\nvar _chalk = _interopRequireDefault(require('chalk'));\nvar _jestDiff = require('jest-diff');\nvar _jestGetType = require('jest-get-type');\nvar _prettyFormat = require('pretty-format');\nvar _Replaceable = _interopRequireDefault(require('./Replaceable'));\nvar _deepCyclicCopyReplaceable = _interopRequireDefault(\n  require('./deepCyclicCopyReplaceable')\n);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst {\n  AsymmetricMatcher,\n  DOMCollection,\n  DOMElement,\n  Immutable,\n  ReactElement,\n  ReactTestComponent\n} = _prettyFormat.plugins;\nconst PLUGINS = [\n  ReactTestComponent,\n  ReactElement,\n  DOMElement,\n  DOMCollection,\n  Immutable,\n  AsymmetricMatcher\n];\n\n// subset of Chalk type\n\nconst EXPECTED_COLOR = _chalk.default.green;\nexports.EXPECTED_COLOR = EXPECTED_COLOR;\nconst RECEIVED_COLOR = _chalk.default.red;\nexports.RECEIVED_COLOR = RECEIVED_COLOR;\nconst INVERTED_COLOR = _chalk.default.inverse;\nexports.INVERTED_COLOR = INVERTED_COLOR;\nconst BOLD_WEIGHT = _chalk.default.bold;\nexports.BOLD_WEIGHT = BOLD_WEIGHT;\nconst DIM_COLOR = _chalk.default.dim;\nexports.DIM_COLOR = DIM_COLOR;\nconst MULTILINE_REGEXP = /\\n/;\nconst SPACE_SYMBOL = '\\u{00B7}'; // middle dot\n\nconst NUMBERS = [\n  'zero',\n  'one',\n  'two',\n  'three',\n  'four',\n  'five',\n  'six',\n  'seven',\n  'eight',\n  'nine',\n  'ten',\n  'eleven',\n  'twelve',\n  'thirteen'\n];\nconst SUGGEST_TO_CONTAIN_EQUAL = _chalk.default.dim(\n  'Looks like you wanted to test for object/array equality with the stricter `toContain` matcher. You probably need to use `toContainEqual` instead.'\n);\nexports.SUGGEST_TO_CONTAIN_EQUAL = SUGGEST_TO_CONTAIN_EQUAL;\nconst stringify = (object, maxDepth = 10, maxWidth = 10) => {\n  const MAX_LENGTH = 10000;\n  let result;\n  try {\n    result = (0, _prettyFormat.format)(object, {\n      maxDepth,\n      maxWidth,\n      min: true,\n      plugins: PLUGINS\n    });\n  } catch {\n    result = (0, _prettyFormat.format)(object, {\n      callToJSON: false,\n      maxDepth,\n      maxWidth,\n      min: true,\n      plugins: PLUGINS\n    });\n  }\n  if (result.length >= MAX_LENGTH && maxDepth > 1) {\n    return stringify(object, Math.floor(maxDepth / 2), maxWidth);\n  } else if (result.length >= MAX_LENGTH && maxWidth > 1) {\n    return stringify(object, maxDepth, Math.floor(maxWidth / 2));\n  } else {\n    return result;\n  }\n};\nexports.stringify = stringify;\nconst highlightTrailingWhitespace = text =>\n  text.replace(/\\s+$/gm, _chalk.default.inverse('$&'));\n\n// Instead of inverse highlight which now implies a change,\n// replace common spaces with middle dot at the end of any line.\nexports.highlightTrailingWhitespace = highlightTrailingWhitespace;\nconst replaceTrailingSpaces = text =>\n  text.replace(/\\s+$/gm, spaces => SPACE_SYMBOL.repeat(spaces.length));\nconst printReceived = object =>\n  RECEIVED_COLOR(replaceTrailingSpaces(stringify(object)));\nexports.printReceived = printReceived;\nconst printExpected = value =>\n  EXPECTED_COLOR(replaceTrailingSpaces(stringify(value)));\nexports.printExpected = printExpected;\nfunction printWithType(name, value, print) {\n  const type = (0, _jestGetType.getType)(value);\n  const hasType =\n    type !== 'null' && type !== 'undefined'\n      ? `${name} has type:  ${type}\\n`\n      : '';\n  const hasValue = `${name} has value: ${print(value)}`;\n  return hasType + hasValue;\n}\nconst ensureNoExpected = (expected, matcherName, options) => {\n  if (typeof expected !== 'undefined') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, '', options),\n        // Because expected is omitted in hint above,\n        // expected is black instead of green in message below.\n        'this matcher must not have an expected argument',\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n};\n\n/**\n * Ensures that `actual` is of type `number | bigint`\n */\nexports.ensureNoExpected = ensureNoExpected;\nconst ensureActualIsNumber = (actual, matcherName, options) => {\n  if (typeof actual !== 'number' && typeof actual !== 'bigint') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${RECEIVED_COLOR('received')} value must be a number or bigint`,\n        printWithType('Received', actual, printReceived)\n      )\n    );\n  }\n};\n\n/**\n * Ensures that `expected` is of type `number | bigint`\n */\nexports.ensureActualIsNumber = ensureActualIsNumber;\nconst ensureExpectedIsNumber = (expected, matcherName, options) => {\n  if (typeof expected !== 'number' && typeof expected !== 'bigint') {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${EXPECTED_COLOR('expected')} value must be a number or bigint`,\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n};\n\n/**\n * Ensures that `actual` & `expected` are of type `number | bigint`\n */\nexports.ensureExpectedIsNumber = ensureExpectedIsNumber;\nconst ensureNumbers = (actual, expected, matcherName, options) => {\n  ensureActualIsNumber(actual, matcherName, options);\n  ensureExpectedIsNumber(expected, matcherName, options);\n};\nexports.ensureNumbers = ensureNumbers;\nconst ensureExpectedIsNonNegativeInteger = (expected, matcherName, options) => {\n  if (\n    typeof expected !== 'number' ||\n    !Number.isSafeInteger(expected) ||\n    expected < 0\n  ) {\n    // Prepend maybe not only for backward compatibility.\n    const matcherString = (options ? '' : '[.not]') + matcherName;\n    throw new Error(\n      matcherErrorMessage(\n        matcherHint(matcherString, undefined, undefined, options),\n        `${EXPECTED_COLOR('expected')} value must be a non-negative integer`,\n        printWithType('Expected', expected, printExpected)\n      )\n    );\n  }\n};\n\n// Given array of diffs, return concatenated string:\n// * include common substrings\n// * exclude change substrings which have opposite op\n// * include change substrings which have argument op\n//   with inverse highlight only if there is a common substring\nexports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger;\nconst getCommonAndChangedSubstrings = (diffs, op, hasCommonDiff) =>\n  diffs.reduce(\n    (reduced, diff) =>\n      reduced +\n      (diff[0] === _jestDiff.DIFF_EQUAL\n        ? diff[1]\n        : diff[0] !== op\n        ? ''\n        : hasCommonDiff\n        ? INVERTED_COLOR(diff[1])\n        : diff[1]),\n    ''\n  );\nconst isLineDiffable = (expected, received) => {\n  const expectedType = (0, _jestGetType.getType)(expected);\n  const receivedType = (0, _jestGetType.getType)(received);\n  if (expectedType !== receivedType) {\n    return false;\n  }\n  if ((0, _jestGetType.isPrimitive)(expected)) {\n    // Print generic line diff for strings only:\n    // * if neither string is empty\n    // * if either string has more than one line\n    return (\n      typeof expected === 'string' &&\n      typeof received === 'string' &&\n      expected.length !== 0 &&\n      received.length !== 0 &&\n      (MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received))\n    );\n  }\n  if (\n    expectedType === 'date' ||\n    expectedType === 'function' ||\n    expectedType === 'regexp'\n  ) {\n    return false;\n  }\n  if (expected instanceof Error && received instanceof Error) {\n    return false;\n  }\n  if (\n    receivedType === 'object' &&\n    typeof received.asymmetricMatch === 'function'\n  ) {\n    return false;\n  }\n  return true;\n};\nconst MAX_DIFF_STRING_LENGTH = 20000;\nconst printDiffOrStringify = (\n  expected,\n  received,\n  expectedLabel,\n  receivedLabel,\n  expand // CLI options: true if `--expand` or false if `--no-expand`\n) => {\n  if (\n    typeof expected === 'string' &&\n    typeof received === 'string' &&\n    expected.length !== 0 &&\n    received.length !== 0 &&\n    expected.length <= MAX_DIFF_STRING_LENGTH &&\n    received.length <= MAX_DIFF_STRING_LENGTH &&\n    expected !== received\n  ) {\n    if (expected.includes('\\n') || received.includes('\\n')) {\n      return (0, _jestDiff.diffStringsUnified)(expected, received, {\n        aAnnotation: expectedLabel,\n        bAnnotation: receivedLabel,\n        changeLineTrailingSpaceColor: _chalk.default.bgYellow,\n        commonLineTrailingSpaceColor: _chalk.default.bgYellow,\n        emptyFirstOrLastLinePlaceholder: '↵',\n        // U+21B5\n        expand,\n        includeChangeCounts: true\n      });\n    }\n    const diffs = (0, _jestDiff.diffStringsRaw)(expected, received, true);\n    const hasCommonDiff = diffs.some(diff => diff[0] === _jestDiff.DIFF_EQUAL);\n    const printLabel = getLabelPrinter(expectedLabel, receivedLabel);\n    const expectedLine =\n      printLabel(expectedLabel) +\n      printExpected(\n        getCommonAndChangedSubstrings(\n          diffs,\n          _jestDiff.DIFF_DELETE,\n          hasCommonDiff\n        )\n      );\n    const receivedLine =\n      printLabel(receivedLabel) +\n      printReceived(\n        getCommonAndChangedSubstrings(\n          diffs,\n          _jestDiff.DIFF_INSERT,\n          hasCommonDiff\n        )\n      );\n    return `${expectedLine}\\n${receivedLine}`;\n  }\n  if (isLineDiffable(expected, received)) {\n    const {replacedExpected, replacedReceived} =\n      replaceMatchedToAsymmetricMatcher(expected, received, [], []);\n    const difference = (0, _jestDiff.diff)(replacedExpected, replacedReceived, {\n      aAnnotation: expectedLabel,\n      bAnnotation: receivedLabel,\n      expand,\n      includeChangeCounts: true\n    });\n    if (\n      typeof difference === 'string' &&\n      difference.includes(`- ${expectedLabel}`) &&\n      difference.includes(`+ ${receivedLabel}`)\n    ) {\n      return difference;\n    }\n  }\n  const printLabel = getLabelPrinter(expectedLabel, receivedLabel);\n  const expectedLine = printLabel(expectedLabel) + printExpected(expected);\n  const receivedLine =\n    printLabel(receivedLabel) +\n    (stringify(expected) === stringify(received)\n      ? 'serializes to the same string'\n      : printReceived(received));\n  return `${expectedLine}\\n${receivedLine}`;\n};\n\n// Sometimes, e.g. when comparing two numbers, the output from jest-diff\n// does not contain more information than the `Expected:` / `Received:` already gives.\n// In those cases, we do not print a diff to make the output shorter and not redundant.\nexports.printDiffOrStringify = printDiffOrStringify;\nconst shouldPrintDiff = (actual, expected) => {\n  if (typeof actual === 'number' && typeof expected === 'number') {\n    return false;\n  }\n  if (typeof actual === 'bigint' && typeof expected === 'bigint') {\n    return false;\n  }\n  if (typeof actual === 'boolean' && typeof expected === 'boolean') {\n    return false;\n  }\n  return true;\n};\nfunction replaceMatchedToAsymmetricMatcher(\n  replacedExpected,\n  replacedReceived,\n  expectedCycles,\n  receivedCycles\n) {\n  return _replaceMatchedToAsymmetricMatcher(\n    (0, _deepCyclicCopyReplaceable.default)(replacedExpected),\n    (0, _deepCyclicCopyReplaceable.default)(replacedReceived),\n    expectedCycles,\n    receivedCycles\n  );\n}\nfunction _replaceMatchedToAsymmetricMatcher(\n  replacedExpected,\n  replacedReceived,\n  expectedCycles,\n  receivedCycles\n) {\n  if (!_Replaceable.default.isReplaceable(replacedExpected, replacedReceived)) {\n    return {\n      replacedExpected,\n      replacedReceived\n    };\n  }\n  if (\n    expectedCycles.includes(replacedExpected) ||\n    receivedCycles.includes(replacedReceived)\n  ) {\n    return {\n      replacedExpected,\n      replacedReceived\n    };\n  }\n  expectedCycles.push(replacedExpected);\n  receivedCycles.push(replacedReceived);\n  const expectedReplaceable = new _Replaceable.default(replacedExpected);\n  const receivedReplaceable = new _Replaceable.default(replacedReceived);\n  expectedReplaceable.forEach((expectedValue, key) => {\n    const receivedValue = receivedReplaceable.get(key);\n    if (isAsymmetricMatcher(expectedValue)) {\n      if (expectedValue.asymmetricMatch(receivedValue)) {\n        receivedReplaceable.set(key, expectedValue);\n      }\n    } else if (isAsymmetricMatcher(receivedValue)) {\n      if (receivedValue.asymmetricMatch(expectedValue)) {\n        expectedReplaceable.set(key, receivedValue);\n      }\n    } else if (\n      _Replaceable.default.isReplaceable(expectedValue, receivedValue)\n    ) {\n      const replaced = _replaceMatchedToAsymmetricMatcher(\n        expectedValue,\n        receivedValue,\n        expectedCycles,\n        receivedCycles\n      );\n      expectedReplaceable.set(key, replaced.replacedExpected);\n      receivedReplaceable.set(key, replaced.replacedReceived);\n    }\n  });\n  return {\n    replacedExpected: expectedReplaceable.object,\n    replacedReceived: receivedReplaceable.object\n  };\n}\nfunction isAsymmetricMatcher(data) {\n  const type = (0, _jestGetType.getType)(data);\n  return type === 'object' && typeof data.asymmetricMatch === 'function';\n}\nconst diff = (a, b, options) =>\n  shouldPrintDiff(a, b) ? (0, _jestDiff.diff)(a, b, options) : null;\nexports.diff = diff;\nconst pluralize = (word, count) =>\n  `${NUMBERS[count] || count} ${word}${count === 1 ? '' : 's'}`;\n\n// To display lines of labeled values as two columns with monospace alignment:\n// given the strings which will describe the values,\n// return function which given each string, returns the label:\n// string, colon, space, and enough padding spaces to align the value.\nexports.pluralize = pluralize;\nconst getLabelPrinter = (...strings) => {\n  const maxLength = strings.reduce(\n    (max, string) => (string.length > max ? string.length : max),\n    0\n  );\n  return string => `${string}: ${' '.repeat(maxLength - string.length)}`;\n};\nexports.getLabelPrinter = getLabelPrinter;\nconst matcherErrorMessage = (\n  hint,\n  generic,\n  specific // incorrect value returned from call to printWithType\n) =>\n  `${hint}\\n\\n${_chalk.default.bold('Matcher error')}: ${generic}${\n    typeof specific === 'string' ? `\\n\\n${specific}` : ''\n  }`;\n\n// Display assertion for the report when a test fails.\n// New format: rejects/resolves, not, and matcher name have black color\n// Old format: matcher name has dim color\nexports.matcherErrorMessage = matcherErrorMessage;\nconst matcherHint = (\n  matcherName,\n  received = 'received',\n  expected = 'expected',\n  options = {}\n) => {\n  const {\n    comment = '',\n    expectedColor = EXPECTED_COLOR,\n    isDirectExpectCall = false,\n    // seems redundant with received === ''\n    isNot = false,\n    promise = '',\n    receivedColor = RECEIVED_COLOR,\n    secondArgument = '',\n    secondArgumentColor = EXPECTED_COLOR\n  } = options;\n  let hint = '';\n  let dimString = 'expect'; // concatenate adjacent dim substrings\n\n  if (!isDirectExpectCall && received !== '') {\n    hint += DIM_COLOR(`${dimString}(`) + receivedColor(received);\n    dimString = ')';\n  }\n  if (promise !== '') {\n    hint += DIM_COLOR(`${dimString}.`) + promise;\n    dimString = '';\n  }\n  if (isNot) {\n    hint += `${DIM_COLOR(`${dimString}.`)}not`;\n    dimString = '';\n  }\n  if (matcherName.includes('.')) {\n    // Old format: for backward compatibility,\n    // especially without promise or isNot options\n    dimString += matcherName;\n  } else {\n    // New format: omit period from matcherName arg\n    hint += DIM_COLOR(`${dimString}.`) + matcherName;\n    dimString = '';\n  }\n  if (expected === '') {\n    dimString += '()';\n  } else {\n    hint += DIM_COLOR(`${dimString}(`) + expectedColor(expected);\n    if (secondArgument) {\n      hint += DIM_COLOR(', ') + secondArgumentColor(secondArgument);\n    }\n    dimString = ')';\n  }\n  if (comment !== '') {\n    dimString += ` // ${comment}`;\n  }\n  if (dimString !== '') {\n    hint += DIM_COLOR(dimString);\n  }\n  return hint;\n};\nexports.matcherHint = matcherHint;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.equals = void 0;\nexports.isA = isA;\n/*\nCopyright (c) 2008-2016 Pivotal Labs\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n*/\n\n// Extracted out of jasmine 2.5.2\nconst equals = (a, b, customTesters, strictCheck) => {\n  customTesters = customTesters || [];\n  return eq(a, b, [], [], customTesters, strictCheck);\n};\nexports.equals = equals;\nfunction isAsymmetric(obj) {\n  return !!obj && isA('Function', obj.asymmetricMatch);\n}\nfunction asymmetricMatch(a, b) {\n  const asymmetricA = isAsymmetric(a);\n  const asymmetricB = isAsymmetric(b);\n  if (asymmetricA && asymmetricB) {\n    return undefined;\n  }\n  if (asymmetricA) {\n    return a.asymmetricMatch(b);\n  }\n  if (asymmetricB) {\n    return b.asymmetricMatch(a);\n  }\n}\n\n// Equality function lovingly adapted from isEqual in\n//   [Underscore](http://underscorejs.org)\nfunction eq(a, b, aStack, bStack, customTesters, strictCheck) {\n  let result = true;\n  const asymmetricResult = asymmetricMatch(a, b);\n  if (asymmetricResult !== undefined) {\n    return asymmetricResult;\n  }\n  const testerContext = {\n    equals\n  };\n  for (let i = 0; i < customTesters.length; i++) {\n    const customTesterResult = customTesters[i].call(\n      testerContext,\n      a,\n      b,\n      customTesters\n    );\n    if (customTesterResult !== undefined) {\n      return customTesterResult;\n    }\n  }\n  if (a instanceof Error && b instanceof Error) {\n    return a.message == b.message;\n  }\n  if (Object.is(a, b)) {\n    return true;\n  }\n  // A strict comparison is necessary because `null == undefined`.\n  if (a === null || b === null) {\n    return a === b;\n  }\n  const className = Object.prototype.toString.call(a);\n  if (className != Object.prototype.toString.call(b)) {\n    return false;\n  }\n  switch (className) {\n    case '[object Boolean]':\n    case '[object String]':\n    case '[object Number]':\n      if (typeof a !== typeof b) {\n        // One is a primitive, one a `new Primitive()`\n        return false;\n      } else if (typeof a !== 'object' && typeof b !== 'object') {\n        // both are proper primitives\n        return Object.is(a, b);\n      } else {\n        // both are `new Primitive()`s\n        return Object.is(a.valueOf(), b.valueOf());\n      }\n    case '[object Date]':\n      // Coerce dates to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a == +b;\n    // RegExps are compared by their source patterns and flags.\n    case '[object RegExp]':\n      return a.source === b.source && a.flags === b.flags;\n  }\n  if (typeof a !== 'object' || typeof b !== 'object') {\n    return false;\n  }\n\n  // Use DOM3 method isEqualNode (IE>=9)\n  if (isDomNode(a) && isDomNode(b)) {\n    return a.isEqualNode(b);\n  }\n\n  // Used to detect circular references.\n  let length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    // circular references at same depth are equal\n    // circular reference is not equal to non-circular one\n    if (aStack[length] === a) {\n      return bStack[length] === b;\n    } else if (bStack[length] === b) {\n      return false;\n    }\n  }\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n  // Recursively compare objects and arrays.\n  // Compare array lengths to determine if a deep comparison is necessary.\n  if (strictCheck && className == '[object Array]' && a.length !== b.length) {\n    return false;\n  }\n\n  // Deep compare objects.\n  const aKeys = keys(a, hasKey);\n  let key;\n  const bKeys = keys(b, hasKey);\n  // Add keys corresponding to asymmetric matchers if they miss in non strict check mode\n  if (!strictCheck) {\n    for (let index = 0; index !== bKeys.length; ++index) {\n      key = bKeys[index];\n      if ((isAsymmetric(b[key]) || b[key] === undefined) && !hasKey(a, key)) {\n        aKeys.push(key);\n      }\n    }\n    for (let index = 0; index !== aKeys.length; ++index) {\n      key = aKeys[index];\n      if ((isAsymmetric(a[key]) || a[key] === undefined) && !hasKey(b, key)) {\n        bKeys.push(key);\n      }\n    }\n  }\n\n  // Ensure that both objects contain the same number of properties before comparing deep equality.\n  let size = aKeys.length;\n  if (bKeys.length !== size) {\n    return false;\n  }\n  while (size--) {\n    key = aKeys[size];\n\n    // Deep compare each member\n    if (strictCheck)\n      result =\n        hasKey(b, key) &&\n        eq(a[key], b[key], aStack, bStack, customTesters, strictCheck);\n    else\n      result =\n        (hasKey(b, key) || isAsymmetric(a[key]) || a[key] === undefined) &&\n        eq(a[key], b[key], aStack, bStack, customTesters, strictCheck);\n    if (!result) {\n      return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return result;\n}\nfunction keys(obj, hasKey) {\n  const keys = [];\n  for (const key in obj) {\n    if (hasKey(obj, key)) {\n      keys.push(key);\n    }\n  }\n  return keys.concat(\n    Object.getOwnPropertySymbols(obj).filter(\n      symbol => Object.getOwnPropertyDescriptor(obj, symbol).enumerable\n    )\n  );\n}\nfunction hasKey(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\nfunction isA(typeName, value) {\n  return Object.prototype.toString.apply(value) === `[object ${typeName}]`;\n}\nfunction isDomNode(obj) {\n  return (\n    obj !== null &&\n    typeof obj === 'object' &&\n    typeof obj.nodeType === 'number' &&\n    typeof obj.nodeName === 'string' &&\n    typeof obj.isEqualNode === 'function'\n  );\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.isImmutableList = isImmutableList;\nexports.isImmutableOrderedKeyed = isImmutableOrderedKeyed;\nexports.isImmutableOrderedSet = isImmutableOrderedSet;\nexports.isImmutableRecord = isImmutableRecord;\nexports.isImmutableUnorderedKeyed = isImmutableUnorderedKeyed;\nexports.isImmutableUnorderedSet = isImmutableUnorderedSet;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n// SENTINEL constants are from https://github.com/immutable-js/immutable-js/tree/main/src/predicates\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@';\nfunction isObjectLiteral(source) {\n  return source != null && typeof source === 'object' && !Array.isArray(source);\n}\nfunction isImmutableUnorderedKeyed(source) {\n  return Boolean(\n    source &&\n      isObjectLiteral(source) &&\n      source[IS_KEYED_SENTINEL] &&\n      !source[IS_ORDERED_SENTINEL]\n  );\n}\nfunction isImmutableUnorderedSet(source) {\n  return Boolean(\n    source &&\n      isObjectLiteral(source) &&\n      source[IS_SET_SENTINEL] &&\n      !source[IS_ORDERED_SENTINEL]\n  );\n}\nfunction isImmutableList(source) {\n  return Boolean(source && isObjectLiteral(source) && source[IS_LIST_SENTINEL]);\n}\nfunction isImmutableOrderedKeyed(source) {\n  return Boolean(\n    source &&\n      isObjectLiteral(source) &&\n      source[IS_KEYED_SENTINEL] &&\n      source[IS_ORDERED_SENTINEL]\n  );\n}\nfunction isImmutableOrderedSet(source) {\n  return Boolean(\n    source &&\n      isObjectLiteral(source) &&\n      source[IS_SET_SENTINEL] &&\n      source[IS_ORDERED_SENTINEL]\n  );\n}\nfunction isImmutableRecord(source) {\n  return Boolean(source && isObjectLiteral(source) && source[IS_RECORD_SYMBOL]);\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.arrayBufferEquality = void 0;\nexports.emptyObject = emptyObject;\nexports.typeEquality =\n  exports.subsetEquality =\n  exports.sparseArrayEquality =\n  exports.pathAsArray =\n  exports.partition =\n  exports.iterableEquality =\n  exports.isOneline =\n  exports.isError =\n  exports.getPath =\n  exports.getObjectSubset =\n  exports.getObjectKeys =\n    void 0;\nvar _jestGetType = require('jest-get-type');\nvar _immutableUtils = require('./immutableUtils');\nvar _jasmineUtils = require('./jasmineUtils');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n/**\n * Checks if `hasOwnProperty(object, key)` up the prototype chain, stopping at `Object.prototype`.\n */\nconst hasPropertyInObject = (object, key) => {\n  const shouldTerminate =\n    !object || typeof object !== 'object' || object === Object.prototype;\n  if (shouldTerminate) {\n    return false;\n  }\n  return (\n    Object.prototype.hasOwnProperty.call(object, key) ||\n    hasPropertyInObject(Object.getPrototypeOf(object), key)\n  );\n};\n\n// Retrieves an object's keys for evaluation by getObjectSubset.  This evaluates\n// the prototype chain for string keys but not for symbols.  (Otherwise, it\n// could find values such as a Set or Map's Symbol.toStringTag, with unexpected\n// results.)\nconst getObjectKeys = object => [\n  ...Object.keys(object),\n  ...Object.getOwnPropertySymbols(object)\n];\nexports.getObjectKeys = getObjectKeys;\nconst getPath = (object, propertyPath) => {\n  if (!Array.isArray(propertyPath)) {\n    propertyPath = pathAsArray(propertyPath);\n  }\n  if (propertyPath.length) {\n    const lastProp = propertyPath.length === 1;\n    const prop = propertyPath[0];\n    const newObject = object[prop];\n    if (!lastProp && (newObject === null || newObject === undefined)) {\n      // This is not the last prop in the chain. If we keep recursing it will\n      // hit a `can't access property X of undefined | null`. At this point we\n      // know that the chain has broken and we can return right away.\n      return {\n        hasEndProp: false,\n        lastTraversedObject: object,\n        traversedPath: []\n      };\n    }\n    const result = getPath(newObject, propertyPath.slice(1));\n    if (result.lastTraversedObject === null) {\n      result.lastTraversedObject = object;\n    }\n    result.traversedPath.unshift(prop);\n    if (lastProp) {\n      // Does object have the property with an undefined value?\n      // Although primitive values support bracket notation (above)\n      // they would throw TypeError for in operator (below).\n      result.endPropIsDefined =\n        !(0, _jestGetType.isPrimitive)(object) && prop in object;\n      result.hasEndProp = newObject !== undefined || result.endPropIsDefined;\n      if (!result.hasEndProp) {\n        result.traversedPath.shift();\n      }\n    }\n    return result;\n  }\n  return {\n    lastTraversedObject: null,\n    traversedPath: [],\n    value: object\n  };\n};\n\n// Strip properties from object that are not present in the subset. Useful for\n// printing the diff for toMatchObject() without adding unrelated noise.\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nexports.getPath = getPath;\nconst getObjectSubset = (\n  object,\n  subset,\n  customTesters = [],\n  seenReferences = new WeakMap()\n) => {\n  /* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n  if (Array.isArray(object)) {\n    if (Array.isArray(subset) && subset.length === object.length) {\n      // The map method returns correct subclass of subset.\n      return subset.map((sub, i) =>\n        getObjectSubset(object[i], sub, customTesters)\n      );\n    }\n  } else if (object instanceof Date) {\n    return object;\n  } else if (isObject(object) && isObject(subset)) {\n    if (\n      (0, _jasmineUtils.equals)(object, subset, [\n        ...customTesters,\n        iterableEquality,\n        subsetEquality\n      ])\n    ) {\n      // Avoid unnecessary copy which might return Object instead of subclass.\n      return subset;\n    }\n    const trimmed = {};\n    seenReferences.set(object, trimmed);\n    getObjectKeys(object)\n      .filter(key => hasPropertyInObject(subset, key))\n      .forEach(key => {\n        trimmed[key] = seenReferences.has(object[key])\n          ? seenReferences.get(object[key])\n          : getObjectSubset(\n              object[key],\n              subset[key],\n              customTesters,\n              seenReferences\n            );\n      });\n    if (getObjectKeys(trimmed).length > 0) {\n      return trimmed;\n    }\n  }\n  return object;\n};\nexports.getObjectSubset = getObjectSubset;\nconst IteratorSymbol = Symbol.iterator;\nconst hasIterator = object => !!(object != null && object[IteratorSymbol]);\n\n/* eslint-disable @typescript-eslint/explicit-module-boundary-types */\nconst iterableEquality = (\n  a,\n  b,\n  customTesters = [] /* eslint-enable @typescript-eslint/explicit-module-boundary-types */,\n  aStack = [],\n  bStack = []\n) => {\n  if (\n    typeof a !== 'object' ||\n    typeof b !== 'object' ||\n    Array.isArray(a) ||\n    Array.isArray(b) ||\n    !hasIterator(a) ||\n    !hasIterator(b)\n  ) {\n    return undefined;\n  }\n  if (a.constructor !== b.constructor) {\n    return false;\n  }\n  let length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    // circular references at same depth are equal\n    // circular reference is not equal to non-circular one\n    if (aStack[length] === a) {\n      return bStack[length] === b;\n    }\n  }\n  aStack.push(a);\n  bStack.push(b);\n  const iterableEqualityWithStack = (a, b) =>\n    iterableEquality(\n      a,\n      b,\n      [...filteredCustomTesters],\n      [...aStack],\n      [...bStack]\n    );\n\n  // Replace any instance of iterableEquality with the new\n  // iterableEqualityWithStack so we can do circular detection\n  const filteredCustomTesters = [\n    ...customTesters.filter(t => t !== iterableEquality),\n    iterableEqualityWithStack\n  ];\n  if (a.size !== undefined) {\n    if (a.size !== b.size) {\n      return false;\n    } else if (\n      (0, _jasmineUtils.isA)('Set', a) ||\n      (0, _immutableUtils.isImmutableUnorderedSet)(a)\n    ) {\n      let allFound = true;\n      for (const aValue of a) {\n        if (!b.has(aValue)) {\n          let has = false;\n          for (const bValue of b) {\n            const isEqual = (0, _jasmineUtils.equals)(\n              aValue,\n              bValue,\n              filteredCustomTesters\n            );\n            if (isEqual === true) {\n              has = true;\n            }\n          }\n          if (has === false) {\n            allFound = false;\n            break;\n          }\n        }\n      }\n      // Remove the first value from the stack of traversed values.\n      aStack.pop();\n      bStack.pop();\n      return allFound;\n    } else if (\n      (0, _jasmineUtils.isA)('Map', a) ||\n      (0, _immutableUtils.isImmutableUnorderedKeyed)(a)\n    ) {\n      let allFound = true;\n      for (const aEntry of a) {\n        if (\n          !b.has(aEntry[0]) ||\n          !(0, _jasmineUtils.equals)(\n            aEntry[1],\n            b.get(aEntry[0]),\n            filteredCustomTesters\n          )\n        ) {\n          let has = false;\n          for (const bEntry of b) {\n            const matchedKey = (0, _jasmineUtils.equals)(\n              aEntry[0],\n              bEntry[0],\n              filteredCustomTesters\n            );\n            let matchedValue = false;\n            if (matchedKey === true) {\n              matchedValue = (0, _jasmineUtils.equals)(\n                aEntry[1],\n                bEntry[1],\n                filteredCustomTesters\n              );\n            }\n            if (matchedValue === true) {\n              has = true;\n            }\n          }\n          if (has === false) {\n            allFound = false;\n            break;\n          }\n        }\n      }\n      // Remove the first value from the stack of traversed values.\n      aStack.pop();\n      bStack.pop();\n      return allFound;\n    }\n  }\n  const bIterator = b[IteratorSymbol]();\n  for (const aValue of a) {\n    const nextB = bIterator.next();\n    if (\n      nextB.done ||\n      !(0, _jasmineUtils.equals)(aValue, nextB.value, filteredCustomTesters)\n    ) {\n      return false;\n    }\n  }\n  if (!bIterator.next().done) {\n    return false;\n  }\n  if (\n    !(0, _immutableUtils.isImmutableList)(a) &&\n    !(0, _immutableUtils.isImmutableOrderedKeyed)(a) &&\n    !(0, _immutableUtils.isImmutableOrderedSet)(a) &&\n    !(0, _immutableUtils.isImmutableRecord)(a)\n  ) {\n    const aEntries = Object.entries(a);\n    const bEntries = Object.entries(b);\n    if (!(0, _jasmineUtils.equals)(aEntries, bEntries)) {\n      return false;\n    }\n  }\n\n  // Remove the first value from the stack of traversed values.\n  aStack.pop();\n  bStack.pop();\n  return true;\n};\nexports.iterableEquality = iterableEquality;\nconst isObject = a => a !== null && typeof a === 'object';\nconst isObjectWithKeys = a =>\n  isObject(a) &&\n  !(a instanceof Error) &&\n  !(a instanceof Array) &&\n  !(a instanceof Date);\nconst subsetEquality = (object, subset, customTesters = []) => {\n  const filteredCustomTesters = customTesters.filter(t => t !== subsetEquality);\n\n  // subsetEquality needs to keep track of the references\n  // it has already visited to avoid infinite loops in case\n  // there are circular references in the subset passed to it.\n  const subsetEqualityWithContext =\n    (seenReferences = new WeakMap()) =>\n    (object, subset) => {\n      if (!isObjectWithKeys(subset)) {\n        return undefined;\n      }\n      return getObjectKeys(subset).every(key => {\n        if (isObjectWithKeys(subset[key])) {\n          if (seenReferences.has(subset[key])) {\n            return (0, _jasmineUtils.equals)(\n              object[key],\n              subset[key],\n              filteredCustomTesters\n            );\n          }\n          seenReferences.set(subset[key], true);\n        }\n        const result =\n          object != null &&\n          hasPropertyInObject(object, key) &&\n          (0, _jasmineUtils.equals)(object[key], subset[key], [\n            ...filteredCustomTesters,\n            subsetEqualityWithContext(seenReferences)\n          ]);\n        // The main goal of using seenReference is to avoid circular node on tree.\n        // It will only happen within a parent and its child, not a node and nodes next to it (same level)\n        // We should keep the reference for a parent and its child only\n        // Thus we should delete the reference immediately so that it doesn't interfere\n        // other nodes within the same level on tree.\n        seenReferences.delete(subset[key]);\n        return result;\n      });\n    };\n  return subsetEqualityWithContext()(object, subset);\n};\n\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nexports.subsetEquality = subsetEquality;\nconst typeEquality = (a, b) => {\n  if (\n    a == null ||\n    b == null ||\n    a.constructor === b.constructor ||\n    // Since Jest globals are different from Node globals,\n    // constructors are different even between arrays when comparing properties of mock objects.\n    // Both of them should be able to compare correctly when they are array-to-array.\n    // https://github.com/jestjs/jest/issues/2549\n    (Array.isArray(a) && Array.isArray(b))\n  ) {\n    return undefined;\n  }\n  return false;\n};\nexports.typeEquality = typeEquality;\nconst arrayBufferEquality = (a, b) => {\n  if (!(a instanceof ArrayBuffer) || !(b instanceof ArrayBuffer)) {\n    return undefined;\n  }\n  const dataViewA = new DataView(a);\n  const dataViewB = new DataView(b);\n\n  // Buffers are not equal when they do not have the same byte length\n  if (dataViewA.byteLength !== dataViewB.byteLength) {\n    return false;\n  }\n\n  // Check if every byte value is equal to each other\n  for (let i = 0; i < dataViewA.byteLength; i++) {\n    if (dataViewA.getUint8(i) !== dataViewB.getUint8(i)) {\n      return false;\n    }\n  }\n  return true;\n};\nexports.arrayBufferEquality = arrayBufferEquality;\nconst sparseArrayEquality = (a, b, customTesters = []) => {\n  if (!Array.isArray(a) || !Array.isArray(b)) {\n    return undefined;\n  }\n\n  // A sparse array [, , 1] will have keys [\"2\"] whereas [undefined, undefined, 1] will have keys [\"0\", \"1\", \"2\"]\n  const aKeys = Object.keys(a);\n  const bKeys = Object.keys(b);\n  return (\n    (0, _jasmineUtils.equals)(\n      a,\n      b,\n      customTesters.filter(t => t !== sparseArrayEquality),\n      true\n    ) && (0, _jasmineUtils.equals)(aKeys, bKeys)\n  );\n};\nexports.sparseArrayEquality = sparseArrayEquality;\nconst partition = (items, predicate) => {\n  const result = [[], []];\n  items.forEach(item => result[predicate(item) ? 0 : 1].push(item));\n  return result;\n};\nexports.partition = partition;\nconst pathAsArray = propertyPath => {\n  const properties = [];\n  if (propertyPath === '') {\n    properties.push('');\n    return properties;\n  }\n\n  // will match everything that's not a dot or a bracket, and \"\" for consecutive dots.\n  const pattern = RegExp('[^.[\\\\]]+|(?=(?:\\\\.)(?:\\\\.|$))', 'g');\n\n  // Because the regex won't match a dot in the beginning of the path, if present.\n  if (propertyPath[0] === '.') {\n    properties.push('');\n  }\n  propertyPath.replace(pattern, match => {\n    properties.push(match);\n    return match;\n  });\n  return properties;\n};\n\n// Copied from https://github.com/graingert/angular.js/blob/a43574052e9775cbc1d7dd8a086752c979b0f020/src/Angular.js#L685-L693\nexports.pathAsArray = pathAsArray;\nconst isError = value => {\n  switch (Object.prototype.toString.call(value)) {\n    case '[object Error]':\n    case '[object Exception]':\n    case '[object DOMException]':\n      return true;\n    default:\n      return value instanceof Error;\n  }\n};\nexports.isError = isError;\nfunction emptyObject(obj) {\n  return obj && typeof obj === 'object' ? !Object.keys(obj).length : false;\n}\nconst MULTILINE_REGEXP = /[\\r\\n]/;\nconst isOneline = (expected, received) =>\n  typeof expected === 'string' &&\n  typeof received === 'string' &&\n  (!MULTILINE_REGEXP.test(expected) || !MULTILINE_REGEXP.test(received));\nexports.isOneline = isOneline;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nvar _exportNames = {\n  equals: true,\n  isA: true\n};\nObject.defineProperty(exports, 'equals', {\n  enumerable: true,\n  get: function () {\n    return _jasmineUtils.equals;\n  }\n});\nObject.defineProperty(exports, 'isA', {\n  enumerable: true,\n  get: function () {\n    return _jasmineUtils.isA;\n  }\n});\nvar _jasmineUtils = require('./jasmineUtils');\nvar _utils = require('./utils');\nObject.keys(_utils).forEach(function (key) {\n  if (key === 'default' || key === '__esModule') return;\n  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;\n  if (key in exports && exports[key] === _utils[key]) return;\n  Object.defineProperty(exports, key, {\n    enumerable: true,\n    get: function () {\n      return _utils[key];\n    }\n  });\n});\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = clearLine;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction clearLine(stream) {\n  if (stream.isTTY) {\n    stream.write('\\x1b[999D\\x1b[K');\n  }\n}\n","'use strict'\n\nconst vendors = require('./vendors.json')\n\nconst env = process.env\n\n// Used for testing only\nObject.defineProperty(exports, '_vendors', {\n  value: vendors.map(function (v) {\n    return v.constant\n  })\n})\n\nexports.name = null\nexports.isPR = null\n\nvendors.forEach(function (vendor) {\n  const envs = Array.isArray(vendor.env) ? vendor.env : [vendor.env]\n  const isCI = envs.every(function (obj) {\n    return checkEnv(obj)\n  })\n\n  exports[vendor.constant] = isCI\n\n  if (!isCI) {\n    return\n  }\n\n  exports.name = vendor.name\n\n  switch (typeof vendor.pr) {\n    case 'string':\n      // \"pr\": \"CIRRUS_PR\"\n      exports.isPR = !!env[vendor.pr]\n      break\n    case 'object':\n      if ('env' in vendor.pr) {\n        // \"pr\": { \"env\": \"BUILDKITE_PULL_REQUEST\", \"ne\": \"false\" }\n        exports.isPR = vendor.pr.env in env && env[vendor.pr.env] !== vendor.pr.ne\n      } else if ('any' in vendor.pr) {\n        // \"pr\": { \"any\": [\"ghprbPullId\", \"CHANGE_ID\"] }\n        exports.isPR = vendor.pr.any.some(function (key) {\n          return !!env[key]\n        })\n      } else {\n        // \"pr\": { \"DRONE_BUILD_EVENT\": \"pull_request\" }\n        exports.isPR = checkEnv(vendor.pr)\n      }\n      break\n    default:\n      // PR detection not supported for this vendor\n      exports.isPR = null\n  }\n})\n\nexports.isCI = !!(\n  env.CI !== 'false' && // Bypass all checks if CI env is explicitly set to 'false'\n  (env.BUILD_ID || // Jenkins, Cloudbees\n  env.BUILD_NUMBER || // Jenkins, TeamCity\n  env.CI || // Travis CI, CircleCI, Cirrus CI, Gitlab CI, Appveyor, CodeShip, dsari\n  env.CI_APP_ID || // Appflow\n  env.CI_BUILD_ID || // Appflow\n  env.CI_BUILD_NUMBER || // Appflow\n  env.CI_NAME || // Codeship and others\n  env.CONTINUOUS_INTEGRATION || // Travis CI, Cirrus CI\n  env.RUN_ID || // TaskCluster, dsari\n  exports.name ||\n  false)\n)\n\nfunction checkEnv (obj) {\n  // \"env\": \"CIRRUS\"\n  if (typeof obj === 'string') return !!env[obj]\n\n  // \"env\": { \"env\": \"NODE\", \"includes\": \"/app/.heroku/node/bin/node\" }\n  if ('env' in obj) {\n    // Currently there are no other types, uncomment when there are\n    // if ('includes' in obj) {\n    return env[obj.env] && env[obj.env].includes(obj.includes)\n    // }\n  }\n  if ('any' in obj) {\n    return obj.any.some(function (k) {\n      return !!env[k]\n    })\n  }\n  return Object.keys(obj).every(function (k) {\n    return env[k] === obj[k]\n  })\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\nfunction _ciInfo() {\n  const data = require('ci-info');\n  _ciInfo = function () {\n    return data;\n  };\n  return data;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nvar _default =\n  !!process.stdout.isTTY && process.env.TERM !== 'dumb' && !_ciInfo().isCI;\nexports.default = _default;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.print = print;\nexports.remove = remove;\nfunction _chalk() {\n  const data = _interopRequireDefault(require('chalk'));\n  _chalk = function () {\n    return data;\n  };\n  return data;\n}\nvar _clearLine = _interopRequireDefault(require('./clearLine'));\nvar _isInteractive = _interopRequireDefault(require('./isInteractive'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction print(stream) {\n  if (_isInteractive.default) {\n    stream.write(\n      _chalk().default.bold.dim('Determining test suites to run...')\n    );\n  }\n}\nfunction remove(stream) {\n  if (_isInteractive.default) {\n    (0, _clearLine.default)(stream);\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.ICONS = exports.CLEAR = exports.ARROW = void 0;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst isWindows = process.platform === 'win32';\nconst ARROW = ' \\u203A ';\nexports.ARROW = ARROW;\nconst ICONS = {\n  failed: isWindows ? '\\u00D7' : '\\u2715',\n  pending: '\\u25CB',\n  success: isWindows ? '\\u221A' : '\\u2713',\n  todo: '\\u270E'\n};\nexports.ICONS = ICONS;\nconst CLEAR = isWindows ? '\\x1B[2J\\x1B[0f' : '\\x1B[2J\\x1B[3J\\x1B[H';\nexports.CLEAR = CLEAR;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = createDirectory;\nfunction fs() {\n  const data = _interopRequireWildcard(require('graceful-fs'));\n  fs = function () {\n    return data;\n  };\n  return data;\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction createDirectory(path) {\n  try {\n    fs().mkdirSync(path, {\n      recursive: true\n    });\n  } catch (e) {\n    if (e.code !== 'EEXIST') {\n      throw e;\n    }\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = void 0;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nclass ErrorWithStack extends Error {\n  constructor(message, callsite, stackLimit) {\n    // Ensure we have a large stack length so we get full details.\n    const originalStackLimit = Error.stackTraceLimit;\n    if (stackLimit) {\n      Error.stackTraceLimit = Math.max(stackLimit, originalStackLimit || 10);\n    }\n    super(message);\n    if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, callsite);\n    }\n    Error.stackTraceLimit = originalStackLimit;\n  }\n}\nexports.default = ErrorWithStack;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = deepCyclicCopy;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst EMPTY = new Set();\nfunction deepCyclicCopy(\n  value,\n  options = {\n    blacklist: EMPTY,\n    keepPrototype: false\n  },\n  cycles = new WeakMap()\n) {\n  if (typeof value !== 'object' || value === null || Buffer.isBuffer(value)) {\n    return value;\n  } else if (cycles.has(value)) {\n    return cycles.get(value);\n  } else if (Array.isArray(value)) {\n    return deepCyclicCopyArray(value, options, cycles);\n  } else {\n    return deepCyclicCopyObject(value, options, cycles);\n  }\n}\nfunction deepCyclicCopyObject(object, options, cycles) {\n  const newObject = options.keepPrototype\n    ? Object.create(Object.getPrototypeOf(object))\n    : {};\n  const descriptors = Object.getOwnPropertyDescriptors(object);\n  cycles.set(object, newObject);\n  Object.keys(descriptors).forEach(key => {\n    if (options.blacklist && options.blacklist.has(key)) {\n      delete descriptors[key];\n      return;\n    }\n    const descriptor = descriptors[key];\n    if (typeof descriptor.value !== 'undefined') {\n      descriptor.value = deepCyclicCopy(\n        descriptor.value,\n        {\n          blacklist: EMPTY,\n          keepPrototype: options.keepPrototype\n        },\n        cycles\n      );\n    }\n    descriptor.configurable = true;\n  });\n  return Object.defineProperties(newObject, descriptors);\n}\nfunction deepCyclicCopyArray(array, options, cycles) {\n  const newArray = options.keepPrototype\n    ? new (Object.getPrototypeOf(array).constructor)(array.length)\n    : [];\n  const length = array.length;\n  cycles.set(array, newArray);\n  for (let i = 0; i < length; i++) {\n    newArray[i] = deepCyclicCopy(\n      array[i],\n      {\n        blacklist: EMPTY,\n        keepPrototype: options.keepPrototype\n      },\n      cycles\n    );\n  }\n  return newArray;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = createProcessObject;\nvar _deepCyclicCopy = _interopRequireDefault(require('./deepCyclicCopy'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst BLACKLIST = new Set(['env', 'mainModule', '_events']);\nconst isWin32 = process.platform === 'win32';\nconst proto = Object.getPrototypeOf(process.env);\n\n// The \"process.env\" object has a bunch of particularities: first, it does not\n// directly extend from Object; second, it converts any assigned value to a\n// string; and third, it is case-insensitive in Windows. We use a proxy here to\n// mimic it (see https://nodejs.org/api/process.html#process_process_env).\n\nfunction createProcessEnv() {\n  const real = Object.create(proto);\n  const lookup = {};\n  function deletePropertyWin32(_target, key) {\n    for (const name in real) {\n      if (Object.prototype.hasOwnProperty.call(real, name)) {\n        if (typeof key === 'string') {\n          if (name.toLowerCase() === key.toLowerCase()) {\n            delete real[name];\n            delete lookup[name.toLowerCase()];\n          }\n        } else {\n          if (key === name) {\n            delete real[name];\n            delete lookup[name];\n          }\n        }\n      }\n    }\n    return true;\n  }\n  function deleteProperty(_target, key) {\n    delete real[key];\n    delete lookup[key];\n    return true;\n  }\n  function getProperty(_target, key) {\n    return real[key];\n  }\n  function getPropertyWin32(_target, key) {\n    if (typeof key === 'string') {\n      return lookup[key in proto ? key : key.toLowerCase()];\n    } else {\n      return real[key];\n    }\n  }\n  const proxy = new Proxy(real, {\n    deleteProperty: isWin32 ? deletePropertyWin32 : deleteProperty,\n    get: isWin32 ? getPropertyWin32 : getProperty,\n    set(_target, key, value) {\n      const strValue = `${value}`;\n      if (typeof key === 'string') {\n        lookup[key.toLowerCase()] = strValue;\n      }\n      real[key] = strValue;\n      return true;\n    }\n  });\n  return Object.assign(proxy, process.env);\n}\nfunction createProcessObject() {\n  const process = require('process');\n  const newProcess = (0, _deepCyclicCopy.default)(process, {\n    blacklist: BLACKLIST,\n    keepPrototype: true\n  });\n  try {\n    // This fails on Node 12, but it's already set to 'process'\n    newProcess[Symbol.toStringTag] = 'process';\n  } catch (e) {\n    // Make sure it's actually set instead of potentially ignoring errors\n    if (newProcess[Symbol.toStringTag] !== 'process') {\n      e.message = `Unable to set toStringTag on process. Please open up an issue at https://github.com/jestjs/jest\\n\\n${e.message}`;\n      throw e;\n    }\n  }\n\n  // Sequentially execute all constructors over the object.\n  let proto = process;\n  while ((proto = Object.getPrototypeOf(proto))) {\n    if (typeof proto.constructor === 'function') {\n      proto.constructor.call(newProcess);\n    }\n  }\n  newProcess.env = createProcessEnv();\n  newProcess.send = () => true;\n  Object.defineProperty(newProcess, 'domain', {\n    get() {\n      return process.domain;\n    }\n  });\n  return newProcess;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = installCommonGlobals;\nfunction fs() {\n  const data = _interopRequireWildcard(require('graceful-fs'));\n  fs = function () {\n    return data;\n  };\n  return data;\n}\nvar _createProcessObject = _interopRequireDefault(\n  require('./createProcessObject')\n);\nvar _deepCyclicCopy = _interopRequireDefault(require('./deepCyclicCopy'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst DTRACE = Object.keys(globalThis).filter(key => key.startsWith('DTRACE'));\nfunction installCommonGlobals(globalObject, globals) {\n  globalObject.process = (0, _createProcessObject.default)();\n  const symbol = globalObject.Symbol;\n  // Keep a reference to some globals that Jest needs\n  Object.defineProperties(globalObject, {\n    [symbol.for('jest-native-promise')]: {\n      enumerable: false,\n      value: Promise,\n      writable: false\n    },\n    [symbol.for('jest-native-now')]: {\n      enumerable: false,\n      value: globalObject.Date.now.bind(globalObject.Date),\n      writable: false\n    },\n    [symbol.for('jest-native-read-file')]: {\n      enumerable: false,\n      value: fs().readFileSync.bind(fs()),\n      writable: false\n    },\n    [symbol.for('jest-native-write-file')]: {\n      enumerable: false,\n      value: fs().writeFileSync.bind(fs()),\n      writable: false\n    },\n    [symbol.for('jest-native-exists-file')]: {\n      enumerable: false,\n      value: fs().existsSync.bind(fs()),\n      writable: false\n    },\n    'jest-symbol-do-not-touch': {\n      enumerable: false,\n      value: symbol,\n      writable: false\n    }\n  });\n\n  // Forward some APIs.\n  DTRACE.forEach(dtrace => {\n    // @ts-expect-error: no index\n    globalObject[dtrace] = function (...args) {\n      // @ts-expect-error: no index\n      return globalThis[dtrace].apply(this, args);\n    };\n  });\n  return Object.assign(globalObject, (0, _deepCyclicCopy.default)(globals));\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = interopRequireDefault;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// copied from https://github.com/babel/babel/blob/56044c7851d583d498f919e9546caddf8f80a72f/packages/babel-helpers/src/helpers.js#L558-L562\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction interopRequireDefault(obj) {\n  return obj && obj.__esModule\n    ? obj\n    : {\n        default: obj\n      };\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = isPromise;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction isPromise(candidate) {\n  return (\n    candidate != null &&\n    (typeof candidate === 'object' || typeof candidate === 'function') &&\n    typeof candidate.then === 'function'\n  );\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = setGlobal;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction setGlobal(globalToMutate, key, value) {\n  // @ts-expect-error: no index\n  globalToMutate[key] = value;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = convertDescriptorToString;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction convertDescriptorToString(descriptor) {\n  switch (typeof descriptor) {\n    case 'function':\n      if (descriptor.name) {\n        return descriptor.name;\n      }\n      break;\n    case 'number':\n    case 'undefined':\n      return `${descriptor}`;\n    case 'string':\n      return descriptor;\n  }\n  throw new Error(\n    `Invalid first argument, ${descriptor}. It must be a named class, named function, number, or string.`\n  );\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = replacePathSepForGlob;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction replacePathSepForGlob(path) {\n  return path.replace(/\\\\(?![{}()+?.^$])/g, '/');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = testPathPatternToRegExp;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Because we serialize/deserialize globalConfig when we spawn workers,\n// we can't pass regular expression. Using this shared function on both sides\n// will ensure that we produce consistent regexp for testPathPattern.\nfunction testPathPatternToRegExp(testPathPattern) {\n  return new RegExp(testPathPattern, 'i');\n}\n","'use strict';\n\nconst path = require('path');\nconst WIN_SLASH = '\\\\\\\\/';\nconst WIN_NO_SLASH = `[^${WIN_SLASH}]`;\n\n/**\n * Posix glob regex\n */\n\nconst DOT_LITERAL = '\\\\.';\nconst PLUS_LITERAL = '\\\\+';\nconst QMARK_LITERAL = '\\\\?';\nconst SLASH_LITERAL = '\\\\/';\nconst ONE_CHAR = '(?=.)';\nconst QMARK = '[^/]';\nconst END_ANCHOR = `(?:${SLASH_LITERAL}|$)`;\nconst START_ANCHOR = `(?:^|${SLASH_LITERAL})`;\nconst DOTS_SLASH = `${DOT_LITERAL}{1,2}${END_ANCHOR}`;\nconst NO_DOT = `(?!${DOT_LITERAL})`;\nconst NO_DOTS = `(?!${START_ANCHOR}${DOTS_SLASH})`;\nconst NO_DOT_SLASH = `(?!${DOT_LITERAL}{0,1}${END_ANCHOR})`;\nconst NO_DOTS_SLASH = `(?!${DOTS_SLASH})`;\nconst QMARK_NO_DOT = `[^.${SLASH_LITERAL}]`;\nconst STAR = `${QMARK}*?`;\n\nconst POSIX_CHARS = {\n  DOT_LITERAL,\n  PLUS_LITERAL,\n  QMARK_LITERAL,\n  SLASH_LITERAL,\n  ONE_CHAR,\n  QMARK,\n  END_ANCHOR,\n  DOTS_SLASH,\n  NO_DOT,\n  NO_DOTS,\n  NO_DOT_SLASH,\n  NO_DOTS_SLASH,\n  QMARK_NO_DOT,\n  STAR,\n  START_ANCHOR\n};\n\n/**\n * Windows glob regex\n */\n\nconst WINDOWS_CHARS = {\n  ...POSIX_CHARS,\n\n  SLASH_LITERAL: `[${WIN_SLASH}]`,\n  QMARK: WIN_NO_SLASH,\n  STAR: `${WIN_NO_SLASH}*?`,\n  DOTS_SLASH: `${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$)`,\n  NO_DOT: `(?!${DOT_LITERAL})`,\n  NO_DOTS: `(?!(?:^|[${WIN_SLASH}])${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  NO_DOT_SLASH: `(?!${DOT_LITERAL}{0,1}(?:[${WIN_SLASH}]|$))`,\n  NO_DOTS_SLASH: `(?!${DOT_LITERAL}{1,2}(?:[${WIN_SLASH}]|$))`,\n  QMARK_NO_DOT: `[^.${WIN_SLASH}]`,\n  START_ANCHOR: `(?:^|[${WIN_SLASH}])`,\n  END_ANCHOR: `(?:[${WIN_SLASH}]|$)`\n};\n\n/**\n * POSIX Bracket Regex\n */\n\nconst POSIX_REGEX_SOURCE = {\n  alnum: 'a-zA-Z0-9',\n  alpha: 'a-zA-Z',\n  ascii: '\\\\x00-\\\\x7F',\n  blank: ' \\\\t',\n  cntrl: '\\\\x00-\\\\x1F\\\\x7F',\n  digit: '0-9',\n  graph: '\\\\x21-\\\\x7E',\n  lower: 'a-z',\n  print: '\\\\x20-\\\\x7E ',\n  punct: '\\\\-!\"#$%&\\'()\\\\*+,./:;<=>?@[\\\\]^_`{|}~',\n  space: ' \\\\t\\\\r\\\\n\\\\v\\\\f',\n  upper: 'A-Z',\n  word: 'A-Za-z0-9_',\n  xdigit: 'A-Fa-f0-9'\n};\n\nmodule.exports = {\n  MAX_LENGTH: 1024 * 64,\n  POSIX_REGEX_SOURCE,\n\n  // regular expressions\n  REGEX_BACKSLASH: /\\\\(?![*+?^${}(|)[\\]])/g,\n  REGEX_NON_SPECIAL_CHARS: /^[^@![\\].,$*+?^{}()|\\\\/]+/,\n  REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\\]]/,\n  REGEX_SPECIAL_CHARS_BACKREF: /(\\\\?)((\\W)(\\3*))/g,\n  REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\\]])/g,\n  REGEX_REMOVE_BACKSLASH: /(?:\\[.*?[^\\\\]\\]|\\\\(?=.))/g,\n\n  // Replace globs with equivalent patterns to reduce parsing time.\n  REPLACEMENTS: {\n    '***': '*',\n    '**/**': '**',\n    '**/**/**': '**'\n  },\n\n  // Digits\n  CHAR_0: 48, /* 0 */\n  CHAR_9: 57, /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 65, /* A */\n  CHAR_LOWERCASE_A: 97, /* a */\n  CHAR_UPPERCASE_Z: 90, /* Z */\n  CHAR_LOWERCASE_Z: 122, /* z */\n\n  CHAR_LEFT_PARENTHESES: 40, /* ( */\n  CHAR_RIGHT_PARENTHESES: 41, /* ) */\n\n  CHAR_ASTERISK: 42, /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: 38, /* & */\n  CHAR_AT: 64, /* @ */\n  CHAR_BACKWARD_SLASH: 92, /* \\ */\n  CHAR_CARRIAGE_RETURN: 13, /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: 94, /* ^ */\n  CHAR_COLON: 58, /* : */\n  CHAR_COMMA: 44, /* , */\n  CHAR_DOT: 46, /* . */\n  CHAR_DOUBLE_QUOTE: 34, /* \" */\n  CHAR_EQUAL: 61, /* = */\n  CHAR_EXCLAMATION_MARK: 33, /* ! */\n  CHAR_FORM_FEED: 12, /* \\f */\n  CHAR_FORWARD_SLASH: 47, /* / */\n  CHAR_GRAVE_ACCENT: 96, /* ` */\n  CHAR_HASH: 35, /* # */\n  CHAR_HYPHEN_MINUS: 45, /* - */\n  CHAR_LEFT_ANGLE_BRACKET: 60, /* < */\n  CHAR_LEFT_CURLY_BRACE: 123, /* { */\n  CHAR_LEFT_SQUARE_BRACKET: 91, /* [ */\n  CHAR_LINE_FEED: 10, /* \\n */\n  CHAR_NO_BREAK_SPACE: 160, /* \\u00A0 */\n  CHAR_PERCENT: 37, /* % */\n  CHAR_PLUS: 43, /* + */\n  CHAR_QUESTION_MARK: 63, /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: 62, /* > */\n  CHAR_RIGHT_CURLY_BRACE: 125, /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: 93, /* ] */\n  CHAR_SEMICOLON: 59, /* ; */\n  CHAR_SINGLE_QUOTE: 39, /* ' */\n  CHAR_SPACE: 32, /*   */\n  CHAR_TAB: 9, /* \\t */\n  CHAR_UNDERSCORE: 95, /* _ */\n  CHAR_VERTICAL_LINE: 124, /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, /* \\uFEFF */\n\n  SEP: path.sep,\n\n  /**\n   * Create EXTGLOB_CHARS\n   */\n\n  extglobChars(chars) {\n    return {\n      '!': { type: 'negate', open: '(?:(?!(?:', close: `))${chars.STAR})` },\n      '?': { type: 'qmark', open: '(?:', close: ')?' },\n      '+': { type: 'plus', open: '(?:', close: ')+' },\n      '*': { type: 'star', open: '(?:', close: ')*' },\n      '@': { type: 'at', open: '(?:', close: ')' }\n    };\n  },\n\n  /**\n   * Create GLOB_CHARS\n   */\n\n  globChars(win32) {\n    return win32 === true ? WINDOWS_CHARS : POSIX_CHARS;\n  }\n};\n","'use strict';\n\nconst path = require('path');\nconst win32 = process.platform === 'win32';\nconst {\n  REGEX_BACKSLASH,\n  REGEX_REMOVE_BACKSLASH,\n  REGEX_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_GLOBAL\n} = require('./constants');\n\nexports.isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\nexports.hasRegexChars = str => REGEX_SPECIAL_CHARS.test(str);\nexports.isRegexChar = str => str.length === 1 && exports.hasRegexChars(str);\nexports.escapeRegex = str => str.replace(REGEX_SPECIAL_CHARS_GLOBAL, '\\\\$1');\nexports.toPosixSlashes = str => str.replace(REGEX_BACKSLASH, '/');\n\nexports.removeBackslashes = str => {\n  return str.replace(REGEX_REMOVE_BACKSLASH, match => {\n    return match === '\\\\' ? '' : match;\n  });\n};\n\nexports.supportsLookbehinds = () => {\n  const segs = process.version.slice(1).split('.').map(Number);\n  if (segs.length === 3 && segs[0] >= 9 || (segs[0] === 8 && segs[1] >= 10)) {\n    return true;\n  }\n  return false;\n};\n\nexports.isWindows = options => {\n  if (options && typeof options.windows === 'boolean') {\n    return options.windows;\n  }\n  return win32 === true || path.sep === '\\\\';\n};\n\nexports.escapeLast = (input, char, lastIdx) => {\n  const idx = input.lastIndexOf(char, lastIdx);\n  if (idx === -1) return input;\n  if (input[idx - 1] === '\\\\') return exports.escapeLast(input, char, idx - 1);\n  return `${input.slice(0, idx)}\\\\${input.slice(idx)}`;\n};\n\nexports.removePrefix = (input, state = {}) => {\n  let output = input;\n  if (output.startsWith('./')) {\n    output = output.slice(2);\n    state.prefix = './';\n  }\n  return output;\n};\n\nexports.wrapOutput = (input, state = {}, options = {}) => {\n  const prepend = options.contains ? '' : '^';\n  const append = options.contains ? '' : '$';\n\n  let output = `${prepend}(?:${input})${append}`;\n  if (state.negated === true) {\n    output = `(?:^(?!${output}).*$)`;\n  }\n  return output;\n};\n","'use strict';\n\nconst utils = require('./utils');\nconst {\n  CHAR_ASTERISK,             /* * */\n  CHAR_AT,                   /* @ */\n  CHAR_BACKWARD_SLASH,       /* \\ */\n  CHAR_COMMA,                /* , */\n  CHAR_DOT,                  /* . */\n  CHAR_EXCLAMATION_MARK,     /* ! */\n  CHAR_FORWARD_SLASH,        /* / */\n  CHAR_LEFT_CURLY_BRACE,     /* { */\n  CHAR_LEFT_PARENTHESES,     /* ( */\n  CHAR_LEFT_SQUARE_BRACKET,  /* [ */\n  CHAR_PLUS,                 /* + */\n  CHAR_QUESTION_MARK,        /* ? */\n  CHAR_RIGHT_CURLY_BRACE,    /* } */\n  CHAR_RIGHT_PARENTHESES,    /* ) */\n  CHAR_RIGHT_SQUARE_BRACKET  /* ] */\n} = require('./constants');\n\nconst isPathSeparator = code => {\n  return code === CHAR_FORWARD_SLASH || code === CHAR_BACKWARD_SLASH;\n};\n\nconst depth = token => {\n  if (token.isPrefix !== true) {\n    token.depth = token.isGlobstar ? Infinity : 1;\n  }\n};\n\n/**\n * Quickly scans a glob pattern and returns an object with a handful of\n * useful properties, like `isGlob`, `path` (the leading non-glob, if it exists),\n * `glob` (the actual pattern), `negated` (true if the path starts with `!` but not\n * with `!(`) and `negatedExtglob` (true if the path starts with `!(`).\n *\n * ```js\n * const pm = require('picomatch');\n * console.log(pm.scan('foo/bar/*.js'));\n * { isGlob: true, input: 'foo/bar/*.js', base: 'foo/bar', glob: '*.js' }\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {Object} Returns an object with tokens and regex source string.\n * @api public\n */\n\nconst scan = (input, options) => {\n  const opts = options || {};\n\n  const length = input.length - 1;\n  const scanToEnd = opts.parts === true || opts.scanToEnd === true;\n  const slashes = [];\n  const tokens = [];\n  const parts = [];\n\n  let str = input;\n  let index = -1;\n  let start = 0;\n  let lastIndex = 0;\n  let isBrace = false;\n  let isBracket = false;\n  let isGlob = false;\n  let isExtglob = false;\n  let isGlobstar = false;\n  let braceEscaped = false;\n  let backslashes = false;\n  let negated = false;\n  let negatedExtglob = false;\n  let finished = false;\n  let braces = 0;\n  let prev;\n  let code;\n  let token = { value: '', depth: 0, isGlob: false };\n\n  const eos = () => index >= length;\n  const peek = () => str.charCodeAt(index + 1);\n  const advance = () => {\n    prev = code;\n    return str.charCodeAt(++index);\n  };\n\n  while (index < length) {\n    code = advance();\n    let next;\n\n    if (code === CHAR_BACKWARD_SLASH) {\n      backslashes = token.backslashes = true;\n      code = advance();\n\n      if (code === CHAR_LEFT_CURLY_BRACE) {\n        braceEscaped = true;\n      }\n      continue;\n    }\n\n    if (braceEscaped === true || code === CHAR_LEFT_CURLY_BRACE) {\n      braces++;\n\n      while (eos() !== true && (code = advance())) {\n        if (code === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (code === CHAR_LEFT_CURLY_BRACE) {\n          braces++;\n          continue;\n        }\n\n        if (braceEscaped !== true && code === CHAR_DOT && (code = advance()) === CHAR_DOT) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (braceEscaped !== true && code === CHAR_COMMA) {\n          isBrace = token.isBrace = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n\n          if (scanToEnd === true) {\n            continue;\n          }\n\n          break;\n        }\n\n        if (code === CHAR_RIGHT_CURLY_BRACE) {\n          braces--;\n\n          if (braces === 0) {\n            braceEscaped = false;\n            isBrace = token.isBrace = true;\n            finished = true;\n            break;\n          }\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (code === CHAR_FORWARD_SLASH) {\n      slashes.push(index);\n      tokens.push(token);\n      token = { value: '', depth: 0, isGlob: false };\n\n      if (finished === true) continue;\n      if (prev === CHAR_DOT && index === (start + 1)) {\n        start += 2;\n        continue;\n      }\n\n      lastIndex = index + 1;\n      continue;\n    }\n\n    if (opts.noext !== true) {\n      const isExtglobChar = code === CHAR_PLUS\n        || code === CHAR_AT\n        || code === CHAR_ASTERISK\n        || code === CHAR_QUESTION_MARK\n        || code === CHAR_EXCLAMATION_MARK;\n\n      if (isExtglobChar === true && peek() === CHAR_LEFT_PARENTHESES) {\n        isGlob = token.isGlob = true;\n        isExtglob = token.isExtglob = true;\n        finished = true;\n        if (code === CHAR_EXCLAMATION_MARK && index === start) {\n          negatedExtglob = true;\n        }\n\n        if (scanToEnd === true) {\n          while (eos() !== true && (code = advance())) {\n            if (code === CHAR_BACKWARD_SLASH) {\n              backslashes = token.backslashes = true;\n              code = advance();\n              continue;\n            }\n\n            if (code === CHAR_RIGHT_PARENTHESES) {\n              isGlob = token.isGlob = true;\n              finished = true;\n              break;\n            }\n          }\n          continue;\n        }\n        break;\n      }\n    }\n\n    if (code === CHAR_ASTERISK) {\n      if (prev === CHAR_ASTERISK) isGlobstar = token.isGlobstar = true;\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_QUESTION_MARK) {\n      isGlob = token.isGlob = true;\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n      break;\n    }\n\n    if (code === CHAR_LEFT_SQUARE_BRACKET) {\n      while (eos() !== true && (next = advance())) {\n        if (next === CHAR_BACKWARD_SLASH) {\n          backslashes = token.backslashes = true;\n          advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          isBracket = token.isBracket = true;\n          isGlob = token.isGlob = true;\n          finished = true;\n          break;\n        }\n      }\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n\n    if (opts.nonegate !== true && code === CHAR_EXCLAMATION_MARK && index === start) {\n      negated = token.negated = true;\n      start++;\n      continue;\n    }\n\n    if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {\n      isGlob = token.isGlob = true;\n\n      if (scanToEnd === true) {\n        while (eos() !== true && (code = advance())) {\n          if (code === CHAR_LEFT_PARENTHESES) {\n            backslashes = token.backslashes = true;\n            code = advance();\n            continue;\n          }\n\n          if (code === CHAR_RIGHT_PARENTHESES) {\n            finished = true;\n            break;\n          }\n        }\n        continue;\n      }\n      break;\n    }\n\n    if (isGlob === true) {\n      finished = true;\n\n      if (scanToEnd === true) {\n        continue;\n      }\n\n      break;\n    }\n  }\n\n  if (opts.noext === true) {\n    isExtglob = false;\n    isGlob = false;\n  }\n\n  let base = str;\n  let prefix = '';\n  let glob = '';\n\n  if (start > 0) {\n    prefix = str.slice(0, start);\n    str = str.slice(start);\n    lastIndex -= start;\n  }\n\n  if (base && isGlob === true && lastIndex > 0) {\n    base = str.slice(0, lastIndex);\n    glob = str.slice(lastIndex);\n  } else if (isGlob === true) {\n    base = '';\n    glob = str;\n  } else {\n    base = str;\n  }\n\n  if (base && base !== '' && base !== '/' && base !== str) {\n    if (isPathSeparator(base.charCodeAt(base.length - 1))) {\n      base = base.slice(0, -1);\n    }\n  }\n\n  if (opts.unescape === true) {\n    if (glob) glob = utils.removeBackslashes(glob);\n\n    if (base && backslashes === true) {\n      base = utils.removeBackslashes(base);\n    }\n  }\n\n  const state = {\n    prefix,\n    input,\n    start,\n    base,\n    glob,\n    isBrace,\n    isBracket,\n    isGlob,\n    isExtglob,\n    isGlobstar,\n    negated,\n    negatedExtglob\n  };\n\n  if (opts.tokens === true) {\n    state.maxDepth = 0;\n    if (!isPathSeparator(code)) {\n      tokens.push(token);\n    }\n    state.tokens = tokens;\n  }\n\n  if (opts.parts === true || opts.tokens === true) {\n    let prevIndex;\n\n    for (let idx = 0; idx < slashes.length; idx++) {\n      const n = prevIndex ? prevIndex + 1 : start;\n      const i = slashes[idx];\n      const value = input.slice(n, i);\n      if (opts.tokens) {\n        if (idx === 0 && start !== 0) {\n          tokens[idx].isPrefix = true;\n          tokens[idx].value = prefix;\n        } else {\n          tokens[idx].value = value;\n        }\n        depth(tokens[idx]);\n        state.maxDepth += tokens[idx].depth;\n      }\n      if (idx !== 0 || value !== '') {\n        parts.push(value);\n      }\n      prevIndex = i;\n    }\n\n    if (prevIndex && prevIndex + 1 < input.length) {\n      const value = input.slice(prevIndex + 1);\n      parts.push(value);\n\n      if (opts.tokens) {\n        tokens[tokens.length - 1].value = value;\n        depth(tokens[tokens.length - 1]);\n        state.maxDepth += tokens[tokens.length - 1].depth;\n      }\n    }\n\n    state.slashes = slashes;\n    state.parts = parts;\n  }\n\n  return state;\n};\n\nmodule.exports = scan;\n","'use strict';\n\nconst constants = require('./constants');\nconst utils = require('./utils');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  POSIX_REGEX_SOURCE,\n  REGEX_NON_SPECIAL_CHARS,\n  REGEX_SPECIAL_CHARS_BACKREF,\n  REPLACEMENTS\n} = constants;\n\n/**\n * Helpers\n */\n\nconst expandRange = (args, options) => {\n  if (typeof options.expandRange === 'function') {\n    return options.expandRange(...args, options);\n  }\n\n  args.sort();\n  const value = `[${args.join('-')}]`;\n\n  try {\n    /* eslint-disable-next-line no-new */\n    new RegExp(value);\n  } catch (ex) {\n    return args.map(v => utils.escapeRegex(v)).join('..');\n  }\n\n  return value;\n};\n\n/**\n * Create the message for a syntax error\n */\n\nconst syntaxError = (type, char) => {\n  return `Missing ${type}: \"${char}\" - use \"\\\\\\\\${char}\" to match literal characters`;\n};\n\n/**\n * Parse the given input string.\n * @param {String} input\n * @param {Object} options\n * @return {Object}\n */\n\nconst parse = (input, options) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  input = REPLACEMENTS[input] || input;\n\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n\n  let len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  const bos = { type: 'bos', value: '', output: opts.prepend || '' };\n  const tokens = [bos];\n\n  const capture = opts.capture ? '' : '?:';\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const PLATFORM_CHARS = constants.globChars(win32);\n  const EXTGLOB_CHARS = constants.extglobChars(PLATFORM_CHARS);\n\n  const {\n    DOT_LITERAL,\n    PLUS_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOT_SLASH,\n    NO_DOTS_SLASH,\n    QMARK,\n    QMARK_NO_DOT,\n    STAR,\n    START_ANCHOR\n  } = PLATFORM_CHARS;\n\n  const globstar = opts => {\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const nodot = opts.dot ? '' : NO_DOT;\n  const qmarkNoDot = opts.dot ? QMARK : QMARK_NO_DOT;\n  let star = opts.bash === true ? globstar(opts) : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  // minimatch options support\n  if (typeof opts.noext === 'boolean') {\n    opts.noextglob = opts.noext;\n  }\n\n  const state = {\n    input,\n    index: -1,\n    start: 0,\n    dot: opts.dot === true,\n    consumed: '',\n    output: '',\n    prefix: '',\n    backtrack: false,\n    negated: false,\n    brackets: 0,\n    braces: 0,\n    parens: 0,\n    quotes: 0,\n    globstar: false,\n    tokens\n  };\n\n  input = utils.removePrefix(input, state);\n  len = input.length;\n\n  const extglobs = [];\n  const braces = [];\n  const stack = [];\n  let prev = bos;\n  let value;\n\n  /**\n   * Tokenizing helpers\n   */\n\n  const eos = () => state.index === len - 1;\n  const peek = state.peek = (n = 1) => input[state.index + n];\n  const advance = state.advance = () => input[++state.index] || '';\n  const remaining = () => input.slice(state.index + 1);\n  const consume = (value = '', num = 0) => {\n    state.consumed += value;\n    state.index += num;\n  };\n\n  const append = token => {\n    state.output += token.output != null ? token.output : token.value;\n    consume(token.value);\n  };\n\n  const negate = () => {\n    let count = 1;\n\n    while (peek() === '!' && (peek(2) !== '(' || peek(3) === '?')) {\n      advance();\n      state.start++;\n      count++;\n    }\n\n    if (count % 2 === 0) {\n      return false;\n    }\n\n    state.negated = true;\n    state.start++;\n    return true;\n  };\n\n  const increment = type => {\n    state[type]++;\n    stack.push(type);\n  };\n\n  const decrement = type => {\n    state[type]--;\n    stack.pop();\n  };\n\n  /**\n   * Push tokens onto the tokens array. This helper speeds up\n   * tokenizing by 1) helping us avoid backtracking as much as possible,\n   * and 2) helping us avoid creating extra tokens when consecutive\n   * characters are plain text. This improves performance and simplifies\n   * lookbehinds.\n   */\n\n  const push = tok => {\n    if (prev.type === 'globstar') {\n      const isBrace = state.braces > 0 && (tok.type === 'comma' || tok.type === 'brace');\n      const isExtglob = tok.extglob === true || (extglobs.length && (tok.type === 'pipe' || tok.type === 'paren'));\n\n      if (tok.type !== 'slash' && tok.type !== 'paren' && !isBrace && !isExtglob) {\n        state.output = state.output.slice(0, -prev.output.length);\n        prev.type = 'star';\n        prev.value = '*';\n        prev.output = star;\n        state.output += prev.output;\n      }\n    }\n\n    if (extglobs.length && tok.type !== 'paren') {\n      extglobs[extglobs.length - 1].inner += tok.value;\n    }\n\n    if (tok.value || tok.output) append(tok);\n    if (prev && prev.type === 'text' && tok.type === 'text') {\n      prev.value += tok.value;\n      prev.output = (prev.output || '') + tok.value;\n      return;\n    }\n\n    tok.prev = prev;\n    tokens.push(tok);\n    prev = tok;\n  };\n\n  const extglobOpen = (type, value) => {\n    const token = { ...EXTGLOB_CHARS[value], conditions: 1, inner: '' };\n\n    token.prev = prev;\n    token.parens = state.parens;\n    token.output = state.output;\n    const output = (opts.capture ? '(' : '') + token.open;\n\n    increment('parens');\n    push({ type, value, output: state.output ? '' : ONE_CHAR });\n    push({ type: 'paren', extglob: true, value: advance(), output });\n    extglobs.push(token);\n  };\n\n  const extglobClose = token => {\n    let output = token.close + (opts.capture ? ')' : '');\n    let rest;\n\n    if (token.type === 'negate') {\n      let extglobStar = star;\n\n      if (token.inner && token.inner.length > 1 && token.inner.includes('/')) {\n        extglobStar = globstar(opts);\n      }\n\n      if (extglobStar !== star || eos() || /^\\)+$/.test(remaining())) {\n        output = token.close = `)$))${extglobStar}`;\n      }\n\n      if (token.inner.includes('*') && (rest = remaining()) && /^\\.[^\\\\/.]+$/.test(rest)) {\n        // Any non-magical string (`.ts`) or even nested expression (`.{ts,tsx}`) can follow after the closing parenthesis.\n        // In this case, we need to parse the string and use it in the output of the original pattern.\n        // Suitable patterns: `/!(*.d).ts`, `/!(*.d).{ts,tsx}`, `**/!(*-dbg).@(js)`.\n        //\n        // Disabling the `fastpaths` option due to a problem with parsing strings as `.ts` in the pattern like `**/!(*.d).ts`.\n        const expression = parse(rest, { ...options, fastpaths: false }).output;\n\n        output = token.close = `)${expression})${extglobStar})`;\n      }\n\n      if (token.prev.type === 'bos') {\n        state.negatedExtglob = true;\n      }\n    }\n\n    push({ type: 'paren', extglob: true, value, output });\n    decrement('parens');\n  };\n\n  /**\n   * Fast paths\n   */\n\n  if (opts.fastpaths !== false && !/(^[*!]|[/()[\\]{}\"])/.test(input)) {\n    let backslashes = false;\n\n    let output = input.replace(REGEX_SPECIAL_CHARS_BACKREF, (m, esc, chars, first, rest, index) => {\n      if (first === '\\\\') {\n        backslashes = true;\n        return m;\n      }\n\n      if (first === '?') {\n        if (esc) {\n          return esc + first + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        if (index === 0) {\n          return qmarkNoDot + (rest ? QMARK.repeat(rest.length) : '');\n        }\n        return QMARK.repeat(chars.length);\n      }\n\n      if (first === '.') {\n        return DOT_LITERAL.repeat(chars.length);\n      }\n\n      if (first === '*') {\n        if (esc) {\n          return esc + first + (rest ? star : '');\n        }\n        return star;\n      }\n      return esc ? m : `\\\\${m}`;\n    });\n\n    if (backslashes === true) {\n      if (opts.unescape === true) {\n        output = output.replace(/\\\\/g, '');\n      } else {\n        output = output.replace(/\\\\+/g, m => {\n          return m.length % 2 === 0 ? '\\\\\\\\' : (m ? '\\\\' : '');\n        });\n      }\n    }\n\n    if (output === input && opts.contains === true) {\n      state.output = input;\n      return state;\n    }\n\n    state.output = utils.wrapOutput(output, state, options);\n    return state;\n  }\n\n  /**\n   * Tokenize input until we reach end-of-string\n   */\n\n  while (!eos()) {\n    value = advance();\n\n    if (value === '\\u0000') {\n      continue;\n    }\n\n    /**\n     * Escaped characters\n     */\n\n    if (value === '\\\\') {\n      const next = peek();\n\n      if (next === '/' && opts.bash !== true) {\n        continue;\n      }\n\n      if (next === '.' || next === ';') {\n        continue;\n      }\n\n      if (!next) {\n        value += '\\\\';\n        push({ type: 'text', value });\n        continue;\n      }\n\n      // collapse slashes to reduce potential for exploits\n      const match = /^\\\\+/.exec(remaining());\n      let slashes = 0;\n\n      if (match && match[0].length > 2) {\n        slashes = match[0].length;\n        state.index += slashes;\n        if (slashes % 2 !== 0) {\n          value += '\\\\';\n        }\n      }\n\n      if (opts.unescape === true) {\n        value = advance();\n      } else {\n        value += advance();\n      }\n\n      if (state.brackets === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n    }\n\n    /**\n     * If we're inside a regex character class, continue\n     * until we reach the closing bracket.\n     */\n\n    if (state.brackets > 0 && (value !== ']' || prev.value === '[' || prev.value === '[^')) {\n      if (opts.posix !== false && value === ':') {\n        const inner = prev.value.slice(1);\n        if (inner.includes('[')) {\n          prev.posix = true;\n\n          if (inner.includes(':')) {\n            const idx = prev.value.lastIndexOf('[');\n            const pre = prev.value.slice(0, idx);\n            const rest = prev.value.slice(idx + 2);\n            const posix = POSIX_REGEX_SOURCE[rest];\n            if (posix) {\n              prev.value = pre + posix;\n              state.backtrack = true;\n              advance();\n\n              if (!bos.output && tokens.indexOf(prev) === 1) {\n                bos.output = ONE_CHAR;\n              }\n              continue;\n            }\n          }\n        }\n      }\n\n      if ((value === '[' && peek() !== ':') || (value === '-' && peek() === ']')) {\n        value = `\\\\${value}`;\n      }\n\n      if (value === ']' && (prev.value === '[' || prev.value === '[^')) {\n        value = `\\\\${value}`;\n      }\n\n      if (opts.posix === true && value === '!' && prev.value === '[') {\n        value = '^';\n      }\n\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * If we're inside a quoted string, continue\n     * until we reach the closing double quote.\n     */\n\n    if (state.quotes === 1 && value !== '\"') {\n      value = utils.escapeRegex(value);\n      prev.value += value;\n      append({ value });\n      continue;\n    }\n\n    /**\n     * Double quotes\n     */\n\n    if (value === '\"') {\n      state.quotes = state.quotes === 1 ? 0 : 1;\n      if (opts.keepQuotes === true) {\n        push({ type: 'text', value });\n      }\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === '(') {\n      increment('parens');\n      push({ type: 'paren', value });\n      continue;\n    }\n\n    if (value === ')') {\n      if (state.parens === 0 && opts.strictBrackets === true) {\n        throw new SyntaxError(syntaxError('opening', '('));\n      }\n\n      const extglob = extglobs[extglobs.length - 1];\n      if (extglob && state.parens === extglob.parens + 1) {\n        extglobClose(extglobs.pop());\n        continue;\n      }\n\n      push({ type: 'paren', value, output: state.parens ? ')' : '\\\\)' });\n      decrement('parens');\n      continue;\n    }\n\n    /**\n     * Square brackets\n     */\n\n    if (value === '[') {\n      if (opts.nobracket === true || !remaining().includes(']')) {\n        if (opts.nobracket !== true && opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('closing', ']'));\n        }\n\n        value = `\\\\${value}`;\n      } else {\n        increment('brackets');\n      }\n\n      push({ type: 'bracket', value });\n      continue;\n    }\n\n    if (value === ']') {\n      if (opts.nobracket === true || (prev && prev.type === 'bracket' && prev.value.length === 1)) {\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      if (state.brackets === 0) {\n        if (opts.strictBrackets === true) {\n          throw new SyntaxError(syntaxError('opening', '['));\n        }\n\n        push({ type: 'text', value, output: `\\\\${value}` });\n        continue;\n      }\n\n      decrement('brackets');\n\n      const prevValue = prev.value.slice(1);\n      if (prev.posix !== true && prevValue[0] === '^' && !prevValue.includes('/')) {\n        value = `/${value}`;\n      }\n\n      prev.value += value;\n      append({ value });\n\n      // when literal brackets are explicitly disabled\n      // assume we should match with a regex character class\n      if (opts.literalBrackets === false || utils.hasRegexChars(prevValue)) {\n        continue;\n      }\n\n      const escaped = utils.escapeRegex(prev.value);\n      state.output = state.output.slice(0, -prev.value.length);\n\n      // when literal brackets are explicitly enabled\n      // assume we should escape the brackets to match literal characters\n      if (opts.literalBrackets === true) {\n        state.output += escaped;\n        prev.value = escaped;\n        continue;\n      }\n\n      // when the user specifies nothing, try to match both\n      prev.value = `(${capture}${escaped}|${prev.value})`;\n      state.output += prev.value;\n      continue;\n    }\n\n    /**\n     * Braces\n     */\n\n    if (value === '{' && opts.nobrace !== true) {\n      increment('braces');\n\n      const open = {\n        type: 'brace',\n        value,\n        output: '(',\n        outputIndex: state.output.length,\n        tokensIndex: state.tokens.length\n      };\n\n      braces.push(open);\n      push(open);\n      continue;\n    }\n\n    if (value === '}') {\n      const brace = braces[braces.length - 1];\n\n      if (opts.nobrace === true || !brace) {\n        push({ type: 'text', value, output: value });\n        continue;\n      }\n\n      let output = ')';\n\n      if (brace.dots === true) {\n        const arr = tokens.slice();\n        const range = [];\n\n        for (let i = arr.length - 1; i >= 0; i--) {\n          tokens.pop();\n          if (arr[i].type === 'brace') {\n            break;\n          }\n          if (arr[i].type !== 'dots') {\n            range.unshift(arr[i].value);\n          }\n        }\n\n        output = expandRange(range, opts);\n        state.backtrack = true;\n      }\n\n      if (brace.comma !== true && brace.dots !== true) {\n        const out = state.output.slice(0, brace.outputIndex);\n        const toks = state.tokens.slice(brace.tokensIndex);\n        brace.value = brace.output = '\\\\{';\n        value = output = '\\\\}';\n        state.output = out;\n        for (const t of toks) {\n          state.output += (t.output || t.value);\n        }\n      }\n\n      push({ type: 'brace', value, output });\n      decrement('braces');\n      braces.pop();\n      continue;\n    }\n\n    /**\n     * Pipes\n     */\n\n    if (value === '|') {\n      if (extglobs.length > 0) {\n        extglobs[extglobs.length - 1].conditions++;\n      }\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Commas\n     */\n\n    if (value === ',') {\n      let output = value;\n\n      const brace = braces[braces.length - 1];\n      if (brace && stack[stack.length - 1] === 'braces') {\n        brace.comma = true;\n        output = '|';\n      }\n\n      push({ type: 'comma', value, output });\n      continue;\n    }\n\n    /**\n     * Slashes\n     */\n\n    if (value === '/') {\n      // if the beginning of the glob is \"./\", advance the start\n      // to the current index, and don't add the \"./\" characters\n      // to the state. This greatly simplifies lookbehinds when\n      // checking for BOS characters like \"!\" and \".\" (not \"./\")\n      if (prev.type === 'dot' && state.index === state.start + 1) {\n        state.start = state.index + 1;\n        state.consumed = '';\n        state.output = '';\n        tokens.pop();\n        prev = bos; // reset \"prev\" to the first token\n        continue;\n      }\n\n      push({ type: 'slash', value, output: SLASH_LITERAL });\n      continue;\n    }\n\n    /**\n     * Dots\n     */\n\n    if (value === '.') {\n      if (state.braces > 0 && prev.type === 'dot') {\n        if (prev.value === '.') prev.output = DOT_LITERAL;\n        const brace = braces[braces.length - 1];\n        prev.type = 'dots';\n        prev.output += value;\n        prev.value += value;\n        brace.dots = true;\n        continue;\n      }\n\n      if ((state.braces + state.parens) === 0 && prev.type !== 'bos' && prev.type !== 'slash') {\n        push({ type: 'text', value, output: DOT_LITERAL });\n        continue;\n      }\n\n      push({ type: 'dot', value, output: DOT_LITERAL });\n      continue;\n    }\n\n    /**\n     * Question marks\n     */\n\n    if (value === '?') {\n      const isGroup = prev && prev.value === '(';\n      if (!isGroup && opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('qmark', value);\n        continue;\n      }\n\n      if (prev && prev.type === 'paren') {\n        const next = peek();\n        let output = value;\n\n        if (next === '<' && !utils.supportsLookbehinds()) {\n          throw new Error('Node.js v10 or higher is required for regex lookbehinds');\n        }\n\n        if ((prev.value === '(' && !/[!=<:]/.test(next)) || (next === '<' && !/<([!=]|\\w+>)/.test(remaining()))) {\n          output = `\\\\${value}`;\n        }\n\n        push({ type: 'text', value, output });\n        continue;\n      }\n\n      if (opts.dot !== true && (prev.type === 'slash' || prev.type === 'bos')) {\n        push({ type: 'qmark', value, output: QMARK_NO_DOT });\n        continue;\n      }\n\n      push({ type: 'qmark', value, output: QMARK });\n      continue;\n    }\n\n    /**\n     * Exclamation\n     */\n\n    if (value === '!') {\n      if (opts.noextglob !== true && peek() === '(') {\n        if (peek(2) !== '?' || !/[!=<:]/.test(peek(3))) {\n          extglobOpen('negate', value);\n          continue;\n        }\n      }\n\n      if (opts.nonegate !== true && state.index === 0) {\n        negate();\n        continue;\n      }\n    }\n\n    /**\n     * Plus\n     */\n\n    if (value === '+') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        extglobOpen('plus', value);\n        continue;\n      }\n\n      if ((prev && prev.value === '(') || opts.regex === false) {\n        push({ type: 'plus', value, output: PLUS_LITERAL });\n        continue;\n      }\n\n      if ((prev && (prev.type === 'bracket' || prev.type === 'paren' || prev.type === 'brace')) || state.parens > 0) {\n        push({ type: 'plus', value });\n        continue;\n      }\n\n      push({ type: 'plus', value: PLUS_LITERAL });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value === '@') {\n      if (opts.noextglob !== true && peek() === '(' && peek(2) !== '?') {\n        push({ type: 'at', extglob: true, value, output: '' });\n        continue;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Plain text\n     */\n\n    if (value !== '*') {\n      if (value === '$' || value === '^') {\n        value = `\\\\${value}`;\n      }\n\n      const match = REGEX_NON_SPECIAL_CHARS.exec(remaining());\n      if (match) {\n        value += match[0];\n        state.index += match[0].length;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Stars\n     */\n\n    if (prev && (prev.type === 'globstar' || prev.star === true)) {\n      prev.type = 'star';\n      prev.star = true;\n      prev.value += value;\n      prev.output = star;\n      state.backtrack = true;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    let rest = remaining();\n    if (opts.noextglob !== true && /^\\([^?]/.test(rest)) {\n      extglobOpen('star', value);\n      continue;\n    }\n\n    if (prev.type === 'star') {\n      if (opts.noglobstar === true) {\n        consume(value);\n        continue;\n      }\n\n      const prior = prev.prev;\n      const before = prior.prev;\n      const isStart = prior.type === 'slash' || prior.type === 'bos';\n      const afterStar = before && (before.type === 'star' || before.type === 'globstar');\n\n      if (opts.bash === true && (!isStart || (rest[0] && rest[0] !== '/'))) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      const isBrace = state.braces > 0 && (prior.type === 'comma' || prior.type === 'brace');\n      const isExtglob = extglobs.length && (prior.type === 'pipe' || prior.type === 'paren');\n      if (!isStart && prior.type !== 'paren' && !isBrace && !isExtglob) {\n        push({ type: 'star', value, output: '' });\n        continue;\n      }\n\n      // strip consecutive `/**/`\n      while (rest.slice(0, 3) === '/**') {\n        const after = input[state.index + 4];\n        if (after && after !== '/') {\n          break;\n        }\n        rest = rest.slice(3);\n        consume('/**', 3);\n      }\n\n      if (prior.type === 'bos' && eos()) {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = globstar(opts);\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && !afterStar && eos()) {\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = globstar(opts) + (opts.strictSlashes ? ')' : '|$)');\n        prev.value += value;\n        state.globstar = true;\n        state.output += prior.output + prev.output;\n        consume(value);\n        continue;\n      }\n\n      if (prior.type === 'slash' && prior.prev.type !== 'bos' && rest[0] === '/') {\n        const end = rest[1] !== void 0 ? '|$' : '';\n\n        state.output = state.output.slice(0, -(prior.output + prev.output).length);\n        prior.output = `(?:${prior.output}`;\n\n        prev.type = 'globstar';\n        prev.output = `${globstar(opts)}${SLASH_LITERAL}|${SLASH_LITERAL}${end})`;\n        prev.value += value;\n\n        state.output += prior.output + prev.output;\n        state.globstar = true;\n\n        consume(value + advance());\n\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      if (prior.type === 'bos' && rest[0] === '/') {\n        prev.type = 'globstar';\n        prev.value += value;\n        prev.output = `(?:^|${SLASH_LITERAL}|${globstar(opts)}${SLASH_LITERAL})`;\n        state.output = prev.output;\n        state.globstar = true;\n        consume(value + advance());\n        push({ type: 'slash', value: '/', output: '' });\n        continue;\n      }\n\n      // remove single star from output\n      state.output = state.output.slice(0, -prev.output.length);\n\n      // reset previous token to globstar\n      prev.type = 'globstar';\n      prev.output = globstar(opts);\n      prev.value += value;\n\n      // reset output with globstar\n      state.output += prev.output;\n      state.globstar = true;\n      consume(value);\n      continue;\n    }\n\n    const token = { type: 'star', value, output: star };\n\n    if (opts.bash === true) {\n      token.output = '.*?';\n      if (prev.type === 'bos' || prev.type === 'slash') {\n        token.output = nodot + token.output;\n      }\n      push(token);\n      continue;\n    }\n\n    if (prev && (prev.type === 'bracket' || prev.type === 'paren') && opts.regex === true) {\n      token.output = value;\n      push(token);\n      continue;\n    }\n\n    if (state.index === state.start || prev.type === 'slash' || prev.type === 'dot') {\n      if (prev.type === 'dot') {\n        state.output += NO_DOT_SLASH;\n        prev.output += NO_DOT_SLASH;\n\n      } else if (opts.dot === true) {\n        state.output += NO_DOTS_SLASH;\n        prev.output += NO_DOTS_SLASH;\n\n      } else {\n        state.output += nodot;\n        prev.output += nodot;\n      }\n\n      if (peek() !== '*') {\n        state.output += ONE_CHAR;\n        prev.output += ONE_CHAR;\n      }\n    }\n\n    push(token);\n  }\n\n  while (state.brackets > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ']'));\n    state.output = utils.escapeLast(state.output, '[');\n    decrement('brackets');\n  }\n\n  while (state.parens > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', ')'));\n    state.output = utils.escapeLast(state.output, '(');\n    decrement('parens');\n  }\n\n  while (state.braces > 0) {\n    if (opts.strictBrackets === true) throw new SyntaxError(syntaxError('closing', '}'));\n    state.output = utils.escapeLast(state.output, '{');\n    decrement('braces');\n  }\n\n  if (opts.strictSlashes !== true && (prev.type === 'star' || prev.type === 'bracket')) {\n    push({ type: 'maybe_slash', value: '', output: `${SLASH_LITERAL}?` });\n  }\n\n  // rebuild the output if we had to backtrack at any point\n  if (state.backtrack === true) {\n    state.output = '';\n\n    for (const token of state.tokens) {\n      state.output += token.output != null ? token.output : token.value;\n\n      if (token.suffix) {\n        state.output += token.suffix;\n      }\n    }\n  }\n\n  return state;\n};\n\n/**\n * Fast paths for creating regular expressions for common glob patterns.\n * This can significantly speed up processing and has very little downside\n * impact when none of the fast paths match.\n */\n\nparse.fastpaths = (input, options) => {\n  const opts = { ...options };\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  const len = input.length;\n  if (len > max) {\n    throw new SyntaxError(`Input length: ${len}, exceeds maximum allowed length: ${max}`);\n  }\n\n  input = REPLACEMENTS[input] || input;\n  const win32 = utils.isWindows(options);\n\n  // create constants based on platform, for windows or posix\n  const {\n    DOT_LITERAL,\n    SLASH_LITERAL,\n    ONE_CHAR,\n    DOTS_SLASH,\n    NO_DOT,\n    NO_DOTS,\n    NO_DOTS_SLASH,\n    STAR,\n    START_ANCHOR\n  } = constants.globChars(win32);\n\n  const nodot = opts.dot ? NO_DOTS : NO_DOT;\n  const slashDot = opts.dot ? NO_DOTS_SLASH : NO_DOT;\n  const capture = opts.capture ? '' : '?:';\n  const state = { negated: false, prefix: '' };\n  let star = opts.bash === true ? '.*?' : STAR;\n\n  if (opts.capture) {\n    star = `(${star})`;\n  }\n\n  const globstar = opts => {\n    if (opts.noglobstar === true) return star;\n    return `(${capture}(?:(?!${START_ANCHOR}${opts.dot ? DOTS_SLASH : DOT_LITERAL}).)*?)`;\n  };\n\n  const create = str => {\n    switch (str) {\n      case '*':\n        return `${nodot}${ONE_CHAR}${star}`;\n\n      case '.*':\n        return `${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*.*':\n        return `${nodot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '*/*':\n        return `${nodot}${star}${SLASH_LITERAL}${ONE_CHAR}${slashDot}${star}`;\n\n      case '**':\n        return nodot + globstar(opts);\n\n      case '**/*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${ONE_CHAR}${star}`;\n\n      case '**/*.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${slashDot}${star}${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      case '**/.*':\n        return `(?:${nodot}${globstar(opts)}${SLASH_LITERAL})?${DOT_LITERAL}${ONE_CHAR}${star}`;\n\n      default: {\n        const match = /^(.*?)\\.(\\w+)$/.exec(str);\n        if (!match) return;\n\n        const source = create(match[1]);\n        if (!source) return;\n\n        return source + DOT_LITERAL + match[2];\n      }\n    }\n  };\n\n  const output = utils.removePrefix(input, state);\n  let source = create(output);\n\n  if (source && opts.strictSlashes !== true) {\n    source += `${SLASH_LITERAL}?`;\n  }\n\n  return source;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst path = require('path');\nconst scan = require('./scan');\nconst parse = require('./parse');\nconst utils = require('./utils');\nconst constants = require('./constants');\nconst isObject = val => val && typeof val === 'object' && !Array.isArray(val);\n\n/**\n * Creates a matcher function from one or more glob patterns. The\n * returned function takes a string to match as its first argument,\n * and returns true if the string is a match. The returned matcher\n * function also takes a boolean as the second argument that, when true,\n * returns an object with additional information.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch(glob[, options]);\n *\n * const isMatch = picomatch('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @name picomatch\n * @param {String|Array} `globs` One or more glob patterns.\n * @param {Object=} `options`\n * @return {Function=} Returns a matcher function.\n * @api public\n */\n\nconst picomatch = (glob, options, returnState = false) => {\n  if (Array.isArray(glob)) {\n    const fns = glob.map(input => picomatch(input, options, returnState));\n    const arrayMatcher = str => {\n      for (const isMatch of fns) {\n        const state = isMatch(str);\n        if (state) return state;\n      }\n      return false;\n    };\n    return arrayMatcher;\n  }\n\n  const isState = isObject(glob) && glob.tokens && glob.input;\n\n  if (glob === '' || (typeof glob !== 'string' && !isState)) {\n    throw new TypeError('Expected pattern to be a non-empty string');\n  }\n\n  const opts = options || {};\n  const posix = utils.isWindows(options);\n  const regex = isState\n    ? picomatch.compileRe(glob, options)\n    : picomatch.makeRe(glob, options, false, true);\n\n  const state = regex.state;\n  delete regex.state;\n\n  let isIgnored = () => false;\n  if (opts.ignore) {\n    const ignoreOpts = { ...options, ignore: null, onMatch: null, onResult: null };\n    isIgnored = picomatch(opts.ignore, ignoreOpts, returnState);\n  }\n\n  const matcher = (input, returnObject = false) => {\n    const { isMatch, match, output } = picomatch.test(input, regex, options, { glob, posix });\n    const result = { glob, state, regex, posix, input, output, match, isMatch };\n\n    if (typeof opts.onResult === 'function') {\n      opts.onResult(result);\n    }\n\n    if (isMatch === false) {\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (isIgnored(input)) {\n      if (typeof opts.onIgnore === 'function') {\n        opts.onIgnore(result);\n      }\n      result.isMatch = false;\n      return returnObject ? result : false;\n    }\n\n    if (typeof opts.onMatch === 'function') {\n      opts.onMatch(result);\n    }\n    return returnObject ? result : true;\n  };\n\n  if (returnState) {\n    matcher.state = state;\n  }\n\n  return matcher;\n};\n\n/**\n * Test `input` with the given `regex`. This is used by the main\n * `picomatch()` function to test the input string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.test(input, regex[, options]);\n *\n * console.log(picomatch.test('foo/bar', /^(?:([^/]*?)\\/([^/]*?))$/));\n * // { isMatch: true, match: [ 'foo/', 'foo', 'bar' ], output: 'foo/bar' }\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp} `regex`\n * @return {Object} Returns an object with matching info.\n * @api public\n */\n\npicomatch.test = (input, regex, options, { glob, posix } = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected input to be a string');\n  }\n\n  if (input === '') {\n    return { isMatch: false, output: '' };\n  }\n\n  const opts = options || {};\n  const format = opts.format || (posix ? utils.toPosixSlashes : null);\n  let match = input === glob;\n  let output = (match && format) ? format(input) : input;\n\n  if (match === false) {\n    output = format ? format(input) : input;\n    match = output === glob;\n  }\n\n  if (match === false || opts.capture === true) {\n    if (opts.matchBase === true || opts.basename === true) {\n      match = picomatch.matchBase(input, regex, options, posix);\n    } else {\n      match = regex.exec(output);\n    }\n  }\n\n  return { isMatch: Boolean(match), match, output };\n};\n\n/**\n * Match the basename of a filepath.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.matchBase(input, glob[, options]);\n * console.log(picomatch.matchBase('foo/bar.js', '*.js'); // true\n * ```\n * @param {String} `input` String to test.\n * @param {RegExp|String} `glob` Glob pattern or regex created by [.makeRe](#makeRe).\n * @return {Boolean}\n * @api public\n */\n\npicomatch.matchBase = (input, glob, options, posix = utils.isWindows(options)) => {\n  const regex = glob instanceof RegExp ? glob : picomatch.makeRe(glob, options);\n  return regex.test(path.basename(input));\n};\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.isMatch(string, patterns[, options]);\n *\n * console.log(picomatch.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(picomatch.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String|Array} str The string to test.\n * @param {String|Array} patterns One or more glob patterns to use for matching.\n * @param {Object} [options] See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\npicomatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const result = picomatch.parse(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as a regex source string.\n * @api public\n */\n\npicomatch.parse = (pattern, options) => {\n  if (Array.isArray(pattern)) return pattern.map(p => picomatch.parse(p, options));\n  return parse(pattern, { ...options, fastpaths: false });\n};\n\n/**\n * Scan a glob pattern to separate the pattern into segments.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.scan(input[, options]);\n *\n * const result = picomatch.scan('!./foo/*.js');\n * console.log(result);\n * { prefix: '!./',\n *   input: '!./foo/*.js',\n *   start: 3,\n *   base: 'foo',\n *   glob: '*.js',\n *   isBrace: false,\n *   isBracket: false,\n *   isGlob: true,\n *   isExtglob: false,\n *   isGlobstar: false,\n *   negated: true }\n * ```\n * @param {String} `input` Glob pattern to scan.\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\npicomatch.scan = (input, options) => scan(input, options);\n\n/**\n * Compile a regular expression from the `state` object returned by the\n * [parse()](#parse) method.\n *\n * @param {Object} `state`\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Intended for implementors, this argument allows you to return the raw output from the parser.\n * @param {Boolean} `returnState` Adds the state to a `state` property on the returned regex. Useful for implementors and debugging.\n * @return {RegExp}\n * @api public\n */\n\npicomatch.compileRe = (state, options, returnOutput = false, returnState = false) => {\n  if (returnOutput === true) {\n    return state.output;\n  }\n\n  const opts = options || {};\n  const prepend = opts.contains ? '' : '^';\n  const append = opts.contains ? '' : '$';\n\n  let source = `${prepend}(?:${state.output})${append}`;\n  if (state && state.negated === true) {\n    source = `^(?!${source}).*$`;\n  }\n\n  const regex = picomatch.toRegex(source, options);\n  if (returnState === true) {\n    regex.state = state;\n  }\n\n  return regex;\n};\n\n/**\n * Create a regular expression from a parsed glob pattern.\n *\n * ```js\n * const picomatch = require('picomatch');\n * const state = picomatch.parse('*.js');\n * // picomatch.compileRe(state[, options]);\n *\n * console.log(picomatch.compileRe(state));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `state` The object returned from the `.parse` method.\n * @param {Object} `options`\n * @param {Boolean} `returnOutput` Implementors may use this argument to return the compiled output, instead of a regular expression. This is not exposed on the options to prevent end-users from mutating the result.\n * @param {Boolean} `returnState` Implementors may use this argument to return the state from the parsed glob with the returned regular expression.\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\npicomatch.makeRe = (input, options = {}, returnOutput = false, returnState = false) => {\n  if (!input || typeof input !== 'string') {\n    throw new TypeError('Expected a non-empty string');\n  }\n\n  let parsed = { negated: false, fastpaths: true };\n\n  if (options.fastpaths !== false && (input[0] === '.' || input[0] === '*')) {\n    parsed.output = parse.fastpaths(input, options);\n  }\n\n  if (!parsed.output) {\n    parsed = parse(input, options);\n  }\n\n  return picomatch.compileRe(parsed, options, returnOutput, returnState);\n};\n\n/**\n * Create a regular expression from the given regex source string.\n *\n * ```js\n * const picomatch = require('picomatch');\n * // picomatch.toRegex(source[, options]);\n *\n * const { output } = picomatch.parse('*.js');\n * console.log(picomatch.toRegex(output));\n * //=> /^(?:(?!\\.)(?=.)[^/]*?\\.js)$/\n * ```\n * @param {String} `source` Regular expression source string.\n * @param {Object} `options`\n * @return {RegExp}\n * @api public\n */\n\npicomatch.toRegex = (source, options) => {\n  try {\n    const opts = options || {};\n    return new RegExp(source, opts.flags || (opts.nocase ? 'i' : ''));\n  } catch (err) {\n    if (options && options.debug === true) throw err;\n    return /$^/;\n  }\n};\n\n/**\n * Picomatch constants.\n * @return {Object}\n */\n\npicomatch.constants = constants;\n\n/**\n * Expose \"picomatch\"\n */\n\nmodule.exports = picomatch;\n","'use strict';\n\nmodule.exports = require('./lib/picomatch');\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = globsToMatcher;\nfunction _picomatch() {\n  const data = _interopRequireDefault(require('picomatch'));\n  _picomatch = function () {\n    return data;\n  };\n  return data;\n}\nvar _replacePathSepForGlob = _interopRequireDefault(\n  require('./replacePathSepForGlob')\n);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst globsToMatchersMap = new Map();\nconst picomatchOptions = {\n  dot: true\n};\n\n/**\n * Converts a list of globs into a function that matches a path against the\n * globs.\n *\n * Every time picomatch is called, it will parse the glob strings and turn\n * them into regexp instances. Instead of calling picomatch repeatedly with\n * the same globs, we can use this function which will build the picomatch\n * matchers ahead of time and then have an optimized path for determining\n * whether an individual path matches.\n *\n * This function is intended to match the behavior of `micromatch()`.\n *\n * @example\n * const isMatch = globsToMatcher(['*.js', '!*.test.js']);\n * isMatch('pizza.js'); // true\n * isMatch('pizza.test.js'); // false\n */\nfunction globsToMatcher(globs) {\n  if (globs.length === 0) {\n    // Since there were no globs given, we can simply have a fast path here and\n    // return with a very simple function.\n    return () => false;\n  }\n  const matchers = globs.map(glob => {\n    if (!globsToMatchersMap.has(glob)) {\n      const isMatch = (0, _picomatch().default)(glob, picomatchOptions, true);\n      const matcher = {\n        isMatch,\n        // Matchers that are negated have different behavior than matchers that\n        // are not negated, so we need to store this information ahead of time.\n        negated: isMatch.state.negated || !!isMatch.state.negatedExtglob\n      };\n      globsToMatchersMap.set(glob, matcher);\n    }\n    return globsToMatchersMap.get(glob);\n  });\n  return path => {\n    const replacedPath = (0, _replacePathSepForGlob.default)(path);\n    let kept = undefined;\n    let negatives = 0;\n    for (let i = 0; i < matchers.length; i++) {\n      const {isMatch, negated} = matchers[i];\n      if (negated) {\n        negatives++;\n      }\n      const matched = isMatch(replacedPath);\n      if (!matched && negated) {\n        // The path was not matched, and the matcher is a negated matcher, so we\n        // want to omit the path. This means that the negative matcher is\n        // filtering the path out.\n        kept = false;\n      } else if (matched && !negated) {\n        // The path was matched, and the matcher is not a negated matcher, so we\n        // want to keep the path.\n        kept = true;\n      }\n    }\n\n    // If all of the globs were negative globs, then we want to include the path\n    // as long as it was not explicitly not kept. Otherwise only include\n    // the path if it was kept. This allows sets of globs that are all negated\n    // to allow some paths to be matched, while sets of globs that are mixed\n    // negated and non-negated to cause the negated matchers to only omit paths\n    // and not keep them.\n    return negatives === matchers.length ? kept !== false : !!kept;\n  };\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = pluralize;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction pluralize(word, count, ending = 's') {\n  return `${count} ${word}${count === 1 ? '' : ending}`;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = formatTime;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction formatTime(time, prefixPower = -3, padLeftLength = 0) {\n  const prefixes = ['n', 'μ', 'm', ''];\n  const prefixIndex = Math.max(\n    0,\n    Math.min(\n      Math.trunc(prefixPower / 3) + prefixes.length - 1,\n      prefixes.length - 1\n    )\n  );\n  return `${String(time).padStart(padLeftLength)} ${prefixes[prefixIndex]}s`;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = tryRealpath;\nfunction _gracefulFs() {\n  const data = require('graceful-fs');\n  _gracefulFs = function () {\n    return data;\n  };\n  return data;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction tryRealpath(path) {\n  try {\n    path = _gracefulFs().realpathSync.native(path);\n  } catch (error) {\n    if (error.code !== 'ENOENT' && error.code !== 'EISDIR') {\n      throw error;\n    }\n  }\n  return path;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = requireOrImportModule;\nfunction _path() {\n  const data = require('path');\n  _path = function () {\n    return data;\n  };\n  return data;\n}\nfunction _url() {\n  const data = require('url');\n  _url = function () {\n    return data;\n  };\n  return data;\n}\nvar _interopRequireDefault = _interopRequireDefault2(\n  require('./interopRequireDefault')\n);\nfunction _interopRequireDefault2(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nasync function requireOrImportModule(\n  filePath,\n  applyInteropRequireDefault = true\n) {\n  if (!(0, _path().isAbsolute)(filePath) && filePath[0] === '.') {\n    throw new Error(\n      `Jest: requireOrImportModule path must be absolute, was \"${filePath}\"`\n    );\n  }\n  try {\n    const requiredModule = require(filePath);\n    if (!applyInteropRequireDefault) {\n      return requiredModule;\n    }\n    return (0, _interopRequireDefault.default)(requiredModule).default;\n  } catch (error) {\n    if (error.code === 'ERR_REQUIRE_ESM') {\n      try {\n        const moduleUrl = (0, _url().pathToFileURL)(filePath);\n\n        // node `import()` supports URL, but TypeScript doesn't know that\n        const importedModule = await import(moduleUrl.href);\n        if (!applyInteropRequireDefault) {\n          return importedModule;\n        }\n        if (!importedModule.default) {\n          throw new Error(\n            `Jest: Failed to load ESM at ${filePath} - did you use a default export?`\n          );\n        }\n        return importedModule.default;\n      } catch (innerError) {\n        if (innerError.message === 'Not supported') {\n          throw new Error(\n            `Jest: Your version of Node does not support dynamic import - please enable it or use a .cjs file extension for file ${filePath}`\n          );\n        }\n        throw innerError;\n      }\n    } else {\n      throw error;\n    }\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = invariant;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction invariant(condition, message = '') {\n  if (!condition) {\n    throw new Error(message);\n  }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = isNonNullable;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction isNonNullable(value) {\n  return value != null;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nObject.defineProperty(exports, 'ErrorWithStack', {\n  enumerable: true,\n  get: function () {\n    return _ErrorWithStack.default;\n  }\n});\nObject.defineProperty(exports, 'clearLine', {\n  enumerable: true,\n  get: function () {\n    return _clearLine.default;\n  }\n});\nObject.defineProperty(exports, 'convertDescriptorToString', {\n  enumerable: true,\n  get: function () {\n    return _convertDescriptorToString.default;\n  }\n});\nObject.defineProperty(exports, 'createDirectory', {\n  enumerable: true,\n  get: function () {\n    return _createDirectory.default;\n  }\n});\nObject.defineProperty(exports, 'deepCyclicCopy', {\n  enumerable: true,\n  get: function () {\n    return _deepCyclicCopy.default;\n  }\n});\nObject.defineProperty(exports, 'formatTime', {\n  enumerable: true,\n  get: function () {\n    return _formatTime.default;\n  }\n});\nObject.defineProperty(exports, 'globsToMatcher', {\n  enumerable: true,\n  get: function () {\n    return _globsToMatcher.default;\n  }\n});\nObject.defineProperty(exports, 'installCommonGlobals', {\n  enumerable: true,\n  get: function () {\n    return _installCommonGlobals.default;\n  }\n});\nObject.defineProperty(exports, 'interopRequireDefault', {\n  enumerable: true,\n  get: function () {\n    return _interopRequireDefault.default;\n  }\n});\nObject.defineProperty(exports, 'invariant', {\n  enumerable: true,\n  get: function () {\n    return _invariant.default;\n  }\n});\nObject.defineProperty(exports, 'isInteractive', {\n  enumerable: true,\n  get: function () {\n    return _isInteractive.default;\n  }\n});\nObject.defineProperty(exports, 'isNonNullable', {\n  enumerable: true,\n  get: function () {\n    return _isNonNullable.default;\n  }\n});\nObject.defineProperty(exports, 'isPromise', {\n  enumerable: true,\n  get: function () {\n    return _isPromise.default;\n  }\n});\nObject.defineProperty(exports, 'pluralize', {\n  enumerable: true,\n  get: function () {\n    return _pluralize.default;\n  }\n});\nexports.preRunMessage = void 0;\nObject.defineProperty(exports, 'replacePathSepForGlob', {\n  enumerable: true,\n  get: function () {\n    return _replacePathSepForGlob.default;\n  }\n});\nObject.defineProperty(exports, 'requireOrImportModule', {\n  enumerable: true,\n  get: function () {\n    return _requireOrImportModule.default;\n  }\n});\nObject.defineProperty(exports, 'setGlobal', {\n  enumerable: true,\n  get: function () {\n    return _setGlobal.default;\n  }\n});\nexports.specialChars = void 0;\nObject.defineProperty(exports, 'testPathPatternToRegExp', {\n  enumerable: true,\n  get: function () {\n    return _testPathPatternToRegExp.default;\n  }\n});\nObject.defineProperty(exports, 'tryRealpath', {\n  enumerable: true,\n  get: function () {\n    return _tryRealpath.default;\n  }\n});\nvar preRunMessage = _interopRequireWildcard(require('./preRunMessage'));\nexports.preRunMessage = preRunMessage;\nvar specialChars = _interopRequireWildcard(require('./specialChars'));\nexports.specialChars = specialChars;\nvar _clearLine = _interopRequireDefault2(require('./clearLine'));\nvar _createDirectory = _interopRequireDefault2(require('./createDirectory'));\nvar _ErrorWithStack = _interopRequireDefault2(require('./ErrorWithStack'));\nvar _installCommonGlobals = _interopRequireDefault2(\n  require('./installCommonGlobals')\n);\nvar _interopRequireDefault = _interopRequireDefault2(\n  require('./interopRequireDefault')\n);\nvar _isInteractive = _interopRequireDefault2(require('./isInteractive'));\nvar _isPromise = _interopRequireDefault2(require('./isPromise'));\nvar _setGlobal = _interopRequireDefault2(require('./setGlobal'));\nvar _deepCyclicCopy = _interopRequireDefault2(require('./deepCyclicCopy'));\nvar _convertDescriptorToString = _interopRequireDefault2(\n  require('./convertDescriptorToString')\n);\nvar _replacePathSepForGlob = _interopRequireDefault2(\n  require('./replacePathSepForGlob')\n);\nvar _testPathPatternToRegExp = _interopRequireDefault2(\n  require('./testPathPatternToRegExp')\n);\nvar _globsToMatcher = _interopRequireDefault2(require('./globsToMatcher'));\nvar _pluralize = _interopRequireDefault2(require('./pluralize'));\nvar _formatTime = _interopRequireDefault2(require('./formatTime'));\nvar _tryRealpath = _interopRequireDefault2(require('./tryRealpath'));\nvar _requireOrImportModule = _interopRequireDefault2(\n  require('./requireOrImportModule')\n);\nvar _invariant = _interopRequireDefault2(require('./invariant'));\nvar _isNonNullable = _interopRequireDefault2(require('./isNonNullable'));\nfunction _interopRequireDefault2(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { getType } from 'jest-get-type';\n\nimport { AsymmetricMatcher } from './asymmetricMatchers';\n\nimport type {\n  Expect,\n  MatcherState,\n  MatchersObject,\n  SyncExpectationResult,\n} from './types';\nimport type { Tester } from '@jest/expect-utils';\n\n// Global matchers object holds the list of available matchers and\n// the state, that can hold matcher specific values that change over time.\nconst JEST_MATCHERS_OBJECT = Symbol.for('$$jest-matchers-object');\n\n// Notes a built-in/internal Jest matcher.\n// Jest may override the stack trace of Errors thrown by internal matchers.\nexport const INTERNAL_MATCHER_FLAG = Symbol.for('$$jest-internal-matcher');\n\nif (!Object.prototype.hasOwnProperty.call(globalThis, JEST_MATCHERS_OBJECT)) {\n  const defaultState: MatcherState = {\n    assertionCalls: 0,\n    expectedAssertionsNumber: null,\n    isExpectingAssertions: false,\n    numPassingAsserts: 0,\n    suppressedErrors: [], // errors that are not thrown immediately.\n  };\n  Object.defineProperty(globalThis, JEST_MATCHERS_OBJECT, {\n    value: {\n      customEqualityTesters: [],\n      matchers: Object.create(null),\n      state: defaultState,\n    },\n  });\n}\n\nexport const getState = <State extends MatcherState = MatcherState>(): State =>\n  (globalThis as any)[JEST_MATCHERS_OBJECT].state;\n\nexport const setState = <State extends MatcherState = MatcherState>(\n  state: Partial<State>,\n): void => {\n  Object.assign((globalThis as any)[JEST_MATCHERS_OBJECT].state, state);\n};\n\nexport const getMatchers = (): MatchersObject =>\n  (globalThis as any)[JEST_MATCHERS_OBJECT].matchers;\n\nexport const setMatchers = (\n  matchers: MatchersObject,\n  isInternal: boolean,\n  expect: Expect,\n): void => {\n  Object.keys(matchers).forEach(key => {\n    const matcher = matchers[key];\n\n    if (typeof matcher !== 'function') {\n      throw new TypeError(\n          `expect.extend: \\`${key}\\` is not a valid matcher. Must be a function, is \"${getType(\n              matcher,\n          )}\"`,\n      );\n    }\n\n    Object.defineProperty(matcher, INTERNAL_MATCHER_FLAG, {\n      value: isInternal,\n    });\n\n    if (!isInternal) {\n      // expect is defined\n\n      class CustomMatcher extends AsymmetricMatcher<\n        [unknown, ...Array<unknown>]\n      > {\n        constructor(inverse = false, ...sample: [unknown, ...Array<unknown>]) {\n          super(sample, inverse);\n        }\n\n        asymmetricMatch(other: unknown) {\n          const { pass } = matcher.call(\n              this.getMatcherContext(),\n              other,\n              ...this.sample,\n          ) as SyncExpectationResult;\n\n          return this.inverse ? !pass : pass;\n        }\n\n        toString() {\n          return `${this.inverse ? 'not.' : ''}${key}`;\n        }\n\n        override getExpectedType() {\n          return 'any';\n        }\n\n        override toAsymmetricMatcher() {\n          return `${this.toString()}<${this.sample.map(String).join(', ')}>`;\n        }\n      }\n\n      Object.defineProperty(expect, key, {\n        configurable: true,\n        enumerable: true,\n        value: (...sample: [unknown, ...Array<unknown>]) =>\n          new CustomMatcher(false, ...sample),\n        writable: true,\n      });\n      Object.defineProperty(expect.not, key, {\n        configurable: true,\n        enumerable: true,\n        value: (...sample: [unknown, ...Array<unknown>]) =>\n          new CustomMatcher(true, ...sample),\n        writable: true,\n      });\n    }\n  });\n\n  Object.assign((globalThis as any)[JEST_MATCHERS_OBJECT].matchers, matchers);\n};\n\nexport const getCustomEqualityTesters = (): Array<Tester> =>\n  (globalThis as any)[JEST_MATCHERS_OBJECT].customEqualityTesters;\n\nexport const addCustomEqualityTesters = (newTesters: Array<Tester>): void => {\n  if (!Array.isArray(newTesters)) {\n    throw new TypeError(\n        `expect.customEqualityTesters: Must be set to an array of Testers. Was given \"${getType(\n            newTesters,\n        )}\"`,\n    );\n  }\n\n  (globalThis as any)[JEST_MATCHERS_OBJECT].customEqualityTesters.push(\n      ...newTesters,\n  );\n};\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {\n  equals,\n  getObjectKeys,\n  isA,\n  iterableEquality,\n  subsetEquality,\n} from '@jest/expect-utils';\nimport * as matcherUtils from 'jest-matcher-utils';\nimport { pluralize } from 'jest-util';\n\nimport { getCustomEqualityTesters, getState } from './jestMatchersObject';\n\nimport type {\n  AsymmetricMatcher as AsymmetricMatcherInterface,\n  MatcherContext,\n  MatcherState,\n} from './types';\n\nconst functionToString = Function.prototype.toString;\n\nfunction fnNameFor(func: () => unknown) {\n  if (func.name)\n    return func.name;\n\n  const matches = functionToString\n      .call(func)\n      .match(/^(?:async)?\\s*function\\s*\\*?\\s*([\\w$]+)\\s*\\(/);\n  return matches ? matches[1] : '<anonymous>';\n}\n\nconst utils = Object.freeze({\n  ...matcherUtils,\n  iterableEquality,\n  subsetEquality,\n});\n\nfunction getPrototype(obj: object) {\n  if (Object.getPrototypeOf)\n    return Object.getPrototypeOf(obj);\n\n  if (obj.constructor.prototype === obj)\n    return null;\n\n  return obj.constructor.prototype;\n}\n\nexport function hasProperty(\n  obj: object | null,\n  property: string | symbol,\n): boolean {\n  if (!obj)\n    return false;\n\n  if (Object.prototype.hasOwnProperty.call(obj, property))\n    return true;\n\n  return hasProperty(getPrototype(obj), property);\n}\n\nexport abstract class AsymmetricMatcher<T>\nimplements AsymmetricMatcherInterface {\n  $$typeof = Symbol.for('jest.asymmetricMatcher');\n\n  constructor(protected sample: T, protected inverse = false) { }\n\n  protected getMatcherContext(): MatcherContext {\n    return {\n      customTesters: getCustomEqualityTesters(),\n\n      dontThrow: () => { },\n      ...getState<MatcherState>(),\n      equals,\n      isNot: this.inverse,\n      utils,\n    };\n  }\n\n  abstract asymmetricMatch(other: unknown): boolean;\n  abstract toString(): string;\n  getExpectedType?(): string;\n  toAsymmetricMatcher?(): string;\n}\n\nclass Any extends AsymmetricMatcher<any> {\n  constructor(sample: unknown) {\n    if (typeof sample === 'undefined') {\n      throw new TypeError(\n          'any() expects to be passed a constructor function. ' +\n        'Please pass one or use anything() to match any object.',\n      );\n    }\n    super(sample);\n  }\n\n  asymmetricMatch(other: unknown) {\n    if (this.sample === String)\n      return typeof other === 'string' || other instanceof String;\n\n    if (this.sample === Number)\n      return typeof other === 'number' || other instanceof Number;\n\n    if (this.sample === Function)\n      return typeof other === 'function' || other instanceof Function;\n\n    if (this.sample === Boolean)\n      return typeof other === 'boolean' || other instanceof Boolean;\n\n    if (this.sample === BigInt)\n      return typeof other === 'bigint' || other instanceof BigInt;\n\n    if (this.sample === Symbol)\n      return typeof other === 'symbol' || other instanceof Symbol;\n\n    if (this.sample === Object)\n      return typeof other === 'object';\n\n    return other instanceof this.sample;\n  }\n\n  toString() {\n    return 'Any';\n  }\n\n  override getExpectedType() {\n    if (this.sample === String)\n      return 'string';\n\n    if (this.sample === Number)\n      return 'number';\n\n    if (this.sample === Function)\n      return 'function';\n\n    if (this.sample === Object)\n      return 'object';\n\n    if (this.sample === Boolean)\n      return 'boolean';\n\n    return fnNameFor(this.sample);\n  }\n\n  override toAsymmetricMatcher() {\n    return `Any<${fnNameFor(this.sample)}>`;\n  }\n}\n\nclass Anything extends AsymmetricMatcher<void> {\n  asymmetricMatch(other: unknown) {\n    // eslint-disable-next-line eqeqeq\n    return other != null;\n  }\n\n  toString() {\n    return 'Anything';\n  }\n\n  // No getExpectedType method, because it matches either null or undefined.\n\n  override toAsymmetricMatcher() {\n    return 'Anything';\n  }\n}\n\nclass ArrayContaining extends AsymmetricMatcher<Array<unknown>> {\n  constructor(sample: Array<unknown>, inverse = false) {\n    super(sample, inverse);\n  }\n\n  asymmetricMatch(other: unknown) {\n    if (!Array.isArray(this.sample)) {\n      throw new Error(\n          `You must provide an array to ${this.toString()}, not '${typeof this\n              .sample}'.`,\n      );\n    }\n\n    const matcherContext = this.getMatcherContext();\n    const result =\n      this.sample.length === 0 ||\n      (Array.isArray(other) &&\n        this.sample.every(item =>\n          other.some(another =>\n            equals(item, another, matcherContext.customTesters),\n          ),\n        ));\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `Array${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  override getExpectedType() {\n    return 'array';\n  }\n}\n\nclass ObjectContaining extends AsymmetricMatcher<\n  Record<string | symbol, unknown>\n> {\n  constructor(sample: Record<string | symbol, unknown>, inverse = false) {\n    super(sample, inverse);\n  }\n\n  asymmetricMatch(other: any) {\n    if (typeof this.sample !== 'object') {\n      throw new Error(\n          `You must provide an object to ${this.toString()}, not '${typeof this\n              .sample}'.`,\n      );\n    }\n\n    let result = true;\n\n    const matcherContext = this.getMatcherContext();\n    const objectKeys = getObjectKeys(this.sample);\n\n    for (const key of objectKeys) {\n      if (\n        !hasProperty(other, key) ||\n        !equals(this.sample[key], other[key], matcherContext.customTesters)\n      ) {\n        result = false;\n        break;\n      }\n    }\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `Object${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  override getExpectedType() {\n    return 'object';\n  }\n}\n\nclass StringContaining extends AsymmetricMatcher<string> {\n  constructor(sample: string, inverse = false) {\n    if (!isA('String', sample))\n      throw new Error('Expected is not a string');\n    super(sample, inverse);\n  }\n\n  asymmetricMatch(other: unknown) {\n    const result = isA<string>('String', other) && other.includes(this.sample);\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `String${this.inverse ? 'Not' : ''}Containing`;\n  }\n\n  override getExpectedType() {\n    return 'string';\n  }\n}\n\nclass StringMatching extends AsymmetricMatcher<RegExp> {\n  constructor(sample: string | RegExp, inverse = false) {\n    if (!isA('String', sample) && !isA('RegExp', sample))\n      throw new Error('Expected is not a String or a RegExp');\n    super(new RegExp(sample), inverse);\n  }\n\n  asymmetricMatch(other: unknown) {\n    const result = isA<string>('String', other) && this.sample.test(other);\n\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `String${this.inverse ? 'Not' : ''}Matching`;\n  }\n\n  override getExpectedType() {\n    return 'string';\n  }\n}\n\nclass CloseTo extends AsymmetricMatcher<number> {\n  private readonly precision: number;\n\n  constructor(sample: number, precision = 2, inverse = false) {\n    if (!isA('Number', sample))\n      throw new Error('Expected is not a Number');\n\n    if (!isA('Number', precision))\n      throw new Error('Precision is not a Number');\n\n    super(sample);\n    this.inverse = inverse;\n    this.precision = precision;\n  }\n\n  asymmetricMatch(other: unknown) {\n    if (!isA<number>('Number', other))\n      return false;\n    let result = false;\n    if (other === Infinity && this.sample === Infinity) {\n      result = true; // Infinity - Infinity is NaN\n    } else if (other === -Infinity && this.sample === -Infinity) {\n      result = true; // -Infinity - -Infinity is NaN\n    } else {\n      result =\n        Math.abs(this.sample - other) < Math.pow(10, -this.precision) / 2;\n    }\n    return this.inverse ? !result : result;\n  }\n\n  toString() {\n    return `Number${this.inverse ? 'Not' : ''}CloseTo`;\n  }\n\n  override getExpectedType() {\n    return 'number';\n  }\n\n  override toAsymmetricMatcher(): string {\n    return [\n      this.toString(),\n      this.sample,\n      `(${pluralize('digit', this.precision)})`,\n    ].join(' ');\n  }\n}\n\nexport const any = (expectedObject: unknown): Any => new Any(expectedObject);\nexport const anything = (): Anything => new Anything();\nexport const arrayContaining = (sample: Array<unknown>): ArrayContaining =>\n  new ArrayContaining(sample);\nexport const arrayNotContaining = (sample: Array<unknown>): ArrayContaining =>\n  new ArrayContaining(sample, true);\nexport const objectContaining = (\n  sample: Record<string, unknown>,\n): ObjectContaining => new ObjectContaining(sample);\nexport const objectNotContaining = (\n  sample: Record<string, unknown>,\n): ObjectContaining => new ObjectContaining(sample, true);\nexport const stringContaining = (expected: string): StringContaining =>\n  new StringContaining(expected);\nexport const stringNotContaining = (expected: string): StringContaining =>\n  new StringContaining(expected, true);\nexport const stringMatching = (expected: string | RegExp): StringMatching =>\n  new StringMatching(expected);\nexport const stringNotMatching = (expected: string | RegExp): StringMatching =>\n  new StringMatching(expected, true);\nexport const closeTo = (expected: number, precision?: number): CloseTo =>\n  new CloseTo(expected, precision);\nexport const notCloseTo = (expected: number, precision?: number): CloseTo =>\n  new CloseTo(expected, precision, true);\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {\n  EXPECTED_COLOR,\n  RECEIVED_COLOR,\n  matcherHint,\n  pluralize,\n} from 'jest-matcher-utils';\n\nimport { getState, setState } from './jestMatchersObject';\n\nimport type { Expect, ExpectedAssertionsErrors } from './types';\n\nconst resetAssertionsLocalState = () => {\n  setState({\n    assertionCalls: 0,\n    expectedAssertionsNumber: null,\n    isExpectingAssertions: false,\n    numPassingAsserts: 0,\n  });\n};\n\n// Create and format all errors related to the mismatched number of `expect`\n// calls and reset the matcher's state.\nconst extractExpectedAssertionsErrors: Expect['extractExpectedAssertionsErrors'] =\n  () => {\n    const result: ExpectedAssertionsErrors = [];\n    const {\n      assertionCalls,\n      expectedAssertionsNumber,\n      expectedAssertionsNumberError,\n      isExpectingAssertions,\n      isExpectingAssertionsError,\n    } = getState();\n\n    resetAssertionsLocalState();\n\n    if (\n      typeof expectedAssertionsNumber === 'number' &&\n      assertionCalls !== expectedAssertionsNumber\n    ) {\n      const numOfAssertionsExpected = EXPECTED_COLOR(\n          pluralize('assertion', expectedAssertionsNumber),\n      );\n\n      expectedAssertionsNumberError!.message =\n        `${matcherHint('.assertions', '', expectedAssertionsNumber.toString(), {\n          isDirectExpectCall: true,\n        })}\\n\\n` +\n        `Expected ${numOfAssertionsExpected} to be called but received ${RECEIVED_COLOR(\n            pluralize('assertion call', assertionCalls || 0),\n        )}.`;\n\n      result.push({\n        actual: assertionCalls.toString(),\n        error: expectedAssertionsNumberError!,\n        expected: expectedAssertionsNumber.toString(),\n      });\n    }\n    if (isExpectingAssertions && assertionCalls === 0) {\n      const expected = EXPECTED_COLOR('at least one assertion');\n      const received = RECEIVED_COLOR('received none');\n\n      isExpectingAssertionsError!.message = `${matcherHint(\n          '.hasAssertions',\n          '',\n          '',\n          { isDirectExpectCall: true },\n      )}\\n\\nExpected ${expected} to be called but ${received}.`;\n\n      result.push({\n        actual: 'none',\n        error: isExpectingAssertionsError!,\n        expected: 'at least one',\n      });\n    }\n\n    return result;\n  };\n\nexport default extractExpectedAssertionsErrors;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport {\n  EXPECTED_COLOR,\n  INVERTED_COLOR,\n  RECEIVED_COLOR,\n  printReceived,\n  stringify,\n} from 'jest-matcher-utils';\n\n// Format substring but do not enclose in double quote marks.\n// The replacement is compatible with pretty-format package.\nconst printSubstring = (val: string): string => val.replace(/\"|\\\\/g, '\\\\$&');\n\nexport const printReceivedStringContainExpectedSubstring = (\n  received: string,\n  start: number,\n  length: number, // not end\n): string =>\n  RECEIVED_COLOR(\n      `\"${printSubstring(received.slice(0, start))}${INVERTED_COLOR(\n          printSubstring(received.slice(start, start + length)),\n      )}${printSubstring(received.slice(start + length))}\"`,\n  );\n\nexport const printReceivedStringContainExpectedResult = (\n  received: string,\n  result: RegExpExecArray | null,\n): string =>\n  result === null\n    ? printReceived(received)\n    : printReceivedStringContainExpectedSubstring(\n        received,\n        result.index,\n        result[0].length,\n    );\n\n// The serialized array is compatible with pretty-format package min option.\n// However, items have default stringify depth (instead of depth - 1)\n// so expected item looks consistent by itself and enclosed in the array.\nexport const printReceivedArrayContainExpectedItem = (\n  received: Array<unknown>,\n  index: number,\n): string =>\n  RECEIVED_COLOR(\n      `[${received\n          .map((item, i) => {\n            const stringified = stringify(item);\n            return i === index ? INVERTED_COLOR(stringified) : stringified;\n          })\n          .join(', ')}]`,\n  );\n\nexport const printCloseTo = (\n  receivedDiff: number,\n  expectedDiff: number,\n  precision: number,\n  isNot: boolean | undefined,\n): string => {\n  const receivedDiffString = stringify(receivedDiff);\n  const expectedDiffString = receivedDiffString.includes('e')\n    ? // toExponential arg is number of digits after the decimal point.\n    expectedDiff.toExponential(0)\n    : 0 <= precision && precision < 20\n      ? // toFixed arg is number of digits after the decimal point.\n      // It may be a value between 0 and 20 inclusive.\n      // Implementations may optionally support a larger range of values.\n      expectedDiff.toFixed(precision + 1)\n      : stringify(expectedDiff);\n\n  return (\n    `Expected precision:  ${isNot ? '    ' : ''}  ${stringify(precision)}\\n` +\n    `Expected difference: ${isNot ? 'not ' : ''}< ${EXPECTED_COLOR(\n        expectedDiffString,\n    )}\\n` +\n    `Received difference: ${isNot ? '    ' : ''}  ${RECEIVED_COLOR(\n        receivedDiffString,\n    )}`\n  );\n};\n\nexport const printExpectedConstructorName = (\n  label: string,\n  expected: Function,\n): string => `${printConstructorName(label, expected, false, true)}\\n`;\n\nexport const printExpectedConstructorNameNot = (\n  label: string,\n  expected: Function,\n): string => `${printConstructorName(label, expected, true, true)}\\n`;\n\nexport const printReceivedConstructorName = (\n  label: string,\n  received: Function,\n): string => `${printConstructorName(label, received, false, false)}\\n`;\n\n// Do not call function if received is equal to expected.\nexport const printReceivedConstructorNameNot = (\n  label: string,\n  received: Function,\n  expected: Function,\n): string =>\n  typeof expected.name === 'string' &&\n  expected.name.length !== 0 &&\n  typeof received.name === 'string' &&\n  received.name.length !== 0\n    ? `${printConstructorName(label, received, true, false)} ${\n      Object.getPrototypeOf(received) === expected\n        ? 'extends'\n        : 'extends … extends'\n    } ${EXPECTED_COLOR(expected.name)}\\n`\n    : `${printConstructorName(label, received, false, false)}\\n`;\n\nconst printConstructorName = (\n  label: string,\n  constructor: Function,\n  isNot: boolean,\n  isExpected: boolean,\n): string =>\n  typeof constructor.name !== 'string'\n    ? `${label} name is not a string`\n    : constructor.name.length === 0\n      ? `${label} name is an empty string`\n      : `${label}: ${!isNot ? '' : isExpected ? 'not ' : '    '}${\n        isExpected\n          ? EXPECTED_COLOR(constructor.name)\n          : RECEIVED_COLOR(constructor.name)\n      }`;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n/* eslint-disable eqeqeq */\n\nimport {\n  arrayBufferEquality,\n  equals,\n  getObjectSubset,\n  getPath,\n  iterableEquality,\n  pathAsArray,\n  sparseArrayEquality,\n  subsetEquality,\n  typeEquality,\n} from '@jest/expect-utils';\nimport { getType, isPrimitive } from 'jest-get-type';\nimport {\n  DIM_COLOR,\n  EXPECTED_COLOR,\n\n  RECEIVED_COLOR,\n  SUGGEST_TO_CONTAIN_EQUAL,\n  ensureExpectedIsNonNegativeInteger,\n  ensureNoExpected,\n  ensureNumbers,\n  getLabelPrinter,\n  matcherErrorMessage,\n  matcherHint,\n  printDiffOrStringify,\n  printExpected,\n  printReceived,\n  printWithType,\n  stringify\n} from 'jest-matcher-utils';\n\nimport {\n  printCloseTo,\n  printExpectedConstructorName,\n  printExpectedConstructorNameNot,\n  printReceivedArrayContainExpectedItem,\n  printReceivedConstructorName,\n  printReceivedConstructorNameNot,\n  printReceivedStringContainExpectedResult,\n  printReceivedStringContainExpectedSubstring,\n} from './print';\n\nimport type { MatchersObject } from './types';\nimport type { MatcherHintOptions } from 'jest-matcher-utils';\n\n// Omit colon and one or more spaces, so can call getLabelPrinter.\nconst EXPECTED_LABEL = 'Expected';\nconst RECEIVED_LABEL = 'Received';\nconst EXPECTED_VALUE_LABEL = 'Expected value';\nconst RECEIVED_VALUE_LABEL = 'Received value';\n\n// The optional property of matcher context is true if undefined.\nconst isExpand = (expand?: boolean): boolean => expand !== false;\n\nconst toStrictEqualTesters = [\n  iterableEquality,\n  typeEquality,\n  sparseArrayEquality,\n  arrayBufferEquality,\n];\n\ntype ContainIterable =\n  | Array<unknown>\n  | Set<unknown>\n  | NodeListOf<Node>\n  | DOMTokenList\n  | HTMLCollectionOf<any>;\n\nconst matchers: MatchersObject = {\n  toBe(received: unknown, expected: unknown) {\n    const matcherName = 'toBe';\n    const options: MatcherHintOptions = {\n      comment: 'Object.is equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = Object.is(received, expected);\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: not ${printExpected(expected)}`\n      : () => {\n        const expectedType = getType(expected);\n\n        let deepEqualityName = null;\n        if (expectedType !== 'map' && expectedType !== 'set') {\n          // If deep equality passes when referential identity fails,\n          // but exclude map and set until review of their equality logic.\n          if (\n            equals(\n                received,\n                expected,\n                [...this.customTesters, ...toStrictEqualTesters],\n                true,\n            )\n          )\n            deepEqualityName = 'toStrictEqual';\n          else if (\n            equals(received, expected, [\n              ...this.customTesters,\n              iterableEquality,\n            ])\n          )\n            deepEqualityName = 'toEqual';\n\n        }\n\n        return (\n\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          (deepEqualityName !== null\n            ? `${DIM_COLOR(\n                `If it should pass with deep equality, replace \"${matcherName}\" with \"${deepEqualityName}\"`,\n            )}\\n\\n`\n            : '') +\n          printDiffOrStringify(\n              expected,\n              received,\n              EXPECTED_LABEL,\n              RECEIVED_LABEL,\n              isExpand(this.expand),\n          )\n        );\n      };\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return { actual: received, expected, message, name: matcherName, pass };\n  },\n\n  toBeCloseTo(received: number, expected: number, precision = 2) {\n    const matcherName = 'toBeCloseTo';\n    const secondArgument = arguments.length === 3 ? 'precision' : undefined;\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n      secondArgument,\n      secondArgumentColor: (arg: string) => arg,\n    };\n\n    if (typeof expected !== 'number') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${EXPECTED_COLOR('expected')} value must be a number`,\n              printWithType('Expected', expected, printExpected),\n          ),\n      );\n    }\n\n    if (typeof received !== 'number') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR('received')} value must be a number`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    let pass = false;\n    let expectedDiff = 0;\n    let receivedDiff = 0;\n\n    if (received === Infinity && expected === Infinity) {\n      pass = true; // Infinity - Infinity is NaN\n    } else if (received === -Infinity && expected === -Infinity) {\n      pass = true; // -Infinity - -Infinity is NaN\n    } else {\n      expectedDiff = Math.pow(10, -precision) / 2;\n      receivedDiff = Math.abs(expected - received);\n      pass = receivedDiff < expectedDiff;\n    }\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: not ${printExpected(expected)}\\n` +\n        (receivedDiff === 0\n          ? ''\n          : `Received:     ${printReceived(received)}\\n` +\n          `\\n${printCloseTo(receivedDiff, expectedDiff, precision, isNot)}`)\n      : () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: ${printExpected(expected)}\\n` +\n        `Received: ${printReceived(received)}\\n` +\n        '\\n' +\n        printCloseTo(receivedDiff, expectedDiff, precision, isNot);\n\n    return { message, pass };\n  },\n\n  toBeDefined(received: unknown, expected: void) {\n    const matcherName = 'toBeDefined';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received !== void 0;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeFalsy(received: unknown, expected: void) {\n    const matcherName = 'toBeFalsy';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = !received;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeGreaterThan(received: number | bigint, expected: number | bigint) {\n    const matcherName = 'toBeGreaterThan';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received > expected;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} > ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}   ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeGreaterThanOrEqual(received: number | bigint, expected: number | bigint) {\n    const matcherName = 'toBeGreaterThanOrEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received >= expected;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} >= ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}    ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeInstanceOf(received: any, expected: Function) {\n    const matcherName = 'toBeInstanceOf';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof expected !== 'function') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${EXPECTED_COLOR('expected')} value must be a function`,\n              printWithType('Expected', expected, printExpected),\n          ),\n      );\n    }\n\n    const pass = received instanceof expected;\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printExpectedConstructorNameNot('Expected constructor', expected) +\n        (typeof received.constructor === 'function' &&\n          received.constructor !== expected\n          ? printReceivedConstructorNameNot(\n              'Received constructor',\n              received.constructor,\n              expected,\n          )\n          : '')\n      : () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printExpectedConstructorName('Expected constructor', expected) +\n        (isPrimitive(received) || Object.getPrototypeOf(received) === null\n          ? `\\nReceived value has no prototype\\nReceived value: ${printReceived(\n              received,\n          )}`\n          : typeof received.constructor !== 'function'\n            ? `\\nReceived value: ${printReceived(received)}`\n            : printReceivedConstructorName(\n                'Received constructor',\n                received.constructor,\n            ));\n\n    return { message, pass };\n  },\n\n  toBeLessThan(received: number | bigint, expected: number | bigint) {\n    const matcherName = 'toBeLessThan';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received < expected;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} < ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}   ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeLessThanOrEqual(received: number | bigint, expected: number | bigint) {\n    const matcherName = 'toBeLessThanOrEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n    ensureNumbers(received, expected, matcherName, options);\n\n    const pass = received <= expected;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      `Expected:${isNot ? ' not' : ''} <= ${printExpected(expected)}\\n` +\n      `Received:${isNot ? '    ' : ''}    ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeNaN(received: any, expected: void) {\n    const matcherName = 'toBeNaN';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = Number.isNaN(received);\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeNull(received: unknown, expected: void) {\n    const matcherName = 'toBeNull';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received === null;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeTruthy(received: unknown, expected: void) {\n    const matcherName = 'toBeTruthy';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = !!received;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toBeUndefined(received: unknown, expected: void) {\n    const matcherName = 'toBeUndefined';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n\n    const pass = received === void 0;\n\n    const message = () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      `Received: ${printReceived(received)}`;\n\n    return { message, pass };\n  },\n\n  toContain(received: ContainIterable | string, expected: unknown) {\n    const matcherName = 'toContain';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      comment: 'indexOf',\n      isNot,\n      promise: this.promise,\n    };\n\n    if (received == null) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    if (typeof received === 'string') {\n      const wrongTypeErrorMessage = `${EXPECTED_COLOR(\n          'expected',\n      )} value must be a string if ${RECEIVED_COLOR(\n          'received',\n      )} value is a string`;\n\n      if (typeof expected !== 'string') {\n        throw new Error(\n            matcherErrorMessage(\n                matcherHint(matcherName, received, String(expected), options),\n                wrongTypeErrorMessage,\n\n                printWithType('Expected', expected, printExpected) +\n            '\\n' +\n            printWithType('Received', received, printReceived),\n            ),\n        );\n      }\n\n      const index = received.indexOf(String(expected));\n      const pass = index !== -1;\n\n      const message = () => {\n        const labelExpected = `Expected ${typeof expected === 'string' ? 'substring' : 'value'\n        }`;\n        const labelReceived = 'Received string';\n        const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n        return (\n\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n              expected,\n          )}\\n` +\n          `${printLabel(labelReceived)}${isNot ? '    ' : ''}${isNot\n            ? printReceivedStringContainExpectedSubstring(\n                received,\n                index,\n                String(expected).length,\n            )\n            : printReceived(received)\n          }`\n        );\n      };\n\n      return { message, pass };\n    }\n\n    const indexable = Array.from(received);\n    const index = indexable.indexOf(expected);\n    const pass = index !== -1;\n\n    const message = () => {\n      const labelExpected = 'Expected value';\n      const labelReceived = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n      return (\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n            expected,\n        )}\\n` +\n        `${printLabel(labelReceived)}${isNot ? '    ' : ''}${isNot && Array.isArray(received)\n          ? printReceivedArrayContainExpectedItem(received, index)\n          : printReceived(received)\n        }` +\n        (!isNot &&\n          indexable.findIndex(item =>\n            equals(item, expected, [...this.customTesters, iterableEquality]),\n          ) !== -1\n          ? `\\n\\n${SUGGEST_TO_CONTAIN_EQUAL}`\n          : '')\n      );\n    };\n\n    return { message, pass };\n  },\n\n  toContainEqual(received: ContainIterable, expected: unknown) {\n    const matcherName = 'toContainEqual';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot,\n      promise: this.promise,\n    };\n\n    if (received == null) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    const index = Array.from(received).findIndex(item =>\n      equals(item, expected, [...this.customTesters, iterableEquality]),\n    );\n    const pass = index !== -1;\n\n    const message = () => {\n      const labelExpected = 'Expected value';\n      const labelReceived = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n      return (\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n            expected,\n        )}\\n` +\n        `${printLabel(labelReceived)}${isNot ? '    ' : ''}${isNot && Array.isArray(received)\n          ? printReceivedArrayContainExpectedItem(received, index)\n          : printReceived(received)\n        }`\n      );\n    };\n\n    return { message, pass };\n  },\n\n  toEqual(received: unknown, expected: unknown) {\n    const matcherName = 'toEqual';\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = equals(received, expected, [\n      ...this.customTesters,\n      iterableEquality,\n    ]);\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: not ${printExpected(expected)}\\n` +\n        (stringify(expected) !== stringify(received)\n          ? `Received:     ${printReceived(received)}`\n          : '')\n      : () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printDiffOrStringify(\n            expected,\n            received,\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n        );\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return { actual: received, expected, message, name: matcherName, pass };\n  },\n\n  toHaveLength(received: any, expected: number) {\n    const matcherName = 'toHaveLength';\n    const isNot = this.isNot;\n    const options: MatcherHintOptions = {\n      isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received?.length !== 'number') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR(\n                  'received',\n              )} value must have a length property whose value must be a number`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n\n    const pass = received.length === expected;\n\n    const message = () => {\n      const labelExpected = 'Expected length';\n      const labelReceivedLength = 'Received length';\n      const labelReceivedValue = `Received ${getType(received)}`;\n      const printLabel = getLabelPrinter(\n          labelExpected,\n          labelReceivedLength,\n          labelReceivedValue,\n      );\n\n      return (\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `${printLabel(labelExpected)}${isNot ? 'not ' : ''}${printExpected(\n            expected,\n        )}\\n` +\n        (isNot\n          ? ''\n          : `${printLabel(labelReceivedLength)}${printReceived(\n              received.length,\n          )}\\n`) +\n        `${printLabel(labelReceivedValue)}${isNot ? '    ' : ''}${printReceived(\n            received,\n        )}`\n      );\n    };\n\n    return { message, pass };\n  },\n\n  toHaveProperty(\n    received: object,\n    expectedPath: string | Array<string>,\n    expectedValue?: unknown,\n  ) {\n    const matcherName = 'toHaveProperty';\n    const expectedArgument = 'path';\n    const hasValue = arguments.length === 3;\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: hasValue ? 'value' : '',\n    };\n\n    if (received === null || received === undefined) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, expectedArgument, options),\n              `${RECEIVED_COLOR('received')} value must not be null nor undefined`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    const expectedPathType = getType(expectedPath);\n\n    if (expectedPathType !== 'string' && expectedPathType !== 'array') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, expectedArgument, options),\n              `${EXPECTED_COLOR('expected')} path must be a string or array`,\n              printWithType('Expected', expectedPath, printExpected),\n          ),\n      );\n    }\n\n    const expectedPathLength =\n      typeof expectedPath === 'string'\n        ? pathAsArray(expectedPath).length\n        : expectedPath.length;\n\n    if (expectedPathType === 'array' && expectedPathLength === 0) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, expectedArgument, options),\n              `${EXPECTED_COLOR('expected')} path must not be an empty array`,\n              printWithType('Expected', expectedPath, printExpected),\n          ),\n      );\n    }\n\n    const result = getPath(received, expectedPath);\n    const { lastTraversedObject, endPropIsDefined, hasEndProp, value } = result;\n    const receivedPath = result.traversedPath;\n    const hasCompletePath = receivedPath.length === expectedPathLength;\n    const receivedValue = hasCompletePath ? result.value : lastTraversedObject;\n\n    const pass =\n      hasValue && endPropIsDefined\n        ? equals(value, expectedValue, [\n          ...this.customTesters,\n          iterableEquality,\n        ])\n        : Boolean(hasEndProp);\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, expectedArgument, options) +\n        '\\n\\n' +\n        (hasValue\n          ? `Expected path: ${printExpected(expectedPath)}\\n\\n` +\n          `Expected value: not ${printExpected(expectedValue)}${stringify(expectedValue) !== stringify(receivedValue)\n            ? `\\nReceived value:     ${printReceived(receivedValue)}`\n            : ''\n          }`\n          : `Expected path: not ${printExpected(expectedPath)}\\n\\n` +\n          `Received value: ${printReceived(receivedValue)}`)\n      : () =>\n\n        matcherHint(matcherName, undefined, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected path: ${printExpected(expectedPath)}\\n` +\n        (hasCompletePath\n          ? `\\n${printDiffOrStringify(\n              expectedValue,\n              receivedValue,\n              EXPECTED_VALUE_LABEL,\n              RECEIVED_VALUE_LABEL,\n              isExpand(this.expand),\n          )}`\n          : `Received path: ${printReceived(\n              expectedPathType === 'array' || receivedPath.length === 0\n                ? receivedPath\n                : receivedPath.join('.'),\n          )}\\n\\n${hasValue\n            ? `Expected value: ${printExpected(expectedValue)}\\n`\n            : ''\n          }Received value: ${printReceived(receivedValue)}`);\n\n    return { message, pass };\n  },\n\n  toMatch(received: string, expected: string | RegExp) {\n    const matcherName = 'toMatch';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received !== 'string') {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR('received')} value must be a string`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    if (\n      !(typeof expected === 'string') &&\n      !(expected && typeof expected.test === 'function')\n    ) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${EXPECTED_COLOR(\n                  'expected',\n              )} value must be a string or regular expression`,\n              printWithType('Expected', expected, printExpected),\n          ),\n      );\n    }\n\n    const pass =\n      typeof expected === 'string'\n        ? received.includes(expected)\n        : new RegExp(expected).test(received);\n\n    const message = pass\n      ? () =>\n        typeof expected === 'string'\n          ?\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected substring: not ${printExpected(expected)}\\n` +\n          `Received string:        ${printReceivedStringContainExpectedSubstring(\n              received,\n              received.indexOf(expected),\n              expected.length,\n          )}`\n          :\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `Expected pattern: not ${printExpected(expected)}\\n` +\n          `Received string:      ${printReceivedStringContainExpectedResult(\n              received,\n              typeof expected.exec === 'function'\n                ? expected.exec(received)\n                : null,\n          )}`\n      : () => {\n        const labelExpected = `Expected ${typeof expected === 'string' ? 'substring' : 'pattern'\n        }`;\n        const labelReceived = 'Received string';\n        const printLabel = getLabelPrinter(labelExpected, labelReceived);\n\n        return (\n\n          matcherHint(matcherName, undefined, undefined, options) +\n          '\\n\\n' +\n          `${printLabel(labelExpected)}${printExpected(expected)}\\n` +\n          `${printLabel(labelReceived)}${printReceived(received)}`\n        );\n      };\n\n    return { message, pass };\n  },\n\n  toMatchObject(received: object, expected: object) {\n    const matcherName = 'toMatchObject';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    if (typeof received !== 'object' || received === null) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${RECEIVED_COLOR('received')} value must be a non-null object`,\n              printWithType('Received', received, printReceived),\n          ),\n      );\n    }\n\n    if (typeof expected !== 'object' || expected === null) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${EXPECTED_COLOR('expected')} value must be a non-null object`,\n              printWithType('Expected', expected, printExpected),\n          ),\n      );\n    }\n\n    const pass = equals(received, expected, [\n      ...this.customTesters,\n      iterableEquality,\n      subsetEquality,\n    ]);\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: not ${printExpected(expected)}` +\n        (stringify(expected) !== stringify(received)\n          ? `\\nReceived:     ${printReceived(received)}`\n          : '')\n      : () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printDiffOrStringify(\n            expected,\n            getObjectSubset(received, expected, this.customTesters),\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n        );\n\n    return { message, pass };\n  },\n\n  toStrictEqual(received: unknown, expected: unknown) {\n    const matcherName = 'toStrictEqual';\n    const options: MatcherHintOptions = {\n      comment: 'deep equality',\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    const pass = equals(\n        received,\n        expected,\n        [...this.customTesters, ...toStrictEqualTesters],\n        true,\n    );\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        `Expected: not ${printExpected(expected)}\\n` +\n        (stringify(expected) !== stringify(received)\n          ? `Received:     ${printReceived(received)}`\n          : '')\n      : () =>\n\n        matcherHint(matcherName, undefined, undefined, options) +\n        '\\n\\n' +\n        printDiffOrStringify(\n            expected,\n            received,\n            EXPECTED_LABEL,\n            RECEIVED_LABEL,\n            isExpand(this.expand),\n        );\n\n    // Passing the actual and expected objects so that a custom reporter\n    // could access them, for example in order to display a custom visual diff,\n    // or create a different error message\n    return { actual: received, expected, message, name: matcherName, pass };\n  },\n};\n\nexport default matchers;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport { equals, iterableEquality } from '@jest/expect-utils';\nimport { getType, isPrimitive } from 'jest-get-type';\nimport {\n  DIM_COLOR,\n  EXPECTED_COLOR,\n\n  RECEIVED_COLOR,\n  diff,\n  ensureExpectedIsNonNegativeInteger,\n  ensureNoExpected,\n  matcherErrorMessage,\n  matcherHint,\n  printExpected,\n  printReceived,\n  printWithType,\n  stringify\n} from 'jest-matcher-utils';\n\nimport { getCustomEqualityTesters } from './jestMatchersObject';\n\nimport type {\n  MatcherFunction,\n  MatchersObject,\n  SyncExpectationResult,\n} from './types';\nimport type { MatcherHintOptions } from 'jest-matcher-utils';\n\n/* eslint-disable eqeqeq */\n\n// The optional property of matcher context is true if undefined.\nconst isExpand = (expand?: boolean): boolean => expand !== false;\n\nconst PRINT_LIMIT = 3;\n\nconst NO_ARGUMENTS = 'called with 0 arguments';\n\nconst printExpectedArgs = (expected: Array<unknown>): string =>\n  expected.length === 0\n    ? NO_ARGUMENTS\n    : expected.map(arg => printExpected(arg)).join(', ');\n\nconst printReceivedArgs = (\n  received: Array<unknown>,\n  expected?: Array<unknown>,\n): string =>\n  received.length === 0\n    ? NO_ARGUMENTS\n    : received\n        .map((arg, i) =>\n          Array.isArray(expected) &&\n          i < expected.length &&\n          isEqualValue(expected[i], arg)\n            ? printCommon(arg)\n            : printReceived(arg),\n        )\n        .join(', ');\n\nconst printCommon = (val: unknown) => DIM_COLOR(stringify(val));\n\nconst isEqualValue = (expected: unknown, received: unknown): boolean =>\n  equals(expected, received, [...getCustomEqualityTesters(), iterableEquality]);\n\nconst isEqualCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n): boolean =>\n  received.length === expected.length && isEqualValue(expected, received);\n\nconst isEqualReturn = (expected: unknown, result: any): boolean =>\n  result.type === 'return' && isEqualValue(expected, result.value);\n\nconst countReturns = (results: Array<any>): number =>\n  results.reduce(\n      (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n      0,\n  );\n\nconst printNumberOfReturns = (\n  countReturns: number,\n  countCalls: number,\n): string =>\n  `\\nNumber of returns: ${printReceived(countReturns)}${countCalls !== countReturns\n    ? `\\nNumber of calls:   ${printReceived(countCalls)}`\n    : ''\n  }`;\n\ntype PrintLabel = (string: string, isExpectedCall: boolean) => string;\n\n// Given a label, return a function which given a string,\n// right-aligns it preceding the colon in the label.\nconst getRightAlignedPrinter = (label: string): PrintLabel => {\n  // Assume that the label contains a colon.\n  const index = label.indexOf(':');\n  const suffix = label.slice(index);\n\n  return (string: string, isExpectedCall: boolean) =>\n    (isExpectedCall\n      ? `->${' '.repeat(Math.max(0, index - 2 - string.length))}`\n      : ' '.repeat(Math.max(index - string.length))) +\n    string +\n    suffix;\n};\n\ntype IndexedCall = [number, Array<unknown>];\n\nconst printReceivedCallsNegative = (\n  expected: Array<unknown>,\n  indexedCalls: Array<IndexedCall>,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  if (indexedCalls.length === 0)\n    return '';\n\n\n  const label = 'Received:     ';\n  if (isOnlyCall)\n    return `${label + printReceivedArgs(indexedCalls[0], expected)}\\n`;\n\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return `Received\\n${indexedCalls.reduce(\n      (printed: string, [i, args]: IndexedCall) =>\n        `${printed +\n      printAligned(String(i + 1), i === iExpectedCall) +\n      printReceivedArgs(args, expected)\n        }\\n`,\n      '',\n  )}`;\n};\n\nconst printExpectedReceivedCallsPositive = (\n  expected: Array<unknown>,\n  indexedCalls: Array<IndexedCall>,\n  expand: boolean,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  const expectedLine = `Expected: ${printExpectedArgs(expected)}\\n`;\n  if (indexedCalls.length === 0)\n    return expectedLine;\n\n\n  const label = 'Received: ';\n  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined)) {\n    const received = indexedCalls[0][1];\n\n    if (isLineDiffableCall(expected, received)) {\n      // Display diff without indentation.\n      const lines = [\n        EXPECTED_COLOR('- Expected'),\n        RECEIVED_COLOR('+ Received'),\n        '',\n      ];\n\n      const length = Math.max(expected.length, received.length);\n      for (let i = 0; i < length; i += 1) {\n        if (i < expected.length && i < received.length) {\n          if (isEqualValue(expected[i], received[i])) {\n            lines.push(`  ${printCommon(received[i])},`);\n            continue;\n          }\n\n          if (isLineDiffableArg(expected[i], received[i])) {\n            const difference = diff(expected[i], received[i], { expand });\n            if (\n              typeof difference === 'string' &&\n              difference.includes('- Expected') &&\n              difference.includes('+ Received')\n            ) {\n              // Omit annotation in case multiple args have diff.\n              lines.push(`${difference.split('\\n').slice(3).join('\\n')},`);\n              continue;\n            }\n          }\n        }\n\n        if (i < expected.length)\n          lines.push(`${EXPECTED_COLOR(`- ${stringify(expected[i])}`)},`);\n\n        if (i < received.length)\n          lines.push(`${RECEIVED_COLOR(`+ ${stringify(received[i])}`)},`);\n\n      }\n\n      return `${lines.join('\\n')}\\n`;\n    }\n\n    return `${expectedLine + label + printReceivedArgs(received, expected)}\\n`;\n  }\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return (\n\n    expectedLine +\n    'Received\\n' +\n    indexedCalls.reduce((printed: string, [i, received]: IndexedCall) => {\n      const aligned = printAligned(String(i + 1), i === iExpectedCall);\n      return `${printed +\n        ((i === iExpectedCall || iExpectedCall === undefined) &&\n          isLineDiffableCall(expected, received)\n          ? aligned.replace(': ', '\\n') +\n          printDiffCall(expected, received, expand)\n          : aligned + printReceivedArgs(received, expected))\n      }\\n`;\n    }, '')\n  );\n};\n\nconst indentation = 'Received'.replace(/\\w/g, ' ');\n\nconst printDiffCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n  expand: boolean,\n) =>\n  received\n      .map((arg, i) => {\n        if (i < expected.length) {\n          if (isEqualValue(expected[i], arg))\n            return `${indentation}  ${printCommon(arg)},`;\n\n\n          if (isLineDiffableArg(expected[i], arg)) {\n            const difference = diff(expected[i], arg, { expand });\n\n            if (\n              typeof difference === 'string' &&\n            difference.includes('- Expected') &&\n            difference.includes('+ Received')\n            ) {\n            // Display diff with indentation.\n            // Omit annotation in case multiple args have diff.\n              return `${difference\n                  .split('\\n')\n                  .slice(3)\n                  .map(line => indentation + line)\n                  .join('\\n')},`;\n            }\n          }\n        }\n\n        // Display + only if received arg has no corresponding expected arg.\n        return `${indentation +\n        (i < expected.length\n          ? `  ${printReceived(arg)}`\n          : RECEIVED_COLOR(`+ ${stringify(arg)}`))\n        },`;\n      })\n      .join('\\n');\n\nconst isLineDiffableCall = (\n  expected: Array<unknown>,\n  received: Array<unknown>,\n): boolean =>\n  expected.some(\n      (arg, i) => i < received.length && isLineDiffableArg(arg, received[i]),\n  );\n\n// Almost redundant with function in jest-matcher-utils,\n// except no line diff for any strings.\nconst isLineDiffableArg = (expected: unknown, received: unknown): boolean => {\n  const expectedType = getType(expected);\n  const receivedType = getType(received);\n\n  if (expectedType !== receivedType)\n    return false;\n\n\n  if (isPrimitive(expected))\n    return false;\n\n\n  if (\n    expectedType === 'date' ||\n    expectedType === 'function' ||\n    expectedType === 'regexp'\n  )\n    return false;\n\n\n  if (expected instanceof Error && received instanceof Error)\n    return false;\n\n\n  if (\n    expectedType === 'object' &&\n    typeof (expected as any).asymmetricMatch === 'function'\n  )\n    return false;\n\n\n  if (\n    receivedType === 'object' &&\n    typeof (received as any).asymmetricMatch === 'function'\n  )\n    return false;\n\n\n  return true;\n};\n\nconst printResult = (result: any, expected: unknown) =>\n  result.type === 'throw'\n    ? 'function call threw an error'\n    : result.type === 'incomplete'\n      ? 'function call has not returned yet'\n      : isEqualValue(expected, result.value)\n        ? printCommon(result.value)\n        : printReceived(result.value);\n\ntype IndexedResult = [number, any];\n\n// Return either empty string or one line per indexed result,\n// so additional empty line can separate from `Number of returns` which follows.\nconst printReceivedResults = (\n  label: string,\n  expected: unknown,\n  indexedResults: Array<IndexedResult>,\n  isOnlyCall: boolean,\n  iExpectedCall?: number,\n) => {\n  if (indexedResults.length === 0)\n    return '';\n\n\n  if (isOnlyCall && (iExpectedCall === 0 || iExpectedCall === undefined))\n    return `${label + printResult(indexedResults[0][1], expected)}\\n`;\n\n\n  const printAligned = getRightAlignedPrinter(label);\n\n  return (\n\n    label.replace(':', '').trim() +\n    '\\n' +\n    indexedResults.reduce(\n        (printed: string, [i, result]: IndexedResult) =>\n          `${printed +\n        printAligned(String(i + 1), i === iExpectedCall) +\n        printResult(result, expected)\n          }\\n`,\n        '',\n    )\n  );\n};\n\nconst createToBeCalledMatcher = (\n  matcherName: string,\n): MatcherFunction<[unknown]> =>\n  function(received: any, expected: unknown): SyncExpectationResult {\n    const expectedArgument = '';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n    const count = receivedIsSpy\n      ? received.calls.count()\n      : received.mock.calls.length;\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const pass = count > 0;\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of calls: ${printExpected(0)}\\n` +\n        `Received number of calls: ${printReceived(count)}\\n\\n` +\n        calls\n            .reduce((lines: Array<string>, args: any, i: number) => {\n              if (lines.length < PRINT_LIMIT)\n                lines.push(`${i + 1}: ${printReceivedArgs(args)}`);\n\n\n              return lines;\n            }, [])\n            .join('\\n')\n      : () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of calls: >= ${printExpected(1)}\\n` +\n        `Received number of calls:    ${printReceived(count)}`;\n\n    return { message, pass };\n  };\n\nconst createToReturnMatcher = (\n  matcherName: string,\n): MatcherFunction<[unknown]> =>\n  function(received: any, expected): SyncExpectationResult {\n    const expectedArgument = '';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureNoExpected(expected, matcherName, options);\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    // Count return values that correspond only to calls that returned\n    const count = received.mock.results.reduce(\n        (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n        0,\n    );\n\n    const pass = count > 0;\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of returns: ${printExpected(0)}\\n` +\n        `Received number of returns: ${printReceived(count)}\\n\\n` +\n        received.mock.results\n            .reduce((lines: Array<string>, result: any, i: number) => {\n              if (result.type === 'return' && lines.length < PRINT_LIMIT)\n                lines.push(`${i + 1}: ${printReceived(result.value)}`);\n\n\n              return lines;\n            }, [])\n            .join('\\n') +\n        (received.mock.calls.length !== count\n          ? `\\n\\nReceived number of calls:   ${printReceived(\n              received.mock.calls.length,\n          )}`\n          : '')\n      : () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of returns: >= ${printExpected(1)}\\n` +\n        `Received number of returns:    ${printReceived(count)}` +\n        (received.mock.calls.length !== count\n          ? `\\nReceived number of calls:      ${printReceived(\n              received.mock.calls.length,\n          )}`\n          : '');\n\n    return { message, pass };\n  };\n\nconst createToBeCalledTimesMatcher = (\n  matcherName: string,\n): MatcherFunction<[number]> =>\n  function(received: any, expected): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n    const count = receivedIsSpy\n      ? received.calls.count()\n      : received.mock.calls.length;\n\n    const pass = count === expected;\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of calls: not ${printExpected(expected)}`\n      : () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of calls: ${printExpected(expected)}\\n` +\n        `Received number of calls: ${printReceived(count)}`;\n\n    return { message, pass };\n  };\n\nconst createToReturnTimesMatcher = (\n  matcherName: string,\n): MatcherFunction<[number]> =>\n  function(received: any, expected): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureExpectedIsNonNegativeInteger(expected, matcherName, options);\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    // Count return values that correspond only to calls that returned\n    const count = received.mock.results.reduce(\n        (n: number, result: any) => (result.type === 'return' ? n + 1 : n),\n        0,\n    );\n\n    const pass = count === expected;\n\n    const message = pass\n      ? () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of returns: not ${printExpected(expected)}` +\n        (received.mock.calls.length !== count\n          ? `\\n\\nReceived number of calls:       ${printReceived(\n              received.mock.calls.length,\n          )}`\n          : '')\n      : () =>\n\n        matcherHint(matcherName, receivedName, expectedArgument, options) +\n        '\\n\\n' +\n        `Expected number of returns: ${printExpected(expected)}\\n` +\n        `Received number of returns: ${printReceived(count)}` +\n        (received.mock.calls.length !== count\n          ? `\\nReceived number of calls:   ${printReceived(\n              received.mock.calls.length,\n          )}`\n          : '');\n\n    return { message, pass };\n  };\n\nconst createToBeCalledWithMatcher = (\n  matcherName: string,\n): MatcherFunction<Array<unknown>> =>\n  function(received: any, ...expected): SyncExpectationResult {\n    const expectedArgument = '...expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n\n    const pass = calls.some((call: any) => isEqualCall(expected, call));\n\n    const message = pass\n      ? () => {\n        // Some examples of calls that are equal to expected value.\n        const indexedCalls: Array<IndexedCall> = [];\n        let i = 0;\n        while (i < calls.length && indexedCalls.length < PRINT_LIMIT) {\n          if (isEqualCall(expected, calls[i]))\n            indexedCalls.push([i, calls[i]]);\n\n          i += 1;\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpectedArgs(expected)}\\n` +\n          (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n            ? ''\n            : printReceivedCallsNegative(\n                expected,\n                indexedCalls,\n                calls.length === 1,\n            )) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      }\n      : () => {\n        // Some examples of calls that are not equal to expected value.\n        const indexedCalls: Array<IndexedCall> = [];\n        let i = 0;\n        while (i < calls.length && indexedCalls.length < PRINT_LIMIT) {\n          indexedCalls.push([i, calls[i]]);\n          i += 1;\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n          ) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst createToReturnWithMatcher = (\n  matcherName: string,\n): MatcherFunction<[unknown]> =>\n  function(received: any, expected): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n    const { calls, results } = received.mock;\n\n    const pass = results.some((result: any) => isEqualReturn(expected, result));\n\n    const message = pass\n      ? () => {\n        // Some examples of results that are equal to expected value.\n        const indexedResults: Array<IndexedResult> = [];\n        let i = 0;\n        while (i < results.length && indexedResults.length < PRINT_LIMIT) {\n          if (isEqualReturn(expected, results[i]))\n            indexedResults.push([i, results[i]]);\n\n          i += 1;\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n            ? ''\n            : printReceivedResults(\n                'Received:     ',\n                expected,\n                indexedResults,\n                results.length === 1,\n            )) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      }\n      : () => {\n        // Some examples of results that are not equal to expected value.\n        const indexedResults: Array<IndexedResult> = [];\n        let i = 0;\n        while (i < results.length && indexedResults.length < PRINT_LIMIT) {\n          indexedResults.push([i, results[i]]);\n          i += 1;\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: ${printExpected(expected)}\\n` +\n          printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n          ) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst createLastCalledWithMatcher = (\n  matcherName: string,\n): MatcherFunction<Array<unknown>> =>\n  function(received: any, ...expected): SyncExpectationResult {\n    const expectedArgument = '...expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const iLast = calls.length - 1;\n\n    const pass = iLast >= 0 && isEqualCall(expected, calls[iLast]);\n\n    const message = pass\n      ? () => {\n        const indexedCalls: Array<IndexedCall> = [];\n        if (iLast > 0) {\n          // Display preceding call as context.\n          indexedCalls.push([iLast - 1, calls[iLast - 1]]);\n        }\n        indexedCalls.push([iLast, calls[iLast]]);\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpectedArgs(expected)}\\n` +\n          (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n            ? ''\n            : printReceivedCallsNegative(\n                expected,\n                indexedCalls,\n                calls.length === 1,\n                iLast,\n            )) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      }\n      : () => {\n        const indexedCalls: Array<IndexedCall> = [];\n        if (iLast >= 0) {\n          if (iLast > 0) {\n            let i = iLast - 1;\n            // Is there a preceding call that is equal to expected args?\n            while (i >= 0 && !isEqualCall(expected, calls[i]))\n              i -= 1;\n\n            if (i < 0)\n              i = iLast - 1; // otherwise, preceding call\n\n\n            indexedCalls.push([i, calls[i]]);\n          }\n\n          indexedCalls.push([iLast, calls[iLast]]);\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n              iLast,\n          ) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst createLastReturnedMatcher = (\n  matcherName: string,\n): MatcherFunction<[unknown]> =>\n  function(received: any, expected): SyncExpectationResult {\n    const expectedArgument = 'expected';\n    const options: MatcherHintOptions = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    const receivedName = received.getMockName();\n\n    const { calls, results } = received.mock;\n    const iLast = results.length - 1;\n\n    const pass = iLast >= 0 && isEqualReturn(expected, results[iLast]);\n\n    const message = pass\n      ? () => {\n        const indexedResults: Array<IndexedResult> = [];\n        if (iLast > 0) {\n          // Display preceding result as context.\n          indexedResults.push([iLast - 1, results[iLast - 1]]);\n        }\n        indexedResults.push([iLast, results[iLast]]);\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n            ? ''\n            : printReceivedResults(\n                'Received:     ',\n                expected,\n                indexedResults,\n                results.length === 1,\n                iLast,\n            )) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      }\n      : () => {\n        const indexedResults: Array<IndexedResult> = [];\n        if (iLast >= 0) {\n          if (iLast > 0) {\n            let i = iLast - 1;\n            // Is there a preceding result that is equal to expected value?\n            while (i >= 0 && !isEqualReturn(expected, results[i]))\n              i -= 1;\n\n            if (i < 0)\n              i = iLast - 1; // otherwise, preceding result\n\n\n            indexedResults.push([i, results[i]]);\n          }\n\n          indexedResults.push([iLast, results[iLast]]);\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `Expected: ${printExpected(expected)}\\n` +\n          printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n              iLast,\n          ) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst createNthCalledWithMatcher = (\n  matcherName: string,\n): MatcherFunction<[number, ...Array<unknown>]> =>\n  function(received: any, nth, ...expected): SyncExpectationResult {\n    const expectedArgument = 'n';\n    const options: MatcherHintOptions = {\n      expectedColor: (arg: string) => arg,\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: '...expected',\n    };\n    ensureMockOrSpy(received, matcherName, expectedArgument, options);\n\n    if (!Number.isSafeInteger(nth) || nth < 1) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, expectedArgument, options),\n              `${expectedArgument} must be a positive integer`,\n              printWithType(expectedArgument, nth, stringify),\n          ),\n      );\n    }\n\n    const receivedIsSpy = isSpy(received);\n    const receivedName = receivedIsSpy ? 'spy' : received.getMockName();\n\n    const calls = receivedIsSpy\n      ? received.calls.all().map((x: any) => x.args)\n      : received.mock.calls;\n    const length = calls.length;\n    const iNth = nth - 1;\n\n    const pass = iNth < length && isEqualCall(expected, calls[iNth]);\n\n    const message = pass\n      ? () => {\n        // Display preceding and following calls,\n        // in case assertions fails because index is off by one.\n        const indexedCalls: Array<IndexedCall> = [];\n        if (iNth - 1 >= 0)\n          indexedCalls.push([iNth - 1, calls[iNth - 1]]);\n\n        indexedCalls.push([iNth, calls[iNth]]);\n        if (iNth + 1 < length)\n          indexedCalls.push([iNth + 1, calls[iNth + 1]]);\n\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `n: ${nth}\\n` +\n          `Expected: not ${printExpectedArgs(expected)}\\n` +\n          (calls.length === 1 && stringify(calls[0]) === stringify(expected)\n            ? ''\n            : printReceivedCallsNegative(\n                expected,\n                indexedCalls,\n                calls.length === 1,\n                iNth,\n            )) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      }\n      : () => {\n        // Display preceding and following calls:\n        // * nearest call that is equal to expected args\n        // * otherwise, adjacent call\n        // in case assertions fails because of index, especially off by one.\n        const indexedCalls: Array<IndexedCall> = [];\n        if (iNth < length) {\n          if (iNth - 1 >= 0) {\n            let i = iNth - 1;\n            // Is there a preceding call that is equal to expected args?\n            while (i >= 0 && !isEqualCall(expected, calls[i]))\n              i -= 1;\n\n            if (i < 0)\n              i = iNth - 1; // otherwise, adjacent call\n\n\n            indexedCalls.push([i, calls[i]]);\n          }\n          indexedCalls.push([iNth, calls[iNth]]);\n          if (iNth + 1 < length) {\n            let i = iNth + 1;\n            // Is there a following call that is equal to expected args?\n            while (i < length && !isEqualCall(expected, calls[i]))\n              i += 1;\n\n            if (i >= length)\n              i = iNth + 1; // otherwise, adjacent call\n\n\n            indexedCalls.push([i, calls[i]]);\n          }\n        } else if (length > 0) {\n          // The number of received calls is fewer than the expected number.\n          let i = length - 1;\n          // Is there a call that is equal to expected args?\n          while (i >= 0 && !isEqualCall(expected, calls[i]))\n            i -= 1;\n\n          if (i < 0)\n            i = length - 1; // otherwise, last call\n\n\n          indexedCalls.push([i, calls[i]]);\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `n: ${nth}\\n` +\n          printExpectedReceivedCallsPositive(\n              expected,\n              indexedCalls,\n              isExpand(this.expand),\n              calls.length === 1,\n              iNth,\n          ) +\n          `\\nNumber of calls: ${printReceived(calls.length)}`\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst createNthReturnedWithMatcher = (\n  matcherName: string,\n): MatcherFunction<[number, unknown]> =>\n  function(received: any, nth, expected): SyncExpectationResult {\n    const expectedArgument = 'n';\n    const options: MatcherHintOptions = {\n      expectedColor: (arg: string) => arg,\n      isNot: this.isNot,\n      promise: this.promise,\n      secondArgument: 'expected',\n    };\n    ensureMock(received, matcherName, expectedArgument, options);\n\n    if (!Number.isSafeInteger(nth) || nth < 1) {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, expectedArgument, options),\n              `${expectedArgument} must be a positive integer`,\n              printWithType(expectedArgument, nth, stringify),\n          ),\n      );\n    }\n\n    const receivedName = received.getMockName();\n    const { calls, results } = received.mock;\n    const length = results.length;\n    const iNth = nth - 1;\n\n    const pass = iNth < length && isEqualReturn(expected, results[iNth]);\n\n    const message = pass\n      ? () => {\n        // Display preceding and following results,\n        // in case assertions fails because index is off by one.\n        const indexedResults: Array<IndexedResult> = [];\n        if (iNth - 1 >= 0)\n          indexedResults.push([iNth - 1, results[iNth - 1]]);\n\n        indexedResults.push([iNth, results[iNth]]);\n        if (iNth + 1 < length)\n          indexedResults.push([iNth + 1, results[iNth + 1]]);\n\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `n: ${nth}\\n` +\n          `Expected: not ${printExpected(expected)}\\n` +\n          (results.length === 1 &&\n            results[0].type === 'return' &&\n            stringify(results[0].value) === stringify(expected)\n            ? ''\n            : printReceivedResults(\n                'Received:     ',\n                expected,\n                indexedResults,\n                results.length === 1,\n                iNth,\n            )) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      }\n      : () => {\n        // Display preceding and following results:\n        // * nearest result that is equal to expected value\n        // * otherwise, adjacent result\n        // in case assertions fails because of index, especially off by one.\n        const indexedResults: Array<IndexedResult> = [];\n        if (iNth < length) {\n          if (iNth - 1 >= 0) {\n            let i = iNth - 1;\n            // Is there a preceding result that is equal to expected value?\n            while (i >= 0 && !isEqualReturn(expected, results[i]))\n              i -= 1;\n\n            if (i < 0)\n              i = iNth - 1; // otherwise, adjacent result\n\n\n            indexedResults.push([i, results[i]]);\n          }\n          indexedResults.push([iNth, results[iNth]]);\n          if (iNth + 1 < length) {\n            let i = iNth + 1;\n            // Is there a following result that is equal to expected value?\n            while (i < length && !isEqualReturn(expected, results[i]))\n              i += 1;\n\n            if (i >= length)\n              i = iNth + 1; // otherwise, adjacent result\n\n\n            indexedResults.push([i, results[i]]);\n          }\n        } else if (length > 0) {\n          // The number of received calls is fewer than the expected number.\n          let i = length - 1;\n          // Is there a result that is equal to expected value?\n          while (i >= 0 && !isEqualReturn(expected, results[i]))\n            i -= 1;\n\n          if (i < 0)\n            i = length - 1; // otherwise, last result\n\n\n          indexedResults.push([i, results[i]]);\n        }\n\n        return (\n\n          matcherHint(matcherName, receivedName, expectedArgument, options) +\n          '\\n\\n' +\n          `n: ${nth}\\n` +\n          `Expected: ${printExpected(expected)}\\n` +\n          printReceivedResults(\n              'Received: ',\n              expected,\n              indexedResults,\n              results.length === 1,\n              iNth,\n          ) +\n          printNumberOfReturns(countReturns(results), calls.length)\n        );\n      };\n\n    return { message, pass };\n  };\n\nconst spyMatchers: MatchersObject = {\n  lastCalledWith: createLastCalledWithMatcher('lastCalledWith'),\n  lastReturnedWith: createLastReturnedMatcher('lastReturnedWith'),\n  nthCalledWith: createNthCalledWithMatcher('nthCalledWith'),\n  nthReturnedWith: createNthReturnedWithMatcher('nthReturnedWith'),\n  toBeCalled: createToBeCalledMatcher('toBeCalled'),\n  toBeCalledTimes: createToBeCalledTimesMatcher('toBeCalledTimes'),\n  toBeCalledWith: createToBeCalledWithMatcher('toBeCalledWith'),\n  toHaveBeenCalled: createToBeCalledMatcher('toHaveBeenCalled'),\n  toHaveBeenCalledTimes: createToBeCalledTimesMatcher('toHaveBeenCalledTimes'),\n  toHaveBeenCalledWith: createToBeCalledWithMatcher('toHaveBeenCalledWith'),\n  toHaveBeenLastCalledWith: createLastCalledWithMatcher(\n      'toHaveBeenLastCalledWith',\n  ),\n  toHaveBeenNthCalledWith: createNthCalledWithMatcher(\n      'toHaveBeenNthCalledWith',\n  ),\n  toHaveLastReturnedWith: createLastReturnedMatcher('toHaveLastReturnedWith'),\n  toHaveNthReturnedWith: createNthReturnedWithMatcher('toHaveNthReturnedWith'),\n  toHaveReturned: createToReturnMatcher('toHaveReturned'),\n  toHaveReturnedTimes: createToReturnTimesMatcher('toHaveReturnedTimes'),\n  toHaveReturnedWith: createToReturnWithMatcher('toHaveReturnedWith'),\n  toReturn: createToReturnMatcher('toReturn'),\n  toReturnTimes: createToReturnTimesMatcher('toReturnTimes'),\n  toReturnWith: createToReturnWithMatcher('toReturnWith'),\n};\n\nconst isMock = (received: any) =>\n  received != null && received._isMockFunction === true;\n\nconst isSpy = (received: any) =>\n  received != null &&\n  received.calls != null &&\n  typeof received.calls.all === 'function' &&\n  typeof received.calls.count === 'function';\n\nconst ensureMockOrSpy = (\n  received: any,\n  matcherName: string,\n  expectedArgument: string,\n  options: MatcherHintOptions,\n) => {\n  if (!isMock(received) && !isSpy(received)) {\n    throw new Error(\n        matcherErrorMessage(\n            matcherHint(matcherName, undefined, expectedArgument, options),\n            `${RECEIVED_COLOR('received')} value must be a mock or spy function`,\n            printWithType('Received', received, printReceived),\n        ),\n    );\n  }\n};\n\nconst ensureMock = (\n  received: any,\n  matcherName: string,\n  expectedArgument: string,\n  options: MatcherHintOptions,\n) => {\n  if (!isMock(received)) {\n    throw new Error(\n        matcherErrorMessage(\n            matcherHint(matcherName, undefined, expectedArgument, options),\n            `${RECEIVED_COLOR('received')} value must be a mock function`,\n            printWithType('Received', received, printReceived),\n        ),\n    );\n  }\n};\n\nexport default spyMatchers;\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n  var token = {type: \"invalid\", value: match[0], closed: undefined}\n       if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n  else if (match[ 5]) token.type = \"comment\"\n  else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n  else if (match[ 8]) token.type = \"regex\"\n  else if (match[ 9]) token.type = \"number\"\n  else if (match[10]) token.type = \"name\"\n  else if (match[11]) token.type = \"punctuator\"\n  else if (match[12]) token.type = \"whitespace\"\n  return token\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.js`.\n\n/* prettier-ignore */\nlet 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-\\u088e\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\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-\\u1c88\\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-\\ua7ca\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7d9\\ua7f2-\\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/* prettier-ignore */\nlet 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\\u0898-\\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-\\u1ace\\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\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\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. They were\n// generated by `scripts/generate-identifier-regex.js`.\n/* prettier-ignore */\nconst 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,68,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,71,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,349,41,7,1,79,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,159,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,264,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,4026,582,8634,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,689,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,43,8,8936,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,757,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,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst 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,370,1,81,2,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,193,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,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,406,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,330,3,10,1,2,0,49,6,4,4,14,9,5351,0,7,14,13835,9,87,9,39,4,60,6,26,9,1014,0,2,54,8,3,82,0,12,1,19628,1,4706,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,983,6,110,6,6,9,4759,9,787719,239];\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.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\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\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","export {\n  isIdentifierName,\n  isIdentifierChar,\n  isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"./keyword.ts\";\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","'use strict';\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\n\nmodule.exports = function (str) {\n\tif (typeof str !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn str.replace(matchOperatorsRe, '\\\\$&');\n};\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","/* MIT license */\nvar cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nvar reverseKeywords = {};\nfor (var key in cssKeywords) {\n\tif (cssKeywords.hasOwnProperty(key)) {\n\t\treverseKeywords[cssKeywords[key]] = key;\n\t}\n}\n\nvar convert = module.exports = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\n// hide .channels and .labels properties\nfor (var model in convert) {\n\tif (convert.hasOwnProperty(model)) {\n\t\tif (!('channels' in convert[model])) {\n\t\t\tthrow new Error('missing channels property: ' + model);\n\t\t}\n\n\t\tif (!('labels' in convert[model])) {\n\t\t\tthrow new Error('missing channel labels property: ' + model);\n\t\t}\n\n\t\tif (convert[model].labels.length !== convert[model].channels) {\n\t\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t\t}\n\n\t\tvar channels = convert[model].channels;\n\t\tvar labels = convert[model].labels;\n\t\tdelete convert[model].channels;\n\t\tdelete convert[model].labels;\n\t\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\t\tObject.defineProperty(convert[model], 'labels', {value: labels});\n\t}\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar min = Math.min(r, g, b);\n\tvar max = Math.max(r, g, b);\n\tvar delta = max - min;\n\tvar h;\n\tvar s;\n\tvar l;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tvar rdif;\n\tvar gdif;\n\tvar bdif;\n\tvar h;\n\tvar s;\n\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar v = Math.max(r, g, b);\n\tvar diff = v - Math.min(r, g, b);\n\tvar diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = s = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tvar r = rgb[0];\n\tvar g = rgb[1];\n\tvar b = rgb[2];\n\tvar h = convert.rgb.hsl(rgb)[0];\n\tvar w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar c;\n\tvar m;\n\tvar y;\n\tvar k;\n\n\tk = Math.min(1 - r, 1 - g, 1 - b);\n\tc = (1 - r - k) / (1 - k) || 0;\n\tm = (1 - g - k) / (1 - k) || 0;\n\ty = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\n/**\n * See https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n * */\nfunction comparativeDistance(x, y) {\n\treturn (\n\t\tMath.pow(x[0] - y[0], 2) +\n\t\tMath.pow(x[1] - y[1], 2) +\n\t\tMath.pow(x[2] - y[2], 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tvar reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tvar currentClosestDistance = Infinity;\n\tvar currentClosestKeyword;\n\n\tfor (var keyword in cssKeywords) {\n\t\tif (cssKeywords.hasOwnProperty(keyword)) {\n\t\t\tvar value = cssKeywords[keyword];\n\n\t\t\t// Compute comparative distance\n\t\t\tvar distance = comparativeDistance(rgb, value);\n\n\t\t\t// Check if its less, if so set as closest\n\t\t\tif (distance < currentClosestDistance) {\n\t\t\t\tcurrentClosestDistance = distance;\n\t\t\t\tcurrentClosestKeyword = keyword;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tvar y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tvar z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tvar xyz = convert.rgb.xyz(rgb);\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tvar h = hsl[0] / 360;\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar t1;\n\tvar t2;\n\tvar t3;\n\tvar rgb;\n\tvar val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tt1 = 2 * l - t2;\n\n\trgb = [0, 0, 0];\n\tfor (var i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tvar h = hsl[0];\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar smin = s;\n\tvar lmin = Math.max(l, 0.01);\n\tvar sv;\n\tvar v;\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tv = (l + s) / 2;\n\tsv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tvar h = hsv[0] / 60;\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar hi = Math.floor(h) % 6;\n\n\tvar f = h - Math.floor(h);\n\tvar p = 255 * v * (1 - s);\n\tvar q = 255 * v * (1 - (s * f));\n\tvar t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tvar h = hsv[0];\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\tvar vmin = Math.max(v, 0.01);\n\tvar lmin;\n\tvar sl;\n\tvar l;\n\n\tl = (2 - s) * v;\n\tlmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tvar h = hwb[0] / 360;\n\tvar wh = hwb[1] / 100;\n\tvar bl = hwb[2] / 100;\n\tvar ratio = wh + bl;\n\tvar i;\n\tvar v;\n\tvar f;\n\tvar n;\n\n\t// wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\ti = Math.floor(6 * h);\n\tv = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tn = wh + f * (v - wh); // linear interpolation\n\n\tvar r;\n\tvar g;\n\tvar b;\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tvar c = cmyk[0] / 100;\n\tvar m = cmyk[1] / 100;\n\tvar y = cmyk[2] / 100;\n\tvar k = cmyk[3] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = 1 - Math.min(1, c * (1 - k) + k);\n\tg = 1 - Math.min(1, m * (1 - k) + k);\n\tb = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tvar x = xyz[0] / 100;\n\tvar y = xyz[1] / 100;\n\tvar z = xyz[2] / 100;\n\tvar r;\n\tvar g;\n\tvar b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tvar x = xyz[0];\n\tvar y = xyz[1];\n\tvar z = xyz[2];\n\tvar l;\n\tvar a;\n\tvar b;\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? Math.pow(x, 1 / 3) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? Math.pow(y, 1 / 3) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? Math.pow(z, 1 / 3) : (7.787 * z) + (16 / 116);\n\n\tl = (116 * y) - 16;\n\ta = 500 * (x - y);\n\tb = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar x;\n\tvar y;\n\tvar z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tvar y2 = Math.pow(y, 3);\n\tvar x2 = Math.pow(x, 3);\n\tvar z2 = Math.pow(z, 3);\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tvar l = lab[0];\n\tvar a = lab[1];\n\tvar b = lab[2];\n\tvar hr;\n\tvar h;\n\tvar c;\n\n\thr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tc = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tvar l = lch[0];\n\tvar c = lch[1];\n\tvar h = lch[2];\n\tvar a;\n\tvar b;\n\tvar hr;\n\n\thr = h / 360 * 2 * Math.PI;\n\ta = c * Math.cos(hr);\n\tb = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\tvar value = 1 in arguments ? arguments[1] : convert.rgb.hsv(args)[2]; // hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tvar ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tvar r = args[0];\n\tvar g = args[1];\n\tvar b = args[2];\n\n\t// we use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tvar ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tvar color = args % 10;\n\n\t// handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tvar mult = (~~(args > 50) + 1) * 0.5;\n\tvar r = ((color & 1) * mult) * 255;\n\tvar g = (((color >> 1) & 1) * mult) * 255;\n\tvar b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// handle greyscale\n\tif (args >= 232) {\n\t\tvar c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tvar rem;\n\tvar r = Math.floor(args / 36) / 5 * 255;\n\tvar g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tvar b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tvar integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tvar match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tvar colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(function (char) {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tvar integer = parseInt(colorString, 16);\n\tvar r = (integer >> 16) & 0xFF;\n\tvar g = (integer >> 8) & 0xFF;\n\tvar b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tvar r = rgb[0] / 255;\n\tvar g = rgb[1] / 255;\n\tvar b = rgb[2] / 255;\n\tvar max = Math.max(Math.max(r, g), b);\n\tvar min = Math.min(Math.min(r, g), b);\n\tvar chroma = (max - min);\n\tvar grayscale;\n\tvar hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma + 4;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tvar s = hsl[1] / 100;\n\tvar l = hsl[2] / 100;\n\tvar c = 1;\n\tvar f = 0;\n\n\tif (l < 0.5) {\n\t\tc = 2.0 * s * l;\n\t} else {\n\t\tc = 2.0 * s * (1.0 - l);\n\t}\n\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tvar s = hsv[1] / 100;\n\tvar v = hsv[2] / 100;\n\n\tvar c = s * v;\n\tvar f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tvar h = hcg[0] / 360;\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tvar pure = [0, 0, 0];\n\tvar hi = (h % 1) * 6;\n\tvar v = hi % 1;\n\tvar w = 1 - v;\n\tvar mg = 0;\n\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar v = c + g * (1.0 - c);\n\tvar f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\n\tvar l = g * (1.0 - c) + 0.5 * c;\n\tvar s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tvar c = hcg[1] / 100;\n\tvar g = hcg[2] / 100;\n\tvar v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tvar w = hwb[1] / 100;\n\tvar b = hwb[2] / 100;\n\tvar v = 1 - b;\n\tvar c = v - w;\n\tvar g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = convert.gray.hsv = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tvar val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tvar integer = (val << 16) + (val << 8) + val;\n\n\tvar string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tvar val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","var conversions = require('./conversions');\n\n/*\n\tthis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tvar graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tvar models = Object.keys(conversions);\n\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tvar graph = buildGraph();\n\tvar queue = [fromModel]; // unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tvar current = queue.pop();\n\t\tvar adjacents = Object.keys(conversions[current]);\n\n\t\tfor (var len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tvar adjacent = adjacents[i];\n\t\t\tvar node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tvar path = [graph[toModel].parent, toModel];\n\tvar fn = conversions[graph[toModel].parent][toModel];\n\n\tvar cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tvar graph = deriveBFS(fromModel);\n\tvar conversion = {};\n\n\tvar models = Object.keys(graph);\n\tfor (var len = models.length, i = 0; i < len; i++) {\n\t\tvar toModel = models[i];\n\t\tvar node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// no possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","var conversions = require('./conversions');\nvar route = require('./route');\n\nvar convert = {};\n\nvar models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tvar wrappedFn = function (args) {\n\t\tif (args === undefined || args === null) {\n\t\t\treturn args;\n\t\t}\n\n\t\tif (arguments.length > 1) {\n\t\t\targs = Array.prototype.slice.call(arguments);\n\t\t}\n\n\t\tvar result = fn(args);\n\n\t\t// we're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (var len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(function (fromModel) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tvar routes = route(fromModel);\n\tvar routeModels = Object.keys(routes);\n\n\trouteModels.forEach(function (toModel) {\n\t\tvar fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","'use strict';\nconst colorConvert = require('color-convert');\n\nconst wrapAnsi16 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => function () {\n\tconst code = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => function () {\n\tconst rgb = fn.apply(colorConvert, arguments);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\t\t\tgray: [90, 39],\n\n\t\t\t// Bright color\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Fix humans\n\tstyles.color.grey = styles.color.gray;\n\n\tfor (const groupName of Object.keys(styles)) {\n\t\tconst group = styles[groupName];\n\n\t\tfor (const styleName of Object.keys(group)) {\n\t\t\tconst style = group[styleName];\n\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\n\t\tObject.defineProperty(styles, 'codes', {\n\t\t\tvalue: codes,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tconst ansi2ansi = n => n;\n\tconst rgb2rgb = (r, g, b) => [r, g, b];\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 0)\n\t};\n\tstyles.color.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 0)\n\t};\n\n\tstyles.bgColor.ansi = {\n\t\tansi: wrapAnsi16(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi256 = {\n\t\tansi256: wrapAnsi256(ansi2ansi, 10)\n\t};\n\tstyles.bgColor.ansi16m = {\n\t\trgb: wrapAnsi16m(rgb2rgb, 10)\n\t};\n\n\tfor (let key of Object.keys(colorConvert)) {\n\t\tif (typeof colorConvert[key] !== 'object') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst suite = colorConvert[key];\n\n\t\tif (key === 'ansi16') {\n\t\t\tkey = 'ansi';\n\t\t}\n\n\t\tif ('ansi16' in suite) {\n\t\t\tstyles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);\n\t\t\tstyles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);\n\t\t}\n\n\t\tif ('ansi256' in suite) {\n\t\t\tstyles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);\n\t\t\tstyles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);\n\t\t}\n\n\t\tif ('rgb' in suite) {\n\t\t\tstyles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);\n\t\t\tstyles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);\n\t\t}\n\t}\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nmodule.exports = {\n\tstdout: false,\n\tstderr: false\n};\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u[a-f\\d]{4}|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tif ((c[0] === 'u' && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, args) {\n\tconst results = [];\n\tconst chunks = args.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tif (!isNaN(chunk)) {\n\t\t\tresults.push(Number(chunk));\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, chr) => escape ? unescape(escape) : chr));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const styleName of Object.keys(enabled)) {\n\t\tif (Array.isArray(enabled[styleName])) {\n\t\t\tif (!(styleName in current)) {\n\t\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t\t}\n\n\t\t\tif (enabled[styleName].length > 0) {\n\t\t\t\tcurrent = current[styleName].apply(current, enabled[styleName]);\n\t\t\t} else {\n\t\t\t\tcurrent = current[styleName];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, tmp) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttmp.replace(TEMPLATE_REGEX, (m, escapeChar, inverse, style, close, chr) => {\n\t\tif (escapeChar) {\n\t\t\tchunk.push(unescape(escapeChar));\n\t\t} else if (style) {\n\t\t\tconst str = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(chr);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMsg = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMsg);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\nconst escapeStringRegexp = require('escape-string-regexp');\nconst ansiStyles = require('ansi-styles');\nconst stdoutColor = require('supports-color').stdout;\n\nconst template = require('./templates.js');\n\nconst isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm');\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];\n\n// `color-convert` models to exclude from the Chalk API due to conflicts and such\nconst skipModels = new Set(['gray']);\n\nconst styles = Object.create(null);\n\nfunction applyOptions(obj, options) {\n\toptions = options || {};\n\n\t// Detect level if not set manually\n\tconst scLevel = stdoutColor ? stdoutColor.level : 0;\n\tobj.level = options.level === undefined ? scLevel : options.level;\n\tobj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;\n}\n\nfunction Chalk(options) {\n\t// We check for this.template here since calling `chalk.constructor()`\n\t// by itself will have a `this` of a previously constructed chalk object\n\tif (!this || !(this instanceof Chalk) || this.template) {\n\t\tconst chalk = {};\n\t\tapplyOptions(chalk, options);\n\n\t\tchalk.template = function () {\n\t\t\tconst args = [].slice.call(arguments);\n\t\t\treturn chalkTag.apply(null, [chalk.template].concat(args));\n\t\t};\n\n\t\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\t\tObject.setPrototypeOf(chalk.template, chalk);\n\n\t\tchalk.template.constructor = Chalk;\n\n\t\treturn chalk.template;\n\t}\n\n\tapplyOptions(this, options);\n}\n\n// Use bright blue on Windows as the normal blue color is illegible\nif (isSimpleWindowsTerm) {\n\tansiStyles.blue.open = '\\u001B[94m';\n}\n\nfor (const key of Object.keys(ansiStyles)) {\n\tansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n\n\tstyles[key] = {\n\t\tget() {\n\t\t\tconst codes = ansiStyles[key];\n\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\treturn build.call(this, this._styles || [], true, 'visible');\n\t}\n};\n\nansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g');\nfor (const model of Object.keys(ansiStyles.color.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.color.close,\n\t\t\t\t\tcloseRe: ansiStyles.color.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g');\nfor (const model of Object.keys(ansiStyles.bgColor.ansi)) {\n\tif (skipModels.has(model)) {\n\t\tcontinue;\n\t}\n\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst level = this.level;\n\t\t\treturn function () {\n\t\t\t\tconst open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments);\n\t\t\t\tconst codes = {\n\t\t\t\t\topen,\n\t\t\t\t\tclose: ansiStyles.bgColor.close,\n\t\t\t\t\tcloseRe: ansiStyles.bgColor.closeRe\n\t\t\t\t};\n\t\t\t\treturn build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, styles);\n\nfunction build(_styles, _empty, key) {\n\tconst builder = function () {\n\t\treturn applyStyle.apply(builder, arguments);\n\t};\n\n\tbuilder._styles = _styles;\n\tbuilder._empty = _empty;\n\n\tconst self = this;\n\n\tObject.defineProperty(builder, 'level', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.level;\n\t\t},\n\t\tset(level) {\n\t\t\tself.level = level;\n\t\t}\n\t});\n\n\tObject.defineProperty(builder, 'enabled', {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn self.enabled;\n\t\t},\n\t\tset(enabled) {\n\t\t\tself.enabled = enabled;\n\t\t}\n\t});\n\n\t// See below for fix regarding invisible grey/dim combination on Windows\n\tbuilder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';\n\n\t// `__proto__` is used because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tbuilder.__proto__ = proto; // eslint-disable-line no-proto\n\n\treturn builder;\n}\n\nfunction applyStyle() {\n\t// Support varags, but simply cast to string in case there's only one arg\n\tconst args = arguments;\n\tconst argsLen = args.length;\n\tlet str = String(arguments[0]);\n\n\tif (argsLen === 0) {\n\t\treturn '';\n\t}\n\n\tif (argsLen > 1) {\n\t\t// Don't slice `arguments`, it prevents V8 optimizations\n\t\tfor (let a = 1; a < argsLen; a++) {\n\t\t\tstr += ' ' + args[a];\n\t\t}\n\t}\n\n\tif (!this.enabled || this.level <= 0 || !str) {\n\t\treturn this._empty ? '' : str;\n\t}\n\n\t// Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,\n\t// see https://github.com/chalk/chalk/issues/58\n\t// If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.\n\tconst originalDim = ansiStyles.dim.open;\n\tif (isSimpleWindowsTerm && this.hasGrey) {\n\t\tansiStyles.dim.open = '';\n\t}\n\n\tfor (const code of this._styles.slice().reverse()) {\n\t\t// Replace any instances already present with a re-opening code\n\t\t// otherwise only the part of the string until said closing code\n\t\t// will be colored, and the rest will simply be 'plain'.\n\t\tstr = code.open + str.replace(code.closeRe, code.open) + code.close;\n\n\t\t// Close the styling before a linebreak and reopen\n\t\t// after next line to fix a bleed issue on macOS\n\t\t// https://github.com/chalk/chalk/pull/92\n\t\tstr = str.replace(/\\r?\\n/g, `${code.close}$&${code.open}`);\n\t}\n\n\t// Reset the original `dim` if we changed it to work around the Windows dimmed gray issue\n\tansiStyles.dim.open = originalDim;\n\n\treturn str;\n}\n\nfunction chalkTag(chalk, strings) {\n\tif (!Array.isArray(strings)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn [].slice.call(arguments, 1).join(' ');\n\t}\n\n\tconst args = [].slice.call(arguments, 2);\n\tconst parts = [strings.raw[0]];\n\n\tfor (let i = 1; i < strings.length; i++) {\n\t\tparts.push(String(args[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'));\n\t\tparts.push(String(strings.raw[i]));\n\t}\n\n\treturn template(chalk, parts.join(''));\n}\n\nObject.defineProperties(Chalk.prototype, styles);\n\nmodule.exports = Chalk(); // eslint-disable-line new-cap\nmodule.exports.supportsColor = stdoutColor;\nmodule.exports.default = module.exports; // For TypeScript\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport _colors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n// See https://github.com/alexeyraspopov/picocolors/issues/62\nconst colors =\n  typeof process === \"object\" &&\n  (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n    ? createColors(false)\n    : _colors;\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n  (f, g) => v =>\n    f(g(v));\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype InternalTokenType =\n  | \"keyword\"\n  | \"capitalized\"\n  | \"jsxIdentifier\"\n  | \"punctuator\"\n  | \"number\"\n  | \"string\"\n  | \"regex\"\n  | \"comment\"\n  | \"invalid\";\n\ntype Token = {\n  type: InternalTokenType | \"uncolored\";\n  value: string;\n};\n/**\n * Styles for token types.\n */\nfunction getDefs(colors: Colors): Record<InternalTokenType, Formatter> {\n  return {\n    keyword: colors.cyan,\n    capitalized: colors.yellow,\n    jsxIdentifier: colors.yellow,\n    punctuator: colors.yellow,\n    number: colors.magenta,\n    string: colors.green,\n    regex: colors.magenta,\n    comment: colors.gray,\n    invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n  };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n  text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n  /**\n   * Get the type of token, specifying punctuator type.\n   */\n  const getTokenType = function (\n    token: JSToken | JSXToken,\n  ): InternalTokenType | \"uncolored\" {\n    if (token.type === \"IdentifierName\") {\n      if (\n        isKeyword(token.value) ||\n        isStrictReservedWord(token.value, true) ||\n        sometimesKeywords.has(token.value)\n      ) {\n        return \"keyword\";\n      }\n\n      if (token.value[0] !== token.value[0].toLowerCase()) {\n        return \"capitalized\";\n      }\n    }\n\n    if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n      return \"uncolored\";\n    }\n\n    if (token.type === \"Invalid\" && token.value === \"@\") {\n      return \"punctuator\";\n    }\n\n    switch (token.type) {\n      case \"NumericLiteral\":\n        return \"number\";\n\n      case \"StringLiteral\":\n      case \"JSXString\":\n      case \"NoSubstitutionTemplate\":\n        return \"string\";\n\n      case \"RegularExpressionLiteral\":\n        return \"regex\";\n\n      case \"Punctuator\":\n      case \"JSXPunctuator\":\n        return \"punctuator\";\n\n      case \"MultiLineComment\":\n      case \"SingleLineComment\":\n        return \"comment\";\n\n      case \"Invalid\":\n      case \"JSXInvalid\":\n        return \"invalid\";\n\n      case \"JSXIdentifier\":\n        return \"jsxIdentifier\";\n\n      default:\n        return \"uncolored\";\n    }\n  };\n\n  /**\n   * Turn a string of JS into an array of objects.\n   */\n  tokenize = function* (text: string): Generator<Token> {\n    for (const token of jsTokens(text, { jsx: true })) {\n      switch (token.type) {\n        case \"TemplateHead\":\n          yield { type: \"string\", value: token.value.slice(0, -2) };\n          yield { type: \"punctuator\", value: \"${\" };\n          break;\n\n        case \"TemplateMiddle\":\n          yield { type: \"punctuator\", value: \"}\" };\n          yield { type: \"string\", value: token.value.slice(1, -2) };\n          yield { type: \"punctuator\", value: \"${\" };\n          break;\n\n        case \"TemplateTail\":\n          yield { type: \"punctuator\", value: \"}\" };\n          yield { type: \"string\", value: token.value.slice(1) };\n          break;\n\n        default:\n          yield {\n            type: getTokenType(token),\n            value: token.value,\n          };\n      }\n    }\n  };\n} else {\n  /**\n   * RegExp to test for what seems to be a JSX tag name.\n   */\n  const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n  // The token here is defined in js-tokens@4. However we don't bother\n  // typing it since the whole block will be removed in Babel 8\n  const getTokenType = function (token: any, offset: number, text: string) {\n    if (token.type === \"name\") {\n      if (\n        isKeyword(token.value) ||\n        isStrictReservedWord(token.value, true) ||\n        sometimesKeywords.has(token.value)\n      ) {\n        return \"keyword\";\n      }\n\n      if (\n        JSX_TAG.test(token.value) &&\n        (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")\n      ) {\n        return \"jsxIdentifier\";\n      }\n\n      if (token.value[0] !== token.value[0].toLowerCase()) {\n        return \"capitalized\";\n      }\n    }\n\n    if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n      return \"bracket\";\n    }\n\n    if (\n      token.type === \"invalid\" &&\n      (token.value === \"@\" || token.value === \"#\")\n    ) {\n      return \"punctuator\";\n    }\n\n    return token.type;\n  };\n\n  tokenize = function* (text: string) {\n    let match;\n    while ((match = (jsTokens as any).default.exec(text))) {\n      const token = (jsTokens as any).matchToToken(match);\n\n      yield {\n        type: getTokenType(token, match.index, text),\n        value: token.value,\n      };\n    }\n  };\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\nfunction highlightTokens(defs: Record<string, Formatter>, text: string) {\n  let highlighted = \"\";\n\n  for (const { type, value } of tokenize(text)) {\n    const colorize = defs[type];\n    if (colorize) {\n      highlighted += value\n        .split(NEWLINE)\n        .map(str => colorize(str))\n        .join(\"\\n\");\n    } else {\n      highlighted += value;\n    }\n  }\n\n  return highlighted;\n}\n\n/**\n * Highlight `text` using the token definitions in `defs`.\n */\n\ntype Options = {\n  forceColor?: boolean;\n};\n\n/**\n * Whether the code should be highlighted given the passed options.\n */\nexport function shouldHighlight(options: Options): boolean {\n  return colors.isColorSupported || options.forceColor;\n}\n\nlet pcWithForcedColor: Colors = undefined;\nfunction getColors(forceColor: boolean) {\n  if (forceColor) {\n    pcWithForcedColor ??= createColors(true);\n    return pcWithForcedColor;\n  }\n  return colors;\n}\n\n/**\n * Highlight `code`.\n */\nexport default function highlight(code: string, options: Options = {}): string {\n  if (code !== \"\" && shouldHighlight(options)) {\n    const defs = getDefs(getColors(options.forceColor));\n    return highlightTokens(defs, code);\n  } else {\n    return code;\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  let chalk: any, chalkWithForcedColor: any;\n  // eslint-disable-next-line no-restricted-globals\n  exports.getChalk = ({ forceColor }: Options) => {\n    // eslint-disable-next-line no-restricted-globals\n    chalk ??= require(\"chalk\");\n    if (forceColor) {\n      chalkWithForcedColor ??= new chalk.constructor({\n        enabled: true,\n        level: 1,\n      });\n      return chalkWithForcedColor;\n    }\n    return chalk;\n  };\n}\n","import highlight, { shouldHighlight } from \"@babel/highlight\";\n\nimport _colors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n// See https://github.com/alexeyraspopov/picocolors/issues/62\nconst colors =\n  typeof process === \"object\" &&\n  (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n    ? createColors(false)\n    : _colors;\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n  (f, g) => v =>\n    f(g(v));\n\nlet pcWithForcedColor: Colors = undefined;\nfunction getColors(forceColor: boolean) {\n  if (forceColor) {\n    pcWithForcedColor ??= createColors(true);\n    return pcWithForcedColor;\n  }\n  return colors;\n}\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n  column: number;\n  line: number;\n};\n\ntype NodeLocation = {\n  end?: Location;\n  start: Location;\n};\n\nexport interface Options {\n  /** Syntax highlight the code as JavaScript for terminals. default: false */\n  highlightCode?: boolean;\n  /**  The number of lines to show above the error. default: 2 */\n  linesAbove?: number;\n  /**  The number of lines to show below the error. default: 3 */\n  linesBelow?: number;\n  /**\n   * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n   * overrides highlightCode.\n   * default: false\n   */\n  forceColor?: boolean;\n  /**\n   * Pass in a string to be displayed inline (if possible) next to the\n   * highlighted location in the code. If it can't be positioned inline,\n   * it will be placed above the code frame.\n   * default: nothing\n   */\n  message?: string;\n}\n\n/**\n * Styles for code frame token types.\n */\nfunction getDefs(colors: Colors) {\n  return {\n    gutter: colors.gray,\n    marker: compose(colors.red, colors.bold),\n    message: compose(colors.red, colors.bold),\n  };\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nfunction getMarkerLines(\n  loc: NodeLocation,\n  source: Array<string>,\n  opts: Options,\n): {\n  start: number;\n  end: number;\n  markerLines: MarkerLines;\n} {\n  const startLoc: Location = {\n    column: 0,\n    line: -1,\n    ...loc.start,\n  };\n  const endLoc: Location = {\n    ...startLoc,\n    ...loc.end,\n  };\n  const { linesAbove = 2, linesBelow = 3 } = opts || {};\n  const startLine = startLoc.line;\n  const startColumn = startLoc.column;\n  const endLine = endLoc.line;\n  const endColumn = endLoc.column;\n\n  let start = Math.max(startLine - (linesAbove + 1), 0);\n  let end = Math.min(source.length, endLine + linesBelow);\n\n  if (startLine === -1) {\n    start = 0;\n  }\n\n  if (endLine === -1) {\n    end = source.length;\n  }\n\n  const lineDiff = endLine - startLine;\n  const markerLines: MarkerLines = {};\n\n  if (lineDiff) {\n    for (let i = 0; i <= lineDiff; i++) {\n      const lineNumber = i + startLine;\n\n      if (!startColumn) {\n        markerLines[lineNumber] = true;\n      } else if (i === 0) {\n        const sourceLength = source[lineNumber - 1].length;\n\n        markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n      } else if (i === lineDiff) {\n        markerLines[lineNumber] = [0, endColumn];\n      } else {\n        const sourceLength = source[lineNumber - i].length;\n\n        markerLines[lineNumber] = [0, sourceLength];\n      }\n    }\n  } else {\n    if (startColumn === endColumn) {\n      if (startColumn) {\n        markerLines[startLine] = [startColumn, 0];\n      } else {\n        markerLines[startLine] = true;\n      }\n    } else {\n      markerLines[startLine] = [startColumn, endColumn - startColumn];\n    }\n  }\n\n  return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n  rawLines: string,\n  loc: NodeLocation,\n  opts: Options = {},\n): string {\n  const highlighted =\n    (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);\n  const colors = getColors(opts.forceColor);\n  const defs = getDefs(colors);\n  const maybeHighlight = (fmt: Formatter, string: string) => {\n    return highlighted ? fmt(string) : string;\n  };\n  const lines = rawLines.split(NEWLINE);\n  const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n  const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n  const numberMaxWidth = String(end).length;\n\n  const highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;\n\n  let frame = highlightedLines\n    .split(NEWLINE, end)\n    .slice(start, end)\n    .map((line, index) => {\n      const number = start + 1 + index;\n      const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n      const gutter = ` ${paddedNumber} |`;\n      const hasMarker = markerLines[number];\n      const lastMarkerLine = !markerLines[number + 1];\n      if (hasMarker) {\n        let markerLine = \"\";\n        if (Array.isArray(hasMarker)) {\n          const markerSpacing = line\n            .slice(0, Math.max(hasMarker[0] - 1, 0))\n            .replace(/[^\\t]/g, \" \");\n          const numberOfMarkers = hasMarker[1] || 1;\n\n          markerLine = [\n            \"\\n \",\n            maybeHighlight(defs.gutter, gutter.replace(/\\d/g, \" \")),\n            \" \",\n            markerSpacing,\n            maybeHighlight(defs.marker, \"^\").repeat(numberOfMarkers),\n          ].join(\"\");\n\n          if (lastMarkerLine && opts.message) {\n            markerLine += \" \" + maybeHighlight(defs.message, opts.message);\n          }\n        }\n        return [\n          maybeHighlight(defs.marker, \">\"),\n          maybeHighlight(defs.gutter, gutter),\n          line.length > 0 ? ` ${line}` : \"\",\n          markerLine,\n        ].join(\"\");\n      } else {\n        return ` ${maybeHighlight(defs.gutter, gutter)}${\n          line.length > 0 ? ` ${line}` : \"\"\n        }`;\n      }\n    })\n    .join(\"\\n\");\n\n  if (opts.message && !hasColumns) {\n    frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n  }\n\n  if (highlighted) {\n    return colors.reset(frame);\n  } else {\n    return frame;\n  }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n  rawLines: string,\n  lineNumber: number,\n  colNumber?: number | null,\n  opts: Options = {},\n): string {\n  if (!deprecationWarningShown) {\n    deprecationWarningShown = true;\n\n    const message =\n      \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n    if (process.emitWarning) {\n      // A string is directly supplied to emitWarning, because when supplying an\n      // Error object node throws in the tests because of different contexts\n      process.emitWarning(message, \"DeprecationWarning\");\n    } else {\n      const deprecationError = new Error(message);\n      deprecationError.name = \"DeprecationWarning\";\n      console.warn(new Error(message));\n    }\n  }\n\n  colNumber = Math.max(colNumber, 0);\n\n  const location: NodeLocation = {\n    start: { column: colNumber, line: lineNumber },\n  };\n\n  return codeFrameColumns(rawLines, location, opts);\n}\n","'use strict';\n\nexports.isInteger = num => {\n  if (typeof num === 'number') {\n    return Number.isInteger(num);\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isInteger(Number(num));\n  }\n  return false;\n};\n\n/**\n * Find a node of the given type\n */\n\nexports.find = (node, type) => node.nodes.find(node => node.type === type);\n\n/**\n * Find a node of the given type\n */\n\nexports.exceedsLimit = (min, max, step = 1, limit) => {\n  if (limit === false) return false;\n  if (!exports.isInteger(min) || !exports.isInteger(max)) return false;\n  return ((Number(max) - Number(min)) / Number(step)) >= limit;\n};\n\n/**\n * Escape the given node with '\\\\' before node.value\n */\n\nexports.escapeNode = (block, n = 0, type) => {\n  const node = block.nodes[n];\n  if (!node) return;\n\n  if ((type && node.type === type) || node.type === 'open' || node.type === 'close') {\n    if (node.escaped !== true) {\n      node.value = '\\\\' + node.value;\n      node.escaped = true;\n    }\n  }\n};\n\n/**\n * Returns true if the given brace node should be enclosed in literal braces\n */\n\nexports.encloseBrace = node => {\n  if (node.type !== 'brace') return false;\n  if ((node.commas >> 0 + node.ranges >> 0) === 0) {\n    node.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a brace node is invalid.\n */\n\nexports.isInvalidBrace = block => {\n  if (block.type !== 'brace') return false;\n  if (block.invalid === true || block.dollar) return true;\n  if ((block.commas >> 0 + block.ranges >> 0) === 0) {\n    block.invalid = true;\n    return true;\n  }\n  if (block.open !== true || block.close !== true) {\n    block.invalid = true;\n    return true;\n  }\n  return false;\n};\n\n/**\n * Returns true if a node is an open or close node\n */\n\nexports.isOpenOrClose = node => {\n  if (node.type === 'open' || node.type === 'close') {\n    return true;\n  }\n  return node.open === true || node.close === true;\n};\n\n/**\n * Reduce an array of text nodes.\n */\n\nexports.reduce = nodes => nodes.reduce((acc, node) => {\n  if (node.type === 'text') acc.push(node.value);\n  if (node.type === 'range') node.type = 'text';\n  return acc;\n}, []);\n\n/**\n * Flatten an array\n */\n\nexports.flatten = (...args) => {\n  const result = [];\n\n  const flat = arr => {\n    for (let i = 0; i < arr.length; i++) {\n      const ele = arr[i];\n\n      if (Array.isArray(ele)) {\n        flat(ele);\n        continue;\n      }\n\n      if (ele !== undefined) {\n        result.push(ele);\n      }\n    }\n    return result;\n  };\n\n  flat(args);\n  return result;\n};\n","'use strict';\n\nconst utils = require('./utils');\n\nmodule.exports = (ast, options = {}) => {\n  const stringify = (node, parent = {}) => {\n    const invalidBlock = options.escapeInvalid && utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    let output = '';\n\n    if (node.value) {\n      if ((invalidBlock || invalidNode) && utils.isOpenOrClose(node)) {\n        return '\\\\' + node.value;\n      }\n      return node.value;\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += stringify(child);\n      }\n    }\n    return output;\n  };\n\n  return stringify(ast);\n};\n\n","/*!\n * is-number <https://github.com/jonschlinkert/is-number>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nmodule.exports = function(num) {\n  if (typeof num === 'number') {\n    return num - num === 0;\n  }\n  if (typeof num === 'string' && num.trim() !== '') {\n    return Number.isFinite ? Number.isFinite(+num) : isFinite(+num);\n  }\n  return false;\n};\n","/*!\n * to-regex-range <https://github.com/micromatch/to-regex-range>\n *\n * Copyright (c) 2015-present, Jon Schlinkert.\n * Released under the MIT License.\n */\n\n'use strict';\n\nconst isNumber = require('is-number');\n\nconst toRegexRange = (min, max, options) => {\n  if (isNumber(min) === false) {\n    throw new TypeError('toRegexRange: expected the first argument to be a number');\n  }\n\n  if (max === void 0 || min === max) {\n    return String(min);\n  }\n\n  if (isNumber(max) === false) {\n    throw new TypeError('toRegexRange: expected the second argument to be a number.');\n  }\n\n  let opts = { relaxZeros: true, ...options };\n  if (typeof opts.strictZeros === 'boolean') {\n    opts.relaxZeros = opts.strictZeros === false;\n  }\n\n  let relax = String(opts.relaxZeros);\n  let shorthand = String(opts.shorthand);\n  let capture = String(opts.capture);\n  let wrap = String(opts.wrap);\n  let cacheKey = min + ':' + max + '=' + relax + shorthand + capture + wrap;\n\n  if (toRegexRange.cache.hasOwnProperty(cacheKey)) {\n    return toRegexRange.cache[cacheKey].result;\n  }\n\n  let a = Math.min(min, max);\n  let b = Math.max(min, max);\n\n  if (Math.abs(a - b) === 1) {\n    let result = min + '|' + max;\n    if (opts.capture) {\n      return `(${result})`;\n    }\n    if (opts.wrap === false) {\n      return result;\n    }\n    return `(?:${result})`;\n  }\n\n  let isPadded = hasPadding(min) || hasPadding(max);\n  let state = { min, max, a, b };\n  let positives = [];\n  let negatives = [];\n\n  if (isPadded) {\n    state.isPadded = isPadded;\n    state.maxLen = String(state.max).length;\n  }\n\n  if (a < 0) {\n    let newMin = b < 0 ? Math.abs(b) : 1;\n    negatives = splitToPatterns(newMin, Math.abs(a), state, opts);\n    a = state.a = 0;\n  }\n\n  if (b >= 0) {\n    positives = splitToPatterns(a, b, state, opts);\n  }\n\n  state.negatives = negatives;\n  state.positives = positives;\n  state.result = collatePatterns(negatives, positives, opts);\n\n  if (opts.capture === true) {\n    state.result = `(${state.result})`;\n  } else if (opts.wrap !== false && (positives.length + negatives.length) > 1) {\n    state.result = `(?:${state.result})`;\n  }\n\n  toRegexRange.cache[cacheKey] = state;\n  return state.result;\n};\n\nfunction collatePatterns(neg, pos, options) {\n  let onlyNegative = filterPatterns(neg, pos, '-', false, options) || [];\n  let onlyPositive = filterPatterns(pos, neg, '', false, options) || [];\n  let intersected = filterPatterns(neg, pos, '-?', true, options) || [];\n  let subpatterns = onlyNegative.concat(intersected).concat(onlyPositive);\n  return subpatterns.join('|');\n}\n\nfunction splitToRanges(min, max) {\n  let nines = 1;\n  let zeros = 1;\n\n  let stop = countNines(min, nines);\n  let stops = new Set([max]);\n\n  while (min <= stop && stop <= max) {\n    stops.add(stop);\n    nines += 1;\n    stop = countNines(min, nines);\n  }\n\n  stop = countZeros(max + 1, zeros) - 1;\n\n  while (min < stop && stop <= max) {\n    stops.add(stop);\n    zeros += 1;\n    stop = countZeros(max + 1, zeros) - 1;\n  }\n\n  stops = [...stops];\n  stops.sort(compare);\n  return stops;\n}\n\n/**\n * Convert a range to a regex pattern\n * @param {Number} `start`\n * @param {Number} `stop`\n * @return {String}\n */\n\nfunction rangeToPattern(start, stop, options) {\n  if (start === stop) {\n    return { pattern: start, count: [], digits: 0 };\n  }\n\n  let zipped = zip(start, stop);\n  let digits = zipped.length;\n  let pattern = '';\n  let count = 0;\n\n  for (let i = 0; i < digits; i++) {\n    let [startDigit, stopDigit] = zipped[i];\n\n    if (startDigit === stopDigit) {\n      pattern += startDigit;\n\n    } else if (startDigit !== '0' || stopDigit !== '9') {\n      pattern += toCharacterClass(startDigit, stopDigit, options);\n\n    } else {\n      count++;\n    }\n  }\n\n  if (count) {\n    pattern += options.shorthand === true ? '\\\\d' : '[0-9]';\n  }\n\n  return { pattern, count: [count], digits };\n}\n\nfunction splitToPatterns(min, max, tok, options) {\n  let ranges = splitToRanges(min, max);\n  let tokens = [];\n  let start = min;\n  let prev;\n\n  for (let i = 0; i < ranges.length; i++) {\n    let max = ranges[i];\n    let obj = rangeToPattern(String(start), String(max), options);\n    let zeros = '';\n\n    if (!tok.isPadded && prev && prev.pattern === obj.pattern) {\n      if (prev.count.length > 1) {\n        prev.count.pop();\n      }\n\n      prev.count.push(obj.count[0]);\n      prev.string = prev.pattern + toQuantifier(prev.count);\n      start = max + 1;\n      continue;\n    }\n\n    if (tok.isPadded) {\n      zeros = padZeros(max, tok, options);\n    }\n\n    obj.string = zeros + obj.pattern + toQuantifier(obj.count);\n    tokens.push(obj);\n    start = max + 1;\n    prev = obj;\n  }\n\n  return tokens;\n}\n\nfunction filterPatterns(arr, comparison, prefix, intersection, options) {\n  let result = [];\n\n  for (let ele of arr) {\n    let { string } = ele;\n\n    // only push if _both_ are negative...\n    if (!intersection && !contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n\n    // or _both_ are positive\n    if (intersection && contains(comparison, 'string', string)) {\n      result.push(prefix + string);\n    }\n  }\n  return result;\n}\n\n/**\n * Zip strings\n */\n\nfunction zip(a, b) {\n  let arr = [];\n  for (let i = 0; i < a.length; i++) arr.push([a[i], b[i]]);\n  return arr;\n}\n\nfunction compare(a, b) {\n  return a > b ? 1 : b > a ? -1 : 0;\n}\n\nfunction contains(arr, key, val) {\n  return arr.some(ele => ele[key] === val);\n}\n\nfunction countNines(min, len) {\n  return Number(String(min).slice(0, -len) + '9'.repeat(len));\n}\n\nfunction countZeros(integer, zeros) {\n  return integer - (integer % Math.pow(10, zeros));\n}\n\nfunction toQuantifier(digits) {\n  let [start = 0, stop = ''] = digits;\n  if (stop || start > 1) {\n    return `{${start + (stop ? ',' + stop : '')}}`;\n  }\n  return '';\n}\n\nfunction toCharacterClass(a, b, options) {\n  return `[${a}${(b - a === 1) ? '' : '-'}${b}]`;\n}\n\nfunction hasPadding(str) {\n  return /^-?(0+)\\d/.test(str);\n}\n\nfunction padZeros(value, tok, options) {\n  if (!tok.isPadded) {\n    return value;\n  }\n\n  let diff = Math.abs(tok.maxLen - String(value).length);\n  let relax = options.relaxZeros !== false;\n\n  switch (diff) {\n    case 0:\n      return '';\n    case 1:\n      return relax ? '0?' : '0';\n    case 2:\n      return relax ? '0{0,2}' : '00';\n    default: {\n      return relax ? `0{0,${diff}}` : `0{${diff}}`;\n    }\n  }\n}\n\n/**\n * Cache\n */\n\ntoRegexRange.cache = {};\ntoRegexRange.clearCache = () => (toRegexRange.cache = {});\n\n/**\n * Expose `toRegexRange`\n */\n\nmodule.exports = toRegexRange;\n","/*!\n * fill-range <https://github.com/jonschlinkert/fill-range>\n *\n * Copyright (c) 2014-present, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n\n'use strict';\n\nconst util = require('util');\nconst toRegexRange = require('to-regex-range');\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\nconst transform = toNumber => {\n  return value => toNumber === true ? Number(value) : String(value);\n};\n\nconst isValidValue = value => {\n  return typeof value === 'number' || (typeof value === 'string' && value !== '');\n};\n\nconst isNumber = num => Number.isInteger(+num);\n\nconst zeros = input => {\n  let value = `${input}`;\n  let index = -1;\n  if (value[0] === '-') value = value.slice(1);\n  if (value === '0') return false;\n  while (value[++index] === '0');\n  return index > 0;\n};\n\nconst stringify = (start, end, options) => {\n  if (typeof start === 'string' || typeof end === 'string') {\n    return true;\n  }\n  return options.stringify === true;\n};\n\nconst pad = (input, maxLength, toNumber) => {\n  if (maxLength > 0) {\n    let dash = input[0] === '-' ? '-' : '';\n    if (dash) input = input.slice(1);\n    input = (dash + input.padStart(dash ? maxLength - 1 : maxLength, '0'));\n  }\n  if (toNumber === false) {\n    return String(input);\n  }\n  return input;\n};\n\nconst toMaxLen = (input, maxLength) => {\n  let negative = input[0] === '-' ? '-' : '';\n  if (negative) {\n    input = input.slice(1);\n    maxLength--;\n  }\n  while (input.length < maxLength) input = '0' + input;\n  return negative ? ('-' + input) : input;\n};\n\nconst toSequence = (parts, options, maxLen) => {\n  parts.negatives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n  parts.positives.sort((a, b) => a < b ? -1 : a > b ? 1 : 0);\n\n  let prefix = options.capture ? '' : '?:';\n  let positives = '';\n  let negatives = '';\n  let result;\n\n  if (parts.positives.length) {\n    positives = parts.positives.map(v => toMaxLen(String(v), maxLen)).join('|');\n  }\n\n  if (parts.negatives.length) {\n    negatives = `-(${prefix}${parts.negatives.map(v => toMaxLen(String(v), maxLen)).join('|')})`;\n  }\n\n  if (positives && negatives) {\n    result = `${positives}|${negatives}`;\n  } else {\n    result = positives || negatives;\n  }\n\n  if (options.wrap) {\n    return `(${prefix}${result})`;\n  }\n\n  return result;\n};\n\nconst toRange = (a, b, isNumbers, options) => {\n  if (isNumbers) {\n    return toRegexRange(a, b, { wrap: false, ...options });\n  }\n\n  let start = String.fromCharCode(a);\n  if (a === b) return start;\n\n  let stop = String.fromCharCode(b);\n  return `[${start}-${stop}]`;\n};\n\nconst toRegex = (start, end, options) => {\n  if (Array.isArray(start)) {\n    let wrap = options.wrap === true;\n    let prefix = options.capture ? '' : '?:';\n    return wrap ? `(${prefix}${start.join('|')})` : start.join('|');\n  }\n  return toRegexRange(start, end, options);\n};\n\nconst rangeError = (...args) => {\n  return new RangeError('Invalid range arguments: ' + util.inspect(...args));\n};\n\nconst invalidRange = (start, end, options) => {\n  if (options.strictRanges === true) throw rangeError([start, end]);\n  return [];\n};\n\nconst invalidStep = (step, options) => {\n  if (options.strictRanges === true) {\n    throw new TypeError(`Expected step \"${step}\" to be a number`);\n  }\n  return [];\n};\n\nconst fillNumbers = (start, end, step = 1, options = {}) => {\n  let a = Number(start);\n  let b = Number(end);\n\n  if (!Number.isInteger(a) || !Number.isInteger(b)) {\n    if (options.strictRanges === true) throw rangeError([start, end]);\n    return [];\n  }\n\n  // fix negative zero\n  if (a === 0) a = 0;\n  if (b === 0) b = 0;\n\n  let descending = a > b;\n  let startString = String(start);\n  let endString = String(end);\n  let stepString = String(step);\n  step = Math.max(Math.abs(step), 1);\n\n  let padded = zeros(startString) || zeros(endString) || zeros(stepString);\n  let maxLen = padded ? Math.max(startString.length, endString.length, stepString.length) : 0;\n  let toNumber = padded === false && stringify(start, end, options) === false;\n  let format = options.transform || transform(toNumber);\n\n  if (options.toRegex && step === 1) {\n    return toRange(toMaxLen(start, maxLen), toMaxLen(end, maxLen), true, options);\n  }\n\n  let parts = { negatives: [], positives: [] };\n  let push = num => parts[num < 0 ? 'negatives' : 'positives'].push(Math.abs(num));\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    if (options.toRegex === true && step > 1) {\n      push(a);\n    } else {\n      range.push(pad(format(a, index), maxLen, toNumber));\n    }\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return step > 1\n      ? toSequence(parts, options, maxLen)\n      : toRegex(range, null, { wrap: false, ...options });\n  }\n\n  return range;\n};\n\nconst fillLetters = (start, end, step = 1, options = {}) => {\n  if ((!isNumber(start) && start.length > 1) || (!isNumber(end) && end.length > 1)) {\n    return invalidRange(start, end, options);\n  }\n\n  let format = options.transform || (val => String.fromCharCode(val));\n  let a = `${start}`.charCodeAt(0);\n  let b = `${end}`.charCodeAt(0);\n\n  let descending = a > b;\n  let min = Math.min(a, b);\n  let max = Math.max(a, b);\n\n  if (options.toRegex && step === 1) {\n    return toRange(min, max, false, options);\n  }\n\n  let range = [];\n  let index = 0;\n\n  while (descending ? a >= b : a <= b) {\n    range.push(format(a, index));\n    a = descending ? a - step : a + step;\n    index++;\n  }\n\n  if (options.toRegex === true) {\n    return toRegex(range, null, { wrap: false, options });\n  }\n\n  return range;\n};\n\nconst fill = (start, end, step, options = {}) => {\n  if (end == null && isValidValue(start)) {\n    return [start];\n  }\n\n  if (!isValidValue(start) || !isValidValue(end)) {\n    return invalidRange(start, end, options);\n  }\n\n  if (typeof step === 'function') {\n    return fill(start, end, 1, { transform: step });\n  }\n\n  if (isObject(step)) {\n    return fill(start, end, 0, step);\n  }\n\n  let opts = { ...options };\n  if (opts.capture === true) opts.wrap = true;\n  step = step || opts.step || 1;\n\n  if (!isNumber(step)) {\n    if (step != null && !isObject(step)) return invalidStep(step, opts);\n    return fill(start, end, 1, step);\n  }\n\n  if (isNumber(start) && isNumber(end)) {\n    return fillNumbers(start, end, step, opts);\n  }\n\n  return fillLetters(start, end, Math.max(Math.abs(step), 1), opts);\n};\n\nmodule.exports = fill;\n","'use strict';\n\nconst fill = require('fill-range');\nconst utils = require('./utils');\n\nconst compile = (ast, options = {}) => {\n  const walk = (node, parent = {}) => {\n    const invalidBlock = utils.isInvalidBrace(parent);\n    const invalidNode = node.invalid === true && options.escapeInvalid === true;\n    const invalid = invalidBlock === true || invalidNode === true;\n    const prefix = options.escapeInvalid === true ? '\\\\' : '';\n    let output = '';\n\n    if (node.isOpen === true) {\n      return prefix + node.value;\n    }\n\n    if (node.isClose === true) {\n      console.log('node.isClose', prefix, node.value);\n      return prefix + node.value;\n    }\n\n    if (node.type === 'open') {\n      return invalid ? prefix + node.value : '(';\n    }\n\n    if (node.type === 'close') {\n      return invalid ? prefix + node.value : ')';\n    }\n\n    if (node.type === 'comma') {\n      return node.prev.type === 'comma' ? '' : invalid ? node.value : '|';\n    }\n\n    if (node.value) {\n      return node.value;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n      const range = fill(...args, { ...options, wrap: false, toRegex: true, strictZeros: true });\n\n      if (range.length !== 0) {\n        return args.length > 1 && range.length > 1 ? `(${range})` : range;\n      }\n    }\n\n    if (node.nodes) {\n      for (const child of node.nodes) {\n        output += walk(child, node);\n      }\n    }\n\n    return output;\n  };\n\n  return walk(ast);\n};\n\nmodule.exports = compile;\n","'use strict';\n\nconst fill = require('fill-range');\nconst stringify = require('./stringify');\nconst utils = require('./utils');\n\nconst append = (queue = '', stash = '', enclose = false) => {\n  const result = [];\n\n  queue = [].concat(queue);\n  stash = [].concat(stash);\n\n  if (!stash.length) return queue;\n  if (!queue.length) {\n    return enclose ? utils.flatten(stash).map(ele => `{${ele}}`) : stash;\n  }\n\n  for (const item of queue) {\n    if (Array.isArray(item)) {\n      for (const value of item) {\n        result.push(append(value, stash, enclose));\n      }\n    } else {\n      for (let ele of stash) {\n        if (enclose === true && typeof ele === 'string') ele = `{${ele}}`;\n        result.push(Array.isArray(ele) ? append(item, ele, enclose) : item + ele);\n      }\n    }\n  }\n  return utils.flatten(result);\n};\n\nconst expand = (ast, options = {}) => {\n  const rangeLimit = options.rangeLimit === undefined ? 1000 : options.rangeLimit;\n\n  const walk = (node, parent = {}) => {\n    node.queue = [];\n\n    let p = parent;\n    let q = parent.queue;\n\n    while (p.type !== 'brace' && p.type !== 'root' && p.parent) {\n      p = p.parent;\n      q = p.queue;\n    }\n\n    if (node.invalid || node.dollar) {\n      q.push(append(q.pop(), stringify(node, options)));\n      return;\n    }\n\n    if (node.type === 'brace' && node.invalid !== true && node.nodes.length === 2) {\n      q.push(append(q.pop(), ['{}']));\n      return;\n    }\n\n    if (node.nodes && node.ranges > 0) {\n      const args = utils.reduce(node.nodes);\n\n      if (utils.exceedsLimit(...args, options.step, rangeLimit)) {\n        throw new RangeError('expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.');\n      }\n\n      let range = fill(...args, options);\n      if (range.length === 0) {\n        range = stringify(node, options);\n      }\n\n      q.push(append(q.pop(), range));\n      node.nodes = [];\n      return;\n    }\n\n    const enclose = utils.encloseBrace(node);\n    let queue = node.queue;\n    let block = node;\n\n    while (block.type !== 'brace' && block.type !== 'root' && block.parent) {\n      block = block.parent;\n      queue = block.queue;\n    }\n\n    for (let i = 0; i < node.nodes.length; i++) {\n      const child = node.nodes[i];\n\n      if (child.type === 'comma' && node.type === 'brace') {\n        if (i === 1) queue.push('');\n        queue.push('');\n        continue;\n      }\n\n      if (child.type === 'close') {\n        q.push(append(q.pop(), queue, enclose));\n        continue;\n      }\n\n      if (child.value && child.type !== 'open') {\n        queue.push(append(queue.pop(), child.value));\n        continue;\n      }\n\n      if (child.nodes) {\n        walk(child, node);\n      }\n    }\n\n    return queue;\n  };\n\n  return utils.flatten(walk(ast));\n};\n\nmodule.exports = expand;\n","'use strict';\n\nmodule.exports = {\n  MAX_LENGTH: 10000,\n\n  // Digits\n  CHAR_0: '0', /* 0 */\n  CHAR_9: '9', /* 9 */\n\n  // Alphabet chars.\n  CHAR_UPPERCASE_A: 'A', /* A */\n  CHAR_LOWERCASE_A: 'a', /* a */\n  CHAR_UPPERCASE_Z: 'Z', /* Z */\n  CHAR_LOWERCASE_Z: 'z', /* z */\n\n  CHAR_LEFT_PARENTHESES: '(', /* ( */\n  CHAR_RIGHT_PARENTHESES: ')', /* ) */\n\n  CHAR_ASTERISK: '*', /* * */\n\n  // Non-alphabetic chars.\n  CHAR_AMPERSAND: '&', /* & */\n  CHAR_AT: '@', /* @ */\n  CHAR_BACKSLASH: '\\\\', /* \\ */\n  CHAR_BACKTICK: '`', /* ` */\n  CHAR_CARRIAGE_RETURN: '\\r', /* \\r */\n  CHAR_CIRCUMFLEX_ACCENT: '^', /* ^ */\n  CHAR_COLON: ':', /* : */\n  CHAR_COMMA: ',', /* , */\n  CHAR_DOLLAR: '$', /* . */\n  CHAR_DOT: '.', /* . */\n  CHAR_DOUBLE_QUOTE: '\"', /* \" */\n  CHAR_EQUAL: '=', /* = */\n  CHAR_EXCLAMATION_MARK: '!', /* ! */\n  CHAR_FORM_FEED: '\\f', /* \\f */\n  CHAR_FORWARD_SLASH: '/', /* / */\n  CHAR_HASH: '#', /* # */\n  CHAR_HYPHEN_MINUS: '-', /* - */\n  CHAR_LEFT_ANGLE_BRACKET: '<', /* < */\n  CHAR_LEFT_CURLY_BRACE: '{', /* { */\n  CHAR_LEFT_SQUARE_BRACKET: '[', /* [ */\n  CHAR_LINE_FEED: '\\n', /* \\n */\n  CHAR_NO_BREAK_SPACE: '\\u00A0', /* \\u00A0 */\n  CHAR_PERCENT: '%', /* % */\n  CHAR_PLUS: '+', /* + */\n  CHAR_QUESTION_MARK: '?', /* ? */\n  CHAR_RIGHT_ANGLE_BRACKET: '>', /* > */\n  CHAR_RIGHT_CURLY_BRACE: '}', /* } */\n  CHAR_RIGHT_SQUARE_BRACKET: ']', /* ] */\n  CHAR_SEMICOLON: ';', /* ; */\n  CHAR_SINGLE_QUOTE: '\\'', /* ' */\n  CHAR_SPACE: ' ', /*   */\n  CHAR_TAB: '\\t', /* \\t */\n  CHAR_UNDERSCORE: '_', /* _ */\n  CHAR_VERTICAL_LINE: '|', /* | */\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE: '\\uFEFF' /* \\uFEFF */\n};\n","'use strict';\n\nconst stringify = require('./stringify');\n\n/**\n * Constants\n */\n\nconst {\n  MAX_LENGTH,\n  CHAR_BACKSLASH, /* \\ */\n  CHAR_BACKTICK, /* ` */\n  CHAR_COMMA, /* , */\n  CHAR_DOT, /* . */\n  CHAR_LEFT_PARENTHESES, /* ( */\n  CHAR_RIGHT_PARENTHESES, /* ) */\n  CHAR_LEFT_CURLY_BRACE, /* { */\n  CHAR_RIGHT_CURLY_BRACE, /* } */\n  CHAR_LEFT_SQUARE_BRACKET, /* [ */\n  CHAR_RIGHT_SQUARE_BRACKET, /* ] */\n  CHAR_DOUBLE_QUOTE, /* \" */\n  CHAR_SINGLE_QUOTE, /* ' */\n  CHAR_NO_BREAK_SPACE,\n  CHAR_ZERO_WIDTH_NOBREAK_SPACE\n} = require('./constants');\n\n/**\n * parse\n */\n\nconst parse = (input, options = {}) => {\n  if (typeof input !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n\n  const opts = options || {};\n  const max = typeof opts.maxLength === 'number' ? Math.min(MAX_LENGTH, opts.maxLength) : MAX_LENGTH;\n  if (input.length > max) {\n    throw new SyntaxError(`Input length (${input.length}), exceeds max characters (${max})`);\n  }\n\n  const ast = { type: 'root', input, nodes: [] };\n  const stack = [ast];\n  let block = ast;\n  let prev = ast;\n  let brackets = 0;\n  const length = input.length;\n  let index = 0;\n  let depth = 0;\n  let value;\n\n  /**\n   * Helpers\n   */\n\n  const advance = () => input[index++];\n  const push = node => {\n    if (node.type === 'text' && prev.type === 'dot') {\n      prev.type = 'text';\n    }\n\n    if (prev && prev.type === 'text' && node.type === 'text') {\n      prev.value += node.value;\n      return;\n    }\n\n    block.nodes.push(node);\n    node.parent = block;\n    node.prev = prev;\n    prev = node;\n    return node;\n  };\n\n  push({ type: 'bos' });\n\n  while (index < length) {\n    block = stack[stack.length - 1];\n    value = advance();\n\n    /**\n     * Invalid chars\n     */\n\n    if (value === CHAR_ZERO_WIDTH_NOBREAK_SPACE || value === CHAR_NO_BREAK_SPACE) {\n      continue;\n    }\n\n    /**\n     * Escaped chars\n     */\n\n    if (value === CHAR_BACKSLASH) {\n      push({ type: 'text', value: (options.keepEscaping ? value : '') + advance() });\n      continue;\n    }\n\n    /**\n     * Right square bracket (literal): ']'\n     */\n\n    if (value === CHAR_RIGHT_SQUARE_BRACKET) {\n      push({ type: 'text', value: '\\\\' + value });\n      continue;\n    }\n\n    /**\n     * Left square bracket: '['\n     */\n\n    if (value === CHAR_LEFT_SQUARE_BRACKET) {\n      brackets++;\n\n      let next;\n\n      while (index < length && (next = advance())) {\n        value += next;\n\n        if (next === CHAR_LEFT_SQUARE_BRACKET) {\n          brackets++;\n          continue;\n        }\n\n        if (next === CHAR_BACKSLASH) {\n          value += advance();\n          continue;\n        }\n\n        if (next === CHAR_RIGHT_SQUARE_BRACKET) {\n          brackets--;\n\n          if (brackets === 0) {\n            break;\n          }\n        }\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Parentheses\n     */\n\n    if (value === CHAR_LEFT_PARENTHESES) {\n      block = push({ type: 'paren', nodes: [] });\n      stack.push(block);\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === CHAR_RIGHT_PARENTHESES) {\n      if (block.type !== 'paren') {\n        push({ type: 'text', value });\n        continue;\n      }\n      block = stack.pop();\n      push({ type: 'text', value });\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Quotes: '|\"|`\n     */\n\n    if (value === CHAR_DOUBLE_QUOTE || value === CHAR_SINGLE_QUOTE || value === CHAR_BACKTICK) {\n      const open = value;\n      let next;\n\n      if (options.keepQuotes !== true) {\n        value = '';\n      }\n\n      while (index < length && (next = advance())) {\n        if (next === CHAR_BACKSLASH) {\n          value += next + advance();\n          continue;\n        }\n\n        if (next === open) {\n          if (options.keepQuotes === true) value += next;\n          break;\n        }\n\n        value += next;\n      }\n\n      push({ type: 'text', value });\n      continue;\n    }\n\n    /**\n     * Left curly brace: '{'\n     */\n\n    if (value === CHAR_LEFT_CURLY_BRACE) {\n      depth++;\n\n      const dollar = prev.value && prev.value.slice(-1) === '$' || block.dollar === true;\n      const brace = {\n        type: 'brace',\n        open: true,\n        close: false,\n        dollar,\n        depth,\n        commas: 0,\n        ranges: 0,\n        nodes: []\n      };\n\n      block = push(brace);\n      stack.push(block);\n      push({ type: 'open', value });\n      continue;\n    }\n\n    /**\n     * Right curly brace: '}'\n     */\n\n    if (value === CHAR_RIGHT_CURLY_BRACE) {\n      if (block.type !== 'brace') {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      const type = 'close';\n      block = stack.pop();\n      block.close = true;\n\n      push({ type, value });\n      depth--;\n\n      block = stack[stack.length - 1];\n      continue;\n    }\n\n    /**\n     * Comma: ','\n     */\n\n    if (value === CHAR_COMMA && depth > 0) {\n      if (block.ranges > 0) {\n        block.ranges = 0;\n        const open = block.nodes.shift();\n        block.nodes = [open, { type: 'text', value: stringify(block) }];\n      }\n\n      push({ type: 'comma', value });\n      block.commas++;\n      continue;\n    }\n\n    /**\n     * Dot: '.'\n     */\n\n    if (value === CHAR_DOT && depth > 0 && block.commas === 0) {\n      const siblings = block.nodes;\n\n      if (depth === 0 || siblings.length === 0) {\n        push({ type: 'text', value });\n        continue;\n      }\n\n      if (prev.type === 'dot') {\n        block.range = [];\n        prev.value += value;\n        prev.type = 'range';\n\n        if (block.nodes.length !== 3 && block.nodes.length !== 5) {\n          block.invalid = true;\n          block.ranges = 0;\n          prev.type = 'text';\n          continue;\n        }\n\n        block.ranges++;\n        block.args = [];\n        continue;\n      }\n\n      if (prev.type === 'range') {\n        siblings.pop();\n\n        const before = siblings[siblings.length - 1];\n        before.value += prev.value + value;\n        prev = before;\n        block.ranges--;\n        continue;\n      }\n\n      push({ type: 'dot', value });\n      continue;\n    }\n\n    /**\n     * Text\n     */\n\n    push({ type: 'text', value });\n  }\n\n  // Mark imbalanced braces and brackets as invalid\n  do {\n    block = stack.pop();\n\n    if (block.type !== 'root') {\n      block.nodes.forEach(node => {\n        if (!node.nodes) {\n          if (node.type === 'open') node.isOpen = true;\n          if (node.type === 'close') node.isClose = true;\n          if (!node.nodes) node.type = 'text';\n          node.invalid = true;\n        }\n      });\n\n      // get the location of the block on parent.nodes (block's siblings)\n      const parent = stack[stack.length - 1];\n      const index = parent.nodes.indexOf(block);\n      // replace the (invalid) block with it's nodes\n      parent.nodes.splice(index, 1, ...block.nodes);\n    }\n  } while (stack.length > 0);\n\n  push({ type: 'eos' });\n  return ast;\n};\n\nmodule.exports = parse;\n","'use strict';\n\nconst stringify = require('./lib/stringify');\nconst compile = require('./lib/compile');\nconst expand = require('./lib/expand');\nconst parse = require('./lib/parse');\n\n/**\n * Expand the given pattern or create a regex-compatible string.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces('{a,b,c}', { compile: true })); //=> ['(a|b|c)']\n * console.log(braces('{a,b,c}')); //=> ['a', 'b', 'c']\n * ```\n * @param {String} `str`\n * @param {Object} `options`\n * @return {String}\n * @api public\n */\n\nconst braces = (input, options = {}) => {\n  let output = [];\n\n  if (Array.isArray(input)) {\n    for (const pattern of input) {\n      const result = braces.create(pattern, options);\n      if (Array.isArray(result)) {\n        output.push(...result);\n      } else {\n        output.push(result);\n      }\n    }\n  } else {\n    output = [].concat(braces.create(input, options));\n  }\n\n  if (options && options.expand === true && options.nodupes === true) {\n    output = [...new Set(output)];\n  }\n  return output;\n};\n\n/**\n * Parse the given `str` with the given `options`.\n *\n * ```js\n * // braces.parse(pattern, [, options]);\n * const ast = braces.parse('a/{b,c}/d');\n * console.log(ast);\n * ```\n * @param {String} pattern Brace pattern to parse\n * @param {Object} options\n * @return {Object} Returns an AST\n * @api public\n */\n\nbraces.parse = (input, options = {}) => parse(input, options);\n\n/**\n * Creates a braces string from an AST, or an AST node.\n *\n * ```js\n * const braces = require('braces');\n * let ast = braces.parse('foo/{a,b}/bar');\n * console.log(stringify(ast.nodes[2])); //=> '{a,b}'\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.stringify = (input, options = {}) => {\n  if (typeof input === 'string') {\n    return stringify(braces.parse(input, options), options);\n  }\n  return stringify(input, options);\n};\n\n/**\n * Compiles a brace pattern into a regex-compatible, optimized string.\n * This method is called by the main [braces](#braces) function by default.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.compile('a/{b,c}/d'));\n * //=> ['a/(b|c)/d']\n * ```\n * @param {String} `input` Brace pattern or AST.\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.compile = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n  return compile(input, options);\n};\n\n/**\n * Expands a brace pattern into an array. This method is called by the\n * main [braces](#braces) function when `options.expand` is true. Before\n * using this method it's recommended that you read the [performance notes](#performance))\n * and advantages of using [.compile](#compile) instead.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.expand('a/{b,c}/d'));\n * //=> ['a/b/d', 'a/c/d'];\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.expand = (input, options = {}) => {\n  if (typeof input === 'string') {\n    input = braces.parse(input, options);\n  }\n\n  let result = expand(input, options);\n\n  // filter out empty strings if specified\n  if (options.noempty === true) {\n    result = result.filter(Boolean);\n  }\n\n  // filter out duplicates if specified\n  if (options.nodupes === true) {\n    result = [...new Set(result)];\n  }\n\n  return result;\n};\n\n/**\n * Processes a brace pattern and returns either an expanded array\n * (if `options.expand` is true), a highly optimized regex-compatible string.\n * This method is called by the main [braces](#braces) function.\n *\n * ```js\n * const braces = require('braces');\n * console.log(braces.create('user-{200..300}/project-{a,b,c}-{1..10}'))\n * //=> 'user-(20[0-9]|2[1-9][0-9]|300)/project-(a|b|c)-([1-9]|10)'\n * ```\n * @param {String} `pattern` Brace pattern\n * @param {Object} `options`\n * @return {Array} Returns an array of expanded values.\n * @api public\n */\n\nbraces.create = (input, options = {}) => {\n  if (input === '' || input.length < 3) {\n    return [input];\n  }\n\n  return options.expand !== true\n    ? braces.compile(input, options)\n    : braces.expand(input, options);\n};\n\n/**\n * Expose \"braces\"\n */\n\nmodule.exports = braces;\n","'use strict';\n\nconst util = require('util');\nconst braces = require('braces');\nconst picomatch = require('picomatch');\nconst utils = require('picomatch/lib/utils');\n\nconst isEmptyString = v => v === '' || v === './';\nconst hasBraces = v => {\n  const index = v.indexOf('{');\n  return index > -1 && v.indexOf('}', index) > -1;\n};\n\n/**\n * Returns an array of strings that match one or more glob patterns.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm(list, patterns[, options]);\n *\n * console.log(mm(['a.js', 'a.txt'], ['*.js']));\n * //=> [ 'a.js' ]\n * ```\n * @param {String|Array<string>} `list` List of strings to match.\n * @param {String|Array<string>} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options)\n * @return {Array} Returns an array of matches\n * @summary false\n * @api public\n */\n\nconst micromatch = (list, patterns, options) => {\n  patterns = [].concat(patterns);\n  list = [].concat(list);\n\n  let omit = new Set();\n  let keep = new Set();\n  let items = new Set();\n  let negatives = 0;\n\n  let onResult = state => {\n    items.add(state.output);\n    if (options && options.onResult) {\n      options.onResult(state);\n    }\n  };\n\n  for (let i = 0; i < patterns.length; i++) {\n    let isMatch = picomatch(String(patterns[i]), { ...options, onResult }, true);\n    let negated = isMatch.state.negated || isMatch.state.negatedExtglob;\n    if (negated) negatives++;\n\n    for (let item of list) {\n      let matched = isMatch(item, true);\n\n      let match = negated ? !matched.isMatch : matched.isMatch;\n      if (!match) continue;\n\n      if (negated) {\n        omit.add(matched.output);\n      } else {\n        omit.delete(matched.output);\n        keep.add(matched.output);\n      }\n    }\n  }\n\n  let result = negatives === patterns.length ? [...items] : [...keep];\n  let matches = result.filter(item => !omit.has(item));\n\n  if (options && matches.length === 0) {\n    if (options.failglob === true) {\n      throw new Error(`No matches found for \"${patterns.join(', ')}\"`);\n    }\n\n    if (options.nonull === true || options.nullglob === true) {\n      return options.unescape ? patterns.map(p => p.replace(/\\\\/g, '')) : patterns;\n    }\n  }\n\n  return matches;\n};\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.match = micromatch;\n\n/**\n * Returns a matcher function from the given glob `pattern` and `options`.\n * The returned function takes a string to match as its only argument and returns\n * true if the string is a match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matcher(pattern[, options]);\n *\n * const isMatch = mm.matcher('*.!(*a)');\n * console.log(isMatch('a.a')); //=> false\n * console.log(isMatch('a.b')); //=> true\n * ```\n * @param {String} `pattern` Glob pattern\n * @param {Object} `options`\n * @return {Function} Returns a matcher function.\n * @api public\n */\n\nmicromatch.matcher = (pattern, options) => picomatch(pattern, options);\n\n/**\n * Returns true if **any** of the given glob `patterns` match the specified `string`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.isMatch(string, patterns[, options]);\n *\n * console.log(mm.isMatch('a.a', ['b.*', '*.a'])); //=> true\n * console.log(mm.isMatch('a.a', 'b.*')); //=> false\n * ```\n * @param {String} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `[options]` See available [options](#options).\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.isMatch = (str, patterns, options) => picomatch(patterns, options)(str);\n\n/**\n * Backwards compatibility\n */\n\nmicromatch.any = micromatch.isMatch;\n\n/**\n * Returns a list of strings that _**do not match any**_ of the given `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.not(list, patterns[, options]);\n *\n * console.log(mm.not(['a.a', 'b.b', 'c.c'], '*.a'));\n * //=> ['b.b', 'c.c']\n * ```\n * @param {Array} `list` Array of strings to match.\n * @param {String|Array} `patterns` One or more glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array} Returns an array of strings that **do not match** the given patterns.\n * @api public\n */\n\nmicromatch.not = (list, patterns, options = {}) => {\n  patterns = [].concat(patterns).map(String);\n  let result = new Set();\n  let items = [];\n\n  let onResult = state => {\n    if (options.onResult) options.onResult(state);\n    items.push(state.output);\n  };\n\n  let matches = new Set(micromatch(list, patterns, { ...options, onResult }));\n\n  for (let item of items) {\n    if (!matches.has(item)) {\n      result.add(item);\n    }\n  }\n  return [...result];\n};\n\n/**\n * Returns true if the given `string` contains the given pattern. Similar\n * to [.isMatch](#isMatch) but the pattern can match any part of the string.\n *\n * ```js\n * var mm = require('micromatch');\n * // mm.contains(string, pattern[, options]);\n *\n * console.log(mm.contains('aa/bb/cc', '*b'));\n * //=> true\n * console.log(mm.contains('aa/bb/cc', '*d'));\n * //=> false\n * ```\n * @param {String} `str` The string to match.\n * @param {String|Array} `patterns` Glob pattern to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any of the patterns matches any part of `str`.\n * @api public\n */\n\nmicromatch.contains = (str, pattern, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  if (Array.isArray(pattern)) {\n    return pattern.some(p => micromatch.contains(str, p, options));\n  }\n\n  if (typeof pattern === 'string') {\n    if (isEmptyString(str) || isEmptyString(pattern)) {\n      return false;\n    }\n\n    if (str.includes(pattern) || (str.startsWith('./') && str.slice(2).includes(pattern))) {\n      return true;\n    }\n  }\n\n  return micromatch.isMatch(str, pattern, { ...options, contains: true });\n};\n\n/**\n * Filter the keys of the given object with the given `glob` pattern\n * and `options`. Does not attempt to match nested keys. If you need this feature,\n * use [glob-object][] instead.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.matchKeys(object, patterns[, options]);\n *\n * const obj = { aa: 'a', ab: 'b', ac: 'c' };\n * console.log(mm.matchKeys(obj, '*b'));\n * //=> { ab: 'b' }\n * ```\n * @param {Object} `object` The object with keys to filter.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Object} Returns an object with only keys that match the given patterns.\n * @api public\n */\n\nmicromatch.matchKeys = (obj, patterns, options) => {\n  if (!utils.isObject(obj)) {\n    throw new TypeError('Expected the first argument to be an object');\n  }\n  let keys = micromatch(Object.keys(obj), patterns, options);\n  let res = {};\n  for (let key of keys) res[key] = obj[key];\n  return res;\n};\n\n/**\n * Returns true if some of the strings in the given `list` match any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.some(list, patterns[, options]);\n *\n * console.log(mm.some(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // true\n * console.log(mm.some(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test. Returns as soon as the first match is found.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any `patterns` matches any of the strings in `list`\n * @api public\n */\n\nmicromatch.some = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (items.some(item => isMatch(item))) {\n      return true;\n    }\n  }\n  return false;\n};\n\n/**\n * Returns true if every string in the given `list` matches\n * any of the given glob `patterns`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.every(list, patterns[, options]);\n *\n * console.log(mm.every('foo.js', ['foo.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js']));\n * // true\n * console.log(mm.every(['foo.js', 'bar.js'], ['*.js', '!foo.js']));\n * // false\n * console.log(mm.every(['foo.js'], ['*.js', '!foo.js']));\n * // false\n * ```\n * @param {String|Array} `list` The string or array of strings to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if all `patterns` matches all of the strings in `list`\n * @api public\n */\n\nmicromatch.every = (list, patterns, options) => {\n  let items = [].concat(list);\n\n  for (let pattern of [].concat(patterns)) {\n    let isMatch = picomatch(String(pattern), options);\n    if (!items.every(item => isMatch(item))) {\n      return false;\n    }\n  }\n  return true;\n};\n\n/**\n * Returns true if **all** of the given `patterns` match\n * the specified string.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.all(string, patterns[, options]);\n *\n * console.log(mm.all('foo.js', ['foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', '!foo.js']));\n * // false\n *\n * console.log(mm.all('foo.js', ['*.js', 'foo.js']));\n * // true\n *\n * console.log(mm.all('foo.js', ['*.js', 'f*', '*o*', '*o.js']));\n * // true\n * ```\n * @param {String|Array} `str` The string to test.\n * @param {String|Array} `patterns` One or more glob patterns to use for matching.\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Boolean} Returns true if any patterns match `str`\n * @api public\n */\n\nmicromatch.all = (str, patterns, options) => {\n  if (typeof str !== 'string') {\n    throw new TypeError(`Expected a string: \"${util.inspect(str)}\"`);\n  }\n\n  return [].concat(patterns).every(p => picomatch(p, options)(str));\n};\n\n/**\n * Returns an array of matches captured by `pattern` in `string, or `null` if the pattern did not match.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.capture(pattern, string[, options]);\n *\n * console.log(mm.capture('test/*.js', 'test/foo.js'));\n * //=> ['foo']\n * console.log(mm.capture('test/*.js', 'foo/bar.css'));\n * //=> null\n * ```\n * @param {String} `glob` Glob pattern to use for matching.\n * @param {String} `input` String to match\n * @param {Object} `options` See available [options](#options) for changing how matches are performed\n * @return {Array|null} Returns an array of captures if the input matches the glob pattern, otherwise `null`.\n * @api public\n */\n\nmicromatch.capture = (glob, input, options) => {\n  let posix = utils.isWindows(options);\n  let regex = picomatch.makeRe(String(glob), { ...options, capture: true });\n  let match = regex.exec(posix ? utils.toPosixSlashes(input) : input);\n\n  if (match) {\n    return match.slice(1).map(v => v === void 0 ? '' : v);\n  }\n};\n\n/**\n * Create a regular expression from the given glob `pattern`.\n *\n * ```js\n * const mm = require('micromatch');\n * // mm.makeRe(pattern[, options]);\n *\n * console.log(mm.makeRe('*.js'));\n * //=> /^(?:(\\.[\\\\\\/])?(?!\\.)(?=.)[^\\/]*?\\.js)$/\n * ```\n * @param {String} `pattern` A glob pattern to convert to regex.\n * @param {Object} `options`\n * @return {RegExp} Returns a regex created from the given pattern.\n * @api public\n */\n\nmicromatch.makeRe = (...args) => picomatch.makeRe(...args);\n\n/**\n * Scan a glob pattern to separate the pattern into segments. Used\n * by the [split](#split) method.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.scan(pattern[, options]);\n * ```\n * @param {String} `pattern`\n * @param {Object} `options`\n * @return {Object} Returns an object with\n * @api public\n */\n\nmicromatch.scan = (...args) => picomatch.scan(...args);\n\n/**\n * Parse a glob pattern to create the source string for a regular\n * expression.\n *\n * ```js\n * const mm = require('micromatch');\n * const state = mm.parse(pattern[, options]);\n * ```\n * @param {String} `glob`\n * @param {Object} `options`\n * @return {Object} Returns an object with useful properties and output to be used as regex source string.\n * @api public\n */\n\nmicromatch.parse = (patterns, options) => {\n  let res = [];\n  for (let pattern of [].concat(patterns || [])) {\n    for (let str of braces(String(pattern), options)) {\n      res.push(picomatch.parse(str, options));\n    }\n  }\n  return res;\n};\n\n/**\n * Process the given brace `pattern`.\n *\n * ```js\n * const { braces } = require('micromatch');\n * console.log(braces('foo/{a,b,c}/bar'));\n * //=> [ 'foo/(a|b|c)/bar' ]\n *\n * console.log(braces('foo/{a,b,c}/bar', { expand: true }));\n * //=> [ 'foo/a/bar', 'foo/b/bar', 'foo/c/bar' ]\n * ```\n * @param {String} `pattern` String with brace pattern to process.\n * @param {Object} `options` Any [options](#options) to change how expansion is performed. See the [braces][] library for all available options.\n * @return {Array}\n * @api public\n */\n\nmicromatch.braces = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  if ((options && options.nobrace === true) || !hasBraces(pattern)) {\n    return [pattern];\n  }\n  return braces(pattern, options);\n};\n\n/**\n * Expand braces\n */\n\nmicromatch.braceExpand = (pattern, options) => {\n  if (typeof pattern !== 'string') throw new TypeError('Expected a string');\n  return micromatch.braces(pattern, { ...options, expand: true });\n};\n\n/**\n * Expose micromatch\n */\n\n// exposed for tests\nmicromatch.hasBraces = hasBraces;\nmodule.exports = micromatch;\n","'use strict';\nmodule.exports = path => {\n\tconst isExtendedLengthPath = /^\\\\\\\\\\?\\\\/.test(path);\n\tconst hasNonAscii = /[^\\u0000-\\u0080]+/.test(path); // eslint-disable-line no-control-regex\n\n\tif (isExtendedLengthPath || hasNonAscii) {\n\t\treturn path;\n\t}\n\n\treturn path.replace(/\\\\/g, '/');\n};\n","'use strict';\n\nconst matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g;\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn string.replace(matchOperatorsRegex, '\\\\$&');\n};\n","/**\n * Copyright (c) Rui Figueira.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport default {\n  builtinModules: [],\n};\n","'use strict';\n\nconst escapeStringRegexp = require('escape-string-regexp');\n\nconst cwd = typeof process === 'object' && process && typeof process.cwd === 'function'\n  ? process.cwd()\n  : '.'\n\nconst natives = [].concat(\n  require('module').builtinModules,\n  'bootstrap_node',\n  'node',\n).map(n => new RegExp(`(?:\\\\((?:node:)?${n}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${n}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));\n\nnatives.push(\n  /\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,\n  /\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,\n  /\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/\n);\n\nclass StackUtils {\n  constructor (opts) {\n    opts = {\n      ignoredPackages: [],\n      ...opts\n    };\n\n    if ('internals' in opts === false) {\n      opts.internals = StackUtils.nodeInternals();\n    }\n\n    if ('cwd' in opts === false) {\n      opts.cwd = cwd\n    }\n\n    this._cwd = opts.cwd.replace(/\\\\/g, '/');\n    this._internals = [].concat(\n      opts.internals,\n      ignoredPackagesRegExp(opts.ignoredPackages)\n    );\n\n    this._wrapCallSite = opts.wrapCallSite || false;\n  }\n\n  static nodeInternals () {\n    return [...natives];\n  }\n\n  clean (stack, indent = 0) {\n    indent = ' '.repeat(indent);\n\n    if (!Array.isArray(stack)) {\n      stack = stack.split('\\n');\n    }\n\n    if (!(/^\\s*at /.test(stack[0])) && (/^\\s*at /.test(stack[1]))) {\n      stack = stack.slice(1);\n    }\n\n    let outdent = false;\n    let lastNonAtLine = null;\n    const result = [];\n\n    stack.forEach(st => {\n      st = st.replace(/\\\\/g, '/');\n\n      if (this._internals.some(internal => internal.test(st))) {\n        return;\n      }\n\n      const isAtLine = /^\\s*at /.test(st);\n\n      if (outdent) {\n        st = st.trimEnd().replace(/^(\\s+)at /, '$1');\n      } else {\n        st = st.trim();\n        if (isAtLine) {\n          st = st.slice(3);\n        }\n      }\n\n      st = st.replace(`${this._cwd}/`, '');\n\n      if (st) {\n        if (isAtLine) {\n          if (lastNonAtLine) {\n            result.push(lastNonAtLine);\n            lastNonAtLine = null;\n          }\n\n          result.push(st);\n        } else {\n          outdent = true;\n          lastNonAtLine = st;\n        }\n      }\n    });\n\n    return result.map(line => `${indent}${line}\\n`).join('');\n  }\n\n  captureString (limit, fn = this.captureString) {\n    if (typeof limit === 'function') {\n      fn = limit;\n      limit = Infinity;\n    }\n\n    const {stackTraceLimit} = Error;\n    if (limit) {\n      Error.stackTraceLimit = limit;\n    }\n\n    const obj = {};\n\n    Error.captureStackTrace(obj, fn);\n    const {stack} = obj;\n    Error.stackTraceLimit = stackTraceLimit;\n\n    return this.clean(stack);\n  }\n\n  capture (limit, fn = this.capture) {\n    if (typeof limit === 'function') {\n      fn = limit;\n      limit = Infinity;\n    }\n\n    const {prepareStackTrace, stackTraceLimit} = Error;\n    Error.prepareStackTrace = (obj, site) => {\n      if (this._wrapCallSite) {\n        return site.map(this._wrapCallSite);\n      }\n\n      return site;\n    };\n\n    if (limit) {\n      Error.stackTraceLimit = limit;\n    }\n\n    const obj = {};\n    Error.captureStackTrace(obj, fn);\n    const { stack } = obj;\n    Object.assign(Error, {prepareStackTrace, stackTraceLimit});\n\n    return stack;\n  }\n\n  at (fn = this.at) {\n    const [site] = this.capture(1, fn);\n\n    if (!site) {\n      return {};\n    }\n\n    const res = {\n      line: site.getLineNumber(),\n      column: site.getColumnNumber()\n    };\n\n    setFile(res, site.getFileName(), this._cwd);\n\n    if (site.isConstructor()) {\n      Object.defineProperty(res, 'constructor', {\n        value: true,\n        configurable: true,\n      });\n    }\n\n    if (site.isEval()) {\n      res.evalOrigin = site.getEvalOrigin();\n    }\n\n    // Node v10 stopped with the isNative() on callsites, apparently\n    /* istanbul ignore next */\n    if (site.isNative()) {\n      res.native = true;\n    }\n\n    let typename;\n    try {\n      typename = site.getTypeName();\n    } catch (_) {\n    }\n\n    if (typename && typename !== 'Object' && typename !== '[object Object]') {\n      res.type = typename;\n    }\n\n    const fname = site.getFunctionName();\n    if (fname) {\n      res.function = fname;\n    }\n\n    const meth = site.getMethodName();\n    if (meth && fname !== meth) {\n      res.method = meth;\n    }\n\n    return res;\n  }\n\n  parseLine (line) {\n    const match = line && line.match(re);\n    if (!match) {\n      return null;\n    }\n\n    const ctor = match[1] === 'new';\n    let fname = match[2];\n    const evalOrigin = match[3];\n    const evalFile = match[4];\n    const evalLine = Number(match[5]);\n    const evalCol = Number(match[6]);\n    let file = match[7];\n    const lnum = match[8];\n    const col = match[9];\n    const native = match[10] === 'native';\n    const closeParen = match[11] === ')';\n    let method;\n\n    const res = {};\n\n    if (lnum) {\n      res.line = Number(lnum);\n    }\n\n    if (col) {\n      res.column = Number(col);\n    }\n\n    if (closeParen && file) {\n      // make sure parens are balanced\n      // if we have a file like \"asdf) [as foo] (xyz.js\", then odds are\n      // that the fname should be += \" (asdf) [as foo]\" and the file\n      // should be just \"xyz.js\"\n      // walk backwards from the end to find the last unbalanced (\n      let closes = 0;\n      for (let i = file.length - 1; i > 0; i--) {\n        if (file.charAt(i) === ')') {\n          closes++;\n        } else if (file.charAt(i) === '(' && file.charAt(i - 1) === ' ') {\n          closes--;\n          if (closes === -1 && file.charAt(i - 1) === ' ') {\n            const before = file.slice(0, i - 1);\n            const after = file.slice(i + 1);\n            file = after;\n            fname += ` (${before}`;\n            break;\n          }\n        }\n      }\n    }\n\n    if (fname) {\n      const methodMatch = fname.match(methodRe);\n      if (methodMatch) {\n        fname = methodMatch[1];\n        method = methodMatch[2];\n      }\n    }\n\n    setFile(res, file, this._cwd);\n\n    if (ctor) {\n      Object.defineProperty(res, 'constructor', {\n        value: true,\n        configurable: true,\n      });\n    }\n\n    if (evalOrigin) {\n      res.evalOrigin = evalOrigin;\n      res.evalLine = evalLine;\n      res.evalColumn = evalCol;\n      res.evalFile = evalFile && evalFile.replace(/\\\\/g, '/');\n    }\n\n    if (native) {\n      res.native = true;\n    }\n\n    if (fname) {\n      res.function = fname;\n    }\n\n    if (method && fname !== method) {\n      res.method = method;\n    }\n\n    return res;\n  }\n}\n\nfunction setFile (result, filename, cwd) {\n  if (filename) {\n    filename = filename.replace(/\\\\/g, '/');\n    if (filename.startsWith(`${cwd}/`)) {\n      filename = filename.slice(cwd.length + 1);\n    }\n\n    result.file = filename;\n  }\n}\n\nfunction ignoredPackagesRegExp(ignoredPackages) {\n  if (ignoredPackages.length === 0) {\n    return [];\n  }\n\n  const packages = ignoredPackages.map(mod => escapeStringRegexp(mod));\n\n  return new RegExp(`[\\/\\\\\\\\]node_modules[\\/\\\\\\\\](?:${packages.join('|')})[\\/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)\n}\n\nconst re = new RegExp(\n  '^' +\n    // Sometimes we strip out the '    at' because it's noisy\n  '(?:\\\\s*at )?' +\n    // $1 = ctor if 'new'\n  '(?:(new) )?' +\n    // $2 = function name (can be literally anything)\n    // May contain method at the end as [as xyz]\n  '(?:(.*?) \\\\()?' +\n    // (eval at <anonymous> (file.js:1:1),\n    // $3 = eval origin\n    // $4:$5:$6 are eval file/line/col, but not normally reported\n  '(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?' +\n    // file:line:col\n    // $7:$8:$9\n    // $10 = 'native' if native\n  '(?:(.+?):(\\\\d+):(\\\\d+)|(native))' +\n    // maybe close the paren, then end\n    // if $11 is ), then we only allow balanced parens in the filename\n    // any imbalance is placed on the fname.  This is a heuristic, and\n    // bound to be incorrect in some edge cases.  The bet is that\n    // having weird characters in method names is more common than\n    // having weird characters in filenames, which seems reasonable.\n  '(\\\\)?)$'\n);\n\nconst methodRe = /^(.*?) \\[as (.*?)\\]$/;\n\nmodule.exports = StackUtils;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.separateMessageFromStack =\n  exports.indentAllLines =\n  exports.getTopFrame =\n  exports.getStackTraceLines =\n  exports.formatStackTrace =\n  exports.formatResultsErrors =\n  exports.formatPath =\n  exports.formatExecError =\n    void 0;\nvar path = _interopRequireWildcard(require('path'));\nvar _url = require('url');\nvar _util = require('util');\nvar _codeFrame = require('@babel/code-frame');\nvar _chalk = _interopRequireDefault(require('chalk'));\nvar fs = _interopRequireWildcard(require('graceful-fs'));\nvar _micromatch = _interopRequireDefault(require('micromatch'));\nvar _slash = _interopRequireDefault(require('slash'));\nvar _stackUtils = _interopRequireDefault(require('stack-utils'));\nvar _prettyFormat = require('pretty-format');\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\nvar jestReadFile =\n  globalThis[Symbol.for('jest-native-read-file')] || fs.readFileSync;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// stack utils tries to create pretty stack by making paths relative.\nconst stackUtils = new _stackUtils.default({\n  cwd: 'something which does not exist'\n});\nlet nodeInternals = [];\ntry {\n  nodeInternals = _stackUtils.default.nodeInternals();\n} catch {\n  // `StackUtils.nodeInternals()` fails in browsers. We don't need to remove\n  // node internals in the browser though, so no issue.\n}\nconst PATH_NODE_MODULES = `${path.sep}node_modules${path.sep}`;\nconst PATH_JEST_PACKAGES = `${path.sep}jest${path.sep}packages${path.sep}`;\n\n// filter for noisy stack trace lines\nconst JASMINE_IGNORE =\n  /^\\s+at(?:(?:.jasmine-)|\\s+jasmine\\.buildExpectationResult)/;\nconst JEST_INTERNALS_IGNORE =\n  /^\\s+at.*?jest(-.*?)?(\\/|\\\\)(build|node_modules|packages)(\\/|\\\\)/;\nconst ANONYMOUS_FN_IGNORE = /^\\s+at <anonymous>.*$/;\nconst ANONYMOUS_PROMISE_IGNORE = /^\\s+at (new )?Promise \\(<anonymous>\\).*$/;\nconst ANONYMOUS_GENERATOR_IGNORE = /^\\s+at Generator.next \\(<anonymous>\\).*$/;\nconst NATIVE_NEXT_IGNORE = /^\\s+at next \\(native\\).*$/;\nconst TITLE_INDENT = '  ';\nconst MESSAGE_INDENT = '    ';\nconst STACK_INDENT = '      ';\nconst ANCESTRY_SEPARATOR = ' \\u203A ';\nconst TITLE_BULLET = _chalk.default.bold('\\u25cf ');\nconst STACK_TRACE_COLOR = _chalk.default.dim;\nconst STACK_PATH_REGEXP = /\\s*at.*\\(?(:\\d*:\\d*|native)\\)?/;\nconst EXEC_ERROR_MESSAGE = 'Test suite failed to run';\nconst NOT_EMPTY_LINE_REGEXP = /^(?!$)/gm;\nconst indentAllLines = lines =>\n  lines.replace(NOT_EMPTY_LINE_REGEXP, MESSAGE_INDENT);\nexports.indentAllLines = indentAllLines;\nconst trim = string => (string || '').trim();\n\n// Some errors contain not only line numbers in stack traces\n// e.g. SyntaxErrors can contain snippets of code, and we don't\n// want to trim those, because they may have pointers to the column/character\n// which will get misaligned.\nconst trimPaths = string =>\n  string.match(STACK_PATH_REGEXP) ? trim(string) : string;\nconst getRenderedCallsite = (fileContent, line, column) => {\n  let renderedCallsite = (0, _codeFrame.codeFrameColumns)(\n    fileContent,\n    {\n      start: {\n        column,\n        line\n      }\n    },\n    {\n      highlightCode: true\n    }\n  );\n  renderedCallsite = indentAllLines(renderedCallsite);\n  renderedCallsite = `\\n${renderedCallsite}\\n`;\n  return renderedCallsite;\n};\nconst blankStringRegexp = /^\\s*$/;\nfunction checkForCommonEnvironmentErrors(error) {\n  if (\n    error.includes('ReferenceError: document is not defined') ||\n    error.includes('ReferenceError: window is not defined') ||\n    error.includes('ReferenceError: navigator is not defined')\n  ) {\n    return warnAboutWrongTestEnvironment(error, 'jsdom');\n  } else if (error.includes('.unref is not a function')) {\n    return warnAboutWrongTestEnvironment(error, 'node');\n  }\n  return error;\n}\nfunction warnAboutWrongTestEnvironment(error, env) {\n  return (\n    _chalk.default.bold.red(\n      `The error below may be caused by using the wrong test environment, see ${_chalk.default.dim.underline(\n        'https://jestjs.io/docs/configuration#testenvironment-string'\n      )}.\\nConsider using the \"${env}\" test environment.\\n\\n`\n    ) + error\n  );\n}\n\n// ExecError is an error thrown outside of the test suite (not inside an `it` or\n// `before/after each` hooks). If it's thrown, none of the tests in the file\n// are executed.\nconst formatExecError = (\n  error,\n  config,\n  options,\n  testPath,\n  reuseMessage,\n  noTitle\n) => {\n  if (!error || typeof error === 'number') {\n    error = new Error(`Expected an Error, but \"${String(error)}\" was thrown`);\n    error.stack = '';\n  }\n  let message, stack;\n  let cause = '';\n  const subErrors = [];\n  if (typeof error === 'string' || !error) {\n    error || (error = 'EMPTY ERROR');\n    message = '';\n    stack = error;\n  } else {\n    message = error.message;\n    stack =\n      typeof error.stack === 'string'\n        ? error.stack\n        : `thrown: ${(0, _prettyFormat.format)(error, {\n            maxDepth: 3\n          })}`;\n    if ('cause' in error) {\n      const prefix = '\\n\\nCause:\\n';\n      if (typeof error.cause === 'string' || typeof error.cause === 'number') {\n        cause += `${prefix}${error.cause}`;\n      } else if (\n        _util.types.isNativeError(error.cause) ||\n        error.cause instanceof Error\n      ) {\n        /* `isNativeError` is used, because the error might come from another realm.\n         `instanceof Error` is used because `isNativeError` does return `false` for some\n         things that are `instanceof Error` like the errors provided in\n         [verror](https://www.npmjs.com/package/verror) or [axios](https://axios-http.com).\n        */\n        const formatted = formatExecError(\n          error.cause,\n          config,\n          options,\n          testPath,\n          reuseMessage,\n          true\n        );\n        cause += `${prefix}${formatted}`;\n      }\n    }\n    if ('errors' in error && Array.isArray(error.errors)) {\n      for (const subError of error.errors) {\n        subErrors.push(\n          formatExecError(\n            subError,\n            config,\n            options,\n            testPath,\n            reuseMessage,\n            true\n          )\n        );\n      }\n    }\n  }\n  if (cause !== '') {\n    cause = indentAllLines(cause);\n  }\n  const separated = separateMessageFromStack(stack || '');\n  stack = separated.stack;\n  if (separated.message.includes(trim(message))) {\n    // Often stack trace already contains the duplicate of the message\n    message = separated.message;\n  }\n  message = checkForCommonEnvironmentErrors(message);\n  message = indentAllLines(message);\n  stack =\n    stack && !options.noStackTrace\n      ? `\\n${formatStackTrace(stack, config, options, testPath)}`\n      : '';\n  if (\n    typeof stack !== 'string' ||\n    (blankStringRegexp.test(message) && blankStringRegexp.test(stack))\n  ) {\n    // this can happen if an empty object is thrown.\n    message = `thrown: ${(0, _prettyFormat.format)(error, {\n      maxDepth: 3\n    })}`;\n  }\n  let messageToUse;\n  if (reuseMessage || noTitle) {\n    messageToUse = ` ${message.trim()}`;\n  } else {\n    messageToUse = `${EXEC_ERROR_MESSAGE}\\n\\n${message}`;\n  }\n  const title = noTitle ? '' : `${TITLE_INDENT + TITLE_BULLET}`;\n  const subErrorStr =\n    subErrors.length > 0\n      ? indentAllLines(\n          `\\n\\nErrors contained in AggregateError:\\n${subErrors.join('\\n')}`\n        )\n      : '';\n  return `${title + messageToUse + stack + cause + subErrorStr}\\n`;\n};\nexports.formatExecError = formatExecError;\nconst removeInternalStackEntries = (lines, options) => {\n  let pathCounter = 0;\n  return lines.filter(line => {\n    if (ANONYMOUS_FN_IGNORE.test(line)) {\n      return false;\n    }\n    if (ANONYMOUS_PROMISE_IGNORE.test(line)) {\n      return false;\n    }\n    if (ANONYMOUS_GENERATOR_IGNORE.test(line)) {\n      return false;\n    }\n    if (NATIVE_NEXT_IGNORE.test(line)) {\n      return false;\n    }\n    if (nodeInternals.some(internal => internal.test(line))) {\n      return false;\n    }\n    if (!STACK_PATH_REGEXP.test(line)) {\n      return true;\n    }\n    if (JASMINE_IGNORE.test(line)) {\n      return false;\n    }\n    if (++pathCounter === 1) {\n      return true; // always keep the first line even if it's from Jest\n    }\n\n    if (options.noStackTrace) {\n      return false;\n    }\n    if (JEST_INTERNALS_IGNORE.test(line)) {\n      return false;\n    }\n    return true;\n  });\n};\nconst formatPath = (line, config, relativeTestPath = null) => {\n  // Extract the file path from the trace line.\n  const match = line.match(/(^\\s*at .*?\\(?)([^()]+)(:[0-9]+:[0-9]+\\)?.*$)/);\n  if (!match) {\n    return line;\n  }\n  let filePath = (0, _slash.default)(path.relative(config.rootDir, match[2]));\n  // highlight paths from the current test file\n  if (\n    (config.testMatch &&\n      config.testMatch.length &&\n      (0, _micromatch.default)([filePath], config.testMatch).length > 0) ||\n    filePath === relativeTestPath\n  ) {\n    filePath = _chalk.default.reset.cyan(filePath);\n  }\n  return STACK_TRACE_COLOR(match[1]) + filePath + STACK_TRACE_COLOR(match[3]);\n};\nexports.formatPath = formatPath;\nconst getStackTraceLines = (\n  stack,\n  options = {\n    noCodeFrame: false,\n    noStackTrace: false\n  }\n) => removeInternalStackEntries(stack.split(/\\n/), options);\nexports.getStackTraceLines = getStackTraceLines;\nconst getTopFrame = lines => {\n  for (const line of lines) {\n    if (line.includes(PATH_NODE_MODULES) || line.includes(PATH_JEST_PACKAGES)) {\n      continue;\n    }\n    const parsedFrame = stackUtils.parseLine(line.trim());\n    if (parsedFrame && parsedFrame.file) {\n      if (parsedFrame.file.startsWith('file://')) {\n        parsedFrame.file = (0, _slash.default)(\n          (0, _url.fileURLToPath)(parsedFrame.file)\n        );\n      }\n      return parsedFrame;\n    }\n  }\n  return null;\n};\nexports.getTopFrame = getTopFrame;\nconst formatStackTrace = (stack, config, options, testPath) => {\n  const lines = getStackTraceLines(stack, options);\n  let renderedCallsite = '';\n  const relativeTestPath = testPath\n    ? (0, _slash.default)(path.relative(config.rootDir, testPath))\n    : null;\n  if (!options.noStackTrace && !options.noCodeFrame) {\n    const topFrame = getTopFrame(lines);\n    if (topFrame) {\n      const {column, file: filename, line} = topFrame;\n      if (line && filename && path.isAbsolute(filename)) {\n        let fileContent;\n        try {\n          // TODO: check & read HasteFS instead of reading the filesystem:\n          // see: https://github.com/jestjs/jest/pull/5405#discussion_r164281696\n          fileContent = jestReadFile(filename, 'utf8');\n          renderedCallsite = getRenderedCallsite(fileContent, line, column);\n        } catch {\n          // the file does not exist or is inaccessible, we ignore\n        }\n      }\n    }\n  }\n  const stacktrace = lines\n    .filter(Boolean)\n    .map(\n      line =>\n        STACK_INDENT + formatPath(trimPaths(line), config, relativeTestPath)\n    )\n    .join('\\n');\n  return renderedCallsite\n    ? `${renderedCallsite}\\n${stacktrace}`\n    : `\\n${stacktrace}`;\n};\nexports.formatStackTrace = formatStackTrace;\nfunction isErrorOrStackWithCause(errorOrStack) {\n  return (\n    typeof errorOrStack !== 'string' &&\n    'cause' in errorOrStack &&\n    (typeof errorOrStack.cause === 'string' ||\n      _util.types.isNativeError(errorOrStack.cause) ||\n      errorOrStack.cause instanceof Error)\n  );\n}\nfunction formatErrorStack(errorOrStack, config, options, testPath) {\n  // The stack of new Error('message') contains both the message and the stack,\n  // thus we need to sanitize and clean it for proper display using separateMessageFromStack.\n  const sourceStack =\n    typeof errorOrStack === 'string' ? errorOrStack : errorOrStack.stack || '';\n  let {message, stack} = separateMessageFromStack(sourceStack);\n  stack = options.noStackTrace\n    ? ''\n    : `${STACK_TRACE_COLOR(\n        formatStackTrace(stack, config, options, testPath)\n      )}\\n`;\n  message = checkForCommonEnvironmentErrors(message);\n  message = indentAllLines(message);\n  let cause = '';\n  if (isErrorOrStackWithCause(errorOrStack)) {\n    const nestedCause = formatErrorStack(\n      errorOrStack.cause,\n      config,\n      options,\n      testPath\n    );\n    cause = `\\n${MESSAGE_INDENT}Cause:\\n${nestedCause}`;\n  }\n  return `${message}\\n${stack}${cause}`;\n}\nfunction failureDetailsToErrorOrStack(failureDetails, content) {\n  if (!failureDetails) {\n    return content;\n  }\n  if (\n    _util.types.isNativeError(failureDetails) ||\n    failureDetails instanceof Error\n  ) {\n    return failureDetails; // receiving raw errors for jest-circus\n  }\n\n  if (\n    typeof failureDetails === 'object' &&\n    'error' in failureDetails &&\n    (_util.types.isNativeError(failureDetails.error) ||\n      failureDetails.error instanceof Error)\n  ) {\n    return failureDetails.error; // receiving instances of FailedAssertion for jest-jasmine\n  }\n\n  return content;\n}\nconst formatResultsErrors = (testResults, config, options, testPath) => {\n  const failedResults = testResults.reduce((errors, result) => {\n    result.failureMessages.forEach((item, index) => {\n      errors.push({\n        content: item,\n        failureDetails: result.failureDetails[index],\n        result\n      });\n    });\n    return errors;\n  }, []);\n  if (!failedResults.length) {\n    return null;\n  }\n  return failedResults\n    .map(({result, content, failureDetails}) => {\n      const rootErrorOrStack = failureDetailsToErrorOrStack(\n        failureDetails,\n        content\n      );\n      const title = `${_chalk.default.bold.red(\n        TITLE_INDENT +\n          TITLE_BULLET +\n          result.ancestorTitles.join(ANCESTRY_SEPARATOR) +\n          (result.ancestorTitles.length ? ANCESTRY_SEPARATOR : '') +\n          result.title\n      )}\\n`;\n      return `${title}\\n${formatErrorStack(\n        rootErrorOrStack,\n        config,\n        options,\n        testPath\n      )}`;\n    })\n    .join('\\n');\n};\nexports.formatResultsErrors = formatResultsErrors;\nconst errorRegexp = /^Error:?\\s*$/;\nconst removeBlankErrorLine = str =>\n  str\n    .split('\\n')\n    // Lines saying just `Error:` are useless\n    .filter(line => !errorRegexp.test(line))\n    .join('\\n')\n    .trimRight();\n\n// jasmine and worker farm sometimes don't give us access to the actual\n// Error object, so we have to regexp out the message from the stack string\n// to format it.\nconst separateMessageFromStack = content => {\n  if (!content) {\n    return {\n      message: '',\n      stack: ''\n    };\n  }\n\n  // All lines up to what looks like a stack -- or if nothing looks like a stack\n  // (maybe it's a code frame instead), just the first non-empty line.\n  // If the error is a plain \"Error:\" instead of a SyntaxError or TypeError we\n  // remove the prefix from the message because it is generally not useful.\n  const messageMatch = content.match(\n    /^(?:Error: )?([\\s\\S]*?(?=\\n\\s*at\\s.*:\\d*:\\d*)|\\s*.*)([\\s\\S]*)$/\n  );\n  if (!messageMatch) {\n    // For typescript\n    throw new Error('If you hit this error, the regex above is buggy.');\n  }\n  const message = removeBlankErrorLine(messageMatch[1]);\n  const stack = removeBlankErrorLine(messageMatch[2]);\n  return {\n    message,\n    stack\n  };\n};\nexports.separateMessageFromStack = separateMessageFromStack;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { isError } from '@jest/expect-utils';\nimport {\n  EXPECTED_COLOR,\n\n  RECEIVED_COLOR,\n  matcherErrorMessage,\n  matcherHint,\n  printDiffOrStringify,\n  printExpected,\n  printReceived,\n  printWithType\n} from 'jest-matcher-utils';\nimport { formatStackTrace, separateMessageFromStack } from 'jest-message-util';\n\nimport {\n  printExpectedConstructorName,\n  printExpectedConstructorNameNot,\n  printReceivedConstructorName,\n  printReceivedConstructorNameNot,\n  printReceivedStringContainExpectedResult,\n  printReceivedStringContainExpectedSubstring,\n} from './print';\n\nimport type {\n  ExpectationResult,\n  MatcherFunction,\n  MatchersObject,\n  SyncExpectationResult,\n} from './types';\nimport type { MatcherHintOptions } from 'jest-matcher-utils';\n\n/* eslint-disable eqeqeq */\n\nconst DID_NOT_THROW = 'Received function did not throw';\n\ntype Thrown =\n  | {\n    hasMessage: true;\n    isError: true;\n    message: string;\n    value: Error;\n  }\n  | {\n    hasMessage: boolean;\n    isError: false;\n    message: string;\n    value: any;\n  };\n\nconst getThrown = (e: any): Thrown => {\n  const hasMessage =\n    e !== null && e !== undefined && typeof e.message === 'string';\n\n  if (hasMessage && typeof e.name === 'string' && typeof e.stack === 'string') {\n    return {\n      hasMessage,\n      isError: true,\n      message: e.message,\n      value: e,\n    };\n  }\n\n  return {\n    hasMessage,\n    isError: false,\n    message: hasMessage ? e.message : String(e),\n    value: e,\n  };\n};\n\nexport const createMatcher = (\n  matcherName: string,\n  fromPromise?: boolean,\n): MatcherFunction<[any]> =>\n  function(received, expected): ExpectationResult {\n    const options = {\n      isNot: this.isNot,\n      promise: this.promise,\n    };\n\n    let thrown = null;\n\n    if (fromPromise && isError(received)) {\n      thrown = getThrown(received);\n    } else {\n      if (typeof received !== 'function') {\n        if (!fromPromise) {\n          const placeholder = expected === undefined ? '' : 'expected';\n          throw new Error(\n              matcherErrorMessage(\n                  matcherHint(matcherName, undefined, placeholder, options),\n                  `${RECEIVED_COLOR('received')} value must be a function`,\n                  printWithType('Received', received, printReceived),\n              ),\n          );\n        }\n      } else {\n        try {\n          received();\n        } catch (e) {\n          thrown = getThrown(e);\n        }\n      }\n    }\n\n    if (expected === undefined) {\n      return toThrow(matcherName, options, thrown);\n    } else if (typeof expected === 'function') {\n      return toThrowExpectedClass(matcherName, options, thrown, expected);\n    } else if (typeof expected === 'string') {\n      return toThrowExpectedString(matcherName, options, thrown, expected);\n    } else if (expected !== null && typeof expected.test === 'function') {\n      return toThrowExpectedRegExp(matcherName, options, thrown, expected);\n    } else if (\n      expected !== null &&\n      typeof expected.asymmetricMatch === 'function'\n    ) {\n      return toThrowExpectedAsymmetric(matcherName, options, thrown, expected);\n    } else if (expected !== null && typeof expected === 'object') {\n      return toThrowExpectedObject(matcherName, options, thrown, expected);\n    } else {\n      throw new Error(\n          matcherErrorMessage(\n              matcherHint(matcherName, undefined, undefined, options),\n              `${EXPECTED_COLOR(\n                  'expected',\n              )} value must be a string or regular expression or class or error`,\n              printWithType('Expected', expected, printExpected),\n          ),\n      );\n    }\n  };\n\nconst matchers: MatchersObject = {\n  toThrow: createMatcher('toThrow'),\n  toThrowError: createMatcher('toThrowError'),\n};\n\nconst toThrowExpectedRegExp = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: RegExp,\n): SyncExpectationResult => {\n  const pass = thrown !== null && expected.test(thrown.message);\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected pattern: not ', expected) +\n      (thrown !== null && thrown.hasMessage\n        ? formatReceived(\n            'Received message:     ',\n            thrown,\n            'message',\n            expected,\n        ) + formatStack(thrown)\n        : formatReceived('Received value:       ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected pattern: ', expected) +\n      (thrown === null\n        ? `\\n${DID_NOT_THROW}`\n        : thrown.hasMessage\n          ? formatReceived('Received message: ', thrown, 'message') +\n          formatStack(thrown)\n          : formatReceived('Received value:   ', thrown, 'value'));\n\n  return { message, pass };\n};\n\ntype AsymmetricMatcher = {\n  asymmetricMatch: (received: unknown) => boolean;\n};\n\nconst toThrowExpectedAsymmetric = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: AsymmetricMatcher,\n): SyncExpectationResult => {\n  const pass = thrown !== null && expected.asymmetricMatch(thrown.value);\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected asymmetric matcher: not ', expected) +\n      '\\n' +\n      (thrown !== null && thrown.hasMessage\n        ? formatReceived('Received name:    ', thrown, 'name') +\n        formatReceived('Received message: ', thrown, 'message') +\n        formatStack(thrown)\n        : formatReceived('Thrown value: ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected asymmetric matcher: ', expected) +\n      '\\n' +\n      (thrown === null\n        ? DID_NOT_THROW\n        : thrown.hasMessage\n          ? formatReceived('Received name:    ', thrown, 'name') +\n          formatReceived('Received message: ', thrown, 'message') +\n          formatStack(thrown)\n          : formatReceived('Thrown value: ', thrown, 'value'));\n\n  return { message, pass };\n};\n\nconst toThrowExpectedObject = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: Error,\n): SyncExpectationResult => {\n  const expectedMessageAndCause = createMessageAndCause(expected);\n  const thrownMessageAndCause =\n    thrown !== null ? createMessageAndCause(thrown.value) : null;\n  const pass =\n    thrown !== null &&\n    thrown.message === expected.message &&\n    thrownMessageAndCause === expectedMessageAndCause;\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected(\n          `Expected ${messageAndCause(expected)}: not `,\n          expectedMessageAndCause,\n      ) +\n      (thrown !== null && thrown.hasMessage\n        ? formatStack(thrown)\n        : formatReceived('Received value:       ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      (thrown === null\n        ?\n        formatExpected(\n            `Expected ${messageAndCause(expected)}: `,\n            expectedMessageAndCause,\n        ) +\n        '\\n' +\n        DID_NOT_THROW\n        : thrown.hasMessage\n          ?\n          printDiffOrStringify(\n              expectedMessageAndCause,\n              thrownMessageAndCause,\n              `Expected ${messageAndCause(expected)}`,\n              `Received ${messageAndCause(thrown.value)}`,\n              true,\n          ) +\n          '\\n' +\n          formatStack(thrown)\n          : formatExpected(\n              `Expected ${messageAndCause(expected)}: `,\n              expectedMessageAndCause,\n          ) + formatReceived('Received value:   ', thrown, 'value'));\n\n  return { message, pass };\n};\n\nconst toThrowExpectedClass = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: Function,\n): SyncExpectationResult => {\n  const pass = thrown !== null && thrown.value instanceof expected;\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      printExpectedConstructorNameNot('Expected constructor', expected) +\n      (thrown !== null &&\n        thrown.value != null &&\n        typeof thrown.value.constructor === 'function' &&\n        thrown.value.constructor !== expected\n        ? printReceivedConstructorNameNot(\n            'Received constructor',\n            thrown.value.constructor,\n            expected,\n        )\n        : '') +\n      '\\n' +\n      (thrown !== null && thrown.hasMessage\n        ? formatReceived('Received message: ', thrown, 'message') +\n        formatStack(thrown)\n        : formatReceived('Received value: ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      printExpectedConstructorName('Expected constructor', expected) +\n      (thrown === null\n        ? `\\n${DID_NOT_THROW}`\n        : `${thrown.value != null &&\n          typeof thrown.value.constructor === 'function'\n          ? printReceivedConstructorName(\n              'Received constructor',\n              thrown.value.constructor,\n          )\n          : ''\n        }\\n${thrown.hasMessage\n          ? formatReceived('Received message: ', thrown, 'message') +\n          formatStack(thrown)\n          : formatReceived('Received value: ', thrown, 'value')\n        }`);\n\n  return { message, pass };\n};\n\nconst toThrowExpectedString = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n  expected: string,\n): SyncExpectationResult => {\n  const pass = thrown !== null && thrown.message.includes(expected);\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected substring: not ', expected) +\n      (thrown !== null && thrown.hasMessage\n        ? formatReceived(\n            'Received message:       ',\n            thrown,\n            'message',\n            expected,\n        ) + formatStack(thrown)\n        : formatReceived('Received value:         ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, undefined, options) +\n      '\\n\\n' +\n      formatExpected('Expected substring: ', expected) +\n      (thrown === null\n        ? `\\n${DID_NOT_THROW}`\n        : thrown.hasMessage\n          ? formatReceived('Received message:   ', thrown, 'message') +\n          formatStack(thrown)\n          : formatReceived('Received value:     ', thrown, 'value'));\n\n  return { message, pass };\n};\n\nconst toThrow = (\n  matcherName: string,\n  options: MatcherHintOptions,\n  thrown: Thrown | null,\n): SyncExpectationResult => {\n  const pass = thrown !== null;\n\n  const message = pass\n    ? () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      (thrown !== null && thrown.hasMessage\n        ? formatReceived('Error name:    ', thrown, 'name') +\n        formatReceived('Error message: ', thrown, 'message') +\n        formatStack(thrown)\n        : formatReceived('Thrown value: ', thrown, 'value'))\n    : () =>\n\n      matcherHint(matcherName, undefined, '', options) +\n      '\\n\\n' +\n      DID_NOT_THROW;\n\n  return { message, pass };\n};\n\nconst formatExpected = (label: string, expected: unknown) =>\n  `${label + printExpected(expected)}\\n`;\n\nconst formatReceived = (\n  label: string,\n  thrown: Thrown | null,\n  key: string,\n  expected?: string | RegExp,\n) => {\n  if (thrown === null)\n    return '';\n\n\n  if (key === 'message') {\n    const message = thrown.message;\n\n    if (typeof expected === 'string') {\n      const index = message.indexOf(expected);\n      if (index !== -1) {\n        return `${label +\n          printReceivedStringContainExpectedSubstring(\n              message,\n              index,\n              expected.length,\n          )\n        }\\n`;\n      }\n    } else if (expected instanceof RegExp) {\n      return `${label +\n        printReceivedStringContainExpectedResult(\n            message,\n            typeof expected.exec === 'function' ? expected.exec(message) : null,\n        )\n      }\\n`;\n    }\n\n    return `${label + printReceived(message)}\\n`;\n  }\n\n  if (key === 'name') {\n    return thrown.isError\n      ? `${label + printReceived(thrown.value.name)}\\n`\n      : '';\n  }\n\n  if (key === 'value')\n    return thrown.isError ? '' : `${label + printReceived(thrown.value)}\\n`;\n\n\n  return '';\n};\n\nconst formatStack = (thrown: Thrown | null) =>\n  thrown === null || !thrown.isError\n    ? ''\n    : formatStackTrace(\n        separateMessageFromStack(thrown.value.stack!).stack,\n        {\n          rootDir: process.cwd(),\n          testMatch: [],\n        },\n        {\n          noStackTrace: false,\n        },\n    );\n\nfunction createMessageAndCauseMessage(error: Error): string {\n  if (error.cause instanceof Error) {\n    return `{ message: ${error.message}, cause: ${createMessageAndCauseMessage(\n        error.cause,\n    )}}`;\n  }\n\n  return `{ message: ${error.message} }`;\n}\n\nfunction createMessageAndCause(error: Error) {\n  if (error.cause instanceof Error)\n    return createMessageAndCauseMessage(error);\n\n  return error.message;\n}\n\nfunction messageAndCause(error: Error) {\n  return error.cause === undefined ? 'message' : 'message and cause';\n}\n\nexport default matchers;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nimport { equals, iterableEquality, subsetEquality } from '@jest/expect-utils';\nimport * as matcherUtils from 'jest-matcher-utils';\nimport { isPromise } from 'jest-util';\n\nimport {\n  any,\n  anything,\n  arrayContaining,\n  arrayNotContaining,\n  closeTo,\n  notCloseTo,\n  objectContaining,\n  objectNotContaining,\n  stringContaining,\n  stringMatching,\n  stringNotContaining,\n  stringNotMatching,\n} from './asymmetricMatchers';\nimport extractExpectedAssertionsErrors from './extractExpectedAssertionsErrors';\nimport {\n  INTERNAL_MATCHER_FLAG,\n  addCustomEqualityTesters,\n  getCustomEqualityTesters,\n  getMatchers,\n  getState,\n  setMatchers,\n  setState,\n} from './jestMatchersObject';\nimport matchers from './matchers';\nimport spyMatchers from './spyMatchers';\nimport toThrowMatchers, {\n  createMatcher as createThrowMatcher,\n} from './toThrowMatchers';\n\nimport type {\n  Expect,\n  ExpectationResult,\n  MatcherContext,\n  MatcherState,\n  MatcherUtils,\n  MatchersObject,\n  PromiseMatcherFn,\n  RawMatcherFn,\n  SyncExpectationResult,\n  ThrowingMatcherFn,\n} from './types';\n\nexport type { Tester, TesterContext } from '@jest/expect-utils';\nexport { AsymmetricMatcher } from './asymmetricMatchers';\nexport type {\n  AsymmetricMatchers,\n  AsyncExpectationResult,\n  BaseExpect,\n  Expect,\n  ExpectationResult,\n  MatcherContext,\n  MatcherFunction,\n  MatcherFunctionWithContext,\n  MatcherState,\n  MatcherUtils,\n  Matchers,\n  SyncExpectationResult,\n} from './types';\n\nexport class JestAssertionError extends Error {\n  matcherResult?: Omit<SyncExpectationResult, 'message'> & { message: string };\n}\n\nconst createToThrowErrorMatchingSnapshotMatcher = function(\n  matcher: RawMatcherFn,\n) {\n  return function(\n    this: MatcherContext,\n    received: any,\n    testNameOrInlineSnapshot?: string,\n  ) {\n    return matcher.apply(this, [received, testNameOrInlineSnapshot, true]);\n  };\n};\n\nconst getPromiseMatcher = (name: string, matcher: RawMatcherFn) => {\n  if (name === 'toThrow' || name === 'toThrowError')\n    return createThrowMatcher(name, true);\n  else if (\n    name === 'toThrowErrorMatchingSnapshot' ||\n    name === 'toThrowErrorMatchingInlineSnapshot'\n  )\n    return createToThrowErrorMatchingSnapshotMatcher(matcher);\n\n\n  return null;\n};\n\nexport const expect: Expect = (actual: any, ...rest: Array<any>) => {\n  if (rest.length !== 0)\n    throw new Error('Expect takes at most one argument.');\n\n\n  const allMatchers = getMatchers();\n  const expectation: any = {\n    not: {},\n    rejects: { not: {} },\n    resolves: { not: {} },\n  };\n\n  const err = new JestAssertionError();\n\n  Object.keys(allMatchers).forEach(name => {\n    const matcher = allMatchers[name];\n    const promiseMatcher = getPromiseMatcher(name, matcher) || matcher;\n    expectation[name] = makeThrowingMatcher(matcher, false, '', actual);\n    expectation.not[name] = makeThrowingMatcher(matcher, true, '', actual);\n\n    expectation.resolves[name] = makeResolveMatcher(\n        name,\n        promiseMatcher,\n        false,\n        actual,\n        err,\n    );\n    expectation.resolves.not[name] = makeResolveMatcher(\n        name,\n        promiseMatcher,\n        true,\n        actual,\n        err,\n    );\n\n    expectation.rejects[name] = makeRejectMatcher(\n        name,\n        promiseMatcher,\n        false,\n        actual,\n        err,\n    );\n    expectation.rejects.not[name] = makeRejectMatcher(\n        name,\n        promiseMatcher,\n        true,\n        actual,\n        err,\n    );\n  });\n\n  return expectation;\n};\n\nconst getMessage = (message?: () => string) =>\n  (message && message()) ||\n  matcherUtils.RECEIVED_COLOR('No message was specified for this matcher.');\n\nconst makeResolveMatcher =\n  (\n    matcherName: string,\n    matcher: RawMatcherFn,\n    isNot: boolean,\n    actual: Promise<any>,\n    outerErr: JestAssertionError,\n  ): PromiseMatcherFn =>\n    (...args) => {\n      const options = {\n        isNot,\n        promise: 'resolves',\n      };\n\n      if (!isPromise(actual)) {\n        throw new JestAssertionError(\n            matcherUtils.matcherErrorMessage(\n                matcherUtils.matcherHint(matcherName, undefined, '', options),\n                `${matcherUtils.RECEIVED_COLOR('received')} value must be a promise`,\n                matcherUtils.printWithType(\n                    'Received',\n                    actual,\n                    matcherUtils.printReceived,\n                ),\n            ),\n        );\n      }\n\n      const innerErr = new JestAssertionError();\n\n      return actual.then(\n          result =>\n            makeThrowingMatcher(matcher, isNot, 'resolves', result, innerErr).apply(\n                null,\n                args,\n            ),\n          reason => {\n            outerErr.message =\n            `${matcherUtils.matcherHint(\n                matcherName,\n                undefined,\n                '',\n                options,\n            )}\\n\\n` +\n            'Received promise rejected instead of resolved\\n' +\n            `Rejected to value: ${matcherUtils.printReceived(reason)}`;\n            return Promise.reject(outerErr);\n          },\n      );\n    };\n\nconst makeRejectMatcher =\n  (\n    matcherName: string,\n    matcher: RawMatcherFn,\n    isNot: boolean,\n    actual: Promise<any> | (() => Promise<any>),\n    outerErr: JestAssertionError,\n  ): PromiseMatcherFn =>\n    (...args) => {\n      const options = {\n        isNot,\n        promise: 'rejects',\n      };\n\n      const actualWrapper: Promise<any> =\n        typeof actual === 'function' ? actual() : actual;\n\n      if (!isPromise(actualWrapper)) {\n        throw new JestAssertionError(\n            matcherUtils.matcherErrorMessage(\n                matcherUtils.matcherHint(matcherName, undefined, '', options),\n                `${matcherUtils.RECEIVED_COLOR(\n                    'received',\n                )} value must be a promise or a function returning a promise`,\n                matcherUtils.printWithType(\n                    'Received',\n                    actual,\n                    matcherUtils.printReceived,\n                ),\n            ),\n        );\n      }\n\n      const innerErr = new JestAssertionError();\n\n      return actualWrapper.then(\n          result => {\n            outerErr.message =\n            `${matcherUtils.matcherHint(\n                matcherName,\n                undefined,\n                '',\n                options,\n            )}\\n\\n` +\n            'Received promise resolved instead of rejected\\n' +\n            `Resolved to value: ${matcherUtils.printReceived(result)}`;\n            return Promise.reject(outerErr);\n          },\n          reason =>\n            makeThrowingMatcher(matcher, isNot, 'rejects', reason, innerErr).apply(\n                null,\n                args,\n            ),\n      );\n    };\n\nconst makeThrowingMatcher = (\n  matcher: RawMatcherFn,\n  isNot: boolean,\n  promise: string,\n  actual: any,\n  err?: JestAssertionError,\n): ThrowingMatcherFn =>\n  function throwingMatcher(...args): any {\n    let throws = true;\n    const utils: MatcherUtils['utils'] = {\n      ...matcherUtils,\n      iterableEquality,\n      subsetEquality,\n    };\n\n    const matcherUtilsThing: MatcherUtils = {\n      customTesters: getCustomEqualityTesters(),\n      // When throws is disabled, the matcher will not throw errors during test\n      // execution but instead add them to the global matcher state. If a\n      // matcher throws, test execution is normally stopped immediately. The\n      // snapshot matcher uses it because we want to log all snapshot\n      // failures in a test.\n      dontThrow: () => (throws = false),\n      equals,\n      utils,\n    };\n\n    const matcherContext: MatcherContext = {\n      ...getState<MatcherState>(),\n      ...matcherUtilsThing,\n      error: err,\n      isNot,\n      promise,\n    };\n\n    const processResult = (\n      result: SyncExpectationResult,\n      asyncError?: JestAssertionError,\n    ) => {\n      _validateResult(result);\n\n      getState().assertionCalls++;\n\n      if ((result.pass && isNot) || (!result.pass && !isNot)) {\n        // XOR\n        const message = getMessage(result.message);\n        let error;\n\n        if (err) {\n          error = err;\n          error.message = message;\n        } else if (asyncError) {\n          error = asyncError;\n          error.message = message;\n        } else {\n          error = new JestAssertionError(message);\n\n          // Try to remove this function from the stack trace frame.\n          // Guard for some environments (browsers) that do not support this feature.\n          if (Error.captureStackTrace)\n            Error.captureStackTrace(error, throwingMatcher);\n\n        }\n        // Passing the result of the matcher with the error so that a custom\n        // reporter could access the actual and expected objects of the result\n        // for example in order to display a custom visual diff\n        error.matcherResult = { ...result, message };\n\n        if (throws)\n          throw error;\n        else\n          getState().suppressedErrors.push(error);\n\n      } else {\n        getState().numPassingAsserts++;\n      }\n    };\n\n    const handleError = (error: Error) => {\n      if (\n        matcher[INTERNAL_MATCHER_FLAG] === true &&\n        !(error instanceof JestAssertionError) &&\n        error.name !== 'PrettyFormatPluginError' &&\n        // Guard for some environments (browsers) that do not support this feature.\n        Error.captureStackTrace\n      ) {\n        // Try to remove this and deeper functions from the stack trace frame.\n        Error.captureStackTrace(error, throwingMatcher);\n      }\n      throw error;\n    };\n\n    let potentialResult: ExpectationResult;\n\n    try {\n      potentialResult =\n        matcher[INTERNAL_MATCHER_FLAG] === true\n          ? matcher.call(matcherContext, actual, ...args)\n          : // It's a trap specifically for inline snapshot to capture this name\n          // in the stack trace, so that it can correctly get the custom matcher\n          // function call.\n          (function __EXTERNAL_MATCHER_TRAP__() {\n            return matcher.call(matcherContext, actual, ...args);\n          })();\n\n      if (isPromise(potentialResult)) {\n        const asyncError = new JestAssertionError();\n        if (Error.captureStackTrace)\n          Error.captureStackTrace(asyncError, throwingMatcher);\n\n\n        return potentialResult\n            .then(aResult => processResult(aResult, asyncError))\n            .catch(handleError);\n      } else {\n        return processResult(potentialResult);\n      }\n    } catch (error: any) {\n      return handleError(error);\n    }\n  };\n\nexpect.extend = (matchers: MatchersObject) =>\n  setMatchers(matchers, false, expect);\n\nexpect.addEqualityTesters = customTesters =>\n  addCustomEqualityTesters(customTesters);\n\nexpect.anything = anything;\nexpect.any = any;\n\nexpect.not = {\n  arrayContaining: arrayNotContaining,\n  closeTo: notCloseTo,\n  objectContaining: objectNotContaining,\n  stringContaining: stringNotContaining,\n  stringMatching: stringNotMatching,\n};\n\nexpect.arrayContaining = arrayContaining;\nexpect.closeTo = closeTo;\nexpect.objectContaining = objectContaining;\nexpect.stringContaining = stringContaining;\nexpect.stringMatching = stringMatching;\n\nconst _validateResult = (result: any) => {\n  if (\n    typeof result !== 'object' ||\n    typeof result.pass !== 'boolean' ||\n    (result.message &&\n      typeof result.message !== 'string' &&\n      typeof result.message !== 'function')\n  ) {\n    throw new Error(\n        'Unexpected return from a matcher function.\\n' +\n      'Matcher functions should ' +\n      'return an object in the following format:\\n' +\n      '  {message?: string | function, pass: boolean}\\n' +\n      `'${matcherUtils.stringify(result)}' was returned`,\n    );\n  }\n};\n\nfunction assertions(expected: number): void {\n  const error = new Error();\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(error, assertions);\n\n\n  setState({\n    expectedAssertionsNumber: expected,\n    expectedAssertionsNumberError: error,\n  });\n}\nfunction hasAssertions(...args: Array<unknown>): void {\n  const error = new Error();\n  if (Error.captureStackTrace)\n    Error.captureStackTrace(error, hasAssertions);\n\n\n  matcherUtils.ensureNoExpected(args[0], '.hasAssertions');\n  setState({\n    isExpectingAssertions: true,\n    isExpectingAssertionsError: error,\n  });\n}\n\n// add default jest matchers\nsetMatchers(matchers, true, expect);\nsetMatchers(spyMatchers, true, expect);\nsetMatchers(toThrowMatchers, true, expect);\n\nexpect.assertions = assertions;\nexpect.hasAssertions = hasAssertions;\nexpect.getState = getState;\nexpect.setState = setState;\nexpect.extractExpectedAssertionsErrors = extractExpectedAssertionsErrors;\n\nexport default expect;\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.spyOn =\n  exports.replaceProperty =\n  exports.mocked =\n  exports.fn =\n  exports.ModuleMocker =\n    void 0;\nfunction _jestUtil() {\n  const data = require('jest-util');\n  _jestUtil = function () {\n    return data;\n  };\n  return data;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually, local/prefer-rest-params-eventually */\n\n// TODO remove re-export in Jest 30\n\n// TODO remove re-export in Jest 30\n\n// TODO in Jest 30 remove `SpyInstance` in favour of `Spied`\n// eslint-disable-next-line @typescript-eslint/no-empty-interface\n/**\n * All what the internal typings need is to be sure that we have any-function.\n * `FunctionLike` type ensures that and helps to constrain the type as well.\n * The default of `UnknownFunction` makes sure that `any`s do not leak to the\n * user side. For instance, calling `fn()` without implementation will return\n * a mock of `(...args: Array<unknown>) => unknown` type. If implementation\n * is provided, its typings are inferred correctly.\n */\nconst MOCK_CONSTRUCTOR_NAME = 'mockConstructor';\nconst FUNCTION_NAME_RESERVED_PATTERN = /[\\s!-/:-@[-`{-~]/;\nconst FUNCTION_NAME_RESERVED_REPLACE = new RegExp(\n  FUNCTION_NAME_RESERVED_PATTERN.source,\n  'g'\n);\nconst RESERVED_KEYWORDS = new Set([\n  'arguments',\n  'await',\n  'break',\n  'case',\n  'catch',\n  'class',\n  'const',\n  'continue',\n  'debugger',\n  'default',\n  'delete',\n  'do',\n  'else',\n  'enum',\n  'eval',\n  'export',\n  'extends',\n  'false',\n  'finally',\n  'for',\n  'function',\n  'if',\n  'implements',\n  'import',\n  'in',\n  'instanceof',\n  'interface',\n  'let',\n  'new',\n  'null',\n  'package',\n  'private',\n  'protected',\n  'public',\n  'return',\n  'static',\n  'super',\n  'switch',\n  'this',\n  'throw',\n  'true',\n  'try',\n  'typeof',\n  'var',\n  'void',\n  'while',\n  'with',\n  'yield'\n]);\nfunction matchArity(fn, length) {\n  let mockConstructor;\n  switch (length) {\n    case 1:\n      mockConstructor = function (_a) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 2:\n      mockConstructor = function (_a, _b) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 3:\n      mockConstructor = function (_a, _b, _c) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 4:\n      mockConstructor = function (_a, _b, _c, _d) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 5:\n      mockConstructor = function (_a, _b, _c, _d, _e) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 6:\n      mockConstructor = function (_a, _b, _c, _d, _e, _f) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 7:\n      mockConstructor = function (_a, _b, _c, _d, _e, _f, _g) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 8:\n      mockConstructor = function (_a, _b, _c, _d, _e, _f, _g, _h) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    case 9:\n      mockConstructor = function (_a, _b, _c, _d, _e, _f, _g, _h, _i) {\n        return fn.apply(this, arguments);\n      };\n      break;\n    default:\n      mockConstructor = function () {\n        return fn.apply(this, arguments);\n      };\n      break;\n  }\n  return mockConstructor;\n}\nfunction getObjectType(value) {\n  return Object.prototype.toString.apply(value).slice(8, -1);\n}\nfunction getType(ref) {\n  const typeName = getObjectType(ref);\n  if (\n    typeName === 'Function' ||\n    typeName === 'AsyncFunction' ||\n    typeName === 'GeneratorFunction' ||\n    typeName === 'AsyncGeneratorFunction'\n  ) {\n    return 'function';\n  } else if (Array.isArray(ref)) {\n    return 'array';\n  } else if (typeName === 'Object' || typeName === 'Module') {\n    return 'object';\n  } else if (\n    typeName === 'Number' ||\n    typeName === 'String' ||\n    typeName === 'Boolean' ||\n    typeName === 'Symbol'\n  ) {\n    return 'constant';\n  } else if (\n    typeName === 'Map' ||\n    typeName === 'WeakMap' ||\n    typeName === 'Set'\n  ) {\n    return 'collection';\n  } else if (typeName === 'RegExp') {\n    return 'regexp';\n  } else if (ref === undefined) {\n    return 'undefined';\n  } else if (ref === null) {\n    return 'null';\n  } else {\n    return null;\n  }\n}\nfunction isReadonlyProp(object, prop) {\n  if (\n    prop === 'arguments' ||\n    prop === 'caller' ||\n    prop === 'callee' ||\n    prop === 'name' ||\n    prop === 'length'\n  ) {\n    const typeName = getObjectType(object);\n    return (\n      typeName === 'Function' ||\n      typeName === 'AsyncFunction' ||\n      typeName === 'GeneratorFunction' ||\n      typeName === 'AsyncGeneratorFunction'\n    );\n  }\n  if (\n    prop === 'source' ||\n    prop === 'global' ||\n    prop === 'ignoreCase' ||\n    prop === 'multiline'\n  ) {\n    return getObjectType(object) === 'RegExp';\n  }\n  return false;\n}\nclass ModuleMocker {\n  _environmentGlobal;\n  _mockState;\n  _mockConfigRegistry;\n  _spyState;\n  _invocationCallCounter;\n\n  /**\n   * @see README.md\n   * @param global Global object of the test environment, used to create\n   * mocks\n   */\n  constructor(global) {\n    this._environmentGlobal = global;\n    this._mockState = new WeakMap();\n    this._mockConfigRegistry = new WeakMap();\n    this._spyState = new Set();\n    this._invocationCallCounter = 1;\n  }\n  _getSlots(object) {\n    if (!object) {\n      return [];\n    }\n    const slots = new Set();\n    const EnvObjectProto = this._environmentGlobal.Object.prototype;\n    const EnvFunctionProto = this._environmentGlobal.Function.prototype;\n    const EnvRegExpProto = this._environmentGlobal.RegExp.prototype;\n\n    // Also check the builtins in the current context as they leak through\n    // core node modules.\n    const ObjectProto = Object.prototype;\n    const FunctionProto = Function.prototype;\n    const RegExpProto = RegExp.prototype;\n\n    // Properties of Object.prototype, Function.prototype and RegExp.prototype\n    // are never reported as slots\n    while (\n      object != null &&\n      object !== EnvObjectProto &&\n      object !== EnvFunctionProto &&\n      object !== EnvRegExpProto &&\n      object !== ObjectProto &&\n      object !== FunctionProto &&\n      object !== RegExpProto\n    ) {\n      const ownNames = Object.getOwnPropertyNames(object);\n      for (let i = 0; i < ownNames.length; i++) {\n        const prop = ownNames[i];\n        if (!isReadonlyProp(object, prop)) {\n          const propDesc = Object.getOwnPropertyDescriptor(object, prop);\n          if ((propDesc !== undefined && !propDesc.get) || object.__esModule) {\n            slots.add(prop);\n          }\n        }\n      }\n      object = Object.getPrototypeOf(object);\n    }\n    return Array.from(slots);\n  }\n  _ensureMockConfig(f) {\n    let config = this._mockConfigRegistry.get(f);\n    if (!config) {\n      config = this._defaultMockConfig();\n      this._mockConfigRegistry.set(f, config);\n    }\n    return config;\n  }\n  _ensureMockState(f) {\n    let state = this._mockState.get(f);\n    if (!state) {\n      state = this._defaultMockState();\n      this._mockState.set(f, state);\n    }\n    if (state.calls.length > 0) {\n      state.lastCall = state.calls[state.calls.length - 1];\n    }\n    return state;\n  }\n  _defaultMockConfig() {\n    return {\n      mockImpl: undefined,\n      mockName: 'jest.fn()',\n      specificMockImpls: []\n    };\n  }\n  _defaultMockState() {\n    return {\n      calls: [],\n      contexts: [],\n      instances: [],\n      invocationCallOrder: [],\n      results: []\n    };\n  }\n  _makeComponent(metadata, restore) {\n    if (metadata.type === 'object') {\n      return new this._environmentGlobal.Object();\n    } else if (metadata.type === 'array') {\n      return new this._environmentGlobal.Array();\n    } else if (metadata.type === 'regexp') {\n      return new this._environmentGlobal.RegExp('');\n    } else if (\n      metadata.type === 'constant' ||\n      metadata.type === 'collection' ||\n      metadata.type === 'null' ||\n      metadata.type === 'undefined'\n    ) {\n      return metadata.value;\n    } else if (metadata.type === 'function') {\n      const prototype =\n        (metadata.members &&\n          metadata.members.prototype &&\n          metadata.members.prototype.members) ||\n        {};\n      const prototypeSlots = this._getSlots(prototype);\n      // eslint-disable-next-line @typescript-eslint/no-this-alias\n      const mocker = this;\n      const mockConstructor = matchArity(function (...args) {\n        const mockState = mocker._ensureMockState(f);\n        const mockConfig = mocker._ensureMockConfig(f);\n        mockState.instances.push(this);\n        mockState.contexts.push(this);\n        mockState.calls.push(args);\n        // Create and record an \"incomplete\" mock result immediately upon\n        // calling rather than waiting for the mock to return. This avoids\n        // issues caused by recursion where results can be recorded in the\n        // wrong order.\n        const mockResult = {\n          type: 'incomplete',\n          value: undefined\n        };\n        mockState.results.push(mockResult);\n        mockState.invocationCallOrder.push(mocker._invocationCallCounter++);\n\n        // Will be set to the return value of the mock if an error is not thrown\n        let finalReturnValue;\n        // Will be set to the error that is thrown by the mock (if it throws)\n        let thrownError;\n        // Will be set to true if the mock throws an error. The presence of a\n        // value in `thrownError` is not a 100% reliable indicator because a\n        // function could throw a value of undefined.\n        let callDidThrowError = false;\n        try {\n          // The bulk of the implementation is wrapped in an immediately\n          // executed arrow function so the return value of the mock function\n          // can be easily captured and recorded, despite the many separate\n          // return points within the logic.\n          finalReturnValue = (() => {\n            if (this instanceof f) {\n              // This is probably being called as a constructor\n              prototypeSlots.forEach(slot => {\n                // Copy prototype methods to the instance to make\n                // it easier to interact with mock instance call and\n                // return values\n                if (prototype[slot].type === 'function') {\n                  // @ts-expect-error no index signature\n                  const protoImpl = this[slot];\n                  // @ts-expect-error no index signature\n                  this[slot] = mocker.generateFromMetadata(prototype[slot]);\n                  // @ts-expect-error no index signature\n                  this[slot]._protoImpl = protoImpl;\n                }\n              });\n\n              // Run the mock constructor implementation\n              const mockImpl = mockConfig.specificMockImpls.length\n                ? mockConfig.specificMockImpls.shift()\n                : mockConfig.mockImpl;\n              return mockImpl && mockImpl.apply(this, arguments);\n            }\n\n            // If mockImplementationOnce()/mockImplementation() is last set,\n            // implementation use the mock\n            let specificMockImpl = mockConfig.specificMockImpls.shift();\n            if (specificMockImpl === undefined) {\n              specificMockImpl = mockConfig.mockImpl;\n            }\n            if (specificMockImpl) {\n              return specificMockImpl.apply(this, arguments);\n            }\n            // Otherwise use prototype implementation\n            if (f._protoImpl) {\n              return f._protoImpl.apply(this, arguments);\n            }\n            return undefined;\n          })();\n        } catch (error) {\n          // Store the thrown error so we can record it, then re-throw it.\n          thrownError = error;\n          callDidThrowError = true;\n          throw error;\n        } finally {\n          // Record the result of the function.\n          // NOTE: Intentionally NOT pushing/indexing into the array of mock\n          //       results here to avoid corrupting results data if mockClear()\n          //       is called during the execution of the mock.\n          // @ts-expect-error reassigning 'incomplete'\n          mockResult.type = callDidThrowError ? 'throw' : 'return';\n          mockResult.value = callDidThrowError ? thrownError : finalReturnValue;\n        }\n        return finalReturnValue;\n      }, metadata.length || 0);\n      const f = this._createMockFunction(metadata, mockConstructor);\n      f._isMockFunction = true;\n      f.getMockImplementation = () => this._ensureMockConfig(f).mockImpl;\n      if (typeof restore === 'function') {\n        this._spyState.add(restore);\n      }\n      this._mockState.set(f, this._defaultMockState());\n      this._mockConfigRegistry.set(f, this._defaultMockConfig());\n      Object.defineProperty(f, 'mock', {\n        configurable: false,\n        enumerable: true,\n        get: () => this._ensureMockState(f),\n        set: val => this._mockState.set(f, val)\n      });\n      f.mockClear = () => {\n        this._mockState.delete(f);\n        return f;\n      };\n      f.mockReset = () => {\n        f.mockClear();\n        this._mockConfigRegistry.delete(f);\n        return f;\n      };\n      f.mockRestore = () => {\n        f.mockReset();\n        return restore ? restore() : undefined;\n      };\n      f.mockReturnValueOnce = value =>\n        // next function call will return this value or default return value\n        f.mockImplementationOnce(() => value);\n      f.mockResolvedValueOnce = value =>\n        f.mockImplementationOnce(() =>\n          this._environmentGlobal.Promise.resolve(value)\n        );\n      f.mockRejectedValueOnce = value =>\n        f.mockImplementationOnce(() =>\n          this._environmentGlobal.Promise.reject(value)\n        );\n      f.mockReturnValue = value =>\n        // next function call will return specified return value or this one\n        f.mockImplementation(() => value);\n      f.mockResolvedValue = value =>\n        f.mockImplementation(() =>\n          this._environmentGlobal.Promise.resolve(value)\n        );\n      f.mockRejectedValue = value =>\n        f.mockImplementation(() =>\n          this._environmentGlobal.Promise.reject(value)\n        );\n      f.mockImplementationOnce = fn => {\n        // next function call will use this mock implementation return value\n        // or default mock implementation return value\n        const mockConfig = this._ensureMockConfig(f);\n        mockConfig.specificMockImpls.push(fn);\n        return f;\n      };\n      f.withImplementation = withImplementation.bind(this);\n      function withImplementation(fn, callback) {\n        // Remember previous mock implementation, then set new one\n        const mockConfig = this._ensureMockConfig(f);\n        const previousImplementation = mockConfig.mockImpl;\n        const previousSpecificImplementations = mockConfig.specificMockImpls;\n        mockConfig.mockImpl = fn;\n        mockConfig.specificMockImpls = [];\n        const returnedValue = callback();\n        if ((0, _jestUtil().isPromise)(returnedValue)) {\n          return returnedValue.then(() => {\n            mockConfig.mockImpl = previousImplementation;\n            mockConfig.specificMockImpls = previousSpecificImplementations;\n          });\n        } else {\n          mockConfig.mockImpl = previousImplementation;\n          mockConfig.specificMockImpls = previousSpecificImplementations;\n        }\n      }\n      f.mockImplementation = fn => {\n        // next function call will use mock implementation return value\n        const mockConfig = this._ensureMockConfig(f);\n        mockConfig.mockImpl = fn;\n        return f;\n      };\n      f.mockReturnThis = () =>\n        f.mockImplementation(function () {\n          return this;\n        });\n      f.mockName = name => {\n        if (name) {\n          const mockConfig = this._ensureMockConfig(f);\n          mockConfig.mockName = name;\n        }\n        return f;\n      };\n      f.getMockName = () => {\n        const mockConfig = this._ensureMockConfig(f);\n        return mockConfig.mockName || 'jest.fn()';\n      };\n      if (metadata.mockImpl) {\n        f.mockImplementation(metadata.mockImpl);\n      }\n      return f;\n    } else {\n      const unknownType = metadata.type || 'undefined type';\n      throw new Error(`Unrecognized type ${unknownType}`);\n    }\n  }\n  _createMockFunction(metadata, mockConstructor) {\n    let name = metadata.name;\n    if (!name) {\n      return mockConstructor;\n    }\n\n    // Preserve `name` property of mocked function.\n    const boundFunctionPrefix = 'bound ';\n    let bindCall = '';\n    // if-do-while for perf reasons. The common case is for the if to fail.\n    if (name.startsWith(boundFunctionPrefix)) {\n      do {\n        name = name.substring(boundFunctionPrefix.length);\n        // Call bind() just to alter the function name.\n        bindCall = '.bind(null)';\n      } while (name && name.startsWith(boundFunctionPrefix));\n    }\n\n    // Special case functions named `mockConstructor` to guard for infinite loops\n    if (name === MOCK_CONSTRUCTOR_NAME) {\n      return mockConstructor;\n    }\n    if (\n      // It's a syntax error to define functions with a reserved keyword as name\n      RESERVED_KEYWORDS.has(name) ||\n      // It's also a syntax error to define functions with a name that starts with a number\n      /^\\d/.test(name)\n    ) {\n      name = `$${name}`;\n    }\n\n    // It's also a syntax error to define a function with a reserved character\n    // as part of it's name.\n    if (FUNCTION_NAME_RESERVED_PATTERN.test(name)) {\n      name = name.replace(FUNCTION_NAME_RESERVED_REPLACE, '$');\n    }\n    const body =\n      `return function ${name}() {` +\n      `  return ${MOCK_CONSTRUCTOR_NAME}.apply(this,arguments);` +\n      `}${bindCall}`;\n    const createConstructor = new this._environmentGlobal.Function(\n      MOCK_CONSTRUCTOR_NAME,\n      body\n    );\n    return createConstructor(mockConstructor);\n  }\n  _generateMock(metadata, callbacks, refs) {\n    // metadata not compatible but it's the same type, maybe problem with\n    // overloading of _makeComponent and not _generateMock?\n    // @ts-expect-error - unsure why TSC complains here?\n    const mock = this._makeComponent(metadata);\n    if (metadata.refID != null) {\n      refs[metadata.refID] = mock;\n    }\n    this._getSlots(metadata.members).forEach(slot => {\n      const slotMetadata = (metadata.members && metadata.members[slot]) || {};\n      if (slotMetadata.ref != null) {\n        callbacks.push(\n          (function (ref) {\n            return () => (mock[slot] = refs[ref]);\n          })(slotMetadata.ref)\n        );\n      } else {\n        mock[slot] = this._generateMock(slotMetadata, callbacks, refs);\n      }\n    });\n    if (\n      metadata.type !== 'undefined' &&\n      metadata.type !== 'null' &&\n      mock.prototype &&\n      typeof mock.prototype === 'object'\n    ) {\n      mock.prototype.constructor = mock;\n    }\n    return mock;\n  }\n\n  /**\n   * Check whether the given property of an object has been already replaced.\n   */\n  _findReplacedProperty(object, propertyKey) {\n    for (const spyState of this._spyState) {\n      if (\n        'object' in spyState &&\n        'property' in spyState &&\n        spyState.object === object &&\n        spyState.property === propertyKey\n      ) {\n        return spyState;\n      }\n    }\n    return;\n  }\n\n  /**\n   * @see README.md\n   * @param metadata Metadata for the mock in the schema returned by the\n   * getMetadata method of this module.\n   */\n  generateFromMetadata(metadata) {\n    const callbacks = [];\n    const refs = {};\n    const mock = this._generateMock(metadata, callbacks, refs);\n    callbacks.forEach(setter => setter());\n    return mock;\n  }\n\n  /**\n   * @see README.md\n   * @param component The component for which to retrieve metadata.\n   */\n  getMetadata(component, _refs) {\n    const refs = _refs || new Map();\n    const ref = refs.get(component);\n    if (ref != null) {\n      return {\n        ref\n      };\n    }\n    const type = getType(component);\n    if (!type) {\n      return null;\n    }\n    const metadata = {\n      type\n    };\n    if (\n      type === 'constant' ||\n      type === 'collection' ||\n      type === 'undefined' ||\n      type === 'null'\n    ) {\n      metadata.value = component;\n      return metadata;\n    } else if (type === 'function') {\n      // @ts-expect-error component is a function so it has a name, but not\n      // necessarily a string: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/name#function_names_in_classes\n      const componentName = component.name;\n      if (typeof componentName === 'string') {\n        metadata.name = componentName;\n      }\n      if (this.isMockFunction(component)) {\n        metadata.mockImpl = component.getMockImplementation();\n      }\n    }\n    metadata.refID = refs.size;\n    refs.set(component, metadata.refID);\n    let members = null;\n    // Leave arrays alone\n    if (type !== 'array') {\n      // @ts-expect-error component is object\n      this._getSlots(component).forEach(slot => {\n        if (\n          type === 'function' &&\n          this.isMockFunction(component) &&\n          slot.match(/^mock/)\n        ) {\n          return;\n        }\n        // @ts-expect-error no index signature\n        const slotMetadata = this.getMetadata(component[slot], refs);\n        if (slotMetadata) {\n          if (!members) {\n            members = {};\n          }\n          members[slot] = slotMetadata;\n        }\n      });\n    }\n    if (members) {\n      metadata.members = members;\n    }\n    return metadata;\n  }\n  isMockFunction(fn) {\n    return fn != null && fn._isMockFunction === true;\n  }\n  fn(implementation) {\n    const length = implementation ? implementation.length : 0;\n    const fn = this._makeComponent({\n      length,\n      type: 'function'\n    });\n    if (implementation) {\n      fn.mockImplementation(implementation);\n    }\n    return fn;\n  }\n  spyOn(object, methodKey, accessType) {\n    if (\n      object == null ||\n      (typeof object !== 'object' && typeof object !== 'function')\n    ) {\n      throw new Error(\n        `Cannot use spyOn on a primitive value; ${this._typeOf(object)} given`\n      );\n    }\n    if (methodKey == null) {\n      throw new Error('No property name supplied');\n    }\n    if (accessType) {\n      return this._spyOnProperty(object, methodKey, accessType);\n    }\n    const original = object[methodKey];\n    if (!original) {\n      throw new Error(\n        `Property \\`${String(\n          methodKey\n        )}\\` does not exist in the provided object`\n      );\n    }\n    if (!this.isMockFunction(original)) {\n      if (typeof original !== 'function') {\n        throw new Error(\n          `Cannot spy on the \\`${String(\n            methodKey\n          )}\\` property because it is not a function; ${this._typeOf(\n            original\n          )} given instead.${\n            typeof original !== 'object'\n              ? ` If you are trying to mock a property, use \\`jest.replaceProperty(object, '${String(\n                  methodKey\n                )}', value)\\` instead.`\n              : ''\n          }`\n        );\n      }\n      const isMethodOwner = Object.prototype.hasOwnProperty.call(\n        object,\n        methodKey\n      );\n      let descriptor = Object.getOwnPropertyDescriptor(object, methodKey);\n      let proto = Object.getPrototypeOf(object);\n      while (!descriptor && proto !== null) {\n        descriptor = Object.getOwnPropertyDescriptor(proto, methodKey);\n        proto = Object.getPrototypeOf(proto);\n      }\n      let mock;\n      if (descriptor && descriptor.get) {\n        const originalGet = descriptor.get;\n        mock = this._makeComponent(\n          {\n            type: 'function'\n          },\n          () => {\n            descriptor.get = originalGet;\n            Object.defineProperty(object, methodKey, descriptor);\n          }\n        );\n        descriptor.get = () => mock;\n        Object.defineProperty(object, methodKey, descriptor);\n      } else {\n        mock = this._makeComponent(\n          {\n            type: 'function'\n          },\n          () => {\n            if (isMethodOwner) {\n              object[methodKey] = original;\n            } else {\n              delete object[methodKey];\n            }\n          }\n        );\n        // @ts-expect-error overriding original method with a Mock\n        object[methodKey] = mock;\n      }\n      mock.mockImplementation(function () {\n        return original.apply(this, arguments);\n      });\n    }\n    return object[methodKey];\n  }\n  _spyOnProperty(object, propertyKey, accessType) {\n    let descriptor = Object.getOwnPropertyDescriptor(object, propertyKey);\n    let proto = Object.getPrototypeOf(object);\n    while (!descriptor && proto !== null) {\n      descriptor = Object.getOwnPropertyDescriptor(proto, propertyKey);\n      proto = Object.getPrototypeOf(proto);\n    }\n    if (!descriptor) {\n      throw new Error(\n        `Property \\`${String(\n          propertyKey\n        )}\\` does not exist in the provided object`\n      );\n    }\n    if (!descriptor.configurable) {\n      throw new Error(\n        `Property \\`${String(propertyKey)}\\` is not declared configurable`\n      );\n    }\n    if (!descriptor[accessType]) {\n      throw new Error(\n        `Property \\`${String(\n          propertyKey\n        )}\\` does not have access type ${accessType}`\n      );\n    }\n    const original = descriptor[accessType];\n    if (!this.isMockFunction(original)) {\n      if (typeof original !== 'function') {\n        throw new Error(\n          `Cannot spy on the ${String(\n            propertyKey\n          )} property because it is not a function; ${this._typeOf(\n            original\n          )} given instead.${\n            typeof original !== 'object'\n              ? ` If you are trying to mock a property, use \\`jest.replaceProperty(object, '${String(\n                  propertyKey\n                )}', value)\\` instead.`\n              : ''\n          }`\n        );\n      }\n      descriptor[accessType] = this._makeComponent(\n        {\n          type: 'function'\n        },\n        () => {\n          // @ts-expect-error: mock is assignable\n          descriptor[accessType] = original;\n          Object.defineProperty(object, propertyKey, descriptor);\n        }\n      );\n      descriptor[accessType].mockImplementation(function () {\n        // @ts-expect-error - wrong context\n        return original.apply(this, arguments);\n      });\n    }\n    Object.defineProperty(object, propertyKey, descriptor);\n    return descriptor[accessType];\n  }\n  replaceProperty(object, propertyKey, value) {\n    if (\n      object == null ||\n      (typeof object !== 'object' && typeof object !== 'function')\n    ) {\n      throw new Error(\n        `Cannot use replaceProperty on a primitive value; ${this._typeOf(\n          object\n        )} given`\n      );\n    }\n    if (propertyKey == null) {\n      throw new Error('No property name supplied');\n    }\n    let descriptor = Object.getOwnPropertyDescriptor(object, propertyKey);\n    let proto = Object.getPrototypeOf(object);\n    while (!descriptor && proto !== null) {\n      descriptor = Object.getOwnPropertyDescriptor(proto, propertyKey);\n      proto = Object.getPrototypeOf(proto);\n    }\n    if (!descriptor) {\n      throw new Error(\n        `Property \\`${String(\n          propertyKey\n        )}\\` does not exist in the provided object`\n      );\n    }\n    if (!descriptor.configurable) {\n      throw new Error(\n        `Property \\`${String(propertyKey)}\\` is not declared configurable`\n      );\n    }\n    if (descriptor.get !== undefined) {\n      throw new Error(\n        `Cannot replace the \\`${String(\n          propertyKey\n        )}\\` property because it has a getter. Use \\`jest.spyOn(object, '${String(\n          propertyKey\n        )}', 'get').mockReturnValue(value)\\` instead.`\n      );\n    }\n    if (descriptor.set !== undefined) {\n      throw new Error(\n        `Cannot replace the \\`${String(\n          propertyKey\n        )}\\` property because it has a setter. Use \\`jest.spyOn(object, '${String(\n          propertyKey\n        )}', 'set').mockReturnValue(value)\\` instead.`\n      );\n    }\n    if (typeof descriptor.value === 'function') {\n      throw new Error(\n        `Cannot replace the \\`${String(\n          propertyKey\n        )}\\` property because it is a function. Use \\`jest.spyOn(object, '${String(\n          propertyKey\n        )}')\\` instead.`\n      );\n    }\n    const existingRestore = this._findReplacedProperty(object, propertyKey);\n    if (existingRestore) {\n      return existingRestore.replaced.replaceValue(value);\n    }\n    const isPropertyOwner = Object.prototype.hasOwnProperty.call(\n      object,\n      propertyKey\n    );\n    const originalValue = descriptor.value;\n    const restore = () => {\n      if (isPropertyOwner) {\n        object[propertyKey] = originalValue;\n      } else {\n        delete object[propertyKey];\n      }\n    };\n    const replaced = {\n      replaceValue: value => {\n        object[propertyKey] = value;\n        return replaced;\n      },\n      restore: () => {\n        restore();\n        this._spyState.delete(restore);\n      }\n    };\n    restore.object = object;\n    restore.property = propertyKey;\n    restore.replaced = replaced;\n    this._spyState.add(restore);\n    return replaced.replaceValue(value);\n  }\n  clearAllMocks() {\n    this._mockState = new WeakMap();\n  }\n  resetAllMocks() {\n    this._mockConfigRegistry = new WeakMap();\n    this._mockState = new WeakMap();\n  }\n  restoreAllMocks() {\n    this._spyState.forEach(restore => restore());\n    this._spyState = new Set();\n  }\n  _typeOf(value) {\n    return value == null ? `${value}` : typeof value;\n  }\n  mocked(source, _options) {\n    return source;\n  }\n}\nexports.ModuleMocker = ModuleMocker;\nconst JestMock = new ModuleMocker(globalThis);\nconst fn = JestMock.fn.bind(JestMock);\nexports.fn = fn;\nconst spyOn = JestMock.spyOn.bind(JestMock);\nexports.spyOn = spyOn;\nconst mocked = JestMock.mocked.bind(JestMock);\nexports.mocked = mocked;\nconst replaceProperty = JestMock.replaceProperty.bind(JestMock);\nexports.replaceProperty = replaceProperty;\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as mu from 'jest-matcher-utils';\n\nimport * as am from '../third_party/asymmetricMatchers';\nimport expectLibrary from '../third_party/index';\n\nexport const expect = expectLibrary;\nexport * as mock from 'jest-mock';\n\nexport const asymmetricMatchers = {\n  any: am.any,\n  anything: am.anything,\n  arrayContaining: am.arrayContaining,\n  arrayNotContaining: am.arrayNotContaining,\n  closeTo: am.closeTo,\n  notCloseTo: am.notCloseTo,\n  objectContaining: am.objectContaining,\n  objectNotContaining: am.objectNotContaining,\n  stringContaining: am.stringContaining,\n  stringMatching: am.stringMatching,\n  stringNotContaining: am.stringNotContaining,\n  stringNotMatching: am.stringNotMatching,\n};\n\nexport const matcherUtils = {\n  stringify: mu.stringify,\n};\n\nexport {\n  EXPECTED_COLOR,\n  INVERTED_COLOR,\n  RECEIVED_COLOR,\n  printReceived,\n} from 'jest-matcher-utils';\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const expect: typeof import('../../bundles/expect/third_party/index').expect = require('./expectBundleImpl').expect;\nexport const mock: typeof import('../../bundles/expect/node_modules/jest-mock') = require('./expectBundleImpl').mock;\nexport const asymmetricMatchers = require('./expectBundleImpl').asymmetricMatchers;\nexport const matcherUtils = require('./expectBundleImpl').matcherUtils;\nexport const EXPECTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').EXPECTED_COLOR = require('./expectBundleImpl').EXPECTED_COLOR;\nexport const INVERTED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').INVERTED_COLOR = require('./expectBundleImpl').INVERTED_COLOR;\nexport const RECEIVED_COLOR: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').RECEIVED_COLOR = require('./expectBundleImpl').RECEIVED_COLOR;\nexport const printReceived: typeof import('../../bundles/expect/node_modules/jest-matcher-utils/build').printReceived = require('./expectBundleImpl').printReceived;\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { urlMatches } from 'playwright-core/lib/utils';\nimport { colors } from 'playwright-core/lib/utils';\n\nimport { printReceivedStringContainExpectedResult } from './expect';\nimport {  matcherHint } from './matcherHint';\nimport { EXPECTED_COLOR, printReceived } from '../common/expectBundle';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { Page } from 'playwright-core';\n\nexport async function toHaveURLWithPredicate(\n  this: ExpectMatcherState,\n  page: Page,\n  expected: (url: URL) => boolean,\n  options?: { ignoreCase?: boolean; timeout?: number },\n): Promise<MatcherResult<string | RegExp, string>> {\n  const matcherName = 'toHaveURL';\n  const expression = 'page';\n  const matcherOptions = {\n    isNot: this.isNot,\n    promise: this.promise,\n  };\n\n  if (typeof expected !== 'function') {\n    throw new Error(\n        [\n          // Always display `expected` in expectation place\n          matcherHint(this, undefined, matcherName, expression, undefined, matcherOptions),\n          `${colors.bold('Matcher error')}: ${EXPECTED_COLOR('expected')} value must be a string, regular expression, or predicate`,\n          this.utils.printWithType('Expected', expected, this.utils.printExpected,),\n        ].join('\\n\\n'),\n    );\n  }\n\n  const timeout = options?.timeout ?? this.timeout;\n  const baseURL: string | undefined = (page.context() as any)._options.baseURL;\n  let conditionSucceeded = false;\n  let lastCheckedURLString: string | undefined = undefined;\n  try {\n    await page.mainFrame().waitForURL(\n        url => {\n          lastCheckedURLString = url.toString();\n\n          if (options?.ignoreCase) {\n            return (\n              !this.isNot ===\n              urlMatches(\n                  baseURL?.toLocaleLowerCase(),\n                  lastCheckedURLString.toLocaleLowerCase(),\n                  expected,\n              )\n            );\n          }\n\n          return (\n            !this.isNot === urlMatches(baseURL, lastCheckedURLString, expected)\n          );\n        },\n        { timeout },\n    );\n\n    conditionSucceeded = true;\n  } catch (e) {\n    conditionSucceeded = false;\n  }\n\n  if (conditionSucceeded)\n    return { name: matcherName, pass: !this.isNot, message: () => '' };\n\n  return {\n    name: matcherName,\n    pass: this.isNot,\n    message: () =>\n      toHaveURLMessage(\n          this,\n          matcherName,\n          expression,\n          expected,\n          lastCheckedURLString,\n          this.isNot,\n          true,\n          timeout,\n      ),\n    actual: lastCheckedURLString,\n    timeout,\n  };\n}\n\nfunction toHaveURLMessage(\n  state: ExpectMatcherState,\n  matcherName: string,\n  expression: string,\n  expected: Function,\n  received: string | undefined,\n  pass: boolean,\n  didTimeout: boolean,\n  timeout: number,\n): string {\n  const matcherOptions = {\n    isNot: state.isNot,\n    promise: state.promise,\n  };\n  const receivedString = received || '';\n  const messagePrefix = matcherHint(state, undefined, matcherName, expression, undefined, matcherOptions, didTimeout ? timeout : undefined);\n\n  let printedReceived: string | undefined;\n  let printedExpected: string | undefined;\n  let printedDiff: string | undefined;\n  if (typeof expected === 'function') {\n    printedExpected = `Expected predicate to ${!state.isNot ? 'succeed' : 'fail'}`;\n    printedReceived = `Received string: ${printReceived(receivedString)}`;\n  } else {\n    if (pass) {\n      printedExpected = `Expected pattern: not ${state.utils.printExpected(expected)}`;\n      const formattedReceived = printReceivedStringContainExpectedResult(receivedString, null);\n      printedReceived = `Received string: ${formattedReceived}`;\n    } else {\n      const labelExpected = `Expected ${typeof expected === 'string' ? 'string' : 'pattern'}`;\n      printedDiff = state.utils.printDiffOrStringify(expected, receivedString, labelExpected, 'Received string', false);\n    }\n  }\n\n  const resultDetails = printedDiff ? printedDiff : printedExpected + '\\n' + printedReceived;\n  return messagePrefix + resultDetails;\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport { colors } from 'playwright-core/lib/utils';\n\nimport { callLogText, expectTypes } from '../util';\nimport {\n  printReceivedStringContainExpectedResult,\n  printReceivedStringContainExpectedSubstring\n} from './expect';\nimport { kNoElementsFoundError, matcherHint } from './matcherHint';\nimport { EXPECTED_COLOR } from '../common/expectBundle';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { Locator } from 'playwright-core';\n\nexport async function toMatchText(\n  this: ExpectMatcherState,\n  matcherName: string,\n  receiver: Locator,\n  receiverType: string,\n  query: (isNot: boolean, timeout: number) => Promise<{ matches: boolean, received?: string, log?: string[], timedOut?: boolean }>,\n  expected: string | RegExp,\n  options: { timeout?: number, matchSubstring?: boolean, receiverLabel?: string } = {},\n): Promise<MatcherResult<string | RegExp, string>> {\n  expectTypes(receiver, [receiverType], matcherName);\n\n  const matcherOptions = {\n    isNot: this.isNot,\n    promise: this.promise,\n  };\n\n  if (\n    !(typeof expected === 'string') &&\n    !(expected && typeof expected.test === 'function')\n  ) {\n    // Same format as jest's matcherErrorMessage\n    throw new Error([\n      matcherHint(this, receiver, matcherName, receiver, expected, matcherOptions),\n      `${colors.bold('Matcher error')}: ${EXPECTED_COLOR('expected',)} value must be a string or regular expression`,\n      this.utils.printWithType('Expected', expected, this.utils.printExpected)\n    ].join('\\n\\n'));\n  }\n\n  const timeout = options.timeout ?? this.timeout;\n\n  const { matches: pass, received, log, timedOut } = await query(!!this.isNot, timeout);\n  if (pass === !this.isNot) {\n    return {\n      name: matcherName,\n      message: () => '',\n      pass,\n      expected\n    };\n  }\n\n  const stringSubstring = options.matchSubstring ? 'substring' : 'string';\n  const receivedString = received || '';\n  const messagePrefix = matcherHint(this, receiver, matcherName, options.receiverLabel ?? 'locator', undefined, matcherOptions, timedOut ? timeout : undefined);\n  const notFound = received === kNoElementsFoundError;\n\n  let printedReceived: string | undefined;\n  let printedExpected: string | undefined;\n  let printedDiff: string | undefined;\n  if (pass) {\n    if (typeof expected === 'string') {\n      if (notFound) {\n        printedExpected = `Expected ${stringSubstring}: not ${this.utils.printExpected(expected)}`;\n        printedReceived = `Received: ${received}`;\n      } else {\n        printedExpected = `Expected ${stringSubstring}: not ${this.utils.printExpected(expected)}`;\n        const formattedReceived = printReceivedStringContainExpectedSubstring(receivedString, receivedString.indexOf(expected), expected.length);\n        printedReceived = `Received string: ${formattedReceived}`;\n      }\n    } else {\n      if (notFound) {\n        printedExpected = `Expected pattern: not ${this.utils.printExpected(expected)}`;\n        printedReceived = `Received: ${received}`;\n      } else {\n        printedExpected = `Expected pattern: not ${this.utils.printExpected(expected)}`;\n        const formattedReceived = printReceivedStringContainExpectedResult(receivedString, typeof expected.exec === 'function' ? expected.exec(receivedString) : null);\n        printedReceived = `Received string: ${formattedReceived}`;\n      }\n    }\n  } else {\n    const labelExpected = `Expected ${typeof expected === 'string' ? stringSubstring : 'pattern'}`;\n    if (notFound) {\n      printedExpected = `${labelExpected}: ${this.utils.printExpected(expected)}`;\n      printedReceived = `Received: ${received}`;\n    } else {\n      printedDiff = this.utils.printDiffOrStringify(expected, receivedString, labelExpected, 'Received string', false);\n    }\n  }\n\n  const message = () => {\n    const resultDetails = printedDiff ? printedDiff : printedExpected + '\\n' + printedReceived;\n    return messagePrefix + resultDetails + callLogText(log);\n  };\n\n  return {\n    name: matcherName,\n    expected,\n    message,\n    pass,\n    actual: received,\n    log,\n    timeout: timedOut ? timeout : undefined,\n  };\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { getPackageJsonPath, mergeObjects } from '../util';\n\nimport type { Config, Fixtures, Metadata, Project, ReporterDescription } from '../../types/test';\nimport type { TestRunnerPluginRegistration } from '../plugins';\nimport type { Matcher } from '../util';\nimport type { ConfigCLIOverrides } from './ipc';\nimport type { Location } from '../../types/testReporter';\nimport type { FullConfig, FullProject } from '../../types/testReporter';\n\nexport type ConfigLocation = {\n  resolvedConfigFile?: string;\n  configDir: string;\n};\n\nexport type FixturesWithLocation = {\n  fixtures: Fixtures;\n  location: Location;\n};\n\nexport const defaultTimeout = 30000;\n\nexport class FullConfigInternal {\n  readonly config: FullConfig;\n  readonly configDir: string;\n  readonly configCLIOverrides: ConfigCLIOverrides;\n  readonly webServers: NonNullable<FullConfig['webServer']>[];\n  readonly plugins: TestRunnerPluginRegistration[];\n  readonly projects: FullProjectInternal[] = [];\n  readonly singleTSConfigPath?: string;\n  readonly captureGitInfo: Config['captureGitInfo'];\n  readonly failOnFlakyTests: boolean;\n  cliArgs: string[] = [];\n  cliGrep: string | undefined;\n  cliGrepInvert: string | undefined;\n  cliOnlyChanged: string | undefined;\n  cliProjectFilter?: string[];\n  cliListOnly = false;\n  cliPassWithNoTests?: boolean;\n  cliLastFailed?: boolean;\n  testIdMatcher?: Matcher;\n  lastFailedTestIdMatcher?: Matcher;\n  defineConfigWasUsed = false;\n\n  globalSetups: string[] = [];\n  globalTeardowns: string[] = [];\n\n  constructor(location: ConfigLocation, userConfig: Config, configCLIOverrides: ConfigCLIOverrides, metadata?: Metadata) {\n    if (configCLIOverrides.projects && userConfig.projects)\n      throw new Error(`Cannot use --browser option when configuration file defines projects. Specify browserName in the projects instead.`);\n\n    const { resolvedConfigFile, configDir } = location;\n    const packageJsonPath = getPackageJsonPath(configDir);\n    const packageJsonDir = packageJsonPath ? path.dirname(packageJsonPath) : process.cwd();\n\n    this.configDir = configDir;\n    this.configCLIOverrides = configCLIOverrides;\n    const privateConfiguration = (userConfig as any)['@playwright/test'];\n    this.plugins = (privateConfiguration?.plugins || []).map((p: any) => ({ factory: p }));\n    this.singleTSConfigPath = pathResolve(configDir, userConfig.tsconfig);\n    this.captureGitInfo = userConfig.captureGitInfo;\n    this.failOnFlakyTests = takeFirst(configCLIOverrides.failOnFlakyTests, userConfig.failOnFlakyTests, false);\n\n    this.globalSetups = (Array.isArray(userConfig.globalSetup) ? userConfig.globalSetup : [userConfig.globalSetup]).map(s => resolveScript(s, configDir)).filter(script => script !== undefined);\n    this.globalTeardowns = (Array.isArray(userConfig.globalTeardown) ? userConfig.globalTeardown : [userConfig.globalTeardown]).map(s => resolveScript(s, configDir)).filter(script => script !== undefined);\n\n    // Make sure we reuse same metadata instance between FullConfigInternal instances,\n    // so that plugins such as gitCommitInfoPlugin can populate metadata once.\n    userConfig.metadata = userConfig.metadata || {};\n\n    this.config = {\n      configFile: resolvedConfigFile,\n      rootDir: pathResolve(configDir, userConfig.testDir) || configDir,\n      forbidOnly: takeFirst(configCLIOverrides.forbidOnly, userConfig.forbidOnly, false),\n      fullyParallel: takeFirst(configCLIOverrides.fullyParallel, userConfig.fullyParallel, false),\n      globalSetup: this.globalSetups[0] ?? null,\n      globalTeardown: this.globalTeardowns[0] ?? null,\n      globalTimeout: takeFirst(configCLIOverrides.debug ? 0 : undefined, configCLIOverrides.globalTimeout, userConfig.globalTimeout, 0),\n      grep: takeFirst(userConfig.grep, defaultGrep),\n      grepInvert: takeFirst(userConfig.grepInvert, null),\n      maxFailures: takeFirst(configCLIOverrides.debug ? 1 : undefined, configCLIOverrides.maxFailures, userConfig.maxFailures, 0),\n      metadata: metadata ?? userConfig.metadata,\n      preserveOutput: takeFirst(userConfig.preserveOutput, 'always'),\n      reporter: takeFirst(configCLIOverrides.reporter, resolveReporters(userConfig.reporter, configDir), [[defaultReporter]]),\n      reportSlowTests: takeFirst(userConfig.reportSlowTests, { max: 5, threshold: 300_000 /* 5 minutes */ }),\n      quiet: takeFirst(configCLIOverrides.quiet, userConfig.quiet, false),\n      projects: [],\n      shard: takeFirst(configCLIOverrides.shard, userConfig.shard, null),\n      updateSnapshots: takeFirst(configCLIOverrides.updateSnapshots, userConfig.updateSnapshots, 'missing'),\n      updateSourceMethod: takeFirst(configCLIOverrides.updateSourceMethod, userConfig.updateSourceMethod, 'patch'),\n      version: require('../../package.json').version,\n      workers: resolveWorkers(takeFirst(configCLIOverrides.debug ? 1 : undefined, configCLIOverrides.workers, userConfig.workers, '50%')),\n      webServer: null,\n    };\n    for (const key in userConfig) {\n      if (key.startsWith('@'))\n        (this.config as any)[key] = (userConfig as any)[key];\n    }\n\n    (this.config as any)[configInternalSymbol] = this;\n\n    const webServers = takeFirst(userConfig.webServer, null);\n    if (Array.isArray(webServers)) { // multiple web server mode\n      // Due to previous choices, this value shows up to the user in globalSetup as part of FullConfig. Arrays are not supported by the old type.\n      this.config.webServer = null;\n      this.webServers = webServers;\n    } else if (webServers) { // legacy singleton mode\n      this.config.webServer = webServers;\n      this.webServers = [webServers];\n    } else {\n      this.webServers = [];\n    }\n\n    const projectConfigs = configCLIOverrides.projects || userConfig.projects || [userConfig];\n    this.projects = projectConfigs.map(p => new FullProjectInternal(configDir, userConfig, this, p, this.configCLIOverrides, packageJsonDir));\n    resolveProjectDependencies(this.projects);\n    this._assignUniqueProjectIds(this.projects);\n    this.config.projects = this.projects.map(p => p.project);\n  }\n\n  private _assignUniqueProjectIds(projects: FullProjectInternal[]) {\n    const usedNames = new Set();\n    for (const p of projects) {\n      const name = p.project.name || '';\n      for (let i = 0; i < projects.length; ++i) {\n        const candidate = name + (i ? i : '');\n        if (usedNames.has(candidate))\n          continue;\n        p.id = candidate;\n        (p.project as any).__projectId = p.id;\n        usedNames.add(candidate);\n        break;\n      }\n    }\n  }\n}\n\nexport class FullProjectInternal {\n  readonly project: FullProject;\n  readonly fullConfig: FullConfigInternal;\n  readonly fullyParallel: boolean;\n  readonly expect: Project['expect'];\n  readonly respectGitIgnore: boolean;\n  readonly snapshotPathTemplate: string | undefined;\n  readonly ignoreSnapshots: boolean;\n  readonly workers: number | undefined;\n  id = '';\n  deps: FullProjectInternal[] = [];\n  teardown: FullProjectInternal | undefined;\n\n  constructor(configDir: string, config: Config, fullConfig: FullConfigInternal, projectConfig: Project, configCLIOverrides: ConfigCLIOverrides, packageJsonDir: string) {\n    this.fullConfig = fullConfig;\n    const testDir = takeFirst(pathResolve(configDir, projectConfig.testDir), pathResolve(configDir, config.testDir), fullConfig.configDir);\n    this.snapshotPathTemplate = takeFirst(projectConfig.snapshotPathTemplate, config.snapshotPathTemplate);\n\n    this.project = {\n      grep: takeFirst(projectConfig.grep, config.grep, defaultGrep),\n      grepInvert: takeFirst(projectConfig.grepInvert, config.grepInvert, null),\n      outputDir: takeFirst(configCLIOverrides.outputDir, pathResolve(configDir, projectConfig.outputDir), pathResolve(configDir, config.outputDir), path.join(packageJsonDir, 'test-results')),\n      // Note: we either apply the cli override for repeatEach or not, depending on whether the\n      // project is top-level vs dependency. See collectProjectsAndTestFiles in loadUtils.\n      repeatEach: takeFirst(projectConfig.repeatEach, config.repeatEach, 1),\n      retries: takeFirst(configCLIOverrides.retries, projectConfig.retries, config.retries, 0),\n      metadata: takeFirst(projectConfig.metadata, config.metadata, {}),\n      name: takeFirst(projectConfig.name, config.name, ''),\n      testDir,\n      snapshotDir: takeFirst(pathResolve(configDir, projectConfig.snapshotDir), pathResolve(configDir, config.snapshotDir), testDir),\n      testIgnore: takeFirst(projectConfig.testIgnore, config.testIgnore, []),\n      testMatch: takeFirst(projectConfig.testMatch, config.testMatch, '**/*.@(spec|test).?(c|m)[jt]s?(x)'),\n      timeout: takeFirst(configCLIOverrides.debug ? 0 : undefined, configCLIOverrides.timeout, projectConfig.timeout, config.timeout, defaultTimeout),\n      use: mergeObjects(config.use, projectConfig.use, configCLIOverrides.use),\n      dependencies: projectConfig.dependencies || [],\n      teardown: projectConfig.teardown,\n    };\n    this.fullyParallel = takeFirst(configCLIOverrides.fullyParallel, projectConfig.fullyParallel, config.fullyParallel, undefined);\n    this.expect = takeFirst(projectConfig.expect, config.expect, {});\n    if (this.expect.toHaveScreenshot?.stylePath) {\n      const stylePaths = Array.isArray(this.expect.toHaveScreenshot.stylePath) ? this.expect.toHaveScreenshot.stylePath : [this.expect.toHaveScreenshot.stylePath];\n      this.expect.toHaveScreenshot.stylePath = stylePaths.map(stylePath => path.resolve(configDir, stylePath));\n    }\n    this.respectGitIgnore = takeFirst(projectConfig.respectGitIgnore, config.respectGitIgnore, !projectConfig.testDir && !config.testDir);\n    this.ignoreSnapshots = takeFirst(configCLIOverrides.ignoreSnapshots,  projectConfig.ignoreSnapshots, config.ignoreSnapshots, false);\n    this.workers = projectConfig.workers ? resolveWorkers(projectConfig.workers) : undefined;\n    if (configCLIOverrides.debug && this.workers)\n      this.workers = 1;\n  }\n}\n\nexport function takeFirst<T>(...args: (T | undefined)[]): T {\n  for (const arg of args) {\n    if (arg !== undefined)\n      return arg;\n  }\n  return undefined as any as T;\n}\n\nfunction pathResolve(baseDir: string, relative: string | undefined): string | undefined {\n  if (!relative)\n    return undefined;\n  return path.resolve(baseDir, relative);\n}\n\nfunction resolveReporters(reporters: Config['reporter'], rootDir: string): ReporterDescription[] | undefined {\n  return toReporters(reporters as any)?.map(([id, arg]) => {\n    if (builtInReporters.includes(id as any))\n      return [id, arg];\n    return [require.resolve(id, { paths: [rootDir] }), arg];\n  });\n}\n\nfunction resolveWorkers(workers: string | number): number {\n  if (typeof workers === 'string') {\n    if (workers.endsWith('%')) {\n      const cpus = os.cpus().length;\n      return Math.max(1, Math.floor(cpus * (parseInt(workers, 10) / 100)));\n    }\n    const parsedWorkers = parseInt(workers, 10);\n    if (isNaN(parsedWorkers))\n      throw new Error(`Workers ${workers} must be a number or percentage.`);\n    return parsedWorkers;\n  }\n  return workers;\n}\n\nfunction resolveProjectDependencies(projects: FullProjectInternal[]) {\n  const teardownSet = new Set<FullProjectInternal>();\n  for (const project of projects) {\n    for (const dependencyName of project.project.dependencies) {\n      const dependencies = projects.filter(p => p.project.name === dependencyName);\n      if (!dependencies.length)\n        throw new Error(`Project '${project.project.name}' depends on unknown project '${dependencyName}'`);\n      if (dependencies.length > 1)\n        throw new Error(`Project dependencies should have unique names, reading ${dependencyName}`);\n      project.deps.push(...dependencies);\n    }\n    if (project.project.teardown) {\n      const teardowns = projects.filter(p => p.project.name === project.project.teardown);\n      if (!teardowns.length)\n        throw new Error(`Project '${project.project.name}' has unknown teardown project '${project.project.teardown}'`);\n      if (teardowns.length > 1)\n        throw new Error(`Project teardowns should have unique names, reading ${project.project.teardown}`);\n      const teardown = teardowns[0];\n      project.teardown = teardown;\n      teardownSet.add(teardown);\n    }\n  }\n  for (const teardown of teardownSet) {\n    if (teardown.deps.length)\n      throw new Error(`Teardown project ${teardown.project.name} must not have dependencies`);\n  }\n  for (const project of projects) {\n    for (const dep of project.deps) {\n      if (teardownSet.has(dep))\n        throw new Error(`Project ${project.project.name} must not depend on a teardown project ${dep.project.name}`);\n    }\n  }\n}\n\nexport function toReporters(reporters: BuiltInReporter | ReporterDescription[] | undefined): ReporterDescription[] | undefined {\n  if (!reporters)\n    return;\n  if (typeof reporters === 'string')\n    return [[reporters]];\n  return reporters;\n}\n\nexport const builtInReporters = ['list', 'line', 'dot', 'json', 'junit', 'null', 'github', 'html', 'blob'] as const;\nexport type BuiltInReporter = typeof builtInReporters[number];\n\nexport type ContextReuseMode = 'none' | 'when-possible';\n\nfunction resolveScript(id: string | undefined, rootDir: string): string | undefined {\n  if (!id)\n    return undefined;\n  const localPath = path.resolve(rootDir, id);\n  if (fs.existsSync(localPath))\n    return localPath;\n  return require.resolve(id, { paths: [rootDir] });\n}\n\nexport const defaultGrep = /.*/;\nexport const defaultReporter = process.env.CI ? 'dot' : 'list';\n\nconst configInternalSymbol = Symbol('configInternalSymbol');\n\nexport function getProjectId(project: FullProject): string {\n  return (project as any).__projectId!;\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ManualPromise, monotonicTime } from 'playwright-core/lib/utils';\nimport { colors } from 'playwright-core/lib/utils';\n\nimport { debugTest, formatLocation } from '../util';\n\nimport type { Location } from '../../types/testReporter';\n\nexport type TimeSlot = {\n  timeout: number;\n  elapsed: number;\n};\n\ntype RunnableType = 'test' | 'beforeAll' | 'afterAll' | 'beforeEach' | 'afterEach' | 'slow' | 'skip' | 'fail' | 'fixme' | 'teardown';\n\nexport type RunnableDescription = {\n  type: RunnableType;\n  location?: Location;\n  slot?: TimeSlot;  // Falls back to test slot.\n  fixture?: FixtureDescription;\n};\n\nexport type FixtureDescription = {\n  title: string;\n  phase: 'setup' | 'teardown';\n  location?: Location;\n  slot?: TimeSlot;  // Falls back to the runnable slot.\n};\n\ntype Running = {\n  runnable: RunnableDescription;\n  slot: TimeSlot;\n  start: number;\n  deadline: number;\n  timer: NodeJS.Timeout | undefined;\n  timeoutPromise: ManualPromise<any>;\n};\nexport const kMaxDeadline = 2147483647; // 2^31-1\n\nexport class TimeoutManager {\n  private _defaultSlot: TimeSlot;\n  private _running?: Running;\n  private _ignoreTimeouts = false;\n\n  constructor(timeout: number) {\n    this._defaultSlot = { timeout, elapsed: 0 };\n  }\n\n  setIgnoreTimeouts() {\n    this._ignoreTimeouts = true;\n    if (this._running)\n      this._updateTimeout(this._running);\n  }\n\n  interrupt() {\n    if (this._running)\n      this._running.timeoutPromise.reject(this._createTimeoutError(this._running));\n  }\n\n  isTimeExhaustedFor(runnable: RunnableDescription) {\n    const slot = runnable.fixture?.slot || runnable.slot || this._defaultSlot;\n    // Note: the \"-1\" here matches the +1 in _updateTimeout.\n    return slot.timeout > 0 && (slot.elapsed >= slot.timeout - 1);\n  }\n\n  async withRunnable<T>(runnable: RunnableDescription, cb: () => Promise<T>): Promise<T> {\n    if (this._running)\n      throw new Error(`Internal error: duplicate runnable`);\n    const running = this._running = {\n      runnable,\n      slot: runnable.fixture?.slot || runnable.slot || this._defaultSlot,\n      start: monotonicTime(),\n      deadline: kMaxDeadline,\n      timer: undefined,\n      timeoutPromise: new ManualPromise(),\n    };\n    let debugTitle = '';\n    try {\n      if (debugTest.enabled) {\n        debugTitle = runnable.fixture ? `${runnable.fixture.phase} \"${runnable.fixture.title}\"` : runnable.type;\n        const location = runnable.location ? ` at \"${formatLocation(runnable.location)}\"` : ``;\n        debugTest(`started ${debugTitle}${location}`);\n      }\n      this._updateTimeout(running);\n      return await Promise.race([\n        cb(),\n        running.timeoutPromise,\n      ]);\n    } finally {\n      if (running.timer)\n        clearTimeout(running.timer);\n      running.timer = undefined;\n      running.slot.elapsed += monotonicTime() - running.start;\n      this._running = undefined;\n      if (debugTest.enabled)\n        debugTest(`finished ${debugTitle}`);\n    }\n  }\n\n  private _updateTimeout(running: Running) {\n    if (running.timer)\n      clearTimeout(running.timer);\n    running.timer = undefined;\n    if (this._ignoreTimeouts || !running.slot.timeout) {\n      running.deadline = kMaxDeadline;\n      return;\n    }\n    running.deadline = running.start + (running.slot.timeout - running.slot.elapsed);\n    // Compensate for Node.js troubles with timeouts that can fire too early.\n    // We add an extra millisecond which seems to be enough.\n    // See https://github.com/nodejs/node/issues/26578.\n    const timeout = running.deadline - monotonicTime() + 1;\n    if (timeout <= 0)\n      running.timeoutPromise.reject(this._createTimeoutError(running));\n    else\n      running.timer = setTimeout(() => running.timeoutPromise.reject(this._createTimeoutError(running)), timeout);\n  }\n\n  defaultSlot() {\n    return this._defaultSlot;\n  }\n\n  slow() {\n    const slot = this._running ? this._running.slot : this._defaultSlot;\n    slot.timeout = slot.timeout * 3;\n    if (this._running)\n      this._updateTimeout(this._running);\n  }\n\n  setTimeout(timeout: number) {\n    const slot = this._running ? this._running.slot : this._defaultSlot;\n    slot.timeout = timeout;\n    if (this._running)\n      this._updateTimeout(this._running);\n  }\n\n  currentSlotDeadline() {\n    return this._running ? this._running.deadline : kMaxDeadline;\n  }\n\n  currentSlotType() {\n    return this._running ? this._running.runnable.type : 'test';\n  }\n\n  private _createTimeoutError(running: Running): Error {\n    let message = '';\n    const timeout = running.slot.timeout;\n    const runnable = running.runnable;\n    switch (runnable.type) {\n      case 'test': {\n        if (runnable.fixture) {\n          if (runnable.fixture.phase === 'setup')\n            message = `Test timeout of ${timeout}ms exceeded while setting up \"${runnable.fixture.title}\".`;\n          else\n            message = `Tearing down \"${runnable.fixture.title}\" exceeded the test timeout of ${timeout}ms.`;\n        } else {\n          message = `Test timeout of ${timeout}ms exceeded.`;\n        }\n        break;\n      }\n      case 'afterEach':\n      case 'beforeEach':\n        message = `Test timeout of ${timeout}ms exceeded while running \"${runnable.type}\" hook.`;\n        break;\n      case 'beforeAll':\n      case 'afterAll':\n        message = `\"${runnable.type}\" hook timeout of ${timeout}ms exceeded.`;\n        break;\n      case 'teardown': {\n        if (runnable.fixture)\n          message = `Worker teardown timeout of ${timeout}ms exceeded while ${runnable.fixture.phase === 'setup' ? 'setting up' : 'tearing down'} \"${runnable.fixture.title}\".`;\n        else\n          message = `Worker teardown timeout of ${timeout}ms exceeded.`;\n        break;\n      }\n      case 'skip':\n      case 'slow':\n      case 'fixme':\n      case 'fail':\n        message = `\"${runnable.type}\" modifier timeout of ${timeout}ms exceeded.`;\n        break;\n    }\n    const fixtureWithSlot = runnable.fixture?.slot ? runnable.fixture : undefined;\n    if (fixtureWithSlot)\n      message = `Fixture \"${fixtureWithSlot.title}\" timeout of ${timeout}ms exceeded during ${fixtureWithSlot.phase}.`;\n    message = colors.red(message);\n    const location = (fixtureWithSlot || runnable).location;\n    const error = new TimeoutManagerError(message);\n    error.name = '';\n    // Include location for hooks, modifiers and fixtures to distinguish between them.\n    error.stack = message + (location ? `\\n    at ${location.file}:${location.line}:${location.column}` : '');\n    return error;\n  }\n}\n\nexport class TimeoutManagerError extends Error {}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { ManualPromise, SerializedFS, calculateSha1, createGuid, monotonicTime } from 'playwright-core/lib/utils';\nimport { yauzl, yazl } from 'playwright-core/lib/zipBundle';\n\nimport { filteredStackTrace, stepTitle } from '../util';\n\nimport type { TestInfoImpl } from './testInfo';\nimport type { PlaywrightWorkerOptions, TestInfo, TraceMode } from '../../types/test';\nimport type { TestInfoErrorImpl } from '../common/ipc';\nimport type { SerializedError, StackFrame } from '@protocol/channels';\nimport type * as trace from '@trace/trace';\nimport type EventEmitter from 'events';\nimport type { TestStepCategory } from '../util';\n\nexport type Attachment = TestInfo['attachments'][0];\nexport const testTraceEntryName = 'test.trace';\nconst version: trace.VERSION = 8;\nlet traceOrdinal = 0;\n\ntype TraceFixtureValue =  PlaywrightWorkerOptions['trace'] | undefined;\ntype TraceOptions = { screenshots: boolean, snapshots: boolean, sources: boolean, attachments: boolean, _live: boolean, mode: TraceMode };\n\nexport class TestTracing {\n  private _testInfo: TestInfoImpl;\n  private _options: TraceOptions | undefined;\n  private _liveTraceFile: { file: string, fs: SerializedFS } | undefined;\n  private _traceEvents: trace.TraceEvent[] = [];\n  private _temporaryTraceFiles: string[] = [];\n  private _artifactsDir: string;\n  private _tracesDir: string;\n  private _contextCreatedEvent: trace.ContextCreatedTraceEvent;\n  private _didFinishTestFunctionAndAfterEachHooks = false;\n\n  constructor(testInfo: TestInfoImpl, artifactsDir: string) {\n    this._testInfo = testInfo;\n    this._artifactsDir = artifactsDir;\n    this._tracesDir = path.join(this._artifactsDir, 'traces');\n    this._contextCreatedEvent = {\n      version,\n      type: 'context-options',\n      origin: 'testRunner',\n      browserName: '',\n      options: {},\n      platform: process.platform,\n      wallTime: Date.now(),\n      monotonicTime: monotonicTime(),\n      sdkLanguage: 'javascript',\n    };\n    this._appendTraceEvent(this._contextCreatedEvent);\n  }\n\n  private _shouldCaptureTrace() {\n    if (process.env.PW_TEST_DISABLE_TRACING)\n      return false;\n\n    if (this._options?.mode === 'on')\n      return true;\n\n    if (this._options?.mode === 'retain-on-failure')\n      return true;\n\n    if (this._options?.mode === 'on-first-retry' && this._testInfo.retry === 1)\n      return true;\n\n    if (this._options?.mode === 'on-all-retries' && this._testInfo.retry > 0)\n      return true;\n\n    if (this._options?.mode === 'retain-on-first-failure' && this._testInfo.retry === 0)\n      return true;\n\n    return false;\n  }\n\n  async startIfNeeded(value: TraceFixtureValue) {\n    const defaultTraceOptions: TraceOptions = { screenshots: true, snapshots: true, sources: true, attachments: true, _live: false, mode: 'off' };\n\n    if (!value) {\n      this._options = defaultTraceOptions;\n    } else if (typeof value === 'string') {\n      this._options = { ...defaultTraceOptions, mode: value === 'retry-with-trace' ? 'on-first-retry' : value as TraceMode };\n    } else {\n      const mode = value.mode || 'off';\n      this._options = { ...defaultTraceOptions, ...value, mode: (mode as string) === 'retry-with-trace' ? 'on-first-retry' : mode };\n    }\n\n    if (!this._shouldCaptureTrace()) {\n      this._options = undefined;\n      return;\n    }\n\n    if (!this._liveTraceFile && this._options._live) {\n      // Note that trace name must start with testId for live tracing to work.\n      this._liveTraceFile = { file: path.join(this._tracesDir, `${this._testInfo.testId}-test.trace`), fs: new SerializedFS() };\n      this._liveTraceFile.fs.mkdir(path.dirname(this._liveTraceFile.file));\n      const data = this._traceEvents.map(e => JSON.stringify(e)).join('\\n') + '\\n';\n      this._liveTraceFile.fs.writeFile(this._liveTraceFile.file, data);\n    }\n  }\n\n  didFinishTestFunctionAndAfterEachHooks() {\n    this._didFinishTestFunctionAndAfterEachHooks = true;\n  }\n\n  artifactsDir() {\n    return this._artifactsDir;\n  }\n\n  tracesDir() {\n    return this._tracesDir;\n  }\n\n  traceTitle() {\n    return [path.relative(this._testInfo.project.testDir, this._testInfo.file) + ':' + this._testInfo.line, ...this._testInfo.titlePath.slice(1)].join(' › ');\n  }\n\n  generateNextTraceRecordingName() {\n    const ordinalSuffix = traceOrdinal ? `-recording${traceOrdinal}` : '';\n    ++traceOrdinal;\n    const retrySuffix = this._testInfo.retry ? `-retry${this._testInfo.retry}` : '';\n    // Note that trace name must start with testId for live tracing to work.\n    return `${this._testInfo.testId}${retrySuffix}${ordinalSuffix}`;\n  }\n\n  private _generateNextTraceRecordingPath() {\n    const file = path.join(this._artifactsDir, createGuid() + '.zip');\n    this._temporaryTraceFiles.push(file);\n    return file;\n  }\n\n  traceOptions() {\n    return this._options;\n  }\n\n  maybeGenerateNextTraceRecordingPath() {\n    // Forget about traces that should be saved on failure, when no failure happened\n    // during the test and beforeEach/afterEach hooks.\n    // This avoids downloading traces over the wire when not really needed.\n    if (this._didFinishTestFunctionAndAfterEachHooks && this._shouldAbandonTrace())\n      return;\n    return this._generateNextTraceRecordingPath();\n  }\n\n  private _shouldAbandonTrace() {\n    if (!this._options)\n      return true;\n    const testFailed = this._testInfo.status !== this._testInfo.expectedStatus;\n    return !testFailed && (this._options.mode === 'retain-on-failure' || this._options.mode === 'retain-on-first-failure');\n  }\n\n  async stopIfNeeded() {\n    if (!this._options)\n      return;\n\n    const error = await this._liveTraceFile?.fs.syncAndGetError();\n    if (error)\n      throw error;\n\n    if (this._shouldAbandonTrace()) {\n      for (const file of this._temporaryTraceFiles)\n        await fs.promises.unlink(file).catch(() => {});\n      return;\n    }\n\n    const zipFile = new yazl.ZipFile();\n\n    if (!this._options?.attachments) {\n      for (const event of this._traceEvents) {\n        if (event.type === 'after')\n          delete event.attachments;\n      }\n    }\n\n    if (this._options?.sources) {\n      const sourceFiles = new Set<string>();\n      for (const event of this._traceEvents) {\n        if (event.type === 'before') {\n          for (const frame of event.stack || [])\n            sourceFiles.add(frame.file);\n        }\n      }\n      for (const sourceFile of sourceFiles) {\n        await fs.promises.readFile(sourceFile, 'utf8').then(source => {\n          zipFile.addBuffer(Buffer.from(source), 'resources/src@' + calculateSha1(sourceFile) + '.txt');\n        }).catch(() => {});\n      }\n    }\n\n    const sha1s = new Set<string>();\n    for (const event of this._traceEvents.filter(e => e.type === 'after') as trace.AfterActionTraceEvent[]) {\n      for (const attachment of (event.attachments || [])) {\n        let contentPromise: Promise<Buffer | undefined> | undefined;\n        if (attachment.path)\n          contentPromise = fs.promises.readFile(attachment.path).catch(() => undefined);\n        else if (attachment.base64)\n          contentPromise = Promise.resolve(Buffer.from(attachment.base64, 'base64'));\n\n        const content = await contentPromise;\n        if (content === undefined)\n          continue;\n\n        const sha1 = calculateSha1(content);\n        attachment.sha1 = sha1;\n        delete attachment.path;\n        delete attachment.base64;\n        if (sha1s.has(sha1))\n          continue;\n        sha1s.add(sha1);\n        zipFile.addBuffer(content, 'resources/' + sha1);\n      }\n    }\n\n    const traceContent = Buffer.from(this._traceEvents.map(e => JSON.stringify(e)).join('\\n'));\n    zipFile.addBuffer(traceContent, testTraceEntryName);\n\n    await new Promise(f => {\n      zipFile.end(undefined, () => {\n        zipFile.outputStream.pipe(fs.createWriteStream(this._generateNextTraceRecordingPath())).on('close', f);\n      });\n    });\n\n    const tracePath = this._testInfo.outputPath('trace.zip');\n    await mergeTraceFiles(tracePath, this._temporaryTraceFiles);\n    this._testInfo.attachments.push({ name: 'trace', path: tracePath, contentType: 'application/zip' });\n  }\n\n  appendForError(error: TestInfoErrorImpl) {\n    const rawStack = error.stack?.split('\\n') || [];\n    const stack = rawStack ? filteredStackTrace(rawStack) : [];\n    this._appendTraceEvent({\n      type: 'error',\n      message: this._formatError(error),\n      stack,\n    });\n  }\n\n  _formatError(error: TestInfoErrorImpl) {\n    const parts: string[] = [error.message || String(error.value)];\n    if (error.cause)\n      parts.push('[cause]: ' + this._formatError(error.cause));\n    return parts.join('\\n');\n  }\n\n  appendStdioToTrace(type: 'stdout' | 'stderr', chunk: string | Buffer) {\n    this._appendTraceEvent({\n      type,\n      timestamp: monotonicTime(),\n      text: typeof chunk === 'string' ? chunk : undefined,\n      base64: typeof chunk === 'string' ? undefined : chunk.toString('base64'),\n    });\n  }\n\n  appendBeforeActionForStep(callId: string, parentId: string | undefined, options: { title: string, category: TestStepCategory, params?: Record<string, any>, stack: StackFrame[] }) {\n    this._appendTraceEvent({\n      type: 'before',\n      callId,\n      stepId: callId,\n      parentId,\n      startTime: monotonicTime(),\n      class: 'Test',\n      method: 'step',\n      title: stepTitle(options.category, options.title),\n      params: Object.fromEntries(Object.entries(options.params || {}).map(([name, value]) => [name, generatePreview(value)])),\n      stack: options.stack,\n    });\n  }\n\n  appendAfterActionForStep(callId: string, error?: SerializedError['error'], attachments: Attachment[] = [], annotations?: trace.AfterActionTraceEventAnnotation[]) {\n    this._appendTraceEvent({\n      type: 'after',\n      callId,\n      endTime: monotonicTime(),\n      attachments: serializeAttachments(attachments),\n      annotations,\n      error,\n    });\n  }\n\n  private _appendTraceEvent(event: trace.TraceEvent) {\n    this._traceEvents.push(event);\n    if (this._liveTraceFile)\n      this._liveTraceFile.fs.appendFile(this._liveTraceFile.file, JSON.stringify(event) + '\\n', true);\n  }\n}\n\nfunction serializeAttachments(attachments: Attachment[]): trace.AfterActionTraceEvent['attachments'] {\n  if (attachments.length === 0)\n    return undefined;\n  return attachments.filter(a => a.name !== 'trace').map(a => {\n    return {\n      name: a.name,\n      contentType: a.contentType,\n      path: a.path,\n      base64: a.body?.toString('base64'),\n    };\n  });\n}\n\nfunction generatePreview(value: any, visited = new Set<any>()): string {\n  if (visited.has(value))\n    return '';\n  visited.add(value);\n  if (typeof value === 'string')\n    return value;\n  if (typeof value === 'number')\n    return value.toString();\n  if (typeof value === 'boolean')\n    return value.toString();\n  if (value === null)\n    return 'null';\n  if (value === undefined)\n    return 'undefined';\n  if (Array.isArray(value))\n    return '[' + value.map(v => generatePreview(v, visited)).join(', ') + ']';\n  if (typeof value === 'object')\n    return 'Object';\n  return String(value);\n}\n\nasync function mergeTraceFiles(fileName: string, temporaryTraceFiles: string[]) {\n  temporaryTraceFiles = temporaryTraceFiles.filter(file => fs.existsSync(file));\n  if (temporaryTraceFiles.length === 1) {\n    await fs.promises.rename(temporaryTraceFiles[0], fileName);\n    return;\n  }\n\n  const mergePromise = new ManualPromise();\n  const zipFile = new yazl.ZipFile();\n  const entryNames = new Set<string>();\n  (zipFile as any as EventEmitter).on('error', error => mergePromise.reject(error));\n\n  for (let i = temporaryTraceFiles.length - 1; i >= 0; --i) {\n    const tempFile = temporaryTraceFiles[i];\n    const promise = new ManualPromise<void>();\n    yauzl.open(tempFile, (err, inZipFile) => {\n      if (err) {\n        promise.reject(err);\n        return;\n      }\n      let pendingEntries = inZipFile.entryCount;\n      inZipFile.on('entry', entry => {\n        let entryName = entry.fileName;\n        if (entry.fileName === testTraceEntryName) {\n          // Keep the name for test traces so that the last test trace\n          // that contains most of the information is kept in the trace.\n          // Note the reverse order of the iteration (from new traces to old).\n        } else if (entry.fileName.match(/trace\\.[a-z]*$/)) {\n          entryName = i + '-' + entry.fileName;\n        }\n        if (entryNames.has(entryName)) {\n          if (--pendingEntries === 0)\n            promise.resolve();\n          return;\n        }\n        entryNames.add(entryName);\n        inZipFile.openReadStream(entry, (err, readStream) => {\n          if (err) {\n            promise.reject(err);\n            return;\n          }\n          zipFile.addReadStream(readStream!, entryName);\n          if (--pendingEntries === 0)\n            promise.resolve();\n        });\n      });\n    });\n    await promise;\n  }\n\n  zipFile.end(undefined, () => {\n    zipFile.outputStream.pipe(fs.createWriteStream(fileName)).on('close', () => {\n      void Promise.all(temporaryTraceFiles.map(tempFile => fs.promises.unlink(tempFile))).then(() => {\n        mergePromise.resolve();\n      }).catch(error => mergePromise.reject(error));\n    }).on('error', error => mergePromise.reject(error));\n  });\n  await mergePromise;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { serializeError } from '../util';\n\nimport type { TestInfoErrorImpl } from '../common/ipc';\n\nexport function testInfoError(error: Error | any): TestInfoErrorImpl {\n  return serializeError(error);\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { captureRawStack, monotonicTime, sanitizeForFilePath, stringifyStackFrames, currentZone, createGuid } from 'playwright-core/lib/utils';\n\nimport { TimeoutManager, TimeoutManagerError, kMaxDeadline } from './timeoutManager';\nimport { addSuffixToFilePath, filteredStackTrace, getContainedPath, normalizeAndSaveAttachment, sanitizeFilePathBeforeExtension, trimLongString, windowsFilesystemFriendlyLength } from '../util';\nimport { TestTracing } from './testTracing';\nimport { testInfoError } from './util';\n\nimport type { RunnableDescription } from './timeoutManager';\nimport type { FullProject, TestInfo, TestStatus, TestStepInfo, TestAnnotation } from '../../types/test';\nimport type { FullConfig, Location } from '../../types/testReporter';\nimport type { FullConfigInternal, FullProjectInternal } from '../common/config';\nimport type { AttachmentPayload, StepBeginPayload, StepEndPayload, TestInfoErrorImpl, WorkerInitParams } from '../common/ipc';\nimport type { TestCase } from '../common/test';\nimport type { StackFrame } from '@protocol/channels';\nimport type { TestStepCategory } from '../util';\n\nexport interface TestStepInternal {\n  complete(result: { error?: Error | unknown, suggestedRebaseline?: string }): void;\n  info: TestStepInfoImpl\n  attachmentIndices: number[];\n  stepId: string;\n  title: string;\n  category: TestStepCategory;\n  location?: Location;\n  boxedStack?: StackFrame[];\n  steps: TestStepInternal[];\n  endWallTime?: number;\n  apiName?: string;\n  params?: Record<string, any>;\n  error?: TestInfoErrorImpl;\n  infectParentStepsWithError?: boolean;\n  box?: boolean;\n}\n\ntype SnapshotNames = {\n  lastAnonymousSnapshotIndex: number;\n  lastNamedSnapshotIndex: { [key: string]: number };\n};\n\nexport class TestInfoImpl implements TestInfo {\n  private _onStepBegin: (payload: StepBeginPayload) => void;\n  private _onStepEnd: (payload: StepEndPayload) => void;\n  private _onAttach: (payload: AttachmentPayload) => void;\n  private _snapshotNames: SnapshotNames = { lastAnonymousSnapshotIndex: 0, lastNamedSnapshotIndex: {} };\n  private _ariaSnapshotNames: SnapshotNames = { lastAnonymousSnapshotIndex: 0, lastNamedSnapshotIndex: {} };\n  readonly _timeoutManager: TimeoutManager;\n  readonly _startTime: number;\n  readonly _startWallTime: number;\n  readonly _tracing: TestTracing;\n  readonly _uniqueSymbol;\n\n  _wasInterrupted = false;\n  _lastStepId = 0;\n  private readonly _requireFile: string;\n  readonly _projectInternal: FullProjectInternal;\n  readonly _configInternal: FullConfigInternal;\n  private readonly _steps: TestStepInternal[] = [];\n  private readonly _stepMap = new Map<string, TestStepInternal>();\n  _onDidFinishTestFunction: (() => Promise<void>) | undefined;\n  _hasNonRetriableError = false;\n  _hasUnhandledError = false;\n  _allowSkips = false;\n\n  // ------------ TestInfo fields ------------\n  readonly testId: string;\n  readonly repeatEachIndex: number;\n  readonly retry: number;\n  readonly workerIndex: number;\n  readonly parallelIndex: number;\n  readonly project: FullProject;\n  readonly config: FullConfig;\n  readonly title: string;\n  readonly titlePath: string[];\n  readonly file: string;\n  readonly line: number;\n  readonly tags: string[];\n  readonly column: number;\n  readonly fn: Function;\n  expectedStatus: TestStatus;\n  duration: number = 0;\n  readonly annotations: TestAnnotation[] = [];\n  readonly attachments: TestInfo['attachments'] = [];\n  status: TestStatus = 'passed';\n  snapshotSuffix: string = '';\n  readonly outputDir: string;\n  readonly snapshotDir: string;\n  errors: TestInfoErrorImpl[] = [];\n  readonly _attachmentsPush: (...items: TestInfo['attachments']) => number;\n\n  get error(): TestInfoErrorImpl | undefined {\n    return this.errors[0];\n  }\n\n  set error(e: TestInfoErrorImpl | undefined) {\n    if (e === undefined)\n      throw new Error('Cannot assign testInfo.error undefined value!');\n    this.errors[0] = e;\n  }\n\n  get timeout(): number {\n    return this._timeoutManager.defaultSlot().timeout;\n  }\n\n  set timeout(timeout: number) {\n    // Ignored.\n  }\n\n  _deadlineForMatcher(timeout: number): { deadline: number, timeoutMessage: string } {\n    const startTime = monotonicTime();\n    const matcherDeadline = timeout ? startTime + timeout : kMaxDeadline;\n    const testDeadline = this._timeoutManager.currentSlotDeadline() - 250;\n    const matcherMessage = `Timeout ${timeout}ms exceeded while waiting on the predicate`;\n    const testMessage = `Test timeout of ${this.timeout}ms exceeded`;\n    return { deadline: Math.min(testDeadline, matcherDeadline), timeoutMessage: testDeadline < matcherDeadline ? testMessage : matcherMessage };\n  }\n\n  static _defaultDeadlineForMatcher(timeout: number): { deadline: any; timeoutMessage: any; } {\n    return { deadline: (timeout ? monotonicTime() + timeout : 0), timeoutMessage: `Timeout ${timeout}ms exceeded while waiting on the predicate` };\n  }\n\n  constructor(\n    configInternal: FullConfigInternal,\n    projectInternal: FullProjectInternal,\n    workerParams: WorkerInitParams,\n    test: TestCase | undefined,\n    retry: number,\n    onStepBegin: (payload: StepBeginPayload) => void,\n    onStepEnd: (payload: StepEndPayload) => void,\n    onAttach: (payload: AttachmentPayload) => void,\n  ) {\n    this.testId = test?.id ?? '';\n    this._onStepBegin = onStepBegin;\n    this._onStepEnd = onStepEnd;\n    this._onAttach = onAttach;\n    this._startTime = monotonicTime();\n    this._startWallTime = Date.now();\n    this._requireFile = test?._requireFile ?? '';\n    this._uniqueSymbol = Symbol('testInfoUniqueSymbol');\n\n    this.repeatEachIndex = workerParams.repeatEachIndex;\n    this.retry = retry;\n    this.workerIndex = workerParams.workerIndex;\n    this.parallelIndex =  workerParams.parallelIndex;\n    this._projectInternal = projectInternal;\n    this.project = projectInternal.project;\n    this._configInternal = configInternal;\n    this.config = configInternal.config;\n    this.title = test?.title ?? '';\n    this.titlePath = test?.titlePath() ?? [];\n    this.file = test?.location.file ?? '';\n    this.line = test?.location.line ?? 0;\n    this.column = test?.location.column ?? 0;\n    this.tags = test?.tags ?? [];\n    this.fn = test?.fn ?? (() => {});\n    this.expectedStatus = test?.expectedStatus ?? 'skipped';\n\n    this._timeoutManager = new TimeoutManager(this.project.timeout);\n    if (configInternal.configCLIOverrides.debug)\n      this._setDebugMode();\n\n    this.outputDir = (() => {\n      const relativeTestFilePath = path.relative(this.project.testDir, this._requireFile.replace(/\\.(spec|test)\\.(js|ts|jsx|tsx|mjs|mts|cjs|cts)$/, ''));\n      const sanitizedRelativePath = relativeTestFilePath.replace(process.platform === 'win32' ? new RegExp('\\\\\\\\', 'g') : new RegExp('/', 'g'), '-');\n      const fullTitleWithoutSpec = this.titlePath.slice(1).join(' ');\n\n      let testOutputDir = trimLongString(sanitizedRelativePath + '-' + sanitizeForFilePath(fullTitleWithoutSpec), windowsFilesystemFriendlyLength);\n      if (projectInternal.id)\n        testOutputDir += '-' + sanitizeForFilePath(projectInternal.id);\n      if (this.retry)\n        testOutputDir += '-retry' + this.retry;\n      if (this.repeatEachIndex)\n        testOutputDir += '-repeat' + this.repeatEachIndex;\n      return path.join(this.project.outputDir, testOutputDir);\n    })();\n\n    this.snapshotDir = (() => {\n      const relativeTestFilePath = path.relative(this.project.testDir, this._requireFile);\n      return path.join(this.project.snapshotDir, relativeTestFilePath + '-snapshots');\n    })();\n\n    this._attachmentsPush = this.attachments.push.bind(this.attachments);\n    this.attachments.push = (...attachments: TestInfo['attachments']) => {\n      for (const a of attachments)\n        this._attach(a, this._parentStep()?.stepId);\n      return this.attachments.length;\n    };\n\n    this._tracing = new TestTracing(this, workerParams.artifactsDir);\n  }\n\n  private _modifier(type: 'skip' | 'fail' | 'fixme' | 'slow', modifierArgs: [arg?: any, description?: string]) {\n    if (typeof modifierArgs[1] === 'function') {\n      throw new Error([\n        'It looks like you are calling test.skip() inside the test and pass a callback.',\n        'Pass a condition instead and optional description instead:',\n        `test('my test', async ({ page, isMobile }) => {`,\n        `  test.skip(isMobile, 'This test is not applicable on mobile');`,\n        `});`,\n      ].join('\\n'));\n    }\n\n    if (modifierArgs.length >= 1 && !modifierArgs[0])\n      return;\n\n    const description = modifierArgs[1];\n    this.annotations.push({ type, description });\n    if (type === 'slow') {\n      this._timeoutManager.slow();\n    } else if (type === 'skip' || type === 'fixme') {\n      this.expectedStatus = 'skipped';\n      throw new TestSkipError('Test is skipped: ' + (description || ''));\n    } else if (type === 'fail') {\n      if (this.expectedStatus !== 'skipped')\n        this.expectedStatus = 'failed';\n    }\n  }\n\n  private _findLastPredefinedStep(steps: TestStepInternal[]): TestStepInternal | undefined {\n    // Find the deepest predefined step that has not finished yet.\n    for (let i = steps.length - 1; i >= 0; i--) {\n      const child = this._findLastPredefinedStep(steps[i].steps);\n      if (child)\n        return child;\n      if ((steps[i].category === 'hook' || steps[i].category === 'fixture') && !steps[i].endWallTime)\n        return steps[i];\n    }\n  }\n\n  private _parentStep() {\n    return currentZone().data<TestStepInternal>('stepZone') ?? this._findLastPredefinedStep(this._steps);\n  }\n\n  _addStep(data: Omit<TestStepInternal, 'complete' | 'stepId' | 'steps' | 'attachmentIndices' | 'info'>, parentStep?: TestStepInternal): TestStepInternal {\n    const stepId = `${data.category}@${++this._lastStepId}`;\n\n    if (data.category === 'hook' || data.category === 'fixture') {\n      // Predefined steps form a fixed hierarchy - use the current one as parent.\n      parentStep = this._findLastPredefinedStep(this._steps);\n    } else {\n      if (!parentStep)\n        parentStep = this._parentStep();\n    }\n\n    const filteredStack = filteredStackTrace(captureRawStack());\n    data.boxedStack = parentStep?.boxedStack;\n    if (!data.boxedStack && data.box) {\n      data.boxedStack = filteredStack.slice(1);\n      data.location = data.location || data.boxedStack[0];\n    }\n    data.location = data.location || filteredStack[0];\n\n    const attachmentIndices: number[] = [];\n    const step: TestStepInternal = {\n      stepId,\n      ...data,\n      steps: [],\n      attachmentIndices,\n      info: new TestStepInfoImpl(this, stepId),\n      complete: result => {\n        if (step.endWallTime)\n          return;\n\n        step.endWallTime = Date.now();\n        if (result.error) {\n          if (typeof result.error === 'object' && !(result.error as any)?.[stepSymbol])\n            (result.error as any)[stepSymbol] = step;\n          const error = testInfoError(result.error);\n          if (data.boxedStack)\n            error.stack = `${error.message}\\n${stringifyStackFrames(data.boxedStack).join('\\n')}`;\n          step.error = error;\n        }\n\n        if (!step.error) {\n          // Soft errors inside try/catch will make the test fail.\n          // In order to locate the failing step, we are marking all the parent\n          // steps as failing unconditionally.\n          for (const childStep of step.steps) {\n            if (childStep.error && childStep.infectParentStepsWithError) {\n              step.error = childStep.error;\n              step.infectParentStepsWithError = true;\n              break;\n            }\n          }\n        }\n\n        const payload: StepEndPayload = {\n          testId: this.testId,\n          stepId,\n          wallTime: step.endWallTime,\n          error: step.error,\n          suggestedRebaseline: result.suggestedRebaseline,\n          annotations: step.info.annotations,\n        };\n        this._onStepEnd(payload);\n        const errorForTrace = step.error ? { name: '', message: step.error.message || '', stack: step.error.stack } : undefined;\n        const attachments = attachmentIndices.map(i => this.attachments[i]);\n        this._tracing.appendAfterActionForStep(stepId, errorForTrace, attachments, step.info.annotations);\n      }\n    };\n    const parentStepList = parentStep ? parentStep.steps : this._steps;\n    parentStepList.push(step);\n    this._stepMap.set(stepId, step);\n    const payload: StepBeginPayload = {\n      testId: this.testId,\n      stepId,\n      parentStepId: parentStep ? parentStep.stepId : undefined,\n      title: data.title,\n      category: data.category,\n      wallTime: Date.now(),\n      location: data.location,\n    };\n    this._onStepBegin(payload);\n    this._tracing.appendBeforeActionForStep(stepId, parentStep?.stepId, {\n      title: data.title,\n      category: data.category,\n      params: data.params,\n      stack: data.location ? [data.location] : []\n    });\n    return step;\n  }\n\n  _interrupt() {\n    // Mark as interrupted so we can ignore TimeoutError thrown by interrupt() call.\n    this._wasInterrupted = true;\n    this._timeoutManager.interrupt();\n    // Do not overwrite existing failure (for example, unhandled rejection) with \"interrupted\".\n    if (this.status === 'passed')\n      this.status = 'interrupted';\n  }\n\n  _failWithError(error: Error | unknown) {\n    if (this.status === 'passed' || this.status === 'skipped')\n      this.status = error instanceof TimeoutManagerError ? 'timedOut' : 'failed';\n    const serialized = testInfoError(error);\n    const step: TestStepInternal | undefined = typeof error === 'object' ? (error as any)?.[stepSymbol] : undefined;\n    if (step && step.boxedStack)\n      serialized.stack = `${(error as Error).name}: ${(error as Error).message}\\n${stringifyStackFrames(step.boxedStack).join('\\n')}`;\n    this.errors.push(serialized);\n    this._tracing.appendForError(serialized);\n  }\n\n  async _runAsStep(stepInfo: { title: string, category: 'hook' | 'fixture', location?: Location }, cb: () => Promise<any>) {\n    const step = this._addStep(stepInfo);\n    try {\n      await cb();\n      step.complete({});\n    } catch (error) {\n      step.complete({ error });\n      throw error;\n    }\n  }\n\n  async _runWithTimeout(runnable: RunnableDescription, cb: () => Promise<any>) {\n    try {\n      await this._timeoutManager.withRunnable(runnable, async () => {\n        try {\n          await cb();\n        } catch (e) {\n          if (this._allowSkips && (e instanceof TestSkipError)) {\n            if (this.status === 'passed')\n              this.status = 'skipped';\n          } else {\n            // Unfortunately, we have to handle user errors and timeout errors differently.\n            // Consider the following scenario:\n            // - locator.click times out\n            // - all steps containing the test function finish with TimeoutManagerError\n            // - test finishes, the page is closed and this triggers locator.click error\n            // - we would like to present the locator.click error to the user\n            // - therefore, we need a try/catch inside the \"run with timeout\" block and capture the error\n            this._failWithError(e);\n          }\n          throw e;\n        }\n      });\n    } catch (error) {\n      // When interrupting, we arrive here with a TimeoutManagerError, but we should not\n      // consider it a timeout.\n      if (!this._wasInterrupted && (error instanceof TimeoutManagerError))\n        this._failWithError(error);\n      throw error;\n    }\n  }\n\n  _isFailure() {\n    return this.status !== 'skipped' && this.status !== this.expectedStatus;\n  }\n\n  _currentHookType() {\n    const type = this._timeoutManager.currentSlotType();\n    return ['beforeAll', 'afterAll', 'beforeEach', 'afterEach'].includes(type) ? type : undefined;\n  }\n\n  _setDebugMode() {\n    this._timeoutManager.setIgnoreTimeouts();\n  }\n\n  // ------------ TestInfo methods ------------\n\n  async attach(name: string, options: { path?: string, body?: string | Buffer, contentType?: string } = {}) {\n    const step = this._addStep({\n      title: name,\n      category: 'test.attach',\n    });\n    this._attach(await normalizeAndSaveAttachment(this.outputPath(), name, options), step.stepId);\n    step.complete({});\n  }\n\n  _attach(attachment: TestInfo['attachments'][0], stepId: string | undefined) {\n    const index = this._attachmentsPush(attachment) - 1;\n    if (stepId) {\n      this._stepMap.get(stepId)!.attachmentIndices.push(index);\n    } else {\n      const callId = `attach@${createGuid()}`;\n      this._tracing.appendBeforeActionForStep(callId, undefined, { title: attachment.name, category: 'test.attach', stack: [] });\n      this._tracing.appendAfterActionForStep(callId, undefined, [attachment]);\n    }\n\n    this._onAttach({\n      testId: this.testId,\n      name: attachment.name,\n      contentType: attachment.contentType,\n      path: attachment.path,\n      body: attachment.body?.toString('base64'),\n      stepId,\n    });\n  }\n\n  outputPath(...pathSegments: string[]){\n    const outputPath = this._getOutputPath(...pathSegments);\n    fs.mkdirSync(this.outputDir, { recursive: true });\n    return outputPath;\n  }\n\n  _getOutputPath(...pathSegments: string[]){\n    const joinedPath = path.join(...pathSegments);\n    const outputPath = getContainedPath(this.outputDir, joinedPath);\n    if (outputPath)\n      return outputPath;\n    throw new Error(`The outputPath is not allowed outside of the parent directory. Please fix the defined path.\\n\\n\\toutputPath: ${joinedPath}`);\n  }\n\n  _fsSanitizedTestName() {\n    const fullTitleWithoutSpec = this.titlePath.slice(1).join(' ');\n    return sanitizeForFilePath(trimLongString(fullTitleWithoutSpec));\n  }\n\n  _resolveSnapshotPaths(kind: 'snapshot' | 'screenshot' | 'aria', name: string | string[] | undefined, updateSnapshotIndex: 'updateSnapshotIndex' | 'dontUpdateSnapshotIndex', anonymousExtension?: string) {\n    // NOTE: snapshot path must not ever change for backwards compatibility!\n\n    const snapshotNames = kind === 'aria' ? this._ariaSnapshotNames : this._snapshotNames;\n    const defaultExtensions = { 'aria': '.aria.yml', 'screenshot': '.png', 'snapshot': '.txt' };\n    const ariaAwareExtname = (filePath: string) => kind === 'aria' && filePath.endsWith('.aria.yml') ? '.aria.yml' : path.extname(filePath);\n\n    let subPath: string;\n    let ext: string;\n    let relativeOutputPath: string;\n\n    if (!name) {\n      // Consider the use case below. We should save actual to different paths, so we use |nextAnonymousSnapshotIndex|.\n      //\n      //   expect.toMatchSnapshot('a.png')\n      //   // noop\n      //   expect.toMatchSnapshot('a.png')\n      const index = snapshotNames.lastAnonymousSnapshotIndex + 1;\n      if (updateSnapshotIndex === 'updateSnapshotIndex')\n        snapshotNames.lastAnonymousSnapshotIndex = index;\n      const fullTitleWithoutSpec = [...this.titlePath.slice(1), index].join(' ');\n      ext = anonymousExtension ?? defaultExtensions[kind];\n      subPath = sanitizeFilePathBeforeExtension(trimLongString(fullTitleWithoutSpec) + ext, ext);\n      // Trim the output file paths more aggressively to avoid hitting Windows filesystem limits.\n      relativeOutputPath = sanitizeFilePathBeforeExtension(trimLongString(fullTitleWithoutSpec, windowsFilesystemFriendlyLength) + ext, ext);\n    } else {\n      if (Array.isArray(name)) {\n        // We intentionally do not sanitize user-provided array of segments,\n        // assuming it is a file system path.\n        // See https://github.com/microsoft/playwright/pull/9156.\n        subPath = path.join(...name);\n        relativeOutputPath = path.join(...name);\n        ext = ariaAwareExtname(subPath);\n      } else {\n        ext = ariaAwareExtname(name);\n        subPath = sanitizeFilePathBeforeExtension(name, ext);\n        // Trim the output file paths more aggressively to avoid hitting Windows filesystem limits.\n        relativeOutputPath = sanitizeFilePathBeforeExtension(trimLongString(name, windowsFilesystemFriendlyLength), ext);\n      }\n      const index = (snapshotNames.lastNamedSnapshotIndex[relativeOutputPath] || 0) + 1;\n      if (updateSnapshotIndex === 'updateSnapshotIndex')\n        snapshotNames.lastNamedSnapshotIndex[relativeOutputPath] = index;\n      if (index > 1)\n        relativeOutputPath = addSuffixToFilePath(relativeOutputPath, `-${index - 1}`);\n    }\n\n    const absoluteSnapshotPath = this._applyPathTemplate(kind, subPath, ext);\n    return { absoluteSnapshotPath, relativeOutputPath };\n  }\n\n  private _applyPathTemplate(kind: 'snapshot' | 'screenshot' | 'aria', relativePath: string, ext: string) {\n    const legacyTemplate = '{snapshotDir}/{testFileDir}/{testFileName}-snapshots/{arg}{-projectName}{-snapshotSuffix}{ext}';\n    let template: string;\n    if (kind === 'screenshot') {\n      template = this._projectInternal.expect?.toHaveScreenshot?.pathTemplate || this._projectInternal.snapshotPathTemplate || legacyTemplate;\n    } else if (kind === 'aria') {\n      const ariaDefaultTemplate = '{snapshotDir}/{testFileDir}/{testFileName}-snapshots/{arg}{ext}';\n      template = this._projectInternal.expect?.toMatchAriaSnapshot?.pathTemplate || this._projectInternal.snapshotPathTemplate || ariaDefaultTemplate;\n    } else {\n      template = this._projectInternal.snapshotPathTemplate || legacyTemplate;\n    }\n\n    const dir = path.dirname(relativePath);\n    const name = path.basename(relativePath, ext);\n    const relativeTestFilePath = path.relative(this.project.testDir, this._requireFile);\n    const parsedRelativeTestFilePath = path.parse(relativeTestFilePath);\n    const projectNamePathSegment = sanitizeForFilePath(this.project.name);\n\n    const snapshotPath = template\n        .replace(/\\{(.)?testDir\\}/g, '$1' + this.project.testDir)\n        .replace(/\\{(.)?snapshotDir\\}/g, '$1' + this.project.snapshotDir)\n        .replace(/\\{(.)?snapshotSuffix\\}/g, this.snapshotSuffix ? '$1' + this.snapshotSuffix : '')\n        .replace(/\\{(.)?testFileDir\\}/g, '$1' + parsedRelativeTestFilePath.dir)\n        .replace(/\\{(.)?platform\\}/g, '$1' + process.platform)\n        .replace(/\\{(.)?projectName\\}/g, projectNamePathSegment ? '$1' + projectNamePathSegment : '')\n        .replace(/\\{(.)?testName\\}/g, '$1' + this._fsSanitizedTestName())\n        .replace(/\\{(.)?testFileName\\}/g, '$1' + parsedRelativeTestFilePath.base)\n        .replace(/\\{(.)?testFilePath\\}/g, '$1' + relativeTestFilePath)\n        .replace(/\\{(.)?arg\\}/g, '$1' + path.join(dir, name))\n        .replace(/\\{(.)?ext\\}/g, ext ? '$1' + ext : '');\n\n    return path.normalize(path.resolve(this._configInternal.configDir, snapshotPath));\n  }\n\n  snapshotPath(...name: string[]): string;\n  snapshotPath(name: string, options: { kind: 'snapshot' | 'screenshot' | 'aria' }): string;\n  snapshotPath(...args: any[]) {\n    let name: string[] = args;\n    let kind: 'snapshot' | 'screenshot' | 'aria' = 'snapshot';\n\n    const options = args[args.length - 1];\n    if (options && typeof options === 'object') {\n      kind = options.kind ?? kind;\n      name = args.slice(0, -1);\n    }\n\n    if (!['snapshot', 'screenshot', 'aria'].includes(kind))\n      throw new Error(`testInfo.snapshotPath: unknown kind \"${kind}\", must be one of \"snapshot\", \"screenshot\" or \"aria\"`);\n\n    // Assume a zero/single path segment corresponds to `toHaveScreenshot(name)`,\n    // while multiple path segments correspond to `toHaveScreenshot([...name])`.\n    return this._resolveSnapshotPaths(kind, name.length <= 1 ? name[0] : name, 'dontUpdateSnapshotIndex').absoluteSnapshotPath;\n  }\n\n  skip(...args: [arg?: any, description?: string]) {\n    this._modifier('skip', args);\n  }\n\n  fixme(...args: [arg?: any, description?: string]) {\n    this._modifier('fixme', args);\n  }\n\n  fail(...args: [arg?: any, description?: string]) {\n    this._modifier('fail', args);\n  }\n\n  slow(...args: [arg?: any, description?: string]) {\n    this._modifier('slow', args);\n  }\n\n  setTimeout(timeout: number) {\n    this._timeoutManager.setTimeout(timeout);\n  }\n}\n\nexport class TestStepInfoImpl implements TestStepInfo {\n  annotations: TestAnnotation[] = [];\n\n  private _testInfo: TestInfoImpl;\n  private _stepId: string;\n\n  constructor(testInfo: TestInfoImpl, stepId: string) {\n    this._testInfo = testInfo;\n    this._stepId = stepId;\n  }\n\n  async _runStepBody<T>(skip: boolean, body: (step: TestStepInfo) => T | Promise<T>) {\n    if (skip) {\n      this.annotations.push({ type: 'skip' });\n      return undefined as T;\n    }\n    try {\n      return await body(this);\n    } catch (e) {\n      if (e instanceof StepSkipError)\n        return undefined as T;\n      throw e;\n    }\n  }\n\n  _attachToStep(attachment: TestInfo['attachments'][0]): void {\n    this._testInfo._attach(attachment, this._stepId);\n  }\n\n  async attach(name: string, options?: { body?: string | Buffer; contentType?: string; path?: string; }): Promise<void> {\n    this._attachToStep(await normalizeAndSaveAttachment(this._testInfo.outputPath(), name, options));\n  }\n\n  skip(...args: unknown[]) {\n    // skip();\n    // skip(condition: boolean, description: string);\n    if (args.length > 0 && !args[0])\n      return;\n    const description = args[1] as (string|undefined);\n    this.annotations.push({ type: 'skip', description });\n    throw new StepSkipError(description);\n  }\n}\n\nexport class TestSkipError extends Error {\n}\n\nexport class StepSkipError extends Error {\n}\n\nconst stepSymbol = Symbol('step');\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { constructURLBasedOnBaseURL, isRegExp, isString, isTextualMimeType, pollAgainstDeadline, serializeExpectedTextValues } from 'playwright-core/lib/utils';\nimport { colors } from 'playwright-core/lib/utils';\n\nimport { callLogText, expectTypes } from '../util';\nimport { toBeTruthy } from './toBeTruthy';\nimport { toEqual } from './toEqual';\nimport { toHaveURLWithPredicate } from './toHaveURL';\nimport { toMatchText } from './toMatchText';\nimport { takeFirst } from '../common/config';\nimport { currentTestInfo } from '../common/globals';\nimport { TestInfoImpl } from '../worker/testInfo';\n\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { TestStepInfoImpl } from '../worker/testInfo';\nimport type { APIResponse, Locator, Page } from 'playwright-core';\nimport type { FrameExpectParams } from 'playwright-core/lib/client/types';\n\nexport type ExpectMatcherStateInternal = ExpectMatcherState & { _stepInfo?: TestStepInfoImpl };\n\nexport interface LocatorEx extends Locator {\n  _expect(expression: string, options: FrameExpectParams): Promise<{ matches: boolean, received?: any, log?: string[], timedOut?: boolean }>;\n}\n\ninterface APIResponseEx extends APIResponse {\n  _fetchLog(): Promise<string[]>;\n}\n\nexport function toBeAttached(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { attached?: boolean, timeout?: number },\n) {\n  const attached = !options || options.attached === undefined || options.attached;\n  const expected = attached ? 'attached' : 'detached';\n  const arg = attached ? '' : '{ attached: false }';\n  return toBeTruthy.call(this, 'toBeAttached', locator, 'Locator', expected, arg, async (isNot, timeout) => {\n    return await locator._expect(attached ? 'to.be.attached' : 'to.be.detached', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeChecked(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { checked?: boolean, indeterminate?: boolean, timeout?: number },\n) {\n  const checked = options?.checked;\n  const indeterminate = options?.indeterminate;\n  const expectedValue = {\n    checked,\n    indeterminate,\n  };\n  let expected: string;\n  let arg: string;\n  if (options?.indeterminate) {\n    expected = 'indeterminate';\n    arg = `{ indeterminate: true }`;\n  } else {\n    expected = options?.checked === false ? 'unchecked' : 'checked';\n    arg = options?.checked === false ? `{ checked: false }` : '';\n  }\n  return toBeTruthy.call(this, 'toBeChecked', locator, 'Locator', expected, arg, async (isNot, timeout) => {\n    return await locator._expect('to.be.checked', { isNot, timeout, expectedValue });\n  }, options);\n}\n\nexport function toBeDisabled(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { timeout?: number },\n) {\n  return toBeTruthy.call(this, 'toBeDisabled', locator, 'Locator', 'disabled', '', async (isNot, timeout) => {\n    return await locator._expect('to.be.disabled', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeEditable(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { editable?: boolean, timeout?: number },\n) {\n  const editable = !options || options.editable === undefined || options.editable;\n  const expected = editable ? 'editable' : 'readOnly';\n  const arg = editable ? '' : '{ editable: false }';\n  return toBeTruthy.call(this, 'toBeEditable', locator, 'Locator', expected, arg, async (isNot, timeout) => {\n    return await locator._expect(editable ? 'to.be.editable' : 'to.be.readonly', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeEmpty(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { timeout?: number },\n) {\n  return toBeTruthy.call(this, 'toBeEmpty', locator, 'Locator', 'empty', '', async (isNot, timeout) => {\n    return await locator._expect('to.be.empty', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeEnabled(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { enabled?: boolean, timeout?: number },\n) {\n  const enabled = !options || options.enabled === undefined || options.enabled;\n  const expected = enabled ? 'enabled' : 'disabled';\n  const arg = enabled ? '' : '{ enabled: false }';\n  return toBeTruthy.call(this, 'toBeEnabled', locator, 'Locator', expected, arg, async (isNot, timeout) => {\n    return await locator._expect(enabled ? 'to.be.enabled' : 'to.be.disabled', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeFocused(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { timeout?: number },\n) {\n  return toBeTruthy.call(this, 'toBeFocused', locator, 'Locator', 'focused', '', async (isNot, timeout) => {\n    return await locator._expect('to.be.focused', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeHidden(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { timeout?: number },\n) {\n  return toBeTruthy.call(this, 'toBeHidden', locator, 'Locator', 'hidden', '', async (isNot, timeout) => {\n    return await locator._expect('to.be.hidden', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeVisible(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { visible?: boolean, timeout?: number },\n) {\n  const visible = !options || options.visible === undefined || options.visible;\n  const expected = visible ? 'visible' : 'hidden';\n  const arg = visible ? '' : '{ visible: false }';\n  return toBeTruthy.call(this, 'toBeVisible', locator, 'Locator', expected, arg, async (isNot, timeout) => {\n    return await locator._expect(visible ? 'to.be.visible' : 'to.be.hidden', { isNot, timeout });\n  }, options);\n}\n\nexport function toBeInViewport(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  options?: { timeout?: number, ratio?: number },\n) {\n  return toBeTruthy.call(this, 'toBeInViewport', locator, 'Locator', 'in viewport', '', async (isNot, timeout) => {\n    return await locator._expect('to.be.in.viewport', { isNot, expectedNumber: options?.ratio, timeout });\n  }, options);\n}\n\nexport function toContainText(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp | (string | RegExp)[],\n  options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {},\n) {\n  if (Array.isArray(expected)) {\n    return toEqual.call(this, 'toContainText', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues(expected, { matchSubstring: true, normalizeWhiteSpace: true, ignoreCase: options.ignoreCase });\n      return await locator._expect('to.contain.text.array', { expectedText, isNot, useInnerText: options.useInnerText, timeout });\n    }, expected, { ...options, contains: true });\n  } else {\n    return toMatchText.call(this, 'toContainText', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues([expected], { matchSubstring: true, normalizeWhiteSpace: true, ignoreCase: options.ignoreCase });\n      return await locator._expect('to.have.text', { expectedText, isNot, useInnerText: options.useInnerText, timeout });\n    }, expected, options);\n  }\n}\n\nexport function toHaveAccessibleDescription(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp,\n  options?: { timeout?: number, ignoreCase?: boolean },\n) {\n  return toMatchText.call(this, 'toHaveAccessibleDescription', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected], { ignoreCase: options?.ignoreCase, normalizeWhiteSpace: true });\n    return await locator._expect('to.have.accessible.description', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveAccessibleName(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp,\n  options?: { timeout?: number, ignoreCase?: boolean },\n) {\n  return toMatchText.call(this, 'toHaveAccessibleName', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected], { ignoreCase: options?.ignoreCase, normalizeWhiteSpace: true });\n    return await locator._expect('to.have.accessible.name', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveAccessibleErrorMessage(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp,\n  options?: { timeout?: number; ignoreCase?: boolean },\n) {\n  return toMatchText.call(this, 'toHaveAccessibleErrorMessage', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected], { ignoreCase: options?.ignoreCase, normalizeWhiteSpace: true });\n    return await locator._expect('to.have.accessible.error.message', { expectedText: expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveAttribute(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  name: string,\n  expected: string | RegExp | undefined | { timeout?: number },\n  options?: { timeout?: number, ignoreCase?: boolean },\n) {\n  if (!options) {\n    // Update params for the case toHaveAttribute(name, options);\n    if (typeof expected === 'object' && !isRegExp(expected)) {\n      options = expected;\n      expected = undefined;\n    }\n  }\n  if (expected === undefined) {\n    return toBeTruthy.call(this, 'toHaveAttribute', locator, 'Locator', 'have attribute', '', async (isNot, timeout) => {\n      return await locator._expect('to.have.attribute', { expressionArg: name, isNot, timeout });\n    }, options);\n  }\n  return toMatchText.call(this, 'toHaveAttribute', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected as (string | RegExp)], { ignoreCase: options?.ignoreCase });\n    return await locator._expect('to.have.attribute.value', { expressionArg: name, expectedText, isNot, timeout });\n  }, expected as (string | RegExp), options);\n}\n\nexport function toHaveClass(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp | (string | RegExp)[],\n  options?: { timeout?: number },\n) {\n  if (Array.isArray(expected)) {\n    return toEqual.call(this, 'toHaveClass', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues(expected);\n      return await locator._expect('to.have.class.array', { expectedText, isNot, timeout });\n    }, expected, options);\n  } else {\n    return toMatchText.call(this, 'toHaveClass', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues([expected]);\n      return await locator._expect('to.have.class', { expectedText, isNot, timeout });\n    }, expected, options);\n  }\n}\n\nexport function toContainClass(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | string[],\n  options?: { timeout?: number },\n) {\n  if (Array.isArray(expected)) {\n    if (expected.some(e => isRegExp(e)))\n      throw new Error(`\"expected\" argument in toContainClass cannot contain RegExp values`);\n    return toEqual.call(this, 'toContainClass', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues(expected);\n      return await locator._expect('to.contain.class.array', { expectedText, isNot, timeout });\n    }, expected, options);\n  } else {\n    if (isRegExp(expected))\n      throw new Error(`\"expected\" argument in toContainClass cannot be a RegExp value`);\n    return toMatchText.call(this, 'toContainClass', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues([expected]);\n      return await locator._expect('to.contain.class', { expectedText, isNot, timeout });\n    }, expected, options);\n  }\n}\n\nexport function toHaveCount(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: number,\n  options?: { timeout?: number },\n) {\n  return toEqual.call(this, 'toHaveCount', locator, 'Locator', async (isNot, timeout) => {\n    return await locator._expect('to.have.count', { expectedNumber: expected, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveCSS(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  name: string,\n  expected: string | RegExp,\n  options?: { timeout?: number },\n) {\n  return toMatchText.call(this, 'toHaveCSS', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected]);\n    return await locator._expect('to.have.css', { expressionArg: name, expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveId(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp,\n  options?: { timeout?: number },\n) {\n  return toMatchText.call(this, 'toHaveId', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected]);\n    return await locator._expect('to.have.id', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveJSProperty(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  name: string,\n  expected: any,\n  options?: { timeout?: number },\n) {\n  return toEqual.call(this, 'toHaveJSProperty', locator, 'Locator', async (isNot, timeout) => {\n    return await locator._expect('to.have.property', { expressionArg: name, expectedValue: expected, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveRole(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string,\n  options?: { timeout?: number, ignoreCase?: boolean },\n) {\n  if (!isString(expected))\n    throw new Error(`\"role\" argument in toHaveRole must be a string`);\n  return toMatchText.call(this, 'toHaveRole', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected]);\n    return await locator._expect('to.have.role', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveText(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp | (string | RegExp)[],\n  options: { timeout?: number, useInnerText?: boolean, ignoreCase?: boolean } = {},\n) {\n  if (Array.isArray(expected)) {\n    return toEqual.call(this, 'toHaveText', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues(expected, { normalizeWhiteSpace: true, ignoreCase: options.ignoreCase });\n      return await locator._expect('to.have.text.array', { expectedText, isNot, useInnerText: options?.useInnerText, timeout });\n    }, expected, options);\n  } else {\n    return toMatchText.call(this, 'toHaveText', locator, 'Locator', async (isNot, timeout) => {\n      const expectedText = serializeExpectedTextValues([expected], { normalizeWhiteSpace: true, ignoreCase: options.ignoreCase });\n      return await locator._expect('to.have.text', { expectedText, isNot, useInnerText: options?.useInnerText, timeout });\n    }, expected, options);\n  }\n}\n\nexport function toHaveValue(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: string | RegExp,\n  options?: { timeout?: number },\n) {\n  return toMatchText.call(this, 'toHaveValue', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected]);\n    return await locator._expect('to.have.value', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveValues(\n  this: ExpectMatcherState,\n  locator: LocatorEx,\n  expected: (string | RegExp)[],\n  options?: { timeout?: number },\n) {\n  return toEqual.call(this, 'toHaveValues', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues(expected);\n    return await locator._expect('to.have.values', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport function toHaveTitle(\n  this: ExpectMatcherState,\n  page: Page,\n  expected: string | RegExp,\n  options: { timeout?: number } = {},\n) {\n  const locator = page.locator(':root') as LocatorEx;\n  return toMatchText.call(this, 'toHaveTitle', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected], { normalizeWhiteSpace: true });\n    return await locator._expect('to.have.title', { expectedText, isNot, timeout });\n  }, expected, { receiverLabel: 'page', ...options });\n}\n\nexport function toHaveURL(\n  this: ExpectMatcherState,\n  page: Page,\n  expected: string | RegExp | ((url: URL) => boolean),\n  options?: { ignoreCase?: boolean; timeout?: number },\n) {\n  // Ports don't support predicates. Keep separate server and client codepaths\n  if (typeof expected === 'function')\n    return toHaveURLWithPredicate.call(this, page, expected, options);\n\n  const baseURL = (page.context() as any)._options.baseURL;\n  expected = typeof expected === 'string' ? constructURLBasedOnBaseURL(baseURL, expected) : expected;\n  const locator = page.locator(':root') as LocatorEx;\n  return toMatchText.call(this, 'toHaveURL', locator, 'Locator', async (isNot, timeout) => {\n    const expectedText = serializeExpectedTextValues([expected], { ignoreCase: options?.ignoreCase });\n    return await locator._expect('to.have.url', { expectedText, isNot, timeout });\n  }, expected, options);\n}\n\nexport async function toBeOK(\n  this: ExpectMatcherState,\n  response: APIResponseEx\n) {\n  const matcherName = 'toBeOK';\n  expectTypes(response, ['APIResponse'], matcherName);\n\n  const contentType = response.headers()['content-type'];\n  const isTextEncoding = contentType && isTextualMimeType(contentType);\n  const [log, text] = (this.isNot === response.ok()) ? await Promise.all([\n    response._fetchLog(),\n    isTextEncoding ? response.text() : null\n  ]) : [];\n\n  const message = () => this.utils.matcherHint(matcherName, undefined, '', { isNot: this.isNot }) +\n    callLogText(log) +\n    (text === null ? '' : `\\nResponse text:\\n${colors.dim(text?.substring(0, 1000) || '')}`);\n\n  const pass = response.ok();\n  return { message, pass };\n}\n\nexport async function toPass(\n  this: ExpectMatcherState,\n  callback: () => any,\n  options: {\n    intervals?: number[];\n    timeout?: number,\n  } = {},\n) {\n  const testInfo = currentTestInfo();\n  const timeout = takeFirst(options.timeout, testInfo?._projectInternal.expect?.toPass?.timeout, 0);\n  const intervals = takeFirst(options.intervals, testInfo?._projectInternal.expect?.toPass?.intervals, [100, 250, 500, 1000]);\n\n  const { deadline, timeoutMessage } = testInfo ? testInfo._deadlineForMatcher(timeout) : TestInfoImpl._defaultDeadlineForMatcher(timeout);\n  const result = await pollAgainstDeadline<Error|undefined>(async () => {\n    if (testInfo && currentTestInfo() !== testInfo)\n      return { continuePolling: false, result: undefined };\n    try {\n      await callback();\n      return { continuePolling: !!this.isNot, result: undefined };\n    } catch (e) {\n      return { continuePolling: !this.isNot, result: e };\n    }\n  }, deadline, intervals);\n\n  if (result.timedOut) {\n    const message = result.result ? [\n      result.result.message,\n      '',\n      `Call Log:`,\n      `- ${timeoutMessage}`,\n    ].join('\\n') : timeoutMessage;\n    return { message: () => message, pass: !!this.isNot };\n  }\n  return { pass: !this.isNot, message: () => '' };\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { escapeTemplateString, isString } from 'playwright-core/lib/utils';\n\nimport {  kNoElementsFoundError, matcherHint } from './matcherHint';\nimport { EXPECTED_COLOR } from '../common/expectBundle';\nimport { callLogText, fileExistsAsync } from '../util';\nimport { printReceivedStringContainExpectedSubstring } from './expect';\nimport { currentTestInfo } from '../common/globals';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { LocatorEx } from './matchers';\nimport type { ExpectMatcherState } from '../../types/test';\nimport type { MatcherReceived } from '@injected/ariaSnapshot';\n\n\ntype ToMatchAriaSnapshotExpected = {\n  name?: string;\n  path?: string;\n  timeout?: number;\n} | string;\n\nexport async function toMatchAriaSnapshot(\n  this: ExpectMatcherState,\n  receiver: LocatorEx,\n  expectedParam?: ToMatchAriaSnapshotExpected,\n  options: { timeout?: number } = {},\n): Promise<MatcherResult<string | RegExp, string>> {\n  const matcherName = 'toMatchAriaSnapshot';\n\n  const testInfo = currentTestInfo();\n  if (!testInfo)\n    throw new Error(`toMatchAriaSnapshot() must be called during the test`);\n\n  if (testInfo._projectInternal.ignoreSnapshots)\n    return { pass: !this.isNot, message: () => '', name: 'toMatchAriaSnapshot', expected: '' };\n\n  const updateSnapshots = testInfo.config.updateSnapshots;\n\n  const matcherOptions = {\n    isNot: this.isNot,\n    promise: this.promise,\n  };\n\n  let expected: string;\n  let timeout: number;\n  let expectedPath: string | undefined;\n  if (isString(expectedParam)) {\n    expected = expectedParam;\n    timeout = options.timeout ?? this.timeout;\n  } else {\n    const legacyPath = testInfo._resolveSnapshotPaths('aria', expectedParam?.name, 'dontUpdateSnapshotIndex', '.yml').absoluteSnapshotPath;\n    expectedPath = testInfo._resolveSnapshotPaths('aria', expectedParam?.name, 'updateSnapshotIndex').absoluteSnapshotPath;\n    // in 1.51, we changed the default template to use .aria.yml extension\n    // for backwards compatibility, we check for the legacy .yml extension\n    if (!(await fileExistsAsync(expectedPath)) && await fileExistsAsync(legacyPath))\n      expectedPath = legacyPath;\n    expected = await fs.promises.readFile(expectedPath, 'utf8').catch(() => '');\n    timeout = expectedParam?.timeout ?? this.timeout;\n  }\n\n  const generateMissingBaseline = updateSnapshots === 'missing' && !expected;\n  if (generateMissingBaseline) {\n    if (this.isNot) {\n      const message = `Matchers using \".not\" can't generate new baselines`;\n      return { pass: this.isNot, message: () => message, name: 'toMatchAriaSnapshot' };\n    } else {\n      // When generating new baseline, run entire pipeline against impossible match.\n      expected = `- none \"Generating new baseline\"`;\n    }\n  }\n\n  expected = unshift(expected);\n  const { matches: pass, received, log, timedOut } = await receiver._expect('to.match.aria', { expectedValue: expected, isNot: this.isNot, timeout });\n  const typedReceived = received as MatcherReceived | typeof kNoElementsFoundError;\n\n  const messagePrefix = matcherHint(this, receiver, matcherName, 'locator', undefined, matcherOptions, timedOut ? timeout : undefined);\n  const notFound = typedReceived === kNoElementsFoundError;\n  if (notFound) {\n    return {\n      pass: this.isNot,\n      message: () => messagePrefix + `Expected: ${this.utils.printExpected(expected)}\\nReceived: ${EXPECTED_COLOR('<element not found>')}` + callLogText(log),\n      name: 'toMatchAriaSnapshot',\n      expected,\n    };\n  }\n\n  const receivedText = typedReceived.raw;\n  const message = () => {\n    if (pass) {\n      if (notFound)\n        return messagePrefix + `Expected: not ${this.utils.printExpected(expected)}\\nReceived: ${receivedText}` + callLogText(log);\n      const printedReceived = printReceivedStringContainExpectedSubstring(receivedText, receivedText.indexOf(expected), expected.length);\n      return messagePrefix + `Expected: not ${this.utils.printExpected(expected)}\\nReceived: ${printedReceived}` + callLogText(log);\n    } else {\n      const labelExpected = `Expected`;\n      if (notFound)\n        return messagePrefix + `${labelExpected}: ${this.utils.printExpected(expected)}\\nReceived: ${receivedText}` + callLogText(log);\n      return messagePrefix + this.utils.printDiffOrStringify(expected, receivedText, labelExpected, 'Received', false) + callLogText(log);\n    }\n  };\n\n  if (!this.isNot) {\n    if ((updateSnapshots === 'all') ||\n        (updateSnapshots === 'changed' && pass === this.isNot) ||\n        generateMissingBaseline) {\n      if (expectedPath) {\n        await fs.promises.mkdir(path.dirname(expectedPath), { recursive: true });\n        await fs.promises.writeFile(expectedPath, typedReceived.regex, 'utf8');\n        const relativePath = path.relative(process.cwd(), expectedPath);\n        if (updateSnapshots === 'missing') {\n          const message = `A snapshot doesn't exist at ${relativePath}, writing actual.`;\n          testInfo._hasNonRetriableError = true;\n          testInfo._failWithError(new Error(message));\n        } else {\n          const message = `A snapshot is generated at ${relativePath}.`;\n          /* eslint-disable no-console */\n          console.log(message);\n        }\n        return { pass: true, message: () => '', name: 'toMatchAriaSnapshot' };\n      } else {\n        const suggestedRebaseline = `\\`\\n${escapeTemplateString(indent(typedReceived.regex, '{indent}  '))}\\n{indent}\\``;\n        if (updateSnapshots === 'missing') {\n          const message = 'A snapshot is not provided, generating new baseline.';\n          testInfo._hasNonRetriableError = true;\n          testInfo._failWithError(new Error(message));\n        }\n        // TODO: ideally, we should return \"pass: true\" here because this matcher passes\n        // when regenerating baselines. However, we can only access suggestedRebaseline in case\n        // of an error, so we fail here and workaround it in the expect implementation.\n        return { pass: false, message: () => '', name: 'toMatchAriaSnapshot', suggestedRebaseline };\n      }\n    }\n  }\n\n  return {\n    name: matcherName,\n    expected,\n    message,\n    pass,\n    actual: received,\n    log,\n    timeout: timedOut ? timeout : undefined,\n  };\n}\n\nfunction unshift(snapshot: string): string {\n  const lines = snapshot.split('\\n');\n  let whitespacePrefixLength = 100;\n  for (const line of lines) {\n    if (!line.trim())\n      continue;\n    const match = line.match(/^(\\s*)/);\n    if (match && match[1].length < whitespacePrefixLength)\n      whitespacePrefixLength = match[1].length;\n  }\n  return lines.filter(t => t.trim()).map(line => line.substring(whitespacePrefixLength)).join('\\n');\n}\n\nfunction indent(snapshot: string, indent: string): string {\n  return snapshot.split('\\n').map(line => indent + line).join('\\n');\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport { compareBuffersOrStrings, getComparator, isString } from 'playwright-core/lib/utils';\nimport { colors } from 'playwright-core/lib/utils';\nimport { mime } from 'playwright-core/lib/utilsBundle';\n\nimport { addSuffixToFilePath, callLogText, expectTypes } from '../util';\nimport {  matcherHint } from './matcherHint';\nimport { currentTestInfo } from '../common/globals';\n\nimport type { MatcherResult } from './matcherHint';\nimport type { ExpectMatcherStateInternal } from './matchers';\nimport type { FullProjectInternal } from '../common/config';\nimport type { TestInfoImpl, TestStepInfoImpl } from '../worker/testInfo';\nimport type { Locator, Page } from 'playwright-core';\nimport type { ExpectScreenshotOptions, Page as PageEx } from 'playwright-core/lib/client/page';\nimport type { Comparator, ImageComparatorOptions } from 'playwright-core/lib/utils';\n\ntype NameOrSegments = string | string[];\n\ntype ImageMatcherResult = MatcherResult<string, string> & { diff?: string };\n\ntype ToHaveScreenshotConfigOptions = NonNullable<NonNullable<FullProjectInternal['expect']>['toHaveScreenshot']> & {\n  _comparator?: string;\n};\n\ntype ToHaveScreenshotOptions = ToHaveScreenshotConfigOptions & {\n  clip?: {\n    x: number;\n    y: number;\n    width: number;\n    height: number;\n  };\n  fullPage?: boolean;\n  mask?: Array<Locator>;\n  maskColor?: string;\n  omitBackground?: boolean;\n  timeout?: number;\n};\n\n// Keep in sync with above (begin).\nconst NonConfigProperties: (keyof ToHaveScreenshotOptions)[] = [\n  'clip',\n  'fullPage',\n  'mask',\n  'maskColor',\n  'omitBackground',\n  'timeout',\n];\n// Keep in sync with above (end).\n\nclass SnapshotHelper {\n  readonly testInfo: TestInfoImpl;\n  readonly attachmentBaseName: string;\n  readonly legacyExpectedPath: string;\n  readonly previousPath: string;\n  readonly expectedPath: string;\n  readonly actualPath: string;\n  readonly diffPath: string;\n  readonly mimeType: string;\n  readonly kind: 'Screenshot'|'Snapshot';\n  readonly updateSnapshots: 'all' | 'changed' | 'missing' | 'none';\n  readonly comparator: Comparator;\n  readonly options: Omit<ToHaveScreenshotOptions, '_comparator'> & { comparator?: string };\n  readonly matcherName: string;\n  readonly locator: Locator | undefined;\n\n  constructor(\n    testInfo: TestInfoImpl,\n    matcherName: 'toMatchSnapshot' | 'toHaveScreenshot',\n    locator: Locator | undefined,\n    anonymousSnapshotExtension: string | undefined,\n    configOptions: ToHaveScreenshotConfigOptions,\n    nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ToHaveScreenshotOptions,\n    optOptions: ToHaveScreenshotOptions,\n  ) {\n    let name: NameOrSegments | undefined;\n    if (Array.isArray(nameOrOptions) || typeof nameOrOptions === 'string') {\n      name = nameOrOptions;\n      this.options = { ...optOptions };\n    } else {\n      const { name: nameFromOptions, ...options } = nameOrOptions;\n      this.options = options;\n      name = nameFromOptions;\n    }\n\n    const resolvedPaths = testInfo._resolveSnapshotPaths(matcherName === 'toHaveScreenshot' ? 'screenshot' : 'snapshot', name, 'updateSnapshotIndex', anonymousSnapshotExtension);\n    this.expectedPath = resolvedPaths.absoluteSnapshotPath;\n    this.attachmentBaseName = resolvedPaths.relativeOutputPath;\n\n    const outputBasePath = testInfo._getOutputPath(resolvedPaths.relativeOutputPath);\n    this.legacyExpectedPath = addSuffixToFilePath(outputBasePath, '-expected');\n    this.previousPath = addSuffixToFilePath(outputBasePath, '-previous');\n    this.actualPath = addSuffixToFilePath(outputBasePath, '-actual');\n    this.diffPath = addSuffixToFilePath(outputBasePath, '-diff');\n\n    const filteredConfigOptions = { ...configOptions };\n    for (const prop of NonConfigProperties)\n      delete (filteredConfigOptions as any)[prop];\n    this.options = {\n      ...filteredConfigOptions,\n      ...this.options,\n    };\n\n    // While comparator is not a part of the public API, it is translated here.\n    if ((this.options as any)._comparator) {\n      this.options.comparator = (this.options as any)._comparator;\n      delete (this.options as any)._comparator;\n    }\n\n    if (this.options.maxDiffPixels !== undefined && this.options.maxDiffPixels < 0)\n      throw new Error('`maxDiffPixels` option value must be non-negative integer');\n\n    if (this.options.maxDiffPixelRatio !== undefined && (this.options.maxDiffPixelRatio < 0 || this.options.maxDiffPixelRatio > 1))\n      throw new Error('`maxDiffPixelRatio` option value must be between 0 and 1');\n\n    this.matcherName = matcherName;\n    this.locator = locator;\n\n    this.updateSnapshots = testInfo.config.updateSnapshots;\n    this.mimeType = mime.getType(path.basename(this.expectedPath)) ?? 'application/octet-string';\n    this.comparator = getComparator(this.mimeType);\n\n    this.testInfo = testInfo;\n    this.kind = this.mimeType.startsWith('image/') ? 'Screenshot' : 'Snapshot';\n  }\n\n  createMatcherResult(message: string, pass: boolean, log?: string[]): ImageMatcherResult {\n    const unfiltered: ImageMatcherResult = {\n      name: this.matcherName,\n      expected: this.expectedPath,\n      actual: this.actualPath,\n      diff: this.diffPath,\n      pass,\n      message: () => message,\n      log,\n    };\n    return Object.fromEntries(Object.entries(unfiltered).filter(([_, v]) => v !== undefined)) as ImageMatcherResult;\n  }\n\n  handleMissingNegated(): ImageMatcherResult {\n    const isWriteMissingMode = this.updateSnapshots !== 'none';\n    const message = `A snapshot doesn't exist at ${this.expectedPath}${isWriteMissingMode ? ', matchers using \".not\" won\\'t write them automatically.' : '.'}`;\n    // NOTE: 'isNot' matcher implies inversed value.\n    return this.createMatcherResult(message, true);\n  }\n\n  handleDifferentNegated(): ImageMatcherResult {\n    // NOTE: 'isNot' matcher implies inversed value.\n    return this.createMatcherResult('', false);\n  }\n\n  handleMatchingNegated(): ImageMatcherResult {\n    const message = [\n      colors.red(`${this.kind} comparison failed:`),\n      '',\n      indent('Expected result should be different from the actual one.', '  '),\n    ].join('\\n');\n    // NOTE: 'isNot' matcher implies inversed value.\n    return this.createMatcherResult(message, true);\n  }\n\n  handleMissing(actual: Buffer | string, step: TestStepInfoImpl | undefined): ImageMatcherResult {\n    const isWriteMissingMode = this.updateSnapshots !== 'none';\n    if (isWriteMissingMode)\n      writeFileSync(this.expectedPath, actual);\n    step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-expected'), contentType: this.mimeType, path: this.expectedPath });\n    writeFileSync(this.actualPath, actual);\n    step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-actual'), contentType: this.mimeType, path: this.actualPath });\n    const message = `A snapshot doesn't exist at ${this.expectedPath}${isWriteMissingMode ? ', writing actual.' : '.'}`;\n    if (this.updateSnapshots === 'all' || this.updateSnapshots === 'changed') {\n      /* eslint-disable no-console */\n      console.log(message);\n      return this.createMatcherResult(message, true);\n    }\n    if (this.updateSnapshots === 'missing') {\n      this.testInfo._hasNonRetriableError = true;\n      this.testInfo._failWithError(new Error(message));\n      return this.createMatcherResult('', true);\n    }\n    return this.createMatcherResult(message, false);\n  }\n\n  handleDifferent(\n    actual: Buffer | string | undefined,\n    expected: Buffer | string | undefined,\n    previous: Buffer | string | undefined,\n    diff: Buffer | string | undefined,\n    header: string,\n    diffError: string,\n    log: string[] | undefined,\n    step: TestStepInfoImpl | undefined): ImageMatcherResult {\n    const output = [`${header}${indent(diffError, '  ')}`];\n    if (expected !== undefined) {\n      // Copy the expectation inside the `test-results/` folder for backwards compatibility,\n      // so that one can upload `test-results/` directory and have all the data inside.\n      writeFileSync(this.legacyExpectedPath, expected);\n      step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-expected'), contentType: this.mimeType, path: this.expectedPath });\n      output.push(`\\nExpected: ${colors.yellow(this.expectedPath)}`);\n    }\n    if (previous !== undefined) {\n      writeFileSync(this.previousPath, previous);\n      step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-previous'), contentType: this.mimeType, path: this.previousPath });\n      output.push(`Previous: ${colors.yellow(this.previousPath)}`);\n    }\n    if (actual !== undefined) {\n      writeFileSync(this.actualPath, actual);\n      step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-actual'), contentType: this.mimeType, path: this.actualPath });\n      output.push(`Received: ${colors.yellow(this.actualPath)}`);\n    }\n    if (diff !== undefined) {\n      writeFileSync(this.diffPath, diff);\n      step?._attachToStep({ name: addSuffixToFilePath(this.attachmentBaseName, '-diff'), contentType: this.mimeType, path: this.diffPath });\n      output.push(`    Diff: ${colors.yellow(this.diffPath)}`);\n    }\n\n    if (log?.length)\n      output.push(callLogText(log));\n    else\n      output.push('');\n\n    return this.createMatcherResult(output.join('\\n'), false, log);\n  }\n\n  handleMatching(): ImageMatcherResult {\n    return this.createMatcherResult('', true);\n  }\n}\n\nexport function toMatchSnapshot(\n  this: ExpectMatcherStateInternal,\n  received: Buffer | string,\n  nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ImageComparatorOptions = {},\n  optOptions: ImageComparatorOptions = {}\n): MatcherResult<NameOrSegments | { name?: NameOrSegments }, string> {\n  const testInfo = currentTestInfo();\n  if (!testInfo)\n    throw new Error(`toMatchSnapshot() must be called during the test`);\n  if (received instanceof Promise)\n    throw new Error('An unresolved Promise was passed to toMatchSnapshot(), make sure to resolve it by adding await to it.');\n\n  if (testInfo._projectInternal.ignoreSnapshots)\n    return { pass: !this.isNot, message: () => '', name: 'toMatchSnapshot', expected: nameOrOptions };\n\n  const configOptions = testInfo._projectInternal.expect?.toMatchSnapshot || {};\n  const helper = new SnapshotHelper(\n      testInfo, 'toMatchSnapshot', undefined, '.' + determineFileExtension(received),\n      configOptions, nameOrOptions, optOptions);\n\n  if (this.isNot) {\n    if (!fs.existsSync(helper.expectedPath))\n      return helper.handleMissingNegated();\n    const isDifferent = !!helper.comparator(received, fs.readFileSync(helper.expectedPath), helper.options);\n    return isDifferent ? helper.handleDifferentNegated() : helper.handleMatchingNegated();\n  }\n\n  if (!fs.existsSync(helper.expectedPath))\n    return helper.handleMissing(received, this._stepInfo);\n\n  const expected = fs.readFileSync(helper.expectedPath);\n\n  if (helper.updateSnapshots === 'all') {\n    if (!compareBuffersOrStrings(received, expected))\n      return helper.handleMatching();\n    writeFileSync(helper.expectedPath, received);\n    /* eslint-disable no-console */\n    console.log(helper.expectedPath + ' is not the same, writing actual.');\n    return helper.createMatcherResult(helper.expectedPath + ' running with --update-snapshots, writing actual.', true);\n  }\n\n  if (helper.updateSnapshots === 'changed') {\n    const result = helper.comparator(received, expected, helper.options);\n    if (!result)\n      return helper.handleMatching();\n    writeFileSync(helper.expectedPath, received);\n    /* eslint-disable no-console */\n    console.log(helper.expectedPath + ' does not match, writing actual.');\n    return helper.createMatcherResult(helper.expectedPath + ' running with --update-snapshots, writing actual.', true);\n  }\n\n  const result = helper.comparator(received, expected, helper.options);\n  if (!result)\n    return helper.handleMatching();\n\n  const receiver = isString(received) ? 'string' : 'Buffer';\n  const header = matcherHint(this, undefined, 'toMatchSnapshot', receiver, undefined, undefined);\n  return helper.handleDifferent(received, expected, undefined, result.diff, header, result.errorMessage, undefined, this._stepInfo);\n}\n\nexport function toHaveScreenshotStepTitle(\n  nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ToHaveScreenshotOptions = {},\n  optOptions: ToHaveScreenshotOptions = {}\n): string {\n  let name: NameOrSegments | undefined;\n  if (typeof nameOrOptions === 'object' && !Array.isArray(nameOrOptions))\n    name = nameOrOptions.name;\n  else\n    name = nameOrOptions;\n  return Array.isArray(name) ? name.join(path.sep) : name || '';\n}\n\nexport async function toHaveScreenshot(\n  this: ExpectMatcherStateInternal,\n  pageOrLocator: Page | Locator,\n  nameOrOptions: NameOrSegments | { name?: NameOrSegments } & ToHaveScreenshotOptions = {},\n  optOptions: ToHaveScreenshotOptions = {}\n): Promise<MatcherResult<NameOrSegments | { name?: NameOrSegments }, string>> {\n  const testInfo = currentTestInfo();\n  if (!testInfo)\n    throw new Error(`toHaveScreenshot() must be called during the test`);\n\n  if (testInfo._projectInternal.ignoreSnapshots)\n    return { pass: !this.isNot, message: () => '', name: 'toHaveScreenshot', expected: nameOrOptions };\n\n  expectTypes(pageOrLocator, ['Page', 'Locator'], 'toHaveScreenshot');\n  const [page, locator] = pageOrLocator.constructor.name === 'Page' ? [(pageOrLocator as PageEx), undefined] : [(pageOrLocator as Locator).page() as PageEx, pageOrLocator as Locator];\n  const configOptions = testInfo._projectInternal.expect?.toHaveScreenshot || {};\n  const helper = new SnapshotHelper(testInfo, 'toHaveScreenshot', locator, undefined, configOptions, nameOrOptions, optOptions);\n  if (!helper.expectedPath.toLowerCase().endsWith('.png'))\n    throw new Error(`Screenshot name \"${path.basename(helper.expectedPath)}\" must have '.png' extension`);\n  expectTypes(pageOrLocator, ['Page', 'Locator'], 'toHaveScreenshot');\n  const style = await loadScreenshotStyles(helper.options.stylePath);\n  const timeout = helper.options.timeout ?? this.timeout;\n  const expectScreenshotOptions: ExpectScreenshotOptions = {\n    locator,\n    animations: helper.options.animations ?? 'disabled',\n    caret: helper.options.caret ?? 'hide',\n    clip: helper.options.clip,\n    fullPage: helper.options.fullPage,\n    mask: helper.options.mask,\n    maskColor: helper.options.maskColor,\n    omitBackground: helper.options.omitBackground,\n    scale: helper.options.scale ?? 'css',\n    style,\n    isNot: !!this.isNot,\n    timeout,\n    comparator: helper.options.comparator,\n    maxDiffPixels: helper.options.maxDiffPixels,\n    maxDiffPixelRatio: helper.options.maxDiffPixelRatio,\n    threshold: helper.options.threshold,\n  };\n\n  const hasSnapshot = fs.existsSync(helper.expectedPath);\n  if (this.isNot) {\n    if (!hasSnapshot)\n      return helper.handleMissingNegated();\n\n    // Having `errorMessage` means we timed out while waiting\n    // for screenshots not to match, so screenshots\n    // are actually the same in the end.\n    expectScreenshotOptions.expected = await fs.promises.readFile(helper.expectedPath);\n    const isDifferent = !(await page._expectScreenshot(expectScreenshotOptions)).errorMessage;\n    return isDifferent ? helper.handleDifferentNegated() : helper.handleMatchingNegated();\n  }\n\n  // Fast path: there's no screenshot and we don't intend to update it.\n  if (helper.updateSnapshots === 'none' && !hasSnapshot)\n    return helper.createMatcherResult(`A snapshot doesn't exist at ${helper.expectedPath}.`, false);\n\n  const receiver = locator ? 'locator' : 'page';\n  if (!hasSnapshot) {\n    // Regenerate a new screenshot by waiting until two screenshots are the same.\n    const { actual, previous, diff, errorMessage, log, timedOut } = await page._expectScreenshot(expectScreenshotOptions);\n    // We tried re-generating new snapshot but failed.\n    // This can be due to e.g. spinning animation, so we want to show it as a diff.\n    if (errorMessage) {\n      const header = matcherHint(this, locator, 'toHaveScreenshot', receiver, undefined, undefined, timedOut ? timeout : undefined);\n      return helper.handleDifferent(actual, undefined, previous, diff, header, errorMessage, log, this._stepInfo);\n    }\n\n    // We successfully generated new screenshot.\n    return helper.handleMissing(actual!, this._stepInfo);\n  }\n\n  // General case:\n  // - snapshot exists\n  // - regular matcher (i.e. not a `.not`)\n  const expected = await fs.promises.readFile(helper.expectedPath);\n  expectScreenshotOptions.expected = helper.updateSnapshots === 'all' ? undefined : expected;\n\n  const { actual, previous, diff, errorMessage, log, timedOut } = await page._expectScreenshot(expectScreenshotOptions);\n  const writeFiles = () => {\n    writeFileSync(helper.expectedPath, actual!);\n    writeFileSync(helper.actualPath, actual!);\n    /* eslint-disable no-console */\n    console.log(helper.expectedPath + ' is re-generated, writing actual.');\n    return helper.createMatcherResult(helper.expectedPath + ' running with --update-snapshots, writing actual.', true);\n  };\n\n  if (!errorMessage) {\n    // Screenshot is matching, but is not necessarily the same as the expected.\n    if (helper.updateSnapshots === 'all' && actual && compareBuffersOrStrings(actual, expected)) {\n      console.log(helper.expectedPath + ' is re-generated, writing actual.');\n      return writeFiles();\n    }\n    return helper.handleMatching();\n  }\n\n  if (helper.updateSnapshots === 'changed' || helper.updateSnapshots === 'all')\n    return writeFiles();\n\n  const header = matcherHint(this, undefined, 'toHaveScreenshot', receiver, undefined, undefined, timedOut ? timeout : undefined);\n  return helper.handleDifferent(actual, expectScreenshotOptions.expected, previous, diff, header, errorMessage, log, this._stepInfo);\n}\n\nfunction writeFileSync(aPath: string, content: Buffer | string) {\n  fs.mkdirSync(path.dirname(aPath), { recursive: true });\n  fs.writeFileSync(aPath, content);\n}\n\nfunction indent(lines: string, tab: string) {\n  return lines.replace(/^(?=.+$)/gm, tab);\n}\n\nfunction determineFileExtension(file: string | Buffer): string {\n  if (typeof file === 'string')\n    return 'txt';\n  if (compareMagicBytes(file, [0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]))\n    return 'png';\n  if (compareMagicBytes(file, [0xff, 0xd8, 0xff]))\n    return 'jpg';\n  return 'dat';\n}\n\nfunction compareMagicBytes(file: Buffer, magicBytes: number[]): boolean {\n  return Buffer.compare(Buffer.from(magicBytes), file.slice(0, magicBytes.length)) === 0;\n}\n\nasync function loadScreenshotStyles(stylePath?: string | string[]): Promise<string | undefined> {\n  if (!stylePath)\n    return;\n\n  const stylePaths = Array.isArray(stylePath) ? stylePath : [stylePath];\n  const styles = await Promise.all(stylePaths.map(async stylePath => {\n    const text = await fs.promises.readFile(stylePath, 'utf8');\n    return text.trim();\n  }));\n  return styles.join('\\n').trim() || undefined;\n}\n","/**\n * Copyright Microsoft Corporation. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  captureRawStack,\n  createGuid,\n  currentZone,\n  isString,\n  pollAgainstDeadline } from 'playwright-core/lib/utils';\n\nimport { ExpectError, isJestError } from './matcherHint';\nimport {\n  toBeAttached,\n  toBeChecked,\n  toBeDisabled,\n  toBeEditable,\n  toBeEmpty,\n  toBeEnabled,\n  toBeFocused,\n  toBeHidden,\n  toBeInViewport,\n  toBeOK,\n  toBeVisible,\n  toContainClass,\n  toContainText,\n  toHaveAccessibleDescription,\n  toHaveAccessibleErrorMessage,\n  toHaveAccessibleName,\n  toHaveAttribute,\n  toHaveCSS,\n  toHaveClass,\n  toHaveCount,\n  toHaveId,\n  toHaveJSProperty,\n  toHaveRole,\n  toHaveText,\n  toHaveTitle,\n  toHaveURL,\n  toHaveValue,\n  toHaveValues,\n  toPass\n} from './matchers';\nimport { toMatchAriaSnapshot } from './toMatchAriaSnapshot';\nimport { toHaveScreenshot, toHaveScreenshotStepTitle, toMatchSnapshot } from './toMatchSnapshot';\nimport {\n  INVERTED_COLOR,\n  RECEIVED_COLOR,\n  expect as expectLibrary,\n  printReceived,\n} from '../common/expectBundle';\nimport { currentTestInfo } from '../common/globals';\nimport { filteredStackTrace } from '../util';\nimport { TestInfoImpl } from '../worker/testInfo';\n\nimport type { ExpectMatcherStateInternal } from './matchers';\nimport type { Expect } from '../../types/test';\nimport type { TestStepInfoImpl } from '../worker/testInfo';\nimport type { TestStepCategory } from '../util';\n\n\n// #region\n// Mirrored from https://github.com/facebook/jest/blob/f13abff8df9a0e1148baf3584bcde6d1b479edc7/packages/expect/src/print.ts\n/**\n * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.\n *\n * This source code is licensed under the MIT license found here\n * https://github.com/facebook/jest/blob/1547740bbc26400d69f4576bf35645163e942829/LICENSE\n */\n\n// Format substring but do not enclose in double quote marks.\n// The replacement is compatible with pretty-format package.\nconst printSubstring = (val: string): string => val.replace(/\"|\\\\/g, '\\\\$&');\n\nexport const printReceivedStringContainExpectedSubstring = (\n  received: string,\n  start: number,\n  length: number, // not end\n): string =>\n  RECEIVED_COLOR(\n      '\"' +\n      printSubstring(received.slice(0, start)) +\n      INVERTED_COLOR(printSubstring(received.slice(start, start + length))) +\n      printSubstring(received.slice(start + length)) +\n      '\"',\n  );\n\nexport const printReceivedStringContainExpectedResult = (\n  received: string,\n  result: RegExpExecArray | null,\n): string =>\n  result === null\n    ? printReceived(received)\n    : printReceivedStringContainExpectedSubstring(\n        received,\n        result.index,\n        result[0].length,\n    );\n\n// #endregion\n\ntype ExpectMessage = string | { message?: string };\n\nfunction createMatchers(actual: unknown, info: ExpectMetaInfo, prefix: string[]): any {\n  return new Proxy(expectLibrary(actual), new ExpectMetaInfoProxyHandler(info, prefix));\n}\n\nconst userMatchersSymbol = Symbol('userMatchers');\n\nfunction qualifiedMatcherName(qualifier: string[], matcherName: string) {\n  return qualifier.join(':') + '$' + matcherName;\n}\n\nfunction createExpect(info: ExpectMetaInfo, prefix: string[], userMatchers: Record<string, Function>) {\n  const expectInstance: Expect<{}> = new Proxy(expectLibrary, {\n    apply: function(target: any, thisArg: any, argumentsList: [unknown, ExpectMessage?]) {\n      const [actual, messageOrOptions] = argumentsList;\n      const message = isString(messageOrOptions) ? messageOrOptions : messageOrOptions?.message || info.message;\n      const newInfo = { ...info, message };\n      if (newInfo.poll) {\n        if (typeof actual !== 'function')\n          throw new Error('`expect.poll()` accepts only function as a first argument');\n        newInfo.poll.generator = actual as any;\n      }\n      return createMatchers(actual, newInfo, prefix);\n    },\n\n    get: function(target: any, property: string | typeof userMatchersSymbol) {\n      if (property === 'configure')\n        return configure;\n\n      if (property === 'extend') {\n        return (matchers: any) => {\n          const qualifier = [...prefix, createGuid()];\n\n          const wrappedMatchers: any = {};\n          for (const [name, matcher] of Object.entries(matchers)) {\n            wrappedMatchers[name] = wrapPlaywrightMatcherToPassNiceThis(matcher);\n            const key = qualifiedMatcherName(qualifier, name);\n            wrappedMatchers[key] = wrappedMatchers[name];\n            Object.defineProperty(wrappedMatchers[key], 'name', { value: name });\n          }\n          expectLibrary.extend(wrappedMatchers);\n          return createExpect(info, qualifier, { ...userMatchers, ...matchers });\n        };\n      }\n\n      if (property === 'soft') {\n        return (actual: unknown, messageOrOptions?: ExpectMessage) => {\n          return configure({ soft: true })(actual, messageOrOptions) as any;\n        };\n      }\n\n      if (property === userMatchersSymbol)\n        return userMatchers;\n\n      if (property === 'poll') {\n        return (actual: unknown, messageOrOptions?: ExpectMessage & { timeout?: number, intervals?: number[] }) => {\n          const poll = isString(messageOrOptions) ? {} : messageOrOptions || {};\n          return configure({ _poll: poll })(actual, messageOrOptions) as any;\n        };\n      }\n      return (expectLibrary as any)[property];\n    },\n  });\n\n  const configure = (configuration: { message?: string, timeout?: number, soft?: boolean, _poll?: boolean | { timeout?: number, intervals?: number[] } }) => {\n    const newInfo = { ...info };\n    if ('message' in configuration)\n      newInfo.message = configuration.message;\n    if ('timeout' in configuration)\n      newInfo.timeout = configuration.timeout;\n    if ('soft' in configuration)\n      newInfo.isSoft = configuration.soft;\n    if ('_poll' in configuration) {\n      newInfo.poll = configuration._poll ? { ...info.poll, generator: () => {} } : undefined;\n      if (typeof configuration._poll === 'object') {\n        newInfo.poll!.timeout = configuration._poll.timeout ?? newInfo.poll!.timeout;\n        newInfo.poll!.intervals = configuration._poll.intervals ?? newInfo.poll!.intervals;\n      }\n    }\n    return createExpect(newInfo, prefix, userMatchers);\n  };\n\n  return expectInstance;\n}\n\n// Expect wraps matchers, so there is no way to pass this information to the raw Playwright matcher.\n// Rely on sync call sequence to seed each matcher call with the context.\ntype MatcherCallContext = {\n  expectInfo: ExpectMetaInfo;\n  testInfo: TestInfoImpl | null;\n  step?: TestStepInfoImpl;\n};\n\nlet matcherCallContext: MatcherCallContext | undefined;\n\nfunction setMatcherCallContext(context: MatcherCallContext) {\n  matcherCallContext = context;\n}\n\nfunction takeMatcherCallContext(): MatcherCallContext | undefined {\n  try {\n    return matcherCallContext;\n  } finally {\n    // Any subsequent matcher following the first is assumed to be an unsupported legacy asymmetric matcher.\n    // Lacking call context in these scenarios is not particularly important.\n    matcherCallContext = undefined;\n  }\n}\n\nconst defaultExpectTimeout = 5000;\n\nfunction wrapPlaywrightMatcherToPassNiceThis(matcher: any) {\n  return function(this: any, ...args: any[]) {\n    const { isNot, promise, utils } = this;\n    const context = takeMatcherCallContext();\n    const timeout = context?.expectInfo.timeout ?? context?.testInfo?._projectInternal?.expect?.timeout ?? defaultExpectTimeout;\n    const newThis: ExpectMatcherStateInternal = {\n      isNot,\n      promise,\n      utils,\n      timeout,\n      _stepInfo: context?.step,\n    };\n    (newThis as any).equals = throwUnsupportedExpectMatcherError;\n    return matcher.call(newThis, ...args);\n  };\n}\n\nfunction throwUnsupportedExpectMatcherError() {\n  throw new Error('It looks like you are using custom expect matchers that are not compatible with Playwright. See https://aka.ms/playwright/expect-compatibility');\n}\n\nexpectLibrary.setState({ expand: false });\n\nconst customAsyncMatchers = {\n  toBeAttached,\n  toBeChecked,\n  toBeDisabled,\n  toBeEditable,\n  toBeEmpty,\n  toBeEnabled,\n  toBeFocused,\n  toBeHidden,\n  toBeInViewport,\n  toBeOK,\n  toBeVisible,\n  toContainText,\n  toContainClass,\n  toHaveAccessibleDescription,\n  toHaveAccessibleName,\n  toHaveAccessibleErrorMessage,\n  toHaveAttribute,\n  toHaveClass,\n  toHaveCount,\n  toHaveCSS,\n  toHaveId,\n  toHaveJSProperty,\n  toHaveRole,\n  toHaveText,\n  toHaveTitle,\n  toHaveURL,\n  toHaveValue,\n  toHaveValues,\n  toHaveScreenshot,\n  toMatchAriaSnapshot,\n  toPass,\n};\n\nconst customMatchers = {\n  ...customAsyncMatchers,\n  toMatchSnapshot,\n};\n\ntype Generator = () => any;\n\ntype ExpectMetaInfo = {\n  message?: string;\n  isNot?: boolean;\n  isSoft?: boolean;\n  poll?: {\n    timeout?: number;\n    intervals?: number[];\n    generator: Generator;\n  };\n  timeout?: number;\n};\n\nclass ExpectMetaInfoProxyHandler implements ProxyHandler<any> {\n  private _info: ExpectMetaInfo;\n  private _prefix: string[];\n\n  constructor(info: ExpectMetaInfo, prefix: string[]) {\n    this._info = { ...info };\n    this._prefix = prefix;\n  }\n\n  get(target: Object, matcherName: string | symbol, receiver: any): any {\n    let matcher = Reflect.get(target, matcherName, receiver);\n    if (typeof matcherName !== 'string')\n      return matcher;\n\n    let resolvedMatcherName = matcherName;\n    for (let i = this._prefix.length; i > 0; i--) {\n      const qualifiedName = qualifiedMatcherName(this._prefix.slice(0, i), matcherName);\n      if (Reflect.has(target, qualifiedName)) {\n        matcher = Reflect.get(target, qualifiedName, receiver);\n        resolvedMatcherName = qualifiedName;\n        break;\n      }\n    }\n\n    if (matcher === undefined)\n      throw new Error(`expect: Property '${matcherName}' not found.`);\n    if (typeof matcher !== 'function') {\n      if (matcherName === 'not')\n        this._info.isNot = !this._info.isNot;\n      return new Proxy(matcher, this);\n    }\n    if (this._info.poll) {\n      if ((customAsyncMatchers as any)[matcherName] || matcherName === 'resolves' || matcherName === 'rejects')\n        throw new Error(`\\`expect.poll()\\` does not support \"${matcherName}\" matcher.`);\n      matcher = (...args: any[]) => pollMatcher(resolvedMatcherName, this._info, this._prefix, ...args);\n    }\n    return (...args: any[]) => {\n      const testInfo = currentTestInfo();\n      setMatcherCallContext({ expectInfo: this._info, testInfo });\n      if (!testInfo)\n        return matcher.call(target, ...args);\n\n      const customMessage = this._info.message || '';\n      const argsSuffix = computeArgsSuffix(matcherName, args);\n\n      const defaultTitle = `${this._info.poll ? 'poll ' : ''}${this._info.isSoft ? 'soft ' : ''}${this._info.isNot ? 'not ' : ''}${matcherName}${argsSuffix}`;\n      const title = customMessage || defaultTitle;\n      const apiName = `expect${this._info.poll ? '.poll ' : ''}${this._info.isSoft ? '.soft ' : ''}${this._info.isNot ? '.not' : ''}.${matcherName}${argsSuffix}`;\n\n      // This looks like it is unnecessary, but it isn't - we need to filter\n      // out all the frames that belong to the test runner from caught runtime errors.\n      const stackFrames = filteredStackTrace(captureRawStack());\n      const category = matcherName === 'toPass' || this._info.poll ? 'test.step' : 'expect' as TestStepCategory;\n      const formattedTitle = category === 'expect' ? title : `Expect \"${title}\"`;\n\n      // toPass and poll matchers can contain other steps, expects and API calls,\n      // so they behave like a retriable step.\n      const stepInfo = {\n        category,\n        apiName,\n        title: formattedTitle,\n        params: args[0] ? { expected: args[0] } : undefined,\n        infectParentStepsWithError: this._info.isSoft,\n      };\n\n      const step = testInfo._addStep(stepInfo);\n\n      const reportStepError = (e: Error | unknown) => {\n        const jestError = isJestError(e) ? e : null;\n        const error = jestError ? new ExpectError(jestError, customMessage, stackFrames) : e;\n        if (jestError?.matcherResult.suggestedRebaseline) {\n          // NOTE: this is a workaround for the fact that we can't pass the suggested rebaseline\n          // for passing matchers. See toMatchAriaSnapshot for a counterpart.\n          step.complete({ suggestedRebaseline: jestError?.matcherResult.suggestedRebaseline });\n          return;\n        }\n        step.complete({ error });\n        if (this._info.isSoft)\n          testInfo._failWithError(error);\n        else\n          throw error;\n      };\n\n      const finalizer = () => {\n        step.complete({});\n      };\n\n      try {\n        setMatcherCallContext({ expectInfo: this._info, testInfo, step: step.info });\n        const callback = () => matcher.call(target, ...args);\n        const result = currentZone().with('stepZone', step).run(callback);\n        if (result instanceof Promise)\n          return result.then(finalizer).catch(reportStepError);\n        finalizer();\n        return result;\n      } catch (e) {\n        reportStepError(e);\n      }\n    };\n  }\n}\n\nasync function pollMatcher(qualifiedMatcherName: string, info: ExpectMetaInfo, prefix: string[], ...args: any[]) {\n  const testInfo = currentTestInfo();\n  const poll = info.poll!;\n  const timeout = poll.timeout ?? info.timeout ?? testInfo?._projectInternal?.expect?.timeout ?? defaultExpectTimeout;\n  const { deadline, timeoutMessage } = testInfo ? testInfo._deadlineForMatcher(timeout) : TestInfoImpl._defaultDeadlineForMatcher(timeout);\n\n  const result = await pollAgainstDeadline<Error|undefined>(async () => {\n    if (testInfo && currentTestInfo() !== testInfo)\n      return { continuePolling: false, result: undefined };\n\n    const innerInfo: ExpectMetaInfo = {\n      ...info,\n      isSoft: false, // soft is outside of poll, not inside\n      poll: undefined,\n    };\n    const value = await poll.generator();\n    try {\n      let matchers = createMatchers(value, innerInfo, prefix);\n      if (info.isNot)\n        matchers = matchers.not;\n      matchers[qualifiedMatcherName](...args);\n      return { continuePolling: false, result: undefined };\n    } catch (error) {\n      return { continuePolling: true, result: error };\n    }\n  }, deadline, poll.intervals ?? [100, 250, 500, 1000]);\n\n  if (result.timedOut) {\n    const message = result.result ? [\n      result.result.message,\n      '',\n      `Call Log:`,\n      `- ${timeoutMessage}`,\n    ].join('\\n') : timeoutMessage;\n\n    throw new Error(message);\n  }\n}\n\nfunction computeArgsSuffix(matcherName: string, args: any[]) {\n  let value = '';\n  if (matcherName === 'toHaveScreenshot')\n    value = toHaveScreenshotStepTitle(...args);\n  return value ? `(${value})` : '';\n}\n\nexport const expect: Expect<{}> = createExpect({}, [], {}).extend(customMatchers);\n\nexport function mergeExpects(...expects: any[]) {\n  let merged = expect;\n  for (const e of expects) {\n    const internals = e[userMatchersSymbol];\n    if (!internals) // non-playwright expects mutate the global expect, so we don't need to do anything special\n      continue;\n    merged = merged.extend(internals);\n  }\n  return merged;\n}\n","import type {\n  PluginAPI,\n  PluginObject,\n  PluginPass,\n  PresetAPI,\n  PresetObject,\n} from \"@babel/core\";\n\ntype APIPolyfillFactory<T extends keyof PluginAPI> = (\n  api: PluginAPI,\n) => PluginAPI[T];\n\ntype APIPolyfills = {\n  assertVersion: APIPolyfillFactory<\"assertVersion\">;\n};\n\nconst apiPolyfills: APIPolyfills = {\n  // Not supported by Babel 7 and early versions of Babel 7 beta.\n  // It's important that this is polyfilled for older Babel versions\n  // since it's needed to report the version mismatch.\n  assertVersion: (api: PluginAPI) => (range: number | string) => {\n    throwVersionError(range, api.version);\n  },\n};\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(apiPolyfills, {\n    // This is supported starting from Babel 7.13\n    targets: () => (): any => {\n      return {};\n    },\n    // This is supported starting from Babel 7.13\n    assumption: () => (): any => {\n      return undefined;\n    },\n    // This is supported starting from Babel 7.17\n    addExternalDependency: () => () => {},\n  });\n}\n\nexport function declare<State = object, Option = object>(\n  builder: (\n    api: PluginAPI,\n    options: Option,\n    dirname: string,\n  ) => PluginObject<State & PluginPass>,\n): (\n  api: PluginAPI,\n  options: Option,\n  dirname: string,\n) => PluginObject<State & PluginPass> {\n  return (api, options: Option, dirname: string) => {\n    let clonedApi: PluginAPI;\n\n    for (const name of Object.keys(\n      apiPolyfills,\n    ) as (keyof typeof apiPolyfills)[]) {\n      if (api[name]) continue;\n\n      clonedApi ??= copyApiObject(api);\n      clonedApi[name] = apiPolyfills[name](clonedApi);\n    }\n\n    // @ts-expect-error options || {} may not be assigned to Options\n    return builder(clonedApi ?? api, options || {}, dirname);\n  };\n}\n\nexport const declarePreset = declare as <Option = object>(\n  builder: (api: PresetAPI, options: Option, dirname: string) => PresetObject,\n) => (api: PresetAPI, options: Option, dirname: string) => PresetObject;\n\nfunction copyApiObject(api: PluginAPI): PluginAPI {\n  // Babel >= 7 <= beta.41 passed the API as a new object that had\n  // babel/core as the prototype. While slightly faster, it also\n  // means that the Object.assign copy below fails. Rather than\n  // keep complexity, the Babel 6 behavior has been reverted and this\n  // normalizes all that for Babel 7.\n  let proto = null;\n  if (typeof api.version === \"string\" && /^7\\./.test(api.version)) {\n    proto = Object.getPrototypeOf(api);\n    if (\n      proto &&\n      (!Object.hasOwn(proto, \"version\") ||\n        !Object.hasOwn(proto, \"transform\") ||\n        !Object.hasOwn(proto, \"template\") ||\n        !Object.hasOwn(proto, \"types\"))\n    ) {\n      proto = null;\n    }\n  }\n\n  return {\n    ...proto,\n    ...api,\n  };\n}\n\nfunction throwVersionError(range: string | number, version: string) {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n\n  const limit = Error.stackTraceLimit;\n\n  if (typeof limit === \"number\" && limit < 25) {\n    // Bump up the limit if needed so that users are more likely\n    // to be able to see what is calling Babel.\n    Error.stackTraceLimit = 25;\n  }\n\n  let err;\n  if (version.slice(0, 2) === \"7.\") {\n    err = new Error(\n      `Requires Babel \"^7.0.0-beta.41\", but was loaded with \"${version}\". ` +\n        `You'll need to update your @babel/core version.`,\n    );\n  } else {\n    err = new Error(\n      `Requires Babel \"${range}\", but was loaded with \"${version}\". ` +\n        `If you are sure you have a compatible version of @babel/core, ` +\n        `it is likely that something in your build process is loading the ` +\n        `wrong version. Inspect the stack trace of this error to look for ` +\n        `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` +\n        `to see what is calling Babel.`,\n    );\n  }\n\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version,\n    range,\n  } as any);\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  deprecatedAssertSyntax?: boolean;\n}\n\nexport default declare((api, { deprecatedAssertSyntax }: Options) => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.22.0\"));\n\n  if (\n    deprecatedAssertSyntax != null &&\n    typeof deprecatedAssertSyntax !== \"boolean\"\n  ) {\n    throw new Error(\n      \"'deprecatedAssertSyntax' must be a boolean, if specified.\",\n    );\n  }\n\n  return {\n    name: \"syntax-import-attributes\",\n\n    manipulateOptions({ parserOpts, generatorOpts }) {\n      generatorOpts.importAttributesKeyword ??= \"with\";\n\n      const importAssertionsPluginIndex =\n        parserOpts.plugins.indexOf(\"importAssertions\");\n      if (importAssertionsPluginIndex !== -1) {\n        parserOpts.plugins.splice(importAssertionsPluginIndex, 1);\n        deprecatedAssertSyntax = true;\n      }\n\n      if (deprecatedAssertSyntax) {\n        parserOpts.plugins.push(\"deprecatedImportAssert\", [\n          \"importAttributes\",\n          { deprecatedAssertSyntax: true },\n        ]);\n      } else {\n        parserOpts.plugins.push(\"importAttributes\");\n      }\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\n\nexport interface Options {\n  // TODO(Babel 8): Remove\n  legacy?: boolean;\n  // TODO(Babel 8): Remove \"2018-09\", \"2021-12\", '2022-03', '2023-01' and '2023-05'\n  version?:\n    | \"legacy\"\n    | \"2018-09\"\n    | \"2021-12\"\n    | \"2022-03\"\n    | \"2023-01\"\n    | \"2023-05\"\n    | \"2023-11\";\n  // TODO(Babel 8): Remove\n  decoratorsBeforeExport?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  let { version } = options;\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (version === undefined) {\n      throw new Error(\n        \"The decorators plugin requires a 'version' option, whose value must be one of: \" +\n          \"'2023-11', '2023-05', '2023-01', '2022-03', '2021-12', '2018-09', or 'legacy'.\",\n      );\n    }\n    if (\n      version !== \"2023-11\" &&\n      version !== \"2023-05\" &&\n      version !== \"2023-01\" &&\n      version !== \"2022-03\" &&\n      version !== \"2021-12\" &&\n      version !== \"legacy\"\n    ) {\n      throw new Error(\"Unsupported decorators version: \" + version);\n    }\n    if (options.legacy !== undefined) {\n      throw new Error(\n        `The .legacy option has been removed in Babel 8. Use .version: \"legacy\" instead.`,\n      );\n    }\n    if (options.decoratorsBeforeExport !== undefined) {\n      throw new Error(\n        `The .decoratorsBeforeExport option has been removed in Babel 8.`,\n      );\n    }\n  } else {\n    const { legacy } = options;\n\n    if (legacy !== undefined) {\n      if (typeof legacy !== \"boolean\") {\n        throw new Error(\".legacy must be a boolean.\");\n      }\n      if (version !== undefined) {\n        throw new Error(\n          \"You can either use the .legacy or the .version option, not both.\",\n        );\n      }\n    }\n\n    if (version === undefined) {\n      version = legacy ? \"legacy\" : \"2018-09\";\n    } else if (\n      version !== \"2023-11\" &&\n      version !== \"2023-05\" &&\n      version !== \"2023-01\" &&\n      version !== \"2022-03\" &&\n      version !== \"2021-12\" &&\n      version !== \"2018-09\" &&\n      version !== \"legacy\"\n    ) {\n      // Fallback to print the invalid version option regardless of the type\n      // eslint-disable-next-line @typescript-eslint/restrict-plus-operands\n      throw new Error(\"Unsupported decorators version: \" + version);\n    }\n\n    // eslint-disable-next-line no-var\n    var { decoratorsBeforeExport } = options;\n    if (decoratorsBeforeExport === undefined) {\n      if (version === \"2021-12\" || version === \"2022-03\") {\n        decoratorsBeforeExport = false;\n      } else if (version === \"2018-09\") {\n        throw new Error(\n          \"The decorators plugin, when .version is '2018-09' or not specified,\" +\n            \" requires a 'decoratorsBeforeExport' option, whose value must be a boolean.\",\n        );\n      }\n    } else {\n      if (\n        version === \"legacy\" ||\n        version === \"2022-03\" ||\n        version === \"2023-01\"\n      ) {\n        throw new Error(\n          `'decoratorsBeforeExport' can't be used with ${version} decorators.`,\n        );\n      }\n      if (typeof decoratorsBeforeExport !== \"boolean\") {\n        throw new Error(\"'decoratorsBeforeExport' must be a boolean.\");\n      }\n    }\n  }\n\n  return {\n    name: \"syntax-decorators\",\n\n    manipulateOptions({ generatorOpts }, parserOpts) {\n      if (version === \"legacy\") {\n        parserOpts.plugins.push(\"decorators-legacy\");\n      } else if (process.env.BABEL_8_BREAKING) {\n        parserOpts.plugins.push(\n          [\"decorators\", { allowCallParenthesized: false }],\n          \"decoratorAutoAccessors\",\n        );\n      } else {\n        if (\n          version === \"2023-01\" ||\n          version === \"2023-05\" ||\n          version === \"2023-11\"\n        ) {\n          parserOpts.plugins.push(\n            [\"decorators\", { allowCallParenthesized: false }],\n            \"decoratorAutoAccessors\",\n          );\n        } else if (version === \"2022-03\") {\n          parserOpts.plugins.push(\n            [\n              \"decorators\",\n              { decoratorsBeforeExport: false, allowCallParenthesized: false },\n            ],\n            \"decoratorAutoAccessors\",\n          );\n        } else if (version === \"2021-12\") {\n          parserOpts.plugins.push(\n            [\"decorators\", { decoratorsBeforeExport }],\n            \"decoratorAutoAccessors\",\n          );\n          generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;\n        } else if (version === \"2018-09\") {\n          parserOpts.plugins.push([\"decorators\", { decoratorsBeforeExport }]);\n          generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;\n        }\n      }\n    },\n  };\n});\n","export default function shallowEqual<T extends object>(\n  actual: object,\n  expected: T,\n): actual is T {\n  const keys = Object.keys(expected) as (keyof T)[];\n\n  for (const key of keys) {\n    if (\n      // @ts-expect-error maybe we should check whether key exists first\n      actual[key] !== expected[key]\n    ) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","const warnings = new Set();\n\nexport default function deprecationWarning(\n  oldName: string,\n  newName: string,\n  prefix: string = \"\",\n) {\n  if (warnings.has(oldName)) return;\n  warnings.add(oldName);\n\n  const { internal, trace } = captureShortStackTrace(1, 2);\n  if (internal) {\n    // If usage comes from an internal package, there is no point in warning because\n    // 1. The new version of the package will already use the new API\n    // 2. When the deprecation will become an error (in a future major version), users\n    //    will have to update every package anyway.\n    return;\n  }\n  console.warn(\n    `${prefix}\\`${oldName}\\` has been deprecated, please migrate to \\`${newName}\\`\\n${trace}`,\n  );\n}\n\nfunction captureShortStackTrace(skip: number, length: number) {\n  const { stackTraceLimit, prepareStackTrace } = Error;\n  let stackTrace: NodeJS.CallSite[];\n  // We add 1 to also take into account this function.\n  Error.stackTraceLimit = 1 + skip + length;\n  Error.prepareStackTrace = function (err, stack) {\n    stackTrace = stack;\n  };\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  new Error().stack;\n  Error.stackTraceLimit = stackTraceLimit;\n  Error.prepareStackTrace = prepareStackTrace;\n\n  if (!stackTrace) return { internal: false, trace: \"\" };\n\n  const shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);\n  return {\n    internal: /[\\\\/]@babel[\\\\/]/.test(shortStackTrace[1].getFileName()),\n    trace: shortStackTrace.map(frame => `    at ${frame}`).join(\"\\n\"),\n  };\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\n/* eslint-disable no-fallthrough */\n\nimport shallowEqual from \"../../utils/shallowEqual.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\ntype Opts<Obj> = Partial<{\n  [Prop in keyof Obj]: Obj[Prop] extends t.Node\n    ? t.Node\n    : Obj[Prop] extends t.Node[]\n      ? t.Node[]\n      : Obj[Prop];\n}>;\n\nexport function isArrayExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayExpression> | null,\n): node is t.ArrayExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentExpression> | null,\n): node is t.AssignmentExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BinaryExpression> | null,\n): node is t.BinaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BinaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterpreterDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterpreterDirective> | null,\n): node is t.InterpreterDirective {\n  if (!node) return false;\n\n  if (node.type !== \"InterpreterDirective\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirective(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Directive> | null,\n): node is t.Directive {\n  if (!node) return false;\n\n  if (node.type !== \"Directive\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDirectiveLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DirectiveLiteral> | null,\n): node is t.DirectiveLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DirectiveLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockStatement> | null,\n): node is t.BlockStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BlockStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBreakStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BreakStatement> | null,\n): node is t.BreakStatement {\n  if (!node) return false;\n\n  if (node.type !== \"BreakStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CallExpression> | null,\n): node is t.CallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"CallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCatchClause(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CatchClause> | null,\n): node is t.CatchClause {\n  if (!node) return false;\n\n  if (node.type !== \"CatchClause\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditionalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ConditionalExpression> | null,\n): node is t.ConditionalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ConditionalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isContinueStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ContinueStatement> | null,\n): node is t.ContinueStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ContinueStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDebuggerStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DebuggerStatement> | null,\n): node is t.DebuggerStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DebuggerStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoWhileStatement> | null,\n): node is t.DoWhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"DoWhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyStatement> | null,\n): node is t.EmptyStatement {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionStatement> | null,\n): node is t.ExpressionStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ExpressionStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.File> | null,\n): node is t.File {\n  if (!node) return false;\n\n  if (node.type !== \"File\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForInStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForInStatement> | null,\n): node is t.ForInStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForInStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForStatement> | null,\n): node is t.ForStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionDeclaration> | null,\n): node is t.FunctionDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionExpression> | null,\n): node is t.FunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Identifier> | null,\n): node is t.Identifier {\n  if (!node) return false;\n\n  if (node.type !== \"Identifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IfStatement> | null,\n): node is t.IfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"IfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLabeledStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LabeledStatement> | null,\n): node is t.LabeledStatement {\n  if (!node) return false;\n\n  if (node.type !== \"LabeledStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteral> | null,\n): node is t.StringLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumericLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumericLiteral> | null,\n): node is t.NumericLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NumericLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteral> | null,\n): node is t.NullLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteral> | null,\n): node is t.BooleanLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRegExpLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegExpLiteral> | null,\n): node is t.RegExpLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"RegExpLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLogicalExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LogicalExpression> | null,\n): node is t.LogicalExpression {\n  if (!node) return false;\n\n  if (node.type !== \"LogicalExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MemberExpression> | null,\n): node is t.MemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"MemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNewExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NewExpression> | null,\n): node is t.NewExpression {\n  if (!node) return false;\n\n  if (node.type !== \"NewExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProgram(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Program> | null,\n): node is t.Program {\n  if (!node) return false;\n\n  if (node.type !== \"Program\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectExpression> | null,\n): node is t.ObjectExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMethod> | null,\n): node is t.ObjectMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectProperty> | null,\n): node is t.ObjectProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRestElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestElement> | null,\n): node is t.RestElement {\n  if (!node) return false;\n\n  if (node.type !== \"RestElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isReturnStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ReturnStatement> | null,\n): node is t.ReturnStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ReturnStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSequenceExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SequenceExpression> | null,\n): node is t.SequenceExpression {\n  if (!node) return false;\n\n  if (node.type !== \"SequenceExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isParenthesizedExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ParenthesizedExpression> | null,\n): node is t.ParenthesizedExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ParenthesizedExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchCase(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchCase> | null,\n): node is t.SwitchCase {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchCase\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSwitchStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SwitchStatement> | null,\n): node is t.SwitchStatement {\n  if (!node) return false;\n\n  if (node.type !== \"SwitchStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisExpression> | null,\n): node is t.ThisExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ThisExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThrowStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThrowStatement> | null,\n): node is t.ThrowStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ThrowStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTryStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TryStatement> | null,\n): node is t.TryStatement {\n  if (!node) return false;\n\n  if (node.type !== \"TryStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryExpression> | null,\n): node is t.UnaryExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UnaryExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUpdateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UpdateExpression> | null,\n): node is t.UpdateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"UpdateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclaration> | null,\n): node is t.VariableDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariableDeclarator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VariableDeclarator> | null,\n): node is t.VariableDeclarator {\n  if (!node) return false;\n\n  if (node.type !== \"VariableDeclarator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhileStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WhileStatement> | null,\n): node is t.WhileStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WhileStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWithStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.WithStatement> | null,\n): node is t.WithStatement {\n  if (!node) return false;\n\n  if (node.type !== \"WithStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAssignmentPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AssignmentPattern> | null,\n): node is t.AssignmentPattern {\n  if (!node) return false;\n\n  if (node.type !== \"AssignmentPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayPattern> | null,\n): node is t.ArrayPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrowFunctionExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrowFunctionExpression> | null,\n): node is t.ArrowFunctionExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ArrowFunctionExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassBody> | null,\n): node is t.ClassBody {\n  if (!node) return false;\n\n  if (node.type !== \"ClassBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassExpression> | null,\n): node is t.ClassExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ClassExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassDeclaration> | null,\n): node is t.ClassDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ClassDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportAllDeclaration> | null,\n): node is t.ExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultDeclaration> | null,\n): node is t.ExportDefaultDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamedDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamedDeclaration> | null,\n): node is t.ExportNamedDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamedDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportSpecifier> | null,\n): node is t.ExportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForOfStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForOfStatement> | null,\n): node is t.ForOfStatement {\n  if (!node) return false;\n\n  if (node.type !== \"ForOfStatement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDeclaration> | null,\n): node is t.ImportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportDefaultSpecifier> | null,\n): node is t.ImportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportNamespaceSpecifier> | null,\n): node is t.ImportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportSpecifier> | null,\n): node is t.ImportSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ImportSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportExpression> | null,\n): node is t.ImportExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ImportExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMetaProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MetaProperty> | null,\n): node is t.MetaProperty {\n  if (!node) return false;\n\n  if (node.type !== \"MetaProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassMethod> | null,\n): node is t.ClassMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectPattern> | null,\n): node is t.ObjectPattern {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectPattern\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSpreadElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadElement> | null,\n): node is t.SpreadElement {\n  if (!node) return false;\n\n  if (node.type !== \"SpreadElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSuper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Super> | null,\n): node is t.Super {\n  if (!node) return false;\n\n  if (node.type !== \"Super\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTaggedTemplateExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TaggedTemplateExpression> | null,\n): node is t.TaggedTemplateExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TaggedTemplateExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateElement> | null,\n): node is t.TemplateElement {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTemplateLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TemplateLiteral> | null,\n): node is t.TemplateLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TemplateLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isYieldExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.YieldExpression> | null,\n): node is t.YieldExpression {\n  if (!node) return false;\n\n  if (node.type !== \"YieldExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAwaitExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AwaitExpression> | null,\n): node is t.AwaitExpression {\n  if (!node) return false;\n\n  if (node.type !== \"AwaitExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImport(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Import> | null,\n): node is t.Import {\n  if (!node) return false;\n\n  if (node.type !== \"Import\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBigIntLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BigIntLiteral> | null,\n): node is t.BigIntLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"BigIntLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportNamespaceSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportNamespaceSpecifier> | null,\n): node is t.ExportNamespaceSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportNamespaceSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalMemberExpression> | null,\n): node is t.OptionalMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalCallExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalCallExpression> | null,\n): node is t.OptionalCallExpression {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalCallExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassProperty> | null,\n): node is t.ClassProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassAccessorProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassAccessorProperty> | null,\n): node is t.ClassAccessorProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassAccessorProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateProperty> | null,\n): node is t.ClassPrivateProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassPrivateMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassPrivateMethod> | null,\n): node is t.ClassPrivateMethod {\n  if (!node) return false;\n\n  if (node.type !== \"ClassPrivateMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivateName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PrivateName> | null,\n): node is t.PrivateName {\n  if (!node) return false;\n\n  if (node.type !== \"PrivateName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStaticBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StaticBlock> | null,\n): node is t.StaticBlock {\n  if (!node) return false;\n\n  if (node.type !== \"StaticBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAnyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.AnyTypeAnnotation> | null,\n): node is t.AnyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"AnyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArrayTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArrayTypeAnnotation> | null,\n): node is t.ArrayTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ArrayTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanTypeAnnotation> | null,\n): node is t.BooleanTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBooleanLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BooleanLiteralTypeAnnotation> | null,\n): node is t.BooleanLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"BooleanLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullLiteralTypeAnnotation> | null,\n): node is t.NullLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClassImplements(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ClassImplements> | null,\n): node is t.ClassImplements {\n  if (!node) return false;\n\n  if (node.type !== \"ClassImplements\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareClass> | null,\n): node is t.DeclareClass {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareClass\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareFunction> | null,\n): node is t.DeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareInterface(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareInterface> | null,\n): node is t.DeclareInterface {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareInterface\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModule(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModule> | null,\n): node is t.DeclareModule {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModule\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareModuleExports(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareModuleExports> | null,\n): node is t.DeclareModuleExports {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareModuleExports\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareTypeAlias> | null,\n): node is t.DeclareTypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareTypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareOpaqueType> | null,\n): node is t.DeclareOpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareOpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareVariable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareVariable> | null,\n): node is t.DeclareVariable {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareVariable\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportDeclaration> | null,\n): node is t.DeclareExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclareExportAllDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclareExportAllDeclaration> | null,\n): node is t.DeclareExportAllDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"DeclareExportAllDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DeclaredPredicate> | null,\n): node is t.DeclaredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"DeclaredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExistsTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExistsTypeAnnotation> | null,\n): node is t.ExistsTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ExistsTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeAnnotation> | null,\n): node is t.FunctionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionTypeParam(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionTypeParam> | null,\n): node is t.FunctionTypeParam {\n  if (!node) return false;\n\n  if (node.type !== \"FunctionTypeParam\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isGenericTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.GenericTypeAnnotation> | null,\n): node is t.GenericTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"GenericTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInferredPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InferredPredicate> | null,\n): node is t.InferredPredicate {\n  if (!node) return false;\n\n  if (node.type !== \"InferredPredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceExtends(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceExtends> | null,\n): node is t.InterfaceExtends {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceExtends\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceDeclaration> | null,\n): node is t.InterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isInterfaceTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.InterfaceTypeAnnotation> | null,\n): node is t.InterfaceTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"InterfaceTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIntersectionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IntersectionTypeAnnotation> | null,\n): node is t.IntersectionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"IntersectionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMixedTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.MixedTypeAnnotation> | null,\n): node is t.MixedTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"MixedTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEmptyTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EmptyTypeAnnotation> | null,\n): node is t.EmptyTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"EmptyTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNullableTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NullableTypeAnnotation> | null,\n): node is t.NullableTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NullableTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteralTypeAnnotation> | null,\n): node is t.NumberLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNumberTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberTypeAnnotation> | null,\n): node is t.NumberTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"NumberTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeAnnotation> | null,\n): node is t.ObjectTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeInternalSlot(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeInternalSlot> | null,\n): node is t.ObjectTypeInternalSlot {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeInternalSlot\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeCallProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeCallProperty> | null,\n): node is t.ObjectTypeCallProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeCallProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeIndexer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeIndexer> | null,\n): node is t.ObjectTypeIndexer {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeIndexer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeProperty> | null,\n): node is t.ObjectTypeProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectTypeSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectTypeSpreadProperty> | null,\n): node is t.ObjectTypeSpreadProperty {\n  if (!node) return false;\n\n  if (node.type !== \"ObjectTypeSpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOpaqueType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OpaqueType> | null,\n): node is t.OpaqueType {\n  if (!node) return false;\n\n  if (node.type !== \"OpaqueType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isQualifiedTypeIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.QualifiedTypeIdentifier> | null,\n): node is t.QualifiedTypeIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"QualifiedTypeIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringLiteralTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringLiteralTypeAnnotation> | null,\n): node is t.StringLiteralTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringLiteralTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStringTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.StringTypeAnnotation> | null,\n): node is t.StringTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"StringTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isSymbolTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SymbolTypeAnnotation> | null,\n): node is t.SymbolTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"SymbolTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isThisTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ThisTypeAnnotation> | null,\n): node is t.ThisTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"ThisTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleTypeAnnotation> | null,\n): node is t.TupleTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TupleTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeofTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeofTypeAnnotation> | null,\n): node is t.TypeofTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeofTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAlias(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAlias> | null,\n): node is t.TypeAlias {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAlias\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeAnnotation> | null,\n): node is t.TypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeCastExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeCastExpression> | null,\n): node is t.TypeCastExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TypeCastExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameter> | null,\n): node is t.TypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterDeclaration> | null,\n): node is t.TypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeParameterInstantiation> | null,\n): node is t.TypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnionTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnionTypeAnnotation> | null,\n): node is t.UnionTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"UnionTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVariance(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Variance> | null,\n): node is t.Variance {\n  if (!node) return false;\n\n  if (node.type !== \"Variance\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isVoidTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.VoidTypeAnnotation> | null,\n): node is t.VoidTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"VoidTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDeclaration> | null,\n): node is t.EnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanBody> | null,\n): node is t.EnumBooleanBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberBody> | null,\n): node is t.EnumNumberBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringBody> | null,\n): node is t.EnumStringBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumSymbolBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumSymbolBody> | null,\n): node is t.EnumSymbolBody {\n  if (!node) return false;\n\n  if (node.type !== \"EnumSymbolBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBooleanMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBooleanMember> | null,\n): node is t.EnumBooleanMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumBooleanMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumNumberMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumNumberMember> | null,\n): node is t.EnumNumberMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumNumberMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumStringMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumStringMember> | null,\n): node is t.EnumStringMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumStringMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumDefaultedMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumDefaultedMember> | null,\n): node is t.EnumDefaultedMember {\n  if (!node) return false;\n\n  if (node.type !== \"EnumDefaultedMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.IndexedAccessType> | null,\n): node is t.IndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"IndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isOptionalIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.OptionalIndexedAccessType> | null,\n): node is t.OptionalIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"OptionalIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXAttribute> | null,\n): node is t.JSXAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingElement> | null,\n): node is t.JSXClosingElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXElement> | null,\n): node is t.JSXElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXEmptyExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXEmptyExpression> | null,\n): node is t.JSXEmptyExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXEmptyExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXExpressionContainer(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXExpressionContainer> | null,\n): node is t.JSXExpressionContainer {\n  if (!node) return false;\n\n  if (node.type !== \"JSXExpressionContainer\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadChild(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadChild> | null,\n): node is t.JSXSpreadChild {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadChild\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXIdentifier> | null,\n): node is t.JSXIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"JSXIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXMemberExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXMemberExpression> | null,\n): node is t.JSXMemberExpression {\n  if (!node) return false;\n\n  if (node.type !== \"JSXMemberExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXNamespacedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXNamespacedName> | null,\n): node is t.JSXNamespacedName {\n  if (!node) return false;\n\n  if (node.type !== \"JSXNamespacedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningElement> | null,\n): node is t.JSXOpeningElement {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningElement\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXSpreadAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXSpreadAttribute> | null,\n): node is t.JSXSpreadAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"JSXSpreadAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXText(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXText> | null,\n): node is t.JSXText {\n  if (!node) return false;\n\n  if (node.type !== \"JSXText\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXFragment> | null,\n): node is t.JSXFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXOpeningFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXOpeningFragment> | null,\n): node is t.JSXOpeningFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXOpeningFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSXClosingFragment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSXClosingFragment> | null,\n): node is t.JSXClosingFragment {\n  if (!node) return false;\n\n  if (node.type !== \"JSXClosingFragment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isNoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Noop> | null,\n): node is t.Noop {\n  if (!node) return false;\n\n  if (node.type !== \"Noop\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Placeholder> | null,\n): node is t.Placeholder {\n  if (!node) return false;\n\n  if (node.type !== \"Placeholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isV8IntrinsicIdentifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.V8IntrinsicIdentifier> | null,\n): node is t.V8IntrinsicIdentifier {\n  if (!node) return false;\n\n  if (node.type !== \"V8IntrinsicIdentifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isArgumentPlaceholder(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ArgumentPlaceholder> | null,\n): node is t.ArgumentPlaceholder {\n  if (!node) return false;\n\n  if (node.type !== \"ArgumentPlaceholder\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBindExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BindExpression> | null,\n): node is t.BindExpression {\n  if (!node) return false;\n\n  if (node.type !== \"BindExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportAttribute(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportAttribute> | null,\n): node is t.ImportAttribute {\n  if (!node) return false;\n\n  if (node.type !== \"ImportAttribute\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecorator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Decorator> | null,\n): node is t.Decorator {\n  if (!node) return false;\n\n  if (node.type !== \"Decorator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDoExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DoExpression> | null,\n): node is t.DoExpression {\n  if (!node) return false;\n\n  if (node.type !== \"DoExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDefaultSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDefaultSpecifier> | null,\n): node is t.ExportDefaultSpecifier {\n  if (!node) return false;\n\n  if (node.type !== \"ExportDefaultSpecifier\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isRecordExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RecordExpression> | null,\n): node is t.RecordExpression {\n  if (!node) return false;\n\n  if (node.type !== \"RecordExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTupleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TupleExpression> | null,\n): node is t.TupleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TupleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDecimalLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.DecimalLiteral> | null,\n): node is t.DecimalLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"DecimalLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleExpression> | null,\n): node is t.ModuleExpression {\n  if (!node) return false;\n\n  if (node.type !== \"ModuleExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TopicReference> | null,\n): node is t.TopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"TopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineTopicExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineTopicExpression> | null,\n): node is t.PipelineTopicExpression {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineTopicExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelineBareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelineBareFunction> | null,\n): node is t.PipelineBareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"PipelineBareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPipelinePrimaryTopicReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PipelinePrimaryTopicReference> | null,\n): node is t.PipelinePrimaryTopicReference {\n  if (!node) return false;\n\n  if (node.type !== \"PipelinePrimaryTopicReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParameterProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParameterProperty> | null,\n): node is t.TSParameterProperty {\n  if (!node) return false;\n\n  if (node.type !== \"TSParameterProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareFunction> | null,\n): node is t.TSDeclareFunction {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareFunction\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSDeclareMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSDeclareMethod> | null,\n): node is t.TSDeclareMethod {\n  if (!node) return false;\n\n  if (node.type !== \"TSDeclareMethod\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSQualifiedName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSQualifiedName> | null,\n): node is t.TSQualifiedName {\n  if (!node) return false;\n\n  if (node.type !== \"TSQualifiedName\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSCallSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSCallSignatureDeclaration> | null,\n): node is t.TSCallSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSCallSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructSignatureDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructSignatureDeclaration> | null,\n): node is t.TSConstructSignatureDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructSignatureDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSPropertySignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSPropertySignature> | null,\n): node is t.TSPropertySignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSPropertySignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMethodSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMethodSignature> | null,\n): node is t.TSMethodSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSMethodSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexSignature(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexSignature> | null,\n): node is t.TSIndexSignature {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexSignature\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAnyKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAnyKeyword> | null,\n): node is t.TSAnyKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSAnyKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBooleanKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBooleanKeyword> | null,\n): node is t.TSBooleanKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBooleanKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBigIntKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBigIntKeyword> | null,\n): node is t.TSBigIntKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSBigIntKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntrinsicKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntrinsicKeyword> | null,\n): node is t.TSIntrinsicKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntrinsicKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNeverKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNeverKeyword> | null,\n): node is t.TSNeverKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNeverKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNullKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNullKeyword> | null,\n): node is t.TSNullKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNullKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNumberKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNumberKeyword> | null,\n): node is t.TSNumberKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSNumberKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSObjectKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSObjectKeyword> | null,\n): node is t.TSObjectKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSObjectKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSStringKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSStringKeyword> | null,\n): node is t.TSStringKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSStringKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSymbolKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSymbolKeyword> | null,\n): node is t.TSSymbolKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSSymbolKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUndefinedKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUndefinedKeyword> | null,\n): node is t.TSUndefinedKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUndefinedKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnknownKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnknownKeyword> | null,\n): node is t.TSUnknownKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnknownKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSVoidKeyword(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSVoidKeyword> | null,\n): node is t.TSVoidKeyword {\n  if (!node) return false;\n\n  if (node.type !== \"TSVoidKeyword\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSThisType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSThisType> | null,\n): node is t.TSThisType {\n  if (!node) return false;\n\n  if (node.type !== \"TSThisType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSFunctionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSFunctionType> | null,\n): node is t.TSFunctionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSFunctionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConstructorType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConstructorType> | null,\n): node is t.TSConstructorType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConstructorType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeReference> | null,\n): node is t.TSTypeReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypePredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypePredicate> | null,\n): node is t.TSTypePredicate {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypePredicate\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeQuery(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeQuery> | null,\n): node is t.TSTypeQuery {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeQuery\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeLiteral> | null,\n): node is t.TSTypeLiteral {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSArrayType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSArrayType> | null,\n): node is t.TSArrayType {\n  if (!node) return false;\n\n  if (node.type !== \"TSArrayType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTupleType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTupleType> | null,\n): node is t.TSTupleType {\n  if (!node) return false;\n\n  if (node.type !== \"TSTupleType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSOptionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSOptionalType> | null,\n): node is t.TSOptionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSOptionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSRestType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSRestType> | null,\n): node is t.TSRestType {\n  if (!node) return false;\n\n  if (node.type !== \"TSRestType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamedTupleMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamedTupleMember> | null,\n): node is t.TSNamedTupleMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamedTupleMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSUnionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSUnionType> | null,\n): node is t.TSUnionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSUnionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIntersectionType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIntersectionType> | null,\n): node is t.TSIntersectionType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIntersectionType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSConditionalType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSConditionalType> | null,\n): node is t.TSConditionalType {\n  if (!node) return false;\n\n  if (node.type !== \"TSConditionalType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInferType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInferType> | null,\n): node is t.TSInferType {\n  if (!node) return false;\n\n  if (node.type !== \"TSInferType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSParenthesizedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSParenthesizedType> | null,\n): node is t.TSParenthesizedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSParenthesizedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeOperator(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeOperator> | null,\n): node is t.TSTypeOperator {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeOperator\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSIndexedAccessType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSIndexedAccessType> | null,\n): node is t.TSIndexedAccessType {\n  if (!node) return false;\n\n  if (node.type !== \"TSIndexedAccessType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSMappedType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSMappedType> | null,\n): node is t.TSMappedType {\n  if (!node) return false;\n\n  if (node.type !== \"TSMappedType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTemplateLiteralType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTemplateLiteralType> | null,\n): node is t.TSTemplateLiteralType {\n  if (!node) return false;\n\n  if (node.type !== \"TSTemplateLiteralType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSLiteralType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSLiteralType> | null,\n): node is t.TSLiteralType {\n  if (!node) return false;\n\n  if (node.type !== \"TSLiteralType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExpressionWithTypeArguments(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExpressionWithTypeArguments> | null,\n): node is t.TSExpressionWithTypeArguments {\n  if (!node) return false;\n\n  if (node.type !== \"TSExpressionWithTypeArguments\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceDeclaration> | null,\n): node is t.TSInterfaceDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInterfaceBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInterfaceBody> | null,\n): node is t.TSInterfaceBody {\n  if (!node) return false;\n\n  if (node.type !== \"TSInterfaceBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAliasDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAliasDeclaration> | null,\n): node is t.TSTypeAliasDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAliasDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSInstantiationExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSInstantiationExpression> | null,\n): node is t.TSInstantiationExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSInstantiationExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSAsExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSAsExpression> | null,\n): node is t.TSAsExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSAsExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSSatisfiesExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSSatisfiesExpression> | null,\n): node is t.TSSatisfiesExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSSatisfiesExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAssertion(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAssertion> | null,\n): node is t.TSTypeAssertion {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAssertion\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumBody> | null,\n): node is t.TSEnumBody {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumBody\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumDeclaration> | null,\n): node is t.TSEnumDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEnumMember> | null,\n): node is t.TSEnumMember {\n  if (!node) return false;\n\n  if (node.type !== \"TSEnumMember\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleDeclaration> | null,\n): node is t.TSModuleDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSModuleBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSModuleBlock> | null,\n): node is t.TSModuleBlock {\n  if (!node) return false;\n\n  if (node.type !== \"TSModuleBlock\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportType> | null,\n): node is t.TSImportType {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportType\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSImportEqualsDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSImportEqualsDeclaration> | null,\n): node is t.TSImportEqualsDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSImportEqualsDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExternalModuleReference(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExternalModuleReference> | null,\n): node is t.TSExternalModuleReference {\n  if (!node) return false;\n\n  if (node.type !== \"TSExternalModuleReference\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNonNullExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNonNullExpression> | null,\n): node is t.TSNonNullExpression {\n  if (!node) return false;\n\n  if (node.type !== \"TSNonNullExpression\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSExportAssignment(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSExportAssignment> | null,\n): node is t.TSExportAssignment {\n  if (!node) return false;\n\n  if (node.type !== \"TSExportAssignment\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSNamespaceExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSNamespaceExportDeclaration> | null,\n): node is t.TSNamespaceExportDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSNamespaceExportDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeAnnotation> | null,\n): node is t.TSTypeAnnotation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeAnnotation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterInstantiation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterInstantiation> | null,\n): node is t.TSTypeParameterInstantiation {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterInstantiation\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameterDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameterDeclaration> | null,\n): node is t.TSTypeParameterDeclaration {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameterDeclaration\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeParameter(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeParameter> | null,\n): node is t.TSTypeParameter {\n  if (!node) return false;\n\n  if (node.type !== \"TSTypeParameter\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStandardized(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Standardized> | null,\n): node is t.Standardized {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ArrayExpression\":\n    case \"AssignmentExpression\":\n    case \"BinaryExpression\":\n    case \"InterpreterDirective\":\n    case \"Directive\":\n    case \"DirectiveLiteral\":\n    case \"BlockStatement\":\n    case \"BreakStatement\":\n    case \"CallExpression\":\n    case \"CatchClause\":\n    case \"ConditionalExpression\":\n    case \"ContinueStatement\":\n    case \"DebuggerStatement\":\n    case \"DoWhileStatement\":\n    case \"EmptyStatement\":\n    case \"ExpressionStatement\":\n    case \"File\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Identifier\":\n    case \"IfStatement\":\n    case \"LabeledStatement\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"Program\":\n    case \"ObjectExpression\":\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"RestElement\":\n    case \"ReturnStatement\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"SwitchCase\":\n    case \"SwitchStatement\":\n    case \"ThisExpression\":\n    case \"ThrowStatement\":\n    case \"TryStatement\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"VariableDeclaration\":\n    case \"VariableDeclarator\":\n    case \"WhileStatement\":\n    case \"WithStatement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassBody\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ExportSpecifier\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"ClassMethod\":\n    case \"ObjectPattern\":\n    case \"SpreadElement\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateElement\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"ExportNamespaceSpecifier\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n    case \"StaticBlock\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Identifier\":\n        case \"StringLiteral\":\n        case \"BlockStatement\":\n        case \"ClassBody\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpression(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Expression> | null,\n): node is t.Expression {\n  if (!node) return false;\n\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 \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"LogicalExpression\":\n    case \"MemberExpression\":\n    case \"NewExpression\":\n    case \"ObjectExpression\":\n    case \"SequenceExpression\":\n    case \"ParenthesizedExpression\":\n    case \"ThisExpression\":\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ImportExpression\":\n    case \"MetaProperty\":\n    case \"Super\":\n    case \"TaggedTemplateExpression\":\n    case \"TemplateLiteral\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n    case \"Import\":\n    case \"BigIntLiteral\":\n    case \"OptionalMemberExpression\":\n    case \"OptionalCallExpression\":\n    case \"TypeCastExpression\":\n    case \"JSXElement\":\n    case \"JSXFragment\":\n    case \"BindExpression\":\n    case \"DoExpression\":\n    case \"RecordExpression\":\n    case \"TupleExpression\":\n    case \"DecimalLiteral\":\n    case \"ModuleExpression\":\n    case \"TopicReference\":\n    case \"PipelineTopicExpression\":\n    case \"PipelineBareFunction\":\n    case \"PipelinePrimaryTopicReference\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Expression\":\n        case \"Identifier\":\n        case \"StringLiteral\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBinary(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Binary> | null,\n): node is t.Binary {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BinaryExpression\":\n    case \"LogicalExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isScopable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Scopable> | null,\n): node is t.Scopable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlockParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.BlockParent> | null,\n): node is t.BlockParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"CatchClause\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"Program\":\n    case \"ObjectMethod\":\n    case \"SwitchStatement\":\n    case \"WhileStatement\":\n    case \"ArrowFunctionExpression\":\n    case \"ForOfStatement\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isBlock(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Block> | null,\n): node is t.Block {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BlockStatement\":\n    case \"Program\":\n    case \"TSModuleBlock\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"BlockStatement\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Statement> | null,\n): node is t.Statement {\n  if (!node) return false;\n\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 \"FunctionDeclaration\":\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    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ForOfStatement\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Statement\":\n        case \"Declaration\":\n        case \"BlockStatement\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTerminatorless(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Terminatorless> | null,\n): node is t.Terminatorless {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n    case \"YieldExpression\":\n    case \"AwaitExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isCompletionStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.CompletionStatement> | null,\n): node is t.CompletionStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n    case \"ReturnStatement\":\n    case \"ThrowStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isConditional(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Conditional> | null,\n): node is t.Conditional {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ConditionalExpression\":\n    case \"IfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLoop(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Loop> | null,\n): node is t.Loop {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"WhileStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isWhile(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.While> | null,\n): node is t.While {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DoWhileStatement\":\n    case \"WhileStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExpressionWrapper(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExpressionWrapper> | null,\n): node is t.ExpressionWrapper {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExpressionStatement\":\n    case \"ParenthesizedExpression\":\n    case \"TypeCastExpression\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.For> | null,\n): node is t.For {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isForXStatement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ForXStatement> | null,\n): node is t.ForXStatement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ForInStatement\":\n    case \"ForOfStatement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunction(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Function> | null,\n): node is t.Function {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFunctionParent(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FunctionParent> | null,\n): node is t.FunctionParent {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"ObjectMethod\":\n    case \"ArrowFunctionExpression\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"StaticBlock\":\n    case \"TSModuleBlock\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPureish(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pureish> | null,\n): node is t.Pureish {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"ArrowFunctionExpression\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Declaration> | null,\n): node is t.Declaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"FunctionDeclaration\":\n    case \"VariableDeclaration\":\n    case \"ClassDeclaration\":\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n    case \"EnumDeclaration\":\n    case \"TSDeclareFunction\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSEnumDeclaration\":\n    case \"TSModuleDeclaration\":\n    case \"TSImportEqualsDeclaration\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Declaration\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPatternLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.PatternLike> | null,\n): node is t.PatternLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLVal(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.LVal> | null,\n): node is t.LVal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"MemberExpression\":\n    case \"RestElement\":\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n    case \"TSParameterProperty\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSNonNullExpression\":\n      break;\n    case \"Placeholder\":\n      switch (node.expectedNode) {\n        case \"Pattern\":\n        case \"Identifier\":\n          break;\n        default:\n          return false;\n      }\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSEntityName(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSEntityName> | null,\n): node is t.TSEntityName {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Identifier\":\n    case \"TSQualifiedName\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Identifier\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Literal> | null,\n): node is t.Literal {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"RegExpLiteral\":\n    case \"TemplateLiteral\":\n    case \"BigIntLiteral\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImmutable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Immutable> | null,\n): node is t.Immutable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"StringLiteral\":\n    case \"NumericLiteral\":\n    case \"NullLiteral\":\n    case \"BooleanLiteral\":\n    case \"BigIntLiteral\":\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXOpeningElement\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n    case \"DecimalLiteral\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"StringLiteral\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUserWhitespacable(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UserWhitespacable> | null,\n): node is t.UserWhitespacable {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMethod(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Method> | null,\n): node is t.Method {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isObjectMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ObjectMember> | null,\n): node is t.ObjectMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectMethod\":\n    case \"ObjectProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Property> | null,\n): node is t.Property {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ObjectProperty\":\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n    case \"ClassPrivateProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isUnaryLike(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.UnaryLike> | null,\n): node is t.UnaryLike {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"UnaryExpression\":\n    case \"SpreadElement\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPattern(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Pattern> | null,\n): node is t.Pattern {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AssignmentPattern\":\n    case \"ArrayPattern\":\n    case \"ObjectPattern\":\n      break;\n    case \"Placeholder\":\n      if (node.expectedNode === \"Pattern\") break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isClass(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Class> | null,\n): node is t.Class {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isImportOrExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ImportOrExportDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n    case \"ImportDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isExportDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ExportDeclaration> | null,\n): node is t.ExportDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportAllDeclaration\":\n    case \"ExportDefaultDeclaration\":\n    case \"ExportNamedDeclaration\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isModuleSpecifier(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleSpecifier> | null,\n): node is t.ModuleSpecifier {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ExportSpecifier\":\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n    case \"ExportNamespaceSpecifier\":\n    case \"ExportDefaultSpecifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isAccessor(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Accessor> | null,\n): node is t.Accessor {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isPrivate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Private> | null,\n): node is t.Private {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n    case \"PrivateName\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlow(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Flow> | null,\n): node is t.Flow {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ClassImplements\":\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"DeclaredPredicate\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"FunctionTypeParam\":\n    case \"GenericTypeAnnotation\":\n    case \"InferredPredicate\":\n    case \"InterfaceExtends\":\n    case \"InterfaceDeclaration\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"ObjectTypeInternalSlot\":\n    case \"ObjectTypeCallProperty\":\n    case \"ObjectTypeIndexer\":\n    case \"ObjectTypeProperty\":\n    case \"ObjectTypeSpreadProperty\":\n    case \"OpaqueType\":\n    case \"QualifiedTypeIdentifier\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"TypeAlias\":\n    case \"TypeAnnotation\":\n    case \"TypeCastExpression\":\n    case \"TypeParameter\":\n    case \"TypeParameterDeclaration\":\n    case \"TypeParameterInstantiation\":\n    case \"UnionTypeAnnotation\":\n    case \"Variance\":\n    case \"VoidTypeAnnotation\":\n    case \"EnumDeclaration\":\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowType> | null,\n): node is t.FlowType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"ArrayTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"BooleanLiteralTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"ExistsTypeAnnotation\":\n    case \"FunctionTypeAnnotation\":\n    case \"GenericTypeAnnotation\":\n    case \"InterfaceTypeAnnotation\":\n    case \"IntersectionTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NullableTypeAnnotation\":\n    case \"NumberLiteralTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"ObjectTypeAnnotation\":\n    case \"StringLiteralTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"TupleTypeAnnotation\":\n    case \"TypeofTypeAnnotation\":\n    case \"UnionTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n    case \"IndexedAccessType\":\n    case \"OptionalIndexedAccessType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowBaseAnnotation(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowBaseAnnotation> | null,\n): node is t.FlowBaseAnnotation {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"AnyTypeAnnotation\":\n    case \"BooleanTypeAnnotation\":\n    case \"NullLiteralTypeAnnotation\":\n    case \"MixedTypeAnnotation\":\n    case \"EmptyTypeAnnotation\":\n    case \"NumberTypeAnnotation\":\n    case \"StringTypeAnnotation\":\n    case \"SymbolTypeAnnotation\":\n    case \"ThisTypeAnnotation\":\n    case \"VoidTypeAnnotation\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowDeclaration> | null,\n): node is t.FlowDeclaration {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclareClass\":\n    case \"DeclareFunction\":\n    case \"DeclareInterface\":\n    case \"DeclareModule\":\n    case \"DeclareModuleExports\":\n    case \"DeclareTypeAlias\":\n    case \"DeclareOpaqueType\":\n    case \"DeclareVariable\":\n    case \"DeclareExportDeclaration\":\n    case \"DeclareExportAllDeclaration\":\n    case \"InterfaceDeclaration\":\n    case \"OpaqueType\":\n    case \"TypeAlias\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isFlowPredicate(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.FlowPredicate> | null,\n): node is t.FlowPredicate {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"DeclaredPredicate\":\n    case \"InferredPredicate\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumBody(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumBody> | null,\n): node is t.EnumBody {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanBody\":\n    case \"EnumNumberBody\":\n    case \"EnumStringBody\":\n    case \"EnumSymbolBody\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isEnumMember(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.EnumMember> | null,\n): node is t.EnumMember {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"EnumBooleanMember\":\n    case \"EnumNumberMember\":\n    case \"EnumStringMember\":\n    case \"EnumDefaultedMember\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isJSX(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.JSX> | null,\n): node is t.JSX {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"JSXAttribute\":\n    case \"JSXClosingElement\":\n    case \"JSXElement\":\n    case \"JSXEmptyExpression\":\n    case \"JSXExpressionContainer\":\n    case \"JSXSpreadChild\":\n    case \"JSXIdentifier\":\n    case \"JSXMemberExpression\":\n    case \"JSXNamespacedName\":\n    case \"JSXOpeningElement\":\n    case \"JSXSpreadAttribute\":\n    case \"JSXText\":\n    case \"JSXFragment\":\n    case \"JSXOpeningFragment\":\n    case \"JSXClosingFragment\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isMiscellaneous(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.Miscellaneous> | null,\n): node is t.Miscellaneous {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"Noop\":\n    case \"Placeholder\":\n    case \"V8IntrinsicIdentifier\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTypeScript(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TypeScript> | null,\n): node is t.TypeScript {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSParameterProperty\":\n    case \"TSDeclareFunction\":\n    case \"TSDeclareMethod\":\n    case \"TSQualifiedName\":\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSNamedTupleMember\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSTemplateLiteralType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSInterfaceDeclaration\":\n    case \"TSInterfaceBody\":\n    case \"TSTypeAliasDeclaration\":\n    case \"TSInstantiationExpression\":\n    case \"TSAsExpression\":\n    case \"TSSatisfiesExpression\":\n    case \"TSTypeAssertion\":\n    case \"TSEnumBody\":\n    case \"TSEnumDeclaration\":\n    case \"TSEnumMember\":\n    case \"TSModuleDeclaration\":\n    case \"TSModuleBlock\":\n    case \"TSImportType\":\n    case \"TSImportEqualsDeclaration\":\n    case \"TSExternalModuleReference\":\n    case \"TSNonNullExpression\":\n    case \"TSExportAssignment\":\n    case \"TSNamespaceExportDeclaration\":\n    case \"TSTypeAnnotation\":\n    case \"TSTypeParameterInstantiation\":\n    case \"TSTypeParameterDeclaration\":\n    case \"TSTypeParameter\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSTypeElement(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSTypeElement> | null,\n): node is t.TSTypeElement {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSCallSignatureDeclaration\":\n    case \"TSConstructSignatureDeclaration\":\n    case \"TSPropertySignature\":\n    case \"TSMethodSignature\":\n    case \"TSIndexSignature\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSType> | null,\n): node is t.TSType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSFunctionType\":\n    case \"TSConstructorType\":\n    case \"TSTypeReference\":\n    case \"TSTypePredicate\":\n    case \"TSTypeQuery\":\n    case \"TSTypeLiteral\":\n    case \"TSArrayType\":\n    case \"TSTupleType\":\n    case \"TSOptionalType\":\n    case \"TSRestType\":\n    case \"TSUnionType\":\n    case \"TSIntersectionType\":\n    case \"TSConditionalType\":\n    case \"TSInferType\":\n    case \"TSParenthesizedType\":\n    case \"TSTypeOperator\":\n    case \"TSIndexedAccessType\":\n    case \"TSMappedType\":\n    case \"TSTemplateLiteralType\":\n    case \"TSLiteralType\":\n    case \"TSExpressionWithTypeArguments\":\n    case \"TSImportType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\nexport function isTSBaseType(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.TSBaseType> | null,\n): node is t.TSBaseType {\n  if (!node) return false;\n\n  switch (node.type) {\n    case \"TSAnyKeyword\":\n    case \"TSBooleanKeyword\":\n    case \"TSBigIntKeyword\":\n    case \"TSIntrinsicKeyword\":\n    case \"TSNeverKeyword\":\n    case \"TSNullKeyword\":\n    case \"TSNumberKeyword\":\n    case \"TSObjectKeyword\":\n    case \"TSStringKeyword\":\n    case \"TSSymbolKeyword\":\n    case \"TSUndefinedKeyword\":\n    case \"TSUnknownKeyword\":\n    case \"TSVoidKeyword\":\n    case \"TSThisType\":\n    case \"TSTemplateLiteralType\":\n    case \"TSLiteralType\":\n      break;\n    default:\n      return false;\n  }\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isNumericLiteral`\n */\nexport function isNumberLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.NumberLiteral> | null,\n): boolean {\n  deprecationWarning(\"isNumberLiteral\", \"isNumericLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"NumberLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRegExpLiteral`\n */\nexport function isRegexLiteral(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RegexLiteral> | null,\n): boolean {\n  deprecationWarning(\"isRegexLiteral\", \"isRegExpLiteral\");\n  if (!node) return false;\n\n  if (node.type !== \"RegexLiteral\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isRestElement`\n */\nexport function isRestProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.RestProperty> | null,\n): boolean {\n  deprecationWarning(\"isRestProperty\", \"isRestElement\");\n  if (!node) return false;\n\n  if (node.type !== \"RestProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isSpreadElement`\n */\nexport function isSpreadProperty(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.SpreadProperty> | null,\n): boolean {\n  deprecationWarning(\"isSpreadProperty\", \"isSpreadElement\");\n  if (!node) return false;\n\n  if (node.type !== \"SpreadProperty\") return false;\n\n  return opts == null || shallowEqual(node, opts);\n}\n/**\n * @deprecated Use `isImportOrExportDeclaration`\n */\nexport function isModuleDeclaration(\n  node: t.Node | null | undefined,\n  opts?: Opts<t.ModuleDeclaration> | null,\n): node is t.ImportOrExportDeclaration {\n  deprecationWarning(\"isModuleDeclaration\", \"isImportOrExportDeclaration\");\n  return isImportOrExportDeclaration(node, opts);\n}\n","import {\n  isIdentifier,\n  isMemberExpression,\n  isStringLiteral,\n  isThisExpression,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Determines whether or not the input node `member` matches the\n * input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function matchesPattern(\n  member: t.Node | null | undefined,\n  match: string | string[],\n  allowPartial?: boolean,\n): boolean {\n  // not a member expression\n  if (!isMemberExpression(member)) return false;\n\n  const parts = Array.isArray(match) ? match : match.split(\".\");\n  const nodes = [];\n\n  let node;\n  for (node = member; isMemberExpression(node); node = node.object) {\n    nodes.push(node.property);\n  }\n  nodes.push(node);\n\n  if (nodes.length < parts.length) return false;\n  if (!allowPartial && nodes.length > parts.length) return false;\n\n  for (let i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {\n    const node = nodes[j];\n    let value;\n    if (isIdentifier(node)) {\n      value = node.name;\n    } else if (isStringLiteral(node)) {\n      value = node.value;\n    } else if (isThisExpression(node)) {\n      value = \"this\";\n    } else {\n      return false;\n    }\n\n    if (parts[i] !== value) return false;\n  }\n\n  return true;\n}\n","import matchesPattern from \"./matchesPattern.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Build a function that when called will return whether or not the\n * input `node` `MemberExpression` matches the input `match`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\nexport default function buildMatchMemberExpression(\n  match: string,\n  allowPartial?: boolean,\n) {\n  const parts = match.split(\".\");\n\n  return (member: t.Node) => matchesPattern(member, parts, allowPartial);\n}\n","import buildMatchMemberExpression from \"../buildMatchMemberExpression.ts\";\n\nconst isReactComponent = buildMatchMemberExpression(\"React.Component\");\n\nexport default isReactComponent;\n","export default function isCompatTag(tagName?: string): boolean {\n  // Must start with a lowercase ASCII letter\n  return !!tagName && /^[a-z]/.test(tagName);\n}\n","import { FLIPPED_ALIAS_KEYS, ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isType<T extends t.Node[\"type\"]>(\n  nodeType: string,\n  targetType: T,\n): nodeType is T;\n\nexport default function isType(\n  nodeType: string | null | undefined,\n  targetType: string,\n): boolean;\n\n/**\n * Test if a `nodeType` is a `targetType` or if `targetType` is an alias of `nodeType`.\n */\nexport default function isType(nodeType: string, targetType: string): boolean {\n  if (nodeType === targetType) return true;\n\n  // If nodeType is nullish, it can't be an alias of targetType.\n  if (nodeType == null) return false;\n\n  // This is a fast-path. If the test above failed, but an alias key is found, then the\n  // targetType was a primary node type, so there's no need to check the aliases.\n  // @ts-expect-error targetType may not index ALIAS_KEYS\n  if (ALIAS_KEYS[targetType]) return false;\n\n  const aliases: Array<string> | undefined = FLIPPED_ALIAS_KEYS[targetType];\n  if (aliases) {\n    if (aliases[0] === nodeType) return true;\n\n    for (const alias of aliases) {\n      if (nodeType === alias) return true;\n    }\n  }\n\n  return false;\n}\n","import { PLACEHOLDERS_ALIAS } from \"../definitions/index.ts\";\n\n/**\n * Test if a `placeholderType` is a `targetType` or if `targetType` is an alias of `placeholderType`.\n */\nexport default function isPlaceholderType(\n  placeholderType: string,\n  targetType: string,\n): boolean {\n  if (placeholderType === targetType) return true;\n\n  const aliases: Array<string> | undefined =\n    PLACEHOLDERS_ALIAS[placeholderType];\n  if (aliases) {\n    for (const alias of aliases) {\n      if (targetType === alias) return true;\n    }\n  }\n\n  return false;\n}\n","import shallowEqual from \"../utils/shallowEqual.ts\";\nimport isType from \"./isType.ts\";\nimport isPlaceholderType from \"./isPlaceholderType.ts\";\nimport { FLIPPED_ALIAS_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function is<T extends t.Node[\"type\"]>(\n  type: T,\n  node: t.Node | null | undefined,\n  opts?: undefined,\n): node is Extract<t.Node, { type: T }>;\n\nexport default function is<\n  T extends t.Node[\"type\"],\n  P extends Extract<t.Node, { type: T }>,\n>(type: T, n: t.Node | null | undefined, required: Partial<P>): n is P;\n\nexport default function is<P extends t.Node>(\n  type: string,\n  node: t.Node | null | undefined,\n  opts: Partial<P>,\n): node is P;\n\nexport default function is(\n  type: string,\n  node: t.Node | null | undefined,\n  opts?: Partial<t.Node>,\n): node is t.Node;\n/**\n * Returns whether `node` is of given `type`.\n *\n * For better performance, use this instead of `is[Type]` when `type` is unknown.\n */\nexport default function is(\n  type: string,\n  node: t.Node | null | undefined,\n  opts?: Partial<t.Node>,\n): node is t.Node {\n  if (!node) return false;\n\n  const matches = isType(node.type, type);\n  if (!matches) {\n    if (!opts && node.type === \"Placeholder\" && type in FLIPPED_ALIAS_KEYS) {\n      // We can only return true if the placeholder doesn't replace a real node,\n      // but it replaces a category of nodes (an alias).\n      //\n      // t.is(\"Identifier\", node) gives some guarantees about node's shape, so we\n      // can't say that Placeholder(expectedNode: \"Identifier\") is an identifier\n      // because it doesn't have the same properties.\n      // On the other hand, t.is(\"Expression\", node) doesn't say anything about\n      // the shape of node because Expression can be many different nodes: we can,\n      // and should, safely report expression placeholders as Expressions.\n      return isPlaceholderType(node.expectedNode, type);\n    }\n    return false;\n  }\n\n  if (opts === undefined) {\n    return true;\n  } else {\n    return shallowEqual(node, opts);\n  }\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet 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-\\u088e\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\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-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\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/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\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-\\u1ace\\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\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\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. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst 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,71,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,2,60,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,328,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,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,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,496,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,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst 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,80,3,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,343,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,330,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,726,6,110,6,6,9,4759,9,787719,239];\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.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\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\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","export {\n  isIdentifierName,\n  isIdentifierChar,\n  isIdentifierStart,\n} from \"./identifier.ts\";\nexport {\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"./keyword.ts\";\n","import {\n  isIdentifierName,\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\n/**\n * Check if the input `name` is a valid identifier name\n * and isn't a reserved word.\n */\nexport default function isValidIdentifier(\n  name: string,\n  reserved: boolean = true,\n): boolean {\n  if (typeof name !== \"string\") return false;\n\n  if (reserved) {\n    // \"await\" is invalid in module, valid in script; better be safe (see #4952)\n    if (isKeyword(name) || isStrictReservedWord(name, true)) {\n      return false;\n    }\n  }\n\n  return isIdentifierName(name);\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseB,\n    charCodes.uppercaseE,\n    charCodes.uppercaseO,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseB,\n    charCodes.lowercaseE,\n    charCodes.lowercaseO,\n  ]),\n  hex: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseX,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseX,\n  ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n  // 0 - 1\n  bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n  // 0 - 7\n  oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n  // 0 - 9\n  dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n  // 0 - 9, A - F, a - f,\n  hex: (ch: number) =>\n    (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n    (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n    (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n  unterminated(\n    initialPos: number,\n    initialLineStart: number,\n    initialCurLine: number,\n  ): void;\n};\n\nexport function readStringContents(\n  type: \"single\" | \"double\" | \"template\",\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  errors: StringContentsErrorHandlers,\n) {\n  const initialPos = pos;\n  const initialLineStart = lineStart;\n  const initialCurLine = curLine;\n\n  let out = \"\";\n  let firstInvalidLoc = null;\n  let chunkStart = pos;\n  const { length } = input;\n  for (;;) {\n    if (pos >= length) {\n      errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    const ch = input.charCodeAt(pos);\n    if (isStringEnd(type, ch, input, pos)) {\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    if (ch === charCodes.backslash) {\n      out += input.slice(chunkStart, pos);\n      const res = readEscapedChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        type === \"template\",\n        errors,\n      );\n      if (res.ch === null && !firstInvalidLoc) {\n        firstInvalidLoc = { pos, lineStart, curLine };\n      } else {\n        out += res.ch;\n      }\n      ({ pos, lineStart, curLine } = res);\n      chunkStart = pos;\n    } else if (\n      ch === charCodes.lineSeparator ||\n      ch === charCodes.paragraphSeparator\n    ) {\n      ++pos;\n      ++curLine;\n      lineStart = pos;\n    } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n      if (type === \"template\") {\n        out += input.slice(chunkStart, pos) + \"\\n\";\n        ++pos;\n        if (\n          ch === charCodes.carriageReturn &&\n          input.charCodeAt(pos) === charCodes.lineFeed\n        ) {\n          ++pos;\n        }\n        ++curLine;\n        chunkStart = lineStart = pos;\n      } else {\n        errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      }\n    } else {\n      ++pos;\n    }\n  }\n  return process.env.BABEL_8_BREAKING\n    ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n    : {\n        pos,\n        str: out,\n        firstInvalidLoc,\n        lineStart,\n        curLine,\n        containsInvalid: !!firstInvalidLoc,\n      };\n}\n\nfunction isStringEnd(\n  type: \"single\" | \"double\" | \"template\",\n  ch: number,\n  input: string,\n  pos: number,\n) {\n  if (type === \"template\") {\n    return (\n      ch === charCodes.graveAccent ||\n      (ch === charCodes.dollarSign &&\n        input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n    );\n  }\n  return (\n    ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n  );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n  CodePointErrorHandlers & {\n    strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n  };\n\nfunction readEscapedChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  inTemplate: boolean,\n  errors: EscapedCharErrorHandlers,\n) {\n  const throwOnInvalid = !inTemplate;\n  pos++; // skip '\\'\n\n  const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n  const ch = input.charCodeAt(pos++);\n  switch (ch) {\n    case charCodes.lowercaseN:\n      return res(\"\\n\");\n    case charCodes.lowercaseR:\n      return res(\"\\r\");\n    case charCodes.lowercaseX: {\n      let code;\n      ({ code, pos } = readHexChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        2,\n        false,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCharCode(code));\n    }\n    case charCodes.lowercaseU: {\n      let code;\n      ({ code, pos } = readCodePoint(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCodePoint(code));\n    }\n    case charCodes.lowercaseT:\n      return res(\"\\t\");\n    case charCodes.lowercaseB:\n      return res(\"\\b\");\n    case charCodes.lowercaseV:\n      return res(\"\\u000b\");\n    case charCodes.lowercaseF:\n      return res(\"\\f\");\n    case charCodes.carriageReturn:\n      if (input.charCodeAt(pos) === charCodes.lineFeed) {\n        ++pos;\n      }\n    // fall through\n    case charCodes.lineFeed:\n      lineStart = pos;\n      ++curLine;\n    // fall through\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return res(\"\");\n    case charCodes.digit8:\n    case charCodes.digit9:\n      if (inTemplate) {\n        return res(null);\n      } else {\n        errors.strictNumericEscape(pos - 1, lineStart, curLine);\n      }\n    // fall through\n    default:\n      if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n        const startPos = pos - 1;\n        const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n        let octalStr = match[0];\n\n        let octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        pos += octalStr.length - 1;\n        const next = input.charCodeAt(pos);\n        if (\n          octalStr !== \"0\" ||\n          next === charCodes.digit8 ||\n          next === charCodes.digit9\n        ) {\n          if (inTemplate) {\n            return res(null);\n          } else {\n            errors.strictNumericEscape(startPos, lineStart, curLine);\n          }\n        }\n\n        return res(String.fromCharCode(octal));\n      }\n\n      return res(String.fromCharCode(ch));\n  }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n  invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  len: number,\n  forceLen: boolean,\n  throwOnInvalid: boolean,\n  errors: HexCharErrorHandlers,\n) {\n  const initialPos = pos;\n  let n;\n  ({ n, pos } = readInt(\n    input,\n    pos,\n    lineStart,\n    curLine,\n    16,\n    len,\n    forceLen,\n    false,\n    errors,\n    /* bailOnError */ !throwOnInvalid,\n  ));\n  if (n === null) {\n    if (throwOnInvalid) {\n      errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n    } else {\n      pos = initialPos - 1;\n    }\n  }\n  return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n  numericSeparatorInEscapeSequence(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  unexpectedNumericSeparator(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  // It can return \"true\" to indicate that the error was handled\n  // and the int parsing should continue.\n  invalidDigit(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n    radix: number,\n  ): boolean;\n};\n\nexport function readInt(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  radix: number,\n  len: number | undefined,\n  forceLen: boolean,\n  allowNumSeparator: boolean | \"bail\",\n  errors: IntErrorHandlers,\n  bailOnError: boolean,\n) {\n  const start = pos;\n  const forbiddenSiblings =\n    radix === 16\n      ? forbiddenNumericSeparatorSiblings.hex\n      : forbiddenNumericSeparatorSiblings.decBinOct;\n  const isAllowedSibling =\n    radix === 16\n      ? isAllowedNumericSeparatorSibling.hex\n      : radix === 10\n        ? isAllowedNumericSeparatorSibling.dec\n        : radix === 8\n          ? isAllowedNumericSeparatorSibling.oct\n          : isAllowedNumericSeparatorSibling.bin;\n\n  let invalid = false;\n  let total = 0;\n\n  for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n    const code = input.charCodeAt(pos);\n    let val;\n\n    if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n      const prev = input.charCodeAt(pos - 1);\n      const next = input.charCodeAt(pos + 1);\n\n      if (!allowNumSeparator) {\n        if (bailOnError) return { n: null, pos };\n        errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n      } else if (\n        Number.isNaN(next) ||\n        !isAllowedSibling(next) ||\n        forbiddenSiblings.has(prev) ||\n        forbiddenSiblings.has(next)\n      ) {\n        if (bailOnError) return { n: null, pos };\n        errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n      }\n\n      // Ignore this _ character\n      ++pos;\n      continue;\n    }\n\n    if (code >= charCodes.lowercaseA) {\n      val = code - charCodes.lowercaseA + charCodes.lineFeed;\n    } else if (code >= charCodes.uppercaseA) {\n      val = code - charCodes.uppercaseA + charCodes.lineFeed;\n    } else if (charCodes.isDigit(code)) {\n      val = code - charCodes.digit0; // 0-9\n    } else {\n      val = Infinity;\n    }\n    if (val >= radix) {\n      // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n      // breaking the loop (this is used for error recovery).\n      if (val <= 9 && bailOnError) {\n        return { n: null, pos };\n      } else if (\n        val <= 9 &&\n        errors.invalidDigit(pos, lineStart, curLine, radix)\n      ) {\n        val = 0;\n      } else if (forceLen) {\n        val = 0;\n        invalid = true;\n      } else {\n        break;\n      }\n    }\n    ++pos;\n    total = total * radix + val;\n  }\n  if (pos === start || (len != null && pos - start !== len) || invalid) {\n    return { n: null, pos };\n  }\n\n  return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n  invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  throwOnInvalid: boolean,\n  errors: CodePointErrorHandlers,\n) {\n  const ch = input.charCodeAt(pos);\n  let code;\n\n  if (ch === charCodes.leftCurlyBrace) {\n    ++pos;\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      input.indexOf(\"}\", pos) - pos,\n      true,\n      throwOnInvalid,\n      errors,\n    ));\n    ++pos;\n    if (code !== null && code > 0x10ffff) {\n      if (throwOnInvalid) {\n        errors.invalidCodePoint(pos, lineStart, curLine);\n      } else {\n        return { code: null, pos };\n      }\n    }\n  } else {\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      4,\n      false,\n      throwOnInvalid,\n      errors,\n    ));\n  }\n  return { code, pos };\n}\n","export const STATEMENT_OR_BLOCK_KEYS = [\"consequent\", \"body\", \"alternate\"];\nexport const FLATTENABLE_KEYS = [\"body\", \"expressions\"];\nexport const FOR_INIT_KEYS = [\"left\", \"init\"];\nexport const COMMENT_KEYS = [\n  \"leadingComments\",\n  \"trailingComments\",\n  \"innerComments\",\n] as const;\n\nexport const LOGICAL_OPERATORS = [\"||\", \"&&\", \"??\"];\nexport const UPDATE_OPERATORS = [\"++\", \"--\"];\n\nexport const BOOLEAN_NUMBER_BINARY_OPERATORS = [\">\", \"<\", \">=\", \"<=\"];\nexport const EQUALITY_BINARY_OPERATORS = [\"==\", \"===\", \"!=\", \"!==\"];\nexport const COMPARISON_BINARY_OPERATORS = [\n  ...EQUALITY_BINARY_OPERATORS,\n  \"in\",\n  \"instanceof\",\n];\nexport const BOOLEAN_BINARY_OPERATORS = [\n  ...COMPARISON_BINARY_OPERATORS,\n  ...BOOLEAN_NUMBER_BINARY_OPERATORS,\n];\nexport const NUMBER_BINARY_OPERATORS = [\n  \"-\",\n  \"/\",\n  \"%\",\n  \"*\",\n  \"**\",\n  \"&\",\n  \"|\",\n  \">>\",\n  \">>>\",\n  \"<<\",\n  \"^\",\n];\nexport const BINARY_OPERATORS = [\n  \"+\",\n  ...NUMBER_BINARY_OPERATORS,\n  ...BOOLEAN_BINARY_OPERATORS,\n  \"|>\",\n];\n\nexport const ASSIGNMENT_OPERATORS = [\n  \"=\",\n  \"+=\",\n  ...NUMBER_BINARY_OPERATORS.map(op => op + \"=\"),\n  ...LOGICAL_OPERATORS.map(op => op + \"=\"),\n];\n\nexport const BOOLEAN_UNARY_OPERATORS = [\"delete\", \"!\"];\nexport const NUMBER_UNARY_OPERATORS = [\"+\", \"-\", \"~\"];\nexport const STRING_UNARY_OPERATORS = [\"typeof\"];\nexport const UNARY_OPERATORS = [\n  \"void\",\n  \"throw\",\n  ...BOOLEAN_UNARY_OPERATORS,\n  ...NUMBER_UNARY_OPERATORS,\n  ...STRING_UNARY_OPERATORS,\n];\n\nexport const INHERIT_KEYS = {\n  optional: [\"typeAnnotation\", \"typeParameters\", \"returnType\"],\n  force: [\"start\", \"loc\", \"end\"],\n} as const;\n\nexport const BLOCK_SCOPED_SYMBOL = Symbol.for(\"var used to be block scoped\");\nexport const NOT_LOCAL_BINDING = Symbol.for(\n  \"should not be considered a local binding\",\n);\n","import is from \"../validators/is.ts\";\nimport { validateField, validateChild } from \"../validators/validate.ts\";\nimport type * as t from \"../index.ts\";\n\nexport const VISITOR_KEYS: Record<string, string[]> = {};\nexport const ALIAS_KEYS: Partial<Record<NodeTypesWithoutComment, string[]>> =\n  {};\nexport const FLIPPED_ALIAS_KEYS: Record<string, NodeTypesWithoutComment[]> = {};\nexport const NODE_FIELDS: Record<string, FieldDefinitions> = {};\nexport const BUILDER_KEYS: Record<string, string[]> = {};\nexport const DEPRECATED_KEYS: Record<string, NodeTypesWithoutComment> = {};\nexport const NODE_PARENT_VALIDATIONS: Record<string, Validator> = {};\n\nfunction getType(val: any) {\n  if (Array.isArray(val)) {\n    return \"array\";\n  } else if (val === null) {\n    return \"null\";\n  } else {\n    return typeof val;\n  }\n}\n\ntype NodeTypesWithoutComment = t.Node[\"type\"] | keyof t.Aliases;\n\ntype NodeTypes = NodeTypesWithoutComment | t.Comment[\"type\"];\n\ntype PrimitiveTypes = ReturnType<typeof getType>;\n\ntype FieldDefinitions = {\n  [x: string]: FieldOptions;\n};\n\ntype DefineTypeOpts = {\n  fields?: FieldDefinitions;\n  visitor?: Array<string>;\n  aliases?: Array<string>;\n  builder?: Array<string>;\n  inherits?: NodeTypes;\n  deprecatedAlias?: string;\n  validate?: Validator;\n};\n\nexport type Validator = (\n  | { type: PrimitiveTypes }\n  | { each: Validator }\n  | { chainOf: Validator[] }\n  | { oneOf: any[] }\n  | { oneOfNodeTypes: NodeTypes[] }\n  | { oneOfNodeOrValueTypes: (NodeTypes | PrimitiveTypes)[] }\n  | { shapeOf: { [x: string]: FieldOptions } }\n  | object\n) &\n  ((node: t.Node, key: string, val: any) => void);\n\nexport type FieldOptions = {\n  default?: string | number | boolean | [];\n  optional?: boolean;\n  deprecated?: boolean;\n  validate?: Validator;\n};\n\nexport function validate(validate: Validator): FieldOptions {\n  return { validate };\n}\n\nexport function validateType(...typeNames: NodeTypes[]) {\n  return validate(assertNodeType(...typeNames));\n}\n\nexport function validateOptional(validate: Validator): FieldOptions {\n  return { validate, optional: true };\n}\n\nexport function validateOptionalType(...typeNames: NodeTypes[]): FieldOptions {\n  return { validate: assertNodeType(...typeNames), optional: true };\n}\n\nexport function arrayOf(elementType: Validator): Validator {\n  return chain(assertValueType(\"array\"), assertEach(elementType));\n}\n\nexport function arrayOfType(...typeNames: NodeTypes[]) {\n  return arrayOf(assertNodeType(...typeNames));\n}\n\nexport function validateArrayOfType(...typeNames: NodeTypes[]) {\n  return validate(arrayOfType(...typeNames));\n}\n\nexport function assertEach(callback: Validator): Validator {\n  const childValidator = process.env.BABEL_TYPES_8_BREAKING\n    ? validateChild\n    : () => {};\n\n  function validator(node: t.Node, key: string, val: any) {\n    if (!Array.isArray(val)) return;\n\n    for (let i = 0; i < val.length; i++) {\n      const subkey = `${key}[${i}]`;\n      const v = val[i];\n      callback(node, subkey, v);\n      childValidator(node, subkey, v);\n    }\n  }\n  validator.each = callback;\n  return validator;\n}\n\nexport function assertOneOf(...values: Array<any>): Validator {\n  function validate(node: any, key: string, val: any) {\n    if (!values.includes(val)) {\n      throw new TypeError(\n        `Property ${key} expected value to be one of ${JSON.stringify(\n          values,\n        )} but got ${JSON.stringify(val)}`,\n      );\n    }\n  }\n\n  validate.oneOf = values;\n\n  return validate;\n}\n\nexport function assertNodeType(...types: NodeTypes[]): Validator {\n  function validate(node: t.Node, key: string, val: any) {\n    for (const type of types) {\n      if (is(type, val)) {\n        validateChild(node, key, val);\n        return;\n      }\n    }\n\n    throw new TypeError(\n      `Property ${key} of ${\n        node.type\n      } expected node to be of a type ${JSON.stringify(\n        types,\n      )} but instead got ${JSON.stringify(val?.type)}`,\n    );\n  }\n\n  validate.oneOfNodeTypes = types;\n\n  return validate;\n}\n\nexport function assertNodeOrValueType(\n  ...types: (NodeTypes | PrimitiveTypes)[]\n): Validator {\n  function validate(node: t.Node, key: string, val: any) {\n    for (const type of types) {\n      if (getType(val) === type || is(type, val)) {\n        validateChild(node, key, val);\n        return;\n      }\n    }\n\n    throw new TypeError(\n      `Property ${key} of ${\n        node.type\n      } expected node to be of a type ${JSON.stringify(\n        types,\n      )} but instead got ${JSON.stringify(val?.type)}`,\n    );\n  }\n\n  validate.oneOfNodeOrValueTypes = types;\n\n  return validate;\n}\n\nexport function assertValueType(type: PrimitiveTypes): Validator {\n  function validate(node: t.Node, key: string, val: any) {\n    const valid = getType(val) === type;\n\n    if (!valid) {\n      throw new TypeError(\n        `Property ${key} expected type of ${type} but got ${getType(val)}`,\n      );\n    }\n  }\n\n  validate.type = type;\n\n  return validate;\n}\n\nexport function assertShape(shape: { [x: string]: FieldOptions }): Validator {\n  function validate(node: t.Node, key: string, val: any) {\n    const errors = [];\n    for (const property of Object.keys(shape)) {\n      try {\n        validateField(node, property, val[property], shape[property]);\n      } catch (error) {\n        if (error instanceof TypeError) {\n          errors.push(error.message);\n          continue;\n        }\n        throw error;\n      }\n    }\n    if (errors.length) {\n      throw new TypeError(\n        `Property ${key} of ${\n          node.type\n        } expected to have the following:\\n${errors.join(\"\\n\")}`,\n      );\n    }\n  }\n\n  validate.shapeOf = shape;\n\n  return validate;\n}\n\nexport function assertOptionalChainStart(): Validator {\n  function validate(node: t.Node) {\n    let current = node;\n    while (node) {\n      const { type } = current;\n      if (type === \"OptionalCallExpression\") {\n        if (current.optional) return;\n        current = current.callee;\n        continue;\n      }\n\n      if (type === \"OptionalMemberExpression\") {\n        if (current.optional) return;\n        current = current.object;\n        continue;\n      }\n\n      break;\n    }\n\n    throw new TypeError(\n      `Non-optional ${node.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${current?.type}`,\n    );\n  }\n\n  return validate;\n}\n\nexport function chain(...fns: Array<Validator>): Validator {\n  function validate(...args: Parameters<Validator>) {\n    for (const fn of fns) {\n      fn(...args);\n    }\n  }\n  validate.chainOf = fns;\n\n  if (\n    fns.length >= 2 &&\n    \"type\" in fns[0] &&\n    fns[0].type === \"array\" &&\n    !(\"each\" in fns[1])\n  ) {\n    throw new Error(\n      `An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.`,\n    );\n  }\n\n  return validate;\n}\n\nconst validTypeOpts = new Set([\n  \"aliases\",\n  \"builder\",\n  \"deprecatedAlias\",\n  \"fields\",\n  \"inherits\",\n  \"visitor\",\n  \"validate\",\n]);\nconst validFieldKeys = new Set([\n  \"default\",\n  \"optional\",\n  \"deprecated\",\n  \"validate\",\n]);\n\nconst store = {} as Record<string, DefineTypeOpts>;\n\n// Wraps defineType to ensure these aliases are included.\nexport function defineAliasedType(...aliases: string[]) {\n  return (type: string, opts: DefineTypeOpts = {}) => {\n    let defined = opts.aliases;\n    if (!defined) {\n      if (opts.inherits) defined = store[opts.inherits].aliases?.slice();\n      defined ??= [];\n      opts.aliases = defined;\n    }\n    const additional = aliases.filter(a => !defined.includes(a));\n    defined.unshift(...additional);\n    defineType(type, opts);\n  };\n}\n\nexport default function defineType(type: string, opts: DefineTypeOpts = {}) {\n  const inherits = (opts.inherits && store[opts.inherits]) || {};\n\n  let fields = opts.fields;\n  if (!fields) {\n    fields = {};\n    if (inherits.fields) {\n      const keys = Object.getOwnPropertyNames(inherits.fields);\n      for (const key of keys) {\n        const field = inherits.fields[key];\n        const def = field.default;\n        if (\n          Array.isArray(def) ? def.length > 0 : def && typeof def === \"object\"\n        ) {\n          throw new Error(\n            \"field defaults can only be primitives or empty arrays currently\",\n          );\n        }\n        fields[key] = {\n          default: Array.isArray(def) ? [] : def,\n          optional: field.optional,\n          deprecated: field.deprecated,\n          validate: field.validate,\n        };\n      }\n    }\n  }\n\n  const visitor: Array<string> = opts.visitor || inherits.visitor || [];\n  const aliases: Array<string> = opts.aliases || inherits.aliases || [];\n  const builder: Array<string> =\n    opts.builder || inherits.builder || opts.visitor || [];\n\n  for (const k of Object.keys(opts)) {\n    if (!validTypeOpts.has(k)) {\n      throw new Error(`Unknown type option \"${k}\" on ${type}`);\n    }\n  }\n\n  if (opts.deprecatedAlias) {\n    DEPRECATED_KEYS[opts.deprecatedAlias] = type as NodeTypesWithoutComment;\n  }\n\n  // ensure all field keys are represented in `fields`\n  for (const key of visitor.concat(builder)) {\n    fields[key] = fields[key] || {};\n  }\n\n  for (const key of Object.keys(fields)) {\n    const field = fields[key];\n\n    if (field.default !== undefined && !builder.includes(key)) {\n      field.optional = true;\n    }\n    if (field.default === undefined) {\n      field.default = null;\n    } else if (!field.validate && field.default != null) {\n      field.validate = assertValueType(getType(field.default));\n    }\n\n    for (const k of Object.keys(field)) {\n      if (!validFieldKeys.has(k)) {\n        throw new Error(`Unknown field key \"${k}\" on ${type}.${key}`);\n      }\n    }\n  }\n\n  VISITOR_KEYS[type] = opts.visitor = visitor;\n  BUILDER_KEYS[type] = opts.builder = builder;\n  NODE_FIELDS[type] = opts.fields = fields;\n  ALIAS_KEYS[type as NodeTypesWithoutComment] = opts.aliases = aliases;\n  aliases.forEach(alias => {\n    FLIPPED_ALIAS_KEYS[alias] = FLIPPED_ALIAS_KEYS[alias] || [];\n    FLIPPED_ALIAS_KEYS[alias].push(type as NodeTypesWithoutComment);\n  });\n\n  if (opts.validate) {\n    NODE_PARENT_VALIDATIONS[type] = opts.validate;\n  }\n\n  store[type] = opts;\n}\n","import is from \"../validators/is.ts\";\nimport isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isKeyword, isReservedWord } from \"@babel/helper-validator-identifier\";\nimport type * as t from \"../index.ts\";\nimport { readStringContents } from \"@babel/helper-string-parser\";\n\nimport {\n  BINARY_OPERATORS,\n  LOGICAL_OPERATORS,\n  ASSIGNMENT_OPERATORS,\n  UNARY_OPERATORS,\n  UPDATE_OPERATORS,\n} from \"../constants/index.ts\";\n\nimport {\n  defineAliasedType,\n  assertShape,\n  assertOptionalChainStart,\n  assertValueType,\n  assertNodeType,\n  assertNodeOrValueType,\n  assertEach,\n  chain,\n  assertOneOf,\n  validateOptional,\n  type Validator,\n  arrayOf,\n  arrayOfType,\n  validateArrayOfType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Standardized\");\n\ndefineType(\"ArrayExpression\", {\n  fields: {\n    elements: {\n      validate: arrayOf(\n        assertNodeOrValueType(\"null\", \"Expression\", \"SpreadElement\"),\n      ),\n      default:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? []\n          : undefined,\n    },\n  },\n  visitor: [\"elements\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"AssignmentExpression\", {\n  fields: {\n    operator: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"string\")\n          : Object.assign(\n              (function () {\n                const identifier = assertOneOf(...ASSIGNMENT_OPERATORS);\n                const pattern = assertOneOf(\"=\");\n\n                return function (node: t.AssignmentExpression, key, val) {\n                  const validator = is(\"Pattern\", node.left)\n                    ? pattern\n                    : identifier;\n                  validator(node, key, val);\n                } as Validator;\n              })(),\n              { type: \"string\" },\n            ),\n    },\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\", \"OptionalMemberExpression\")\n          : assertNodeType(\n              \"Identifier\",\n              \"MemberExpression\",\n              \"OptionalMemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"BinaryExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...BINARY_OPERATORS),\n    },\n    left: {\n      validate: (function () {\n        const expression = assertNodeType(\"Expression\");\n        const inOp = assertNodeType(\"Expression\", \"PrivateName\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.BinaryExpression, key, val) {\n            const validator = node.operator === \"in\" ? inOp : expression;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `operator` property\n          { oneOfNodeTypes: [\"Expression\", \"PrivateName\"] },\n        );\n        return validator;\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n});\n\ndefineType(\"InterpreterDirective\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"Directive\", {\n  visitor: [\"value\"],\n  fields: {\n    value: {\n      validate: assertNodeType(\"DirectiveLiteral\"),\n    },\n  },\n});\n\ndefineType(\"DirectiveLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"BlockStatement\", {\n  builder: [\"body\", \"directives\"],\n  visitor: [\"directives\", \"body\"],\n  fields: {\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\", \"Statement\"],\n});\n\ndefineType(\"BreakStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"CallExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"callee\", \"arguments\", \"typeArguments\"]\n    : [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\", \"Super\", \"V8IntrinsicIdentifier\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n    ...(process.env.BABEL_TYPES_8_BREAKING\n      ? {}\n      : {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"CatchClause\", {\n  visitor: [\"param\", \"body\"],\n  fields: {\n    param: {\n      validate: assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\"Scopable\", \"BlockParent\"],\n});\n\ndefineType(\"ConditionalExpression\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    alternate: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Expression\", \"Conditional\"],\n});\n\ndefineType(\"ContinueStatement\", {\n  visitor: [\"label\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n  },\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n});\n\ndefineType(\"DebuggerStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"DoWhileStatement\", {\n  builder: [\"test\", \"body\"],\n  visitor: [\"body\", \"test\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n});\n\ndefineType(\"EmptyStatement\", {\n  aliases: [\"Statement\"],\n});\n\ndefineType(\"ExpressionStatement\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Statement\", \"ExpressionWrapper\"],\n});\n\ndefineType(\"File\", {\n  builder: [\"program\", \"comments\", \"tokens\"],\n  visitor: [\"program\"],\n  fields: {\n    program: {\n      validate: assertNodeType(\"Program\"),\n    },\n    comments: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? Object.assign(() => {}, {\n              each: { oneOfNodeTypes: [\"CommentBlock\", \"CommentLine\"] },\n            })\n          : assertEach(assertNodeType(\"CommentBlock\", \"CommentLine\")),\n      optional: true,\n    },\n    tokens: {\n      // todo(ts): add Token type\n      validate: assertEach(Object.assign(() => {}, { type: \"any\" })),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForInStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"VariableDeclaration\", \"LVal\")\n          : assertNodeType(\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"ForStatement\", {\n  visitor: [\"init\", \"test\", \"update\", \"body\"],\n  aliases: [\"Scopable\", \"Statement\", \"For\", \"BlockParent\", \"Loop\"],\n  fields: {\n    init: {\n      validate: assertNodeType(\"VariableDeclaration\", \"Expression\"),\n      optional: true,\n    },\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    update: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\nexport const functionCommon = () => ({\n  params: validateArrayOfType(\"Identifier\", \"Pattern\", \"RestElement\"),\n  generator: {\n    default: false,\n  },\n  async: {\n    default: false,\n  },\n});\n\nexport const functionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeParameterDeclaration\", \"TSTypeParameterDeclaration\")\n      : assertNodeType(\n          \"TypeParameterDeclaration\",\n          \"TSTypeParameterDeclaration\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n});\n\nexport const functionDeclarationCommon = () => ({\n  ...functionCommon(),\n  declare: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  id: {\n    validate: assertNodeType(\"Identifier\"),\n    optional: true, // May be null for `export default function`\n  },\n});\n\ndefineType(\"FunctionDeclaration\", {\n  builder: [\"id\", \"params\", \"body\", \"generator\", \"async\"],\n  visitor: [\n    \"id\",\n    \"typeParameters\",\n    \"params\",\n    \"predicate\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Statement\",\n    \"Pureish\",\n    \"Declaration\",\n  ],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\ndefineType(\"FunctionExpression\", {\n  inherits: \"FunctionDeclaration\",\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\nexport const patternLikeCommon = () => ({\n  typeAnnotation: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n      : assertNodeType(\n          \"TypeAnnotation\",\n          \"TSTypeAnnotation\",\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          \"Noop\",\n        ),\n    optional: true,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"Identifier\", {\n  builder: [\"name\"],\n  visitor: [\"typeAnnotation\", \"decorators\" /* for legacy param decorators */],\n  aliases: [\"Expression\", \"PatternLike\", \"LVal\", \"TSEntityName\"],\n  fields: {\n    ...patternLikeCommon(),\n    name: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  if (!isValidIdentifier(val, false)) {\n                    throw new TypeError(\n                      `\"${val}\" is not a valid identifier name`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent, key, node) {\n          const match = /\\.(\\w+)$/.exec(key);\n          if (!match) return;\n\n          const [, parentKey] = match;\n          const nonComp = { computed: false };\n\n          // We can't check if `parent.property === node`, because nodes are validated\n          // before replacing them in the AST.\n          if (parentKey === \"property\") {\n            if (is(\"MemberExpression\", parent, nonComp)) return;\n            if (is(\"OptionalMemberExpression\", parent, nonComp)) return;\n          } else if (parentKey === \"key\") {\n            if (is(\"Property\", parent, nonComp)) return;\n            if (is(\"Method\", parent, nonComp)) return;\n          } else if (parentKey === \"exported\") {\n            if (is(\"ExportSpecifier\", parent)) return;\n          } else if (parentKey === \"imported\") {\n            if (is(\"ImportSpecifier\", parent, { imported: node })) return;\n          } else if (parentKey === \"meta\") {\n            if (is(\"MetaProperty\", parent, { meta: node })) return;\n          }\n\n          if (\n            // Ideally we should call isStrictReservedWord if this node is a descendant\n            // of a block in strict mode. Also, we should pass the inModule option so\n            // we can disable \"await\" in module.\n            (isKeyword(node.name) || isReservedWord(node.name, false)) &&\n            // Even if \"this\" is a keyword, we are using the Identifier\n            // node to represent it.\n            node.name !== \"this\"\n          ) {\n            throw new TypeError(`\"${node.name}\" is not a valid identifier`);\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"IfStatement\", {\n  visitor: [\"test\", \"consequent\", \"alternate\"],\n  aliases: [\"Statement\", \"Conditional\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    consequent: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    alternate: {\n      optional: true,\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"LabeledStatement\", {\n  visitor: [\"label\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    label: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"StringLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NumericLiteral\", {\n  builder: [\"value\"],\n  deprecatedAlias: \"NumberLiteral\",\n  fields: {\n    value: {\n      validate: chain(\n        assertValueType(\"number\"),\n        Object.assign(\n          function (node, key, val) {\n            if (1 / val < 0 || !Number.isFinite(val)) {\n              const error = new Error(\n                \"NumericLiterals must be non-negative finite numbers. \" +\n                  `You can use t.valueToNode(${val}) instead.`,\n              );\n              if (process.env.BABEL_8_BREAKING) {\n                // TODO(@nicolo-ribaudo) Fix regenerator to not pass negative\n                // numbers here.\n                if (!IS_STANDALONE) {\n                  if (!new Error().stack.includes(\"regenerator\")) {\n                    throw error;\n                  }\n                }\n              } else {\n                // TODO: Enable this warning once regenerator is fixed.\n                // https://github.com/facebook/regenerator/pull/680\n                // console.warn(error);\n              }\n            }\n          } satisfies Validator,\n          { type: \"number\" },\n        ),\n      ),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"NullLiteral\", {\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"BooleanLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"boolean\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"RegExpLiteral\", {\n  builder: [\"pattern\", \"flags\"],\n  deprecatedAlias: \"RegexLiteral\",\n  aliases: [\"Expression\", \"Pureish\", \"Literal\"],\n  fields: {\n    pattern: {\n      validate: assertValueType(\"string\"),\n    },\n    flags: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"string\"),\n              Object.assign(\n                function (node, key, val) {\n                  const invalid = /[^gimsuy]/.exec(val);\n                  if (invalid) {\n                    throw new TypeError(\n                      `\"${invalid[0]}\" is not a valid RegExp flag`,\n                    );\n                  }\n                } as Validator,\n                { type: \"string\" },\n              ),\n            )\n          : assertValueType(\"string\"),\n      default: \"\",\n    },\n  },\n});\n\ndefineType(\"LogicalExpression\", {\n  builder: [\"operator\", \"left\", \"right\"],\n  visitor: [\"left\", \"right\"],\n  aliases: [\"Binary\", \"Expression\"],\n  fields: {\n    operator: {\n      validate: assertOneOf(...LOGICAL_OPERATORS),\n    },\n    left: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"MemberExpression\", {\n  builder: [\n    \"object\",\n    \"property\",\n    \"computed\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"optional\"]\n      : []),\n  ],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\", \"LVal\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\", \"Super\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\", \"PrivateName\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (\n          node: t.MemberExpression,\n          key,\n          val,\n        ) {\n          const validator: Validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\"Expression\", \"Identifier\", \"PrivateName\"];\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? {\n          optional: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }\n      : {}),\n  },\n});\n\ndefineType(\"NewExpression\", { inherits: \"CallExpression\" });\n\ndefineType(\"Program\", {\n  // Note: We explicitly leave 'interpreter' out here because it is\n  // conceptually comment-like, and Babel does not traverse comments either.\n  visitor: [\"directives\", \"body\"],\n  builder: [\"body\", \"directives\", \"sourceType\", \"interpreter\"],\n  fields: {\n    sourceType: {\n      validate: assertOneOf(\"script\", \"module\"),\n      default: \"script\",\n    },\n    interpreter: {\n      validate: assertNodeType(\"InterpreterDirective\"),\n      default: null,\n      optional: true,\n    },\n    directives: {\n      validate: arrayOfType(\"Directive\"),\n      default: [],\n    },\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"Block\"],\n});\n\ndefineType(\"ObjectExpression\", {\n  visitor: [\"properties\"],\n  aliases: [\"Expression\"],\n  fields: {\n    properties: validateArrayOfType(\n      \"ObjectMethod\",\n      \"ObjectProperty\",\n      \"SpreadElement\",\n    ),\n  },\n});\n\ndefineType(\"ObjectMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"computed\", \"generator\", \"async\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n      ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n        ? { default: \"method\" }\n        : {}),\n    },\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = function (node: t.ObjectMethod, key, val) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n        // @ts-expect-error todo(ts): can be discriminated union by `computed` property\n        validator.oneOfNodeTypes = [\n          \"Expression\",\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        ];\n        return validator;\n      })(),\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n  aliases: [\n    \"UserWhitespacable\",\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"ObjectMember\",\n  ],\n});\n\ndefineType(\"ObjectProperty\", {\n  builder: [\n    \"key\",\n    \"value\",\n    \"computed\",\n    \"shorthand\",\n    ...(!process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? [\"decorators\"]\n      : []),\n  ],\n  fields: {\n    computed: {\n      default: false,\n    },\n    key: {\n      validate: (function () {\n        const normal = process.env.BABEL_8_BREAKING\n          ? assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              \"PrivateName\",\n            )\n          : assertNodeType(\n              \"Identifier\",\n              \"StringLiteral\",\n              \"NumericLiteral\",\n              \"BigIntLiteral\",\n              // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n              \"DecimalLiteral\",\n              \"PrivateName\",\n            );\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.ObjectProperty, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          {\n            // todo(ts): can be discriminated union by `computed` property\n            oneOfNodeTypes: process.env.BABEL_8_BREAKING\n              ? [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"PrivateName\",\n                ]\n              : [\n                  \"Expression\",\n                  \"Identifier\",\n                  \"StringLiteral\",\n                  \"NumericLiteral\",\n                  \"BigIntLiteral\",\n                  \"DecimalLiteral\",\n                  \"PrivateName\",\n                ],\n          },\n        );\n        return validator;\n      })(),\n    },\n    value: {\n      // Value may be PatternLike if this is an AssignmentProperty\n      // https://github.com/babel/babylon/issues/434\n      validate: assertNodeType(\"Expression\", \"PatternLike\"),\n    },\n    shorthand: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.ObjectProperty, key, shorthand) {\n                  if (!shorthand) return;\n\n                  if (node.computed) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if computed is true\",\n                    );\n                  }\n\n                  if (!is(\"Identifier\", node.key)) {\n                    throw new TypeError(\n                      \"Property shorthand of ObjectProperty cannot be true if key is not an Identifier\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n  visitor: [\"key\", \"value\", \"decorators\"],\n  aliases: [\"UserWhitespacable\", \"Property\", \"ObjectMember\"],\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const pattern = assertNodeType(\n            \"Identifier\",\n            \"Pattern\",\n            \"TSAsExpression\",\n            \"TSSatisfiesExpression\",\n            \"TSNonNullExpression\",\n            \"TSTypeAssertion\",\n          );\n          const expression = assertNodeType(\"Expression\");\n\n          return function (parent, key, node) {\n            const validator = is(\"ObjectPattern\", parent)\n              ? pattern\n              : expression;\n            validator(node, \"value\", node.value);\n          };\n        })(),\n});\n\ndefineType(\"RestElement\", {\n  visitor: [\"argument\", \"typeAnnotation\"],\n  builder: [\"argument\"],\n  aliases: [\"LVal\", \"PatternLike\"],\n  deprecatedAlias: \"RestProperty\",\n  fields: {\n    ...patternLikeCommon(),\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\n              \"Identifier\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"MemberExpression\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ),\n    },\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? function (parent: t.ArrayPattern | t.ObjectPattern, key) {\n          const match = /(\\w+)\\[(\\d+)\\]/.exec(key);\n          if (!match) throw new Error(\"Internal Babel error: malformed key.\");\n\n          const [, listKey, index] = match as unknown as [\n            string,\n            keyof typeof parent,\n            string,\n          ];\n          if ((parent[listKey] as t.Node[]).length > +index + 1) {\n            throw new TypeError(\n              `RestElement must be last element of ${listKey}`,\n            );\n          }\n        }\n      : undefined,\n});\n\ndefineType(\"ReturnStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"SequenceExpression\", {\n  visitor: [\"expressions\"],\n  fields: {\n    expressions: validateArrayOfType(\"Expression\"),\n  },\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"ParenthesizedExpression\", {\n  visitor: [\"expression\"],\n  aliases: [\"Expression\", \"ExpressionWrapper\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"SwitchCase\", {\n  visitor: [\"test\", \"consequent\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    consequent: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"SwitchStatement\", {\n  visitor: [\"discriminant\", \"cases\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Scopable\"],\n  fields: {\n    discriminant: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    cases: validateArrayOfType(\"SwitchCase\"),\n  },\n});\n\ndefineType(\"ThisExpression\", {\n  aliases: process.env.BABEL_8_BREAKING\n    ? [\"Expression\", \"TSEntityName\"]\n    : [\"Expression\"],\n});\n\ndefineType(\"ThrowStatement\", {\n  visitor: [\"argument\"],\n  aliases: [\"Statement\", \"Terminatorless\", \"CompletionStatement\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"TryStatement\", {\n  visitor: [\"block\", \"handler\", \"finalizer\"],\n  aliases: [\"Statement\"],\n  fields: {\n    block: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"BlockStatement\"),\n              Object.assign(\n                function (node: t.TryStatement) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (!node.handler && !node.finalizer) {\n                    throw new TypeError(\n                      \"TryStatement expects either a handler or finalizer, or both\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"BlockStatement\"] },\n              ),\n            )\n          : assertNodeType(\"BlockStatement\"),\n    },\n    handler: {\n      optional: true,\n      validate: assertNodeType(\"CatchClause\"),\n    },\n    finalizer: {\n      optional: true,\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"UnaryExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: true,\n    },\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UNARY_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\", \"Expression\"],\n});\n\ndefineType(\"UpdateExpression\", {\n  builder: [\"operator\", \"argument\", \"prefix\"],\n  fields: {\n    prefix: {\n      default: false,\n    },\n    argument: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"Expression\")\n          : assertNodeType(\"Identifier\", \"MemberExpression\"),\n    },\n    operator: {\n      validate: assertOneOf(...UPDATE_OPERATORS),\n    },\n  },\n  visitor: [\"argument\"],\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"VariableDeclaration\", {\n  builder: [\"kind\", \"declarations\"],\n  visitor: [\"declarations\"],\n  aliases: [\"Statement\", \"Declaration\"],\n  fields: {\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    kind: {\n      validate: assertOneOf(\n        \"var\",\n        \"let\",\n        \"const\",\n        // https://github.com/tc39/proposal-explicit-resource-management\n        \"using\",\n        // https://github.com/tc39/proposal-async-explicit-resource-management\n        \"await using\",\n      ),\n    },\n    declarations: validateArrayOfType(\"VariableDeclarator\"),\n  },\n  validate:\n    process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n      ? (() => {\n          const withoutInit = assertNodeType(\"Identifier\");\n\n          return function (parent, key, node: t.VariableDeclaration) {\n            if (is(\"ForXStatement\", parent, { left: node })) {\n              if (node.declarations.length !== 1) {\n                throw new TypeError(\n                  `Exactly one VariableDeclarator is required in the VariableDeclaration of a ${parent.type}`,\n                );\n              }\n            } else {\n              node.declarations.forEach(decl => {\n                if (!decl.init) withoutInit(decl, \"id\", decl.id);\n              });\n            }\n          };\n        })()\n      : undefined,\n});\n\ndefineType(\"VariableDeclarator\", {\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertNodeType(\"LVal\")\n          : assertNodeType(\"Identifier\", \"ArrayPattern\", \"ObjectPattern\"),\n    },\n    definite: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    init: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"WhileStatement\", {\n  visitor: [\"test\", \"body\"],\n  aliases: [\"Statement\", \"BlockParent\", \"Loop\", \"While\", \"Scopable\"],\n  fields: {\n    test: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\ndefineType(\"WithStatement\", {\n  visitor: [\"object\", \"body\"],\n  aliases: [\"Statement\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n  },\n});\n\n// --- ES2015 ---\ndefineType(\"AssignmentPattern\", {\n  visitor: [\"left\", \"right\", \"decorators\" /* for legacy param decorators */],\n  builder: [\"left\", \"right\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    left: {\n      validate: assertNodeType(\n        \"Identifier\",\n        \"ObjectPattern\",\n        \"ArrayPattern\",\n        \"MemberExpression\",\n        \"TSAsExpression\",\n        \"TSSatisfiesExpression\",\n        \"TSTypeAssertion\",\n        \"TSNonNullExpression\",\n      ),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    // For TypeScript\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ArrayPattern\", {\n  visitor: [\"elements\", \"typeAnnotation\"],\n  builder: [\"elements\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    elements: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(assertNodeOrValueType(\"null\", \"PatternLike\", \"LVal\")),\n      ),\n    },\n  },\n});\n\ndefineType(\"ArrowFunctionExpression\", {\n  builder: [\"params\", \"body\", \"async\"],\n  visitor: [\"typeParameters\", \"params\", \"predicate\", \"returnType\", \"body\"],\n  aliases: [\n    \"Scopable\",\n    \"Function\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Expression\",\n    \"Pureish\",\n  ],\n  fields: {\n    ...functionCommon(),\n    ...functionTypeAnnotationCommon(),\n    expression: {\n      // https://github.com/babel/babylon/issues/505\n      validate: assertValueType(\"boolean\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\", \"Expression\"),\n    },\n    predicate: {\n      validate: assertNodeType(\"DeclaredPredicate\", \"InferredPredicate\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\n      \"ClassMethod\",\n      \"ClassPrivateMethod\",\n      \"ClassProperty\",\n      \"ClassPrivateProperty\",\n      \"ClassAccessorProperty\",\n      \"TSDeclareMethod\",\n      \"TSIndexSignature\",\n      \"StaticBlock\",\n    ),\n  },\n});\n\ndefineType(\"ClassExpression\", {\n  builder: [\"id\", \"superClass\", \"body\", \"decorators\"],\n  visitor: [\n    \"decorators\",\n    \"id\",\n    \"typeParameters\",\n    \"superClass\",\n    process.env.BABEL_8_BREAKING ? \"superTypeArguments\" : \"superTypeParameters\",\n    \"mixins\",\n    \"implements\",\n    \"body\",\n  ],\n  aliases: [\"Scopable\", \"Class\", \"Expression\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    [process.env.BABEL_8_BREAKING\n      ? \"superTypeArguments\"\n      : \"superTypeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassDeclaration\", {\n  inherits: \"ClassExpression\",\n  aliases: [\"Scopable\", \"Class\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n      // The id may be omitted if this is the child of an\n      // ExportDefaultDeclaration.\n      optional: true,\n    },\n    typeParameters: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n          )\n        : assertNodeType(\n            \"TypeParameterDeclaration\",\n            \"TSTypeParameterDeclaration\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    body: {\n      validate: assertNodeType(\"ClassBody\"),\n    },\n    superClass: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n    [process.env.BABEL_8_BREAKING\n      ? \"superTypeArguments\"\n      : \"superTypeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n    implements: {\n      validate: arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n        \"ClassImplements\",\n      ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    mixins: {\n      validate: assertNodeType(\"InterfaceExtends\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    abstract: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n  },\n  validate:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? undefined\n      : (function () {\n          const identifier = assertNodeType(\"Identifier\");\n          return function (parent, key, node) {\n            if (!is(\"ExportDefaultDeclaration\", parent)) {\n              identifier(node, \"id\", node.id);\n            }\n          };\n        })(),\n});\n\nexport const importAttributes = {\n  attributes: {\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n  assertions: {\n    deprecated: true,\n    optional: true,\n    validate: arrayOfType(\"ImportAttribute\"),\n  },\n};\n\ndefineType(\"ExportAllDeclaration\", {\n  builder: [\"source\"],\n  visitor: [\"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"ExportDefaultDeclaration\", {\n  visitor: [\"declaration\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: validateType(\n      \"TSDeclareFunction\",\n      \"FunctionDeclaration\",\n      \"ClassDeclaration\",\n      \"Expression\",\n    ),\n    exportKind: validateOptional(assertOneOf(\"value\")),\n  },\n});\n\ndefineType(\"ExportNamedDeclaration\", {\n  builder: [\"declaration\", \"specifiers\", \"source\"],\n  visitor: process.env\n    ? [\"declaration\", \"specifiers\", \"source\", \"attributes\"]\n    : [\"declaration\", \"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\n    \"Statement\",\n    \"Declaration\",\n    \"ImportOrExportDeclaration\",\n    \"ExportDeclaration\",\n  ],\n  fields: {\n    declaration: {\n      optional: true,\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Declaration\"),\n              Object.assign(\n                function (node: t.ExportNamedDeclaration, key, val) {\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.specifiers.length) {\n                    throw new TypeError(\n                      \"Only declaration or specifiers is allowed on ExportNamedDeclaration\",\n                    );\n                  }\n\n                  // This validator isn't put at the top level because we can run it\n                  // even if this node doesn't have a parent.\n\n                  if (val && node.source) {\n                    throw new TypeError(\n                      \"Cannot export a declaration from a source\",\n                    );\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Declaration\"] },\n              ),\n            )\n          : assertNodeType(\"Declaration\"),\n    },\n    ...importAttributes,\n    specifiers: {\n      default: [],\n      validate: arrayOf(\n        (function () {\n          const sourced = assertNodeType(\n            \"ExportSpecifier\",\n            \"ExportDefaultSpecifier\",\n            \"ExportNamespaceSpecifier\",\n          );\n          const sourceless = assertNodeType(\"ExportSpecifier\");\n\n          if (\n            !process.env.BABEL_8_BREAKING &&\n            !process.env.BABEL_TYPES_8_BREAKING\n          )\n            return sourced;\n\n          return Object.assign(\n            function (node: t.ExportNamedDeclaration, key, val) {\n              const validator = node.source ? sourced : sourceless;\n              validator(node, key, val);\n            } as Validator,\n            {\n              oneOfNodeTypes: [\n                \"ExportSpecifier\",\n                \"ExportDefaultSpecifier\",\n                \"ExportNamespaceSpecifier\",\n              ],\n            },\n          );\n        })(),\n      ),\n    },\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n      optional: true,\n    },\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n  },\n});\n\ndefineType(\"ExportSpecifier\", {\n  visitor: [\"local\", \"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    exported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    exportKind: {\n      // And TypeScript's \"export { type foo } from\"\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ForOfStatement\", {\n  visitor: [\"left\", \"right\", \"body\"],\n  builder: [\"left\", \"right\", \"body\", \"await\"],\n  aliases: [\n    \"Scopable\",\n    \"Statement\",\n    \"For\",\n    \"BlockParent\",\n    \"Loop\",\n    \"ForXStatement\",\n  ],\n  fields: {\n    left: {\n      validate: (function () {\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          !process.env.BABEL_TYPES_8_BREAKING\n        ) {\n          return assertNodeType(\"VariableDeclaration\", \"LVal\");\n        }\n\n        const declaration = assertNodeType(\"VariableDeclaration\");\n        const lval = assertNodeType(\n          \"Identifier\",\n          \"MemberExpression\",\n          \"ArrayPattern\",\n          \"ObjectPattern\",\n          \"TSAsExpression\",\n          \"TSSatisfiesExpression\",\n          \"TSTypeAssertion\",\n          \"TSNonNullExpression\",\n        );\n\n        return Object.assign(\n          function (node, key, val) {\n            if (is(\"VariableDeclaration\", val)) {\n              declaration(node, key, val);\n            } else {\n              lval(node, key, val);\n            }\n          } as Validator,\n          {\n            oneOfNodeTypes: [\n              \"VariableDeclaration\",\n              \"Identifier\",\n              \"MemberExpression\",\n              \"ArrayPattern\",\n              \"ObjectPattern\",\n              \"TSAsExpression\",\n              \"TSSatisfiesExpression\",\n              \"TSTypeAssertion\",\n              \"TSNonNullExpression\",\n            ],\n          },\n        );\n      })(),\n    },\n    right: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    body: {\n      validate: assertNodeType(\"Statement\"),\n    },\n    await: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"ImportDeclaration\", {\n  builder: [\"specifiers\", \"source\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"specifiers\", \"source\", \"attributes\"]\n    : [\"specifiers\", \"source\", \"attributes\", \"assertions\"],\n  aliases: [\"Statement\", \"Declaration\", \"ImportOrExportDeclaration\"],\n  fields: {\n    ...importAttributes,\n    module: {\n      optional: true,\n      validate: assertValueType(\"boolean\"),\n    },\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    specifiers: validateArrayOfType(\n      \"ImportSpecifier\",\n      \"ImportDefaultSpecifier\",\n      \"ImportNamespaceSpecifier\",\n    ),\n    source: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n    importKind: {\n      // Handle TypeScript/Flowtype's extension \"import type foo from\"\n      // TypeScript doesn't support typeof\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportDefaultSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportNamespaceSpecifier\", {\n  visitor: [\"local\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"ImportSpecifier\", {\n  visitor: [\"imported\", \"local\"],\n  builder: [\"local\", \"imported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    local: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    imported: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    importKind: {\n      // Handle Flowtype's extension \"import {typeof foo} from\"\n      // And TypeScript's \"import { type foo } from\"\n      validate: assertOneOf(\"type\", \"typeof\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ImportExpression\", {\n  visitor: [\"source\", \"options\"],\n  aliases: [\"Expression\"],\n  fields: {\n    phase: {\n      default: null,\n      validate: assertOneOf(\"source\", \"defer\"),\n    },\n    source: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"MetaProperty\", {\n  visitor: [\"meta\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    meta: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertNodeType(\"Identifier\"),\n              Object.assign(\n                function (node: t.MetaProperty, key, val) {\n                  let property;\n                  switch (val.name) {\n                    case \"function\":\n                      property = \"sent\";\n                      break;\n                    case \"new\":\n                      property = \"target\";\n                      break;\n                    case \"import\":\n                      property = \"meta\";\n                      break;\n                  }\n                  if (!is(\"Identifier\", node.property, { name: property })) {\n                    throw new TypeError(\"Unrecognised MetaProperty\");\n                  }\n                } as Validator,\n                { oneOfNodeTypes: [\"Identifier\"] },\n              ),\n            )\n          : assertNodeType(\"Identifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\nexport const classMethodOrPropertyCommon = () => ({\n  abstract: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  accessibility: {\n    validate: assertOneOf(\"public\", \"private\", \"protected\"),\n    optional: true,\n  },\n  static: {\n    default: false,\n  },\n  override: {\n    default: false,\n  },\n  computed: {\n    default: false,\n  },\n  optional: {\n    validate: assertValueType(\"boolean\"),\n    optional: true,\n  },\n  key: {\n    validate: chain(\n      (function () {\n        const normal = assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const computed = assertNodeType(\"Expression\");\n\n        return function (node: any, key: string, val: any) {\n          const validator = node.computed ? computed : normal;\n          validator(node, key, val);\n        };\n      })(),\n      assertNodeType(\n        \"Identifier\",\n        \"StringLiteral\",\n        \"NumericLiteral\",\n        \"BigIntLiteral\",\n        \"Expression\",\n      ),\n    ),\n  },\n});\n\nexport const classMethodOrDeclareMethodCommon = () => ({\n  ...functionCommon(),\n  ...classMethodOrPropertyCommon(),\n  params: validateArrayOfType(\n    \"Identifier\",\n    \"Pattern\",\n    \"RestElement\",\n    \"TSParameterProperty\",\n  ),\n  kind: {\n    validate: assertOneOf(\"get\", \"set\", \"method\", \"constructor\"),\n    default: \"method\",\n  },\n  access: {\n    validate: chain(\n      assertValueType(\"string\"),\n      assertOneOf(\"public\", \"private\", \"protected\"),\n    ),\n    optional: true,\n  },\n  decorators: {\n    validate: arrayOfType(\"Decorator\"),\n    optional: true,\n  },\n});\n\ndefineType(\"ClassMethod\", {\n  aliases: [\"Function\", \"Scopable\", \"BlockParent\", \"FunctionParent\", \"Method\"],\n  builder: [\n    \"kind\",\n    \"key\",\n    \"params\",\n    \"body\",\n    \"computed\",\n    \"static\",\n    \"generator\",\n    \"async\",\n  ],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"ObjectPattern\", {\n  visitor: [\n    \"properties\",\n    \"typeAnnotation\",\n    \"decorators\" /* for legacy param decorators */,\n  ],\n  builder: [\"properties\"],\n  aliases: [\"Pattern\", \"PatternLike\", \"LVal\"],\n  fields: {\n    ...patternLikeCommon(),\n    properties: validateArrayOfType(\"RestElement\", \"ObjectProperty\"),\n  },\n});\n\ndefineType(\"SpreadElement\", {\n  visitor: [\"argument\"],\n  aliases: [\"UnaryLike\"],\n  deprecatedAlias: \"SpreadProperty\",\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\n  \"Super\",\n  process.env.BABEL_8_BREAKING\n    ? undefined\n    : {\n        aliases: [\"Expression\"],\n      },\n);\n\ndefineType(\"TaggedTemplateExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"tag\", \"typeArguments\", \"quasi\"]\n    : [\"tag\", \"typeParameters\", \"quasi\"],\n  builder: [\"tag\", \"quasi\"],\n  aliases: [\"Expression\"],\n  fields: {\n    tag: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    quasi: {\n      validate: assertNodeType(\"TemplateLiteral\"),\n    },\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]: {\n      validate: assertNodeType(\n        \"TypeParameterInstantiation\",\n        \"TSTypeParameterInstantiation\",\n      ),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TemplateElement\", {\n  builder: [\"value\", \"tail\"],\n  fields: {\n    value: {\n      validate: chain(\n        assertShape({\n          raw: {\n            validate: assertValueType(\"string\"),\n          },\n          cooked: {\n            validate: assertValueType(\"string\"),\n            optional: true,\n          },\n        }),\n        function templateElementCookedValidator(node: t.TemplateElement) {\n          const raw = node.value.raw;\n\n          let unterminatedCalled = false;\n\n          const error = () => {\n            // unreachable\n            throw new Error(\"Internal @babel/types error.\");\n          };\n          const { str, firstInvalidLoc } = readStringContents(\n            \"template\",\n            raw,\n            0,\n            0,\n            0,\n            {\n              unterminated() {\n                unterminatedCalled = true;\n              },\n              strictNumericEscape: error,\n              invalidEscapeSequence: error,\n              numericSeparatorInEscapeSequence: error,\n              unexpectedNumericSeparator: error,\n              invalidDigit: error,\n              invalidCodePoint: error,\n            },\n          );\n          if (!unterminatedCalled) throw new Error(\"Invalid raw\");\n\n          node.value.cooked = firstInvalidLoc ? null : str;\n        },\n      ),\n    },\n    tail: {\n      default: false,\n    },\n  },\n});\n\ndefineType(\"TemplateLiteral\", {\n  visitor: [\"quasis\", \"expressions\"],\n  aliases: [\"Expression\", \"Literal\"],\n  fields: {\n    quasis: validateArrayOfType(\"TemplateElement\"),\n    expressions: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(\n          assertNodeType(\n            \"Expression\",\n            // For TypeScript template literal types\n            \"TSType\",\n          ),\n        ),\n        function (node: t.TemplateLiteral, key, val) {\n          if (node.quasis.length !== val.length + 1) {\n            throw new TypeError(\n              `Number of ${\n                node.type\n              } quasis should be exactly one more than the number of expressions.\\nExpected ${\n                val.length + 1\n              } quasis but got ${node.quasis.length}`,\n            );\n          }\n        } as Validator,\n      ),\n    },\n  },\n});\n\ndefineType(\"YieldExpression\", {\n  builder: [\"argument\", \"delegate\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    delegate: {\n      validate:\n        process.env.BABEL_8_BREAKING || process.env.BABEL_TYPES_8_BREAKING\n          ? chain(\n              assertValueType(\"boolean\"),\n              Object.assign(\n                function (node: t.YieldExpression, key, val) {\n                  if (val && !node.argument) {\n                    throw new TypeError(\n                      \"Property delegate of YieldExpression cannot be true if there is no argument\",\n                    );\n                  }\n                } as Validator,\n                { type: \"boolean\" },\n              ),\n            )\n          : assertValueType(\"boolean\"),\n      default: false,\n    },\n    argument: {\n      optional: true,\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2017 ---\ndefineType(\"AwaitExpression\", {\n  builder: [\"argument\"],\n  visitor: [\"argument\"],\n  aliases: [\"Expression\", \"Terminatorless\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\n// --- ES2019 ---\ndefineType(\"Import\", {\n  aliases: [\"Expression\"],\n});\n\n// --- ES2020 ---\ndefineType(\"BigIntLiteral\", {\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n  aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n});\n\ndefineType(\"ExportNamespaceSpecifier\", {\n  visitor: [\"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    exported: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"OptionalMemberExpression\", {\n  builder: [\"object\", \"property\", \"computed\", \"optional\"],\n  visitor: [\"object\", \"property\"],\n  aliases: [\"Expression\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    property: {\n      validate: (function () {\n        const normal = assertNodeType(\"Identifier\");\n        const computed = assertNodeType(\"Expression\");\n\n        const validator: Validator = Object.assign(\n          function (node: t.OptionalMemberExpression, key, val) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          } as Validator,\n          // todo(ts): can be discriminated union by `computed` property\n          { oneOfNodeTypes: [\"Expression\", \"Identifier\"] },\n        );\n        return validator;\n      })(),\n    },\n    computed: {\n      default: false,\n    },\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n  },\n});\n\ndefineType(\"OptionalCallExpression\", {\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"callee\", \"arguments\", \"typeArguments\"]\n    : [\"callee\", \"arguments\", \"typeParameters\", \"typeArguments\"],\n  builder: [\"callee\", \"arguments\", \"optional\"],\n  aliases: [\"Expression\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\"),\n    },\n    arguments: validateArrayOfType(\n      \"Expression\",\n      \"SpreadElement\",\n      \"ArgumentPlaceholder\",\n    ),\n    optional: {\n      validate:\n        !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n          ? assertValueType(\"boolean\")\n          : chain(assertValueType(\"boolean\"), assertOptionalChainStart()),\n    },\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\n// --- ES2022 ---\ndefineType(\"ClassProperty\", {\n  visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassAccessorProperty\", {\n  visitor: [\"decorators\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\n    \"key\",\n    \"value\",\n    \"typeAnnotation\",\n    \"decorators\",\n    \"computed\",\n    \"static\",\n  ],\n  aliases: [\"Property\", \"Accessor\"],\n  fields: {\n    ...classMethodOrPropertyCommon(),\n    key: {\n      validate: chain(\n        (function () {\n          const normal = assertNodeType(\n            \"Identifier\",\n            \"StringLiteral\",\n            \"NumericLiteral\",\n            \"BigIntLiteral\",\n            \"PrivateName\",\n          );\n          const computed = assertNodeType(\"Expression\");\n\n          return function (node: any, key: string, val: any) {\n            const validator = node.computed ? computed : normal;\n            validator(node, key, val);\n          };\n        })(),\n        assertNodeType(\n          \"Identifier\",\n          \"StringLiteral\",\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n          \"Expression\",\n          \"PrivateName\",\n        ),\n      ),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    declare: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateProperty\", {\n  visitor: [\"decorators\", \"variance\", \"key\", \"typeAnnotation\", \"value\"],\n  builder: [\"key\", \"value\", \"decorators\", \"static\"],\n  aliases: [\"Property\", \"Private\"],\n  fields: {\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    value: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n    typeAnnotation: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\"TypeAnnotation\", \"TSTypeAnnotation\")\n        : assertNodeType(\n            \"TypeAnnotation\",\n            \"TSTypeAnnotation\",\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            \"Noop\",\n          ),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n    static: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    optional: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    definite: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    variance: {\n      validate: assertNodeType(\"Variance\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"ClassPrivateMethod\", {\n  builder: [\"kind\", \"key\", \"params\", \"body\", \"static\"],\n  visitor: [\n    \"decorators\",\n    \"key\",\n    \"typeParameters\",\n    \"params\",\n    \"returnType\",\n    \"body\",\n  ],\n  aliases: [\n    \"Function\",\n    \"Scopable\",\n    \"BlockParent\",\n    \"FunctionParent\",\n    \"Method\",\n    \"Private\",\n  ],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...functionTypeAnnotationCommon(),\n    kind: {\n      validate: assertOneOf(\"get\", \"set\", \"method\"),\n      default: \"method\",\n    },\n    key: {\n      validate: assertNodeType(\"PrivateName\"),\n    },\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n  },\n});\n\ndefineType(\"PrivateName\", {\n  visitor: [\"id\"],\n  aliases: [\"Private\"],\n  fields: {\n    id: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"StaticBlock\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n  aliases: [\"Scopable\", \"BlockParent\", \"FunctionParent\"],\n});\n","import { importAttributes } from \"./core.ts\";\nimport {\n  defineAliasedType,\n  arrayOfType,\n  assertOneOf,\n  assertValueType,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"Flow\");\n\nconst defineInterfaceishType = (\n  name: \"DeclareClass\" | \"DeclareInterface\" | \"InterfaceDeclaration\",\n) => {\n  const isDeclareClass = name === \"DeclareClass\";\n\n  defineType(name, {\n    builder: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n    visitor: [\n      \"id\",\n      \"typeParameters\",\n      \"extends\",\n      ...(isDeclareClass ? [\"mixins\", \"implements\"] : []),\n      \"body\",\n    ],\n    aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n    fields: {\n      id: validateType(\"Identifier\"),\n      typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n      extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n      ...(isDeclareClass\n        ? {\n            mixins: validateOptional(arrayOfType(\"InterfaceExtends\")),\n            implements: validateOptional(arrayOfType(\"ClassImplements\")),\n          }\n        : {}),\n      body: validateType(\"ObjectTypeAnnotation\"),\n    },\n  });\n};\n\ndefineType(\"AnyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ArrayTypeAnnotation\", {\n  visitor: [\"elementType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    elementType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"BooleanTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"BooleanLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"NullLiteralTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ClassImplements\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareClass\");\n\ndefineType(\"DeclareFunction\", {\n  builder: [\"id\"],\n  visitor: [\"id\", \"predicate\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    predicate: validateOptionalType(\"DeclaredPredicate\"),\n  },\n});\n\ndefineInterfaceishType(\"DeclareInterface\");\n\ndefineType(\"DeclareModule\", {\n  builder: [\"id\", \"body\", \"kind\"],\n  visitor: [\"id\", \"body\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    body: validateType(\"BlockStatement\"),\n    kind: validateOptional(assertOneOf(\"CommonJS\", \"ES\")),\n  },\n});\n\ndefineType(\"DeclareModuleExports\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"DeclareTypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareOpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateOptionalType(\"FlowType\"),\n  },\n});\n\ndefineType(\"DeclareVariable\", {\n  visitor: [\"id\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"DeclareExportDeclaration\", {\n  visitor: [\"declaration\", \"specifiers\", \"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    declaration: validateOptionalType(\"Flow\"),\n    specifiers: validateOptional(\n      arrayOfType(\"ExportSpecifier\", \"ExportNamespaceSpecifier\"),\n    ),\n    source: validateOptionalType(\"StringLiteral\"),\n    default: validateOptional(assertValueType(\"boolean\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclareExportAllDeclaration\", {\n  visitor: [\"source\", \"attributes\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    source: validateType(\"StringLiteral\"),\n    exportKind: validateOptional(assertOneOf(\"type\", \"value\")),\n    ...importAttributes,\n  },\n});\n\ndefineType(\"DeclaredPredicate\", {\n  visitor: [\"value\"],\n  aliases: [\"FlowPredicate\"],\n  fields: {\n    value: validateType(\"Flow\"),\n  },\n});\n\ndefineType(\"ExistsTypeAnnotation\", {\n  aliases: [\"FlowType\"],\n});\n\ndefineType(\"FunctionTypeAnnotation\", {\n  builder: [\"typeParameters\", \"params\", \"rest\", \"returnType\"],\n  visitor: [\"typeParameters\", \"this\", \"params\", \"rest\", \"returnType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    params: validateArrayOfType(\"FunctionTypeParam\"),\n    rest: validateOptionalType(\"FunctionTypeParam\"),\n    this: validateOptionalType(\"FunctionTypeParam\"),\n    returnType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"FunctionTypeParam\", {\n  visitor: [\"name\", \"typeAnnotation\"],\n  fields: {\n    name: validateOptionalType(\"Identifier\"),\n    typeAnnotation: validateType(\"FlowType\"),\n    optional: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"GenericTypeAnnotation\", {\n  visitor: [\"id\", \"typeParameters\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"InferredPredicate\", {\n  aliases: [\"FlowPredicate\"],\n});\n\ndefineType(\"InterfaceExtends\", {\n  visitor: [\"id\", \"typeParameters\"],\n  fields: {\n    id: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterInstantiation\"),\n  },\n});\n\ndefineInterfaceishType(\"InterfaceDeclaration\");\n\ndefineType(\"InterfaceTypeAnnotation\", {\n  visitor: [\"extends\", \"body\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    extends: validateOptional(arrayOfType(\"InterfaceExtends\")),\n    body: validateType(\"ObjectTypeAnnotation\"),\n  },\n});\n\ndefineType(\"IntersectionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"MixedTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"EmptyTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"NullableTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"NumberLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"number\")),\n  },\n});\n\ndefineType(\"NumberTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ObjectTypeAnnotation\", {\n  visitor: [\"properties\", \"indexers\", \"callProperties\", \"internalSlots\"],\n  aliases: [\"FlowType\"],\n  builder: [\n    \"properties\",\n    \"indexers\",\n    \"callProperties\",\n    \"internalSlots\",\n    \"exact\",\n  ],\n  fields: {\n    properties: validate(\n      arrayOfType(\"ObjectTypeProperty\", \"ObjectTypeSpreadProperty\"),\n    ),\n    indexers: {\n      validate: arrayOfType(\"ObjectTypeIndexer\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    callProperties: {\n      validate: arrayOfType(\"ObjectTypeCallProperty\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    internalSlots: {\n      validate: arrayOfType(\"ObjectTypeInternalSlot\"),\n      optional: process.env.BABEL_8_BREAKING ? false : true,\n      default: [],\n    },\n    exact: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n    // If the inexact flag is present then this is an object type, and not a\n    // declare class, declare interface, or interface. If it is true, the\n    // object uses ... to express that it is inexact.\n    inexact: validateOptional(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeInternalSlot\", {\n  visitor: [\"id\", \"value\"],\n  builder: [\"id\", \"value\", \"optional\", \"static\", \"method\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    value: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n    static: validate(assertValueType(\"boolean\")),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeCallProperty\", {\n  visitor: [\"value\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeIndexer\", {\n  visitor: [\"variance\", \"id\", \"key\", \"value\"],\n  builder: [\"id\", \"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    id: validateOptionalType(\"Identifier\"),\n    key: validateType(\"FlowType\"),\n    value: validateType(\"FlowType\"),\n    static: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"ObjectTypeProperty\", {\n  visitor: [\"key\", \"value\", \"variance\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    key: validateType(\"Identifier\", \"StringLiteral\"),\n    value: validateType(\"FlowType\"),\n    kind: validate(assertOneOf(\"init\", \"get\", \"set\")),\n    static: validate(assertValueType(\"boolean\")),\n    proto: validate(assertValueType(\"boolean\")),\n    optional: validate(assertValueType(\"boolean\")),\n    variance: validateOptionalType(\"Variance\"),\n    method: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"ObjectTypeSpreadProperty\", {\n  visitor: [\"argument\"],\n  aliases: [\"UserWhitespacable\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OpaqueType\", {\n  visitor: [\"id\", \"typeParameters\", \"supertype\", \"impltype\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    supertype: validateOptionalType(\"FlowType\"),\n    impltype: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"QualifiedTypeIdentifier\", {\n  visitor: [\"qualification\", \"id\"],\n  builder: [\"id\", \"qualification\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    qualification: validateType(\"Identifier\", \"QualifiedTypeIdentifier\"),\n  },\n});\n\ndefineType(\"StringLiteralTypeAnnotation\", {\n  builder: [\"value\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    value: validate(assertValueType(\"string\")),\n  },\n});\n\ndefineType(\"StringTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"SymbolTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"ThisTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\ndefineType(\"TupleTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"TypeofTypeAnnotation\", {\n  visitor: [\"argument\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    argument: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAlias\", {\n  visitor: [\"id\", \"typeParameters\", \"right\"],\n  aliases: [\"FlowDeclaration\", \"Statement\", \"Declaration\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TypeParameterDeclaration\"),\n    right: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"TypeCastExpression\", {\n  visitor: [\"expression\", \"typeAnnotation\"],\n  aliases: [\"ExpressionWrapper\", \"Expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TypeAnnotation\"),\n  },\n});\n\ndefineType(\"TypeParameter\", {\n  visitor: [\"bound\", \"default\", \"variance\"],\n  fields: {\n    name: validate(assertValueType(\"string\")),\n    bound: validateOptionalType(\"TypeAnnotation\"),\n    default: validateOptionalType(\"FlowType\"),\n    variance: validateOptionalType(\"Variance\"),\n  },\n});\n\ndefineType(\"TypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"TypeParameter\")),\n  },\n});\n\ndefineType(\"TypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"UnionTypeAnnotation\", {\n  visitor: [\"types\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    types: validate(arrayOfType(\"FlowType\")),\n  },\n});\n\ndefineType(\"Variance\", {\n  builder: [\"kind\"],\n  fields: {\n    kind: validate(assertOneOf(\"minus\", \"plus\")),\n  },\n});\n\ndefineType(\"VoidTypeAnnotation\", {\n  aliases: [\"FlowType\", \"FlowBaseAnnotation\"],\n});\n\n// Enums\ndefineType(\"EnumDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    body: validateType(\n      \"EnumBooleanBody\",\n      \"EnumNumberBody\",\n      \"EnumStringBody\",\n      \"EnumSymbolBody\",\n    ),\n  },\n});\n\ndefineType(\"EnumBooleanBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumBooleanMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumNumberBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumNumberMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumStringBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    explicitType: validate(assertValueType(\"boolean\")),\n    members: validateArrayOfType(\"EnumStringMember\", \"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumSymbolBody\", {\n  aliases: [\"EnumBody\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"EnumDefaultedMember\"),\n    hasUnknownMembers: validate(assertValueType(\"boolean\")),\n  },\n});\n\ndefineType(\"EnumBooleanMember\", {\n  aliases: [\"EnumMember\"],\n  builder: [\"id\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"BooleanLiteral\"),\n  },\n});\n\ndefineType(\"EnumNumberMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"NumericLiteral\"),\n  },\n});\n\ndefineType(\"EnumStringMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\", \"init\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n    init: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"EnumDefaultedMember\", {\n  aliases: [\"EnumMember\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"IndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n  },\n});\n\ndefineType(\"OptionalIndexedAccessType\", {\n  visitor: [\"objectType\", \"indexType\"],\n  aliases: [\"FlowType\"],\n  fields: {\n    objectType: validateType(\"FlowType\"),\n    indexType: validateType(\"FlowType\"),\n    optional: validate(assertValueType(\"boolean\")),\n  },\n});\n","import {\n  defineAliasedType,\n  assertNodeType,\n  assertValueType,\n  validateArrayOfType,\n} from \"./utils.ts\";\n\nconst defineType = defineAliasedType(\"JSX\");\n\ndefineType(\"JSXAttribute\", {\n  visitor: [\"name\", \"value\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\", \"JSXNamespacedName\"),\n    },\n    value: {\n      optional: true,\n      validate: assertNodeType(\n        \"JSXElement\",\n        \"JSXFragment\",\n        \"StringLiteral\",\n        \"JSXExpressionContainer\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXClosingElement\", {\n  visitor: [\"name\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n  },\n});\n\ndefineType(\"JSXElement\", {\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"openingElement\", \"closingElement\", \"children\"]\n    : [\"openingElement\", \"closingElement\", \"children\", \"selfClosing\"],\n  visitor: [\"openingElement\", \"children\", \"closingElement\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingElement: {\n      validate: assertNodeType(\"JSXOpeningElement\"),\n    },\n    closingElement: {\n      optional: true,\n      validate: assertNodeType(\"JSXClosingElement\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          selfClosing: {\n            validate: assertValueType(\"boolean\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"JSXEmptyExpression\", {});\n\ndefineType(\"JSXExpressionContainer\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\", \"JSXEmptyExpression\"),\n    },\n  },\n});\n\ndefineType(\"JSXSpreadChild\", {\n  visitor: [\"expression\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXIdentifier\", {\n  builder: [\"name\"],\n  fields: {\n    name: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXMemberExpression\", {\n  visitor: [\"object\", \"property\"],\n  fields: {\n    object: {\n      validate: assertNodeType(\"JSXMemberExpression\", \"JSXIdentifier\"),\n    },\n    property: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXNamespacedName\", {\n  visitor: [\"namespace\", \"name\"],\n  fields: {\n    namespace: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n    name: {\n      validate: assertNodeType(\"JSXIdentifier\"),\n    },\n  },\n});\n\ndefineType(\"JSXOpeningElement\", {\n  builder: [\"name\", \"attributes\", \"selfClosing\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"name\", \"typeArguments\", \"attributes\"]\n    : [\"name\", \"typeParameters\", \"typeArguments\", \"attributes\"],\n  aliases: [\"Immutable\"],\n  fields: {\n    name: {\n      validate: assertNodeType(\n        \"JSXIdentifier\",\n        \"JSXMemberExpression\",\n        \"JSXNamespacedName\",\n      ),\n    },\n    selfClosing: {\n      default: false,\n    },\n    attributes: validateArrayOfType(\"JSXAttribute\", \"JSXSpreadAttribute\"),\n    typeArguments: {\n      validate: process.env.BABEL_8_BREAKING\n        ? assertNodeType(\n            \"TypeParameterInstantiation\",\n            \"TSTypeParameterInstantiation\",\n          )\n        : assertNodeType(\"TypeParameterInstantiation\"),\n      optional: true,\n    },\n    ...(process.env.BABEL_8_BREAKING\n      ? {}\n      : {\n          typeParameters: {\n            validate: assertNodeType(\"TSTypeParameterInstantiation\"),\n            optional: true,\n          },\n        }),\n  },\n});\n\ndefineType(\"JSXSpreadAttribute\", {\n  visitor: [\"argument\"],\n  fields: {\n    argument: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"JSXText\", {\n  aliases: [\"Immutable\"],\n  builder: [\"value\"],\n  fields: {\n    value: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n\ndefineType(\"JSXFragment\", {\n  builder: [\"openingFragment\", \"closingFragment\", \"children\"],\n  visitor: [\"openingFragment\", \"children\", \"closingFragment\"],\n  aliases: [\"Immutable\", \"Expression\"],\n  fields: {\n    openingFragment: {\n      validate: assertNodeType(\"JSXOpeningFragment\"),\n    },\n    closingFragment: {\n      validate: assertNodeType(\"JSXClosingFragment\"),\n    },\n    children: validateArrayOfType(\n      \"JSXText\",\n      \"JSXExpressionContainer\",\n      \"JSXSpreadChild\",\n      \"JSXElement\",\n      \"JSXFragment\",\n    ),\n  },\n});\n\ndefineType(\"JSXOpeningFragment\", {\n  aliases: [\"Immutable\"],\n});\n\ndefineType(\"JSXClosingFragment\", {\n  aliases: [\"Immutable\"],\n});\n","import { ALIAS_KEYS } from \"./utils.ts\";\n\nexport const PLACEHOLDERS = [\n  \"Identifier\",\n  \"StringLiteral\",\n  \"Expression\",\n  \"Statement\",\n  \"Declaration\",\n  \"BlockStatement\",\n  \"ClassBody\",\n  \"Pattern\",\n] as const;\n\nexport const PLACEHOLDERS_ALIAS: Record<string, string[]> = {\n  Declaration: [\"Statement\"],\n  Pattern: [\"PatternLike\", \"LVal\"],\n};\n\nfor (const type of PLACEHOLDERS) {\n  const alias = ALIAS_KEYS[type];\n  if (alias?.length) PLACEHOLDERS_ALIAS[type] = alias;\n}\n\nexport const PLACEHOLDERS_FLIPPED_ALIAS: Record<string, string[]> = {};\n\nObject.keys(PLACEHOLDERS_ALIAS).forEach(type => {\n  PLACEHOLDERS_ALIAS[type].forEach(alias => {\n    if (!Object.hasOwn(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {\n      PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];\n    }\n    PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);\n  });\n});\n","import {\n  defineAliasedType,\n  assertNodeType,\n  assertOneOf,\n  assertValueType,\n} from \"./utils.ts\";\nimport { PLACEHOLDERS } from \"./placeholders.ts\";\nimport { patternLikeCommon } from \"./core.ts\";\n\nconst defineType = defineAliasedType(\"Miscellaneous\");\n\nif (!process.env.BABEL_8_BREAKING) {\n  defineType(\"Noop\", {\n    visitor: [],\n  });\n}\n\ndefineType(\"Placeholder\", {\n  visitor: [],\n  builder: [\"expectedNode\", \"name\"],\n  // aliases: [], defined in placeholders.js\n  fields: {\n    name: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n    expectedNode: {\n      validate: assertOneOf(...PLACEHOLDERS),\n    },\n    ...patternLikeCommon(),\n  },\n});\n\ndefineType(\"V8IntrinsicIdentifier\", {\n  builder: [\"name\"],\n  fields: {\n    name: {\n      validate: assertValueType(\"string\"),\n    },\n  },\n});\n","import defineType, {\n  arrayOfType,\n  assertNodeType,\n  assertValueType,\n  validateArrayOfType,\n} from \"./utils.ts\";\n\ndefineType(\"ArgumentPlaceholder\", {});\n\ndefineType(\"BindExpression\", {\n  visitor: [\"object\", \"callee\"],\n  aliases: [\"Expression\"],\n  fields:\n    !process.env.BABEL_8_BREAKING && !process.env.BABEL_TYPES_8_BREAKING\n      ? {\n          object: {\n            validate: Object.assign(() => {}, {\n              oneOfNodeTypes: [\"Expression\"],\n            }),\n          },\n          callee: {\n            validate: Object.assign(() => {}, {\n              oneOfNodeTypes: [\"Expression\"],\n            }),\n          },\n        }\n      : {\n          object: {\n            validate: assertNodeType(\"Expression\"),\n          },\n          callee: {\n            validate: assertNodeType(\"Expression\"),\n          },\n        },\n});\n\ndefineType(\"ImportAttribute\", {\n  visitor: [\"key\", \"value\"],\n  fields: {\n    key: {\n      validate: assertNodeType(\"Identifier\", \"StringLiteral\"),\n    },\n    value: {\n      validate: assertNodeType(\"StringLiteral\"),\n    },\n  },\n});\n\ndefineType(\"Decorator\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n});\n\ndefineType(\"DoExpression\", {\n  visitor: [\"body\"],\n  builder: [\"body\", \"async\"],\n  aliases: [\"Expression\"],\n  fields: {\n    body: {\n      validate: assertNodeType(\"BlockStatement\"),\n    },\n    async: {\n      validate: assertValueType(\"boolean\"),\n      default: false,\n    },\n  },\n});\n\ndefineType(\"ExportDefaultSpecifier\", {\n  visitor: [\"exported\"],\n  aliases: [\"ModuleSpecifier\"],\n  fields: {\n    exported: {\n      validate: assertNodeType(\"Identifier\"),\n    },\n  },\n});\n\ndefineType(\"RecordExpression\", {\n  visitor: [\"properties\"],\n  aliases: [\"Expression\"],\n  fields: {\n    properties: validateArrayOfType(\"ObjectProperty\", \"SpreadElement\"),\n  },\n});\n\ndefineType(\"TupleExpression\", {\n  fields: {\n    elements: {\n      validate: arrayOfType(\"Expression\", \"SpreadElement\"),\n      default: [],\n    },\n  },\n  visitor: [\"elements\"],\n  aliases: [\"Expression\"],\n});\n\nif (!process.env.BABEL_8_BREAKING) {\n  defineType(\"DecimalLiteral\", {\n    builder: [\"value\"],\n    fields: {\n      value: {\n        validate: assertValueType(\"string\"),\n      },\n    },\n    aliases: [\"Expression\", \"Pureish\", \"Literal\", \"Immutable\"],\n  });\n}\n\n// https://github.com/tc39/proposal-js-module-blocks\ndefineType(\"ModuleExpression\", {\n  visitor: [\"body\"],\n  fields: {\n    body: {\n      validate: assertNodeType(\"Program\"),\n    },\n  },\n  aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-hack-pipes\ndefineType(\"TopicReference\", {\n  aliases: [\"Expression\"],\n});\n\n// https://github.com/tc39/proposal-pipeline-operator\n// https://github.com/js-choi/proposal-smart-pipes\ndefineType(\"PipelineTopicExpression\", {\n  builder: [\"expression\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelineBareFunction\", {\n  builder: [\"callee\"],\n  visitor: [\"callee\"],\n  fields: {\n    callee: {\n      validate: assertNodeType(\"Expression\"),\n    },\n  },\n  aliases: [\"Expression\"],\n});\n\ndefineType(\"PipelinePrimaryTopicReference\", {\n  aliases: [\"Expression\"],\n});\n","import type * as t from \"../index.ts\";\nimport {\n  defineAliasedType,\n  arrayOfType,\n  assertEach,\n  assertNodeType,\n  assertOneOf,\n  assertValueType,\n  chain,\n  validate,\n  validateArrayOfType,\n  validateOptional,\n  validateOptionalType,\n  validateType,\n  type Validator,\n} from \"./utils.ts\";\nimport {\n  functionDeclarationCommon,\n  classMethodOrDeclareMethodCommon,\n} from \"./core.ts\";\nimport is from \"../validators/is.ts\";\n\nconst defineType = defineAliasedType(\"TypeScript\");\n\nconst bool = assertValueType(\"boolean\");\n\nconst tSFunctionTypeAnnotationCommon = () => ({\n  returnType: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeAnnotation\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeAnnotation\", \"Noop\"),\n    optional: true,\n  },\n  typeParameters: {\n    validate: process.env.BABEL_8_BREAKING\n      ? assertNodeType(\"TSTypeParameterDeclaration\")\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        assertNodeType(\"TSTypeParameterDeclaration\", \"Noop\"),\n    optional: true,\n  },\n});\n\ndefineType(\"TSParameterProperty\", {\n  aliases: [\"LVal\"], // TODO: This isn't usable in general as an LVal. Should have a \"Parameter\" alias.\n  visitor: [\"parameter\"],\n  fields: {\n    accessibility: {\n      validate: assertOneOf(\"public\", \"private\", \"protected\"),\n      optional: true,\n    },\n    readonly: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    parameter: {\n      validate: assertNodeType(\"Identifier\", \"AssignmentPattern\"),\n    },\n    override: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    decorators: {\n      validate: arrayOfType(\"Decorator\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSDeclareFunction\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...functionDeclarationCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSDeclareMethod\", {\n  visitor: [\"decorators\", \"key\", \"typeParameters\", \"params\", \"returnType\"],\n  fields: {\n    ...classMethodOrDeclareMethodCommon(),\n    ...tSFunctionTypeAnnotationCommon(),\n  },\n});\n\ndefineType(\"TSQualifiedName\", {\n  aliases: [\"TSEntityName\"],\n  visitor: [\"left\", \"right\"],\n  fields: {\n    left: validateType(\"TSEntityName\"),\n    right: validateType(\"Identifier\"),\n  },\n});\n\nconst signatureDeclarationCommon = () => ({\n  typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n  [process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\"]: validateArrayOfType(\n    \"ArrayPattern\",\n    \"Identifier\",\n    \"ObjectPattern\",\n    \"RestElement\",\n  ),\n  [process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\"]:\n    validateOptionalType(\"TSTypeAnnotation\"),\n});\n\nconst callConstructSignatureDeclaration = {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: signatureDeclarationCommon(),\n};\n\ndefineType(\"TSCallSignatureDeclaration\", callConstructSignatureDeclaration);\ndefineType(\n  \"TSConstructSignatureDeclaration\",\n  callConstructSignatureDeclaration,\n);\n\nconst namedTypeElementCommon = () => ({\n  key: validateType(\"Expression\"),\n  computed: { default: false },\n  optional: validateOptional(bool),\n});\n\ndefineType(\"TSPropertySignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"key\", \"typeAnnotation\"],\n  fields: {\n    ...namedTypeElementCommon(),\n    readonly: validateOptional(bool),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    kind: {\n      optional: true,\n      validate: assertOneOf(\"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSMethodSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\n    \"key\",\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n  fields: {\n    ...signatureDeclarationCommon(),\n    ...namedTypeElementCommon(),\n    kind: {\n      validate: assertOneOf(\"method\", \"get\", \"set\"),\n    },\n  },\n});\n\ndefineType(\"TSIndexSignature\", {\n  aliases: [\"TSTypeElement\"],\n  visitor: [\"parameters\", \"typeAnnotation\"],\n  fields: {\n    readonly: validateOptional(bool),\n    static: validateOptional(bool),\n    parameters: validateArrayOfType(\"Identifier\"), // Length must be 1\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n  },\n});\n\nconst tsKeywordTypes = [\n  \"TSAnyKeyword\",\n  \"TSBooleanKeyword\",\n  \"TSBigIntKeyword\",\n  \"TSIntrinsicKeyword\",\n  \"TSNeverKeyword\",\n  \"TSNullKeyword\",\n  \"TSNumberKeyword\",\n  \"TSObjectKeyword\",\n  \"TSStringKeyword\",\n  \"TSSymbolKeyword\",\n  \"TSUndefinedKeyword\",\n  \"TSUnknownKeyword\",\n  \"TSVoidKeyword\",\n] as const;\n\nfor (const type of tsKeywordTypes) {\n  defineType(type, {\n    aliases: [\"TSType\", \"TSBaseType\"],\n    visitor: [],\n    fields: {},\n  });\n}\n\ndefineType(\"TSThisType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [],\n  fields: {},\n});\n\nconst fnOrCtrBase = {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"typeParameters\",\n    process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\",\n    process.env.BABEL_8_BREAKING ? \"returnType\" : \"typeAnnotation\",\n  ],\n};\n\ndefineType(\"TSFunctionType\", {\n  ...fnOrCtrBase,\n  fields: signatureDeclarationCommon(),\n});\ndefineType(\"TSConstructorType\", {\n  ...fnOrCtrBase,\n  fields: {\n    ...signatureDeclarationCommon(),\n    abstract: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeReference\", {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"typeName\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    typeName: validateType(\"TSEntityName\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypePredicate\", {\n  aliases: [\"TSType\"],\n  visitor: [\"parameterName\", \"typeAnnotation\"],\n  builder: [\"parameterName\", \"typeAnnotation\", \"asserts\"],\n  fields: {\n    parameterName: validateType(\"Identifier\", \"TSThisType\"),\n    typeAnnotation: validateOptionalType(\"TSTypeAnnotation\"),\n    asserts: validateOptional(bool),\n  },\n});\n\ndefineType(\"TSTypeQuery\", {\n  aliases: [\"TSType\"],\n  visitor: [\n    \"exprName\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    exprName: validateType(\"TSEntityName\", \"TSImportType\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\ndefineType(\"TSTypeLiteral\", {\n  aliases: [\"TSType\"],\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSArrayType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementType\"],\n  fields: {\n    elementType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTupleType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"elementTypes\"],\n  fields: {\n    elementTypes: validateArrayOfType(\"TSType\", \"TSNamedTupleMember\"),\n  },\n});\n\ndefineType(\"TSOptionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSRestType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSNamedTupleMember\", {\n  visitor: [\"label\", \"elementType\"],\n  builder: [\"label\", \"elementType\", \"optional\"],\n  fields: {\n    label: validateType(\"Identifier\"),\n    optional: {\n      validate: bool,\n      default: false,\n    },\n    elementType: validateType(\"TSType\"),\n  },\n});\n\nconst unionOrIntersection = {\n  aliases: [\"TSType\"],\n  visitor: [\"types\"],\n  fields: {\n    types: validateArrayOfType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSUnionType\", unionOrIntersection);\ndefineType(\"TSIntersectionType\", unionOrIntersection);\n\ndefineType(\"TSConditionalType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"checkType\", \"extendsType\", \"trueType\", \"falseType\"],\n  fields: {\n    checkType: validateType(\"TSType\"),\n    extendsType: validateType(\"TSType\"),\n    trueType: validateType(\"TSType\"),\n    falseType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInferType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeParameter\"],\n  fields: {\n    typeParameter: validateType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSParenthesizedType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeOperator\", {\n  aliases: [\"TSType\"],\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    operator: validate(assertValueType(\"string\")),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSIndexedAccessType\", {\n  aliases: [\"TSType\"],\n  visitor: [\"objectType\", \"indexType\"],\n  fields: {\n    objectType: validateType(\"TSType\"),\n    indexType: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSMappedType\", {\n  aliases: [\"TSType\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"nameType\", \"typeAnnotation\"],\n  builder: process.env.BABEL_8_BREAKING\n    ? [\"key\", \"constraint\", \"nameType\", \"typeAnnotation\"]\n    : [\"typeParameter\", \"typeAnnotation\", \"nameType\"],\n  fields: {\n    ...(process.env.BABEL_8_BREAKING\n      ? {\n          key: validateType(\"Identifier\"),\n          constraint: validateType(\"TSType\"),\n        }\n      : {\n          typeParameter: validateType(\"TSTypeParameter\"),\n        }),\n    readonly: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    optional: validateOptional(assertOneOf(true, false, \"+\", \"-\")),\n    typeAnnotation: validateOptionalType(\"TSType\"),\n    nameType: validateOptionalType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTemplateLiteralType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [\"quasis\", \"types\"],\n  fields: {\n    quasis: validateArrayOfType(\"TemplateElement\"),\n    types: {\n      validate: chain(\n        assertValueType(\"array\"),\n        assertEach(assertNodeType(\"TSType\")),\n        function (node: t.TSTemplateLiteralType, key, val) {\n          if (node.quasis.length !== val.length + 1) {\n            throw new TypeError(\n              `Number of ${\n                node.type\n              } quasis should be exactly one more than the number of types.\\nExpected ${\n                val.length + 1\n              } quasis but got ${node.quasis.length}`,\n            );\n          }\n        } as Validator,\n      ),\n    },\n  },\n});\n\ndefineType(\"TSLiteralType\", {\n  aliases: [\"TSType\", \"TSBaseType\"],\n  visitor: [\"literal\"],\n  fields: {\n    literal: {\n      validate: (function () {\n        const unaryExpression = assertNodeType(\n          \"NumericLiteral\",\n          \"BigIntLiteral\",\n        );\n        const unaryOperator = assertOneOf(\"-\");\n\n        const literal = assertNodeType(\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n        );\n        function validator(parent: any, key: string, node: any) {\n          // type A = -1 | 1;\n          if (is(\"UnaryExpression\", node)) {\n            // check operator first\n            unaryOperator(node, \"operator\", node.operator);\n            unaryExpression(node, \"argument\", node.argument);\n          } else {\n            // type A = 'foo' | 'bar' | false | 1;\n            literal(parent, key, node);\n          }\n        }\n\n        validator.oneOfNodeTypes = [\n          \"NumericLiteral\",\n          \"StringLiteral\",\n          \"BooleanLiteral\",\n          \"BigIntLiteral\",\n          \"TemplateLiteral\",\n          \"UnaryExpression\",\n        ];\n\n        return validator;\n      })(),\n    },\n  },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n  defineType(\"TSClassImplements\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeArguments\"],\n    fields: {\n      expression: validateType(\"Expression\"),\n      typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n  defineType(\"TSInterfaceHeritage\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeArguments\"],\n    fields: {\n      expression: validateType(\"Expression\"),\n      typeArguments: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n} else {\n  defineType(\"TSExpressionWithTypeArguments\", {\n    aliases: [\"TSType\"],\n    visitor: [\"expression\", \"typeParameters\"],\n    fields: {\n      expression: validateType(\"TSEntityName\"),\n      typeParameters: validateOptionalType(\"TSTypeParameterInstantiation\"),\n    },\n  });\n}\n\ndefineType(\"TSInterfaceDeclaration\", {\n  // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"extends\", \"body\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    extends: validateOptional(\n      arrayOfType(\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        process.env.BABEL_8_BREAKING\n          ? \"TSClassImplements\"\n          : \"TSExpressionWithTypeArguments\",\n      ),\n    ),\n    body: validateType(\"TSInterfaceBody\"),\n  },\n});\n\ndefineType(\"TSInterfaceBody\", {\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"TSTypeElement\"),\n  },\n});\n\ndefineType(\"TSTypeAliasDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"typeParameters\", \"typeAnnotation\"],\n  fields: {\n    declare: validateOptional(bool),\n    id: validateType(\"Identifier\"),\n    typeParameters: validateOptionalType(\"TSTypeParameterDeclaration\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSInstantiationExpression\", {\n  aliases: [\"Expression\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"expression\", \"typeArguments\"]\n    : [\"expression\", \"typeParameters\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n  },\n});\n\nconst TSTypeExpression = {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\", \"typeAnnotation\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n    typeAnnotation: validateType(\"TSType\"),\n  },\n};\n\ndefineType(\"TSAsExpression\", TSTypeExpression);\ndefineType(\"TSSatisfiesExpression\", TSTypeExpression);\n\ndefineType(\"TSTypeAssertion\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"typeAnnotation\", \"expression\"],\n  fields: {\n    typeAnnotation: validateType(\"TSType\"),\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSEnumBody\", {\n  visitor: [\"members\"],\n  fields: {\n    members: validateArrayOfType(\"TSEnumMember\"),\n  },\n});\n\nif (process.env.BABEL_8_BREAKING) {\n  defineType(\"TSEnumDeclaration\", {\n    // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n    aliases: [\"Statement\", \"Declaration\"],\n    visitor: [\"id\", \"body\"],\n    fields: {\n      declare: validateOptional(bool),\n      const: validateOptional(bool),\n      id: validateType(\"Identifier\"),\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      body: validateType(\"TSEnumBody\"),\n    },\n  });\n} else {\n  defineType(\"TSEnumDeclaration\", {\n    // \"Statement\" alias prevents a semicolon from appearing after it in an export declaration.\n    aliases: [\"Statement\", \"Declaration\"],\n    visitor: [\"id\", \"members\"],\n    fields: {\n      declare: validateOptional(bool),\n      const: validateOptional(bool),\n      id: validateType(\"Identifier\"),\n      members: validateArrayOfType(\"TSEnumMember\"),\n      initializer: validateOptionalType(\"Expression\"),\n      body: validateOptionalType(\"TSEnumBody\"),\n    },\n  });\n}\n\ndefineType(\"TSEnumMember\", {\n  visitor: [\"id\", \"initializer\"],\n  fields: {\n    id: validateType(\"Identifier\", \"StringLiteral\"),\n    initializer: validateOptionalType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSModuleDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"body\"],\n  fields: {\n    kind: {\n      validate: assertOneOf(\"global\", \"module\", \"namespace\"),\n    },\n    declare: validateOptional(bool),\n    ...(!process.env.BABEL_8_BREAKING && { global: validateOptional(bool) }),\n    id: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSEntityName\", \"StringLiteral\")\n      : validateType(\"Identifier\", \"StringLiteral\"),\n    body: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSModuleBlock\")\n      : validateType(\"TSModuleBlock\", \"TSModuleDeclaration\"),\n  },\n});\n\ndefineType(\"TSModuleBlock\", {\n  aliases: [\"Scopable\", \"Block\", \"BlockParent\", \"FunctionParent\"],\n  visitor: [\"body\"],\n  fields: {\n    body: validateArrayOfType(\"Statement\"),\n  },\n});\n\ndefineType(\"TSImportType\", {\n  aliases: [\"TSType\"],\n  builder: [\n    \"argument\",\n    \"qualifier\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  visitor: [\n    \"argument\",\n    \"options\",\n    \"qualifier\",\n    process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\",\n  ],\n  fields: {\n    argument: process.env.BABEL_8_BREAKING\n      ? validateType(\"TSLiteralType\")\n      : validateType(\"StringLiteral\"),\n    qualifier: validateOptionalType(\"TSEntityName\"),\n    [process.env.BABEL_8_BREAKING ? \"typeArguments\" : \"typeParameters\"]:\n      validateOptionalType(\"TSTypeParameterInstantiation\"),\n    options: {\n      validate: assertNodeType(\"Expression\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSImportEqualsDeclaration\", {\n  aliases: [\"Statement\", \"Declaration\"],\n  visitor: [\"id\", \"moduleReference\"],\n  fields: {\n    ...(process.env.BABEL_8_BREAKING ? {} : { isExport: validate(bool) }),\n    id: validateType(\"Identifier\"),\n    moduleReference: validateType(\"TSEntityName\", \"TSExternalModuleReference\"),\n    importKind: {\n      validate: assertOneOf(\"type\", \"value\"),\n      optional: true,\n    },\n  },\n});\n\ndefineType(\"TSExternalModuleReference\", {\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"StringLiteral\"),\n  },\n});\n\ndefineType(\"TSNonNullExpression\", {\n  aliases: [\"Expression\", \"LVal\", \"PatternLike\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSExportAssignment\", {\n  aliases: [\"Statement\"],\n  visitor: [\"expression\"],\n  fields: {\n    expression: validateType(\"Expression\"),\n  },\n});\n\ndefineType(\"TSNamespaceExportDeclaration\", {\n  aliases: [\"Statement\"],\n  visitor: [\"id\"],\n  fields: {\n    id: validateType(\"Identifier\"),\n  },\n});\n\ndefineType(\"TSTypeAnnotation\", {\n  visitor: [\"typeAnnotation\"],\n  fields: {\n    typeAnnotation: {\n      validate: assertNodeType(\"TSType\"),\n    },\n  },\n});\n\ndefineType(\"TSTypeParameterInstantiation\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSType\"),\n  },\n});\n\ndefineType(\"TSTypeParameterDeclaration\", {\n  visitor: [\"params\"],\n  fields: {\n    params: validateArrayOfType(\"TSTypeParameter\"),\n  },\n});\n\ndefineType(\"TSTypeParameter\", {\n  builder: [\"constraint\", \"default\", \"name\"],\n  visitor: process.env.BABEL_8_BREAKING\n    ? [\"name\", \"constraint\", \"default\"]\n    : [\"constraint\", \"default\"],\n  fields: {\n    name: {\n      validate: !process.env.BABEL_8_BREAKING\n        ? assertValueType(\"string\")\n        : assertNodeType(\"Identifier\"),\n    },\n    in: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    out: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    const: {\n      validate: assertValueType(\"boolean\"),\n      optional: true,\n    },\n    constraint: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n    default: {\n      validate: assertNodeType(\"TSType\"),\n      optional: true,\n    },\n  },\n});\n","export const DEPRECATED_ALIASES = {\n  ModuleDeclaration: \"ImportOrExportDeclaration\",\n};\n","import \"./core.ts\";\nimport \"./flow.ts\";\nimport \"./jsx.ts\";\nimport \"./misc.ts\";\nimport \"./experimental.ts\";\nimport \"./typescript.ts\";\nimport {\n  VISITOR_KEYS,\n  ALIAS_KEYS,\n  FLIPPED_ALIAS_KEYS,\n  NODE_FIELDS,\n  BUILDER_KEYS,\n  DEPRECATED_KEYS,\n  NODE_PARENT_VALIDATIONS,\n} from \"./utils.ts\";\nimport {\n  PLACEHOLDERS,\n  PLACEHOLDERS_ALIAS,\n  PLACEHOLDERS_FLIPPED_ALIAS,\n} from \"./placeholders.ts\";\nimport { DEPRECATED_ALIASES } from \"./deprecated-aliases.ts\";\n\n(\n  Object.keys(DEPRECATED_ALIASES) as (keyof typeof DEPRECATED_ALIASES)[]\n).forEach(deprecatedAlias => {\n  FLIPPED_ALIAS_KEYS[deprecatedAlias] =\n    FLIPPED_ALIAS_KEYS[DEPRECATED_ALIASES[deprecatedAlias]];\n});\n\nconst TYPES: Array<string> = [].concat(\n  Object.keys(VISITOR_KEYS),\n  Object.keys(FLIPPED_ALIAS_KEYS),\n  Object.keys(DEPRECATED_KEYS),\n);\n\nexport {\n  VISITOR_KEYS,\n  ALIAS_KEYS,\n  FLIPPED_ALIAS_KEYS,\n  NODE_FIELDS,\n  BUILDER_KEYS,\n  DEPRECATED_ALIASES,\n  DEPRECATED_KEYS,\n  NODE_PARENT_VALIDATIONS,\n  PLACEHOLDERS,\n  PLACEHOLDERS_ALIAS,\n  PLACEHOLDERS_FLIPPED_ALIAS,\n  TYPES,\n};\n\nexport type { FieldOptions } from \"./utils.ts\";\n","import {\n  NODE_FIELDS,\n  NODE_PARENT_VALIDATIONS,\n  type FieldOptions,\n} from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function validate(\n  node: t.Node | undefined | null,\n  key: string,\n  val: unknown,\n): void {\n  if (!node) return;\n\n  const fields = NODE_FIELDS[node.type];\n  if (!fields) return;\n\n  const field = fields[key];\n  validateField(node, key, val, field);\n  validateChild(node, key, val);\n}\n\nexport function validateInternal(\n  field: FieldOptions,\n  node: t.Node | undefined | null,\n  key: string,\n  val: unknown,\n  maybeNode?: 1,\n): void {\n  if (!field?.validate) return;\n  if (field.optional && val == null) return;\n\n  field.validate(node, key, val);\n\n  if (maybeNode) {\n    const type = (val as t.Node).type;\n    if (type == null) return;\n    NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n  }\n}\n\nexport function validateField(\n  node: t.Node | undefined | null,\n  key: string,\n  val: unknown,\n  field: FieldOptions | undefined | null,\n): void {\n  if (!field?.validate) return;\n  if (field.optional && val == null) return;\n\n  field.validate(node, key, val);\n}\n\nexport function validateChild(\n  node: t.Node | undefined | null,\n  key: string,\n  val?: unknown,\n) {\n  const type = (val as t.Node)?.type;\n  if (type == null) return;\n  NODE_PARENT_VALIDATIONS[type]?.(node, key, val);\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport * as _validate from \"../../validators/validate.ts\";\nimport type * as t from \"../../ast-types/generated/index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\nimport * as utils from \"../../definitions/utils.ts\";\n\nconst { validateInternal: validate } = _validate;\nconst { NODE_FIELDS } = utils;\n\nexport function arrayExpression(\n  elements: Array<null | t.Expression | t.SpreadElement> = [],\n): t.ArrayExpression {\n  const node: t.ArrayExpression = {\n    type: \"ArrayExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function assignmentExpression(\n  operator: string,\n  left: t.LVal | t.OptionalMemberExpression,\n  right: t.Expression,\n): t.AssignmentExpression {\n  const node: t.AssignmentExpression = {\n    type: \"AssignmentExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function binaryExpression(\n  operator:\n    | \"+\"\n    | \"-\"\n    | \"/\"\n    | \"%\"\n    | \"*\"\n    | \"**\"\n    | \"&\"\n    | \"|\"\n    | \">>\"\n    | \">>>\"\n    | \"<<\"\n    | \"^\"\n    | \"==\"\n    | \"===\"\n    | \"!=\"\n    | \"!==\"\n    | \"in\"\n    | \"instanceof\"\n    | \">\"\n    | \"<\"\n    | \">=\"\n    | \"<=\"\n    | \"|>\",\n  left: t.Expression | t.PrivateName,\n  right: t.Expression,\n): t.BinaryExpression {\n  const node: t.BinaryExpression = {\n    type: \"BinaryExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.BinaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function interpreterDirective(value: string): t.InterpreterDirective {\n  const node: t.InterpreterDirective = {\n    type: \"InterpreterDirective\",\n    value,\n  };\n  const defs = NODE_FIELDS.InterpreterDirective;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function directive(value: t.DirectiveLiteral): t.Directive {\n  const node: t.Directive = {\n    type: \"Directive\",\n    value,\n  };\n  const defs = NODE_FIELDS.Directive;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function directiveLiteral(value: string): t.DirectiveLiteral {\n  const node: t.DirectiveLiteral = {\n    type: \"DirectiveLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DirectiveLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function blockStatement(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n): t.BlockStatement {\n  const node: t.BlockStatement = {\n    type: \"BlockStatement\",\n    body,\n    directives,\n  };\n  const defs = NODE_FIELDS.BlockStatement;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  return node;\n}\nexport function breakStatement(\n  label: t.Identifier | null = null,\n): t.BreakStatement {\n  const node: t.BreakStatement = {\n    type: \"BreakStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.BreakStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function callExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.CallExpression {\n  const node: t.CallExpression = {\n    type: \"CallExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.CallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function catchClause(\n  param:\n    | t.Identifier\n    | t.ArrayPattern\n    | t.ObjectPattern\n    | null\n    | undefined = null,\n  body: t.BlockStatement,\n): t.CatchClause {\n  const node: t.CatchClause = {\n    type: \"CatchClause\",\n    param,\n    body,\n  };\n  const defs = NODE_FIELDS.CatchClause;\n  validate(defs.param, node, \"param\", param, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function conditionalExpression(\n  test: t.Expression,\n  consequent: t.Expression,\n  alternate: t.Expression,\n): t.ConditionalExpression {\n  const node: t.ConditionalExpression = {\n    type: \"ConditionalExpression\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.ConditionalExpression;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function continueStatement(\n  label: t.Identifier | null = null,\n): t.ContinueStatement {\n  const node: t.ContinueStatement = {\n    type: \"ContinueStatement\",\n    label,\n  };\n  const defs = NODE_FIELDS.ContinueStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  return node;\n}\nexport function debuggerStatement(): t.DebuggerStatement {\n  return {\n    type: \"DebuggerStatement\",\n  };\n}\nexport function doWhileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.DoWhileStatement {\n  const node: t.DoWhileStatement = {\n    type: \"DoWhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.DoWhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function emptyStatement(): t.EmptyStatement {\n  return {\n    type: \"EmptyStatement\",\n  };\n}\nexport function expressionStatement(\n  expression: t.Expression,\n): t.ExpressionStatement {\n  const node: t.ExpressionStatement = {\n    type: \"ExpressionStatement\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ExpressionStatement;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function file(\n  program: t.Program,\n  comments: Array<t.CommentBlock | t.CommentLine> | null = null,\n  tokens: Array<any> | null = null,\n): t.File {\n  const node: t.File = {\n    type: \"File\",\n    program,\n    comments,\n    tokens,\n  };\n  const defs = NODE_FIELDS.File;\n  validate(defs.program, node, \"program\", program, 1);\n  validate(defs.comments, node, \"comments\", comments, 1);\n  validate(defs.tokens, node, \"tokens\", tokens);\n  return node;\n}\nexport function forInStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n): t.ForInStatement {\n  const node: t.ForInStatement = {\n    type: \"ForInStatement\",\n    left,\n    right,\n    body,\n  };\n  const defs = NODE_FIELDS.ForInStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function forStatement(\n  init: t.VariableDeclaration | t.Expression | null | undefined = null,\n  test: t.Expression | null | undefined = null,\n  update: t.Expression | null | undefined = null,\n  body: t.Statement,\n): t.ForStatement {\n  const node: t.ForStatement = {\n    type: \"ForStatement\",\n    init,\n    test,\n    update,\n    body,\n  };\n  const defs = NODE_FIELDS.ForStatement;\n  validate(defs.init, node, \"init\", init, 1);\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.update, node, \"update\", update, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function functionDeclaration(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionDeclaration {\n  const node: t.FunctionDeclaration = {\n    type: \"FunctionDeclaration\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function functionExpression(\n  id: t.Identifier | null | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  generator: boolean = false,\n  async: boolean = false,\n): t.FunctionExpression {\n  const node: t.FunctionExpression = {\n    type: \"FunctionExpression\",\n    id,\n    params,\n    body,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.FunctionExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function identifier(name: string): t.Identifier {\n  const node: t.Identifier = {\n    type: \"Identifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.Identifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function ifStatement(\n  test: t.Expression,\n  consequent: t.Statement,\n  alternate: t.Statement | null = null,\n): t.IfStatement {\n  const node: t.IfStatement = {\n    type: \"IfStatement\",\n    test,\n    consequent,\n    alternate,\n  };\n  const defs = NODE_FIELDS.IfStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  validate(defs.alternate, node, \"alternate\", alternate, 1);\n  return node;\n}\nexport function labeledStatement(\n  label: t.Identifier,\n  body: t.Statement,\n): t.LabeledStatement {\n  const node: t.LabeledStatement = {\n    type: \"LabeledStatement\",\n    label,\n    body,\n  };\n  const defs = NODE_FIELDS.LabeledStatement;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function stringLiteral(value: string): t.StringLiteral {\n  const node: t.StringLiteral = {\n    type: \"StringLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numericLiteral(value: number): t.NumericLiteral {\n  const node: t.NumericLiteral = {\n    type: \"NumericLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumericLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteral(): t.NullLiteral {\n  return {\n    type: \"NullLiteral\",\n  };\n}\nexport function booleanLiteral(value: boolean): t.BooleanLiteral {\n  const node: t.BooleanLiteral = {\n    type: \"BooleanLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function regExpLiteral(\n  pattern: string,\n  flags: string = \"\",\n): t.RegExpLiteral {\n  const node: t.RegExpLiteral = {\n    type: \"RegExpLiteral\",\n    pattern,\n    flags,\n  };\n  const defs = NODE_FIELDS.RegExpLiteral;\n  validate(defs.pattern, node, \"pattern\", pattern);\n  validate(defs.flags, node, \"flags\", flags);\n  return node;\n}\nexport function logicalExpression(\n  operator: \"||\" | \"&&\" | \"??\",\n  left: t.Expression,\n  right: t.Expression,\n): t.LogicalExpression {\n  const node: t.LogicalExpression = {\n    type: \"LogicalExpression\",\n    operator,\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.LogicalExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function memberExpression(\n  object: t.Expression | t.Super,\n  property: t.Expression | t.Identifier | t.PrivateName,\n  computed: boolean = false,\n  optional: boolean | null = null,\n): t.MemberExpression {\n  const node: t.MemberExpression = {\n    type: \"MemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.MemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function newExpression(\n  callee: t.Expression | t.Super | t.V8IntrinsicIdentifier,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n): t.NewExpression {\n  const node: t.NewExpression = {\n    type: \"NewExpression\",\n    callee,\n    arguments: _arguments,\n  };\n  const defs = NODE_FIELDS.NewExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  return node;\n}\nexport function program(\n  body: Array<t.Statement>,\n  directives: Array<t.Directive> = [],\n  sourceType: \"script\" | \"module\" = \"script\",\n  interpreter: t.InterpreterDirective | null = null,\n): t.Program {\n  const node: t.Program = {\n    type: \"Program\",\n    body,\n    directives,\n    sourceType,\n    interpreter,\n  };\n  const defs = NODE_FIELDS.Program;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.directives, node, \"directives\", directives, 1);\n  validate(defs.sourceType, node, \"sourceType\", sourceType);\n  validate(defs.interpreter, node, \"interpreter\", interpreter, 1);\n  return node;\n}\nexport function objectExpression(\n  properties: Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement>,\n): t.ObjectExpression {\n  const node: t.ObjectExpression = {\n    type: \"ObjectExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function objectMethod(\n  kind: \"method\" | \"get\" | \"set\" | undefined = \"method\",\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ObjectMethod {\n  const node: t.ObjectMethod = {\n    type: \"ObjectMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ObjectMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectProperty(\n  key:\n    | t.Expression\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.DecimalLiteral\n    | t.PrivateName,\n  value: t.Expression | t.PatternLike,\n  computed: boolean = false,\n  shorthand: boolean = false,\n  decorators: Array<t.Decorator> | null = null,\n): t.ObjectProperty {\n  const node: t.ObjectProperty = {\n    type: \"ObjectProperty\",\n    key,\n    value,\n    computed,\n    shorthand,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ObjectProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.shorthand, node, \"shorthand\", shorthand);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function restElement(argument: t.LVal): t.RestElement {\n  const node: t.RestElement = {\n    type: \"RestElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.RestElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function returnStatement(\n  argument: t.Expression | null = null,\n): t.ReturnStatement {\n  const node: t.ReturnStatement = {\n    type: \"ReturnStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ReturnStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function sequenceExpression(\n  expressions: Array<t.Expression>,\n): t.SequenceExpression {\n  const node: t.SequenceExpression = {\n    type: \"SequenceExpression\",\n    expressions,\n  };\n  const defs = NODE_FIELDS.SequenceExpression;\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function parenthesizedExpression(\n  expression: t.Expression,\n): t.ParenthesizedExpression {\n  const node: t.ParenthesizedExpression = {\n    type: \"ParenthesizedExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.ParenthesizedExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function switchCase(\n  test: t.Expression | null | undefined = null,\n  consequent: Array<t.Statement>,\n): t.SwitchCase {\n  const node: t.SwitchCase = {\n    type: \"SwitchCase\",\n    test,\n    consequent,\n  };\n  const defs = NODE_FIELDS.SwitchCase;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.consequent, node, \"consequent\", consequent, 1);\n  return node;\n}\nexport function switchStatement(\n  discriminant: t.Expression,\n  cases: Array<t.SwitchCase>,\n): t.SwitchStatement {\n  const node: t.SwitchStatement = {\n    type: \"SwitchStatement\",\n    discriminant,\n    cases,\n  };\n  const defs = NODE_FIELDS.SwitchStatement;\n  validate(defs.discriminant, node, \"discriminant\", discriminant, 1);\n  validate(defs.cases, node, \"cases\", cases, 1);\n  return node;\n}\nexport function thisExpression(): t.ThisExpression {\n  return {\n    type: \"ThisExpression\",\n  };\n}\nexport function throwStatement(argument: t.Expression): t.ThrowStatement {\n  const node: t.ThrowStatement = {\n    type: \"ThrowStatement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ThrowStatement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function tryStatement(\n  block: t.BlockStatement,\n  handler: t.CatchClause | null = null,\n  finalizer: t.BlockStatement | null = null,\n): t.TryStatement {\n  const node: t.TryStatement = {\n    type: \"TryStatement\",\n    block,\n    handler,\n    finalizer,\n  };\n  const defs = NODE_FIELDS.TryStatement;\n  validate(defs.block, node, \"block\", block, 1);\n  validate(defs.handler, node, \"handler\", handler, 1);\n  validate(defs.finalizer, node, \"finalizer\", finalizer, 1);\n  return node;\n}\nexport function unaryExpression(\n  operator: \"void\" | \"throw\" | \"delete\" | \"!\" | \"+\" | \"-\" | \"~\" | \"typeof\",\n  argument: t.Expression,\n  prefix: boolean = true,\n): t.UnaryExpression {\n  const node: t.UnaryExpression = {\n    type: \"UnaryExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UnaryExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function updateExpression(\n  operator: \"++\" | \"--\",\n  argument: t.Expression,\n  prefix: boolean = false,\n): t.UpdateExpression {\n  const node: t.UpdateExpression = {\n    type: \"UpdateExpression\",\n    operator,\n    argument,\n    prefix,\n  };\n  const defs = NODE_FIELDS.UpdateExpression;\n  validate(defs.operator, node, \"operator\", operator);\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.prefix, node, \"prefix\", prefix);\n  return node;\n}\nexport function variableDeclaration(\n  kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  declarations: Array<t.VariableDeclarator>,\n): t.VariableDeclaration {\n  const node: t.VariableDeclaration = {\n    type: \"VariableDeclaration\",\n    kind,\n    declarations,\n  };\n  const defs = NODE_FIELDS.VariableDeclaration;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.declarations, node, \"declarations\", declarations, 1);\n  return node;\n}\nexport function variableDeclarator(\n  id: t.LVal,\n  init: t.Expression | null = null,\n): t.VariableDeclarator {\n  const node: t.VariableDeclarator = {\n    type: \"VariableDeclarator\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.VariableDeclarator;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function whileStatement(\n  test: t.Expression,\n  body: t.Statement,\n): t.WhileStatement {\n  const node: t.WhileStatement = {\n    type: \"WhileStatement\",\n    test,\n    body,\n  };\n  const defs = NODE_FIELDS.WhileStatement;\n  validate(defs.test, node, \"test\", test, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function withStatement(\n  object: t.Expression,\n  body: t.Statement,\n): t.WithStatement {\n  const node: t.WithStatement = {\n    type: \"WithStatement\",\n    object,\n    body,\n  };\n  const defs = NODE_FIELDS.WithStatement;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function assignmentPattern(\n  left:\n    | t.Identifier\n    | t.ObjectPattern\n    | t.ArrayPattern\n    | t.MemberExpression\n    | t.TSAsExpression\n    | t.TSSatisfiesExpression\n    | t.TSTypeAssertion\n    | t.TSNonNullExpression,\n  right: t.Expression,\n): t.AssignmentPattern {\n  const node: t.AssignmentPattern = {\n    type: \"AssignmentPattern\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.AssignmentPattern;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function arrayPattern(\n  elements: Array<null | t.PatternLike | t.LVal>,\n): t.ArrayPattern {\n  const node: t.ArrayPattern = {\n    type: \"ArrayPattern\",\n    elements,\n  };\n  const defs = NODE_FIELDS.ArrayPattern;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function arrowFunctionExpression(\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  body: t.BlockStatement | t.Expression,\n  async: boolean = false,\n): t.ArrowFunctionExpression {\n  const node: t.ArrowFunctionExpression = {\n    type: \"ArrowFunctionExpression\",\n    params,\n    body,\n    async,\n    expression: null,\n  };\n  const defs = NODE_FIELDS.ArrowFunctionExpression;\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function classBody(\n  body: Array<\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty\n    | t.TSDeclareMethod\n    | t.TSIndexSignature\n    | t.StaticBlock\n  >,\n): t.ClassBody {\n  const node: t.ClassBody = {\n    type: \"ClassBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.ClassBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function classExpression(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassExpression {\n  const node: t.ClassExpression = {\n    type: \"ClassExpression\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassExpression;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function classDeclaration(\n  id: t.Identifier | null | undefined = null,\n  superClass: t.Expression | null | undefined = null,\n  body: t.ClassBody,\n  decorators: Array<t.Decorator> | null = null,\n): t.ClassDeclaration {\n  const node: t.ClassDeclaration = {\n    type: \"ClassDeclaration\",\n    id,\n    superClass,\n    body,\n    decorators,\n  };\n  const defs = NODE_FIELDS.ClassDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.superClass, node, \"superClass\", superClass, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  return node;\n}\nexport function exportAllDeclaration(\n  source: t.StringLiteral,\n): t.ExportAllDeclaration {\n  const node: t.ExportAllDeclaration = {\n    type: \"ExportAllDeclaration\",\n    source,\n  };\n  const defs = NODE_FIELDS.ExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportDefaultDeclaration(\n  declaration:\n    | t.TSDeclareFunction\n    | t.FunctionDeclaration\n    | t.ClassDeclaration\n    | t.Expression,\n): t.ExportDefaultDeclaration {\n  const node: t.ExportDefaultDeclaration = {\n    type: \"ExportDefaultDeclaration\",\n    declaration,\n  };\n  const defs = NODE_FIELDS.ExportDefaultDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  return node;\n}\nexport function exportNamedDeclaration(\n  declaration: t.Declaration | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportDefaultSpecifier | t.ExportNamespaceSpecifier\n  > = [],\n  source: t.StringLiteral | null = null,\n): t.ExportNamedDeclaration {\n  const node: t.ExportNamedDeclaration = {\n    type: \"ExportNamedDeclaration\",\n    declaration,\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ExportNamedDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function exportSpecifier(\n  local: t.Identifier,\n  exported: t.Identifier | t.StringLiteral,\n): t.ExportSpecifier {\n  const node: t.ExportSpecifier = {\n    type: \"ExportSpecifier\",\n    local,\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function forOfStatement(\n  left: t.VariableDeclaration | t.LVal,\n  right: t.Expression,\n  body: t.Statement,\n  _await: boolean = false,\n): t.ForOfStatement {\n  const node: t.ForOfStatement = {\n    type: \"ForOfStatement\",\n    left,\n    right,\n    body,\n    await: _await,\n  };\n  const defs = NODE_FIELDS.ForOfStatement;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.await, node, \"await\", _await);\n  return node;\n}\nexport function importDeclaration(\n  specifiers: Array<\n    t.ImportSpecifier | t.ImportDefaultSpecifier | t.ImportNamespaceSpecifier\n  >,\n  source: t.StringLiteral,\n): t.ImportDeclaration {\n  const node: t.ImportDeclaration = {\n    type: \"ImportDeclaration\",\n    specifiers,\n    source,\n  };\n  const defs = NODE_FIELDS.ImportDeclaration;\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  return node;\n}\nexport function importDefaultSpecifier(\n  local: t.Identifier,\n): t.ImportDefaultSpecifier {\n  const node: t.ImportDefaultSpecifier = {\n    type: \"ImportDefaultSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportDefaultSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importNamespaceSpecifier(\n  local: t.Identifier,\n): t.ImportNamespaceSpecifier {\n  const node: t.ImportNamespaceSpecifier = {\n    type: \"ImportNamespaceSpecifier\",\n    local,\n  };\n  const defs = NODE_FIELDS.ImportNamespaceSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  return node;\n}\nexport function importSpecifier(\n  local: t.Identifier,\n  imported: t.Identifier | t.StringLiteral,\n): t.ImportSpecifier {\n  const node: t.ImportSpecifier = {\n    type: \"ImportSpecifier\",\n    local,\n    imported,\n  };\n  const defs = NODE_FIELDS.ImportSpecifier;\n  validate(defs.local, node, \"local\", local, 1);\n  validate(defs.imported, node, \"imported\", imported, 1);\n  return node;\n}\nexport function importExpression(\n  source: t.Expression,\n  options: t.Expression | null = null,\n): t.ImportExpression {\n  const node: t.ImportExpression = {\n    type: \"ImportExpression\",\n    source,\n    options,\n  };\n  const defs = NODE_FIELDS.ImportExpression;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.options, node, \"options\", options, 1);\n  return node;\n}\nexport function metaProperty(\n  meta: t.Identifier,\n  property: t.Identifier,\n): t.MetaProperty {\n  const node: t.MetaProperty = {\n    type: \"MetaProperty\",\n    meta,\n    property,\n  };\n  const defs = NODE_FIELDS.MetaProperty;\n  validate(defs.meta, node, \"meta\", meta, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport function classMethod(\n  kind: \"get\" | \"set\" | \"method\" | \"constructor\" | undefined = \"method\",\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  computed: boolean = false,\n  _static: boolean = false,\n  generator: boolean = false,\n  async: boolean = false,\n): t.ClassMethod {\n  const node: t.ClassMethod = {\n    type: \"ClassMethod\",\n    kind,\n    key,\n    params,\n    body,\n    computed,\n    static: _static,\n    generator,\n    async,\n  };\n  const defs = NODE_FIELDS.ClassMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.generator, node, \"generator\", generator);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function objectPattern(\n  properties: Array<t.RestElement | t.ObjectProperty>,\n): t.ObjectPattern {\n  const node: t.ObjectPattern = {\n    type: \"ObjectPattern\",\n    properties,\n  };\n  const defs = NODE_FIELDS.ObjectPattern;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function spreadElement(argument: t.Expression): t.SpreadElement {\n  const node: t.SpreadElement = {\n    type: \"SpreadElement\",\n    argument,\n  };\n  const defs = NODE_FIELDS.SpreadElement;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _super(): t.Super {\n  return {\n    type: \"Super\",\n  };\n}\nexport { _super as super };\nexport function taggedTemplateExpression(\n  tag: t.Expression,\n  quasi: t.TemplateLiteral,\n): t.TaggedTemplateExpression {\n  const node: t.TaggedTemplateExpression = {\n    type: \"TaggedTemplateExpression\",\n    tag,\n    quasi,\n  };\n  const defs = NODE_FIELDS.TaggedTemplateExpression;\n  validate(defs.tag, node, \"tag\", tag, 1);\n  validate(defs.quasi, node, \"quasi\", quasi, 1);\n  return node;\n}\nexport function templateElement(\n  value: { raw: string; cooked?: string },\n  tail: boolean = false,\n): t.TemplateElement {\n  const node: t.TemplateElement = {\n    type: \"TemplateElement\",\n    value,\n    tail,\n  };\n  const defs = NODE_FIELDS.TemplateElement;\n  validate(defs.value, node, \"value\", value);\n  validate(defs.tail, node, \"tail\", tail);\n  return node;\n}\nexport function templateLiteral(\n  quasis: Array<t.TemplateElement>,\n  expressions: Array<t.Expression | t.TSType>,\n): t.TemplateLiteral {\n  const node: t.TemplateLiteral = {\n    type: \"TemplateLiteral\",\n    quasis,\n    expressions,\n  };\n  const defs = NODE_FIELDS.TemplateLiteral;\n  validate(defs.quasis, node, \"quasis\", quasis, 1);\n  validate(defs.expressions, node, \"expressions\", expressions, 1);\n  return node;\n}\nexport function yieldExpression(\n  argument: t.Expression | null = null,\n  delegate: boolean = false,\n): t.YieldExpression {\n  const node: t.YieldExpression = {\n    type: \"YieldExpression\",\n    argument,\n    delegate,\n  };\n  const defs = NODE_FIELDS.YieldExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.delegate, node, \"delegate\", delegate);\n  return node;\n}\nexport function awaitExpression(argument: t.Expression): t.AwaitExpression {\n  const node: t.AwaitExpression = {\n    type: \"AwaitExpression\",\n    argument,\n  };\n  const defs = NODE_FIELDS.AwaitExpression;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nfunction _import(): t.Import {\n  return {\n    type: \"Import\",\n  };\n}\nexport { _import as import };\nexport function bigIntLiteral(value: string): t.BigIntLiteral {\n  const node: t.BigIntLiteral = {\n    type: \"BigIntLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.BigIntLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function exportNamespaceSpecifier(\n  exported: t.Identifier,\n): t.ExportNamespaceSpecifier {\n  const node: t.ExportNamespaceSpecifier = {\n    type: \"ExportNamespaceSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportNamespaceSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function optionalMemberExpression(\n  object: t.Expression,\n  property: t.Expression | t.Identifier,\n  computed: boolean | undefined = false,\n  optional: boolean,\n): t.OptionalMemberExpression {\n  const node: t.OptionalMemberExpression = {\n    type: \"OptionalMemberExpression\",\n    object,\n    property,\n    computed,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function optionalCallExpression(\n  callee: t.Expression,\n  _arguments: Array<t.Expression | t.SpreadElement | t.ArgumentPlaceholder>,\n  optional: boolean,\n): t.OptionalCallExpression {\n  const node: t.OptionalCallExpression = {\n    type: \"OptionalCallExpression\",\n    callee,\n    arguments: _arguments,\n    optional,\n  };\n  const defs = NODE_FIELDS.OptionalCallExpression;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  validate(defs.arguments, node, \"arguments\", _arguments, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport function classProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassProperty {\n  const node: t.ClassProperty = {\n    type: \"ClassProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classAccessorProperty(\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression\n    | t.PrivateName,\n  value: t.Expression | null = null,\n  typeAnnotation: t.TypeAnnotation | t.TSTypeAnnotation | t.Noop | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  computed: boolean = false,\n  _static: boolean = false,\n): t.ClassAccessorProperty {\n  const node: t.ClassAccessorProperty = {\n    type: \"ClassAccessorProperty\",\n    key,\n    value,\n    typeAnnotation,\n    decorators,\n    computed,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassAccessorProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.computed, node, \"computed\", computed);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateProperty(\n  key: t.PrivateName,\n  value: t.Expression | null = null,\n  decorators: Array<t.Decorator> | null = null,\n  _static: boolean = false,\n): t.ClassPrivateProperty {\n  const node: t.ClassPrivateProperty = {\n    type: \"ClassPrivateProperty\",\n    key,\n    value,\n    decorators,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function classPrivateMethod(\n  kind: \"get\" | \"set\" | \"method\" | undefined = \"method\",\n  key: t.PrivateName,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  body: t.BlockStatement,\n  _static: boolean = false,\n): t.ClassPrivateMethod {\n  const node: t.ClassPrivateMethod = {\n    type: \"ClassPrivateMethod\",\n    kind,\n    key,\n    params,\n    body,\n    static: _static,\n  };\n  const defs = NODE_FIELDS.ClassPrivateMethod;\n  validate(defs.kind, node, \"kind\", kind);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.static, node, \"static\", _static);\n  return node;\n}\nexport function privateName(id: t.Identifier): t.PrivateName {\n  const node: t.PrivateName = {\n    type: \"PrivateName\",\n    id,\n  };\n  const defs = NODE_FIELDS.PrivateName;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function staticBlock(body: Array<t.Statement>): t.StaticBlock {\n  const node: t.StaticBlock = {\n    type: \"StaticBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.StaticBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function anyTypeAnnotation(): t.AnyTypeAnnotation {\n  return {\n    type: \"AnyTypeAnnotation\",\n  };\n}\nexport function arrayTypeAnnotation(\n  elementType: t.FlowType,\n): t.ArrayTypeAnnotation {\n  const node: t.ArrayTypeAnnotation = {\n    type: \"ArrayTypeAnnotation\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.ArrayTypeAnnotation;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport function booleanTypeAnnotation(): t.BooleanTypeAnnotation {\n  return {\n    type: \"BooleanTypeAnnotation\",\n  };\n}\nexport function booleanLiteralTypeAnnotation(\n  value: boolean,\n): t.BooleanLiteralTypeAnnotation {\n  const node: t.BooleanLiteralTypeAnnotation = {\n    type: \"BooleanLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.BooleanLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function nullLiteralTypeAnnotation(): t.NullLiteralTypeAnnotation {\n  return {\n    type: \"NullLiteralTypeAnnotation\",\n  };\n}\nexport function classImplements(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.ClassImplements {\n  const node: t.ClassImplements = {\n    type: \"ClassImplements\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.ClassImplements;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function declareClass(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareClass {\n  const node: t.DeclareClass = {\n    type: \"DeclareClass\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareClass;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareFunction(id: t.Identifier): t.DeclareFunction {\n  const node: t.DeclareFunction = {\n    type: \"DeclareFunction\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareInterface(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.DeclareInterface {\n  const node: t.DeclareInterface = {\n    type: \"DeclareInterface\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.DeclareInterface;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function declareModule(\n  id: t.Identifier | t.StringLiteral,\n  body: t.BlockStatement,\n  kind: \"CommonJS\" | \"ES\" | null = null,\n): t.DeclareModule {\n  const node: t.DeclareModule = {\n    type: \"DeclareModule\",\n    id,\n    body,\n    kind,\n  };\n  const defs = NODE_FIELDS.DeclareModule;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function declareModuleExports(\n  typeAnnotation: t.TypeAnnotation,\n): t.DeclareModuleExports {\n  const node: t.DeclareModuleExports = {\n    type: \"DeclareModuleExports\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.DeclareModuleExports;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function declareTypeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.DeclareTypeAlias {\n  const node: t.DeclareTypeAlias = {\n    type: \"DeclareTypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.DeclareTypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function declareOpaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null = null,\n  supertype: t.FlowType | null = null,\n): t.DeclareOpaqueType {\n  const node: t.DeclareOpaqueType = {\n    type: \"DeclareOpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n  };\n  const defs = NODE_FIELDS.DeclareOpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  return node;\n}\nexport function declareVariable(id: t.Identifier): t.DeclareVariable {\n  const node: t.DeclareVariable = {\n    type: \"DeclareVariable\",\n    id,\n  };\n  const defs = NODE_FIELDS.DeclareVariable;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function declareExportDeclaration(\n  declaration: t.Flow | null = null,\n  specifiers: Array<\n    t.ExportSpecifier | t.ExportNamespaceSpecifier\n  > | null = null,\n  source: t.StringLiteral | null = null,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportDeclaration {\n  const node: t.DeclareExportDeclaration = {\n    type: \"DeclareExportDeclaration\",\n    declaration,\n    specifiers,\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportDeclaration;\n  validate(defs.declaration, node, \"declaration\", declaration, 1);\n  validate(defs.specifiers, node, \"specifiers\", specifiers, 1);\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declareExportAllDeclaration(\n  source: t.StringLiteral,\n  attributes: Array<t.ImportAttribute> | null = null,\n): t.DeclareExportAllDeclaration {\n  const node: t.DeclareExportAllDeclaration = {\n    type: \"DeclareExportAllDeclaration\",\n    source,\n    attributes,\n  };\n  const defs = NODE_FIELDS.DeclareExportAllDeclaration;\n  validate(defs.source, node, \"source\", source, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  return node;\n}\nexport function declaredPredicate(value: t.Flow): t.DeclaredPredicate {\n  const node: t.DeclaredPredicate = {\n    type: \"DeclaredPredicate\",\n    value,\n  };\n  const defs = NODE_FIELDS.DeclaredPredicate;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function existsTypeAnnotation(): t.ExistsTypeAnnotation {\n  return {\n    type: \"ExistsTypeAnnotation\",\n  };\n}\nexport function functionTypeAnnotation(\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  params: Array<t.FunctionTypeParam>,\n  rest: t.FunctionTypeParam | null | undefined = null,\n  returnType: t.FlowType,\n): t.FunctionTypeAnnotation {\n  const node: t.FunctionTypeAnnotation = {\n    type: \"FunctionTypeAnnotation\",\n    typeParameters,\n    params,\n    rest,\n    returnType,\n  };\n  const defs = NODE_FIELDS.FunctionTypeAnnotation;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.rest, node, \"rest\", rest, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport function functionTypeParam(\n  name: t.Identifier | null | undefined = null,\n  typeAnnotation: t.FlowType,\n): t.FunctionTypeParam {\n  const node: t.FunctionTypeParam = {\n    type: \"FunctionTypeParam\",\n    name,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.FunctionTypeParam;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function genericTypeAnnotation(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.GenericTypeAnnotation {\n  const node: t.GenericTypeAnnotation = {\n    type: \"GenericTypeAnnotation\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.GenericTypeAnnotation;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function inferredPredicate(): t.InferredPredicate {\n  return {\n    type: \"InferredPredicate\",\n  };\n}\nexport function interfaceExtends(\n  id: t.Identifier | t.QualifiedTypeIdentifier,\n  typeParameters: t.TypeParameterInstantiation | null = null,\n): t.InterfaceExtends {\n  const node: t.InterfaceExtends = {\n    type: \"InterfaceExtends\",\n    id,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.InterfaceExtends;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport function interfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceDeclaration {\n  const node: t.InterfaceDeclaration = {\n    type: \"InterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function interfaceTypeAnnotation(\n  _extends: Array<t.InterfaceExtends> | null | undefined = null,\n  body: t.ObjectTypeAnnotation,\n): t.InterfaceTypeAnnotation {\n  const node: t.InterfaceTypeAnnotation = {\n    type: \"InterfaceTypeAnnotation\",\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.InterfaceTypeAnnotation;\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function intersectionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.IntersectionTypeAnnotation {\n  const node: t.IntersectionTypeAnnotation = {\n    type: \"IntersectionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.IntersectionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function mixedTypeAnnotation(): t.MixedTypeAnnotation {\n  return {\n    type: \"MixedTypeAnnotation\",\n  };\n}\nexport function emptyTypeAnnotation(): t.EmptyTypeAnnotation {\n  return {\n    type: \"EmptyTypeAnnotation\",\n  };\n}\nexport function nullableTypeAnnotation(\n  typeAnnotation: t.FlowType,\n): t.NullableTypeAnnotation {\n  const node: t.NullableTypeAnnotation = {\n    type: \"NullableTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.NullableTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function numberLiteralTypeAnnotation(\n  value: number,\n): t.NumberLiteralTypeAnnotation {\n  const node: t.NumberLiteralTypeAnnotation = {\n    type: \"NumberLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.NumberLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function numberTypeAnnotation(): t.NumberTypeAnnotation {\n  return {\n    type: \"NumberTypeAnnotation\",\n  };\n}\nexport function objectTypeAnnotation(\n  properties: Array<t.ObjectTypeProperty | t.ObjectTypeSpreadProperty>,\n  indexers: Array<t.ObjectTypeIndexer> = [],\n  callProperties: Array<t.ObjectTypeCallProperty> = [],\n  internalSlots: Array<t.ObjectTypeInternalSlot> = [],\n  exact: boolean = false,\n): t.ObjectTypeAnnotation {\n  const node: t.ObjectTypeAnnotation = {\n    type: \"ObjectTypeAnnotation\",\n    properties,\n    indexers,\n    callProperties,\n    internalSlots,\n    exact,\n  };\n  const defs = NODE_FIELDS.ObjectTypeAnnotation;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  validate(defs.indexers, node, \"indexers\", indexers, 1);\n  validate(defs.callProperties, node, \"callProperties\", callProperties, 1);\n  validate(defs.internalSlots, node, \"internalSlots\", internalSlots, 1);\n  validate(defs.exact, node, \"exact\", exact);\n  return node;\n}\nexport function objectTypeInternalSlot(\n  id: t.Identifier,\n  value: t.FlowType,\n  optional: boolean,\n  _static: boolean,\n  method: boolean,\n): t.ObjectTypeInternalSlot {\n  const node: t.ObjectTypeInternalSlot = {\n    type: \"ObjectTypeInternalSlot\",\n    id,\n    value,\n    optional,\n    static: _static,\n    method,\n  };\n  const defs = NODE_FIELDS.ObjectTypeInternalSlot;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  validate(defs.static, node, \"static\", _static);\n  validate(defs.method, node, \"method\", method);\n  return node;\n}\nexport function objectTypeCallProperty(\n  value: t.FlowType,\n): t.ObjectTypeCallProperty {\n  const node: t.ObjectTypeCallProperty = {\n    type: \"ObjectTypeCallProperty\",\n    value,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeCallProperty;\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function objectTypeIndexer(\n  id: t.Identifier | null | undefined = null,\n  key: t.FlowType,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeIndexer {\n  const node: t.ObjectTypeIndexer = {\n    type: \"ObjectTypeIndexer\",\n    id,\n    key,\n    value,\n    variance,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeIndexer;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeProperty(\n  key: t.Identifier | t.StringLiteral,\n  value: t.FlowType,\n  variance: t.Variance | null = null,\n): t.ObjectTypeProperty {\n  const node: t.ObjectTypeProperty = {\n    type: \"ObjectTypeProperty\",\n    key,\n    value,\n    variance,\n    kind: null,\n    method: null,\n    optional: null,\n    proto: null,\n    static: null,\n  };\n  const defs = NODE_FIELDS.ObjectTypeProperty;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function objectTypeSpreadProperty(\n  argument: t.FlowType,\n): t.ObjectTypeSpreadProperty {\n  const node: t.ObjectTypeSpreadProperty = {\n    type: \"ObjectTypeSpreadProperty\",\n    argument,\n  };\n  const defs = NODE_FIELDS.ObjectTypeSpreadProperty;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function opaqueType(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  supertype: t.FlowType | null | undefined = null,\n  impltype: t.FlowType,\n): t.OpaqueType {\n  const node: t.OpaqueType = {\n    type: \"OpaqueType\",\n    id,\n    typeParameters,\n    supertype,\n    impltype,\n  };\n  const defs = NODE_FIELDS.OpaqueType;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.supertype, node, \"supertype\", supertype, 1);\n  validate(defs.impltype, node, \"impltype\", impltype, 1);\n  return node;\n}\nexport function qualifiedTypeIdentifier(\n  id: t.Identifier,\n  qualification: t.Identifier | t.QualifiedTypeIdentifier,\n): t.QualifiedTypeIdentifier {\n  const node: t.QualifiedTypeIdentifier = {\n    type: \"QualifiedTypeIdentifier\",\n    id,\n    qualification,\n  };\n  const defs = NODE_FIELDS.QualifiedTypeIdentifier;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.qualification, node, \"qualification\", qualification, 1);\n  return node;\n}\nexport function stringLiteralTypeAnnotation(\n  value: string,\n): t.StringLiteralTypeAnnotation {\n  const node: t.StringLiteralTypeAnnotation = {\n    type: \"StringLiteralTypeAnnotation\",\n    value,\n  };\n  const defs = NODE_FIELDS.StringLiteralTypeAnnotation;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function stringTypeAnnotation(): t.StringTypeAnnotation {\n  return {\n    type: \"StringTypeAnnotation\",\n  };\n}\nexport function symbolTypeAnnotation(): t.SymbolTypeAnnotation {\n  return {\n    type: \"SymbolTypeAnnotation\",\n  };\n}\nexport function thisTypeAnnotation(): t.ThisTypeAnnotation {\n  return {\n    type: \"ThisTypeAnnotation\",\n  };\n}\nexport function tupleTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.TupleTypeAnnotation {\n  const node: t.TupleTypeAnnotation = {\n    type: \"TupleTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.TupleTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function typeofTypeAnnotation(\n  argument: t.FlowType,\n): t.TypeofTypeAnnotation {\n  const node: t.TypeofTypeAnnotation = {\n    type: \"TypeofTypeAnnotation\",\n    argument,\n  };\n  const defs = NODE_FIELDS.TypeofTypeAnnotation;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport function typeAlias(\n  id: t.Identifier,\n  typeParameters: t.TypeParameterDeclaration | null | undefined = null,\n  right: t.FlowType,\n): t.TypeAlias {\n  const node: t.TypeAlias = {\n    type: \"TypeAlias\",\n    id,\n    typeParameters,\n    right,\n  };\n  const defs = NODE_FIELDS.TypeAlias;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport function typeAnnotation(typeAnnotation: t.FlowType): t.TypeAnnotation {\n  const node: t.TypeAnnotation = {\n    type: \"TypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeCastExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TypeAnnotation,\n): t.TypeCastExpression {\n  const node: t.TypeCastExpression = {\n    type: \"TypeCastExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TypeCastExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport function typeParameter(\n  bound: t.TypeAnnotation | null = null,\n  _default: t.FlowType | null = null,\n  variance: t.Variance | null = null,\n): t.TypeParameter {\n  const node: t.TypeParameter = {\n    type: \"TypeParameter\",\n    bound,\n    default: _default,\n    variance,\n    name: null,\n  };\n  const defs = NODE_FIELDS.TypeParameter;\n  validate(defs.bound, node, \"bound\", bound, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.variance, node, \"variance\", variance, 1);\n  return node;\n}\nexport function typeParameterDeclaration(\n  params: Array<t.TypeParameter>,\n): t.TypeParameterDeclaration {\n  const node: t.TypeParameterDeclaration = {\n    type: \"TypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function typeParameterInstantiation(\n  params: Array<t.FlowType>,\n): t.TypeParameterInstantiation {\n  const node: t.TypeParameterInstantiation = {\n    type: \"TypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport function unionTypeAnnotation(\n  types: Array<t.FlowType>,\n): t.UnionTypeAnnotation {\n  const node: t.UnionTypeAnnotation = {\n    type: \"UnionTypeAnnotation\",\n    types,\n  };\n  const defs = NODE_FIELDS.UnionTypeAnnotation;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport function variance(kind: \"minus\" | \"plus\"): t.Variance {\n  const node: t.Variance = {\n    type: \"Variance\",\n    kind,\n  };\n  const defs = NODE_FIELDS.Variance;\n  validate(defs.kind, node, \"kind\", kind);\n  return node;\n}\nexport function voidTypeAnnotation(): t.VoidTypeAnnotation {\n  return {\n    type: \"VoidTypeAnnotation\",\n  };\n}\nexport function enumDeclaration(\n  id: t.Identifier,\n  body:\n    | t.EnumBooleanBody\n    | t.EnumNumberBody\n    | t.EnumStringBody\n    | t.EnumSymbolBody,\n): t.EnumDeclaration {\n  const node: t.EnumDeclaration = {\n    type: \"EnumDeclaration\",\n    id,\n    body,\n  };\n  const defs = NODE_FIELDS.EnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function enumBooleanBody(\n  members: Array<t.EnumBooleanMember>,\n): t.EnumBooleanBody {\n  const node: t.EnumBooleanBody = {\n    type: \"EnumBooleanBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumNumberBody(\n  members: Array<t.EnumNumberMember>,\n): t.EnumNumberBody {\n  const node: t.EnumNumberBody = {\n    type: \"EnumNumberBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumNumberBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumStringBody(\n  members: Array<t.EnumStringMember | t.EnumDefaultedMember>,\n): t.EnumStringBody {\n  const node: t.EnumStringBody = {\n    type: \"EnumStringBody\",\n    members,\n    explicitType: null,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumStringBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumSymbolBody(\n  members: Array<t.EnumDefaultedMember>,\n): t.EnumSymbolBody {\n  const node: t.EnumSymbolBody = {\n    type: \"EnumSymbolBody\",\n    members,\n    hasUnknownMembers: null,\n  };\n  const defs = NODE_FIELDS.EnumSymbolBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport function enumBooleanMember(id: t.Identifier): t.EnumBooleanMember {\n  const node: t.EnumBooleanMember = {\n    type: \"EnumBooleanMember\",\n    id,\n    init: null,\n  };\n  const defs = NODE_FIELDS.EnumBooleanMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function enumNumberMember(\n  id: t.Identifier,\n  init: t.NumericLiteral,\n): t.EnumNumberMember {\n  const node: t.EnumNumberMember = {\n    type: \"EnumNumberMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumNumberMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumStringMember(\n  id: t.Identifier,\n  init: t.StringLiteral,\n): t.EnumStringMember {\n  const node: t.EnumStringMember = {\n    type: \"EnumStringMember\",\n    id,\n    init,\n  };\n  const defs = NODE_FIELDS.EnumStringMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.init, node, \"init\", init, 1);\n  return node;\n}\nexport function enumDefaultedMember(id: t.Identifier): t.EnumDefaultedMember {\n  const node: t.EnumDefaultedMember = {\n    type: \"EnumDefaultedMember\",\n    id,\n  };\n  const defs = NODE_FIELDS.EnumDefaultedMember;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport function indexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.IndexedAccessType {\n  const node: t.IndexedAccessType = {\n    type: \"IndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.IndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function optionalIndexedAccessType(\n  objectType: t.FlowType,\n  indexType: t.FlowType,\n): t.OptionalIndexedAccessType {\n  const node: t.OptionalIndexedAccessType = {\n    type: \"OptionalIndexedAccessType\",\n    objectType,\n    indexType,\n    optional: null,\n  };\n  const defs = NODE_FIELDS.OptionalIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport function jsxAttribute(\n  name: t.JSXIdentifier | t.JSXNamespacedName,\n  value:\n    | t.JSXElement\n    | t.JSXFragment\n    | t.StringLiteral\n    | t.JSXExpressionContainer\n    | null = null,\n): t.JSXAttribute {\n  const node: t.JSXAttribute = {\n    type: \"JSXAttribute\",\n    name,\n    value,\n  };\n  const defs = NODE_FIELDS.JSXAttribute;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport { jsxAttribute as jSXAttribute };\nexport function jsxClosingElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n): t.JSXClosingElement {\n  const node: t.JSXClosingElement = {\n    type: \"JSXClosingElement\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXClosingElement;\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxClosingElement as jSXClosingElement };\nexport function jsxElement(\n  openingElement: t.JSXOpeningElement,\n  closingElement: t.JSXClosingElement | null | undefined = null,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n  selfClosing: boolean | null = null,\n): t.JSXElement {\n  const node: t.JSXElement = {\n    type: \"JSXElement\",\n    openingElement,\n    closingElement,\n    children,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXElement;\n  validate(defs.openingElement, node, \"openingElement\", openingElement, 1);\n  validate(defs.closingElement, node, \"closingElement\", closingElement, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxElement as jSXElement };\nexport function jsxEmptyExpression(): t.JSXEmptyExpression {\n  return {\n    type: \"JSXEmptyExpression\",\n  };\n}\nexport { jsxEmptyExpression as jSXEmptyExpression };\nexport function jsxExpressionContainer(\n  expression: t.Expression | t.JSXEmptyExpression,\n): t.JSXExpressionContainer {\n  const node: t.JSXExpressionContainer = {\n    type: \"JSXExpressionContainer\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXExpressionContainer;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxExpressionContainer as jSXExpressionContainer };\nexport function jsxSpreadChild(expression: t.Expression): t.JSXSpreadChild {\n  const node: t.JSXSpreadChild = {\n    type: \"JSXSpreadChild\",\n    expression,\n  };\n  const defs = NODE_FIELDS.JSXSpreadChild;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { jsxSpreadChild as jSXSpreadChild };\nexport function jsxIdentifier(name: string): t.JSXIdentifier {\n  const node: t.JSXIdentifier = {\n    type: \"JSXIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.JSXIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { jsxIdentifier as jSXIdentifier };\nexport function jsxMemberExpression(\n  object: t.JSXMemberExpression | t.JSXIdentifier,\n  property: t.JSXIdentifier,\n): t.JSXMemberExpression {\n  const node: t.JSXMemberExpression = {\n    type: \"JSXMemberExpression\",\n    object,\n    property,\n  };\n  const defs = NODE_FIELDS.JSXMemberExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.property, node, \"property\", property, 1);\n  return node;\n}\nexport { jsxMemberExpression as jSXMemberExpression };\nexport function jsxNamespacedName(\n  namespace: t.JSXIdentifier,\n  name: t.JSXIdentifier,\n): t.JSXNamespacedName {\n  const node: t.JSXNamespacedName = {\n    type: \"JSXNamespacedName\",\n    namespace,\n    name,\n  };\n  const defs = NODE_FIELDS.JSXNamespacedName;\n  validate(defs.namespace, node, \"namespace\", namespace, 1);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport { jsxNamespacedName as jSXNamespacedName };\nexport function jsxOpeningElement(\n  name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n  attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n  selfClosing: boolean = false,\n): t.JSXOpeningElement {\n  const node: t.JSXOpeningElement = {\n    type: \"JSXOpeningElement\",\n    name,\n    attributes,\n    selfClosing,\n  };\n  const defs = NODE_FIELDS.JSXOpeningElement;\n  validate(defs.name, node, \"name\", name, 1);\n  validate(defs.attributes, node, \"attributes\", attributes, 1);\n  validate(defs.selfClosing, node, \"selfClosing\", selfClosing);\n  return node;\n}\nexport { jsxOpeningElement as jSXOpeningElement };\nexport function jsxSpreadAttribute(\n  argument: t.Expression,\n): t.JSXSpreadAttribute {\n  const node: t.JSXSpreadAttribute = {\n    type: \"JSXSpreadAttribute\",\n    argument,\n  };\n  const defs = NODE_FIELDS.JSXSpreadAttribute;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  return node;\n}\nexport { jsxSpreadAttribute as jSXSpreadAttribute };\nexport function jsxText(value: string): t.JSXText {\n  const node: t.JSXText = {\n    type: \"JSXText\",\n    value,\n  };\n  const defs = NODE_FIELDS.JSXText;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport { jsxText as jSXText };\nexport function jsxFragment(\n  openingFragment: t.JSXOpeningFragment,\n  closingFragment: t.JSXClosingFragment,\n  children: Array<\n    | t.JSXText\n    | t.JSXExpressionContainer\n    | t.JSXSpreadChild\n    | t.JSXElement\n    | t.JSXFragment\n  >,\n): t.JSXFragment {\n  const node: t.JSXFragment = {\n    type: \"JSXFragment\",\n    openingFragment,\n    closingFragment,\n    children,\n  };\n  const defs = NODE_FIELDS.JSXFragment;\n  validate(defs.openingFragment, node, \"openingFragment\", openingFragment, 1);\n  validate(defs.closingFragment, node, \"closingFragment\", closingFragment, 1);\n  validate(defs.children, node, \"children\", children, 1);\n  return node;\n}\nexport { jsxFragment as jSXFragment };\nexport function jsxOpeningFragment(): t.JSXOpeningFragment {\n  return {\n    type: \"JSXOpeningFragment\",\n  };\n}\nexport { jsxOpeningFragment as jSXOpeningFragment };\nexport function jsxClosingFragment(): t.JSXClosingFragment {\n  return {\n    type: \"JSXClosingFragment\",\n  };\n}\nexport { jsxClosingFragment as jSXClosingFragment };\nexport function noop(): t.Noop {\n  return {\n    type: \"Noop\",\n  };\n}\nexport function placeholder(\n  expectedNode:\n    | \"Identifier\"\n    | \"StringLiteral\"\n    | \"Expression\"\n    | \"Statement\"\n    | \"Declaration\"\n    | \"BlockStatement\"\n    | \"ClassBody\"\n    | \"Pattern\",\n  name: t.Identifier,\n): t.Placeholder {\n  const node: t.Placeholder = {\n    type: \"Placeholder\",\n    expectedNode,\n    name,\n  };\n  const defs = NODE_FIELDS.Placeholder;\n  validate(defs.expectedNode, node, \"expectedNode\", expectedNode);\n  validate(defs.name, node, \"name\", name, 1);\n  return node;\n}\nexport function v8IntrinsicIdentifier(name: string): t.V8IntrinsicIdentifier {\n  const node: t.V8IntrinsicIdentifier = {\n    type: \"V8IntrinsicIdentifier\",\n    name,\n  };\n  const defs = NODE_FIELDS.V8IntrinsicIdentifier;\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport function argumentPlaceholder(): t.ArgumentPlaceholder {\n  return {\n    type: \"ArgumentPlaceholder\",\n  };\n}\nexport function bindExpression(\n  object: t.Expression,\n  callee: t.Expression,\n): t.BindExpression {\n  const node: t.BindExpression = {\n    type: \"BindExpression\",\n    object,\n    callee,\n  };\n  const defs = NODE_FIELDS.BindExpression;\n  validate(defs.object, node, \"object\", object, 1);\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function importAttribute(\n  key: t.Identifier | t.StringLiteral,\n  value: t.StringLiteral,\n): t.ImportAttribute {\n  const node: t.ImportAttribute = {\n    type: \"ImportAttribute\",\n    key,\n    value,\n  };\n  const defs = NODE_FIELDS.ImportAttribute;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.value, node, \"value\", value, 1);\n  return node;\n}\nexport function decorator(expression: t.Expression): t.Decorator {\n  const node: t.Decorator = {\n    type: \"Decorator\",\n    expression,\n  };\n  const defs = NODE_FIELDS.Decorator;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function doExpression(\n  body: t.BlockStatement,\n  async: boolean = false,\n): t.DoExpression {\n  const node: t.DoExpression = {\n    type: \"DoExpression\",\n    body,\n    async,\n  };\n  const defs = NODE_FIELDS.DoExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  validate(defs.async, node, \"async\", async);\n  return node;\n}\nexport function exportDefaultSpecifier(\n  exported: t.Identifier,\n): t.ExportDefaultSpecifier {\n  const node: t.ExportDefaultSpecifier = {\n    type: \"ExportDefaultSpecifier\",\n    exported,\n  };\n  const defs = NODE_FIELDS.ExportDefaultSpecifier;\n  validate(defs.exported, node, \"exported\", exported, 1);\n  return node;\n}\nexport function recordExpression(\n  properties: Array<t.ObjectProperty | t.SpreadElement>,\n): t.RecordExpression {\n  const node: t.RecordExpression = {\n    type: \"RecordExpression\",\n    properties,\n  };\n  const defs = NODE_FIELDS.RecordExpression;\n  validate(defs.properties, node, \"properties\", properties, 1);\n  return node;\n}\nexport function tupleExpression(\n  elements: Array<t.Expression | t.SpreadElement> = [],\n): t.TupleExpression {\n  const node: t.TupleExpression = {\n    type: \"TupleExpression\",\n    elements,\n  };\n  const defs = NODE_FIELDS.TupleExpression;\n  validate(defs.elements, node, \"elements\", elements, 1);\n  return node;\n}\nexport function decimalLiteral(value: string): t.DecimalLiteral {\n  const node: t.DecimalLiteral = {\n    type: \"DecimalLiteral\",\n    value,\n  };\n  const defs = NODE_FIELDS.DecimalLiteral;\n  validate(defs.value, node, \"value\", value);\n  return node;\n}\nexport function moduleExpression(body: t.Program): t.ModuleExpression {\n  const node: t.ModuleExpression = {\n    type: \"ModuleExpression\",\n    body,\n  };\n  const defs = NODE_FIELDS.ModuleExpression;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport function topicReference(): t.TopicReference {\n  return {\n    type: \"TopicReference\",\n  };\n}\nexport function pipelineTopicExpression(\n  expression: t.Expression,\n): t.PipelineTopicExpression {\n  const node: t.PipelineTopicExpression = {\n    type: \"PipelineTopicExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.PipelineTopicExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport function pipelineBareFunction(\n  callee: t.Expression,\n): t.PipelineBareFunction {\n  const node: t.PipelineBareFunction = {\n    type: \"PipelineBareFunction\",\n    callee,\n  };\n  const defs = NODE_FIELDS.PipelineBareFunction;\n  validate(defs.callee, node, \"callee\", callee, 1);\n  return node;\n}\nexport function pipelinePrimaryTopicReference(): t.PipelinePrimaryTopicReference {\n  return {\n    type: \"PipelinePrimaryTopicReference\",\n  };\n}\nexport function tsParameterProperty(\n  parameter: t.Identifier | t.AssignmentPattern,\n): t.TSParameterProperty {\n  const node: t.TSParameterProperty = {\n    type: \"TSParameterProperty\",\n    parameter,\n  };\n  const defs = NODE_FIELDS.TSParameterProperty;\n  validate(defs.parameter, node, \"parameter\", parameter, 1);\n  return node;\n}\nexport { tsParameterProperty as tSParameterProperty };\nexport function tsDeclareFunction(\n  id: t.Identifier | null | undefined = null,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<t.Identifier | t.Pattern | t.RestElement>,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareFunction {\n  const node: t.TSDeclareFunction = {\n    type: \"TSDeclareFunction\",\n    id,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareFunction;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareFunction as tSDeclareFunction };\nexport function tsDeclareMethod(\n  decorators: Array<t.Decorator> | null | undefined = null,\n  key:\n    | t.Identifier\n    | t.StringLiteral\n    | t.NumericLiteral\n    | t.BigIntLiteral\n    | t.Expression,\n  typeParameters:\n    | t.TSTypeParameterDeclaration\n    | t.Noop\n    | null\n    | undefined = null,\n  params: Array<\n    t.Identifier | t.Pattern | t.RestElement | t.TSParameterProperty\n  >,\n  returnType: t.TSTypeAnnotation | t.Noop | null = null,\n): t.TSDeclareMethod {\n  const node: t.TSDeclareMethod = {\n    type: \"TSDeclareMethod\",\n    decorators,\n    key,\n    typeParameters,\n    params,\n    returnType,\n  };\n  const defs = NODE_FIELDS.TSDeclareMethod;\n  validate(defs.decorators, node, \"decorators\", decorators, 1);\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.params, node, \"params\", params, 1);\n  validate(defs.returnType, node, \"returnType\", returnType, 1);\n  return node;\n}\nexport { tsDeclareMethod as tSDeclareMethod };\nexport function tsQualifiedName(\n  left: t.TSEntityName,\n  right: t.Identifier,\n): t.TSQualifiedName {\n  const node: t.TSQualifiedName = {\n    type: \"TSQualifiedName\",\n    left,\n    right,\n  };\n  const defs = NODE_FIELDS.TSQualifiedName;\n  validate(defs.left, node, \"left\", left, 1);\n  validate(defs.right, node, \"right\", right, 1);\n  return node;\n}\nexport { tsQualifiedName as tSQualifiedName };\nexport function tsCallSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSCallSignatureDeclaration {\n  const node: t.TSCallSignatureDeclaration = {\n    type: \"TSCallSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSCallSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsCallSignatureDeclaration as tSCallSignatureDeclaration };\nexport function tsConstructSignatureDeclaration(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructSignatureDeclaration {\n  const node: t.TSConstructSignatureDeclaration = {\n    type: \"TSConstructSignatureDeclaration\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructSignatureDeclaration;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructSignatureDeclaration as tSConstructSignatureDeclaration };\nexport function tsPropertySignature(\n  key: t.Expression,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSPropertySignature {\n  const node: t.TSPropertySignature = {\n    type: \"TSPropertySignature\",\n    key,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSPropertySignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsPropertySignature as tSPropertySignature };\nexport function tsMethodSignature(\n  key: t.Expression,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSMethodSignature {\n  const node: t.TSMethodSignature = {\n    type: \"TSMethodSignature\",\n    key,\n    typeParameters,\n    parameters,\n    typeAnnotation,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSMethodSignature;\n  validate(defs.key, node, \"key\", key, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsMethodSignature as tSMethodSignature };\nexport function tsIndexSignature(\n  parameters: Array<t.Identifier>,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSIndexSignature {\n  const node: t.TSIndexSignature = {\n    type: \"TSIndexSignature\",\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSIndexSignature;\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsIndexSignature as tSIndexSignature };\nexport function tsAnyKeyword(): t.TSAnyKeyword {\n  return {\n    type: \"TSAnyKeyword\",\n  };\n}\nexport { tsAnyKeyword as tSAnyKeyword };\nexport function tsBooleanKeyword(): t.TSBooleanKeyword {\n  return {\n    type: \"TSBooleanKeyword\",\n  };\n}\nexport { tsBooleanKeyword as tSBooleanKeyword };\nexport function tsBigIntKeyword(): t.TSBigIntKeyword {\n  return {\n    type: \"TSBigIntKeyword\",\n  };\n}\nexport { tsBigIntKeyword as tSBigIntKeyword };\nexport function tsIntrinsicKeyword(): t.TSIntrinsicKeyword {\n  return {\n    type: \"TSIntrinsicKeyword\",\n  };\n}\nexport { tsIntrinsicKeyword as tSIntrinsicKeyword };\nexport function tsNeverKeyword(): t.TSNeverKeyword {\n  return {\n    type: \"TSNeverKeyword\",\n  };\n}\nexport { tsNeverKeyword as tSNeverKeyword };\nexport function tsNullKeyword(): t.TSNullKeyword {\n  return {\n    type: \"TSNullKeyword\",\n  };\n}\nexport { tsNullKeyword as tSNullKeyword };\nexport function tsNumberKeyword(): t.TSNumberKeyword {\n  return {\n    type: \"TSNumberKeyword\",\n  };\n}\nexport { tsNumberKeyword as tSNumberKeyword };\nexport function tsObjectKeyword(): t.TSObjectKeyword {\n  return {\n    type: \"TSObjectKeyword\",\n  };\n}\nexport { tsObjectKeyword as tSObjectKeyword };\nexport function tsStringKeyword(): t.TSStringKeyword {\n  return {\n    type: \"TSStringKeyword\",\n  };\n}\nexport { tsStringKeyword as tSStringKeyword };\nexport function tsSymbolKeyword(): t.TSSymbolKeyword {\n  return {\n    type: \"TSSymbolKeyword\",\n  };\n}\nexport { tsSymbolKeyword as tSSymbolKeyword };\nexport function tsUndefinedKeyword(): t.TSUndefinedKeyword {\n  return {\n    type: \"TSUndefinedKeyword\",\n  };\n}\nexport { tsUndefinedKeyword as tSUndefinedKeyword };\nexport function tsUnknownKeyword(): t.TSUnknownKeyword {\n  return {\n    type: \"TSUnknownKeyword\",\n  };\n}\nexport { tsUnknownKeyword as tSUnknownKeyword };\nexport function tsVoidKeyword(): t.TSVoidKeyword {\n  return {\n    type: \"TSVoidKeyword\",\n  };\n}\nexport { tsVoidKeyword as tSVoidKeyword };\nexport function tsThisType(): t.TSThisType {\n  return {\n    type: \"TSThisType\",\n  };\n}\nexport { tsThisType as tSThisType };\nexport function tsFunctionType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSFunctionType {\n  const node: t.TSFunctionType = {\n    type: \"TSFunctionType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSFunctionType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsFunctionType as tSFunctionType };\nexport function tsConstructorType(\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  parameters: Array<\n    t.ArrayPattern | t.Identifier | t.ObjectPattern | t.RestElement\n  >,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n): t.TSConstructorType {\n  const node: t.TSConstructorType = {\n    type: \"TSConstructorType\",\n    typeParameters,\n    parameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSConstructorType;\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.parameters, node, \"parameters\", parameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsConstructorType as tSConstructorType };\nexport function tsTypeReference(\n  typeName: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeReference {\n  const node: t.TSTypeReference = {\n    type: \"TSTypeReference\",\n    typeName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeReference;\n  validate(defs.typeName, node, \"typeName\", typeName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeReference as tSTypeReference };\nexport function tsTypePredicate(\n  parameterName: t.Identifier | t.TSThisType,\n  typeAnnotation: t.TSTypeAnnotation | null = null,\n  asserts: boolean | null = null,\n): t.TSTypePredicate {\n  const node: t.TSTypePredicate = {\n    type: \"TSTypePredicate\",\n    parameterName,\n    typeAnnotation,\n    asserts,\n  };\n  const defs = NODE_FIELDS.TSTypePredicate;\n  validate(defs.parameterName, node, \"parameterName\", parameterName, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.asserts, node, \"asserts\", asserts);\n  return node;\n}\nexport { tsTypePredicate as tSTypePredicate };\nexport function tsTypeQuery(\n  exprName: t.TSEntityName | t.TSImportType,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSTypeQuery {\n  const node: t.TSTypeQuery = {\n    type: \"TSTypeQuery\",\n    exprName,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSTypeQuery;\n  validate(defs.exprName, node, \"exprName\", exprName, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsTypeQuery as tSTypeQuery };\nexport function tsTypeLiteral(\n  members: Array<t.TSTypeElement>,\n): t.TSTypeLiteral {\n  const node: t.TSTypeLiteral = {\n    type: \"TSTypeLiteral\",\n    members,\n  };\n  const defs = NODE_FIELDS.TSTypeLiteral;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsTypeLiteral as tSTypeLiteral };\nexport function tsArrayType(elementType: t.TSType): t.TSArrayType {\n  const node: t.TSArrayType = {\n    type: \"TSArrayType\",\n    elementType,\n  };\n  const defs = NODE_FIELDS.TSArrayType;\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  return node;\n}\nexport { tsArrayType as tSArrayType };\nexport function tsTupleType(\n  elementTypes: Array<t.TSType | t.TSNamedTupleMember>,\n): t.TSTupleType {\n  const node: t.TSTupleType = {\n    type: \"TSTupleType\",\n    elementTypes,\n  };\n  const defs = NODE_FIELDS.TSTupleType;\n  validate(defs.elementTypes, node, \"elementTypes\", elementTypes, 1);\n  return node;\n}\nexport { tsTupleType as tSTupleType };\nexport function tsOptionalType(typeAnnotation: t.TSType): t.TSOptionalType {\n  const node: t.TSOptionalType = {\n    type: \"TSOptionalType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSOptionalType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsOptionalType as tSOptionalType };\nexport function tsRestType(typeAnnotation: t.TSType): t.TSRestType {\n  const node: t.TSRestType = {\n    type: \"TSRestType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSRestType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsRestType as tSRestType };\nexport function tsNamedTupleMember(\n  label: t.Identifier,\n  elementType: t.TSType,\n  optional: boolean = false,\n): t.TSNamedTupleMember {\n  const node: t.TSNamedTupleMember = {\n    type: \"TSNamedTupleMember\",\n    label,\n    elementType,\n    optional,\n  };\n  const defs = NODE_FIELDS.TSNamedTupleMember;\n  validate(defs.label, node, \"label\", label, 1);\n  validate(defs.elementType, node, \"elementType\", elementType, 1);\n  validate(defs.optional, node, \"optional\", optional);\n  return node;\n}\nexport { tsNamedTupleMember as tSNamedTupleMember };\nexport function tsUnionType(types: Array<t.TSType>): t.TSUnionType {\n  const node: t.TSUnionType = {\n    type: \"TSUnionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSUnionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsUnionType as tSUnionType };\nexport function tsIntersectionType(\n  types: Array<t.TSType>,\n): t.TSIntersectionType {\n  const node: t.TSIntersectionType = {\n    type: \"TSIntersectionType\",\n    types,\n  };\n  const defs = NODE_FIELDS.TSIntersectionType;\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsIntersectionType as tSIntersectionType };\nexport function tsConditionalType(\n  checkType: t.TSType,\n  extendsType: t.TSType,\n  trueType: t.TSType,\n  falseType: t.TSType,\n): t.TSConditionalType {\n  const node: t.TSConditionalType = {\n    type: \"TSConditionalType\",\n    checkType,\n    extendsType,\n    trueType,\n    falseType,\n  };\n  const defs = NODE_FIELDS.TSConditionalType;\n  validate(defs.checkType, node, \"checkType\", checkType, 1);\n  validate(defs.extendsType, node, \"extendsType\", extendsType, 1);\n  validate(defs.trueType, node, \"trueType\", trueType, 1);\n  validate(defs.falseType, node, \"falseType\", falseType, 1);\n  return node;\n}\nexport { tsConditionalType as tSConditionalType };\nexport function tsInferType(typeParameter: t.TSTypeParameter): t.TSInferType {\n  const node: t.TSInferType = {\n    type: \"TSInferType\",\n    typeParameter,\n  };\n  const defs = NODE_FIELDS.TSInferType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  return node;\n}\nexport { tsInferType as tSInferType };\nexport function tsParenthesizedType(\n  typeAnnotation: t.TSType,\n): t.TSParenthesizedType {\n  const node: t.TSParenthesizedType = {\n    type: \"TSParenthesizedType\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSParenthesizedType;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsParenthesizedType as tSParenthesizedType };\nexport function tsTypeOperator(typeAnnotation: t.TSType): t.TSTypeOperator {\n  const node: t.TSTypeOperator = {\n    type: \"TSTypeOperator\",\n    typeAnnotation,\n    operator: null,\n  };\n  const defs = NODE_FIELDS.TSTypeOperator;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeOperator as tSTypeOperator };\nexport function tsIndexedAccessType(\n  objectType: t.TSType,\n  indexType: t.TSType,\n): t.TSIndexedAccessType {\n  const node: t.TSIndexedAccessType = {\n    type: \"TSIndexedAccessType\",\n    objectType,\n    indexType,\n  };\n  const defs = NODE_FIELDS.TSIndexedAccessType;\n  validate(defs.objectType, node, \"objectType\", objectType, 1);\n  validate(defs.indexType, node, \"indexType\", indexType, 1);\n  return node;\n}\nexport { tsIndexedAccessType as tSIndexedAccessType };\nexport function tsMappedType(\n  typeParameter: t.TSTypeParameter,\n  typeAnnotation: t.TSType | null = null,\n  nameType: t.TSType | null = null,\n): t.TSMappedType {\n  const node: t.TSMappedType = {\n    type: \"TSMappedType\",\n    typeParameter,\n    typeAnnotation,\n    nameType,\n  };\n  const defs = NODE_FIELDS.TSMappedType;\n  validate(defs.typeParameter, node, \"typeParameter\", typeParameter, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.nameType, node, \"nameType\", nameType, 1);\n  return node;\n}\nexport { tsMappedType as tSMappedType };\nexport function tsTemplateLiteralType(\n  quasis: Array<t.TemplateElement>,\n  types: Array<t.TSType>,\n): t.TSTemplateLiteralType {\n  const node: t.TSTemplateLiteralType = {\n    type: \"TSTemplateLiteralType\",\n    quasis,\n    types,\n  };\n  const defs = NODE_FIELDS.TSTemplateLiteralType;\n  validate(defs.quasis, node, \"quasis\", quasis, 1);\n  validate(defs.types, node, \"types\", types, 1);\n  return node;\n}\nexport { tsTemplateLiteralType as tSTemplateLiteralType };\nexport function tsLiteralType(\n  literal:\n    | t.NumericLiteral\n    | t.StringLiteral\n    | t.BooleanLiteral\n    | t.BigIntLiteral\n    | t.TemplateLiteral\n    | t.UnaryExpression,\n): t.TSLiteralType {\n  const node: t.TSLiteralType = {\n    type: \"TSLiteralType\",\n    literal,\n  };\n  const defs = NODE_FIELDS.TSLiteralType;\n  validate(defs.literal, node, \"literal\", literal, 1);\n  return node;\n}\nexport { tsLiteralType as tSLiteralType };\nexport function tsExpressionWithTypeArguments(\n  expression: t.TSEntityName,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSExpressionWithTypeArguments {\n  const node: t.TSExpressionWithTypeArguments = {\n    type: \"TSExpressionWithTypeArguments\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSExpressionWithTypeArguments;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsExpressionWithTypeArguments as tSExpressionWithTypeArguments };\nexport function tsInterfaceDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  _extends: Array<t.TSExpressionWithTypeArguments> | null | undefined = null,\n  body: t.TSInterfaceBody,\n): t.TSInterfaceDeclaration {\n  const node: t.TSInterfaceDeclaration = {\n    type: \"TSInterfaceDeclaration\",\n    id,\n    typeParameters,\n    extends: _extends,\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.extends, node, \"extends\", _extends, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceDeclaration as tSInterfaceDeclaration };\nexport function tsInterfaceBody(\n  body: Array<t.TSTypeElement>,\n): t.TSInterfaceBody {\n  const node: t.TSInterfaceBody = {\n    type: \"TSInterfaceBody\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSInterfaceBody;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsInterfaceBody as tSInterfaceBody };\nexport function tsTypeAliasDeclaration(\n  id: t.Identifier,\n  typeParameters: t.TSTypeParameterDeclaration | null | undefined = null,\n  typeAnnotation: t.TSType,\n): t.TSTypeAliasDeclaration {\n  const node: t.TSTypeAliasDeclaration = {\n    type: \"TSTypeAliasDeclaration\",\n    id,\n    typeParameters,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAliasDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAliasDeclaration as tSTypeAliasDeclaration };\nexport function tsInstantiationExpression(\n  expression: t.Expression,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSInstantiationExpression {\n  const node: t.TSInstantiationExpression = {\n    type: \"TSInstantiationExpression\",\n    expression,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSInstantiationExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsInstantiationExpression as tSInstantiationExpression };\nexport function tsAsExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSAsExpression {\n  const node: t.TSAsExpression = {\n    type: \"TSAsExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSAsExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsAsExpression as tSAsExpression };\nexport function tsSatisfiesExpression(\n  expression: t.Expression,\n  typeAnnotation: t.TSType,\n): t.TSSatisfiesExpression {\n  const node: t.TSSatisfiesExpression = {\n    type: \"TSSatisfiesExpression\",\n    expression,\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSSatisfiesExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsSatisfiesExpression as tSSatisfiesExpression };\nexport function tsTypeAssertion(\n  typeAnnotation: t.TSType,\n  expression: t.Expression,\n): t.TSTypeAssertion {\n  const node: t.TSTypeAssertion = {\n    type: \"TSTypeAssertion\",\n    typeAnnotation,\n    expression,\n  };\n  const defs = NODE_FIELDS.TSTypeAssertion;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsTypeAssertion as tSTypeAssertion };\nexport function tsEnumBody(members: Array<t.TSEnumMember>): t.TSEnumBody {\n  const node: t.TSEnumBody = {\n    type: \"TSEnumBody\",\n    members,\n  };\n  const defs = NODE_FIELDS.TSEnumBody;\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsEnumBody as tSEnumBody };\nexport function tsEnumDeclaration(\n  id: t.Identifier,\n  members: Array<t.TSEnumMember>,\n): t.TSEnumDeclaration {\n  const node: t.TSEnumDeclaration = {\n    type: \"TSEnumDeclaration\",\n    id,\n    members,\n  };\n  const defs = NODE_FIELDS.TSEnumDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.members, node, \"members\", members, 1);\n  return node;\n}\nexport { tsEnumDeclaration as tSEnumDeclaration };\nexport function tsEnumMember(\n  id: t.Identifier | t.StringLiteral,\n  initializer: t.Expression | null = null,\n): t.TSEnumMember {\n  const node: t.TSEnumMember = {\n    type: \"TSEnumMember\",\n    id,\n    initializer,\n  };\n  const defs = NODE_FIELDS.TSEnumMember;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.initializer, node, \"initializer\", initializer, 1);\n  return node;\n}\nexport { tsEnumMember as tSEnumMember };\nexport function tsModuleDeclaration(\n  id: t.Identifier | t.StringLiteral,\n  body: t.TSModuleBlock | t.TSModuleDeclaration,\n): t.TSModuleDeclaration {\n  const node: t.TSModuleDeclaration = {\n    type: \"TSModuleDeclaration\",\n    id,\n    body,\n    kind: null,\n  };\n  const defs = NODE_FIELDS.TSModuleDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleDeclaration as tSModuleDeclaration };\nexport function tsModuleBlock(body: Array<t.Statement>): t.TSModuleBlock {\n  const node: t.TSModuleBlock = {\n    type: \"TSModuleBlock\",\n    body,\n  };\n  const defs = NODE_FIELDS.TSModuleBlock;\n  validate(defs.body, node, \"body\", body, 1);\n  return node;\n}\nexport { tsModuleBlock as tSModuleBlock };\nexport function tsImportType(\n  argument: t.StringLiteral,\n  qualifier: t.TSEntityName | null = null,\n  typeParameters: t.TSTypeParameterInstantiation | null = null,\n): t.TSImportType {\n  const node: t.TSImportType = {\n    type: \"TSImportType\",\n    argument,\n    qualifier,\n    typeParameters,\n  };\n  const defs = NODE_FIELDS.TSImportType;\n  validate(defs.argument, node, \"argument\", argument, 1);\n  validate(defs.qualifier, node, \"qualifier\", qualifier, 1);\n  validate(defs.typeParameters, node, \"typeParameters\", typeParameters, 1);\n  return node;\n}\nexport { tsImportType as tSImportType };\nexport function tsImportEqualsDeclaration(\n  id: t.Identifier,\n  moduleReference: t.TSEntityName | t.TSExternalModuleReference,\n): t.TSImportEqualsDeclaration {\n  const node: t.TSImportEqualsDeclaration = {\n    type: \"TSImportEqualsDeclaration\",\n    id,\n    moduleReference,\n    isExport: null,\n  };\n  const defs = NODE_FIELDS.TSImportEqualsDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  validate(defs.moduleReference, node, \"moduleReference\", moduleReference, 1);\n  return node;\n}\nexport { tsImportEqualsDeclaration as tSImportEqualsDeclaration };\nexport function tsExternalModuleReference(\n  expression: t.StringLiteral,\n): t.TSExternalModuleReference {\n  const node: t.TSExternalModuleReference = {\n    type: \"TSExternalModuleReference\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExternalModuleReference;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExternalModuleReference as tSExternalModuleReference };\nexport function tsNonNullExpression(\n  expression: t.Expression,\n): t.TSNonNullExpression {\n  const node: t.TSNonNullExpression = {\n    type: \"TSNonNullExpression\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSNonNullExpression;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsNonNullExpression as tSNonNullExpression };\nexport function tsExportAssignment(\n  expression: t.Expression,\n): t.TSExportAssignment {\n  const node: t.TSExportAssignment = {\n    type: \"TSExportAssignment\",\n    expression,\n  };\n  const defs = NODE_FIELDS.TSExportAssignment;\n  validate(defs.expression, node, \"expression\", expression, 1);\n  return node;\n}\nexport { tsExportAssignment as tSExportAssignment };\nexport function tsNamespaceExportDeclaration(\n  id: t.Identifier,\n): t.TSNamespaceExportDeclaration {\n  const node: t.TSNamespaceExportDeclaration = {\n    type: \"TSNamespaceExportDeclaration\",\n    id,\n  };\n  const defs = NODE_FIELDS.TSNamespaceExportDeclaration;\n  validate(defs.id, node, \"id\", id, 1);\n  return node;\n}\nexport { tsNamespaceExportDeclaration as tSNamespaceExportDeclaration };\nexport function tsTypeAnnotation(typeAnnotation: t.TSType): t.TSTypeAnnotation {\n  const node: t.TSTypeAnnotation = {\n    type: \"TSTypeAnnotation\",\n    typeAnnotation,\n  };\n  const defs = NODE_FIELDS.TSTypeAnnotation;\n  validate(defs.typeAnnotation, node, \"typeAnnotation\", typeAnnotation, 1);\n  return node;\n}\nexport { tsTypeAnnotation as tSTypeAnnotation };\nexport function tsTypeParameterInstantiation(\n  params: Array<t.TSType>,\n): t.TSTypeParameterInstantiation {\n  const node: t.TSTypeParameterInstantiation = {\n    type: \"TSTypeParameterInstantiation\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterInstantiation;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterInstantiation as tSTypeParameterInstantiation };\nexport function tsTypeParameterDeclaration(\n  params: Array<t.TSTypeParameter>,\n): t.TSTypeParameterDeclaration {\n  const node: t.TSTypeParameterDeclaration = {\n    type: \"TSTypeParameterDeclaration\",\n    params,\n  };\n  const defs = NODE_FIELDS.TSTypeParameterDeclaration;\n  validate(defs.params, node, \"params\", params, 1);\n  return node;\n}\nexport { tsTypeParameterDeclaration as tSTypeParameterDeclaration };\nexport function tsTypeParameter(\n  constraint: t.TSType | null | undefined = null,\n  _default: t.TSType | null | undefined = null,\n  name: string,\n): t.TSTypeParameter {\n  const node: t.TSTypeParameter = {\n    type: \"TSTypeParameter\",\n    constraint,\n    default: _default,\n    name,\n  };\n  const defs = NODE_FIELDS.TSTypeParameter;\n  validate(defs.constraint, node, \"constraint\", constraint, 1);\n  validate(defs.default, node, \"default\", _default, 1);\n  validate(defs.name, node, \"name\", name);\n  return node;\n}\nexport { tsTypeParameter as tSTypeParameter };\n/** @deprecated */\nfunction NumberLiteral(value: number) {\n  deprecationWarning(\"NumberLiteral\", \"NumericLiteral\", \"The node type \");\n  return numericLiteral(value);\n}\nexport { NumberLiteral as numberLiteral };\n/** @deprecated */\nfunction RegexLiteral(pattern: string, flags: string = \"\") {\n  deprecationWarning(\"RegexLiteral\", \"RegExpLiteral\", \"The node type \");\n  return regExpLiteral(pattern, flags);\n}\nexport { RegexLiteral as regexLiteral };\n/** @deprecated */\nfunction RestProperty(argument: t.LVal) {\n  deprecationWarning(\"RestProperty\", \"RestElement\", \"The node type \");\n  return restElement(argument);\n}\nexport { RestProperty as restProperty };\n/** @deprecated */\nfunction SpreadProperty(argument: t.Expression) {\n  deprecationWarning(\"SpreadProperty\", \"SpreadElement\", \"The node type \");\n  return spreadElement(argument);\n}\nexport { SpreadProperty as spreadProperty };\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\nexport {\n  arrayExpression as ArrayExpression,\n  assignmentExpression as AssignmentExpression,\n  binaryExpression as BinaryExpression,\n  interpreterDirective as InterpreterDirective,\n  directive as Directive,\n  directiveLiteral as DirectiveLiteral,\n  blockStatement as BlockStatement,\n  breakStatement as BreakStatement,\n  callExpression as CallExpression,\n  catchClause as CatchClause,\n  conditionalExpression as ConditionalExpression,\n  continueStatement as ContinueStatement,\n  debuggerStatement as DebuggerStatement,\n  doWhileStatement as DoWhileStatement,\n  emptyStatement as EmptyStatement,\n  expressionStatement as ExpressionStatement,\n  file as File,\n  forInStatement as ForInStatement,\n  forStatement as ForStatement,\n  functionDeclaration as FunctionDeclaration,\n  functionExpression as FunctionExpression,\n  identifier as Identifier,\n  ifStatement as IfStatement,\n  labeledStatement as LabeledStatement,\n  stringLiteral as StringLiteral,\n  numericLiteral as NumericLiteral,\n  nullLiteral as NullLiteral,\n  booleanLiteral as BooleanLiteral,\n  regExpLiteral as RegExpLiteral,\n  logicalExpression as LogicalExpression,\n  memberExpression as MemberExpression,\n  newExpression as NewExpression,\n  program as Program,\n  objectExpression as ObjectExpression,\n  objectMethod as ObjectMethod,\n  objectProperty as ObjectProperty,\n  restElement as RestElement,\n  returnStatement as ReturnStatement,\n  sequenceExpression as SequenceExpression,\n  parenthesizedExpression as ParenthesizedExpression,\n  switchCase as SwitchCase,\n  switchStatement as SwitchStatement,\n  thisExpression as ThisExpression,\n  throwStatement as ThrowStatement,\n  tryStatement as TryStatement,\n  unaryExpression as UnaryExpression,\n  updateExpression as UpdateExpression,\n  variableDeclaration as VariableDeclaration,\n  variableDeclarator as VariableDeclarator,\n  whileStatement as WhileStatement,\n  withStatement as WithStatement,\n  assignmentPattern as AssignmentPattern,\n  arrayPattern as ArrayPattern,\n  arrowFunctionExpression as ArrowFunctionExpression,\n  classBody as ClassBody,\n  classExpression as ClassExpression,\n  classDeclaration as ClassDeclaration,\n  exportAllDeclaration as ExportAllDeclaration,\n  exportDefaultDeclaration as ExportDefaultDeclaration,\n  exportNamedDeclaration as ExportNamedDeclaration,\n  exportSpecifier as ExportSpecifier,\n  forOfStatement as ForOfStatement,\n  importDeclaration as ImportDeclaration,\n  importDefaultSpecifier as ImportDefaultSpecifier,\n  importNamespaceSpecifier as ImportNamespaceSpecifier,\n  importSpecifier as ImportSpecifier,\n  importExpression as ImportExpression,\n  metaProperty as MetaProperty,\n  classMethod as ClassMethod,\n  objectPattern as ObjectPattern,\n  spreadElement as SpreadElement,\n  super as Super,\n  taggedTemplateExpression as TaggedTemplateExpression,\n  templateElement as TemplateElement,\n  templateLiteral as TemplateLiteral,\n  yieldExpression as YieldExpression,\n  awaitExpression as AwaitExpression,\n  import as Import,\n  bigIntLiteral as BigIntLiteral,\n  exportNamespaceSpecifier as ExportNamespaceSpecifier,\n  optionalMemberExpression as OptionalMemberExpression,\n  optionalCallExpression as OptionalCallExpression,\n  classProperty as ClassProperty,\n  classAccessorProperty as ClassAccessorProperty,\n  classPrivateProperty as ClassPrivateProperty,\n  classPrivateMethod as ClassPrivateMethod,\n  privateName as PrivateName,\n  staticBlock as StaticBlock,\n  anyTypeAnnotation as AnyTypeAnnotation,\n  arrayTypeAnnotation as ArrayTypeAnnotation,\n  booleanTypeAnnotation as BooleanTypeAnnotation,\n  booleanLiteralTypeAnnotation as BooleanLiteralTypeAnnotation,\n  nullLiteralTypeAnnotation as NullLiteralTypeAnnotation,\n  classImplements as ClassImplements,\n  declareClass as DeclareClass,\n  declareFunction as DeclareFunction,\n  declareInterface as DeclareInterface,\n  declareModule as DeclareModule,\n  declareModuleExports as DeclareModuleExports,\n  declareTypeAlias as DeclareTypeAlias,\n  declareOpaqueType as DeclareOpaqueType,\n  declareVariable as DeclareVariable,\n  declareExportDeclaration as DeclareExportDeclaration,\n  declareExportAllDeclaration as DeclareExportAllDeclaration,\n  declaredPredicate as DeclaredPredicate,\n  existsTypeAnnotation as ExistsTypeAnnotation,\n  functionTypeAnnotation as FunctionTypeAnnotation,\n  functionTypeParam as FunctionTypeParam,\n  genericTypeAnnotation as GenericTypeAnnotation,\n  inferredPredicate as InferredPredicate,\n  interfaceExtends as InterfaceExtends,\n  interfaceDeclaration as InterfaceDeclaration,\n  interfaceTypeAnnotation as InterfaceTypeAnnotation,\n  intersectionTypeAnnotation as IntersectionTypeAnnotation,\n  mixedTypeAnnotation as MixedTypeAnnotation,\n  emptyTypeAnnotation as EmptyTypeAnnotation,\n  nullableTypeAnnotation as NullableTypeAnnotation,\n  numberLiteralTypeAnnotation as NumberLiteralTypeAnnotation,\n  numberTypeAnnotation as NumberTypeAnnotation,\n  objectTypeAnnotation as ObjectTypeAnnotation,\n  objectTypeInternalSlot as ObjectTypeInternalSlot,\n  objectTypeCallProperty as ObjectTypeCallProperty,\n  objectTypeIndexer as ObjectTypeIndexer,\n  objectTypeProperty as ObjectTypeProperty,\n  objectTypeSpreadProperty as ObjectTypeSpreadProperty,\n  opaqueType as OpaqueType,\n  qualifiedTypeIdentifier as QualifiedTypeIdentifier,\n  stringLiteralTypeAnnotation as StringLiteralTypeAnnotation,\n  stringTypeAnnotation as StringTypeAnnotation,\n  symbolTypeAnnotation as SymbolTypeAnnotation,\n  thisTypeAnnotation as ThisTypeAnnotation,\n  tupleTypeAnnotation as TupleTypeAnnotation,\n  typeofTypeAnnotation as TypeofTypeAnnotation,\n  typeAlias as TypeAlias,\n  typeAnnotation as TypeAnnotation,\n  typeCastExpression as TypeCastExpression,\n  typeParameter as TypeParameter,\n  typeParameterDeclaration as TypeParameterDeclaration,\n  typeParameterInstantiation as TypeParameterInstantiation,\n  unionTypeAnnotation as UnionTypeAnnotation,\n  variance as Variance,\n  voidTypeAnnotation as VoidTypeAnnotation,\n  enumDeclaration as EnumDeclaration,\n  enumBooleanBody as EnumBooleanBody,\n  enumNumberBody as EnumNumberBody,\n  enumStringBody as EnumStringBody,\n  enumSymbolBody as EnumSymbolBody,\n  enumBooleanMember as EnumBooleanMember,\n  enumNumberMember as EnumNumberMember,\n  enumStringMember as EnumStringMember,\n  enumDefaultedMember as EnumDefaultedMember,\n  indexedAccessType as IndexedAccessType,\n  optionalIndexedAccessType as OptionalIndexedAccessType,\n  jsxAttribute as JSXAttribute,\n  jsxClosingElement as JSXClosingElement,\n  jsxElement as JSXElement,\n  jsxEmptyExpression as JSXEmptyExpression,\n  jsxExpressionContainer as JSXExpressionContainer,\n  jsxSpreadChild as JSXSpreadChild,\n  jsxIdentifier as JSXIdentifier,\n  jsxMemberExpression as JSXMemberExpression,\n  jsxNamespacedName as JSXNamespacedName,\n  jsxOpeningElement as JSXOpeningElement,\n  jsxSpreadAttribute as JSXSpreadAttribute,\n  jsxText as JSXText,\n  jsxFragment as JSXFragment,\n  jsxOpeningFragment as JSXOpeningFragment,\n  jsxClosingFragment as JSXClosingFragment,\n  noop as Noop,\n  placeholder as Placeholder,\n  v8IntrinsicIdentifier as V8IntrinsicIdentifier,\n  argumentPlaceholder as ArgumentPlaceholder,\n  bindExpression as BindExpression,\n  importAttribute as ImportAttribute,\n  decorator as Decorator,\n  doExpression as DoExpression,\n  exportDefaultSpecifier as ExportDefaultSpecifier,\n  recordExpression as RecordExpression,\n  tupleExpression as TupleExpression,\n  decimalLiteral as DecimalLiteral,\n  moduleExpression as ModuleExpression,\n  topicReference as TopicReference,\n  pipelineTopicExpression as PipelineTopicExpression,\n  pipelineBareFunction as PipelineBareFunction,\n  pipelinePrimaryTopicReference as PipelinePrimaryTopicReference,\n  tsParameterProperty as TSParameterProperty,\n  tsDeclareFunction as TSDeclareFunction,\n  tsDeclareMethod as TSDeclareMethod,\n  tsQualifiedName as TSQualifiedName,\n  tsCallSignatureDeclaration as TSCallSignatureDeclaration,\n  tsConstructSignatureDeclaration as TSConstructSignatureDeclaration,\n  tsPropertySignature as TSPropertySignature,\n  tsMethodSignature as TSMethodSignature,\n  tsIndexSignature as TSIndexSignature,\n  tsAnyKeyword as TSAnyKeyword,\n  tsBooleanKeyword as TSBooleanKeyword,\n  tsBigIntKeyword as TSBigIntKeyword,\n  tsIntrinsicKeyword as TSIntrinsicKeyword,\n  tsNeverKeyword as TSNeverKeyword,\n  tsNullKeyword as TSNullKeyword,\n  tsNumberKeyword as TSNumberKeyword,\n  tsObjectKeyword as TSObjectKeyword,\n  tsStringKeyword as TSStringKeyword,\n  tsSymbolKeyword as TSSymbolKeyword,\n  tsUndefinedKeyword as TSUndefinedKeyword,\n  tsUnknownKeyword as TSUnknownKeyword,\n  tsVoidKeyword as TSVoidKeyword,\n  tsThisType as TSThisType,\n  tsFunctionType as TSFunctionType,\n  tsConstructorType as TSConstructorType,\n  tsTypeReference as TSTypeReference,\n  tsTypePredicate as TSTypePredicate,\n  tsTypeQuery as TSTypeQuery,\n  tsTypeLiteral as TSTypeLiteral,\n  tsArrayType as TSArrayType,\n  tsTupleType as TSTupleType,\n  tsOptionalType as TSOptionalType,\n  tsRestType as TSRestType,\n  tsNamedTupleMember as TSNamedTupleMember,\n  tsUnionType as TSUnionType,\n  tsIntersectionType as TSIntersectionType,\n  tsConditionalType as TSConditionalType,\n  tsInferType as TSInferType,\n  tsParenthesizedType as TSParenthesizedType,\n  tsTypeOperator as TSTypeOperator,\n  tsIndexedAccessType as TSIndexedAccessType,\n  tsMappedType as TSMappedType,\n  tsTemplateLiteralType as TSTemplateLiteralType,\n  tsLiteralType as TSLiteralType,\n  tsExpressionWithTypeArguments as TSExpressionWithTypeArguments,\n  tsInterfaceDeclaration as TSInterfaceDeclaration,\n  tsInterfaceBody as TSInterfaceBody,\n  tsTypeAliasDeclaration as TSTypeAliasDeclaration,\n  tsInstantiationExpression as TSInstantiationExpression,\n  tsAsExpression as TSAsExpression,\n  tsSatisfiesExpression as TSSatisfiesExpression,\n  tsTypeAssertion as TSTypeAssertion,\n  tsEnumBody as TSEnumBody,\n  tsEnumDeclaration as TSEnumDeclaration,\n  tsEnumMember as TSEnumMember,\n  tsModuleDeclaration as TSModuleDeclaration,\n  tsModuleBlock as TSModuleBlock,\n  tsImportType as TSImportType,\n  tsImportEqualsDeclaration as TSImportEqualsDeclaration,\n  tsExternalModuleReference as TSExternalModuleReference,\n  tsNonNullExpression as TSNonNullExpression,\n  tsExportAssignment as TSExportAssignment,\n  tsNamespaceExportDeclaration as TSNamespaceExportDeclaration,\n  tsTypeAnnotation as TSTypeAnnotation,\n  tsTypeParameterInstantiation as TSTypeParameterInstantiation,\n  tsTypeParameterDeclaration as TSTypeParameterDeclaration,\n  tsTypeParameter as TSTypeParameter,\n  numberLiteral as NumberLiteral,\n  regexLiteral as RegexLiteral,\n  restProperty as RestProperty,\n  spreadProperty as SpreadProperty,\n} from \"./lowercase.ts\";\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\n\nexport * from \"./lowercase.ts\";\nexport * from \"./uppercase.ts\";\n\n// Uppercase builders and AST types conflict with each other, which is\n// not allowed by TypeScript when using `export * from ...`\n// We instead explicity list the AST types here, so that:\n// - From a TypeScript perspective, the AST types win over the uppercase\n//   builders (which is the standard behavior for JS when a named\n//   re-export conflicts with a * re-export.)\n// - At runtime, this `export type` is removed, leaving only the uppercase\n//   builders behind (which are thus visible to JavaScript code).\n// This ensures compatibility with legacy code that uses the uppercase\n// builders, while allowing TypeScript users to use the lowercase builders\n// together with the AST types.\n\n// prettier-ignore\nexport type {\n  ArrayExpression, AssignmentExpression, BinaryExpression, InterpreterDirective, Directive, DirectiveLiteral, BlockStatement, BreakStatement, CallExpression, CatchClause, ConditionalExpression, ContinueStatement, DebuggerStatement, DoWhileStatement, EmptyStatement, ExpressionStatement, File, ForInStatement, ForStatement, FunctionDeclaration, FunctionExpression, Identifier, IfStatement, LabeledStatement, StringLiteral, NumericLiteral, NullLiteral, BooleanLiteral, RegExpLiteral, LogicalExpression, MemberExpression, NewExpression, Program, ObjectExpression, ObjectMethod, ObjectProperty, RestElement, ReturnStatement, SequenceExpression, ParenthesizedExpression, SwitchCase, SwitchStatement, ThisExpression, ThrowStatement, TryStatement, UnaryExpression, UpdateExpression, VariableDeclaration, VariableDeclarator, WhileStatement, WithStatement, AssignmentPattern, ArrayPattern, ArrowFunctionExpression, ClassBody, ClassExpression, ClassDeclaration, ExportAllDeclaration, ExportDefaultDeclaration, ExportNamedDeclaration, ExportSpecifier, ForOfStatement, ImportDeclaration, ImportDefaultSpecifier, ImportNamespaceSpecifier, ImportSpecifier, ImportExpression, MetaProperty, ClassMethod, ObjectPattern, SpreadElement, Super, TaggedTemplateExpression, TemplateElement, TemplateLiteral, YieldExpression, AwaitExpression, Import, BigIntLiteral, ExportNamespaceSpecifier, OptionalMemberExpression, OptionalCallExpression, ClassProperty, ClassAccessorProperty, ClassPrivateProperty, ClassPrivateMethod, PrivateName, StaticBlock, AnyTypeAnnotation, ArrayTypeAnnotation, BooleanTypeAnnotation, BooleanLiteralTypeAnnotation, NullLiteralTypeAnnotation, ClassImplements, DeclareClass, DeclareFunction, DeclareInterface, DeclareModule, DeclareModuleExports, DeclareTypeAlias, DeclareOpaqueType, DeclareVariable, DeclareExportDeclaration, DeclareExportAllDeclaration, DeclaredPredicate, ExistsTypeAnnotation, FunctionTypeAnnotation, FunctionTypeParam, GenericTypeAnnotation, InferredPredicate, InterfaceExtends, InterfaceDeclaration, InterfaceTypeAnnotation, IntersectionTypeAnnotation, MixedTypeAnnotation, EmptyTypeAnnotation, NullableTypeAnnotation, NumberLiteralTypeAnnotation, NumberTypeAnnotation, ObjectTypeAnnotation, ObjectTypeInternalSlot, ObjectTypeCallProperty, ObjectTypeIndexer, ObjectTypeProperty, ObjectTypeSpreadProperty, OpaqueType, QualifiedTypeIdentifier, StringLiteralTypeAnnotation, StringTypeAnnotation, SymbolTypeAnnotation, ThisTypeAnnotation, TupleTypeAnnotation, TypeofTypeAnnotation, TypeAlias, TypeAnnotation, TypeCastExpression, TypeParameter, TypeParameterDeclaration, TypeParameterInstantiation, UnionTypeAnnotation, Variance, VoidTypeAnnotation, EnumDeclaration, EnumBooleanBody, EnumNumberBody, EnumStringBody, EnumSymbolBody, EnumBooleanMember, EnumNumberMember, EnumStringMember, EnumDefaultedMember, IndexedAccessType, OptionalIndexedAccessType, JSXAttribute, JSXClosingElement, JSXElement, JSXEmptyExpression, JSXExpressionContainer, JSXSpreadChild, JSXIdentifier, JSXMemberExpression, JSXNamespacedName, JSXOpeningElement, JSXSpreadAttribute, JSXText, JSXFragment, JSXOpeningFragment, JSXClosingFragment, Noop, Placeholder, V8IntrinsicIdentifier, ArgumentPlaceholder, BindExpression, ImportAttribute, Decorator, DoExpression, ExportDefaultSpecifier, RecordExpression, TupleExpression, DecimalLiteral, ModuleExpression, TopicReference, PipelineTopicExpression, PipelineBareFunction, PipelinePrimaryTopicReference, TSParameterProperty, TSDeclareFunction, TSDeclareMethod, TSQualifiedName, TSCallSignatureDeclaration, TSConstructSignatureDeclaration, TSPropertySignature, TSMethodSignature, TSIndexSignature, TSAnyKeyword, TSBooleanKeyword, TSBigIntKeyword, TSIntrinsicKeyword, TSNeverKeyword, TSNullKeyword, TSNumberKeyword, TSObjectKeyword, TSStringKeyword, TSSymbolKeyword, TSUndefinedKeyword, TSUnknownKeyword, TSVoidKeyword, TSThisType, TSFunctionType, TSConstructorType, TSTypeReference, TSTypePredicate, TSTypeQuery, TSTypeLiteral, TSArrayType, TSTupleType, TSOptionalType, TSRestType, TSNamedTupleMember, TSUnionType, TSIntersectionType, TSConditionalType, TSInferType, TSParenthesizedType, TSTypeOperator, TSIndexedAccessType, TSMappedType, TSTemplateLiteralType, TSLiteralType, TSExpressionWithTypeArguments, TSInterfaceDeclaration, TSInterfaceBody, TSTypeAliasDeclaration, TSInstantiationExpression, TSAsExpression, TSSatisfiesExpression, TSTypeAssertion, TSEnumBody, TSEnumDeclaration, TSEnumMember, TSModuleDeclaration, TSModuleBlock, TSImportType, TSImportEqualsDeclaration, TSExternalModuleReference, TSNonNullExpression, TSExportAssignment, TSNamespaceExportDeclaration, TSTypeAnnotation, TSTypeParameterInstantiation, TSTypeParameterDeclaration, TSTypeParameter,\n  NumberLiteral, RegexLiteral, RestProperty, SpreadProperty\n} from \"../../ast-types/generated/index.ts\";\n\n// This will re-export all the type definitions that do not conflict with\n// uppercase builders, such as aliases.\nexport type * from \"../../ast-types/generated/index.ts\";\n","import { stringLiteral } from \"../../builders/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\nimport { inherits } from \"../../index.ts\";\n\nexport default function cleanJSXElementLiteralChild(\n  child: t.JSXText,\n  args: Array<t.Node>,\n) {\n  const lines = child.value.split(/\\r\\n|\\n|\\r/);\n\n  let lastNonEmptyLine = 0;\n\n  for (let i = 0; i < lines.length; i++) {\n    if (/[^ \\t]/.exec(lines[i])) {\n      lastNonEmptyLine = i;\n    }\n  }\n\n  let str = \"\";\n\n  for (let i = 0; i < lines.length; i++) {\n    const line = lines[i];\n\n    const isFirstLine = i === 0;\n    const isLastLine = i === lines.length - 1;\n    const isLastNonEmptyLine = i === lastNonEmptyLine;\n\n    // replace rendered whitespace tabs with spaces\n    let trimmedLine = line.replace(/\\t/g, \" \");\n\n    // trim whitespace touching a newline\n    if (!isFirstLine) {\n      trimmedLine = trimmedLine.replace(/^ +/, \"\");\n    }\n\n    // trim whitespace touching an endline\n    if (!isLastLine) {\n      trimmedLine = trimmedLine.replace(/ +$/, \"\");\n    }\n\n    if (trimmedLine) {\n      if (!isLastNonEmptyLine) {\n        trimmedLine += \" \";\n      }\n\n      str += trimmedLine;\n    }\n  }\n\n  if (str) args.push(inherits(stringLiteral(str), child));\n}\n","import {\n  isJSXText,\n  isJSXExpressionContainer,\n  isJSXEmptyExpression,\n} from \"../../validators/generated/index.ts\";\nimport cleanJSXElementLiteralChild from \"../../utils/react/cleanJSXElementLiteralChild.ts\";\nimport type * as t from \"../../index.ts\";\n\ntype ReturnedChild =\n  | t.JSXSpreadChild\n  | t.JSXElement\n  | t.JSXFragment\n  | t.Expression;\n\nexport default function buildChildren(\n  node: t.JSXElement | t.JSXFragment,\n): ReturnedChild[] {\n  const elements = [];\n\n  for (let i = 0; i < node.children.length; i++) {\n    let child: any = node.children[i];\n\n    if (isJSXText(child)) {\n      cleanJSXElementLiteralChild(child, elements);\n      continue;\n    }\n\n    if (isJSXExpressionContainer(child)) child = child.expression;\n    if (isJSXEmptyExpression(child)) continue;\n\n    elements.push(child);\n  }\n\n  return elements;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function isNode(node: any): node is t.Node {\n  return !!(node && VISITOR_KEYS[node.type]);\n}\n","import isNode from \"../validators/isNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function assertNode(node?: any): asserts node is t.Node {\n  if (!isNode(node)) {\n    const type = node?.type ?? JSON.stringify(node);\n    throw new TypeError(`Not a valid node of type \"${type}\"`);\n  }\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport is from \"../../validators/is.ts\";\nimport type * as t from \"../../index.ts\";\nimport deprecationWarning from \"../../utils/deprecationWarning.ts\";\n\nfunction assert(type: string, node: any, opts?: any): void {\n  if (!is(type, node, opts)) {\n    throw new Error(\n      `Expected type \"${type}\" with option ${JSON.stringify(opts)}, ` +\n        `but instead got \"${node.type}\".`,\n    );\n  }\n}\n\nexport function assertArrayExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayExpression {\n  assert(\"ArrayExpression\", node, opts);\n}\nexport function assertAssignmentExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentExpression {\n  assert(\"AssignmentExpression\", node, opts);\n}\nexport function assertBinaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BinaryExpression {\n  assert(\"BinaryExpression\", node, opts);\n}\nexport function assertInterpreterDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterpreterDirective {\n  assert(\"InterpreterDirective\", node, opts);\n}\nexport function assertDirective(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Directive {\n  assert(\"Directive\", node, opts);\n}\nexport function assertDirectiveLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DirectiveLiteral {\n  assert(\"DirectiveLiteral\", node, opts);\n}\nexport function assertBlockStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockStatement {\n  assert(\"BlockStatement\", node, opts);\n}\nexport function assertBreakStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BreakStatement {\n  assert(\"BreakStatement\", node, opts);\n}\nexport function assertCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CallExpression {\n  assert(\"CallExpression\", node, opts);\n}\nexport function assertCatchClause(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CatchClause {\n  assert(\"CatchClause\", node, opts);\n}\nexport function assertConditionalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ConditionalExpression {\n  assert(\"ConditionalExpression\", node, opts);\n}\nexport function assertContinueStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ContinueStatement {\n  assert(\"ContinueStatement\", node, opts);\n}\nexport function assertDebuggerStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DebuggerStatement {\n  assert(\"DebuggerStatement\", node, opts);\n}\nexport function assertDoWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoWhileStatement {\n  assert(\"DoWhileStatement\", node, opts);\n}\nexport function assertEmptyStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyStatement {\n  assert(\"EmptyStatement\", node, opts);\n}\nexport function assertExpressionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionStatement {\n  assert(\"ExpressionStatement\", node, opts);\n}\nexport function assertFile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.File {\n  assert(\"File\", node, opts);\n}\nexport function assertForInStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForInStatement {\n  assert(\"ForInStatement\", node, opts);\n}\nexport function assertForStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForStatement {\n  assert(\"ForStatement\", node, opts);\n}\nexport function assertFunctionDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionDeclaration {\n  assert(\"FunctionDeclaration\", node, opts);\n}\nexport function assertFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionExpression {\n  assert(\"FunctionExpression\", node, opts);\n}\nexport function assertIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Identifier {\n  assert(\"Identifier\", node, opts);\n}\nexport function assertIfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IfStatement {\n  assert(\"IfStatement\", node, opts);\n}\nexport function assertLabeledStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LabeledStatement {\n  assert(\"LabeledStatement\", node, opts);\n}\nexport function assertStringLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteral {\n  assert(\"StringLiteral\", node, opts);\n}\nexport function assertNumericLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumericLiteral {\n  assert(\"NumericLiteral\", node, opts);\n}\nexport function assertNullLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteral {\n  assert(\"NullLiteral\", node, opts);\n}\nexport function assertBooleanLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteral {\n  assert(\"BooleanLiteral\", node, opts);\n}\nexport function assertRegExpLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RegExpLiteral {\n  assert(\"RegExpLiteral\", node, opts);\n}\nexport function assertLogicalExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LogicalExpression {\n  assert(\"LogicalExpression\", node, opts);\n}\nexport function assertMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MemberExpression {\n  assert(\"MemberExpression\", node, opts);\n}\nexport function assertNewExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NewExpression {\n  assert(\"NewExpression\", node, opts);\n}\nexport function assertProgram(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Program {\n  assert(\"Program\", node, opts);\n}\nexport function assertObjectExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectExpression {\n  assert(\"ObjectExpression\", node, opts);\n}\nexport function assertObjectMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMethod {\n  assert(\"ObjectMethod\", node, opts);\n}\nexport function assertObjectProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectProperty {\n  assert(\"ObjectProperty\", node, opts);\n}\nexport function assertRestElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RestElement {\n  assert(\"RestElement\", node, opts);\n}\nexport function assertReturnStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ReturnStatement {\n  assert(\"ReturnStatement\", node, opts);\n}\nexport function assertSequenceExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SequenceExpression {\n  assert(\"SequenceExpression\", node, opts);\n}\nexport function assertParenthesizedExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ParenthesizedExpression {\n  assert(\"ParenthesizedExpression\", node, opts);\n}\nexport function assertSwitchCase(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchCase {\n  assert(\"SwitchCase\", node, opts);\n}\nexport function assertSwitchStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SwitchStatement {\n  assert(\"SwitchStatement\", node, opts);\n}\nexport function assertThisExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisExpression {\n  assert(\"ThisExpression\", node, opts);\n}\nexport function assertThrowStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThrowStatement {\n  assert(\"ThrowStatement\", node, opts);\n}\nexport function assertTryStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TryStatement {\n  assert(\"TryStatement\", node, opts);\n}\nexport function assertUnaryExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryExpression {\n  assert(\"UnaryExpression\", node, opts);\n}\nexport function assertUpdateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UpdateExpression {\n  assert(\"UpdateExpression\", node, opts);\n}\nexport function assertVariableDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclaration {\n  assert(\"VariableDeclaration\", node, opts);\n}\nexport function assertVariableDeclarator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VariableDeclarator {\n  assert(\"VariableDeclarator\", node, opts);\n}\nexport function assertWhileStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WhileStatement {\n  assert(\"WhileStatement\", node, opts);\n}\nexport function assertWithStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.WithStatement {\n  assert(\"WithStatement\", node, opts);\n}\nexport function assertAssignmentPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AssignmentPattern {\n  assert(\"AssignmentPattern\", node, opts);\n}\nexport function assertArrayPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayPattern {\n  assert(\"ArrayPattern\", node, opts);\n}\nexport function assertArrowFunctionExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrowFunctionExpression {\n  assert(\"ArrowFunctionExpression\", node, opts);\n}\nexport function assertClassBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassBody {\n  assert(\"ClassBody\", node, opts);\n}\nexport function assertClassExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassExpression {\n  assert(\"ClassExpression\", node, opts);\n}\nexport function assertClassDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassDeclaration {\n  assert(\"ClassDeclaration\", node, opts);\n}\nexport function assertExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportAllDeclaration {\n  assert(\"ExportAllDeclaration\", node, opts);\n}\nexport function assertExportDefaultDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultDeclaration {\n  assert(\"ExportDefaultDeclaration\", node, opts);\n}\nexport function assertExportNamedDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamedDeclaration {\n  assert(\"ExportNamedDeclaration\", node, opts);\n}\nexport function assertExportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportSpecifier {\n  assert(\"ExportSpecifier\", node, opts);\n}\nexport function assertForOfStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForOfStatement {\n  assert(\"ForOfStatement\", node, opts);\n}\nexport function assertImportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDeclaration {\n  assert(\"ImportDeclaration\", node, opts);\n}\nexport function assertImportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportDefaultSpecifier {\n  assert(\"ImportDefaultSpecifier\", node, opts);\n}\nexport function assertImportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportNamespaceSpecifier {\n  assert(\"ImportNamespaceSpecifier\", node, opts);\n}\nexport function assertImportSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportSpecifier {\n  assert(\"ImportSpecifier\", node, opts);\n}\nexport function assertImportExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportExpression {\n  assert(\"ImportExpression\", node, opts);\n}\nexport function assertMetaProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MetaProperty {\n  assert(\"MetaProperty\", node, opts);\n}\nexport function assertClassMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassMethod {\n  assert(\"ClassMethod\", node, opts);\n}\nexport function assertObjectPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectPattern {\n  assert(\"ObjectPattern\", node, opts);\n}\nexport function assertSpreadElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SpreadElement {\n  assert(\"SpreadElement\", node, opts);\n}\nexport function assertSuper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Super {\n  assert(\"Super\", node, opts);\n}\nexport function assertTaggedTemplateExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TaggedTemplateExpression {\n  assert(\"TaggedTemplateExpression\", node, opts);\n}\nexport function assertTemplateElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateElement {\n  assert(\"TemplateElement\", node, opts);\n}\nexport function assertTemplateLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TemplateLiteral {\n  assert(\"TemplateLiteral\", node, opts);\n}\nexport function assertYieldExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.YieldExpression {\n  assert(\"YieldExpression\", node, opts);\n}\nexport function assertAwaitExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AwaitExpression {\n  assert(\"AwaitExpression\", node, opts);\n}\nexport function assertImport(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Import {\n  assert(\"Import\", node, opts);\n}\nexport function assertBigIntLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BigIntLiteral {\n  assert(\"BigIntLiteral\", node, opts);\n}\nexport function assertExportNamespaceSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportNamespaceSpecifier {\n  assert(\"ExportNamespaceSpecifier\", node, opts);\n}\nexport function assertOptionalMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalMemberExpression {\n  assert(\"OptionalMemberExpression\", node, opts);\n}\nexport function assertOptionalCallExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalCallExpression {\n  assert(\"OptionalCallExpression\", node, opts);\n}\nexport function assertClassProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassProperty {\n  assert(\"ClassProperty\", node, opts);\n}\nexport function assertClassAccessorProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassAccessorProperty {\n  assert(\"ClassAccessorProperty\", node, opts);\n}\nexport function assertClassPrivateProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateProperty {\n  assert(\"ClassPrivateProperty\", node, opts);\n}\nexport function assertClassPrivateMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassPrivateMethod {\n  assert(\"ClassPrivateMethod\", node, opts);\n}\nexport function assertPrivateName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PrivateName {\n  assert(\"PrivateName\", node, opts);\n}\nexport function assertStaticBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StaticBlock {\n  assert(\"StaticBlock\", node, opts);\n}\nexport function assertAnyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.AnyTypeAnnotation {\n  assert(\"AnyTypeAnnotation\", node, opts);\n}\nexport function assertArrayTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArrayTypeAnnotation {\n  assert(\"ArrayTypeAnnotation\", node, opts);\n}\nexport function assertBooleanTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanTypeAnnotation {\n  assert(\"BooleanTypeAnnotation\", node, opts);\n}\nexport function assertBooleanLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BooleanLiteralTypeAnnotation {\n  assert(\"BooleanLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNullLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullLiteralTypeAnnotation {\n  assert(\"NullLiteralTypeAnnotation\", node, opts);\n}\nexport function assertClassImplements(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ClassImplements {\n  assert(\"ClassImplements\", node, opts);\n}\nexport function assertDeclareClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareClass {\n  assert(\"DeclareClass\", node, opts);\n}\nexport function assertDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareFunction {\n  assert(\"DeclareFunction\", node, opts);\n}\nexport function assertDeclareInterface(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareInterface {\n  assert(\"DeclareInterface\", node, opts);\n}\nexport function assertDeclareModule(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModule {\n  assert(\"DeclareModule\", node, opts);\n}\nexport function assertDeclareModuleExports(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareModuleExports {\n  assert(\"DeclareModuleExports\", node, opts);\n}\nexport function assertDeclareTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareTypeAlias {\n  assert(\"DeclareTypeAlias\", node, opts);\n}\nexport function assertDeclareOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareOpaqueType {\n  assert(\"DeclareOpaqueType\", node, opts);\n}\nexport function assertDeclareVariable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareVariable {\n  assert(\"DeclareVariable\", node, opts);\n}\nexport function assertDeclareExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportDeclaration {\n  assert(\"DeclareExportDeclaration\", node, opts);\n}\nexport function assertDeclareExportAllDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclareExportAllDeclaration {\n  assert(\"DeclareExportAllDeclaration\", node, opts);\n}\nexport function assertDeclaredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DeclaredPredicate {\n  assert(\"DeclaredPredicate\", node, opts);\n}\nexport function assertExistsTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExistsTypeAnnotation {\n  assert(\"ExistsTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeAnnotation {\n  assert(\"FunctionTypeAnnotation\", node, opts);\n}\nexport function assertFunctionTypeParam(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionTypeParam {\n  assert(\"FunctionTypeParam\", node, opts);\n}\nexport function assertGenericTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.GenericTypeAnnotation {\n  assert(\"GenericTypeAnnotation\", node, opts);\n}\nexport function assertInferredPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InferredPredicate {\n  assert(\"InferredPredicate\", node, opts);\n}\nexport function assertInterfaceExtends(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceExtends {\n  assert(\"InterfaceExtends\", node, opts);\n}\nexport function assertInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceDeclaration {\n  assert(\"InterfaceDeclaration\", node, opts);\n}\nexport function assertInterfaceTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.InterfaceTypeAnnotation {\n  assert(\"InterfaceTypeAnnotation\", node, opts);\n}\nexport function assertIntersectionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IntersectionTypeAnnotation {\n  assert(\"IntersectionTypeAnnotation\", node, opts);\n}\nexport function assertMixedTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.MixedTypeAnnotation {\n  assert(\"MixedTypeAnnotation\", node, opts);\n}\nexport function assertEmptyTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EmptyTypeAnnotation {\n  assert(\"EmptyTypeAnnotation\", node, opts);\n}\nexport function assertNullableTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NullableTypeAnnotation {\n  assert(\"NullableTypeAnnotation\", node, opts);\n}\nexport function assertNumberLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberLiteralTypeAnnotation {\n  assert(\"NumberLiteralTypeAnnotation\", node, opts);\n}\nexport function assertNumberTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.NumberTypeAnnotation {\n  assert(\"NumberTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeAnnotation {\n  assert(\"ObjectTypeAnnotation\", node, opts);\n}\nexport function assertObjectTypeInternalSlot(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeInternalSlot {\n  assert(\"ObjectTypeInternalSlot\", node, opts);\n}\nexport function assertObjectTypeCallProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeCallProperty {\n  assert(\"ObjectTypeCallProperty\", node, opts);\n}\nexport function assertObjectTypeIndexer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeIndexer {\n  assert(\"ObjectTypeIndexer\", node, opts);\n}\nexport function assertObjectTypeProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeProperty {\n  assert(\"ObjectTypeProperty\", node, opts);\n}\nexport function assertObjectTypeSpreadProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectTypeSpreadProperty {\n  assert(\"ObjectTypeSpreadProperty\", node, opts);\n}\nexport function assertOpaqueType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OpaqueType {\n  assert(\"OpaqueType\", node, opts);\n}\nexport function assertQualifiedTypeIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.QualifiedTypeIdentifier {\n  assert(\"QualifiedTypeIdentifier\", node, opts);\n}\nexport function assertStringLiteralTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringLiteralTypeAnnotation {\n  assert(\"StringLiteralTypeAnnotation\", node, opts);\n}\nexport function assertStringTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.StringTypeAnnotation {\n  assert(\"StringTypeAnnotation\", node, opts);\n}\nexport function assertSymbolTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.SymbolTypeAnnotation {\n  assert(\"SymbolTypeAnnotation\", node, opts);\n}\nexport function assertThisTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ThisTypeAnnotation {\n  assert(\"ThisTypeAnnotation\", node, opts);\n}\nexport function assertTupleTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleTypeAnnotation {\n  assert(\"TupleTypeAnnotation\", node, opts);\n}\nexport function assertTypeofTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeofTypeAnnotation {\n  assert(\"TypeofTypeAnnotation\", node, opts);\n}\nexport function assertTypeAlias(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAlias {\n  assert(\"TypeAlias\", node, opts);\n}\nexport function assertTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeAnnotation {\n  assert(\"TypeAnnotation\", node, opts);\n}\nexport function assertTypeCastExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeCastExpression {\n  assert(\"TypeCastExpression\", node, opts);\n}\nexport function assertTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameter {\n  assert(\"TypeParameter\", node, opts);\n}\nexport function assertTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterDeclaration {\n  assert(\"TypeParameterDeclaration\", node, opts);\n}\nexport function assertTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeParameterInstantiation {\n  assert(\"TypeParameterInstantiation\", node, opts);\n}\nexport function assertUnionTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnionTypeAnnotation {\n  assert(\"UnionTypeAnnotation\", node, opts);\n}\nexport function assertVariance(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Variance {\n  assert(\"Variance\", node, opts);\n}\nexport function assertVoidTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.VoidTypeAnnotation {\n  assert(\"VoidTypeAnnotation\", node, opts);\n}\nexport function assertEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDeclaration {\n  assert(\"EnumDeclaration\", node, opts);\n}\nexport function assertEnumBooleanBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanBody {\n  assert(\"EnumBooleanBody\", node, opts);\n}\nexport function assertEnumNumberBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberBody {\n  assert(\"EnumNumberBody\", node, opts);\n}\nexport function assertEnumStringBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringBody {\n  assert(\"EnumStringBody\", node, opts);\n}\nexport function assertEnumSymbolBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumSymbolBody {\n  assert(\"EnumSymbolBody\", node, opts);\n}\nexport function assertEnumBooleanMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBooleanMember {\n  assert(\"EnumBooleanMember\", node, opts);\n}\nexport function assertEnumNumberMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumNumberMember {\n  assert(\"EnumNumberMember\", node, opts);\n}\nexport function assertEnumStringMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumStringMember {\n  assert(\"EnumStringMember\", node, opts);\n}\nexport function assertEnumDefaultedMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumDefaultedMember {\n  assert(\"EnumDefaultedMember\", node, opts);\n}\nexport function assertIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.IndexedAccessType {\n  assert(\"IndexedAccessType\", node, opts);\n}\nexport function assertOptionalIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.OptionalIndexedAccessType {\n  assert(\"OptionalIndexedAccessType\", node, opts);\n}\nexport function assertJSXAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXAttribute {\n  assert(\"JSXAttribute\", node, opts);\n}\nexport function assertJSXClosingElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingElement {\n  assert(\"JSXClosingElement\", node, opts);\n}\nexport function assertJSXElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXElement {\n  assert(\"JSXElement\", node, opts);\n}\nexport function assertJSXEmptyExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXEmptyExpression {\n  assert(\"JSXEmptyExpression\", node, opts);\n}\nexport function assertJSXExpressionContainer(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXExpressionContainer {\n  assert(\"JSXExpressionContainer\", node, opts);\n}\nexport function assertJSXSpreadChild(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadChild {\n  assert(\"JSXSpreadChild\", node, opts);\n}\nexport function assertJSXIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXIdentifier {\n  assert(\"JSXIdentifier\", node, opts);\n}\nexport function assertJSXMemberExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXMemberExpression {\n  assert(\"JSXMemberExpression\", node, opts);\n}\nexport function assertJSXNamespacedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXNamespacedName {\n  assert(\"JSXNamespacedName\", node, opts);\n}\nexport function assertJSXOpeningElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningElement {\n  assert(\"JSXOpeningElement\", node, opts);\n}\nexport function assertJSXSpreadAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXSpreadAttribute {\n  assert(\"JSXSpreadAttribute\", node, opts);\n}\nexport function assertJSXText(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXText {\n  assert(\"JSXText\", node, opts);\n}\nexport function assertJSXFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXFragment {\n  assert(\"JSXFragment\", node, opts);\n}\nexport function assertJSXOpeningFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXOpeningFragment {\n  assert(\"JSXOpeningFragment\", node, opts);\n}\nexport function assertJSXClosingFragment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSXClosingFragment {\n  assert(\"JSXClosingFragment\", node, opts);\n}\nexport function assertNoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Noop {\n  assert(\"Noop\", node, opts);\n}\nexport function assertPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Placeholder {\n  assert(\"Placeholder\", node, opts);\n}\nexport function assertV8IntrinsicIdentifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.V8IntrinsicIdentifier {\n  assert(\"V8IntrinsicIdentifier\", node, opts);\n}\nexport function assertArgumentPlaceholder(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ArgumentPlaceholder {\n  assert(\"ArgumentPlaceholder\", node, opts);\n}\nexport function assertBindExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BindExpression {\n  assert(\"BindExpression\", node, opts);\n}\nexport function assertImportAttribute(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportAttribute {\n  assert(\"ImportAttribute\", node, opts);\n}\nexport function assertDecorator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Decorator {\n  assert(\"Decorator\", node, opts);\n}\nexport function assertDoExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DoExpression {\n  assert(\"DoExpression\", node, opts);\n}\nexport function assertExportDefaultSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDefaultSpecifier {\n  assert(\"ExportDefaultSpecifier\", node, opts);\n}\nexport function assertRecordExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.RecordExpression {\n  assert(\"RecordExpression\", node, opts);\n}\nexport function assertTupleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TupleExpression {\n  assert(\"TupleExpression\", node, opts);\n}\nexport function assertDecimalLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.DecimalLiteral {\n  assert(\"DecimalLiteral\", node, opts);\n}\nexport function assertModuleExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleExpression {\n  assert(\"ModuleExpression\", node, opts);\n}\nexport function assertTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TopicReference {\n  assert(\"TopicReference\", node, opts);\n}\nexport function assertPipelineTopicExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineTopicExpression {\n  assert(\"PipelineTopicExpression\", node, opts);\n}\nexport function assertPipelineBareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelineBareFunction {\n  assert(\"PipelineBareFunction\", node, opts);\n}\nexport function assertPipelinePrimaryTopicReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PipelinePrimaryTopicReference {\n  assert(\"PipelinePrimaryTopicReference\", node, opts);\n}\nexport function assertTSParameterProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParameterProperty {\n  assert(\"TSParameterProperty\", node, opts);\n}\nexport function assertTSDeclareFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareFunction {\n  assert(\"TSDeclareFunction\", node, opts);\n}\nexport function assertTSDeclareMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSDeclareMethod {\n  assert(\"TSDeclareMethod\", node, opts);\n}\nexport function assertTSQualifiedName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSQualifiedName {\n  assert(\"TSQualifiedName\", node, opts);\n}\nexport function assertTSCallSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSCallSignatureDeclaration {\n  assert(\"TSCallSignatureDeclaration\", node, opts);\n}\nexport function assertTSConstructSignatureDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructSignatureDeclaration {\n  assert(\"TSConstructSignatureDeclaration\", node, opts);\n}\nexport function assertTSPropertySignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSPropertySignature {\n  assert(\"TSPropertySignature\", node, opts);\n}\nexport function assertTSMethodSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMethodSignature {\n  assert(\"TSMethodSignature\", node, opts);\n}\nexport function assertTSIndexSignature(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexSignature {\n  assert(\"TSIndexSignature\", node, opts);\n}\nexport function assertTSAnyKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAnyKeyword {\n  assert(\"TSAnyKeyword\", node, opts);\n}\nexport function assertTSBooleanKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBooleanKeyword {\n  assert(\"TSBooleanKeyword\", node, opts);\n}\nexport function assertTSBigIntKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBigIntKeyword {\n  assert(\"TSBigIntKeyword\", node, opts);\n}\nexport function assertTSIntrinsicKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntrinsicKeyword {\n  assert(\"TSIntrinsicKeyword\", node, opts);\n}\nexport function assertTSNeverKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNeverKeyword {\n  assert(\"TSNeverKeyword\", node, opts);\n}\nexport function assertTSNullKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNullKeyword {\n  assert(\"TSNullKeyword\", node, opts);\n}\nexport function assertTSNumberKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNumberKeyword {\n  assert(\"TSNumberKeyword\", node, opts);\n}\nexport function assertTSObjectKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSObjectKeyword {\n  assert(\"TSObjectKeyword\", node, opts);\n}\nexport function assertTSStringKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSStringKeyword {\n  assert(\"TSStringKeyword\", node, opts);\n}\nexport function assertTSSymbolKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSymbolKeyword {\n  assert(\"TSSymbolKeyword\", node, opts);\n}\nexport function assertTSUndefinedKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUndefinedKeyword {\n  assert(\"TSUndefinedKeyword\", node, opts);\n}\nexport function assertTSUnknownKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnknownKeyword {\n  assert(\"TSUnknownKeyword\", node, opts);\n}\nexport function assertTSVoidKeyword(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSVoidKeyword {\n  assert(\"TSVoidKeyword\", node, opts);\n}\nexport function assertTSThisType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSThisType {\n  assert(\"TSThisType\", node, opts);\n}\nexport function assertTSFunctionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSFunctionType {\n  assert(\"TSFunctionType\", node, opts);\n}\nexport function assertTSConstructorType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConstructorType {\n  assert(\"TSConstructorType\", node, opts);\n}\nexport function assertTSTypeReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeReference {\n  assert(\"TSTypeReference\", node, opts);\n}\nexport function assertTSTypePredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypePredicate {\n  assert(\"TSTypePredicate\", node, opts);\n}\nexport function assertTSTypeQuery(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeQuery {\n  assert(\"TSTypeQuery\", node, opts);\n}\nexport function assertTSTypeLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeLiteral {\n  assert(\"TSTypeLiteral\", node, opts);\n}\nexport function assertTSArrayType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSArrayType {\n  assert(\"TSArrayType\", node, opts);\n}\nexport function assertTSTupleType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTupleType {\n  assert(\"TSTupleType\", node, opts);\n}\nexport function assertTSOptionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSOptionalType {\n  assert(\"TSOptionalType\", node, opts);\n}\nexport function assertTSRestType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSRestType {\n  assert(\"TSRestType\", node, opts);\n}\nexport function assertTSNamedTupleMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamedTupleMember {\n  assert(\"TSNamedTupleMember\", node, opts);\n}\nexport function assertTSUnionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSUnionType {\n  assert(\"TSUnionType\", node, opts);\n}\nexport function assertTSIntersectionType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIntersectionType {\n  assert(\"TSIntersectionType\", node, opts);\n}\nexport function assertTSConditionalType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSConditionalType {\n  assert(\"TSConditionalType\", node, opts);\n}\nexport function assertTSInferType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInferType {\n  assert(\"TSInferType\", node, opts);\n}\nexport function assertTSParenthesizedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSParenthesizedType {\n  assert(\"TSParenthesizedType\", node, opts);\n}\nexport function assertTSTypeOperator(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeOperator {\n  assert(\"TSTypeOperator\", node, opts);\n}\nexport function assertTSIndexedAccessType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSIndexedAccessType {\n  assert(\"TSIndexedAccessType\", node, opts);\n}\nexport function assertTSMappedType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSMappedType {\n  assert(\"TSMappedType\", node, opts);\n}\nexport function assertTSTemplateLiteralType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTemplateLiteralType {\n  assert(\"TSTemplateLiteralType\", node, opts);\n}\nexport function assertTSLiteralType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSLiteralType {\n  assert(\"TSLiteralType\", node, opts);\n}\nexport function assertTSExpressionWithTypeArguments(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExpressionWithTypeArguments {\n  assert(\"TSExpressionWithTypeArguments\", node, opts);\n}\nexport function assertTSInterfaceDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceDeclaration {\n  assert(\"TSInterfaceDeclaration\", node, opts);\n}\nexport function assertTSInterfaceBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInterfaceBody {\n  assert(\"TSInterfaceBody\", node, opts);\n}\nexport function assertTSTypeAliasDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAliasDeclaration {\n  assert(\"TSTypeAliasDeclaration\", node, opts);\n}\nexport function assertTSInstantiationExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSInstantiationExpression {\n  assert(\"TSInstantiationExpression\", node, opts);\n}\nexport function assertTSAsExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSAsExpression {\n  assert(\"TSAsExpression\", node, opts);\n}\nexport function assertTSSatisfiesExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSSatisfiesExpression {\n  assert(\"TSSatisfiesExpression\", node, opts);\n}\nexport function assertTSTypeAssertion(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAssertion {\n  assert(\"TSTypeAssertion\", node, opts);\n}\nexport function assertTSEnumBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumBody {\n  assert(\"TSEnumBody\", node, opts);\n}\nexport function assertTSEnumDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumDeclaration {\n  assert(\"TSEnumDeclaration\", node, opts);\n}\nexport function assertTSEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEnumMember {\n  assert(\"TSEnumMember\", node, opts);\n}\nexport function assertTSModuleDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleDeclaration {\n  assert(\"TSModuleDeclaration\", node, opts);\n}\nexport function assertTSModuleBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSModuleBlock {\n  assert(\"TSModuleBlock\", node, opts);\n}\nexport function assertTSImportType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportType {\n  assert(\"TSImportType\", node, opts);\n}\nexport function assertTSImportEqualsDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSImportEqualsDeclaration {\n  assert(\"TSImportEqualsDeclaration\", node, opts);\n}\nexport function assertTSExternalModuleReference(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExternalModuleReference {\n  assert(\"TSExternalModuleReference\", node, opts);\n}\nexport function assertTSNonNullExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNonNullExpression {\n  assert(\"TSNonNullExpression\", node, opts);\n}\nexport function assertTSExportAssignment(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSExportAssignment {\n  assert(\"TSExportAssignment\", node, opts);\n}\nexport function assertTSNamespaceExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSNamespaceExportDeclaration {\n  assert(\"TSNamespaceExportDeclaration\", node, opts);\n}\nexport function assertTSTypeAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeAnnotation {\n  assert(\"TSTypeAnnotation\", node, opts);\n}\nexport function assertTSTypeParameterInstantiation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterInstantiation {\n  assert(\"TSTypeParameterInstantiation\", node, opts);\n}\nexport function assertTSTypeParameterDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameterDeclaration {\n  assert(\"TSTypeParameterDeclaration\", node, opts);\n}\nexport function assertTSTypeParameter(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeParameter {\n  assert(\"TSTypeParameter\", node, opts);\n}\nexport function assertStandardized(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Standardized {\n  assert(\"Standardized\", node, opts);\n}\nexport function assertExpression(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Expression {\n  assert(\"Expression\", node, opts);\n}\nexport function assertBinary(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Binary {\n  assert(\"Binary\", node, opts);\n}\nexport function assertScopable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Scopable {\n  assert(\"Scopable\", node, opts);\n}\nexport function assertBlockParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.BlockParent {\n  assert(\"BlockParent\", node, opts);\n}\nexport function assertBlock(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Block {\n  assert(\"Block\", node, opts);\n}\nexport function assertStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Statement {\n  assert(\"Statement\", node, opts);\n}\nexport function assertTerminatorless(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Terminatorless {\n  assert(\"Terminatorless\", node, opts);\n}\nexport function assertCompletionStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.CompletionStatement {\n  assert(\"CompletionStatement\", node, opts);\n}\nexport function assertConditional(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Conditional {\n  assert(\"Conditional\", node, opts);\n}\nexport function assertLoop(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Loop {\n  assert(\"Loop\", node, opts);\n}\nexport function assertWhile(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.While {\n  assert(\"While\", node, opts);\n}\nexport function assertExpressionWrapper(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExpressionWrapper {\n  assert(\"ExpressionWrapper\", node, opts);\n}\nexport function assertFor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.For {\n  assert(\"For\", node, opts);\n}\nexport function assertForXStatement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ForXStatement {\n  assert(\"ForXStatement\", node, opts);\n}\nexport function assertFunction(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Function {\n  assert(\"Function\", node, opts);\n}\nexport function assertFunctionParent(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FunctionParent {\n  assert(\"FunctionParent\", node, opts);\n}\nexport function assertPureish(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pureish {\n  assert(\"Pureish\", node, opts);\n}\nexport function assertDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Declaration {\n  assert(\"Declaration\", node, opts);\n}\nexport function assertPatternLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.PatternLike {\n  assert(\"PatternLike\", node, opts);\n}\nexport function assertLVal(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.LVal {\n  assert(\"LVal\", node, opts);\n}\nexport function assertTSEntityName(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSEntityName {\n  assert(\"TSEntityName\", node, opts);\n}\nexport function assertLiteral(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Literal {\n  assert(\"Literal\", node, opts);\n}\nexport function assertImmutable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Immutable {\n  assert(\"Immutable\", node, opts);\n}\nexport function assertUserWhitespacable(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UserWhitespacable {\n  assert(\"UserWhitespacable\", node, opts);\n}\nexport function assertMethod(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Method {\n  assert(\"Method\", node, opts);\n}\nexport function assertObjectMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ObjectMember {\n  assert(\"ObjectMember\", node, opts);\n}\nexport function assertProperty(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Property {\n  assert(\"Property\", node, opts);\n}\nexport function assertUnaryLike(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.UnaryLike {\n  assert(\"UnaryLike\", node, opts);\n}\nexport function assertPattern(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Pattern {\n  assert(\"Pattern\", node, opts);\n}\nexport function assertClass(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Class {\n  assert(\"Class\", node, opts);\n}\nexport function assertImportOrExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ImportOrExportDeclaration {\n  assert(\"ImportOrExportDeclaration\", node, opts);\n}\nexport function assertExportDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ExportDeclaration {\n  assert(\"ExportDeclaration\", node, opts);\n}\nexport function assertModuleSpecifier(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.ModuleSpecifier {\n  assert(\"ModuleSpecifier\", node, opts);\n}\nexport function assertAccessor(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Accessor {\n  assert(\"Accessor\", node, opts);\n}\nexport function assertPrivate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Private {\n  assert(\"Private\", node, opts);\n}\nexport function assertFlow(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Flow {\n  assert(\"Flow\", node, opts);\n}\nexport function assertFlowType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowType {\n  assert(\"FlowType\", node, opts);\n}\nexport function assertFlowBaseAnnotation(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowBaseAnnotation {\n  assert(\"FlowBaseAnnotation\", node, opts);\n}\nexport function assertFlowDeclaration(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowDeclaration {\n  assert(\"FlowDeclaration\", node, opts);\n}\nexport function assertFlowPredicate(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.FlowPredicate {\n  assert(\"FlowPredicate\", node, opts);\n}\nexport function assertEnumBody(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumBody {\n  assert(\"EnumBody\", node, opts);\n}\nexport function assertEnumMember(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.EnumMember {\n  assert(\"EnumMember\", node, opts);\n}\nexport function assertJSX(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.JSX {\n  assert(\"JSX\", node, opts);\n}\nexport function assertMiscellaneous(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.Miscellaneous {\n  assert(\"Miscellaneous\", node, opts);\n}\nexport function assertTypeScript(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TypeScript {\n  assert(\"TypeScript\", node, opts);\n}\nexport function assertTSTypeElement(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSTypeElement {\n  assert(\"TSTypeElement\", node, opts);\n}\nexport function assertTSType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSType {\n  assert(\"TSType\", node, opts);\n}\nexport function assertTSBaseType(\n  node: object | null | undefined,\n  opts?: object | null,\n): asserts node is t.TSBaseType {\n  assert(\"TSBaseType\", node, opts);\n}\nexport function assertNumberLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertNumberLiteral\", \"assertNumericLiteral\");\n  assert(\"NumberLiteral\", node, opts);\n}\nexport function assertRegexLiteral(node: any, opts: any): void {\n  deprecationWarning(\"assertRegexLiteral\", \"assertRegExpLiteral\");\n  assert(\"RegexLiteral\", node, opts);\n}\nexport function assertRestProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertRestProperty\", \"assertRestElement\");\n  assert(\"RestProperty\", node, opts);\n}\nexport function assertSpreadProperty(node: any, opts: any): void {\n  deprecationWarning(\"assertSpreadProperty\", \"assertSpreadElement\");\n  assert(\"SpreadProperty\", node, opts);\n}\nexport function assertModuleDeclaration(node: any, opts: any): void {\n  deprecationWarning(\n    \"assertModuleDeclaration\",\n    \"assertImportOrExportDeclaration\",\n  );\n  assert(\"ModuleDeclaration\", node, opts);\n}\n","import {\n  anyTypeAnnotation,\n  stringTypeAnnotation,\n  numberTypeAnnotation,\n  voidTypeAnnotation,\n  booleanTypeAnnotation,\n  genericTypeAnnotation,\n  identifier,\n} from \"../generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nexport default createTypeAnnotationBasedOnTypeof as {\n  (type: \"string\"): t.StringTypeAnnotation;\n  (type: \"number\"): t.NumberTypeAnnotation;\n  (type: \"undefined\"): t.VoidTypeAnnotation;\n  (type: \"boolean\"): t.BooleanTypeAnnotation;\n  (type: \"function\"): t.GenericTypeAnnotation;\n  (type: \"object\"): t.GenericTypeAnnotation;\n  (type: \"symbol\"): t.GenericTypeAnnotation;\n  (type: \"bigint\"): t.AnyTypeAnnotation;\n};\n\n/**\n * Create a type annotation based on typeof expression.\n */\nfunction createTypeAnnotationBasedOnTypeof(type: string): t.FlowType {\n  switch (type) {\n    case \"string\":\n      return stringTypeAnnotation();\n    case \"number\":\n      return numberTypeAnnotation();\n    case \"undefined\":\n      return voidTypeAnnotation();\n    case \"boolean\":\n      return booleanTypeAnnotation();\n    case \"function\":\n      return genericTypeAnnotation(identifier(\"Function\"));\n    case \"object\":\n      return genericTypeAnnotation(identifier(\"Object\"));\n    case \"symbol\":\n      return genericTypeAnnotation(identifier(\"Symbol\"));\n    case \"bigint\":\n      // todo: use BigInt annotation when Flow supports BigInt\n      // https://github.com/facebook/flow/issues/6639\n      return anyTypeAnnotation();\n  }\n  throw new Error(\"Invalid typeof value: \" + type);\n}\n","import {\n  isAnyTypeAnnotation,\n  isGenericTypeAnnotation,\n  isUnionTypeAnnotation,\n  isFlowBaseAnnotation,\n  isIdentifier,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.GenericTypeAnnotation[\"id\"]): string {\n  return isIdentifier(node)\n    ? node.name\n    : `${node.id.name}.${getQualifiedName(node.qualification)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n  nodesIn: ReadonlyArray<t.FlowType | false | null | undefined>,\n): t.FlowType[] {\n  const nodes = Array.from(nodesIn);\n\n  const generics = new Map<string, t.GenericTypeAnnotation>();\n  const bases = new Map<t.FlowBaseAnnotation[\"type\"], t.FlowBaseAnnotation>();\n\n  // store union type groups to circular references\n  const typeGroups = new Set<t.FlowType[]>();\n\n  const types: t.FlowType[] = [];\n\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!node) continue;\n\n    // detect duplicates\n    if (types.includes(node)) {\n      continue;\n    }\n\n    // this type matches anything\n    if (isAnyTypeAnnotation(node)) {\n      return [node];\n    }\n\n    if (isFlowBaseAnnotation(node)) {\n      bases.set(node.type, node);\n      continue;\n    }\n\n    if (isUnionTypeAnnotation(node)) {\n      if (!typeGroups.has(node.types)) {\n        nodes.push(...node.types);\n        typeGroups.add(node.types);\n      }\n      continue;\n    }\n\n    // find a matching generic type and merge and deduplicate the type parameters\n    if (isGenericTypeAnnotation(node)) {\n      const name = getQualifiedName(node.id);\n\n      if (generics.has(name)) {\n        let existing: t.Flow = generics.get(name);\n        if (existing.typeParameters) {\n          if (node.typeParameters) {\n            existing.typeParameters.params.push(...node.typeParameters.params);\n            existing.typeParameters.params = removeTypeDuplicates(\n              existing.typeParameters.params,\n            );\n          }\n        } else {\n          existing = node.typeParameters;\n        }\n      } else {\n        generics.set(name, node);\n      }\n\n      continue;\n    }\n\n    types.push(node);\n  }\n\n  // add back in bases\n  for (const [, baseType] of bases) {\n    types.push(baseType);\n  }\n\n  // add back in generics\n  for (const [, genericName] of generics) {\n    types.push(genericName);\n  }\n\n  return types;\n}\n","import { unionTypeAnnotation } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/flow/removeTypeDuplicates.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createFlowUnionType<T extends t.FlowType>(\n  types: [T] | Array<T>,\n): T | t.UnionTypeAnnotation {\n  const flattened = removeTypeDuplicates(types);\n\n  if (flattened.length === 1) {\n    return flattened[0] as T;\n  } else {\n    return unionTypeAnnotation(flattened);\n  }\n}\n","import {\n  isIdentifier,\n  isThisExpression,\n  isTSAnyKeyword,\n  isTSTypeReference,\n  isTSUnionType,\n  isTSBaseType,\n} from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\nfunction getQualifiedName(node: t.TSTypeReference[\"typeName\"]): string {\n  return isIdentifier(node)\n    ? node.name\n    : isThisExpression(node)\n      ? \"this\"\n      : `${node.right.name}.${getQualifiedName(node.left)}`;\n}\n\n/**\n * Dedupe type annotations.\n */\nexport default function removeTypeDuplicates(\n  nodesIn: ReadonlyArray<t.TSType>,\n): Array<t.TSType> {\n  const nodes = Array.from(nodesIn);\n\n  const generics = new Map<string, t.TSTypeReference>();\n  const bases = new Map<t.TSBaseType[\"type\"], t.TSBaseType>();\n\n  // store union type groups to circular references\n  const typeGroups = new Set<t.TSType[]>();\n\n  const types: t.TSType[] = [];\n\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!node) continue;\n\n    // detect duplicates\n    if (types.includes(node)) {\n      continue;\n    }\n\n    // this type matches anything\n    if (isTSAnyKeyword(node)) {\n      return [node];\n    }\n\n    // Analogue of FlowBaseAnnotation\n    if (isTSBaseType(node)) {\n      bases.set(node.type, node);\n      continue;\n    }\n\n    if (isTSUnionType(node)) {\n      if (!typeGroups.has(node.types)) {\n        nodes.push(...node.types);\n        typeGroups.add(node.types);\n      }\n      continue;\n    }\n\n    // todo: support merging tuples: number[]\n    const typeArgumentsKey = process.env.BABEL_8_BREAKING\n      ? \"typeArguments\"\n      : \"typeParameters\";\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    if (isTSTypeReference(node) && node[typeArgumentsKey]) {\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      const typeArguments = node[typeArgumentsKey];\n      const name = getQualifiedName(node.typeName);\n\n      if (generics.has(name)) {\n        let existing: t.TypeScript = generics.get(name);\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n        const existingTypeArguments = existing[typeArgumentsKey];\n        if (existingTypeArguments) {\n          existingTypeArguments.params.push(...typeArguments.params);\n          existingTypeArguments.params = removeTypeDuplicates(\n            existingTypeArguments.params,\n          );\n        } else {\n          existing = typeArguments;\n        }\n      } else {\n        generics.set(name, node);\n      }\n\n      continue;\n    }\n\n    types.push(node);\n  }\n\n  // add back in bases\n  for (const [, baseType] of bases) {\n    types.push(baseType);\n  }\n\n  // add back in generics\n  for (const [, genericName] of generics) {\n    types.push(genericName);\n  }\n\n  return types;\n}\n","import { tsUnionType } from \"../generated/index.ts\";\nimport removeTypeDuplicates from \"../../modifications/typescript/removeTypeDuplicates.ts\";\nimport { isTSTypeAnnotation } from \"../../validators/generated/index.ts\";\nimport type * as t from \"../../index.ts\";\n\n/**\n * Takes an array of `types` and flattens them, removing duplicates and\n * returns a `UnionTypeAnnotation` node containing them.\n */\nexport default function createTSUnionType(\n  typeAnnotations: Array<t.TSTypeAnnotation | t.TSType>,\n): t.TSType {\n  const types = typeAnnotations.map(type => {\n    return isTSTypeAnnotation(type) ? type.typeAnnotation : type;\n  });\n  const flattened = removeTypeDuplicates(types);\n\n  if (flattened.length === 1) {\n    return flattened[0];\n  } else {\n    return tsUnionType(flattened);\n  }\n}\n","import { numericLiteral, unaryExpression } from \"./generated/index.ts\";\n\nexport function buildUndefinedNode() {\n  return unaryExpression(\"void\", numericLiteral(0), true);\n}\n","import { NODE_FIELDS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\nimport { isFile, isIdentifier } from \"../validators/generated/index.ts\";\n\nconst { hasOwn } = process.env.BABEL_8_BREAKING\n  ? Object\n  : { hasOwn: Function.call.bind(Object.prototype.hasOwnProperty) };\n\ntype CommentCache = Map<t.Comment, t.Comment>;\n\n// This function will never be called for comments, only for real nodes.\nfunction cloneIfNode(\n  obj: t.Node | undefined | null,\n  deep: boolean,\n  withoutLoc: boolean,\n  commentsCache: CommentCache,\n) {\n  if (obj && typeof obj.type === \"string\") {\n    return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);\n  }\n\n  return obj;\n}\n\nfunction cloneIfNodeOrArray(\n  obj: t.Node | undefined | null | (t.Node | undefined | null)[],\n  deep: boolean,\n  withoutLoc: boolean,\n  commentsCache: CommentCache,\n) {\n  if (Array.isArray(obj)) {\n    return obj.map(node => cloneIfNode(node, deep, withoutLoc, commentsCache));\n  }\n  return cloneIfNode(obj, deep, withoutLoc, commentsCache);\n}\n\n/**\n * Create a clone of a `node` including only properties belonging to the node.\n * If the second parameter is `false`, cloneNode performs a shallow clone.\n * If the third parameter is true, the cloned nodes exclude location properties.\n */\nexport default function cloneNode<T extends t.Node>(\n  node: T,\n  deep: boolean = true,\n  withoutLoc: boolean = false,\n): T {\n  return cloneNodeInternal(node, deep, withoutLoc, new Map());\n}\n\nfunction cloneNodeInternal<T extends t.Node>(\n  node: T,\n  deep: boolean = true,\n  withoutLoc: boolean = false,\n  commentsCache: CommentCache,\n): T {\n  if (!node) return node;\n\n  const { type } = node;\n  const newNode: any = { type: node.type };\n\n  // Special-case identifiers since they are the most cloned nodes.\n  if (isIdentifier(node)) {\n    newNode.name = node.name;\n\n    if (hasOwn(node, \"optional\") && typeof node.optional === \"boolean\") {\n      newNode.optional = node.optional;\n    }\n\n    if (hasOwn(node, \"typeAnnotation\")) {\n      newNode.typeAnnotation = deep\n        ? cloneIfNodeOrArray(\n            node.typeAnnotation,\n            true,\n            withoutLoc,\n            commentsCache,\n          )\n        : node.typeAnnotation;\n    }\n\n    if (hasOwn(node, \"decorators\")) {\n      newNode.decorators = deep\n        ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache)\n        : node.decorators;\n    }\n  } else if (!hasOwn(NODE_FIELDS, type)) {\n    throw new Error(`Unknown node type: \"${type}\"`);\n  } else {\n    for (const field of Object.keys(NODE_FIELDS[type])) {\n      if (hasOwn(node, field)) {\n        if (deep) {\n          newNode[field] =\n            isFile(node) && field === \"comments\"\n              ? maybeCloneComments(\n                  node.comments,\n                  deep,\n                  withoutLoc,\n                  commentsCache,\n                )\n              : cloneIfNodeOrArray(\n                  // @ts-expect-error node[field] has been guarded by has check\n                  node[field],\n                  true,\n                  withoutLoc,\n                  commentsCache,\n                );\n        } else {\n          newNode[field] =\n            // @ts-expect-error node[field] has been guarded by has check\n            node[field];\n        }\n      }\n    }\n  }\n\n  if (hasOwn(node, \"loc\")) {\n    if (withoutLoc) {\n      newNode.loc = null;\n    } else {\n      newNode.loc = node.loc;\n    }\n  }\n  if (hasOwn(node, \"leadingComments\")) {\n    newNode.leadingComments = maybeCloneComments(\n      node.leadingComments,\n      deep,\n      withoutLoc,\n      commentsCache,\n    );\n  }\n  if (hasOwn(node, \"innerComments\")) {\n    newNode.innerComments = maybeCloneComments(\n      node.innerComments,\n      deep,\n      withoutLoc,\n      commentsCache,\n    );\n  }\n  if (hasOwn(node, \"trailingComments\")) {\n    newNode.trailingComments = maybeCloneComments(\n      node.trailingComments,\n      deep,\n      withoutLoc,\n      commentsCache,\n    );\n  }\n  if (hasOwn(node, \"extra\")) {\n    newNode.extra = {\n      ...node.extra,\n    };\n  }\n\n  return newNode;\n}\n\nfunction maybeCloneComments<T extends t.Comment>(\n  comments: ReadonlyArray<T> | null,\n  deep: boolean,\n  withoutLoc: boolean,\n  commentsCache: Map<T, T>,\n): ReadonlyArray<T> | null {\n  if (!comments || !deep) {\n    return comments;\n  }\n  return comments.map(comment => {\n    const cache = commentsCache.get(comment);\n    if (cache) return cache;\n\n    const { type, value, loc } = comment;\n\n    const ret = { type, value, loc } as T;\n    if (withoutLoc) {\n      ret.loc = null;\n    }\n\n    commentsCache.set(comment, ret);\n\n    return ret;\n  });\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node`, including only\n * properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function clone<T extends t.Node>(node: T): T {\n  return cloneNode(node, /* deep */ false);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * @deprecated Use t.cloneNode instead.\n */\nexport default function cloneDeep<T extends t.Node>(node: T): T {\n  return cloneNode(node);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Create a deep clone of a `node` and all of it's child nodes\n * including only properties belonging to the node.\n * excluding `_private` and location properties.\n */\nexport default function cloneDeepWithoutLoc<T extends t.Node>(node: T): T {\n  return cloneNode(node, /* deep */ true, /* withoutLoc */ true);\n}\n","import cloneNode from \"./cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Create a shallow clone of a `node` excluding `_private` and location properties.\n */\nexport default function cloneWithoutLoc<T extends t.Node>(node: T): T {\n  return cloneNode(node, /* deep */ false, /* withoutLoc */ true);\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Add comments of certain type to a node.\n */\nexport default function addComments<T extends t.Node>(\n  node: T,\n  type: t.CommentTypeShorthand,\n  comments: Array<t.Comment>,\n): T {\n  if (!comments || !node) return node;\n\n  const key = `${type}Comments` as const;\n\n  if (node[key]) {\n    if (type === \"leading\") {\n      node[key] = comments.concat(node[key]);\n    } else {\n      node[key].push(...comments);\n    }\n  } else {\n    node[key] = comments;\n  }\n\n  return node;\n}\n","import addComments from \"./addComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Add comment of certain type to a node.\n */\nexport default function addComment<T extends t.Node>(\n  node: T,\n  type: t.CommentTypeShorthand,\n  content: string,\n  line?: boolean,\n): T {\n  return addComments(node, type, [\n    {\n      type: line ? \"CommentLine\" : \"CommentBlock\",\n      value: content,\n    } as t.Comment,\n  ]);\n}\n","import type * as t from \"../index.ts\";\n\nexport default function inherit<\n  C extends t.Node | undefined,\n  P extends t.Node | undefined,\n>(key: keyof C & keyof P, child: C, parent: P): void {\n  if (child && parent) {\n    // @ts-expect-error Could further refine key definitions\n    child[key] = Array.from(\n      new Set([].concat(child[key], parent[key]).filter(Boolean)),\n    );\n  }\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritInnerComments(\n  child: t.Node,\n  parent: t.Node,\n): void {\n  inherit(\"innerComments\", child, parent);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritLeadingComments(\n  child: t.Node,\n  parent: t.Node,\n): void {\n  inherit(\"leadingComments\", child, parent);\n}\n","import inherit from \"../utils/inherit.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function inheritTrailingComments(\n  child: t.Node,\n  parent: t.Node,\n): void {\n  inherit(\"trailingComments\", child, parent);\n}\n","import inheritTrailingComments from \"./inheritTrailingComments.ts\";\nimport inheritLeadingComments from \"./inheritLeadingComments.ts\";\nimport inheritInnerComments from \"./inheritInnerComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all unique comments from `parent` node to `child` node.\n */\nexport default function inheritsComments<T extends t.Node>(\n  child: T,\n  parent: t.Node,\n): T {\n  inheritTrailingComments(child, parent);\n  inheritLeadingComments(child, parent);\n  inheritInnerComments(child, parent);\n\n  return child;\n}\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Remove comment properties from a node.\n */\nexport default function removeComments<T extends t.Node>(node: T): T {\n  COMMENT_KEYS.forEach(key => {\n    node[key] = null;\n  });\n\n  return node;\n}\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'make build'\n */\nimport { FLIPPED_ALIAS_KEYS } from \"../../definitions/index.ts\";\n\nexport const STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS[\"Standardized\"];\nexport const EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS[\"Expression\"];\nexport const BINARY_TYPES = FLIPPED_ALIAS_KEYS[\"Binary\"];\nexport const SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Scopable\"];\nexport const BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"BlockParent\"];\nexport const BLOCK_TYPES = FLIPPED_ALIAS_KEYS[\"Block\"];\nexport const STATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"Statement\"];\nexport const TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS[\"Terminatorless\"];\nexport const COMPLETIONSTATEMENT_TYPES =\n  FLIPPED_ALIAS_KEYS[\"CompletionStatement\"];\nexport const CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS[\"Conditional\"];\nexport const LOOP_TYPES = FLIPPED_ALIAS_KEYS[\"Loop\"];\nexport const WHILE_TYPES = FLIPPED_ALIAS_KEYS[\"While\"];\nexport const EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS[\"ExpressionWrapper\"];\nexport const FOR_TYPES = FLIPPED_ALIAS_KEYS[\"For\"];\nexport const FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"ForXStatement\"];\nexport const FUNCTION_TYPES = FLIPPED_ALIAS_KEYS[\"Function\"];\nexport const FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS[\"FunctionParent\"];\nexport const PUREISH_TYPES = FLIPPED_ALIAS_KEYS[\"Pureish\"];\nexport const DECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"Declaration\"];\nexport const PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"PatternLike\"];\nexport const LVAL_TYPES = FLIPPED_ALIAS_KEYS[\"LVal\"];\nexport const TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS[\"TSEntityName\"];\nexport const LITERAL_TYPES = FLIPPED_ALIAS_KEYS[\"Literal\"];\nexport const IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS[\"Immutable\"];\nexport const USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS[\"UserWhitespacable\"];\nexport const METHOD_TYPES = FLIPPED_ALIAS_KEYS[\"Method\"];\nexport const OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"ObjectMember\"];\nexport const PROPERTY_TYPES = FLIPPED_ALIAS_KEYS[\"Property\"];\nexport const UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS[\"UnaryLike\"];\nexport const PATTERN_TYPES = FLIPPED_ALIAS_KEYS[\"Pattern\"];\nexport const CLASS_TYPES = FLIPPED_ALIAS_KEYS[\"Class\"];\nexport const IMPORTOREXPORTDECLARATION_TYPES =\n  FLIPPED_ALIAS_KEYS[\"ImportOrExportDeclaration\"];\nexport const EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"ExportDeclaration\"];\nexport const MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS[\"ModuleSpecifier\"];\nexport const ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS[\"Accessor\"];\nexport const PRIVATE_TYPES = FLIPPED_ALIAS_KEYS[\"Private\"];\nexport const FLOW_TYPES = FLIPPED_ALIAS_KEYS[\"Flow\"];\nexport const FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowType\"];\nexport const FLOWBASEANNOTATION_TYPES =\n  FLIPPED_ALIAS_KEYS[\"FlowBaseAnnotation\"];\nexport const FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS[\"FlowDeclaration\"];\nexport const FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS[\"FlowPredicate\"];\nexport const ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS[\"EnumBody\"];\nexport const ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS[\"EnumMember\"];\nexport const JSX_TYPES = FLIPPED_ALIAS_KEYS[\"JSX\"];\nexport const MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS[\"Miscellaneous\"];\nexport const TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS[\"TypeScript\"];\nexport const TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS[\"TSTypeElement\"];\nexport const TSTYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSType\"];\nexport const TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS[\"TSBaseType\"];\n/**\n * @deprecated migrate to IMPORTOREXPORTDECLARATION_TYPES.\n */\nexport const MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;\n","import {\n  isBlockStatement,\n  isFunction,\n  isEmptyStatement,\n  isStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n  returnStatement,\n  expressionStatement,\n  blockStatement,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toBlock(\n  node: t.Statement | t.Expression,\n  parent?: t.Node,\n): t.BlockStatement {\n  if (isBlockStatement(node)) {\n    return node;\n  }\n\n  let blockNodes: t.Statement[] = [];\n\n  if (isEmptyStatement(node)) {\n    blockNodes = [];\n  } else {\n    if (!isStatement(node)) {\n      if (isFunction(parent)) {\n        node = returnStatement(node);\n      } else {\n        node = expressionStatement(node);\n      }\n    }\n\n    blockNodes = [node];\n  }\n\n  return blockStatement(blockNodes);\n}\n","import toBlock from \"./toBlock.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Ensure the `key` (defaults to \"body\") of a `node` is a block.\n * Casting it to a block if it is not.\n *\n * Returns the BlockStatement\n */\nexport default function ensureBlock(\n  node: t.Node,\n  key: string = \"body\",\n): t.BlockStatement {\n  // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n  const result = toBlock(node[key], node);\n  // @ts-expect-error Fixme: key may not exist in node, consider remove key = \"body\"\n  node[key] = result;\n  return result;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport { isIdentifierChar } from \"@babel/helper-validator-identifier\";\n\nexport default function toIdentifier(input: string): string {\n  input = input + \"\";\n\n  // replace all non-valid identifiers with dashes\n  let name = \"\";\n  for (const c of input) {\n    name += isIdentifierChar(c.codePointAt(0)) ? c : \"-\";\n  }\n\n  // remove all dashes and numbers from start of name\n  name = name.replace(/^[-0-9]+/, \"\");\n\n  // camel case\n  name = name.replace(/[-\\s]+(.)?/g, function (match, c) {\n    return c ? c.toUpperCase() : \"\";\n  });\n\n  if (!isValidIdentifier(name)) {\n    name = `_${name}`;\n  }\n\n  return name || \"_\";\n}\n","import toIdentifier from \"./toIdentifier.ts\";\n\nexport default function toBindingIdentifierName(name: string): string {\n  name = toIdentifier(name);\n  if (name === \"eval\" || name === \"arguments\") name = \"_\" + name;\n\n  return name;\n}\n","import { isIdentifier } from \"../validators/generated/index.ts\";\nimport { stringLiteral } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toComputedKey(\n  node:\n    | t.ObjectMember\n    | t.ObjectProperty\n    | t.ClassMethod\n    | t.ClassProperty\n    | t.ClassAccessorProperty\n    | t.MemberExpression\n    | t.OptionalMemberExpression,\n  // @ts-expect-error todo(flow->ts): maybe check the type of node before accessing .key and .property\n  key: t.Expression | t.PrivateName = node.key || node.property,\n) {\n  if (!node.computed && isIdentifier(key)) key = stringLiteral(key.name);\n\n  return key;\n}\n","import {\n  isExpression,\n  isFunction,\n  isClass,\n  isExpressionStatement,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toExpression as {\n  (node: t.Function): t.FunctionExpression;\n  (node: t.Class): t.ClassExpression;\n  (\n    node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n  ): t.Expression;\n};\n\nfunction toExpression(\n  node: t.ExpressionStatement | t.Expression | t.Class | t.Function,\n): t.Expression {\n  if (isExpressionStatement(node)) {\n    node = node.expression;\n  }\n\n  // return unmodified node\n  // important for things like ArrowFunctions where\n  // type change from ArrowFunction to FunctionExpression\n  // produces bugs like -> `()=>a` to `function () a`\n  // without generating a BlockStatement for it\n  // ref: https://github.com/babel/babili/issues/130\n  if (isExpression(node)) {\n    return node;\n  }\n\n  // convert all classes and functions\n  // ClassDeclaration -> ClassExpression\n  // FunctionDeclaration, ObjectMethod, ClassMethod -> FunctionExpression\n  if (isClass(node)) {\n    // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n    node.type = \"ClassExpression\";\n  } else if (isFunction(node)) {\n    // @ts-expect-error todo(flow->ts): avoid type unsafe mutations\n    node.type = \"FunctionExpression\";\n  }\n\n  // if it's still not an expression\n  if (!isExpression(node)) {\n    throw new Error(`cannot turn ${node.type} to an expression`);\n  }\n\n  return node;\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * A prefix AST traversal implementation meant for simple searching\n * and processing.\n */\nexport default function traverseFast<Options = object>(\n  node: t.Node | null | undefined,\n  enter: (node: t.Node, opts?: Options) => void,\n  opts?: Options,\n): void {\n  if (!node) return;\n\n  const keys = VISITOR_KEYS[node.type];\n  if (!keys) return;\n\n  opts = opts || ({} as Options);\n  enter(node, opts);\n\n  for (const key of keys) {\n    const subNode: t.Node | undefined | null =\n      // @ts-expect-error key must present in node\n      node[key];\n\n    if (Array.isArray(subNode)) {\n      for (const node of subNode) {\n        traverseFast(node, enter, opts);\n      }\n    } else {\n      traverseFast(subNode, enter, opts);\n    }\n  }\n}\n","import { COMMENT_KEYS } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\nconst CLEAR_KEYS = [\n  \"tokens\", // only exist in t.File\n  \"start\",\n  \"end\",\n  \"loc\",\n  // Fixme: should be extra.raw / extra.rawValue?\n  \"raw\",\n  \"rawValue\",\n] as const;\n\nconst CLEAR_KEYS_PLUS_COMMENTS = [\n  ...COMMENT_KEYS,\n  \"comments\",\n  ...CLEAR_KEYS,\n] as const;\n\nexport type Options = { preserveComments?: boolean };\n/**\n * Remove all of the _* properties from a node along with the additional metadata\n * properties like location data and raw token data.\n */\nexport default function removeProperties(\n  node: t.Node,\n  opts: Options = {},\n): void {\n  const map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;\n  for (const key of map) {\n    // @ts-expect-error tokens only exist in t.File\n    if (node[key] != null) node[key] = undefined;\n  }\n\n  for (const key of Object.keys(node)) {\n    // @ts-expect-error string can not index node\n    if (key[0] === \"_\" && node[key] != null) node[key] = undefined;\n  }\n\n  const symbols: Array<symbol> = Object.getOwnPropertySymbols(node);\n  for (const sym of symbols) {\n    // @ts-expect-error Fixme: document symbol properties\n    node[sym] = null;\n  }\n}\n","import traverseFast from \"../traverse/traverseFast.ts\";\nimport removeProperties from \"./removeProperties.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function removePropertiesDeep<T extends t.Node>(\n  tree: T,\n  opts?: { preserveComments: boolean } | null,\n): T {\n  traverseFast(tree, removeProperties, opts);\n\n  return tree;\n}\n","import {\n  isIdentifier,\n  isStringLiteral,\n} from \"../validators/generated/index.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport removePropertiesDeep from \"../modifications/removePropertiesDeep.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default function toKeyAlias(\n  node: t.Method | t.Property,\n  key: t.Node = node.key,\n): string {\n  let alias;\n\n  // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.kind`\n  if (node.kind === \"method\") {\n    return toKeyAlias.increment() + \"\";\n  } else if (isIdentifier(key)) {\n    alias = key.name;\n  } else if (isStringLiteral(key)) {\n    alias = JSON.stringify(key.value);\n  } else {\n    alias = JSON.stringify(removePropertiesDeep(cloneNode(key)));\n  }\n\n  // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.computed`\n  if (node.computed) {\n    alias = `[${alias}]`;\n  }\n\n  // @ts-expect-error todo(flow->ts): maybe add node type check before checking `.static`\n  if (node.static) {\n    alias = `static:${alias}`;\n  }\n\n  return alias;\n}\n\ntoKeyAlias.uid = 0;\n\ntoKeyAlias.increment = function () {\n  if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {\n    return (toKeyAlias.uid = 0);\n  } else {\n    return toKeyAlias.uid++;\n  }\n};\n","import {\n  isStatement,\n  isFunction,\n  isClass,\n  isAssignmentExpression,\n} from \"../validators/generated/index.ts\";\nimport { expressionStatement } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default toStatement as {\n  (node: t.AssignmentExpression, ignore?: boolean): t.ExpressionStatement;\n\n  <T extends t.Statement>(node: T, ignore: false): T;\n  <T extends t.Statement>(node: T, ignore?: boolean): T | false;\n\n  (node: t.Class, ignore: false): t.ClassDeclaration;\n  (node: t.Class, ignore?: boolean): t.ClassDeclaration | false;\n\n  (node: t.Function, ignore: false): t.FunctionDeclaration;\n  (node: t.Function, ignore?: boolean): t.FunctionDeclaration | false;\n\n  (node: t.Node, ignore: false): t.Statement;\n  (node: t.Node, ignore?: boolean): t.Statement | false;\n};\n\nfunction toStatement(node: t.Node, ignore?: boolean): t.Statement | false {\n  if (isStatement(node)) {\n    return node;\n  }\n\n  let mustHaveId = false;\n  let newType;\n\n  if (isClass(node)) {\n    mustHaveId = true;\n    newType = \"ClassDeclaration\" as const;\n  } else if (isFunction(node)) {\n    mustHaveId = true;\n    newType = \"FunctionDeclaration\" as const;\n  } else if (isAssignmentExpression(node)) {\n    return expressionStatement(node);\n  }\n\n  // @ts-expect-error todo(flow->ts): node.id might be missing\n  if (mustHaveId && !node.id) {\n    newType = false;\n  }\n\n  if (!newType) {\n    if (ignore) {\n      return false;\n    } else {\n      throw new Error(`cannot turn ${node.type} to a statement`);\n    }\n  }\n\n  // @ts-expect-error manipulating node.type\n  node.type = newType;\n\n  // @ts-expect-error todo(flow->ts) refactor to avoid type unsafe mutations like reassigning node type above\n  return node;\n}\n","import isValidIdentifier from \"../validators/isValidIdentifier.ts\";\nimport {\n  identifier,\n  booleanLiteral,\n  nullLiteral,\n  stringLiteral,\n  numericLiteral,\n  regExpLiteral,\n  arrayExpression,\n  objectProperty,\n  objectExpression,\n  unaryExpression,\n  binaryExpression,\n} from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default valueToNode as {\n  (value: undefined): t.Identifier; // TODO: This should return \"void 0\"\n  (value: boolean): t.BooleanLiteral;\n  (value: null): t.NullLiteral;\n  (value: string): t.StringLiteral;\n  // Infinities and NaN need to use a BinaryExpression; negative values must be wrapped in UnaryExpression\n  (value: number): t.NumericLiteral | t.BinaryExpression | t.UnaryExpression;\n  (value: RegExp): t.RegExpLiteral;\n  (value: ReadonlyArray<unknown>): t.ArrayExpression;\n\n  // this throws with objects that are not plain objects,\n  // or if there are non-valueToNode-able values\n  (value: object): t.ObjectExpression;\n\n  (value: unknown): t.Expression;\n};\n\n// @ts-expect-error: Object.prototype.toString must return a string\nconst objectToString: (value: unknown) => string = Function.call.bind(\n  Object.prototype.toString,\n);\n\nfunction isRegExp(value: unknown): value is RegExp {\n  return objectToString(value) === \"[object RegExp]\";\n}\n\nfunction isPlainObject(value: unknown): value is object {\n  if (\n    typeof value !== \"object\" ||\n    value === null ||\n    Object.prototype.toString.call(value) !== \"[object Object]\"\n  ) {\n    return false;\n  }\n  const proto = Object.getPrototypeOf(value);\n  // Object.prototype's __proto__ is null. Every other class's __proto__.__proto__ is\n  // not null by default. We cannot check if proto === Object.prototype because it\n  // could come from another realm.\n  return proto === null || Object.getPrototypeOf(proto) === null;\n}\n\nfunction valueToNode(value: unknown): t.Expression {\n  // undefined\n  if (value === undefined) {\n    return identifier(\"undefined\");\n  }\n\n  // boolean\n  if (value === true || value === false) {\n    return booleanLiteral(value);\n  }\n\n  // null\n  if (value === null) {\n    return nullLiteral();\n  }\n\n  // strings\n  if (typeof value === \"string\") {\n    return stringLiteral(value);\n  }\n\n  // numbers\n  if (typeof value === \"number\") {\n    let result;\n    if (Number.isFinite(value)) {\n      result = numericLiteral(Math.abs(value));\n    } else {\n      let numerator;\n      if (Number.isNaN(value)) {\n        // NaN\n        numerator = numericLiteral(0);\n      } else {\n        // Infinity / -Infinity\n        numerator = numericLiteral(1);\n      }\n\n      result = binaryExpression(\"/\", numerator, numericLiteral(0));\n    }\n\n    if (value < 0 || Object.is(value, -0)) {\n      result = unaryExpression(\"-\", result);\n    }\n\n    return result;\n  }\n\n  // regexes\n  if (isRegExp(value)) {\n    const pattern = value.source;\n    const flags = /\\/([a-z]*)$/.exec(value.toString())[1];\n    return regExpLiteral(pattern, flags);\n  }\n\n  // array\n  if (Array.isArray(value)) {\n    return arrayExpression(value.map(valueToNode));\n  }\n\n  // object\n  if (isPlainObject(value)) {\n    const props = [];\n    for (const key of Object.keys(value)) {\n      let nodeKey;\n      if (isValidIdentifier(key)) {\n        nodeKey = identifier(key);\n      } else {\n        nodeKey = stringLiteral(key);\n      }\n      props.push(\n        objectProperty(\n          nodeKey,\n          valueToNode(\n            // @ts-expect-error key must present in value\n            value[key],\n          ),\n        ),\n      );\n    }\n    return objectExpression(props);\n  }\n\n  throw new Error(\"don't know how to turn this value into a node\");\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Append a node to a member expression.\n */\nexport default function appendToMemberExpression(\n  member: t.MemberExpression,\n  append: t.MemberExpression[\"property\"],\n  computed: boolean = false,\n): t.MemberExpression {\n  member.object = memberExpression(\n    member.object,\n    member.property,\n    member.computed,\n  );\n  member.property = append;\n  member.computed = !!computed;\n\n  return member;\n}\n","import { INHERIT_KEYS } from \"../constants/index.ts\";\nimport inheritsComments from \"../comments/inheritsComments.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Inherit all contextual properties from `parent` node to `child` node.\n */\nexport default function inherits<T extends t.Node | null | undefined>(\n  child: T,\n  parent: t.Node | null | undefined,\n): T {\n  if (!child || !parent) return child;\n\n  // optionally inherit specific properties if not null\n  for (const key of INHERIT_KEYS.optional) {\n    // @ts-expect-error Fixme: refine parent types\n    if (child[key] == null) {\n      // @ts-expect-error Fixme: refine parent types\n      child[key] = parent[key];\n    }\n  }\n\n  // force inherit \"private\" properties\n  for (const key of Object.keys(parent)) {\n    if (key[0] === \"_\" && key !== \"__clone\") {\n      // @ts-expect-error Fixme: refine parent types\n      child[key] = parent[key];\n    }\n  }\n\n  // force inherit select properties\n  for (const key of INHERIT_KEYS.force) {\n    // @ts-expect-error Fixme: refine parent types\n    child[key] = parent[key];\n  }\n\n  inheritsComments(child, parent);\n\n  return child;\n}\n","import { memberExpression } from \"../builders/generated/index.ts\";\nimport { isSuper } from \"../index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Prepend a node to a member expression.\n */\nexport default function prependToMemberExpression<\n  T extends Pick<t.MemberExpression, \"object\" | \"property\">,\n>(member: T, prepend: t.MemberExpression[\"object\"]): T {\n  if (isSuper(member.object)) {\n    throw new Error(\n      \"Cannot prepend node to super property access (`super.foo`).\",\n    );\n  }\n  member.object = memberExpression(prepend, member.object);\n\n  return member;\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * For the given node, generate a map from assignment id names to the identifier node.\n * Unlike getBindingIdentifiers, this function does not handle declarations and imports.\n * @param node the assignment expression or forXstatement\n * @returns an object map\n * @see getBindingIdentifiers\n */\nexport default function getAssignmentIdentifiers(\n  node: t.Node | t.Node[],\n): Record<string, t.Identifier> {\n  // null represents holes in an array pattern\n  const search: (t.Node | null)[] = [].concat(node);\n  const ids = Object.create(null);\n\n  while (search.length) {\n    const id = search.pop();\n    if (!id) continue;\n\n    switch (id.type) {\n      case \"ArrayPattern\":\n        search.push(...id.elements);\n        break;\n\n      case \"AssignmentExpression\":\n      case \"AssignmentPattern\":\n      case \"ForInStatement\":\n      case \"ForOfStatement\":\n        search.push(id.left);\n        break;\n\n      case \"ObjectPattern\":\n        search.push(...id.properties);\n        break;\n\n      case \"ObjectProperty\":\n        search.push(id.value);\n        break;\n\n      case \"RestElement\":\n      case \"UpdateExpression\":\n        search.push(id.argument);\n        break;\n\n      case \"UnaryExpression\":\n        if (id.operator === \"delete\") {\n          search.push(id.argument);\n        }\n        break;\n\n      case \"Identifier\":\n        ids[id.name] = id;\n        break;\n\n      default:\n        break;\n    }\n  }\n\n  return ids;\n}\n","import {\n  isExportDeclaration,\n  isIdentifier,\n  isClassExpression,\n  isDeclaration,\n  isFunctionDeclaration,\n  isFunctionExpression,\n  isExportAllDeclaration,\n  isAssignmentExpression,\n  isUnaryExpression,\n  isUpdateExpression,\n} from \"../validators/generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport { getBindingIdentifiers as default };\n\nfunction getBindingIdentifiers(\n  node: t.Node,\n  duplicates: true,\n  outerOnly?: boolean,\n  newBindingsOnly?: boolean,\n): Record<string, Array<t.Identifier>>;\n\nfunction getBindingIdentifiers(\n  node: t.Node,\n  duplicates?: false,\n  outerOnly?: boolean,\n  newBindingsOnly?: boolean,\n): Record<string, t.Identifier>;\n\nfunction getBindingIdentifiers(\n  node: t.Node,\n  duplicates?: boolean,\n  outerOnly?: boolean,\n  newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>>;\n\n/**\n * Return a list of binding identifiers associated with the input `node`.\n */\nfunction getBindingIdentifiers(\n  node: t.Node,\n  duplicates?: boolean,\n  outerOnly?: boolean,\n  newBindingsOnly?: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>> {\n  const search: t.Node[] = [].concat(node);\n  const ids = Object.create(null);\n\n  while (search.length) {\n    const id = search.shift();\n    if (!id) continue;\n\n    if (\n      newBindingsOnly &&\n      // These nodes do not introduce _new_ bindings, but they are included\n      // in getBindingIdentifiers.keys for backwards compatibility.\n      // TODO(@nicolo-ribaudo): Check if we can remove them from .keys in a\n      // backward-compatible way, and if not what we need to do to remove them\n      // in Babel 8.\n      (isAssignmentExpression(id) ||\n        isUnaryExpression(id) ||\n        isUpdateExpression(id))\n    ) {\n      continue;\n    }\n\n    if (isIdentifier(id)) {\n      if (duplicates) {\n        const _ids = (ids[id.name] = ids[id.name] || []);\n        _ids.push(id);\n      } else {\n        ids[id.name] = id;\n      }\n      continue;\n    }\n\n    if (isExportDeclaration(id) && !isExportAllDeclaration(id)) {\n      if (isDeclaration(id.declaration)) {\n        search.push(id.declaration);\n      }\n      continue;\n    }\n\n    if (outerOnly) {\n      if (isFunctionDeclaration(id)) {\n        search.push(id.id);\n        continue;\n      }\n\n      if (\n        isFunctionExpression(id) ||\n        (process.env.BABEL_8_BREAKING && isClassExpression(id))\n      ) {\n        continue;\n      }\n    }\n\n    const keys = getBindingIdentifiers.keys[id.type];\n\n    if (keys) {\n      for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const nodes =\n          // @ts-expect-error key must present in id\n          id[key] as t.Node[] | t.Node | undefined | null;\n        if (nodes) {\n          if (Array.isArray(nodes)) {\n            search.push(...nodes);\n          } else {\n            search.push(nodes);\n          }\n        }\n      }\n    }\n  }\n  return ids;\n}\n\n/**\n * Mapping of types to their identifier keys.\n */\ntype KeysMap = {\n  [N in t.Node as N[\"type\"]]?: (keyof N)[];\n};\n\nconst keys: KeysMap = {\n  DeclareClass: [\"id\"],\n  DeclareFunction: [\"id\"],\n  DeclareModule: [\"id\"],\n  DeclareVariable: [\"id\"],\n  DeclareInterface: [\"id\"],\n  DeclareTypeAlias: [\"id\"],\n  DeclareOpaqueType: [\"id\"],\n  InterfaceDeclaration: [\"id\"],\n  TypeAlias: [\"id\"],\n  OpaqueType: [\"id\"],\n\n  CatchClause: [\"param\"],\n  LabeledStatement: [\"label\"],\n  UnaryExpression: [\"argument\"],\n  AssignmentExpression: [\"left\"],\n\n  ImportSpecifier: [\"local\"],\n  ImportNamespaceSpecifier: [\"local\"],\n  ImportDefaultSpecifier: [\"local\"],\n  ImportDeclaration: [\"specifiers\"],\n  TSImportEqualsDeclaration: [\"id\"],\n\n  ExportSpecifier: [\"exported\"],\n  ExportNamespaceSpecifier: [\"exported\"],\n  ExportDefaultSpecifier: [\"exported\"],\n\n  FunctionDeclaration: [\"id\", \"params\"],\n  FunctionExpression: [\"id\", \"params\"],\n  ArrowFunctionExpression: [\"params\"],\n  ObjectMethod: [\"params\"],\n  ClassMethod: [\"params\"],\n  ClassPrivateMethod: [\"params\"],\n\n  ForInStatement: [\"left\"],\n  ForOfStatement: [\"left\"],\n\n  ClassDeclaration: [\"id\"],\n  ClassExpression: [\"id\"],\n\n  RestElement: [\"argument\"],\n  UpdateExpression: [\"argument\"],\n\n  ObjectProperty: [\"value\"],\n\n  AssignmentPattern: [\"left\"],\n  ArrayPattern: [\"elements\"],\n  ObjectPattern: [\"properties\"],\n\n  VariableDeclaration: [\"declarations\"],\n  VariableDeclarator: [\"id\"],\n};\n\ngetBindingIdentifiers.keys = keys;\n","import getBindingIdentifiers from \"./getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n\nexport default getOuterBindingIdentifiers as {\n  (node: t.Node, duplicates: true): Record<string, Array<t.Identifier>>;\n  (node: t.Node, duplicates?: false): Record<string, t.Identifier>;\n  (\n    node: t.Node,\n    duplicates?: boolean,\n  ): Record<string, t.Identifier> | Record<string, Array<t.Identifier>>;\n};\n\nfunction getOuterBindingIdentifiers(\n  node: t.Node,\n  duplicates: boolean,\n): Record<string, t.Identifier> | Record<string, Array<t.Identifier>> {\n  return getBindingIdentifiers(node, duplicates, true);\n}\n","import type * as t from \"../index.ts\";\n\nimport {\n  isAssignmentExpression,\n  isClassMethod,\n  isIdentifier,\n  isLiteral,\n  isNullLiteral,\n  isObjectMethod,\n  isObjectProperty,\n  isPrivateName,\n  isRegExpLiteral,\n  isTemplateLiteral,\n  isVariableDeclarator,\n} from \"../validators/generated/index.ts\";\n\nfunction getNameFromLiteralId(id: t.Literal): string {\n  if (isNullLiteral(id)) {\n    return \"null\";\n  }\n\n  if (isRegExpLiteral(id)) {\n    return `/${id.pattern}/${id.flags}`;\n  }\n\n  if (isTemplateLiteral(id)) {\n    return id.quasis.map(quasi => quasi.value.raw).join(\"\");\n  }\n\n  if (id.value !== undefined) {\n    return String(id.value);\n  }\n\n  return null;\n}\n\nfunction getObjectMemberKey(\n  node: t.ObjectProperty | t.ObjectMethod | t.ClassProperty | t.ClassMethod,\n): t.Expression | t.PrivateName {\n  if (!node.computed || isLiteral(node.key)) {\n    return node.key;\n  }\n}\n\ntype GetFunctionNameResult = {\n  name: string;\n  originalNode: t.Node;\n} | null;\n\nexport default function getFunctionName(\n  node: t.ObjectMethod | t.ClassMethod,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n  node: t.Function | t.Class,\n  parent: t.Node,\n): GetFunctionNameResult;\nexport default function getFunctionName(\n  node: t.Function | t.Class,\n  parent?: t.Node,\n): GetFunctionNameResult {\n  if (\"id\" in node && node.id) {\n    return {\n      name: node.id.name,\n      originalNode: node.id,\n    };\n  }\n\n  let prefix = \"\";\n\n  let id;\n  if (isObjectProperty(parent, { value: node })) {\n    // { foo: () => {} };\n    id = getObjectMemberKey(parent);\n  } else if (isObjectMethod(node) || isClassMethod(node)) {\n    // { foo() {} };\n    id = getObjectMemberKey(node);\n    if (node.kind === \"get\") prefix = \"get \";\n    else if (node.kind === \"set\") prefix = \"set \";\n  } else if (isVariableDeclarator(parent, { init: node })) {\n    // let foo = function () {};\n    id = parent.id;\n  } else if (isAssignmentExpression(parent, { operator: \"=\", right: node })) {\n    // foo = function () {};\n    id = parent.left;\n  }\n\n  if (!id) return null;\n\n  const name = isLiteral(id)\n    ? getNameFromLiteralId(id)\n    : isIdentifier(id)\n      ? id.name\n      : isPrivateName(id)\n        ? id.id.name\n        : null;\n  if (name == null) return null;\n\n  return { name: prefix + name, originalNode: id };\n}\n","import { VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type TraversalAncestors = Array<{\n  node: t.Node;\n  key: string;\n  index?: number;\n}>;\n\nexport type TraversalHandler<T> = (\n  this: undefined,\n  node: t.Node,\n  parent: TraversalAncestors,\n  state: T,\n) => void;\n\nexport type TraversalHandlers<T> = {\n  enter?: TraversalHandler<T>;\n  exit?: TraversalHandler<T>;\n};\n\n/**\n * A general AST traversal with both prefix and postfix handlers, and a\n * state object. Exposes ancestry data to each handler so that more complex\n * AST data can be taken into account.\n */\nexport default function traverse<T>(\n  node: t.Node,\n  handlers: TraversalHandler<T> | TraversalHandlers<T>,\n  state?: T,\n): void {\n  if (typeof handlers === \"function\") {\n    handlers = { enter: handlers };\n  }\n\n  const { enter, exit } = handlers;\n\n  traverseSimpleImpl(node, enter, exit, state, []);\n}\n\nfunction traverseSimpleImpl<T>(\n  node: any,\n  enter: Function | undefined,\n  exit: Function | undefined,\n  state: T | undefined,\n  ancestors: TraversalAncestors,\n) {\n  const keys = VISITOR_KEYS[node.type];\n  if (!keys) return;\n\n  if (enter) enter(node, ancestors, state);\n\n  for (const key of keys) {\n    const subNode = node[key];\n\n    if (Array.isArray(subNode)) {\n      for (let i = 0; i < subNode.length; i++) {\n        const child = subNode[i];\n        if (!child) continue;\n\n        ancestors.push({\n          node,\n          key,\n          index: i,\n        });\n\n        traverseSimpleImpl(child, enter, exit, state, ancestors);\n\n        ancestors.pop();\n      }\n    } else if (subNode) {\n      ancestors.push({\n        node,\n        key,\n      });\n\n      traverseSimpleImpl(subNode, enter, exit, state, ancestors);\n\n      ancestors.pop();\n    }\n  }\n\n  if (exit) exit(node, ancestors, state);\n}\n","import getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport type * as t from \"../index.ts\";\n/**\n * Check if the input `node` is a binding identifier.\n */\nexport default function isBinding(\n  node: t.Node,\n  parent: t.Node,\n  grandparent?: t.Node,\n): boolean {\n  if (\n    grandparent &&\n    node.type === \"Identifier\" &&\n    parent.type === \"ObjectProperty\" &&\n    grandparent.type === \"ObjectExpression\"\n  ) {\n    // We need to special-case this, because getBindingIdentifiers\n    // has an ObjectProperty->value entry for destructuring patterns.\n    return false;\n  }\n\n  const keys = getBindingIdentifiers.keys[parent.type];\n  if (keys) {\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const val =\n        // @ts-expect-error key must present in parent\n        parent[key];\n      if (Array.isArray(val)) {\n        if (val.includes(node)) return true;\n      } else {\n        if (val === node) return true;\n      }\n    }\n  }\n\n  return false;\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport { BLOCK_SCOPED_SYMBOL } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a `let` variable declaration.\n */\nexport default function isLet(node: t.Node): boolean {\n  return (\n    isVariableDeclaration(node) &&\n    (node.kind !== \"var\" ||\n      // @ts-expect-error Fixme: document private properties\n      node[BLOCK_SCOPED_SYMBOL])\n  );\n}\n","import {\n  isClassDeclaration,\n  isFunctionDeclaration,\n} from \"./generated/index.ts\";\nimport isLet from \"./isLet.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is block scoped.\n */\nexport default function isBlockScoped(node: t.Node): boolean {\n  return isFunctionDeclaration(node) || isClassDeclaration(node) || isLet(node);\n}\n","import isType from \"./isType.ts\";\nimport { isIdentifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is definitely immutable.\n */\nexport default function isImmutable(node: t.Node): boolean {\n  if (isType(node.type, \"Immutable\")) return true;\n\n  if (isIdentifier(node)) {\n    if (node.name === \"undefined\") {\n      // immutable!\n      return true;\n    } else {\n      // no idea...\n      return false;\n    }\n  }\n\n  return false;\n}\n","import { NODE_FIELDS, VISITOR_KEYS } from \"../definitions/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if two nodes are equivalent\n */\nexport default function isNodesEquivalent<T extends Partial<t.Node>>(\n  a: T,\n  b: any,\n): b is T {\n  if (\n    typeof a !== \"object\" ||\n    typeof b !== \"object\" ||\n    a == null ||\n    b == null\n  ) {\n    return a === b;\n  }\n\n  if (a.type !== b.type) {\n    return false;\n  }\n\n  const fields = Object.keys(NODE_FIELDS[a.type] || a.type);\n  const visitorKeys = VISITOR_KEYS[a.type];\n\n  for (const field of fields) {\n    const val_a =\n      // @ts-expect-error field must present in a\n      a[field];\n    const val_b = b[field];\n    if (typeof val_a !== typeof val_b) {\n      return false;\n    }\n    if (val_a == null && val_b == null) {\n      continue;\n    } else if (val_a == null || val_b == null) {\n      return false;\n    }\n\n    if (Array.isArray(val_a)) {\n      if (!Array.isArray(val_b)) {\n        return false;\n      }\n      if (val_a.length !== val_b.length) {\n        return false;\n      }\n\n      for (let i = 0; i < val_a.length; i++) {\n        if (!isNodesEquivalent(val_a[i], val_b[i])) {\n          return false;\n        }\n      }\n      continue;\n    }\n\n    if (typeof val_a === \"object\" && !visitorKeys?.includes(field)) {\n      for (const key of Object.keys(val_a)) {\n        if (val_a[key] !== val_b[key]) {\n          return false;\n        }\n      }\n      continue;\n    }\n\n    if (!isNodesEquivalent(val_a, val_b)) {\n      return false;\n    }\n  }\n\n  return true;\n}\n","import type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a reference to a bound variable.\n */\nexport default function isReferenced(\n  node: t.Node,\n  parent: t.Node,\n  grandparent?: t.Node,\n): boolean {\n  switch (parent.type) {\n    // yes: PARENT[NODE]\n    // yes: NODE.child\n    // no: parent.NODE\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n      if (parent.property === node) {\n        return !!parent.computed;\n      }\n      return parent.object === node;\n\n    case \"JSXMemberExpression\":\n      return parent.object === node;\n    // no: let NODE = init;\n    // yes: let id = NODE;\n    case \"VariableDeclarator\":\n      return parent.init === node;\n\n    // yes: () => NODE\n    // no: (NODE) => {}\n    case \"ArrowFunctionExpression\":\n      return parent.body === node;\n\n    // no: class { #NODE; }\n    // no: class { get #NODE() {} }\n    // no: class { #NODE() {} }\n    // no: class { fn() { return this.#NODE; } }\n    case \"PrivateName\":\n      return false;\n\n    // no: class { NODE() {} }\n    // yes: class { [NODE]() {} }\n    // no: class { foo(NODE) {} }\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n    case \"ObjectMethod\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return false;\n\n    // yes: { [NODE]: \"\" }\n    // no: { NODE: \"\" }\n    // depends: { NODE }\n    // depends: { key: NODE }\n    case \"ObjectProperty\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      // parent.value === node\n      return !grandparent || grandparent.type !== \"ObjectPattern\";\n    // no: class { NODE = value; }\n    // yes: class { [NODE] = value; }\n    // yes: class { key = NODE; }\n    case \"ClassProperty\":\n    case \"ClassAccessorProperty\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n      return true;\n    case \"ClassPrivateProperty\":\n      return parent.key !== node;\n\n    // no: class NODE {}\n    // yes: class Foo extends NODE {}\n    case \"ClassDeclaration\":\n    case \"ClassExpression\":\n      return parent.superClass === node;\n\n    // yes: left = NODE;\n    // no: NODE = right;\n    case \"AssignmentExpression\":\n      return parent.right === node;\n\n    // no: [NODE = foo] = [];\n    // yes: [foo = NODE] = [];\n    case \"AssignmentPattern\":\n      return parent.right === node;\n\n    // no: NODE: for (;;) {}\n    case \"LabeledStatement\":\n      return false;\n\n    // no: try {} catch (NODE) {}\n    case \"CatchClause\":\n      return false;\n\n    // no: function foo(...NODE) {}\n    case \"RestElement\":\n      return false;\n\n    case \"BreakStatement\":\n    case \"ContinueStatement\":\n      return false;\n\n    // no: function NODE() {}\n    // no: function foo(NODE) {}\n    case \"FunctionDeclaration\":\n    case \"FunctionExpression\":\n      return false;\n\n    // no: export NODE from \"foo\";\n    // no: export * as NODE from \"foo\";\n    case \"ExportNamespaceSpecifier\":\n    case \"ExportDefaultSpecifier\":\n      return false;\n\n    // no: export { foo as NODE };\n    // yes: export { NODE as foo };\n    // no: export { NODE as foo } from \"foo\";\n    case \"ExportSpecifier\":\n      // @ts-expect-error todo(flow->ts): Property 'source' does not exist on type 'AnyTypeAnnotation'.\n      if (grandparent?.source) {\n        return false;\n      }\n      return parent.local === node;\n\n    // no: import NODE from \"foo\";\n    // no: import * as NODE from \"foo\";\n    // no: import { NODE as foo } from \"foo\";\n    // no: import { foo as NODE } from \"foo\";\n    // no: import NODE from \"bar\";\n    case \"ImportDefaultSpecifier\":\n    case \"ImportNamespaceSpecifier\":\n    case \"ImportSpecifier\":\n      return false;\n\n    // no: import \"foo\" assert { NODE: \"json\" }\n    case \"ImportAttribute\":\n      return false;\n\n    // no: <div NODE=\"foo\" />\n    case \"JSXAttribute\":\n      return false;\n\n    // no: [NODE] = [];\n    // no: ({ NODE }) = [];\n    case \"ObjectPattern\":\n    case \"ArrayPattern\":\n      return false;\n\n    // no: new.NODE\n    // no: NODE.target\n    case \"MetaProperty\":\n      return false;\n\n    // yes: type X = { someProperty: NODE }\n    // no: type X = { NODE: OtherType }\n    case \"ObjectTypeProperty\":\n      return parent.key !== node;\n\n    // yes: enum X { Foo = NODE }\n    // no: enum X { NODE }\n    case \"TSEnumMember\":\n      return parent.id !== node;\n\n    // yes: { [NODE]: value }\n    // no: { NODE: value }\n    case \"TSPropertySignature\":\n      if (parent.key === node) {\n        return !!parent.computed;\n      }\n\n      return true;\n  }\n\n  return true;\n}\n","import {\n  isFunction,\n  isCatchClause,\n  isBlockStatement,\n  isScopable,\n  isPattern,\n} from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a scope.\n */\nexport default function isScope(node: t.Node, parent: t.Node): boolean {\n  // If a BlockStatement is an immediate descendent of a Function/CatchClause, it must be in the body.\n  // Hence we skipped the parentKey === \"params\" check\n  if (isBlockStatement(node) && (isFunction(parent) || isCatchClause(parent))) {\n    return false;\n  }\n\n  // If a Pattern is an immediate descendent of a Function/CatchClause, it must be in the params.\n  // Hence we skipped the parentKey === \"params\" check\n  if (isPattern(node) && (isFunction(parent) || isCatchClause(parent))) {\n    return true;\n  }\n\n  return isScopable(node);\n}\n","import { isIdentifier, isImportDefaultSpecifier } from \"./generated/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `specifier` is a `default` import or export.\n */\nexport default function isSpecifierDefault(\n  specifier: t.ModuleSpecifier,\n): boolean {\n  return (\n    isImportDefaultSpecifier(specifier) ||\n    // @ts-expect-error todo(flow->ts): stricter type for specifier\n    isIdentifier(specifier.imported || specifier.exported, {\n      name: \"default\",\n    })\n  );\n}\n","import isValidIdentifier from \"./isValidIdentifier.ts\";\n\nconst RESERVED_WORDS_ES3_ONLY: Set<string> = new Set([\n  \"abstract\",\n  \"boolean\",\n  \"byte\",\n  \"char\",\n  \"double\",\n  \"enum\",\n  \"final\",\n  \"float\",\n  \"goto\",\n  \"implements\",\n  \"int\",\n  \"interface\",\n  \"long\",\n  \"native\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"short\",\n  \"static\",\n  \"synchronized\",\n  \"throws\",\n  \"transient\",\n  \"volatile\",\n]);\n\n/**\n * Check if the input `name` is a valid identifier name according to the ES3 specification.\n *\n * Additional ES3 reserved words are\n */\nexport default function isValidES3Identifier(name: string): boolean {\n  return isValidIdentifier(name) && !RESERVED_WORDS_ES3_ONLY.has(name);\n}\n","import { isVariableDeclaration } from \"./generated/index.ts\";\nimport { BLOCK_SCOPED_SYMBOL } from \"../constants/index.ts\";\nimport type * as t from \"../index.ts\";\n\n/**\n * Check if the input `node` is a variable declaration.\n */\nexport default function isVar(node: t.Node): boolean {\n  return (\n    isVariableDeclaration(node, { kind: \"var\" }) &&\n    !(\n      // @ts-expect-error document private properties\n      node[BLOCK_SCOPED_SYMBOL]\n    )\n  );\n}\n","// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nimport getBindingIdentifiers from \"../retrievers/getBindingIdentifiers.ts\";\nimport {\n  isExpression,\n  isExpressionStatement,\n  isVariableDeclaration,\n  isIfStatement,\n  isBlockStatement,\n  isEmptyStatement,\n} from \"../validators/generated/index.ts\";\nimport {\n  sequenceExpression,\n  assignmentExpression,\n  conditionalExpression,\n} from \"../builders/generated/index.ts\";\nimport { buildUndefinedNode } from \"../builders/productions.ts\";\nimport cloneNode from \"../clone/cloneNode.ts\";\nimport type * as t from \"../index.ts\";\n\nexport type DeclarationInfo = {\n  kind: t.VariableDeclaration[\"kind\"];\n  id: t.Identifier;\n};\n\nexport default function gatherSequenceExpressions(\n  nodes: ReadonlyArray<t.Node>,\n  declars: Array<DeclarationInfo>,\n) {\n  const exprs: t.Expression[] = [];\n  let ensureLastUndefined = true;\n\n  for (const node of nodes) {\n    // if we encounter emptyStatement before a non-emptyStatement\n    // we want to disregard that\n    if (!isEmptyStatement(node)) {\n      ensureLastUndefined = false;\n    }\n\n    if (isExpression(node)) {\n      exprs.push(node);\n    } else if (isExpressionStatement(node)) {\n      exprs.push(node.expression);\n    } else if (isVariableDeclaration(node)) {\n      if (node.kind !== \"var\") return; // bailed\n\n      for (const declar of node.declarations) {\n        const bindings = getBindingIdentifiers(declar);\n        for (const key of Object.keys(bindings)) {\n          declars.push({\n            kind: node.kind,\n            id: cloneNode(bindings[key]),\n          });\n        }\n\n        if (declar.init) {\n          exprs.push(assignmentExpression(\"=\", declar.id, declar.init));\n        }\n      }\n\n      ensureLastUndefined = true;\n    } else if (isIfStatement(node)) {\n      const consequent = node.consequent\n        ? gatherSequenceExpressions([node.consequent], declars)\n        : buildUndefinedNode();\n      const alternate = node.alternate\n        ? gatherSequenceExpressions([node.alternate], declars)\n        : buildUndefinedNode();\n      if (!consequent || !alternate) return; // bailed\n\n      exprs.push(conditionalExpression(node.test, consequent, alternate));\n    } else if (isBlockStatement(node)) {\n      const body = gatherSequenceExpressions(node.body, declars);\n      if (!body) return; // bailed\n\n      exprs.push(body);\n    } else if (isEmptyStatement(node)) {\n      // empty statement so ensure the last item is undefined if we're last\n      // checks if emptyStatement is first\n      if (nodes.indexOf(node) === 0) {\n        ensureLastUndefined = true;\n      }\n    } else {\n      // bailed, we can't turn this statement into an expression\n      return;\n    }\n  }\n\n  if (ensureLastUndefined) {\n    exprs.push(buildUndefinedNode());\n  }\n\n  if (exprs.length === 1) {\n    return exprs[0];\n  } else {\n    return sequenceExpression(exprs);\n  }\n}\n","// TODO(Babel 8) Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nimport gatherSequenceExpressions from \"./gatherSequenceExpressions.ts\";\nimport type * as t from \"../index.ts\";\nimport type { DeclarationInfo } from \"./gatherSequenceExpressions.ts\";\n\n/**\n * Turn an array of statement `nodes` into a `SequenceExpression`.\n *\n * Variable declarations are turned into simple assignments and their\n * declarations hoisted to the top of the current scope.\n *\n * Expression statements are just resolved to their expression.\n */\nexport default function toSequenceExpression(\n  nodes: ReadonlyArray<t.Node>,\n  scope: any,\n): t.SequenceExpression | undefined {\n  if (!nodes?.length) return;\n\n  const declars: DeclarationInfo[] = [];\n  const result = gatherSequenceExpressions(nodes, declars);\n  if (!result) return;\n\n  for (const declar of declars) {\n    scope.push(declar);\n  }\n\n  // @ts-expect-error fixme: gatherSequenceExpressions will return an Expression when there are only one element\n  return result;\n}\n","import isReactComponent from \"./validators/react/isReactComponent.ts\";\nimport isCompatTag from \"./validators/react/isCompatTag.ts\";\nimport buildChildren from \"./builders/react/buildChildren.ts\";\n\n// asserts\nexport { default as assertNode } from \"./asserts/assertNode.ts\";\nexport * from \"./asserts/generated/index.ts\";\n\n// builders\nexport { default as createTypeAnnotationBasedOnTypeof } from \"./builders/flow/createTypeAnnotationBasedOnTypeof.ts\";\n/** @deprecated use createFlowUnionType instead */\nexport { default as createUnionTypeAnnotation } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createFlowUnionType } from \"./builders/flow/createFlowUnionType.ts\";\nexport { default as createTSUnionType } from \"./builders/typescript/createTSUnionType.ts\";\nexport * from \"./builders/productions.ts\";\nexport * from \"./builders/generated/index.ts\"; // includes AST types\n\n// clone\nexport { default as cloneNode } from \"./clone/cloneNode.ts\";\nexport { default as clone } from \"./clone/clone.ts\";\nexport { default as cloneDeep } from \"./clone/cloneDeep.ts\";\nexport { default as cloneDeepWithoutLoc } from \"./clone/cloneDeepWithoutLoc.ts\";\nexport { default as cloneWithoutLoc } from \"./clone/cloneWithoutLoc.ts\";\n\n// comments\nexport { default as addComment } from \"./comments/addComment.ts\";\nexport { default as addComments } from \"./comments/addComments.ts\";\nexport { default as inheritInnerComments } from \"./comments/inheritInnerComments.ts\";\nexport { default as inheritLeadingComments } from \"./comments/inheritLeadingComments.ts\";\nexport { default as inheritsComments } from \"./comments/inheritsComments.ts\";\nexport { default as inheritTrailingComments } from \"./comments/inheritTrailingComments.ts\";\nexport { default as removeComments } from \"./comments/removeComments.ts\";\n\n// constants\nexport * from \"./constants/generated/index.ts\";\nexport * from \"./constants/index.ts\";\n\n// converters\nexport { default as ensureBlock } from \"./converters/ensureBlock.ts\";\nexport { default as toBindingIdentifierName } from \"./converters/toBindingIdentifierName.ts\";\nexport { default as toBlock } from \"./converters/toBlock.ts\";\nexport { default as toComputedKey } from \"./converters/toComputedKey.ts\";\nexport { default as toExpression } from \"./converters/toExpression.ts\";\nexport { default as toIdentifier } from \"./converters/toIdentifier.ts\";\nexport { default as toKeyAlias } from \"./converters/toKeyAlias.ts\";\nexport { default as toStatement } from \"./converters/toStatement.ts\";\nexport { default as valueToNode } from \"./converters/valueToNode.ts\";\n\n// definitions\nexport * from \"./definitions/index.ts\";\n\n// modifications\nexport { default as appendToMemberExpression } from \"./modifications/appendToMemberExpression.ts\";\nexport { default as inherits } from \"./modifications/inherits.ts\";\nexport { default as prependToMemberExpression } from \"./modifications/prependToMemberExpression.ts\";\nexport {\n  default as removeProperties,\n  type Options as RemovePropertiesOptions,\n} from \"./modifications/removeProperties.ts\";\nexport { default as removePropertiesDeep } from \"./modifications/removePropertiesDeep.ts\";\nexport { default as removeTypeDuplicates } from \"./modifications/flow/removeTypeDuplicates.ts\";\n\n// retrievers\nexport { default as getAssignmentIdentifiers } from \"./retrievers/getAssignmentIdentifiers.ts\";\nexport { default as getBindingIdentifiers } from \"./retrievers/getBindingIdentifiers.ts\";\nexport { default as getOuterBindingIdentifiers } from \"./retrievers/getOuterBindingIdentifiers.ts\";\nexport { default as getFunctionName } from \"./retrievers/getFunctionName.ts\";\n\n// traverse\nexport { default as traverse } from \"./traverse/traverse.ts\";\nexport * from \"./traverse/traverse.ts\";\nexport { default as traverseFast } from \"./traverse/traverseFast.ts\";\n\n// utils\nexport { default as shallowEqual } from \"./utils/shallowEqual.ts\";\n\n// validators\nexport { default as is } from \"./validators/is.ts\";\nexport { default as isBinding } from \"./validators/isBinding.ts\";\nexport { default as isBlockScoped } from \"./validators/isBlockScoped.ts\";\nexport { default as isImmutable } from \"./validators/isImmutable.ts\";\nexport { default as isLet } from \"./validators/isLet.ts\";\nexport { default as isNode } from \"./validators/isNode.ts\";\nexport { default as isNodesEquivalent } from \"./validators/isNodesEquivalent.ts\";\nexport { default as isPlaceholderType } from \"./validators/isPlaceholderType.ts\";\nexport { default as isReferenced } from \"./validators/isReferenced.ts\";\nexport { default as isScope } from \"./validators/isScope.ts\";\nexport { default as isSpecifierDefault } from \"./validators/isSpecifierDefault.ts\";\nexport { default as isType } from \"./validators/isType.ts\";\nexport { default as isValidES3Identifier } from \"./validators/isValidES3Identifier.ts\";\nexport { default as isValidIdentifier } from \"./validators/isValidIdentifier.ts\";\nexport { default as isVar } from \"./validators/isVar.ts\";\nexport { default as matchesPattern } from \"./validators/matchesPattern.ts\";\nexport { default as validate } from \"./validators/validate.ts\";\nexport { default as buildMatchMemberExpression } from \"./validators/buildMatchMemberExpression.ts\";\nexport * from \"./validators/generated/index.ts\";\n\n// react\nexport const react = {\n  isReactComponent,\n  isCompatTag,\n  buildChildren,\n};\n\n// this is used by @babel/traverse to warn about deprecated visitors\nexport { default as __internal__deprecationWarning } from \"./utils/deprecationWarning.ts\";\n\nimport toSequenceExpression from \"./converters/toSequenceExpression.ts\" with { if: \"!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE\" };\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.toSequenceExpression = toSequenceExpression;\n}\n\nif (!process.env.BABEL_8_BREAKING && process.env.BABEL_TYPES_8_BREAKING) {\n  console.warn(\n    \"BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!\",\n  );\n}\n","import { assertExpressionStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport type Formatter<T> = {\n  code: (source: string) => string;\n  validate: (ast: t.File) => void;\n  unwrap: (ast: t.File) => T;\n};\n\nfunction makeStatementFormatter<T>(\n  fn: (statements: Array<t.Statement>) => T,\n): Formatter<T> {\n  return {\n    // We need to prepend a \";\" to force statement parsing so that\n    // ExpressionStatement strings won't be parsed as directives.\n    // Alongside that, we also prepend a comment so that when a syntax error\n    // is encountered, the user will be less likely to get confused about\n    // where the random semicolon came from.\n    code: str => `/* @babel/template */;\\n${str}`,\n    validate: () => {},\n    unwrap: (ast: t.File): T => {\n      return fn(ast.program.body.slice(1));\n    },\n  };\n}\n\nexport const smart = makeStatementFormatter(body => {\n  if (body.length > 1) {\n    return body;\n  } else {\n    return body[0];\n  }\n});\n\nexport const statements = makeStatementFormatter(body => body);\n\nexport const statement = makeStatementFormatter(body => {\n  // We do this validation when unwrapping since the replacement process\n  // could have added or removed statements.\n  if (body.length === 0) {\n    throw new Error(\"Found nothing to return.\");\n  }\n  if (body.length > 1) {\n    throw new Error(\"Found multiple statements but wanted one\");\n  }\n\n  return body[0];\n});\n\nexport const expression: Formatter<t.Expression> = {\n  code: str => `(\\n${str}\\n)`,\n  validate: ast => {\n    if (ast.program.body.length > 1) {\n      throw new Error(\"Found multiple statements but wanted one\");\n    }\n    if (expression.unwrap(ast).start === 0) {\n      throw new Error(\"Parse result included parens.\");\n    }\n  },\n  unwrap: ({ program }) => {\n    const [stmt] = program.body;\n    assertExpressionStatement(stmt);\n    return stmt.expression;\n  },\n};\n\nexport const program: Formatter<t.Program> = {\n  code: str => str,\n  validate: () => {},\n  unwrap: ast => ast.program,\n};\n","import type { ParserOptions as ParserOpts } from \"@babel/parser\";\n\nexport type { ParserOpts };\n\n/**\n * These are the options that 'babel-template' actually accepts and typechecks\n * when called. All other options are passed through to the parser.\n */\nexport type PublicOpts = {\n  /**\n   * A set of placeholder names to automatically accept, ignoring the given\n   * pattern entirely.\n   *\n   * This option can be used when using %%foo%% style placeholders.\n   */\n  placeholderWhitelist?: Set<string>;\n  /**\n   * A pattern to search for when looking for Identifier and StringLiteral\n   * nodes that can be replaced.\n   *\n   * 'false' will disable placeholder searching entirely, leaving only the\n   * 'placeholderWhitelist' value to find replacements.\n   *\n   * Defaults to /^[_$A-Z0-9]+$/.\n   *\n   * This option can be used when using %%foo%% style placeholders.\n   */\n  placeholderPattern?: RegExp | false;\n  /**\n   * 'true' to pass through comments from the template into the resulting AST,\n   * or 'false' to automatically discard comments. Defaults to 'false'.\n   */\n  preserveComments?: boolean;\n  /**\n   * 'true' to use %%foo%% style placeholders, 'false' to use legacy placeholders\n   * described by placeholderPattern or placeholderWhitelist.\n   * When it is not set, it behaves as 'true' if there are syntactic placeholders,\n   * otherwise as 'false'.\n   */\n  syntacticPlaceholders?: boolean | null;\n} & ParserOpts;\n\nexport type TemplateOpts = {\n  parser: ParserOpts;\n  placeholderWhitelist?: Set<string>;\n  placeholderPattern?: RegExp | false;\n  preserveComments?: boolean;\n  syntacticPlaceholders?: boolean;\n};\n\nexport function merge(a: TemplateOpts, b: TemplateOpts): TemplateOpts {\n  const {\n    placeholderWhitelist = a.placeholderWhitelist,\n    placeholderPattern = a.placeholderPattern,\n    preserveComments = a.preserveComments,\n    syntacticPlaceholders = a.syntacticPlaceholders,\n  } = b;\n\n  return {\n    parser: {\n      ...a.parser,\n      ...b.parser,\n    },\n    placeholderWhitelist,\n    placeholderPattern,\n    preserveComments,\n    syntacticPlaceholders,\n  };\n}\n\nexport function validate(opts: unknown): TemplateOpts {\n  if (opts != null && typeof opts !== \"object\") {\n    throw new Error(\"Unknown template options.\");\n  }\n\n  const {\n    placeholderWhitelist,\n    placeholderPattern,\n    preserveComments,\n    syntacticPlaceholders,\n    ...parser\n  } = opts || ({} as any);\n\n  if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {\n    throw new Error(\n      \"'.placeholderWhitelist' must be a Set, null, or undefined\",\n    );\n  }\n\n  if (\n    placeholderPattern != null &&\n    !(placeholderPattern instanceof RegExp) &&\n    placeholderPattern !== false\n  ) {\n    throw new Error(\n      \"'.placeholderPattern' must be a RegExp, false, null, or undefined\",\n    );\n  }\n\n  if (preserveComments != null && typeof preserveComments !== \"boolean\") {\n    throw new Error(\n      \"'.preserveComments' must be a boolean, null, or undefined\",\n    );\n  }\n\n  if (\n    syntacticPlaceholders != null &&\n    typeof syntacticPlaceholders !== \"boolean\"\n  ) {\n    throw new Error(\n      \"'.syntacticPlaceholders' must be a boolean, null, or undefined\",\n    );\n  }\n  if (\n    syntacticPlaceholders === true &&\n    (placeholderWhitelist != null || placeholderPattern != null)\n  ) {\n    throw new Error(\n      \"'.placeholderWhitelist' and '.placeholderPattern' aren't compatible\" +\n        \" with '.syntacticPlaceholders: true'\",\n    );\n  }\n\n  return {\n    parser,\n    placeholderWhitelist: placeholderWhitelist || undefined,\n    placeholderPattern:\n      placeholderPattern == null ? undefined : placeholderPattern,\n    preserveComments: preserveComments == null ? undefined : preserveComments,\n    syntacticPlaceholders:\n      syntacticPlaceholders == null ? undefined : syntacticPlaceholders,\n  };\n}\n\nexport type PublicReplacements = { [x: string]: unknown } | Array<unknown>;\nexport type TemplateReplacements = { [x: string]: unknown } | void;\n\nexport function normalizeReplacements(\n  replacements: unknown,\n): TemplateReplacements {\n  if (Array.isArray(replacements)) {\n    return replacements.reduce((acc, replacement, i) => {\n      acc[\"$\" + i] = replacement;\n      return acc;\n    }, {});\n  } else if (typeof replacements === \"object\" || replacements == null) {\n    return (replacements as any) || undefined;\n  }\n\n  throw new Error(\n    \"Template replacements must be an array, object, null, or undefined\",\n  );\n}\n","export type Pos = {\n  start: number;\n};\n\n// These are used when `options.locations` is on, for the\n// `startLoc` and `endLoc` properties.\n\nexport class Position {\n  line: number;\n  column: number;\n  index: number;\n\n  constructor(line: number, col: number, index: number) {\n    this.line = line;\n    this.column = col;\n    this.index = index;\n  }\n}\n\nexport class SourceLocation {\n  start: Position;\n  end: Position;\n  filename: string;\n  identifierName: string | undefined | null;\n\n  constructor(start: Position, end?: Position) {\n    this.start = start;\n    // (may start as null, but initialized later)\n    this.end = end;\n  }\n}\n\n/**\n * creates a new position with a non-zero column offset from the given position.\n * This function should be only be used when we create AST node out of the token\n * boundaries, such as TemplateElement ends before tt.templateNonTail. This\n * function does not skip whitespaces.\n */\nexport function createPositionWithColumnOffset(\n  position: Position,\n  columnOffset: number,\n) {\n  const { line, column, index } = position;\n  return new Position(line, column + columnOffset, index + columnOffset);\n}\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\n\nconst code = \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\nexport default {\n  ImportMetaOutsideModule: {\n    message: `import.meta may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n  ImportOutsideModule: {\n    message: `'import' and 'export' may appear only with 'sourceType: \"module\"'`,\n    code,\n  },\n} satisfies ParseErrorTemplates;\n","const NodeDescriptions = {\n  ArrayPattern: \"array destructuring pattern\",\n  AssignmentExpression: \"assignment expression\",\n  AssignmentPattern: \"assignment expression\",\n  ArrowFunctionExpression: \"arrow function expression\",\n  ConditionalExpression: \"conditional expression\",\n  CatchClause: \"catch clause\",\n  ForOfStatement: \"for-of statement\",\n  ForInStatement: \"for-in statement\",\n  ForStatement: \"for-loop\",\n  FormalParameters: \"function parameter list\",\n  Identifier: \"identifier\",\n  ImportSpecifier: \"import specifier\",\n  ImportDefaultSpecifier: \"import default specifier\",\n  ImportNamespaceSpecifier: \"import namespace specifier\",\n  ObjectPattern: \"object destructuring pattern\",\n  ParenthesizedExpression: \"parenthesized expression\",\n  RestElement: \"rest element\",\n  UpdateExpression: {\n    true: \"prefix operation\",\n    false: \"postfix operation\",\n  },\n  VariableDeclarator: \"variable declaration\",\n  YieldExpression: \"yield expression\",\n};\n\ntype NodeTypesWithDescriptions = keyof Omit<\n  typeof NodeDescriptions,\n  \"UpdateExpression\"\n>;\n\ntype NodeWithDescription =\n  | {\n      type: \"UpdateExpression\";\n      prefix: boolean;\n    }\n  | {\n      type: NodeTypesWithDescriptions;\n    };\n\nconst toNodeDescription = (node: NodeWithDescription) =>\n  node.type === \"UpdateExpression\"\n    ? NodeDescriptions.UpdateExpression[`${node.prefix}`]\n    : NodeDescriptions[node.type];\n\nexport default toNodeDescription;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport type LValAncestor =\n  | { type: \"UpdateExpression\"; prefix: boolean }\n  | {\n      type:\n        | \"ArrayPattern\"\n        | \"AssignmentExpression\"\n        | \"CatchClause\"\n        | \"ForOfStatement\"\n        | \"FormalParameters\"\n        | \"ForInStatement\"\n        | \"ForStatement\"\n        | \"ImportSpecifier\"\n        | \"ImportNamespaceSpecifier\"\n        | \"ImportDefaultSpecifier\"\n        | \"ParenthesizedExpression\"\n        | \"ObjectPattern\"\n        | \"RestElement\"\n        | \"VariableDeclarator\";\n    };\n\nexport default {\n  AccessorIsGenerator: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `A ${kind}ter cannot be a generator.`,\n  ArgumentsInClass:\n    \"'arguments' is only allowed in functions and class methods.\",\n  AsyncFunctionInSingleStatementContext:\n    \"Async functions can only be declared at the top level or inside a block.\",\n  AwaitBindingIdentifier:\n    \"Can not use 'await' as identifier inside an async function.\",\n  AwaitBindingIdentifierInStaticBlock:\n    \"Can not use 'await' as identifier inside a static block.\",\n  AwaitExpressionFormalParameter:\n    \"'await' is not allowed in async function parameters.\",\n  AwaitUsingNotInAsyncContext:\n    \"'await using' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncContext:\n    \"'await' is only allowed within async functions and at the top levels of modules.\",\n  AwaitNotInAsyncFunction: \"'await' is only allowed within async functions.\",\n  BadGetterArity: \"A 'get' accessor must not have any formal parameters.\",\n  BadSetterArity: \"A 'set' accessor must have exactly one formal parameter.\",\n  BadSetterRestParameter:\n    \"A 'set' accessor function argument must not be a rest parameter.\",\n  ConstructorClassField: \"Classes may not have a field named 'constructor'.\",\n  ConstructorClassPrivateField:\n    \"Classes may not have a private field named '#constructor'.\",\n  ConstructorIsAccessor: \"Class constructor may not be an accessor.\",\n  ConstructorIsAsync: \"Constructor can't be an async function.\",\n  ConstructorIsGenerator: \"Constructor can't be a generator.\",\n  DeclarationMissingInitializer: ({\n    kind,\n  }: {\n    kind: \"await using\" | \"const\" | \"destructuring\" | \"using\";\n  }) => `Missing initializer in ${kind} declaration.`,\n  DecoratorArgumentsOutsideParentheses:\n    \"Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.\",\n  DecoratorBeforeExport:\n    \"Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.\",\n  DecoratorsBeforeAfterExport:\n    \"Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.\",\n  DecoratorConstructor:\n    \"Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?\",\n  DecoratorExportClass:\n    \"Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.\",\n  DecoratorSemicolon: \"Decorators must not be followed by a semicolon.\",\n  DecoratorStaticBlock: \"Decorators can't be used with a static block.\",\n  DeferImportRequiresNamespace:\n    'Only `import defer * as x from \"./module\"` is valid.',\n  DeletePrivateField: \"Deleting a private field is not allowed.\",\n  DestructureNamedImport:\n    \"ES2015 named imports do not destructure. Use another statement for destructuring after the import.\",\n  DuplicateConstructor: \"Duplicate constructor in the same class.\",\n  DuplicateDefaultExport: \"Only one default export allowed per module.\",\n  DuplicateExport: ({ exportName }: { exportName: string }) =>\n    `\\`${exportName}\\` has already been exported. Exported identifiers must be unique.`,\n  DuplicateProto: \"Redefinition of __proto__ property.\",\n  DuplicateRegExpFlags: \"Duplicate regular expression flag.\",\n  DynamicImportPhaseRequiresImportExpressions: ({ phase }: { phase: string }) =>\n    `'import.${phase}(...)' can only be parsed when using the 'createImportExpressions' option.`,\n  ElementAfterRest: \"Rest element must be last element.\",\n  EscapedCharNotAnIdentifier: \"Invalid Unicode escape.\",\n  ExportBindingIsString: ({\n    localName,\n    exportName,\n  }: {\n    localName: string;\n    exportName: string;\n  }) =>\n    `A string literal cannot be used as an exported binding without \\`from\\`.\\n- Did you mean \\`export { '${localName}' as '${exportName}' } from 'some-module'\\`?`,\n  ExportDefaultFromAsIdentifier:\n    \"'from' is not allowed as an identifier after 'export default'.\",\n\n  ForInOfLoopInitializer: ({\n    type,\n  }: {\n    type: \"ForInStatement\" | \"ForOfStatement\";\n  }) =>\n    `'${\n      type === \"ForInStatement\" ? \"for-in\" : \"for-of\"\n    }' loop variable declaration may not have an initializer.`,\n  ForInUsing: \"For-in loop may not start with 'using' declaration.\",\n\n  ForOfAsync: \"The left-hand side of a for-of loop may not be 'async'.\",\n  ForOfLet: \"The left-hand side of a for-of loop may not start with 'let'.\",\n  GeneratorInSingleStatementContext:\n    \"Generators can only be declared at the top level or inside a block.\",\n\n  IllegalBreakContinue: ({\n    type,\n  }: {\n    type: \"BreakStatement\" | \"ContinueStatement\";\n  }) => `Unsyntactic ${type === \"BreakStatement\" ? \"break\" : \"continue\"}.`,\n\n  IllegalLanguageModeDirective:\n    \"Illegal 'use strict' directive in function with non-simple parameter list.\",\n  IllegalReturn: \"'return' outside of function.\",\n  ImportAttributesUseAssert:\n    \"The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedImportAssert` parser plugin to suppress this error.\",\n  ImportBindingIsString: ({ importName }: { importName: string }) =>\n    `A string literal cannot be used as an imported binding.\\n- Did you mean \\`import { \"${importName}\" as foo }\\`?`,\n  ImportCallArity: `\\`import()\\` requires exactly one or two arguments.`,\n  ImportCallNotNewExpression: \"Cannot use new with import(...).\",\n  ImportCallSpreadArgument: \"`...` is not allowed in `import()`.\",\n  ImportJSONBindingNotDefault:\n    \"A JSON module can only be imported with `default`.\",\n  ImportReflectionHasAssertion: \"`import module x` cannot have assertions.\",\n  ImportReflectionNotBinding:\n    'Only `import module x from \"./module\"` is valid.',\n  IncompatibleRegExpUVFlags:\n    \"The 'u' and 'v' regular expression flags cannot be enabled at the same time.\",\n  InvalidBigIntLiteral: \"Invalid BigIntLiteral.\",\n  InvalidCodePoint: \"Code point out of bounds.\",\n  InvalidCoverInitializedName: \"Invalid shorthand property initializer.\",\n  InvalidDecimal: \"Invalid decimal.\",\n  InvalidDigit: ({ radix }: { radix: number }) =>\n    `Expected number in radix ${radix}.`,\n  InvalidEscapeSequence: \"Bad character escape sequence.\",\n  InvalidEscapeSequenceTemplate: \"Invalid escape sequence in template.\",\n  InvalidEscapedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Escape sequence in keyword ${reservedWord}.`,\n  InvalidIdentifier: ({ identifierName }: { identifierName: string }) =>\n    `Invalid identifier ${identifierName}.`,\n  InvalidLhs: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsBinding: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Binding invalid left-hand side in ${toNodeDescription(ancestor)}.`,\n  InvalidLhsOptionalChaining: ({ ancestor }: { ancestor: LValAncestor }) =>\n    `Invalid optional chaining in the left-hand side of ${toNodeDescription(\n      ancestor,\n    )}.`,\n  InvalidNumber: \"Invalid number.\",\n  InvalidOrMissingExponent:\n    \"Floating-point numbers require a valid exponent after the 'e'.\",\n  InvalidOrUnexpectedToken: ({ unexpected }: { unexpected: string }) =>\n    `Unexpected character '${unexpected}'.`,\n  InvalidParenthesizedAssignment: \"Invalid parenthesized assignment pattern.\",\n  InvalidPrivateFieldResolution: ({\n    identifierName,\n  }: {\n    identifierName: string;\n  }) => `Private name #${identifierName} is not defined.`,\n  InvalidPropertyBindingPattern: \"Binding member expression.\",\n  InvalidRecordProperty:\n    \"Only properties and spread elements are allowed in record definitions.\",\n  InvalidRestAssignmentPattern: \"Invalid rest operator's argument.\",\n  LabelRedeclaration: ({ labelName }: { labelName: string }) =>\n    `Label '${labelName}' is already declared.`,\n  LetInLexicalBinding: \"'let' is disallowed as a lexically bound name.\",\n  LineTerminatorBeforeArrow: \"No line break is allowed before '=>'.\",\n  MalformedRegExpFlags: \"Invalid regular expression flag.\",\n  MissingClassName: \"A class name is required.\",\n  MissingEqInAssignment:\n    \"Only '=' operator can be used for specifying default value.\",\n  MissingSemicolon: \"Missing semicolon.\",\n  MissingPlugin: ({ missingPlugin }: { missingPlugin: [string] }) =>\n    `This experimental syntax requires enabling the parser plugin: ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  // FIXME: Would be nice to make this \"missingPlugins\" instead.\n  // Also, seems like we can drop the \"(s)\" from the message and just make it \"s\".\n  MissingOneOfPlugins: ({ missingPlugin }: { missingPlugin: string[] }) =>\n    `This experimental syntax requires enabling one of the following parser plugin(s): ${missingPlugin\n      .map(name => JSON.stringify(name))\n      .join(\", \")}.`,\n  MissingUnicodeEscape: \"Expecting Unicode escape sequence \\\\uXXXX.\",\n  MixingCoalesceWithLogical:\n    \"Nullish coalescing operator(??) requires parens when mixing with logical operators.\",\n  ModuleAttributeDifferentFromType:\n    \"The only accepted module attribute is `type`.\",\n  ModuleAttributeInvalidValue:\n    \"Only string literals are allowed as module attribute values.\",\n  ModuleAttributesWithDuplicateKeys: ({ key }: { key: string }) =>\n    `Duplicate key \"${key}\" is not allowed in module attributes.`,\n  ModuleExportNameHasLoneSurrogate: ({\n    surrogateCharCode,\n  }: {\n    surrogateCharCode: number;\n  }) =>\n    `An export name cannot include a lone surrogate, found '\\\\u${surrogateCharCode.toString(\n      16,\n    )}'.`,\n  ModuleExportUndefined: ({ localName }: { localName: string }) =>\n    `Export '${localName}' is not defined.`,\n  MultipleDefaultsInSwitch: \"Multiple default clauses.\",\n  NewlineAfterThrow: \"Illegal newline after throw.\",\n  NoCatchOrFinally: \"Missing catch or finally clause.\",\n  NumberIdentifier: \"Identifier directly after number.\",\n  NumericSeparatorInEscapeSequence:\n    \"Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.\",\n  ObsoleteAwaitStar:\n    \"'await*' has been removed from the async functions proposal. Use Promise.all() instead.\",\n  OptionalChainingNoNew:\n    \"Constructors in/after an Optional Chain are not allowed.\",\n  OptionalChainingNoTemplate:\n    \"Tagged Template Literals are not allowed in optionalChain.\",\n  OverrideOnConstructor:\n    \"'override' modifier cannot appear on a constructor declaration.\",\n  ParamDupe: \"Argument name clash.\",\n  PatternHasAccessor: \"Object pattern can't contain getter or setter.\",\n  PatternHasMethod: \"Object pattern can't contain methods.\",\n  PrivateInExpectedIn: ({ identifierName }: { identifierName: string }) =>\n    `Private names are only allowed in property accesses (\\`obj.#${identifierName}\\`) or in \\`in\\` expressions (\\`#${identifierName} in obj\\`).`,\n  PrivateNameRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Duplicate private name #${identifierName}.`,\n  RecordExpressionBarIncorrectEndSyntaxType:\n    \"Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionBarIncorrectStartSyntaxType:\n    \"Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  RecordExpressionHashIncorrectStartSyntaxType:\n    \"Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  RecordNoProto: \"'__proto__' is not allowed in Record expressions.\",\n  RestTrailingComma: \"Unexpected trailing comma after rest element.\",\n  SloppyFunction:\n    \"In non-strict mode code, functions can only be declared at top level or inside a block.\",\n  SloppyFunctionAnnexB:\n    \"In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.\",\n  SourcePhaseImportRequiresDefault:\n    'Only `import source x from \"./module\"` is valid.',\n  StaticPrototype: \"Classes may not have static property named prototype.\",\n  SuperNotAllowed:\n    \"`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?\",\n  SuperPrivateField: \"Private fields can't be accessed on super.\",\n  TrailingDecorator: \"Decorators must be attached to a class element.\",\n  TupleExpressionBarIncorrectEndSyntaxType:\n    \"Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionBarIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.\",\n  TupleExpressionHashIncorrectStartSyntaxType:\n    \"Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.\",\n  UnexpectedArgumentPlaceholder: \"Unexpected argument placeholder.\",\n  UnexpectedAwaitAfterPipelineBody:\n    'Unexpected \"await\" after pipeline body; await must have parentheses in minimal proposal.',\n  UnexpectedDigitAfterHash: \"Unexpected digit after hash token.\",\n  UnexpectedImportExport:\n    \"'import' and 'export' may only appear at the top level.\",\n  UnexpectedKeyword: ({ keyword }: { keyword: string }) =>\n    `Unexpected keyword '${keyword}'.`,\n  UnexpectedLeadingDecorator:\n    \"Leading decorators must be attached to a class declaration.\",\n  UnexpectedLexicalDeclaration:\n    \"Lexical declaration cannot appear in a single-statement context.\",\n  UnexpectedNewTarget:\n    \"`new.target` can only be used in functions or class properties.\",\n  UnexpectedNumericSeparator:\n    \"A numeric separator is only allowed between two digits.\",\n  UnexpectedPrivateField: \"Unexpected private name.\",\n  UnexpectedReservedWord: ({ reservedWord }: { reservedWord: string }) =>\n    `Unexpected reserved word '${reservedWord}'.`,\n  UnexpectedSuper: \"'super' is only allowed in object methods and classes.\",\n  UnexpectedToken: ({\n    expected,\n    unexpected,\n  }: {\n    expected?: string | null;\n    unexpected?: string | null;\n  }) =>\n    `Unexpected token${unexpected ? ` '${unexpected}'.` : \"\"}${\n      expected ? `, expected \"${expected}\"` : \"\"\n    }`,\n  UnexpectedTokenUnaryExponentiation:\n    \"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.\",\n  UnexpectedUsingDeclaration:\n    \"Using declaration cannot appear in the top level when source type is `script`.\",\n  UnsupportedBind: \"Binding should be performed on object property.\",\n  UnsupportedDecoratorExport:\n    \"A decorated export must export a class declaration.\",\n  UnsupportedDefaultExport:\n    \"Only expressions, functions or classes are allowed as the `default` export.\",\n  UnsupportedImport:\n    \"`import` can only be used in `import()` or `import.meta`.\",\n  UnsupportedMetaProperty: ({\n    target,\n    onlyValidPropertyName,\n  }: {\n    target: string;\n    onlyValidPropertyName: string;\n  }) =>\n    `The only valid meta property for ${target} is ${target}.${onlyValidPropertyName}.`,\n  UnsupportedParameterDecorator:\n    \"Decorators cannot be used to decorate parameters.\",\n  UnsupportedPropertyDecorator:\n    \"Decorators cannot be used to decorate object literal properties.\",\n  UnsupportedSuper:\n    \"'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).\",\n  UnterminatedComment: \"Unterminated comment.\",\n  UnterminatedRegExp: \"Unterminated regular expression.\",\n  UnterminatedString: \"Unterminated string constant.\",\n  UnterminatedTemplate: \"Unterminated template.\",\n  UsingDeclarationExport: \"Using declaration cannot be exported.\",\n  UsingDeclarationHasBindingPattern:\n    \"Using declaration cannot have destructuring patterns.\",\n  VarRedeclaration: ({ identifierName }: { identifierName: string }) =>\n    `Identifier '${identifierName}' has already been declared.`,\n  YieldBindingIdentifier:\n    \"Can not use 'yield' as identifier inside a generator.\",\n  YieldInParameter: \"Yield expression is not allowed in formal parameters.\",\n  ZeroDigitNumericSeparator:\n    \"Numeric separator can not be used after leading 0.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error\";\n\nexport default {\n  StrictDelete: \"Deleting local variable in strict mode.\",\n\n  // `referenceName` is the StringValue[1] of an IdentifierReference[2], which\n  // is represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-IdentifierReference\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArguments: ({ referenceName }: { referenceName: string }) =>\n    `Assigning to '${referenceName}' in strict mode.`,\n\n  // `bindingName` is the StringValue[1] of a BindingIdentifier[2], which is\n  // represented as just an `Identifier`[3] in the Babel AST.\n  // 1. https://tc39.es/ecma262/#sec-static-semantics-stringvalue\n  // 2. https://tc39.es/ecma262/#prod-BindingIdentifier\n  // 3. https://github.com/babel/babel/blob/main/packages/babel-parser/ast/spec.md#identifier\n  StrictEvalArgumentsBinding: ({ bindingName }: { bindingName: string }) =>\n    `Binding '${bindingName}' in strict mode.`,\n\n  StrictFunction:\n    \"In strict mode code, functions can only be declared at top level or inside a block.\",\n\n  StrictNumericEscape: \"The only valid numeric escape in strict mode is '\\\\0'.\",\n\n  StrictOctalLiteral: \"Legacy octal literals are not allowed in strict mode.\",\n\n  StrictWith: \"'with' in strict mode.\",\n} satisfies ParseErrorTemplates;\n","import type { ParseErrorTemplates } from \"../parse-error.ts\";\nimport toNodeDescription from \"./to-node-description.ts\";\n\nexport const UnparenthesizedPipeBodyDescriptions = new Set([\n  \"ArrowFunctionExpression\",\n  \"AssignmentExpression\",\n  \"ConditionalExpression\",\n  \"YieldExpression\",\n] as const);\n\ntype GetSetMemberType<T extends Set<any>> =\n  T extends Set<infer M> ? M : unknown;\n\nexport type UnparenthesizedPipeBodyTypes = GetSetMemberType<\n  typeof UnparenthesizedPipeBodyDescriptions\n>;\n\nexport default {\n  // This error is only used by the smart-mix proposal\n  PipeBodyIsTighter:\n    \"Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.\",\n  PipeTopicRequiresHackPipes: process.env.BABEL_8_BREAKING\n    ? 'Topic references are only supported when using the `\"proposal\": \"hack\"` version of the pipeline proposal.'\n    : 'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n  PipeTopicUnbound:\n    \"Topic reference is unbound; it must be inside a pipe body.\",\n  PipeTopicUnconfiguredToken: ({ token }: { token: string }) =>\n    `Invalid topic token ${token}. In order to use ${token} as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"${token}\" }.`,\n  PipeTopicUnused:\n    \"Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.\",\n  PipeUnparenthesizedBody: ({ type }: { type: UnparenthesizedPipeBodyTypes }) =>\n    `Hack-style pipe body cannot be an unparenthesized ${toNodeDescription({\n      type,\n    })}; please wrap it in parentheses.`,\n\n  ...(process.env.BABEL_8_BREAKING\n    ? {}\n    : {\n        // Messages whose codes start with “Pipeline” or “PrimaryTopic”\n        // are retained for backwards compatibility\n        // with the deprecated smart-mix pipe operator proposal plugin.\n        // They are subject to removal in a future major version.\n        PipelineBodyNoArrow:\n          'Unexpected arrow \"=>\" after pipeline body; arrow function in pipeline body must be parenthesized.',\n        PipelineBodySequenceExpression:\n          \"Pipeline body may not be a comma-separated sequence expression.\",\n        PipelineHeadSequenceExpression:\n          \"Pipeline head should not be a comma-separated sequence expression.\",\n        PipelineTopicUnused:\n          \"Pipeline is in topic style but does not use topic reference.\",\n        PrimaryTopicNotAllowed:\n          \"Topic reference was used in a lexical context without topic binding.\",\n        PrimaryTopicRequiresSmartPipeline:\n          'Topic reference is used, but the pipelineOperator plugin was not passed a \"proposal\": \"hack\" or \"smart\" option.',\n      }),\n} satisfies ParseErrorTemplates;\n","import { Position } from \"./util/location.ts\";\n\ntype SyntaxPlugin =\n  | \"flow\"\n  | \"typescript\"\n  | \"jsx\"\n  | \"pipelineOperator\"\n  | \"placeholders\";\n\ntype ParseErrorCode =\n  | \"BABEL_PARSER_SYNTAX_ERROR\"\n  | \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\";\n\n// Babel uses \"normal\" SyntaxErrors for it's errors, but adds some extra\n// functionality. This functionality is defined in the\n// `ParseErrorSpecification` interface below. We may choose to change to someday\n// give our errors their own full-blown class, but until then this allow us to\n// keep all the desirable properties of SyntaxErrors (like their name in stack\n// traces, etc.), and also allows us to punt on any publicly facing\n// class-hierarchy decisions until Babel 8.\ninterface ParseErrorSpecification<ErrorDetails> {\n  // Look, these *could* be readonly, but then Flow complains when we initially\n  // set them. We could do a whole dance and make a special interface that's not\n  // readonly for when we create the error, then cast it to the readonly\n  // interface for public use, but the previous implementation didn't have them\n  // as readonly, so let's just not worry about it for now.\n  code: ParseErrorCode;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  missingPlugin?: string | string[];\n  loc: Position;\n  details: ErrorDetails;\n\n  // We should consider removing this as it now just contains the same\n  // information as `loc.index`.\n  pos: number;\n}\n\nexport type ParseError<ErrorDetails> = SyntaxError &\n  ParseErrorSpecification<ErrorDetails>;\n\n// By `ParseErrorConstructor`, we mean something like the new-less style\n// `ErrorConstructor`[1], since `ParseError`'s are not themselves actually\n// separate classes from `SyntaxError`'s.\n//\n// 1. https://github.com/microsoft/TypeScript/blob/v4.5.5/lib/lib.es5.d.ts#L1027\nexport type ParseErrorConstructor<ErrorDetails> = (\n  loc: Position,\n  details: ErrorDetails,\n) => ParseError<ErrorDetails>;\n\ntype ToMessage<ErrorDetails> = (self: ErrorDetails) => string;\n\ntype ParseErrorCredentials<ErrorDetails> = {\n  code: string;\n  reasonCode: string;\n  syntaxPlugin?: SyntaxPlugin;\n  toMessage: ToMessage<ErrorDetails>;\n};\n\nfunction defineHidden(obj: object, key: string, value: unknown) {\n  Object.defineProperty(obj, key, {\n    enumerable: false,\n    configurable: true,\n    value,\n  });\n}\n\nfunction toParseErrorConstructor<ErrorDetails extends object>({\n  toMessage,\n  code,\n  reasonCode,\n  syntaxPlugin,\n}: ParseErrorCredentials<ErrorDetails>): ParseErrorConstructor<ErrorDetails> {\n  const hasMissingPlugin =\n    reasonCode === \"MissingPlugin\" || reasonCode === \"MissingOneOfPlugins\";\n\n  if (!process.env.BABEL_8_BREAKING) {\n    const oldReasonCodes: Record<string, string> = {\n      AccessorCannotDeclareThisParameter: \"AccesorCannotDeclareThisParameter\",\n      AccessorCannotHaveTypeParameters: \"AccesorCannotHaveTypeParameters\",\n      ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n        \"ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference\",\n      SetAccessorCannotHaveOptionalParameter:\n        \"SetAccesorCannotHaveOptionalParameter\",\n      SetAccessorCannotHaveRestParameter: \"SetAccesorCannotHaveRestParameter\",\n      SetAccessorCannotHaveReturnType: \"SetAccesorCannotHaveReturnType\",\n    };\n    if (oldReasonCodes[reasonCode]) {\n      reasonCode = oldReasonCodes[reasonCode];\n    }\n  }\n\n  return function constructor(loc: Position, details: ErrorDetails) {\n    const error: ParseError<ErrorDetails> = new SyntaxError() as any;\n\n    error.code = code as ParseErrorCode;\n    error.reasonCode = reasonCode;\n    error.loc = loc;\n    error.pos = loc.index;\n\n    error.syntaxPlugin = syntaxPlugin;\n    if (hasMissingPlugin) {\n      error.missingPlugin = (details as any).missingPlugin;\n    }\n\n    type Overrides = {\n      loc?: Position;\n      details?: ErrorDetails;\n    };\n    defineHidden(error, \"clone\", function clone(overrides: Overrides = {}) {\n      const { line, column, index } = overrides.loc ?? loc;\n      return constructor(new Position(line, column, index), {\n        ...details,\n        ...overrides.details,\n      });\n    });\n\n    defineHidden(error, \"details\", details);\n\n    Object.defineProperty(error, \"message\", {\n      configurable: true,\n      get(this: ParseError<ErrorDetails>): string {\n        const message = `${toMessage(details)} (${loc.line}:${loc.column})`;\n        this.message = message;\n        return message;\n      },\n      set(value: string) {\n        Object.defineProperty(this, \"message\", { value, writable: true });\n      },\n    });\n\n    return error;\n  };\n}\n\ntype ParseErrorTemplate =\n  | string\n  | ToMessage<any>\n  | { message: string | ToMessage<any>; code?: ParseErrorCode };\n\nexport type ParseErrorTemplates = { [reasonCode: string]: ParseErrorTemplate };\n\n// This is the templated form of `ParseErrorEnum`.\n//\n// Note: We could factor out the return type calculation into something like\n// `ParseErrorConstructor<T extends ParseErrorTemplates>`, and then we could\n// reuse it in the non-templated form of `ParseErrorEnum`, but TypeScript\n// doesn't seem to drill down that far when showing you the computed type of\n// an object in an editor, so we'll leave it inlined for now.\nexport function ParseErrorEnum(a: TemplateStringsArray): <\n  T extends ParseErrorTemplates,\n>(\n  parseErrorTemplates: T,\n) => {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\nexport function ParseErrorEnum<T extends ParseErrorTemplates>(\n  parseErrorTemplates: T,\n  syntaxPlugin?: SyntaxPlugin,\n): {\n  [K in keyof T]: ParseErrorConstructor<\n    T[K] extends { message: string | ToMessage<any> }\n      ? T[K][\"message\"] extends ToMessage<any>\n        ? Parameters<T[K][\"message\"]>[0]\n        : object\n      : T[K] extends ToMessage<any>\n        ? Parameters<T[K]>[0]\n        : object\n  >;\n};\n\n// You call `ParseErrorEnum` with a mapping from `ReasonCode`'s to either:\n//\n// 1. a static error message,\n// 2. `toMessage` functions that define additional necessary `details` needed by\n//    the `ParseError`, or\n// 3. Objects that contain a `message` of one of the above and overridden `code`\n//    and/or `reasonCode`:\n//\n// ParseErrorEnum `optionalSyntaxPlugin` ({\n//   ErrorWithStaticMessage: \"message\",\n//   ErrorWithDynamicMessage: ({ type } : { type: string }) => `${type}`),\n//   ErrorWithOverriddenCodeAndOrReasonCode: {\n//     message: ({ type }: { type: string }) => `${type}`),\n//     code: \"AN_ERROR_CODE\",\n//     ...(BABEL_8_BREAKING ? { } : { reasonCode: \"CustomErrorReasonCode\" })\n//   }\n// });\n//\nexport function ParseErrorEnum(\n  argument: TemplateStringsArray | ParseErrorTemplates,\n  syntaxPlugin?: SyntaxPlugin,\n) {\n  // If the first parameter is an array, that means we were called with a tagged\n  // template literal. Extract the syntaxPlugin from this, and call again in\n  // the \"normalized\" form.\n  if (Array.isArray(argument)) {\n    return (parseErrorTemplates: ParseErrorTemplates) =>\n      ParseErrorEnum(parseErrorTemplates, argument[0]);\n  }\n\n  const ParseErrorConstructors = {} as Record<\n    string,\n    ParseErrorConstructor<unknown>\n  >;\n\n  for (const reasonCode of Object.keys(argument)) {\n    const template = (argument as ParseErrorTemplates)[reasonCode];\n    const { message, ...rest } =\n      typeof template === \"string\"\n        ? { message: () => template }\n        : typeof template === \"function\"\n          ? { message: template }\n          : template;\n    const toMessage = typeof message === \"string\" ? () => message : message;\n\n    ParseErrorConstructors[reasonCode] = toParseErrorConstructor({\n      code: \"BABEL_PARSER_SYNTAX_ERROR\",\n      reasonCode,\n      toMessage,\n      ...(syntaxPlugin ? { syntaxPlugin } : {}),\n      ...rest,\n    });\n  }\n\n  return ParseErrorConstructors;\n}\n\nimport ModuleErrors from \"./parse-error/module-errors.ts\";\nimport StandardErrors from \"./parse-error/standard-errors.ts\";\nimport StrictModeErrors from \"./parse-error/strict-mode-errors.ts\";\nimport PipelineOperatorErrors from \"./parse-error/pipeline-operator-errors.ts\";\n\nexport const Errors = {\n  ...ParseErrorEnum(ModuleErrors),\n  ...ParseErrorEnum(StandardErrors),\n  ...ParseErrorEnum(StrictModeErrors),\n  ...ParseErrorEnum`pipelineOperator`(PipelineOperatorErrors),\n};\n\nexport type { LValAncestor } from \"./parse-error/standard-errors.ts\";\n","import type { Plugin } from \"./plugin-utils.ts\";\n\n// A second optional argument can be given to further configure\n// the parser process. These options are recognized:\n\nexport type SourceType = \"script\" | \"module\" | \"unambiguous\";\n\nexport interface Options {\n  /**\n   * By default, import and export declarations can only appear at a program's top level.\n   * Setting this option to true allows them anywhere where a statement is allowed.\n   */\n  allowImportExportEverywhere?: boolean;\n\n  /**\n   * By default, await use is not allowed outside of an async function.\n   * Set this to true to accept such code.\n   */\n  allowAwaitOutsideFunction?: boolean;\n\n  /**\n   * By default, a return statement at the top level raises an error.\n   * Set this to true to accept such code.\n   */\n  allowReturnOutsideFunction?: boolean;\n\n  /**\n   * By default, new.target use is not allowed outside of a function or class.\n   * Set this to true to accept such code.\n   */\n  allowNewTargetOutsideFunction?: boolean;\n\n  allowSuperOutsideMethod?: boolean;\n\n  /**\n   * By default, exported identifiers must refer to a declared variable.\n   * Set this to true to allow export statements to reference undeclared variables.\n   */\n  allowUndeclaredExports?: boolean;\n\n  /**\n   * By default, Babel parser JavaScript code according to Annex B syntax.\n   * Set this to `false` to disable such behavior.\n   */\n  annexB?: boolean;\n\n  /**\n   * By default, Babel attaches comments to adjacent AST nodes.\n   * When this option is set to false, comments are not attached.\n   * It can provide up to 30% performance improvement when the input code has many comments.\n   * @babel/eslint-parser will set it for you.\n   * It is not recommended to use attachComment: false with Babel transform,\n   * as doing so removes all the comments in output code, and renders annotations such as\n   * /* istanbul ignore next *\\/ nonfunctional.\n   */\n  attachComment?: boolean;\n\n  /**\n   * By default, Babel always throws an error when it finds some invalid code.\n   * When this option is set to true, it will store the parsing error and\n   * try to continue parsing the invalid input file.\n   */\n  errorRecovery?: boolean;\n\n  /**\n   * Indicate the mode the code should be parsed in.\n   * Can be one of \"script\", \"module\", or \"unambiguous\". Defaults to \"script\".\n   * \"unambiguous\" will make @babel/parser attempt to guess, based on the presence\n   * of ES6 import or export statements.\n   * Files with ES6 imports and exports are considered \"module\" and are otherwise \"script\".\n   */\n  sourceType?: \"script\" | \"module\" | \"unambiguous\";\n\n  /**\n   * Correlate output AST nodes with their source filename.\n   * Useful when generating code and source maps from the ASTs of multiple input files.\n   */\n  sourceFilename?: string;\n\n  /**\n   * By default, all source indexes start from 0.\n   * You can provide a start index to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startIndex?: number;\n\n  /**\n   * By default, the first line of code parsed is treated as line 1.\n   * You can provide a line number to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startLine?: number;\n\n  /**\n   * By default, the parsed code is treated as if it starts from line 1, column 0.\n   * You can provide a column number to alternatively start with.\n   * Useful for integration with other source tools.\n   */\n  startColumn?: number;\n\n  /**\n   * Array containing the plugins that you want to enable.\n   */\n  plugins?: Plugin[];\n\n  /**\n   * Should the parser work in strict mode.\n   * Defaults to true if sourceType === 'module'. Otherwise, false.\n   */\n  strictMode?: boolean;\n\n  /**\n   * Adds a ranges property to each node: [node.start, node.end]\n   */\n  ranges?: boolean;\n\n  /**\n   * Adds all parsed tokens to a tokens property on the File node.\n   */\n  tokens?: boolean;\n\n  /**\n   * By default, the parser adds information about parentheses by setting\n   * `extra.parenthesized` to `true` as needed.\n   * When this option is `true` the parser creates `ParenthesizedExpression`\n   * AST nodes instead of using the `extra` property.\n   */\n  createParenthesizedExpressions?: boolean;\n\n  /**\n   * The default is false in Babel 7 and true in Babel 8\n   * Set this to true to parse it as an `ImportExpression` node.\n   * Otherwise `import(foo)` is parsed as `CallExpression(Import, [Identifier(foo)])`.\n   */\n  createImportExpressions?: boolean;\n}\n\nexport const enum OptionFlags {\n  AllowAwaitOutsideFunction = 1 << 0,\n  AllowReturnOutsideFunction = 1 << 1,\n  AllowNewTargetOutsideFunction = 1 << 2,\n  AllowImportExportEverywhere = 1 << 3,\n  AllowSuperOutsideMethod = 1 << 4,\n  AllowUndeclaredExports = 1 << 5,\n  Ranges = 1 << 6,\n  Tokens = 1 << 7,\n  CreateImportExpressions = 1 << 8,\n  CreateParenthesizedExpressions = 1 << 9,\n  ErrorRecovery = 1 << 10,\n  AttachComment = 1 << 11,\n  AnnexB = 1 << 12,\n}\n\ntype OptionsWithDefaults = { [P in keyof Options]-?: Options[P] };\n\nfunction createDefaultOptions(): OptionsWithDefaults {\n  return {\n    // Source type (\"script\" or \"module\") for different semantics\n    sourceType: \"script\",\n    // Source filename.\n    sourceFilename: undefined,\n    // Index (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startIndex: 0,\n    // Column (0-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startColumn: 0,\n    // Line (1-based) from which to start counting source. Useful for\n    // integration with other tools.\n    startLine: 1,\n    // When enabled, await at the top level is not considered an\n    // error.\n    allowAwaitOutsideFunction: false,\n    // When enabled, a return at the top level is not considered an\n    // error.\n    allowReturnOutsideFunction: false,\n    // When enabled, new.target outside a function or class is not\n    // considered an error.\n    allowNewTargetOutsideFunction: false,\n    // When enabled, import/export statements are not constrained to\n    // appearing at the top of the program.\n    allowImportExportEverywhere: false,\n    // TODO\n    allowSuperOutsideMethod: false,\n    // When enabled, export statements can reference undeclared variables.\n    allowUndeclaredExports: false,\n    // An array of plugins to enable\n    plugins: [],\n    // TODO\n    strictMode: 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    // Adds all parsed tokens to a `tokens` property on the `File` node\n    tokens: false,\n    // Whether to create ImportExpression AST nodes (if false\n    // `import(foo)` will be parsed as CallExpression(Import, [Identifier(foo)])\n    createImportExpressions: process.env.BABEL_8_BREAKING ? true : false,\n    // Whether to create ParenthesizedExpression AST nodes (if false\n    // the parser sets extra.parenthesized on the expression nodes instead).\n    createParenthesizedExpressions: false,\n    // When enabled, errors are attached to the AST instead of being directly thrown.\n    // Some errors will still throw, because @babel/parser can't always recover.\n    errorRecovery: false,\n    // When enabled, comments will be attached to adjacent AST nodes as one of\n    // `leadingComments`, `trailingComments` and `innerComments`. The comment attachment\n    // is vital to preserve comments after transform. If you don't print AST back,\n    // consider set this option to `false` for performance\n    attachComment: true,\n    // When enabled, the parser will support Annex B syntax.\n    // https://tc39.es/ecma262/#sec-additional-ecmascript-features-for-web-browsers\n    annexB: true,\n  };\n}\n\n// Interpret and default an options object\n\nexport function getOptions(opts?: Options | null): OptionsWithDefaults {\n  // https://github.com/babel/babel/pull/16918\n  // `options` is accessed frequently, please make sure it is a fast object.\n  // `%ToFastProperties` can make it a fast object, but the performance is the same as the slow object.\n  const options: any = createDefaultOptions();\n\n  if (opts == null) {\n    return options;\n  }\n  if (opts.annexB != null && opts.annexB !== false) {\n    throw new Error(\"The `annexB` option can only be set to `false`.\");\n  }\n\n  for (const key of Object.keys(options) as (keyof Options)[]) {\n    if (opts[key] != null) options[key] = opts[key];\n  }\n\n  if (options.startLine === 1) {\n    if (opts.startIndex == null && options.startColumn > 0) {\n      options.startIndex = options.startColumn;\n    } else if (opts.startColumn == null && options.startIndex > 0) {\n      options.startColumn = options.startIndex;\n    }\n  } else if (opts.startColumn == null || opts.startIndex == null) {\n    if (opts.startIndex != null || process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"With a `startLine > 1` you must also specify `startIndex` and `startColumn`.\",\n      );\n    }\n  }\n\n  return options;\n}\n","import type { TokenType } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type * as N from \"../types.ts\";\nimport type { Node as NodeType, NodeBase, File } from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\nconst { defineProperty } = Object;\nconst toUnenumerable = (object: any, key: string) => {\n  if (object) {\n    defineProperty(object, key, { enumerable: false, value: object[key] });\n  }\n};\n\nfunction toESTreeLocation(node: any) {\n  toUnenumerable(node.loc.start, \"index\");\n  toUnenumerable(node.loc.end, \"index\");\n\n  return node;\n}\n\nexport default (superClass: typeof Parser) =>\n  class ESTreeParserMixin extends superClass implements Parser {\n    parse(): File {\n      const file = toESTreeLocation(super.parse());\n\n      if (this.optionFlags & OptionFlags.Tokens) {\n        file.tokens = file.tokens.map(toESTreeLocation);\n      }\n\n      return file;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseRegExpLiteral({ pattern, flags }): N.EstreeRegExpLiteral {\n      let regex: RegExp | null = null;\n      try {\n        regex = new RegExp(pattern, flags);\n      } catch (_) {\n        // In environments that don't support these flags value will\n        // be null as the regex can't be represented natively.\n      }\n      const node = this.estreeParseLiteral<N.EstreeRegExpLiteral>(regex);\n      node.regex = { pattern, flags };\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseBigIntLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/es2020.md#bigintliteral\n      let bigInt: bigint | null;\n      try {\n        bigInt = BigInt(value);\n      } catch {\n        bigInt = null;\n      }\n      const node = this.estreeParseLiteral<N.EstreeBigIntLiteral>(bigInt);\n      node.bigint = String(node.value || value);\n\n      return node;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseDecimalLiteral(value: any): N.Node {\n      // https://github.com/estree/estree/blob/master/experimental/decimal.md\n      // todo: use BigDecimal when node supports it.\n      const decimal: null = null;\n      const node = this.estreeParseLiteral(decimal);\n      node.decimal = String(node.value || value);\n\n      return node;\n    }\n\n    estreeParseLiteral<T extends N.EstreeLiteral>(value: any) {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.parseLiteral<T>(value, \"Literal\");\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseStringLiteral(value: any): N.Node {\n      return this.estreeParseLiteral(value);\n    }\n\n    parseNumericLiteral(value: any): any {\n      return this.estreeParseLiteral(value);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    parseNullLiteral(): N.Node {\n      return this.estreeParseLiteral(null);\n    }\n\n    parseBooleanLiteral(value: boolean): N.BooleanLiteral {\n      // @ts-expect-error ESTree plugin changes node types\n      return this.estreeParseLiteral(value);\n    }\n\n    // Cast a Directive to an ExpressionStatement. Mutates the input Directive.\n    directiveToStmt(directive: N.Directive): N.ExpressionStatement {\n      const expression = directive.value as any as N.EstreeLiteral;\n      delete directive.value;\n\n      expression.type = \"Literal\";\n      // @ts-expect-error N.EstreeLiteral.raw is not defined.\n      expression.raw = expression.extra.raw;\n      expression.value = expression.extra.expressionValue;\n\n      const stmt = directive as any as N.ExpressionStatement;\n      stmt.type = \"ExpressionStatement\";\n      stmt.expression = expression;\n      // @ts-expect-error N.ExpressionStatement.directive is not defined\n      stmt.directive = expression.extra.rawValue;\n\n      delete expression.extra;\n\n      return stmt;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n      super.initFunction(node, isAsync);\n      node.expression = false;\n    }\n\n    checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n      if (node != null && this.isObjectProperty(node)) {\n        // @ts-expect-error plugin typings\n        this.checkDeclaration((node as unknown as N.EstreeProperty).value);\n      } else {\n        super.checkDeclaration(node);\n      }\n    }\n\n    getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n      return (method as unknown as N.EstreeMethodDefinition).value.params;\n    }\n\n    isValidDirective(stmt: N.Statement): boolean {\n      return (\n        stmt.type === \"ExpressionStatement\" &&\n        stmt.expression.type === \"Literal\" &&\n        typeof stmt.expression.value === \"string\" &&\n        !stmt.expression.extra?.parenthesized\n      );\n    }\n\n    parseBlockBody(\n      node: N.BlockStatementLike,\n      allowDirectives: boolean | undefined | null,\n      topLevel: boolean,\n      end: TokenType,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): void {\n      super.parseBlockBody(\n        node,\n        allowDirectives,\n        topLevel,\n        end,\n        afterBlockParse,\n      );\n\n      const directiveStatements = node.directives.map(d =>\n        this.directiveToStmt(d),\n      );\n      // @ts-expect-error estree plugin typings\n      node.body = directiveStatements.concat(node.body);\n      delete node.directives;\n    }\n\n    parsePrivateName(): any {\n      const node = super.parsePrivateName();\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return node;\n        }\n      }\n      return this.convertPrivateNameToPrivateIdentifier(node);\n    }\n\n    convertPrivateNameToPrivateIdentifier(\n      node: N.PrivateName,\n    ): N.EstreePrivateIdentifier {\n      const name = super.getPrivateNameSV(node);\n      node = node as any;\n      delete node.id;\n      // @ts-expect-error mutate AST types\n      node.name = name;\n      // @ts-expect-error mutate AST types\n      node.type = \"PrivateIdentifier\";\n      return node as unknown as N.EstreePrivateIdentifier;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isPrivateName(node: N.Node): node is N.EstreePrivateIdentifier {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.isPrivateName(node);\n        }\n      }\n      return node.type === \"PrivateIdentifier\";\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    getPrivateNameSV(node: N.EstreePrivateIdentifier): string {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return super.getPrivateNameSV(node as unknown as N.PrivateName);\n        }\n      }\n      return node.name;\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseLiteral<T extends N.Literal>(value: any, type: T[\"type\"]): T {\n      const node = super.parseLiteral<T>(value, type);\n      // @ts-expect-error mutating AST types\n      node.raw = node.extra.raw;\n      delete node.extra;\n\n      return node;\n    }\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpression?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      super.parseFunctionBody(node, allowExpression, isMethod);\n      node.expression = node.body.type !== \"BlockStatement\";\n    }\n\n    // @ts-expect-error plugin may override interfaces\n    parseMethod<\n      T extends N.ClassPrivateMethod | N.ObjectMethod | N.ClassMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope: boolean = false,\n    ): N.EstreeMethodDefinition | N.EstreeTSAbstractMethodDefinition {\n      let funcNode = this.startNode<N.MethodLike>();\n      funcNode.kind = node.kind; // provide kind, so super method correctly sets state\n      funcNode = super.parseMethod(\n        // @ts-expect-error todo(flow->ts)\n        funcNode,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error mutate AST types\n      funcNode.type = \"FunctionExpression\";\n      delete funcNode.kind;\n      // @ts-expect-error mutate AST types\n      node.value = funcNode;\n      const { typeParameters } = node;\n      if (typeParameters) {\n        delete node.typeParameters;\n        funcNode.typeParameters = typeParameters;\n        this.resetStartLocationFromNode(funcNode, typeParameters);\n      }\n      if (type === \"ClassPrivateMethod\") {\n        node.computed = false;\n      }\n      if (process.env.BABEL_8_BREAKING && this.hasPlugin(\"typescript\")) {\n        if (!funcNode.body) {\n          (funcNode as unknown as N.EstreeTSEmptyBodyFunctionExpression).type =\n            \"TSEmptyBodyFunctionExpression\";\n        }\n        // @ts-expect-error todo(flow->ts) property not defined for all types in union\n        if (node.abstract) {\n          return this.finishNode(\n            // @ts-expect-error cast methods to estree types\n            node as Undone<N.EstreeTSAbstractMethodDefinition>,\n            \"TSAbstractMethodDefinition\",\n          );\n        }\n      }\n      return this.finishNode(\n        // @ts-expect-error cast methods to estree types\n        node as Undone<N.EstreeMethodDefinition>,\n        \"MethodDefinition\",\n      );\n    }\n\n    nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n      if (key.type === \"Literal\") return key.value === \"constructor\";\n      return super.nameIsConstructor(key);\n    }\n\n    parseClassProperty(...args: [N.ClassProperty]): any {\n      const propertyNode = super.parseClassProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        (propertyNode as unknown as N.EstreeTSAbstractPropertyDefinition).type =\n          \"TSAbstractPropertyDefinition\";\n      } else {\n        (propertyNode as unknown as N.EstreePropertyDefinition).type =\n          \"PropertyDefinition\";\n      }\n      return propertyNode;\n    }\n\n    parseClassPrivateProperty(...args: [N.ClassPrivateProperty]): any {\n      const propertyNode = super.parseClassPrivateProperty(...args);\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!this.getPluginOption(\"estree\", \"classFeatures\")) {\n          return propertyNode as unknown as N.EstreePropertyDefinition;\n        }\n      }\n      if (\n        process.env.BABEL_8_BREAKING &&\n        propertyNode.abstract &&\n        this.hasPlugin(\"typescript\")\n      ) {\n        (propertyNode as unknown as N.EstreeTSAbstractPropertyDefinition).type =\n          \"TSAbstractPropertyDefinition\";\n      } else {\n        (propertyNode as unknown as N.EstreePropertyDefinition).type =\n          \"PropertyDefinition\";\n      }\n      propertyNode.computed = false;\n      return propertyNode;\n    }\n\n    parseObjectMethod(\n      prop: N.ObjectMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n    ): N.ObjectMethod | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n      ) as any;\n\n      if (node) {\n        node.type = \"Property\";\n        if ((node as any as N.ClassMethod).kind === \"method\") {\n          node.kind = \"init\";\n        }\n        node.shorthand = false;\n      }\n\n      return node as any;\n    }\n\n    parseObjectProperty(\n      prop: N.ObjectProperty,\n      startLoc: Position | undefined | null,\n      isPattern: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ObjectProperty | undefined | null {\n      const node: N.EstreeProperty = super.parseObjectProperty(\n        prop,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      ) as any;\n\n      if (node) {\n        node.kind = \"init\";\n        node.type = \"Property\";\n      }\n\n      return node as any;\n    }\n\n    isValidLVal(\n      type: string,\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      return type === \"Property\"\n        ? \"value\"\n        : super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node != null && this.isObjectProperty(node)) {\n        return this.isAssignable(node.value, isBinding);\n      }\n      return super.isAssignable(node, isBinding);\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (node != null && this.isObjectProperty(node)) {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableObjectExpressionProp(\n      prop: N.Node,\n      isLast: boolean,\n      isLHS: boolean,\n    ) {\n      if (\n        prop.type === \"Property\" &&\n        (prop.kind === \"get\" || prop.kind === \"set\")\n      ) {\n        this.raise(Errors.PatternHasAccessor, prop.key);\n      } else if (prop.type === \"Property\" && prop.method) {\n        this.raise(Errors.PatternHasMethod, prop.key);\n      } else {\n        super.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n      }\n    }\n\n    finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n      unfinished: Undone<T>,\n      optional: boolean,\n    ): T {\n      const node = super.finishCallExpression(unfinished, optional);\n\n      if (node.callee.type === \"Import\") {\n        (node as N.Node as N.EstreeImportExpression).type = \"ImportExpression\";\n        (node as N.Node as N.EstreeImportExpression).source = node\n          .arguments[0] as N.Expression;\n        (node as N.Node as N.EstreeImportExpression).options =\n          (node.arguments[1] as N.Expression) ?? null;\n        // compatibility with previous ESTree AST\n        // TODO(Babel 8): Remove this\n        (node as N.Node as N.EstreeImportExpression).attributes =\n          (node.arguments[1] as N.Expression) ?? null;\n        // arguments isn't optional in the type definition\n        delete node.arguments;\n        // callee isn't optional in the type definition\n        delete node.callee;\n      }\n\n      return node;\n    }\n\n    toReferencedArguments(\n      node:\n        | N.CallExpression\n        | N.OptionalCallExpression\n        | N.EstreeImportExpression,\n      /* isParenthesizedExpr?: boolean, */\n    ) {\n      // ImportExpressions do not have an arguments array.\n      if (node.type === \"ImportExpression\") {\n        return;\n      }\n\n      super.toReferencedArguments(node);\n    }\n\n    parseExport(\n      unfinished: Undone<N.AnyExport>,\n      decorators: N.Decorator[] | null,\n    ) {\n      const exportStartLoc = this.state.lastTokStartLoc;\n      const node = super.parseExport(unfinished, decorators);\n\n      switch (node.type) {\n        case \"ExportAllDeclaration\":\n          // @ts-expect-error mutating AST types\n          node.exported = null;\n          break;\n\n        case \"ExportNamedDeclaration\":\n          if (\n            node.specifiers.length === 1 &&\n            node.specifiers[0].type === \"ExportNamespaceSpecifier\"\n          ) {\n            // @ts-expect-error mutating AST types\n            node.type = \"ExportAllDeclaration\";\n            // @ts-expect-error mutating AST types\n            node.exported = node.specifiers[0].exported;\n            delete node.specifiers;\n          }\n\n        // fallthrough\n        case \"ExportDefaultDeclaration\":\n          {\n            const { declaration } = node;\n            if (\n              declaration?.type === \"ClassDeclaration\" &&\n              declaration.decorators?.length > 0 &&\n              // decorator comes before export\n              declaration.start === node.start\n            ) {\n              this.resetStartLocation(\n                node,\n                // For compatibility with ESLint's keyword-spacing rule, which assumes that an\n                // export declaration must start with export.\n                // https://github.com/babel/babel/issues/15085\n                // Here we reset export declaration's start to be the start of the export token\n                exportStartLoc,\n              );\n            }\n          }\n\n          break;\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      const node = super.parseSubscript(base, startLoc, noCalls, state);\n\n      if (state.optionalChainMember) {\n        // https://github.com/estree/estree/blob/master/es2020.md#chainexpression\n        if (\n          node.type === \"OptionalMemberExpression\" ||\n          node.type === \"OptionalCallExpression\"\n        ) {\n          // strip Optional prefix\n          (node as unknown as N.CallExpression | N.MemberExpression).type =\n            node.type.substring(8) as \"CallExpression\" | \"MemberExpression\";\n        }\n        if (state.stop) {\n          const chain = this.startNodeAtNode<N.EstreeChainExpression>(node);\n          chain.expression = node;\n          return this.finishNode(chain, \"ChainExpression\");\n        }\n      } else if (\n        node.type === \"MemberExpression\" ||\n        node.type === \"CallExpression\"\n      ) {\n        // @ts-expect-error not in the type definitions\n        node.optional = false;\n      }\n\n      return node;\n    }\n\n    isOptionalMemberExpression(node: N.Node) {\n      if (node.type === \"ChainExpression\") {\n        return node.expression.type === \"MemberExpression\";\n      }\n      return super.isOptionalMemberExpression(node);\n    }\n\n    hasPropertyAsPrivateName(node: N.Node): boolean {\n      if (node.type === \"ChainExpression\") {\n        node = node.expression;\n      }\n      return super.hasPropertyAsPrivateName(node);\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectProperty(node: N.Node): node is N.EstreeProperty {\n      return node.type === \"Property\" && node.kind === \"init\" && !node.method;\n    }\n\n    // @ts-expect-error ESTree plugin changes node types\n    isObjectMethod(node: N.Node): node is N.EstreeProperty {\n      return (\n        node.type === \"Property\" &&\n        (node.method || node.kind === \"get\" || node.kind === \"set\")\n      );\n    }\n\n    finishNodeAt<T extends NodeType>(\n      node: Undone<T>,\n      type: T[\"type\"],\n      endLoc: Position,\n    ): T {\n      return toESTreeLocation(super.finishNodeAt(node, type, endLoc));\n    }\n\n    resetStartLocation(node: N.Node, startLoc: Position) {\n      super.resetStartLocation(node, startLoc);\n      toESTreeLocation(node);\n    }\n\n    resetEndLocation(\n      node: NodeBase,\n      endLoc: Position = this.state.lastTokEndLoc,\n    ): void {\n      super.resetEndLocation(node, endLoc);\n      toESTreeLocation(node);\n    }\n  };\n","// The token context is used in JSX plugin to track\n// jsx tag / jsx text / normal JavaScript expression\n\nexport class TokContext {\n  constructor(token: string, preserveSpace?: boolean) {\n    this.token = token;\n    this.preserveSpace = !!preserveSpace;\n  }\n\n  token: string;\n  preserveSpace: boolean;\n}\n\nconst types: {\n  [key: string]: TokContext;\n} = {\n  brace: new TokContext(\"{\"), // normal JavaScript expression\n  j_oTag: new TokContext(\"<tag\"), // JSX opening tag\n  j_cTag: new TokContext(\"</tag\"), // JSX closing tag\n  j_expr: new TokContext(\"<tag>...</tag>\", true), // JSX expressions\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  types.template = new TokContext(\"`\", true);\n}\n\nexport { types };\n","import { types as tc, type TokContext } from \"./context.ts\";\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 1) binary\n// expression (<) and JSX Tag start (<name>); 2) object literal and JSX\n// texts. It is set on the `updateContext` function in the JSX plugin.\n\n// The `startsExpr` property is used to determine whether an expression\n// may be the “argument” subexpression of a `yield` expression or\n// `yield` statement. It is set on all token types that may be at the\n// start of a subexpression.\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\nconst beforeExpr = true;\nconst startsExpr = true;\nconst isLoop = true;\nconst isAssign = true;\nconst prefix = true;\nconst postfix = true;\n\ntype TokenOptions = {\n  keyword?: string;\n  beforeExpr?: boolean;\n  startsExpr?: boolean;\n  rightAssociative?: boolean;\n  isLoop?: boolean;\n  isAssign?: boolean;\n  prefix?: boolean;\n  postfix?: boolean;\n  binop?: number | null;\n};\n\n// Internally the tokenizer stores token as a number\nexport type TokenType = number;\n\n// The `ExportedTokenType` is exported via `tokTypes` and accessible\n// when `tokens: true` is enabled. Unlike internal token type, it provides\n// metadata of the tokens.\nexport class ExportedTokenType {\n  label: string;\n  keyword: string | undefined | null;\n  beforeExpr: boolean;\n  startsExpr: boolean;\n  rightAssociative: boolean;\n  isLoop: boolean;\n  isAssign: boolean;\n  prefix: boolean;\n  postfix: boolean;\n  binop: number | undefined | null;\n  // todo(Babel 8): remove updateContext from exposed token layout\n  declare updateContext:\n    | ((context: Array<TokContext>) => void)\n    | undefined\n    | null;\n\n  constructor(label: string, conf: TokenOptions = {}) {\n    this.label = label;\n    this.keyword = conf.keyword;\n    this.beforeExpr = !!conf.beforeExpr;\n    this.startsExpr = !!conf.startsExpr;\n    this.rightAssociative = !!conf.rightAssociative;\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 ? conf.binop : null;\n    if (!process.env.BABEL_8_BREAKING) {\n      this.updateContext = null;\n    }\n  }\n}\n\n// A map from keyword/keyword-like string value to the token type\nexport const keywords = new Map<string, TokenType>();\n\nfunction createKeyword(name: string, options: TokenOptions = {}): TokenType {\n  options.keyword = name;\n  const token = createToken(name, options);\n  keywords.set(name, token);\n  return token;\n}\n\nfunction createBinop(name: string, binop: number) {\n  return createToken(name, { beforeExpr, binop });\n}\n\nlet tokenTypeCounter = -1;\nexport const tokenTypes: ExportedTokenType[] = [];\nconst tokenLabels: string[] = [];\nconst tokenBinops: number[] = [];\nconst tokenBeforeExprs: boolean[] = [];\nconst tokenStartsExprs: boolean[] = [];\nconst tokenPrefixes: boolean[] = [];\n\nfunction createToken(name: string, options: TokenOptions = {}): TokenType {\n  ++tokenTypeCounter;\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  tokenTypes.push(new ExportedTokenType(name, options));\n\n  return tokenTypeCounter;\n}\n\nfunction createKeywordLike(\n  name: string,\n  options: TokenOptions = {},\n): TokenType {\n  ++tokenTypeCounter;\n  keywords.set(name, tokenTypeCounter);\n  tokenLabels.push(name);\n  tokenBinops.push(options.binop ?? -1);\n  tokenBeforeExprs.push(options.beforeExpr ?? false);\n  tokenStartsExprs.push(options.startsExpr ?? false);\n  tokenPrefixes.push(options.prefix ?? false);\n  // In the exported token type, we set the label as \"name\" for backward compatibility with Babel 7\n  tokenTypes.push(new ExportedTokenType(\"name\", options));\n\n  return tokenTypeCounter;\n}\n\n// For performance the token type helpers depend on the following declarations order.\n// When adding new token types, please also check if the token helpers need update.\n\nexport type InternalTokenTypes = typeof tt;\n\nexport const tt = {\n  // Punctuation token types.\n  bracketL: createToken(\"[\", { beforeExpr, startsExpr }),\n  bracketHashL: createToken(\"#[\", { beforeExpr, startsExpr }),\n  bracketBarL: createToken(\"[|\", { beforeExpr, startsExpr }),\n  bracketR: createToken(\"]\"),\n  bracketBarR: createToken(\"|]\"),\n  braceL: createToken(\"{\", { beforeExpr, startsExpr }),\n  braceBarL: createToken(\"{|\", { beforeExpr, startsExpr }),\n  braceHashL: createToken(\"#{\", { beforeExpr, startsExpr }),\n  braceR: createToken(\"}\"),\n  braceBarR: createToken(\"|}\"),\n  parenL: createToken(\"(\", { beforeExpr, startsExpr }),\n  parenR: createToken(\")\"),\n  comma: createToken(\",\", { beforeExpr }),\n  semi: createToken(\";\", { beforeExpr }),\n  colon: createToken(\":\", { beforeExpr }),\n  doubleColon: createToken(\"::\", { beforeExpr }),\n  dot: createToken(\".\"),\n  question: createToken(\"?\", { beforeExpr }),\n  questionDot: createToken(\"?.\"),\n  arrow: createToken(\"=>\", { beforeExpr }),\n  template: createToken(\"template\"),\n  ellipsis: createToken(\"...\", { beforeExpr }),\n  backQuote: createToken(\"`\", { startsExpr }),\n  dollarBraceL: createToken(\"${\", { beforeExpr, startsExpr }),\n  // start: isTemplate\n  templateTail: createToken(\"...`\", { startsExpr }),\n  templateNonTail: createToken(\"...${\", { beforeExpr, startsExpr }),\n  // end: isTemplate\n  at: createToken(\"@\"),\n  hash: createToken(\"#\", { startsExpr }),\n\n  // Special hashbang token.\n  interpreterDirective: createToken(\"#!...\"),\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  // start: isAssign\n  eq: createToken(\"=\", { beforeExpr, isAssign }),\n  assign: createToken(\"_=\", { beforeExpr, isAssign }),\n  slashAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // These are only needed to support % and ^ as a Hack-pipe topic token.\n  // When the proposal settles on a token, the others can be merged with\n  // tt.assign.\n  xorAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  moduloAssign: createToken(\"_=\", { beforeExpr, isAssign }),\n  // end: isAssign\n\n  incDec: createToken(\"++/--\", { prefix, postfix, startsExpr }),\n  bang: createToken(\"!\", { beforeExpr, prefix, startsExpr }),\n  tilde: createToken(\"~\", { beforeExpr, prefix, startsExpr }),\n\n  // More possible topic tokens.\n  // When the proposal settles on a token, at least one of these may be removed.\n  doubleCaret: createToken(\"^^\", { startsExpr }),\n  doubleAt: createToken(\"@@\", { startsExpr }),\n\n  // start: isBinop\n  pipeline: createBinop(\"|>\", 0),\n  nullishCoalescing: createBinop(\"??\", 1),\n  logicalOR: createBinop(\"||\", 1),\n  logicalAND: createBinop(\"&&\", 2),\n  bitwiseOR: createBinop(\"|\", 3),\n  bitwiseXOR: createBinop(\"^\", 4),\n  bitwiseAND: createBinop(\"&\", 5),\n  equality: createBinop(\"==/!=/===/!==\", 6),\n  lt: createBinop(\"</>/<=/>=\", 7),\n  gt: createBinop(\"</>/<=/>=\", 7),\n  relational: createBinop(\"</>/<=/>=\", 7),\n  bitShift: createBinop(\"<</>>/>>>\", 8),\n  bitShiftL: createBinop(\"<</>>/>>>\", 8),\n  bitShiftR: createBinop(\"<</>>/>>>\", 8),\n  plusMin: createToken(\"+/-\", { beforeExpr, binop: 9, prefix, startsExpr }),\n  // startsExpr: required by v8intrinsic plugin\n  modulo: createToken(\"%\", { binop: 10, startsExpr }),\n  // unset `beforeExpr` as it can be `function *`\n  star: createToken(\"*\", { binop: 10 }),\n  slash: createBinop(\"/\", 10),\n  exponent: createToken(\"**\", {\n    beforeExpr,\n    binop: 11,\n    rightAssociative: true,\n  }),\n\n  // Keywords\n  // Don't forget to update packages/babel-helper-validator-identifier/src/keyword.js\n  // when new keywords are added\n  // start: isLiteralPropertyName\n  // start: isKeyword\n  _in: createKeyword(\"in\", { beforeExpr, binop: 7 }),\n  _instanceof: createKeyword(\"instanceof\", { beforeExpr, binop: 7 }),\n  // end: isBinop\n  _break: createKeyword(\"break\"),\n  _case: createKeyword(\"case\", { beforeExpr }),\n  _catch: createKeyword(\"catch\"),\n  _continue: createKeyword(\"continue\"),\n  _debugger: createKeyword(\"debugger\"),\n  _default: createKeyword(\"default\", { beforeExpr }),\n  _else: createKeyword(\"else\", { beforeExpr }),\n  _finally: createKeyword(\"finally\"),\n  _function: createKeyword(\"function\", { startsExpr }),\n  _if: createKeyword(\"if\"),\n  _return: createKeyword(\"return\", { beforeExpr }),\n  _switch: createKeyword(\"switch\"),\n  _throw: createKeyword(\"throw\", { beforeExpr, prefix, startsExpr }),\n  _try: createKeyword(\"try\"),\n  _var: createKeyword(\"var\"),\n  _const: createKeyword(\"const\"),\n  _with: createKeyword(\"with\"),\n  _new: createKeyword(\"new\", { beforeExpr, startsExpr }),\n  _this: createKeyword(\"this\", { startsExpr }),\n  _super: createKeyword(\"super\", { startsExpr }),\n  _class: createKeyword(\"class\", { startsExpr }),\n  _extends: createKeyword(\"extends\", { beforeExpr }),\n  _export: createKeyword(\"export\"),\n  _import: createKeyword(\"import\", { startsExpr }),\n  _null: createKeyword(\"null\", { startsExpr }),\n  _true: createKeyword(\"true\", { startsExpr }),\n  _false: createKeyword(\"false\", { startsExpr }),\n  _typeof: createKeyword(\"typeof\", { beforeExpr, prefix, startsExpr }),\n  _void: createKeyword(\"void\", { beforeExpr, prefix, startsExpr }),\n  _delete: createKeyword(\"delete\", { beforeExpr, prefix, startsExpr }),\n  // start: isLoop\n  _do: createKeyword(\"do\", { isLoop, beforeExpr }),\n  _for: createKeyword(\"for\", { isLoop }),\n  _while: createKeyword(\"while\", { isLoop }),\n  // end: isLoop\n  // end: isKeyword\n\n  // Primary literals\n  // start: isIdentifier\n  _as: createKeywordLike(\"as\", { startsExpr }),\n  _assert: createKeywordLike(\"assert\", { startsExpr }),\n  _async: createKeywordLike(\"async\", { startsExpr }),\n  _await: createKeywordLike(\"await\", { startsExpr }),\n  _defer: createKeywordLike(\"defer\", { startsExpr }),\n  _from: createKeywordLike(\"from\", { startsExpr }),\n  _get: createKeywordLike(\"get\", { startsExpr }),\n  _let: createKeywordLike(\"let\", { startsExpr }),\n  _meta: createKeywordLike(\"meta\", { startsExpr }),\n  _of: createKeywordLike(\"of\", { startsExpr }),\n  _sent: createKeywordLike(\"sent\", { startsExpr }),\n  _set: createKeywordLike(\"set\", { startsExpr }),\n  _source: createKeywordLike(\"source\", { startsExpr }),\n  _static: createKeywordLike(\"static\", { startsExpr }),\n  _using: createKeywordLike(\"using\", { startsExpr }),\n  _yield: createKeywordLike(\"yield\", { startsExpr }),\n\n  // Flow and TypeScript Keywordlike\n  _asserts: createKeywordLike(\"asserts\", { startsExpr }),\n  _checks: createKeywordLike(\"checks\", { startsExpr }),\n  _exports: createKeywordLike(\"exports\", { startsExpr }),\n  _global: createKeywordLike(\"global\", { startsExpr }),\n  _implements: createKeywordLike(\"implements\", { startsExpr }),\n  _intrinsic: createKeywordLike(\"intrinsic\", { startsExpr }),\n  _infer: createKeywordLike(\"infer\", { startsExpr }),\n  _is: createKeywordLike(\"is\", { startsExpr }),\n  _mixins: createKeywordLike(\"mixins\", { startsExpr }),\n  _proto: createKeywordLike(\"proto\", { startsExpr }),\n  _require: createKeywordLike(\"require\", { startsExpr }),\n  _satisfies: createKeywordLike(\"satisfies\", { startsExpr }),\n  // start: isTSTypeOperator\n  _keyof: createKeywordLike(\"keyof\", { startsExpr }),\n  _readonly: createKeywordLike(\"readonly\", { startsExpr }),\n  _unique: createKeywordLike(\"unique\", { startsExpr }),\n  // end: isTSTypeOperator\n  // start: isTSDeclarationStart\n  _abstract: createKeywordLike(\"abstract\", { startsExpr }),\n  _declare: createKeywordLike(\"declare\", { startsExpr }),\n  _enum: createKeywordLike(\"enum\", { startsExpr }),\n  _module: createKeywordLike(\"module\", { startsExpr }),\n  _namespace: createKeywordLike(\"namespace\", { startsExpr }),\n  // start: isFlowInterfaceOrTypeOrOpaque\n  _interface: createKeywordLike(\"interface\", { startsExpr }),\n  _type: createKeywordLike(\"type\", { startsExpr }),\n  // end: isTSDeclarationStart\n  _opaque: createKeywordLike(\"opaque\", { startsExpr }),\n  // end: isFlowInterfaceOrTypeOrOpaque\n  name: createToken(\"name\", { startsExpr }),\n\n  // placeholder plugin\n  placeholder: createToken(\"%%\", { startsExpr: true }),\n  // end: isIdentifier\n\n  string: createToken(\"string\", { startsExpr }),\n  num: createToken(\"num\", { startsExpr }),\n  bigint: createToken(\"bigint\", { startsExpr }),\n  // TODO: Remove this in Babel 8\n  decimal: createToken(\"decimal\", { startsExpr }),\n  // end: isLiteralPropertyName\n  regexp: createToken(\"regexp\", { startsExpr }),\n  privateName: createToken(\"#name\", { startsExpr }),\n  eof: createToken(\"eof\"),\n\n  // jsx plugin\n  jsxName: createToken(\"jsxName\"),\n  jsxText: createToken(\"jsxText\", { beforeExpr: true }),\n  jsxTagStart: createToken(\"jsxTagStart\", { startsExpr: true }),\n  jsxTagEnd: createToken(\"jsxTagEnd\"),\n} as const;\n\nexport function tokenIsIdentifier(token: TokenType): boolean {\n  return token >= tt._as && token <= tt.placeholder;\n}\n\nexport function tokenKeywordOrIdentifierIsKeyword(token: TokenType): boolean {\n  // we can remove the token >= tt._in check when we\n  // know a token is either keyword or identifier\n  return token <= tt._while;\n}\n\nexport function tokenIsKeywordOrIdentifier(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.placeholder;\n}\n\nexport function tokenIsLiteralPropertyName(token: TokenType): boolean {\n  return token >= tt._in && token <= tt.decimal;\n}\n\nexport function tokenComesBeforeExpression(token: TokenType): boolean {\n  return tokenBeforeExprs[token];\n}\n\nexport function tokenCanStartExpression(token: TokenType): boolean {\n  return tokenStartsExprs[token];\n}\n\nexport function tokenIsAssignment(token: TokenType): boolean {\n  return token >= tt.eq && token <= tt.moduloAssign;\n}\n\nexport function tokenIsFlowInterfaceOrTypeOrOpaque(token: TokenType): boolean {\n  return token >= tt._interface && token <= tt._opaque;\n}\n\nexport function tokenIsLoop(token: TokenType): boolean {\n  return token >= tt._do && token <= tt._while;\n}\n\nexport function tokenIsKeyword(token: TokenType): boolean {\n  return token >= tt._in && token <= tt._while;\n}\n\nexport function tokenIsOperator(token: TokenType): boolean {\n  return token >= tt.pipeline && token <= tt._instanceof;\n}\n\nexport function tokenIsPostfix(token: TokenType): boolean {\n  return token === tt.incDec;\n}\n\nexport function tokenIsPrefix(token: TokenType): boolean {\n  return tokenPrefixes[token];\n}\n\nexport function tokenIsTSTypeOperator(token: TokenType): boolean {\n  return token >= tt._keyof && token <= tt._unique;\n}\n\nexport function tokenIsTSDeclarationStart(token: TokenType): boolean {\n  return token >= tt._abstract && token <= tt._type;\n}\n\nexport function tokenLabelName(token: TokenType): string {\n  return tokenLabels[token];\n}\n\nexport function tokenOperatorPrecedence(token: TokenType): number {\n  return tokenBinops[token];\n}\n\nexport function tokenIsBinaryOperator(token: TokenType): boolean {\n  return tokenBinops[token] !== -1;\n}\n\nexport function tokenIsRightAssociative(token: TokenType): boolean {\n  return token === tt.exponent;\n}\n\nexport function tokenIsTemplate(token: TokenType): boolean {\n  return token >= tt.templateTail && token <= tt.templateNonTail;\n}\n\nexport function getExportedToken(token: TokenType): ExportedTokenType {\n  return tokenTypes[token];\n}\n\nexport function isTokenType(obj: any): boolean {\n  return typeof obj === \"number\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  tokenTypes[tt.braceR].updateContext = context => {\n    context.pop();\n  };\n\n  tokenTypes[tt.braceL].updateContext =\n    tokenTypes[tt.braceHashL].updateContext =\n    tokenTypes[tt.dollarBraceL].updateContext =\n      context => {\n        context.push(tc.brace);\n      };\n\n  tokenTypes[tt.backQuote].updateContext = context => {\n    if (context[context.length - 1] === tc.template) {\n      context.pop();\n    } else {\n      context.push(tc.template);\n    }\n  };\n\n  tokenTypes[tt.jsxTagStart].updateContext = context => {\n    context.push(tc.j_expr, tc.j_oTag);\n  };\n}\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// ## Character categories\n\n// Big ugly regular expressions that match characters in the\n// whitespace, identifier, and identifier-start categories. These\n// are only applied when a character is found to actually have a\n// code point between 0x80 and 0xffff.\n// Generated by `scripts/generate-identifier-regex.cjs`.\n\n/* prettier-ignore */\nlet 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-\\u088e\\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\\u0c5d\\u0c60\\u0c61\\u0c80\\u0c85-\\u0c8c\\u0c8e-\\u0c90\\u0c92-\\u0ca8\\u0caa-\\u0cb3\\u0cb5-\\u0cb9\\u0cbd\\u0cdd\\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-\\ua7cd\\ua7d0\\ua7d1\\ua7d3\\ua7d5-\\ua7dc\\ua7f2-\\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/* prettier-ignore */\nlet nonASCIIidentifierChars = \"\\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-\\u1ace\\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\nconst nonASCIIidentifierStart = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + \"]\",\n);\nconst nonASCIIidentifier = new RegExp(\n  \"[\" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + \"]\",\n);\n\nnonASCIIidentifierStartChars = nonASCIIidentifierChars = null;\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. They were\n// generated by `scripts/generate-identifier-regex.cjs`.\n/* prettier-ignore */\nconst 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,71,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,2,60,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,328,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,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,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,496,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,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191];\n/* prettier-ignore */\nconst 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,80,3,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,343,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,330,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,726,6,110,6,6,9,4759,9,787719,239];\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.\nfunction isInAstralSet(code: number, set: readonly number[]): boolean {\n  let pos = 0x10000;\n  for (let i = 0, length = set.length; i < length; i += 2) {\n    pos += set[i];\n    if (pos > code) return false;\n\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\nexport function isIdentifierStart(code: number): boolean {\n  if (code < charCodes.uppercaseA) return code === charCodes.dollarSign;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return (\n      code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code))\n    );\n  }\n  return isInAstralSet(code, astralIdentifierStartCodes);\n}\n\n// Test whether a given character is part of an identifier.\n\nexport function isIdentifierChar(code: number): boolean {\n  if (code < charCodes.digit0) return code === charCodes.dollarSign;\n  if (code < charCodes.colon) return true;\n  if (code < charCodes.uppercaseA) return false;\n  if (code <= charCodes.uppercaseZ) return true;\n  if (code < charCodes.lowercaseA) return code === charCodes.underscore;\n  if (code <= charCodes.lowercaseZ) return true;\n  if (code <= 0xffff) {\n    return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));\n  }\n  return (\n    isInAstralSet(code, astralIdentifierStartCodes) ||\n    isInAstralSet(code, astralIdentifierCodes)\n  );\n}\n\n// Test whether a given string is a valid identifier name\n\nexport function isIdentifierName(name: string): boolean {\n  let isFirst = true;\n  for (let i = 0; i < name.length; i++) {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `name` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = name.charCodeAt(i);\n    if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {\n      const trail = name.charCodeAt(++i);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    if (isFirst) {\n      isFirst = false;\n      if (!isIdentifierStart(cp)) {\n        return false;\n      }\n    } else if (!isIdentifierChar(cp)) {\n      return false;\n    }\n  }\n  return !isFirst;\n}\n","const reservedWords = {\n  keyword: [\n    \"break\",\n    \"case\",\n    \"catch\",\n    \"continue\",\n    \"debugger\",\n    \"default\",\n    \"do\",\n    \"else\",\n    \"finally\",\n    \"for\",\n    \"function\",\n    \"if\",\n    \"return\",\n    \"switch\",\n    \"throw\",\n    \"try\",\n    \"var\",\n    \"const\",\n    \"while\",\n    \"with\",\n    \"new\",\n    \"this\",\n    \"super\",\n    \"class\",\n    \"extends\",\n    \"export\",\n    \"import\",\n    \"null\",\n    \"true\",\n    \"false\",\n    \"in\",\n    \"instanceof\",\n    \"typeof\",\n    \"void\",\n    \"delete\",\n  ],\n  strict: [\n    \"implements\",\n    \"interface\",\n    \"let\",\n    \"package\",\n    \"private\",\n    \"protected\",\n    \"public\",\n    \"static\",\n    \"yield\",\n  ],\n  strictBind: [\"eval\", \"arguments\"],\n};\nconst keywords = new Set(reservedWords.keyword);\nconst reservedWordsStrictSet = new Set(reservedWords.strict);\nconst reservedWordsStrictBindSet = new Set(reservedWords.strictBind);\n\n/**\n * Checks if word is a reserved word in non-strict mode\n */\nexport function isReservedWord(word: string, inModule: boolean): boolean {\n  return (inModule && word === \"await\") || word === \"enum\";\n}\n\n/**\n * Checks if word is a reserved word in non-binding strict mode\n *\n * Includes non-strict reserved words\n */\nexport function isStrictReservedWord(word: string, inModule: boolean): boolean {\n  return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode, but it is allowed as\n * a normal identifier.\n */\nexport function isStrictBindOnlyReservedWord(word: string): boolean {\n  return reservedWordsStrictBindSet.has(word);\n}\n\n/**\n * Checks if word is a reserved word in binding strict mode\n *\n * Includes non-strict reserved words and non-binding strict reserved words\n */\nexport function isStrictBindReservedWord(\n  word: string,\n  inModule: boolean,\n): boolean {\n  return (\n    isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word)\n  );\n}\n\nexport function isKeyword(word: string): boolean {\n  return keywords.has(word);\n}\n","import * as charCodes from \"charcodes\";\nimport { isIdentifierStart } from \"@babel/helper-validator-identifier\";\n\nexport {\n  isIdentifierStart,\n  isIdentifierChar,\n  isReservedWord,\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nexport const keywordRelationalOperator = /^in(stanceof)?$/;\n\n// Test whether a current state character code and next character code is @\n\nexport function isIteratorStart(\n  current: number,\n  next: number,\n  next2: number,\n): boolean {\n  return (\n    current === charCodes.atSign &&\n    next === charCodes.atSign &&\n    isIdentifierStart(next2)\n  );\n}\n\n// This is the comprehensive set of JavaScript reserved words\n// If a word is in this set, it could be a reserved word,\n// depending on sourceType/strictMode/binding info. In other words\n// if a word is not in this set, it is not a reserved word under\n// any circumstance.\nconst reservedWordLikeSet = new Set([\n  \"break\",\n  \"case\",\n  \"catch\",\n  \"continue\",\n  \"debugger\",\n  \"default\",\n  \"do\",\n  \"else\",\n  \"finally\",\n  \"for\",\n  \"function\",\n  \"if\",\n  \"return\",\n  \"switch\",\n  \"throw\",\n  \"try\",\n  \"var\",\n  \"const\",\n  \"while\",\n  \"with\",\n  \"new\",\n  \"this\",\n  \"super\",\n  \"class\",\n  \"extends\",\n  \"export\",\n  \"import\",\n  \"null\",\n  \"true\",\n  \"false\",\n  \"in\",\n  \"instanceof\",\n  \"typeof\",\n  \"void\",\n  \"delete\",\n  // strict\n  \"implements\",\n  \"interface\",\n  \"let\",\n  \"package\",\n  \"private\",\n  \"protected\",\n  \"public\",\n  \"static\",\n  \"yield\",\n  // strictBind\n  \"eval\",\n  \"arguments\",\n  // reservedWorkLike\n  \"enum\",\n  \"await\",\n]);\n\nexport function canBeReservedWord(word: string): boolean {\n  return reservedWordLikeSet.has(word);\n}\n","import { ScopeFlag, BindingFlag } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport type * as N from \"../types.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport const enum NameType {\n  // var-declared names in the current lexical scope\n  Var = 1 << 0,\n  // lexically-declared names in the current lexical scope\n  Lexical = 1 << 1,\n  // lexically-declared FunctionDeclaration names in the current lexical scope\n  Function = 1 << 2,\n}\n\n// Start an AST node, attaching a start offset.\nexport class Scope {\n  flags: ScopeFlag = 0;\n  names: Map<string, NameType> = new Map();\n  firstLexicalName = \"\";\n\n  constructor(flags: ScopeFlag) {\n    this.flags = flags;\n  }\n}\n\n// The functions in this module keep track of declared variables in the\n// current scope in order to detect duplicate variable names.\nexport default class ScopeHandler<IScope extends Scope = Scope> {\n  parser: Tokenizer;\n  scopeStack: Array<IScope> = [];\n  inModule: boolean;\n  undefinedExports: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer, inModule: boolean) {\n    this.parser = parser;\n    this.inModule = inModule;\n  }\n\n  get inTopLevel() {\n    return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;\n  }\n  get inFunction() {\n    return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get allowSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;\n  }\n  get allowDirectSuper() {\n    return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;\n  }\n  get inClass() {\n    return (this.currentThisScopeFlags() & ScopeFlag.CLASS) > 0;\n  }\n  get inClassAndNotInNonArrowFunction() {\n    const flags = this.currentThisScopeFlags();\n    return (flags & ScopeFlag.CLASS) > 0 && (flags & ScopeFlag.FUNCTION) === 0;\n  }\n  get inStaticBlock() {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.STATIC_BLOCK) {\n        return true;\n      }\n      if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS)) {\n        // function body, module body, class property initializers\n        return false;\n      }\n    }\n  }\n  get inNonArrowFunction() {\n    return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION) > 0;\n  }\n  get treatFunctionsAsVar() {\n    return this.treatFunctionsAsVarInScope(this.currentScope());\n  }\n\n  createScope(flags: ScopeFlag): Scope {\n    return new Scope(flags);\n  }\n\n  enter(flags: ScopeFlag) {\n    /*:: +createScope: (flags:ScopeFlag) => IScope; */\n    // @ts-expect-error This method will be overwritten by subclasses\n    this.scopeStack.push(this.createScope(flags));\n  }\n\n  exit(): ScopeFlag {\n    const scope = this.scopeStack.pop();\n    return scope.flags;\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  treatFunctionsAsVarInScope(scope: IScope): boolean {\n    return !!(\n      scope.flags & (ScopeFlag.FUNCTION | ScopeFlag.STATIC_BLOCK) ||\n      (!this.parser.inModule && scope.flags & ScopeFlag.PROGRAM)\n    );\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    let scope = this.currentScope();\n    if (\n      bindingType & BindingFlag.SCOPE_LEXICAL ||\n      bindingType & BindingFlag.SCOPE_FUNCTION\n    ) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n\n      let type = scope.names.get(name) || 0;\n\n      if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n        type = type | NameType.Function;\n      } else {\n        if (!scope.firstLexicalName) {\n          scope.firstLexicalName = name;\n        }\n        type = type | NameType.Lexical;\n      }\n\n      scope.names.set(name, type);\n\n      if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n        this.maybeExportDefined(scope, name);\n      }\n    } else if (bindingType & BindingFlag.SCOPE_VAR) {\n      for (let i = this.scopeStack.length - 1; i >= 0; --i) {\n        scope = this.scopeStack[i];\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);\n        this.maybeExportDefined(scope, name);\n\n        if (scope.flags & ScopeFlag.VAR) break;\n      }\n    }\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  maybeExportDefined(scope: IScope, name: string) {\n    if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {\n      this.undefinedExports.delete(name);\n    }\n  }\n\n  checkRedeclarationInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n    loc: Position,\n  ) {\n    if (this.isRedeclaredInScope(scope, name, bindingType)) {\n      this.parser.raise(Errors.VarRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n  }\n\n  isRedeclaredInScope(\n    scope: IScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (!(bindingType & BindingFlag.KIND_VALUE)) return false;\n\n    if (bindingType & BindingFlag.SCOPE_LEXICAL) {\n      return scope.names.has(name);\n    }\n\n    const type = scope.names.get(name);\n\n    if (bindingType & BindingFlag.SCOPE_FUNCTION) {\n      return (\n        (type & NameType.Lexical) > 0 ||\n        (!this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0)\n      );\n    }\n\n    return (\n      ((type & NameType.Lexical) > 0 &&\n        // Annex B.3.4\n        // https://tc39.es/ecma262/#sec-variablestatements-in-catch-blocks\n        !(\n          scope.flags & ScopeFlag.SIMPLE_CATCH &&\n          scope.firstLexicalName === name\n        )) ||\n      (!this.treatFunctionsAsVarInScope(scope) &&\n        (type & NameType.Function) > 0)\n    );\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n    const topLevelScope = this.scopeStack[0];\n    if (!topLevelScope.names.has(name)) {\n      this.undefinedExports.set(name, id.loc.start);\n    }\n  }\n\n  currentScope(): IScope {\n    return this.scopeStack[this.scopeStack.length - 1];\n  }\n\n  currentVarScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (flags & ScopeFlag.VAR) {\n        return flags;\n      }\n    }\n  }\n\n  // Could be useful for `arguments`, `this`, `new.target`, `super()`, `super.property`, and `super[property]`.\n  currentThisScopeFlags(): ScopeFlag {\n    for (let i = this.scopeStack.length - 1; ; i--) {\n      const { flags } = this.scopeStack[i];\n      if (\n        flags & (ScopeFlag.VAR | ScopeFlag.CLASS) &&\n        !(flags & ScopeFlag.ARROW)\n      ) {\n        return flags;\n      }\n    }\n  }\n}\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, type ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\n\n// Reference implementation: https://github.com/facebook/flow/blob/23aeb2a2ef6eb4241ce178fde5d8f17c5f747fb5/src/typing/env.ml#L536-L584\nclass FlowScope extends Scope {\n  // declare function foo(): type;\n  declareFunctions: Set<string> = new Set();\n}\n\nexport default class FlowScopeHandler extends ScopeHandler<FlowScope> {\n  createScope(flags: ScopeFlag): FlowScope {\n    return new FlowScope(flags);\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    const scope = this.currentScope();\n    if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {\n      this.checkRedeclarationInScope(scope, name, bindingType, loc);\n      this.maybeExportDefined(scope, name);\n      scope.declareFunctions.add(name);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n  }\n\n  isRedeclaredInScope(\n    scope: FlowScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    if (super.isRedeclaredInScope(scope, name, bindingType)) return true;\n\n    if (\n      bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN &&\n      !scope.declareFunctions.has(name)\n    ) {\n      const type = scope.names.get(name);\n      return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;\n    }\n\n    return false;\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    if (!this.scopeStack[0].declareFunctions.has(id.name)) {\n      super.checkLocalExport(id);\n    }\n  }\n}\n","import type { OptionFlags, Options } from \"../options.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type { PluginsMap } from \"./index.ts\";\nimport type ScopeHandler from \"../util/scope.ts\";\nimport type ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport type ClassScopeHandler from \"../util/class-scope.ts\";\nimport type ProductionParameterHandler from \"../util/production-parameter.ts\";\nimport type {\n  ParserPluginWithOptions,\n  PluginConfig,\n  PluginOptions,\n} from \"../typings.ts\";\nimport type * as N from \"../types.ts\";\n\nexport default class BaseParser {\n  // Properties set by constructor in index.js\n  declare options: Options;\n  declare optionFlags: OptionFlags;\n  declare inModule: boolean;\n  declare scope: ScopeHandler<any>;\n  declare classScope: ClassScopeHandler;\n  declare prodParam: ProductionParameterHandler;\n  declare expressionScope: ExpressionScopeHandler;\n  declare plugins: PluginsMap;\n  declare filename: string | undefined | null;\n  declare startIndex: number;\n  // Names of exports store. `default` is stored as a name for both\n  // `export default foo;` and `export { foo as default };`.\n  declare exportedIdentifiers: Set<string>;\n  sawUnambiguousESM: boolean = false;\n  ambiguousScriptDifferentAst: boolean = false;\n\n  // Initialized by Tokenizer\n  declare state: State;\n  // input and length are not in state as they are constant and we do\n  // not want to ever copy them, which happens if state gets cloned\n  declare input: string;\n  declare length: number;\n  // Comment store for Program.comments\n  declare comments: Array<N.Comment>;\n\n  sourceToOffsetPos(sourcePos: number) {\n    return sourcePos + this.startIndex;\n  }\n\n  offsetToSourcePos(offsetPos: number) {\n    return offsetPos - this.startIndex;\n  }\n\n  // This method accepts either a string (plugin name) or an array pair\n  // (plugin name and options object). If an options object is given,\n  // then each value is non-recursively checked for identity with that\n  // plugin’s actual option value.\n  hasPlugin(pluginConfig: PluginConfig): boolean {\n    if (typeof pluginConfig === \"string\") {\n      return this.plugins.has(pluginConfig);\n    } else {\n      const [pluginName, pluginOptions] = pluginConfig;\n      if (!this.hasPlugin(pluginName)) {\n        return false;\n      }\n      const actualOptions = this.plugins.get(pluginName);\n      for (const key of Object.keys(\n        pluginOptions,\n      ) as (keyof typeof pluginOptions)[]) {\n        if (actualOptions?.[key] !== pluginOptions[key]) {\n          return false;\n        }\n      }\n      return true;\n    }\n  }\n\n  getPluginOption<\n    PluginName extends ParserPluginWithOptions[0],\n    OptionName extends keyof PluginOptions<PluginName>,\n  >(plugin: PluginName, name: OptionName) {\n    return (this.plugins.get(plugin) as null | PluginOptions<PluginName>)?.[\n      name\n    ];\n  }\n}\n","/*:: declare var invariant; */\n\nimport BaseParser from \"./base.ts\";\nimport type { Comment, Node, Identifier } from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { Undone } from \"./node.ts\";\n\n/**\n * A whitespace token containing comments\n */\nexport type CommentWhitespace = {\n  /**\n   * the start of the whitespace token.\n   */\n  start: number;\n  /**\n   * the end of the whitespace token.\n   */\n  end: number;\n  /**\n   * the containing comments\n   */\n  comments: Array<Comment>;\n  /**\n   * the immediately preceding AST node of the whitespace token\n   */\n  leadingNode: Node | null;\n  /**\n   * the immediately following AST node of the whitespace token\n   */\n  trailingNode: Node | null;\n  /**\n   * the innermost AST node containing the whitespace with minimal size (|end - start|)\n   */\n  containingNode: Node | null;\n};\n\n/**\n * Merge comments with node's trailingComments or assign comments to be\n * trailingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setTrailingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.trailingComments === undefined) {\n    node.trailingComments = comments;\n  } else {\n    node.trailingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's leadingComments or assign comments to be\n * leadingComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nfunction setLeadingComments(node: Undone<Node>, comments: Array<Comment>) {\n  if (node.leadingComments === undefined) {\n    node.leadingComments = comments;\n  } else {\n    node.leadingComments.unshift(...comments);\n  }\n}\n\n/**\n * Merge comments with node's innerComments or assign comments to be\n * innerComments. New comments will be placed before old comments\n * because the commentStack is enumerated reversely.\n */\nexport function setInnerComments(\n  node: Undone<Node>,\n  comments?: Array<Comment>,\n) {\n  if (node.innerComments === undefined) {\n    node.innerComments = comments;\n  } else {\n    node.innerComments.unshift(...comments);\n  }\n}\n\n/**\n * Given node and elements array, if elements has non-null element,\n * merge comments to its trailingComments, otherwise merge comments\n * to node's innerComments\n */\nfunction adjustInnerComments(\n  node: Undone<Node>,\n  elements: Array<Node>,\n  commentWS: CommentWhitespace,\n) {\n  let lastElement = null;\n  let i = elements.length;\n  while (lastElement === null && i > 0) {\n    lastElement = elements[--i];\n  }\n  if (lastElement === null || lastElement.start > commentWS.start) {\n    setInnerComments(node, commentWS.comments);\n  } else {\n    setTrailingComments(lastElement, commentWS.comments);\n  }\n}\n\nexport default class CommentsParser extends BaseParser {\n  addComment(comment: Comment): void {\n    if (this.filename) comment.loc.filename = this.filename;\n    const { commentsLen } = this.state;\n    if (this.comments.length !== commentsLen) {\n      this.comments.length = commentsLen;\n    }\n    this.comments.push(comment);\n    this.state.commentsLen++;\n  }\n\n  /**\n   * Given a newly created AST node _n_, attach _n_ to a comment whitespace _w_ if applicable\n   * {@see {@link CommentWhitespace}}\n   */\n  processComment(node: Node): void {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n    const lastCommentWS = commentStack[i];\n\n    if (lastCommentWS.start === node.end) {\n      lastCommentWS.leadingNode = node;\n      i--;\n    }\n\n    const { start: nodeStart } = node;\n    // invariant: for all 0 <= j <= i, let c = commentStack[j], c must satisfy c.end < node.end\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      if (commentEnd > nodeStart) {\n        // by definition of commentWhiteSpace, this implies commentWS.start > nodeStart\n        // so node can be a containingNode candidate. At this time we can finalize the comment\n        // whitespace, because\n        // 1) its leadingNode or trailingNode, if exists, will not change\n        // 2) its containingNode have been assigned and will not change because it is the\n        //    innermost minimal-sized AST node\n        commentWS.containingNode = node;\n        this.finalizeComment(commentWS);\n        commentStack.splice(i, 1);\n      } else {\n        if (commentEnd === nodeStart) {\n          commentWS.trailingNode = node;\n        }\n        // stop the loop when commentEnd <= nodeStart\n        break;\n      }\n    }\n  }\n\n  /**\n   * Assign the comments of comment whitespaces to related AST nodes.\n   * Also adjust innerComments following trailing comma.\n   */\n  finalizeComment(commentWS: CommentWhitespace) {\n    const { comments } = commentWS;\n    if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n      if (commentWS.leadingNode !== null) {\n        setTrailingComments(commentWS.leadingNode, comments);\n      }\n      if (commentWS.trailingNode !== null) {\n        setLeadingComments(commentWS.trailingNode, comments);\n      }\n    } else {\n      /*:: invariant(commentWS.containingNode !== null) */\n      const { containingNode: node, start: commentStart } = commentWS;\n      if (\n        this.input.charCodeAt(this.offsetToSourcePos(commentStart) - 1) ===\n        charCodes.comma\n      ) {\n        // If a commentWhitespace follows a comma and the containingNode allows\n        // list structures with trailing comma, merge it to the trailingComment\n        // of the last non-null list element\n        switch (node.type) {\n          case \"ObjectExpression\":\n          case \"ObjectPattern\":\n          case \"RecordExpression\":\n            adjustInnerComments(node, node.properties, commentWS);\n            break;\n          case \"CallExpression\":\n          case \"OptionalCallExpression\":\n            adjustInnerComments(node, node.arguments, commentWS);\n            break;\n          case \"FunctionDeclaration\":\n          case \"FunctionExpression\":\n          case \"ArrowFunctionExpression\":\n          case \"ObjectMethod\":\n          case \"ClassMethod\":\n          case \"ClassPrivateMethod\":\n            adjustInnerComments(node, node.params, commentWS);\n            break;\n          case \"ArrayExpression\":\n          case \"ArrayPattern\":\n          case \"TupleExpression\":\n            adjustInnerComments(node, node.elements, commentWS);\n            break;\n          case \"ExportNamedDeclaration\":\n          case \"ImportDeclaration\":\n            adjustInnerComments(node, node.specifiers, commentWS);\n            break;\n          case \"TSEnumDeclaration\":\n            if (!process.env.BABEL_8_BREAKING) {\n              adjustInnerComments(node, node.members, commentWS);\n            } else {\n              setInnerComments(node, comments);\n            }\n            break;\n          case \"TSEnumBody\":\n            adjustInnerComments(node, node.members, commentWS);\n            break;\n          default: {\n            setInnerComments(node, comments);\n          }\n        }\n      } else {\n        setInnerComments(node, comments);\n      }\n    }\n  }\n\n  /**\n   * Drains remaining commentStack and applies finalizeComment\n   * to each comment whitespace. Used only in parseExpression\n   * where the top level AST node is _not_ Program\n   * {@see {@link CommentsParser#finalizeComment}}\n   */\n  finalizeRemainingComments() {\n    const { commentStack } = this.state;\n    for (let i = commentStack.length - 1; i >= 0; i--) {\n      this.finalizeComment(commentStack[i]);\n    }\n    this.state.commentStack = [];\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node trailing comments. Used in object / class\n   * property parsing. We parse `async`, `static`, `set` and `get`\n   * as an identifier but may reinterpret it into an async/static/accessor\n   * method later. In this case the identifier is not part of the AST and we\n   * should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * async /* 1 *​/ function f() {}\n   * ```\n   * the comment whitespace `/* 1 *​/` has leading node Identifier(async). When\n   * we see the function token, we create a Function node and mark `/* 1 *​/` as\n   * inner comments. So `/* 1 *​/` should be detached from the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousNodeTrailingComments(node: Node) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n    const commentWS = commentStack[length - 1];\n    if (commentWS.leadingNode === node) {\n      commentWS.leadingNode = null;\n    }\n  }\n\n  /* eslint-disable no-irregular-whitespace */\n  /**\n   * Reset previous node leading comments, assuming that `node` is a\n   * single-token node. Used in import phase modifiers parsing. We parse\n   * `module` in `import module foo from ...` as an identifier but may\n   * reinterpret it into a phase modifier later. In this case the identifier is\n   * not part of the AST and we should sync the knowledge to commentStacks\n   *\n   * For example, when parsing\n   * ```\n   * import /* 1 *​/ module a from \"a\";\n   * ```\n   * the comment whitespace `/* 1 *​/` has trailing node Identifier(module). When\n   * we see that `module` is not a default import binding, we mark `/* 1 *​/` as\n   * inner comments of the ImportDeclaration. So `/* 1 *​/` should be detached from\n   * the Identifier node.\n   *\n   * @param node the last finished AST node _before_ current token\n   */\n  /* eslint-enable no-irregular-whitespace */\n  resetPreviousIdentifierLeadingComments(node: Identifier) {\n    const { commentStack } = this.state;\n    const { length } = commentStack;\n    if (length === 0) return;\n\n    if (commentStack[length - 1].trailingNode === node) {\n      commentStack[length - 1].trailingNode = null;\n    } else if (length >= 2 && commentStack[length - 2].trailingNode === node) {\n      commentStack[length - 2].trailingNode = null;\n    }\n  }\n\n  /**\n   * Attach a node to the comment whitespaces right before/after\n   * the given range.\n   *\n   * This is used to properly attach comments around parenthesized\n   * expressions as leading/trailing comments of the inner expression.\n   */\n  takeSurroundingComments(node: Node, start: number, end: number) {\n    const { commentStack } = this.state;\n    const commentStackLength = commentStack.length;\n    if (commentStackLength === 0) return;\n    let i = commentStackLength - 1;\n\n    for (; i >= 0; i--) {\n      const commentWS = commentStack[i];\n      const commentEnd = commentWS.end;\n      const commentStart = commentWS.start;\n\n      if (commentStart === end) {\n        commentWS.leadingNode = node;\n      } else if (commentEnd === start) {\n        commentWS.trailingNode = node;\n      } else if (commentEnd < start) {\n        break;\n      }\n    }\n  }\n}\n","import * as charCodes from \"charcodes\";\n\n// Matches a whole line break (where CRLF is considered a single\n// line break). Used to count lines.\nexport const lineBreak = /\\r\\n|[\\r\\n\\u2028\\u2029]/;\nexport const lineBreakG = new RegExp(lineBreak.source, \"g\");\n\n// https://tc39.github.io/ecma262/#sec-line-terminators\nexport function isNewLine(code: number): boolean {\n  switch (code) {\n    case charCodes.lineFeed:\n    case charCodes.carriageReturn:\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return true;\n\n    default:\n      return false;\n  }\n}\n\nexport function hasNewLine(input: string, start: number, end: number): boolean {\n  for (let i = start; i < end; i++) {\n    if (isNewLine(input.charCodeAt(i))) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport const skipWhiteSpace = /(?:\\s|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/g;\n\nexport const skipWhiteSpaceInLine =\n  /(?:[^\\S\\n\\r\\u2028\\u2029]|\\/\\/.*|\\/\\*.*?\\*\\/)*/g;\n\n// https://tc39.github.io/ecma262/#sec-white-space\nexport function isWhitespace(code: number): boolean {\n  switch (code) {\n    case 0x0009: // CHARACTER TABULATION\n    case 0x000b: // LINE TABULATION\n    case 0x000c: // FORM FEED\n    case charCodes.space:\n    case charCodes.nonBreakingSpace:\n    case charCodes.oghamSpaceMark:\n    case 0x2000: // EN QUAD\n    case 0x2001: // EM QUAD\n    case 0x2002: // EN SPACE\n    case 0x2003: // EM SPACE\n    case 0x2004: // THREE-PER-EM SPACE\n    case 0x2005: // FOUR-PER-EM SPACE\n    case 0x2006: // SIX-PER-EM SPACE\n    case 0x2007: // FIGURE SPACE\n    case 0x2008: // PUNCTUATION SPACE\n    case 0x2009: // THIN SPACE\n    case 0x200a: // HAIR SPACE\n    case 0x202f: // NARROW NO-BREAK SPACE\n    case 0x205f: // MEDIUM MATHEMATICAL SPACE\n    case 0x3000: // IDEOGRAPHIC SPACE\n    case 0xfeff: // ZERO WIDTH NO-BREAK SPACE\n      return true;\n\n    default:\n      return false;\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type { CommentWhitespace } from \"../parser/comments\";\nimport { Position } from \"../util/location.ts\";\n\nimport { types as ct, type TokContext } from \"./context.ts\";\nimport { tt, type TokenType } from \"./types.ts\";\nimport type { Errors } from \"../parse-error.ts\";\nimport type { ParseError } from \"../parse-error.ts\";\n\nexport type DeferredStrictError =\n  | typeof Errors.StrictNumericEscape\n  | typeof Errors.StrictOctalLiteral;\n\ntype TopicContextState = {\n  // When a topic binding has been currently established,\n  // then this is 1. Otherwise, it is 0. This is forwards compatible\n  // with a future plugin for multiple lexical topics.\n  maxNumOfResolvableTopics: number;\n  // When a topic binding has been currently established, and if that binding\n  // has been used as a topic reference `#`, then this is 0. Otherwise, it is\n  // `null`. This is forwards compatible with a future plugin for multiple\n  // lexical topics.\n  maxTopicIndex: null | 0;\n};\n\nexport const enum LoopLabelKind {\n  Loop = 1,\n  Switch = 2,\n}\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<State>;\n\nexport default class State {\n  @bit.storage flags: number;\n\n  @bit accessor strict = false;\n\n  startIndex: number;\n  curLine: number;\n  lineStart: number;\n\n  // And, if locations are used, the {line, column} object\n  // corresponding to those offsets\n  startLoc: Position;\n  endLoc: Position;\n\n  init({\n    strictMode,\n    sourceType,\n    startIndex,\n    startLine,\n    startColumn,\n  }: Options): void {\n    this.strict =\n      strictMode === false\n        ? false\n        : strictMode === true\n          ? true\n          : sourceType === \"module\";\n\n    this.startIndex = startIndex;\n    this.curLine = startLine;\n    this.lineStart = -startColumn;\n    this.startLoc = this.endLoc = new Position(\n      startLine,\n      startColumn,\n      startIndex,\n    );\n  }\n\n  errors: ParseError<any>[] = [];\n\n  // Used to signify the start of a potential arrow function\n  potentialArrowAt: number = -1;\n\n  // Used to signify the start of an expression which looks like a\n  // typed arrow function, but it isn't\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowAt: number[] = [];\n\n  // Used to signify the start of an expression whose params, if it looks like\n  // an arrow function, shouldn't be converted to assignable nodes.\n  // This is used to defer the validation of typed arrow functions inside\n  // conditional expressions.\n  // e.g. a ? (b) : c => d\n  //          ^\n  noArrowParamsConversionAt: number[] = [];\n\n  // Flags to track\n  @bit accessor maybeInArrowParameters = false;\n  @bit accessor inType = false;\n  @bit accessor noAnonFunctionType = false;\n  @bit accessor hasFlowComment = false;\n  @bit accessor isAmbientContext = false;\n  @bit accessor inAbstractClass = false;\n  @bit accessor inDisallowConditionalTypesContext = false;\n\n  // For the Hack-style pipelines plugin\n  topicContext: TopicContextState = {\n    maxNumOfResolvableTopics: 0,\n    maxTopicIndex: null,\n  };\n\n  // For the F#-style pipelines plugin\n  @bit accessor soloAwait = false;\n  @bit accessor inFSharpPipelineDirectBody = false;\n\n  // Labels in scope.\n  labels: Array<{\n    kind: LoopLabelKind;\n    name?: string | null;\n    statementStart?: number;\n  }> = [];\n\n  commentsLen = 0;\n  // Comment attachment store\n  commentStack: Array<CommentWhitespace> = [];\n\n  // The current position of the tokenizer in the input.\n  pos: number = 0;\n\n  // Properties of the current token:\n  // Its type\n  type: TokenType = tt.eof;\n\n  // For tokens that include more information than their type, the value\n  value: any = null;\n\n  // Its start and end offset\n  start: number = 0;\n  end: number = 0;\n\n  // Position information for the previous token\n  // this is initialized when generating the second token.\n  lastTokEndLoc: Position = null;\n  // this is initialized when generating the second token.\n  lastTokStartLoc: Position = null;\n\n  // The context stack is used to track whether the apostrophe \"`\" starts\n  // or ends a string template\n  context: Array<TokContext> = [ct.brace];\n\n  // Used to track whether a JSX element is allowed to form\n  @bit accessor canStartJSXElement = true;\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  @bit accessor containsEsc = false;\n\n  // Used to track invalid escape sequences in template literals,\n  // that must be reported if the template is not tagged.\n  firstInvalidTemplateEscapePos: null | Position = null;\n\n  @bit accessor hasTopLevelAwait = false;\n\n  // This property is used to track the following errors\n  // - StrictNumericEscape\n  // - StrictOctalLiteral\n  //\n  // in a literal that occurs prior to/immediately after a \"use strict\" directive.\n\n  // todo(JLHwung): set strictErrors to null and avoid recording string errors\n  // after a non-directive is parsed\n  strictErrors: Map<number, [DeferredStrictError, Position]> = new Map();\n\n  // Tokens length in token store\n  tokensLength: number = 0;\n\n  /**\n   * When we add a new property, we must manually update the `clone` method\n   * @see State#clone\n   */\n\n  curPosition(): Position {\n    return new Position(\n      this.curLine,\n      this.pos - this.lineStart,\n      this.pos + this.startIndex,\n    );\n  }\n\n  clone(): State {\n    const state = new State();\n    state.flags = this.flags;\n    state.startIndex = this.startIndex;\n    state.curLine = this.curLine;\n    state.lineStart = this.lineStart;\n    state.startLoc = this.startLoc;\n    state.endLoc = this.endLoc;\n    state.errors = this.errors.slice();\n    state.potentialArrowAt = this.potentialArrowAt;\n    state.noArrowAt = this.noArrowAt.slice();\n    state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();\n    state.topicContext = this.topicContext;\n    state.labels = this.labels.slice();\n    state.commentsLen = this.commentsLen;\n    state.commentStack = this.commentStack.slice();\n    state.pos = this.pos;\n    state.type = this.type;\n    state.value = this.value;\n    state.start = this.start;\n    state.end = this.end;\n    state.lastTokEndLoc = this.lastTokEndLoc;\n    state.lastTokStartLoc = this.lastTokStartLoc;\n    state.context = this.context.slice();\n    state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;\n    state.strictErrors = this.strictErrors;\n    state.tokensLength = this.tokensLength;\n\n    return state;\n  }\n}\n\nexport type LookaheadState = {\n  pos: number;\n  value: any;\n  type: TokenType;\n  start: number;\n  end: number;\n  context: TokContext[];\n  startLoc: Position;\n  lastTokEndLoc: Position;\n  curLine: number;\n  lineStart: number;\n  curPosition: State[\"curPosition\"];\n  /* Used only in readToken_mult_modulo */\n  inType: boolean;\n  // These boolean properties are not initialized in createLookaheadState()\n  // instead they will only be set by the tokenizer\n  containsEsc?: boolean;\n};\n","// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\n// The following character codes are forbidden from being\n// an immediate sibling of NumericLiteralSeparator _\nconst forbiddenNumericSeparatorSiblings = {\n  decBinOct: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseB,\n    charCodes.uppercaseE,\n    charCodes.uppercaseO,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseB,\n    charCodes.lowercaseE,\n    charCodes.lowercaseO,\n  ]),\n  hex: new Set<number>([\n    charCodes.dot,\n    charCodes.uppercaseX,\n    charCodes.underscore, // multiple separators are not allowed\n    charCodes.lowercaseX,\n  ]),\n};\n\nconst isAllowedNumericSeparatorSibling = {\n  // 0 - 1\n  bin: (ch: number) => ch === charCodes.digit0 || ch === charCodes.digit1,\n\n  // 0 - 7\n  oct: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit7,\n\n  // 0 - 9\n  dec: (ch: number) => ch >= charCodes.digit0 && ch <= charCodes.digit9,\n\n  // 0 - 9, A - F, a - f,\n  hex: (ch: number) =>\n    (ch >= charCodes.digit0 && ch <= charCodes.digit9) ||\n    (ch >= charCodes.uppercaseA && ch <= charCodes.uppercaseF) ||\n    (ch >= charCodes.lowercaseA && ch <= charCodes.lowercaseF),\n};\n\nexport type StringContentsErrorHandlers = EscapedCharErrorHandlers & {\n  unterminated(\n    initialPos: number,\n    initialLineStart: number,\n    initialCurLine: number,\n  ): void;\n};\n\nexport function readStringContents(\n  type: \"single\" | \"double\" | \"template\",\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  errors: StringContentsErrorHandlers,\n) {\n  const initialPos = pos;\n  const initialLineStart = lineStart;\n  const initialCurLine = curLine;\n\n  let out = \"\";\n  let firstInvalidLoc = null;\n  let chunkStart = pos;\n  const { length } = input;\n  for (;;) {\n    if (pos >= length) {\n      errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    const ch = input.charCodeAt(pos);\n    if (isStringEnd(type, ch, input, pos)) {\n      out += input.slice(chunkStart, pos);\n      break;\n    }\n    if (ch === charCodes.backslash) {\n      out += input.slice(chunkStart, pos);\n      const res = readEscapedChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        type === \"template\",\n        errors,\n      );\n      if (res.ch === null && !firstInvalidLoc) {\n        firstInvalidLoc = { pos, lineStart, curLine };\n      } else {\n        out += res.ch;\n      }\n      ({ pos, lineStart, curLine } = res);\n      chunkStart = pos;\n    } else if (\n      ch === charCodes.lineSeparator ||\n      ch === charCodes.paragraphSeparator\n    ) {\n      ++pos;\n      ++curLine;\n      lineStart = pos;\n    } else if (ch === charCodes.lineFeed || ch === charCodes.carriageReturn) {\n      if (type === \"template\") {\n        out += input.slice(chunkStart, pos) + \"\\n\";\n        ++pos;\n        if (\n          ch === charCodes.carriageReturn &&\n          input.charCodeAt(pos) === charCodes.lineFeed\n        ) {\n          ++pos;\n        }\n        ++curLine;\n        chunkStart = lineStart = pos;\n      } else {\n        errors.unterminated(initialPos, initialLineStart, initialCurLine);\n      }\n    } else {\n      ++pos;\n    }\n  }\n  return process.env.BABEL_8_BREAKING\n    ? { pos, str: out, firstInvalidLoc, lineStart, curLine }\n    : {\n        pos,\n        str: out,\n        firstInvalidLoc,\n        lineStart,\n        curLine,\n        containsInvalid: !!firstInvalidLoc,\n      };\n}\n\nfunction isStringEnd(\n  type: \"single\" | \"double\" | \"template\",\n  ch: number,\n  input: string,\n  pos: number,\n) {\n  if (type === \"template\") {\n    return (\n      ch === charCodes.graveAccent ||\n      (ch === charCodes.dollarSign &&\n        input.charCodeAt(pos + 1) === charCodes.leftCurlyBrace)\n    );\n  }\n  return (\n    ch === (type === \"double\" ? charCodes.quotationMark : charCodes.apostrophe)\n  );\n}\n\ntype EscapedCharErrorHandlers = HexCharErrorHandlers &\n  CodePointErrorHandlers & {\n    strictNumericEscape(pos: number, lineStart: number, curLine: number): void;\n  };\n\nfunction readEscapedChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  inTemplate: boolean,\n  errors: EscapedCharErrorHandlers,\n) {\n  const throwOnInvalid = !inTemplate;\n  pos++; // skip '\\'\n\n  const res = (ch: string | null) => ({ pos, ch, lineStart, curLine });\n\n  const ch = input.charCodeAt(pos++);\n  switch (ch) {\n    case charCodes.lowercaseN:\n      return res(\"\\n\");\n    case charCodes.lowercaseR:\n      return res(\"\\r\");\n    case charCodes.lowercaseX: {\n      let code;\n      ({ code, pos } = readHexChar(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        2,\n        false,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCharCode(code));\n    }\n    case charCodes.lowercaseU: {\n      let code;\n      ({ code, pos } = readCodePoint(\n        input,\n        pos,\n        lineStart,\n        curLine,\n        throwOnInvalid,\n        errors,\n      ));\n      return res(code === null ? null : String.fromCodePoint(code));\n    }\n    case charCodes.lowercaseT:\n      return res(\"\\t\");\n    case charCodes.lowercaseB:\n      return res(\"\\b\");\n    case charCodes.lowercaseV:\n      return res(\"\\u000b\");\n    case charCodes.lowercaseF:\n      return res(\"\\f\");\n    case charCodes.carriageReturn:\n      if (input.charCodeAt(pos) === charCodes.lineFeed) {\n        ++pos;\n      }\n    // fall through\n    case charCodes.lineFeed:\n      lineStart = pos;\n      ++curLine;\n    // fall through\n    case charCodes.lineSeparator:\n    case charCodes.paragraphSeparator:\n      return res(\"\");\n    case charCodes.digit8:\n    case charCodes.digit9:\n      if (inTemplate) {\n        return res(null);\n      } else {\n        errors.strictNumericEscape(pos - 1, lineStart, curLine);\n      }\n    // fall through\n    default:\n      if (ch >= charCodes.digit0 && ch <= charCodes.digit7) {\n        const startPos = pos - 1;\n        const match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));\n\n        let octalStr = match[0];\n\n        let octal = parseInt(octalStr, 8);\n        if (octal > 255) {\n          octalStr = octalStr.slice(0, -1);\n          octal = parseInt(octalStr, 8);\n        }\n        pos += octalStr.length - 1;\n        const next = input.charCodeAt(pos);\n        if (\n          octalStr !== \"0\" ||\n          next === charCodes.digit8 ||\n          next === charCodes.digit9\n        ) {\n          if (inTemplate) {\n            return res(null);\n          } else {\n            errors.strictNumericEscape(startPos, lineStart, curLine);\n          }\n        }\n\n        return res(String.fromCharCode(octal));\n      }\n\n      return res(String.fromCharCode(ch));\n  }\n}\n\ntype HexCharErrorHandlers = IntErrorHandlers & {\n  invalidEscapeSequence(pos: number, lineStart: number, curLine: number): void;\n};\n\n// Used to read character escape sequences ('\\x', '\\u').\nfunction readHexChar(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  len: number,\n  forceLen: boolean,\n  throwOnInvalid: boolean,\n  errors: HexCharErrorHandlers,\n) {\n  const initialPos = pos;\n  let n;\n  ({ n, pos } = readInt(\n    input,\n    pos,\n    lineStart,\n    curLine,\n    16,\n    len,\n    forceLen,\n    false,\n    errors,\n    /* bailOnError */ !throwOnInvalid,\n  ));\n  if (n === null) {\n    if (throwOnInvalid) {\n      errors.invalidEscapeSequence(initialPos, lineStart, curLine);\n    } else {\n      pos = initialPos - 1;\n    }\n  }\n  return { code: n, pos };\n}\n\nexport type IntErrorHandlers = {\n  numericSeparatorInEscapeSequence(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  unexpectedNumericSeparator(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n  ): void;\n  // It can return \"true\" to indicate that the error was handled\n  // and the int parsing should continue.\n  invalidDigit(\n    pos: number,\n    lineStart: number,\n    curLine: number,\n    radix: number,\n  ): boolean;\n};\n\nexport function readInt(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  radix: number,\n  len: number | undefined,\n  forceLen: boolean,\n  allowNumSeparator: boolean | \"bail\",\n  errors: IntErrorHandlers,\n  bailOnError: boolean,\n) {\n  const start = pos;\n  const forbiddenSiblings =\n    radix === 16\n      ? forbiddenNumericSeparatorSiblings.hex\n      : forbiddenNumericSeparatorSiblings.decBinOct;\n  const isAllowedSibling =\n    radix === 16\n      ? isAllowedNumericSeparatorSibling.hex\n      : radix === 10\n        ? isAllowedNumericSeparatorSibling.dec\n        : radix === 8\n          ? isAllowedNumericSeparatorSibling.oct\n          : isAllowedNumericSeparatorSibling.bin;\n\n  let invalid = false;\n  let total = 0;\n\n  for (let i = 0, e = len == null ? Infinity : len; i < e; ++i) {\n    const code = input.charCodeAt(pos);\n    let val;\n\n    if (code === charCodes.underscore && allowNumSeparator !== \"bail\") {\n      const prev = input.charCodeAt(pos - 1);\n      const next = input.charCodeAt(pos + 1);\n\n      if (!allowNumSeparator) {\n        if (bailOnError) return { n: null, pos };\n        errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);\n      } else if (\n        Number.isNaN(next) ||\n        !isAllowedSibling(next) ||\n        forbiddenSiblings.has(prev) ||\n        forbiddenSiblings.has(next)\n      ) {\n        if (bailOnError) return { n: null, pos };\n        errors.unexpectedNumericSeparator(pos, lineStart, curLine);\n      }\n\n      // Ignore this _ character\n      ++pos;\n      continue;\n    }\n\n    if (code >= charCodes.lowercaseA) {\n      val = code - charCodes.lowercaseA + charCodes.lineFeed;\n    } else if (code >= charCodes.uppercaseA) {\n      val = code - charCodes.uppercaseA + charCodes.lineFeed;\n    } else if (charCodes.isDigit(code)) {\n      val = code - charCodes.digit0; // 0-9\n    } else {\n      val = Infinity;\n    }\n    if (val >= radix) {\n      // If we found a digit which is too big, errors.invalidDigit can return true to avoid\n      // breaking the loop (this is used for error recovery).\n      if (val <= 9 && bailOnError) {\n        return { n: null, pos };\n      } else if (\n        val <= 9 &&\n        errors.invalidDigit(pos, lineStart, curLine, radix)\n      ) {\n        val = 0;\n      } else if (forceLen) {\n        val = 0;\n        invalid = true;\n      } else {\n        break;\n      }\n    }\n    ++pos;\n    total = total * radix + val;\n  }\n  if (pos === start || (len != null && pos - start !== len) || invalid) {\n    return { n: null, pos };\n  }\n\n  return { n: total, pos };\n}\n\nexport type CodePointErrorHandlers = HexCharErrorHandlers & {\n  invalidCodePoint(pos: number, lineStart: number, curLine: number): void;\n};\n\nexport function readCodePoint(\n  input: string,\n  pos: number,\n  lineStart: number,\n  curLine: number,\n  throwOnInvalid: boolean,\n  errors: CodePointErrorHandlers,\n) {\n  const ch = input.charCodeAt(pos);\n  let code;\n\n  if (ch === charCodes.leftCurlyBrace) {\n    ++pos;\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      input.indexOf(\"}\", pos) - pos,\n      true,\n      throwOnInvalid,\n      errors,\n    ));\n    ++pos;\n    if (code !== null && code > 0x10ffff) {\n      if (throwOnInvalid) {\n        errors.invalidCodePoint(pos, lineStart, curLine);\n      } else {\n        return { code: null, pos };\n      }\n    }\n  } else {\n    ({ code, pos } = readHexChar(\n      input,\n      pos,\n      lineStart,\n      curLine,\n      4,\n      false,\n      throwOnInvalid,\n      errors,\n    ));\n  }\n  return { code, pos };\n}\n","/*:: declare var invariant; */\n\nimport { OptionFlags, type Options } from \"../options.ts\";\nimport {\n  Position,\n  SourceLocation,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport CommentsParser, { type CommentWhitespace } from \"../parser/comments.ts\";\nimport type * as N from \"../types.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIdentifierStart, isIdentifierChar } from \"../util/identifier.ts\";\nimport {\n  tokenIsKeyword,\n  tokenLabelName,\n  tt,\n  keywords as keywordTypes,\n  type TokenType,\n} from \"./types.ts\";\nimport type { TokContext } from \"./context.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport {\n  lineBreakG,\n  isNewLine,\n  isWhitespace,\n  skipWhiteSpace,\n  skipWhiteSpaceInLine,\n} from \"../util/whitespace.ts\";\nimport State from \"./state.ts\";\nimport type { LookaheadState, DeferredStrictError } from \"./state.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { Node } from \"../types.ts\";\n\nimport {\n  readInt,\n  readCodePoint,\n  readStringContents,\n  type IntErrorHandlers,\n  type CodePointErrorHandlers,\n  type StringContentsErrorHandlers,\n} from \"@babel/helper-string-parser\";\n\nimport type { Plugin } from \"../typings.ts\";\n\nfunction buildPosition(pos: number, lineStart: number, curLine: number) {\n  return new Position(curLine, pos - lineStart, pos);\n}\n\nconst VALID_REGEX_FLAGS = new Set([\n  charCodes.lowercaseG,\n  charCodes.lowercaseM,\n  charCodes.lowercaseS,\n  charCodes.lowercaseI,\n  charCodes.lowercaseY,\n  charCodes.lowercaseU,\n  charCodes.lowercaseD,\n  charCodes.lowercaseV,\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\nexport class Token {\n  constructor(state: State) {\n    const startIndex = state.startIndex || 0;\n    this.type = state.type;\n    this.value = state.value;\n    this.start = startIndex + state.start;\n    this.end = startIndex + state.end;\n    this.loc = new SourceLocation(state.startLoc, state.endLoc);\n  }\n\n  declare type: TokenType;\n  declare value: any;\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n}\n\n// ## Tokenizer\n\nexport default abstract class Tokenizer extends CommentsParser {\n  isLookahead: boolean;\n\n  // Token store.\n  tokens: Array<Token | N.Comment> = [];\n\n  constructor(options: Options, input: string) {\n    super();\n    this.state = new State();\n    this.state.init(options);\n    this.input = input;\n    this.length = input.length;\n    this.comments = [];\n    this.isLookahead = false;\n  }\n\n  pushToken(token: Token | N.Comment) {\n    // Pop out invalid tokens trapped by try-catch parsing.\n    // Those parsing branches are mainly created by typescript and flow plugins.\n    this.tokens.length = this.state.tokensLength;\n    this.tokens.push(token);\n    ++this.state.tokensLength;\n  }\n\n  // Move to the next token\n\n  next(): void {\n    this.checkKeywordEscapes();\n    if (this.optionFlags & OptionFlags.Tokens) {\n      this.pushToken(new Token(this.state));\n    }\n\n    this.state.lastTokEndLoc = this.state.endLoc;\n    this.state.lastTokStartLoc = this.state.startLoc;\n    this.nextToken();\n  }\n\n  eat(type: TokenType): boolean {\n    if (this.match(type)) {\n      this.next();\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  /**\n   * Whether current token matches given type\n   */\n  match(type: TokenType): boolean {\n    return this.state.type === type;\n  }\n\n  /**\n   * Create a LookaheadState from current parser state\n   */\n  createLookaheadState(state: State): LookaheadState {\n    return {\n      pos: state.pos,\n      value: null,\n      type: state.type,\n      start: state.start,\n      end: state.end,\n      context: [this.curContext()],\n      inType: state.inType,\n      startLoc: state.startLoc,\n      lastTokEndLoc: state.lastTokEndLoc,\n      curLine: state.curLine,\n      lineStart: state.lineStart,\n      curPosition: state.curPosition,\n    };\n  }\n\n  /**\n   * lookahead peeks the next token, skipping changes to token context and\n   * comment stack. For performance it returns a limited LookaheadState\n   * instead of full parser state.\n   *\n   * The { column, line } Loc info is not included in lookahead since such usage\n   * is rare. Although it may return other location properties e.g. `curLine` and\n   * `lineStart`, these properties are not listed in the LookaheadState interface\n   * and thus the returned value is _NOT_ reliable.\n   *\n   * The tokenizer should make best efforts to avoid using any parser state\n   * other than those defined in LookaheadState\n   */\n  lookahead(): LookaheadState {\n    const old = this.state;\n    // @ts-expect-error For performance we use a simplified tokenizer state structure\n    this.state = this.createLookaheadState(old);\n\n    this.isLookahead = true;\n    this.nextToken();\n    this.isLookahead = false;\n\n    const curr = this.state;\n    this.state = old;\n    return curr;\n  }\n\n  nextTokenStart(): number {\n    return this.nextTokenStartSince(this.state.pos);\n  }\n\n  nextTokenStartSince(pos: number): number {\n    skipWhiteSpace.lastIndex = pos;\n    return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;\n  }\n\n  lookaheadCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenStart());\n  }\n\n  /**\n   * Similar to nextToken, but it will stop at line break when it is seen before the next token\n   *\n   * @returns {number} position of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  nextTokenInLineStart(): number {\n    return this.nextTokenInLineStartSince(this.state.pos);\n  }\n\n  nextTokenInLineStartSince(pos: number): number {\n    skipWhiteSpaceInLine.lastIndex = pos;\n    return skipWhiteSpaceInLine.test(this.input)\n      ? skipWhiteSpaceInLine.lastIndex\n      : pos;\n  }\n\n  /**\n   * Similar to lookaheadCharCode, but it will return the char code of line break if it is\n   * seen before the next token\n   *\n   * @returns {number} char code of the next token start or line break, whichever is seen first.\n   * @memberof Tokenizer\n   */\n  lookaheadInLineCharCode(): number {\n    return this.input.charCodeAt(this.nextTokenInLineStart());\n  }\n\n  codePointAtPos(pos: number): number {\n    // The implementation is based on\n    // https://source.chromium.org/chromium/chromium/src/+/master:v8/src/builtins/builtins-string-gen.cc;l=1455;drc=221e331b49dfefadbc6fa40b0c68e6f97606d0b3;bpv=0;bpt=1\n    // We reimplement `codePointAt` because `codePointAt` is a V8 builtin which is not inlined by TurboFan (as of M91)\n    // since `input` is mostly ASCII, an inlined `charCodeAt` wins here\n    let cp = this.input.charCodeAt(pos);\n    if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {\n      const trail = this.input.charCodeAt(pos);\n      if ((trail & 0xfc00) === 0xdc00) {\n        cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);\n      }\n    }\n    return cp;\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  setStrict(strict: boolean): void {\n    this.state.strict = strict;\n    if (strict) {\n      // Throw an error for any string decimal escape found before/immediately\n      // after a \"use strict\" directive. Strict mode will be set at parse\n      // time for any literals that occur after the next node of the strict\n      // directive.\n      this.state.strictErrors.forEach(([toParseError, at]) =>\n        this.raise(toParseError, at),\n      );\n      this.state.strictErrors.clear();\n    }\n  }\n\n  curContext(): TokContext {\n    return this.state.context[this.state.context.length - 1];\n  }\n\n  // Read a single token, updating the parser object's token-related properties.\n  nextToken(): void {\n    this.skipSpace();\n    this.state.start = this.state.pos;\n    if (!this.isLookahead) this.state.startLoc = this.state.curPosition();\n    if (this.state.pos >= this.length) {\n      this.finishToken(tt.eof);\n      return;\n    }\n\n    this.getTokenFromCode(this.codePointAtPos(this.state.pos));\n  }\n\n  // Skips a block comment, whose end is marked by commentEnd.\n  // *-/ is used by the Flow plugin, when parsing block comments nested\n  // inside Flow comments.\n  skipBlockComment(commentEnd: \"*/\" | \"*-/\"): N.CommentBlock | undefined {\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    const start = this.state.pos;\n    const end = this.input.indexOf(commentEnd, start + 2);\n    if (end === -1) {\n      // We have to call this again here because startLoc may not be set...\n      // This seems to be for performance reasons:\n      // https://github.com/babel/babel/commit/acf2a10899f696a8aaf34df78bf9725b5ea7f2da\n      throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n    }\n\n    this.state.pos = end + commentEnd.length;\n    lineBreakG.lastIndex = start + 2;\n    while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {\n      ++this.state.curLine;\n      this.state.lineStart = lineBreakG.lastIndex;\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n    /*:: invariant(startLoc) */\n\n    const comment: N.CommentBlock = {\n      type: \"CommentBlock\",\n      value: this.input.slice(start + 2, end),\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end + commentEnd.length),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  skipLineComment(startSkip: number): N.CommentLine | undefined {\n    const start = this.state.pos;\n    let startLoc;\n    if (!this.isLookahead) startLoc = this.state.curPosition();\n    let ch = this.input.charCodeAt((this.state.pos += startSkip));\n    if (this.state.pos < this.length) {\n      while (!isNewLine(ch) && ++this.state.pos < this.length) {\n        ch = this.input.charCodeAt(this.state.pos);\n      }\n    }\n\n    // If we are doing a lookahead right now we need to advance the position (above code)\n    // but we do not want to push the comment to the state.\n    if (this.isLookahead) return;\n\n    const end = this.state.pos;\n    const value = this.input.slice(start + startSkip, end);\n\n    const comment: N.CommentLine = {\n      type: \"CommentLine\",\n      value,\n      start: this.sourceToOffsetPos(start),\n      end: this.sourceToOffsetPos(end),\n      loc: new SourceLocation(startLoc, this.state.curPosition()),\n    };\n    if (this.optionFlags & OptionFlags.Tokens) this.pushToken(comment);\n    return comment;\n  }\n\n  // Called at the start of the parse and after every token. Skips\n  // whitespace and comments, and.\n\n  skipSpace(): void {\n    const spaceStart = this.state.pos;\n    const comments: N.Comment[] =\n      this.optionFlags & OptionFlags.AttachComment ? [] : null;\n    loop: while (this.state.pos < this.length) {\n      const ch = this.input.charCodeAt(this.state.pos);\n      switch (ch) {\n        case charCodes.space:\n        case charCodes.nonBreakingSpace:\n        case charCodes.tab:\n          ++this.state.pos;\n          break;\n        case charCodes.carriageReturn:\n          if (\n            this.input.charCodeAt(this.state.pos + 1) === charCodes.lineFeed\n          ) {\n            ++this.state.pos;\n          }\n        // fall through\n        case charCodes.lineFeed:\n        case charCodes.lineSeparator:\n        case charCodes.paragraphSeparator:\n          ++this.state.pos;\n          ++this.state.curLine;\n          this.state.lineStart = this.state.pos;\n          break;\n\n        case charCodes.slash:\n          switch (this.input.charCodeAt(this.state.pos + 1)) {\n            case charCodes.asterisk: {\n              const comment = this.skipBlockComment(\"*/\");\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            case charCodes.slash: {\n              const comment = this.skipLineComment(2);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n              break;\n            }\n\n            default:\n              break loop;\n          }\n          break;\n\n        default:\n          if (isWhitespace(ch)) {\n            ++this.state.pos;\n          } else if (\n            ch === charCodes.dash &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.dash &&\n              this.input.charCodeAt(pos + 2) === charCodes.greaterThan &&\n              (spaceStart === 0 || this.state.lineStart > spaceStart)\n            ) {\n              // A `-->` line comment\n              const comment = this.skipLineComment(3);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else if (\n            ch === charCodes.lessThan &&\n            !this.inModule &&\n            this.optionFlags & OptionFlags.AnnexB\n          ) {\n            const pos = this.state.pos;\n            if (\n              this.input.charCodeAt(pos + 1) === charCodes.exclamationMark &&\n              this.input.charCodeAt(pos + 2) === charCodes.dash &&\n              this.input.charCodeAt(pos + 3) === charCodes.dash\n            ) {\n              // `<!--`, an XML-style comment that should be interpreted as a line comment\n              const comment = this.skipLineComment(4);\n              if (comment !== undefined) {\n                this.addComment(comment);\n                comments?.push(comment);\n              }\n            } else {\n              break loop;\n            }\n          } else {\n            break loop;\n          }\n      }\n    }\n\n    if (comments?.length > 0) {\n      const end = this.state.pos;\n      const commentWhitespace: CommentWhitespace = {\n        start: this.sourceToOffsetPos(spaceStart),\n        end: this.sourceToOffsetPos(end),\n        comments,\n        leadingNode: null,\n        trailingNode: null,\n        containingNode: null,\n      };\n      this.state.commentStack.push(commentWhitespace);\n    }\n  }\n\n  // Called at the end of every token. Sets `end`, `val`, and\n  // maintains `context` and `canStartJSXElement`, and skips the space after\n  // the token, so that the next one's `start` will point at the\n  // right position.\n\n  finishToken(type: TokenType, val?: any): void {\n    this.state.end = this.state.pos;\n    this.state.endLoc = this.state.curPosition();\n    const prevType = this.state.type;\n    this.state.type = type;\n    this.state.value = val;\n\n    if (!this.isLookahead) {\n      this.updateContext(prevType);\n    }\n  }\n\n  replaceToken(type: TokenType): void {\n    this.state.type = type;\n    // @ts-expect-error the prevType of updateContext is required\n    // only when the new type is tt.slash/tt.jsxTagEnd\n    this.updateContext();\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  // number sign is \"#\"\n  readToken_numberSign(): void {\n    if (this.state.pos === 0 && this.readToken_interpreter()) {\n      return;\n    }\n\n    const nextPos = this.state.pos + 1;\n    const next = this.codePointAtPos(nextPos);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      throw this.raise(\n        Errors.UnexpectedDigitAfterHash,\n        this.state.curPosition(),\n      );\n    }\n\n    if (\n      next === charCodes.leftCurlyBrace ||\n      (next === charCodes.leftSquareBracket && this.hasPlugin(\"recordAndTuple\"))\n    ) {\n      // When we see `#{`, it is likely to be a hash record.\n      // However we don't yell at `#[` since users may intend to use \"computed private fields\",\n      // which is not allowed in the spec. Throwing expecting recordAndTuple is\n      // misleading\n      this.expectPlugin(\"recordAndTuple\");\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.getPluginOption(\"recordAndTuple\", \"syntaxType\") === \"bar\"\n      ) {\n        throw this.raise(\n          next === charCodes.leftCurlyBrace\n            ? Errors.RecordExpressionHashIncorrectStartSyntaxType\n            : Errors.TupleExpressionHashIncorrectStartSyntaxType,\n          this.state.curPosition(),\n        );\n      }\n\n      this.state.pos += 2;\n      if (next === charCodes.leftCurlyBrace) {\n        // #{\n        this.finishToken(tt.braceHashL);\n      } else {\n        // #[\n        this.finishToken(tt.bracketHashL);\n      }\n    } else if (isIdentifierStart(next)) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1(next));\n    } else if (next === charCodes.backslash) {\n      ++this.state.pos;\n      this.finishToken(tt.privateName, this.readWord1());\n    } else {\n      this.finishOp(tt.hash, 1);\n    }\n  }\n\n  readToken_dot(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next >= charCodes.digit0 && next <= charCodes.digit9) {\n      this.readNumber(true);\n      return;\n    }\n\n    if (\n      next === charCodes.dot &&\n      this.input.charCodeAt(this.state.pos + 2) === charCodes.dot\n    ) {\n      this.state.pos += 3;\n      this.finishToken(tt.ellipsis);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.dot);\n    }\n  }\n\n  readToken_slash(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.slashAssign, 2);\n    } else {\n      this.finishOp(tt.slash, 1);\n    }\n  }\n\n  readToken_interpreter(): boolean {\n    if (this.state.pos !== 0 || this.length < 2) return false;\n\n    let ch = this.input.charCodeAt(this.state.pos + 1);\n    if (ch !== charCodes.exclamationMark) return false;\n\n    const start = this.state.pos;\n    this.state.pos += 1;\n\n    while (!isNewLine(ch) && ++this.state.pos < this.length) {\n      ch = this.input.charCodeAt(this.state.pos);\n    }\n\n    const value = this.input.slice(start + 2, this.state.pos);\n\n    this.finishToken(tt.interpreterDirective, value);\n\n    return true;\n  }\n\n  readToken_mult_modulo(code: number): void {\n    // '%' or '*'\n    let type = code === charCodes.asterisk ? tt.star : tt.modulo;\n    let width = 1;\n    let next = this.input.charCodeAt(this.state.pos + 1);\n\n    // Exponentiation operator '**'\n    if (code === charCodes.asterisk && next === charCodes.asterisk) {\n      width++;\n      next = this.input.charCodeAt(this.state.pos + 2);\n      type = tt.exponent;\n    }\n\n    // '%=' or '*='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      width++;\n      // `tt.moduloAssign` is only needed to support % as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      type = code === charCodes.percentSign ? tt.moduloAssign : tt.assign;\n    }\n\n    this.finishOp(type, width);\n  }\n\n  readToken_pipe_amp(code: number): void {\n    // '||' '&&' '||=' '&&='\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      if (this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n      } else {\n        this.finishOp(\n          code === charCodes.verticalBar ? tt.logicalOR : tt.logicalAND,\n          2,\n        );\n      }\n      return;\n    }\n\n    if (code === charCodes.verticalBar) {\n      // '|>'\n      if (next === charCodes.greaterThan) {\n        this.finishOp(tt.pipeline, 2);\n        return;\n      }\n      // '|}'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.RecordExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.braceBarR);\n        return;\n      }\n\n      // '|]'\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        this.hasPlugin(\"recordAndTuple\") &&\n        next === charCodes.rightSquareBracket\n      ) {\n        if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n          throw this.raise(\n            Errors.TupleExpressionBarIncorrectEndSyntaxType,\n            this.state.curPosition(),\n          );\n        }\n        this.state.pos += 2;\n        this.finishToken(tt.bracketBarR);\n        return;\n      }\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n      return;\n    }\n\n    this.finishOp(\n      code === charCodes.verticalBar ? tt.bitwiseOR : tt.bitwiseAND,\n      1,\n    );\n  }\n\n  readToken_caret(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '^='\n    if (next === charCodes.equalsTo && !this.state.inType) {\n      // `tt.xorAssign` is only needed to support ^ as a Hack-pipe topic token.\n      // If the proposal ends up choosing a different token,\n      // it can be merged with tt.assign.\n      this.finishOp(tt.xorAssign, 2);\n    }\n    // '^^'\n    else if (\n      next === charCodes.caret &&\n      // If the ^^ token is not enabled, we don't throw but parse two single ^s\n      // because it could be a ^ hack token followed by a ^ binary operator.\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"^^\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleCaret, 2);\n\n      // `^^^` is forbidden and must be separated by a space.\n      const lookaheadCh = this.input.codePointAt(this.state.pos);\n      if (lookaheadCh === charCodes.caret) {\n        this.unexpected();\n      }\n    }\n    // '^'\n    else {\n      this.finishOp(tt.bitwiseXOR, 1);\n    }\n  }\n\n  readToken_atSign(): void {\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    // '@@'\n    if (\n      next === charCodes.atSign &&\n      this.hasPlugin([\n        \"pipelineOperator\",\n        { proposal: \"hack\", topicToken: \"@@\" },\n      ])\n    ) {\n      this.finishOp(tt.doubleAt, 2);\n    }\n    // '@'\n    else {\n      this.finishOp(tt.at, 1);\n    }\n  }\n\n  readToken_plus_min(code: number): void {\n    // '+-'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n\n    if (next === code) {\n      this.finishOp(tt.incDec, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      this.finishOp(tt.assign, 2);\n    } else {\n      this.finishOp(tt.plusMin, 1);\n    }\n  }\n\n  readToken_lt(): void {\n    // '<'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.lessThan) {\n      if (this.input.charCodeAt(pos + 2) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, 3);\n        return;\n      }\n      this.finishOp(tt.bitShiftL, 2);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.lt, 1);\n  }\n\n  readToken_gt(): void {\n    // '>'\n    const { pos } = this.state;\n    const next = this.input.charCodeAt(pos + 1);\n\n    if (next === charCodes.greaterThan) {\n      const size =\n        this.input.charCodeAt(pos + 2) === charCodes.greaterThan ? 3 : 2;\n      if (this.input.charCodeAt(pos + size) === charCodes.equalsTo) {\n        this.finishOp(tt.assign, size + 1);\n        return;\n      }\n      this.finishOp(tt.bitShiftR, size);\n      return;\n    }\n\n    if (next === charCodes.equalsTo) {\n      // <= | >=\n      this.finishOp(tt.relational, 2);\n      return;\n    }\n\n    this.finishOp(tt.gt, 1);\n  }\n\n  readToken_eq_excl(code: number): void {\n    // '=!'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    if (next === charCodes.equalsTo) {\n      this.finishOp(\n        tt.equality,\n        this.input.charCodeAt(this.state.pos + 2) === charCodes.equalsTo\n          ? 3\n          : 2,\n      );\n      return;\n    }\n    if (code === charCodes.equalsTo && next === charCodes.greaterThan) {\n      // '=>'\n      this.state.pos += 2;\n      this.finishToken(tt.arrow);\n      return;\n    }\n    this.finishOp(code === charCodes.equalsTo ? tt.eq : tt.bang, 1);\n  }\n\n  readToken_question(): void {\n    // '?'\n    const next = this.input.charCodeAt(this.state.pos + 1);\n    const next2 = this.input.charCodeAt(this.state.pos + 2);\n    if (next === charCodes.questionMark) {\n      if (next2 === charCodes.equalsTo) {\n        // '??='\n        this.finishOp(tt.assign, 3);\n      } else {\n        // '??'\n        this.finishOp(tt.nullishCoalescing, 2);\n      }\n    } else if (\n      next === charCodes.dot &&\n      !(next2 >= charCodes.digit0 && next2 <= charCodes.digit9)\n    ) {\n      // '.' not followed by a number\n      this.state.pos += 2;\n      this.finishToken(tt.questionDot);\n    } else {\n      ++this.state.pos;\n      this.finishToken(tt.question);\n    }\n  }\n\n  getTokenFromCode(code: number): void {\n    switch (code) {\n      // The interpretation of a dot depends on whether it is followed\n      // by a digit or another two dots.\n\n      case charCodes.dot:\n        this.readToken_dot();\n        return;\n      // Punctuation tokens.\n      case charCodes.leftParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenL);\n        return;\n      case charCodes.rightParenthesis:\n        ++this.state.pos;\n        this.finishToken(tt.parenR);\n        return;\n      case charCodes.semicolon:\n        ++this.state.pos;\n        this.finishToken(tt.semi);\n        return;\n      case charCodes.comma:\n        ++this.state.pos;\n        this.finishToken(tt.comma);\n        return;\n      case charCodes.leftSquareBracket:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.TupleExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // [|\n          this.state.pos += 2;\n          this.finishToken(tt.bracketBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.bracketL);\n        }\n        return;\n      case charCodes.rightSquareBracket:\n        ++this.state.pos;\n        this.finishToken(tt.bracketR);\n        return;\n      case charCodes.leftCurlyBrace:\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          this.hasPlugin(\"recordAndTuple\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.verticalBar\n        ) {\n          if (this.getPluginOption(\"recordAndTuple\", \"syntaxType\") !== \"bar\") {\n            throw this.raise(\n              Errors.RecordExpressionBarIncorrectStartSyntaxType,\n              this.state.curPosition(),\n            );\n          }\n\n          // {|\n          this.state.pos += 2;\n          this.finishToken(tt.braceBarL);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.braceL);\n        }\n        return;\n      case charCodes.rightCurlyBrace:\n        ++this.state.pos;\n        this.finishToken(tt.braceR);\n        return;\n\n      case charCodes.colon:\n        if (\n          this.hasPlugin(\"functionBind\") &&\n          this.input.charCodeAt(this.state.pos + 1) === charCodes.colon\n        ) {\n          this.finishOp(tt.doubleColon, 2);\n        } else {\n          ++this.state.pos;\n          this.finishToken(tt.colon);\n        }\n        return;\n\n      case charCodes.questionMark:\n        this.readToken_question();\n        return;\n\n      case charCodes.graveAccent:\n        this.readTemplateToken();\n        return;\n\n      case charCodes.digit0: {\n        const next = this.input.charCodeAt(this.state.pos + 1);\n        // '0x', '0X' - hex number\n        if (next === charCodes.lowercaseX || next === charCodes.uppercaseX) {\n          this.readRadixNumber(16);\n          return;\n        }\n        // '0o', '0O' - octal number\n        if (next === charCodes.lowercaseO || next === charCodes.uppercaseO) {\n          this.readRadixNumber(8);\n          return;\n        }\n        // '0b', '0B' - binary number\n        if (next === charCodes.lowercaseB || next === charCodes.uppercaseB) {\n          this.readRadixNumber(2);\n          return;\n        }\n      }\n      // Anything else beginning with a digit is an integer, octal\n      // number, or float. (fall through)\n      case charCodes.digit1:\n      case charCodes.digit2:\n      case charCodes.digit3:\n      case charCodes.digit4:\n      case charCodes.digit5:\n      case charCodes.digit6:\n      case charCodes.digit7:\n      case charCodes.digit8:\n      case charCodes.digit9:\n        this.readNumber(false);\n        return;\n\n      // Quotes produce strings.\n      case charCodes.quotationMark:\n      case charCodes.apostrophe:\n        this.readString(code);\n        return;\n\n      // Operators are parsed inline in tiny state machines. '=' (charCodes.equalsTo) 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\n      case charCodes.slash:\n        this.readToken_slash();\n        return;\n\n      case charCodes.percentSign:\n      case charCodes.asterisk:\n        this.readToken_mult_modulo(code);\n        return;\n\n      case charCodes.verticalBar:\n      case charCodes.ampersand:\n        this.readToken_pipe_amp(code);\n        return;\n\n      case charCodes.caret:\n        this.readToken_caret();\n        return;\n\n      case charCodes.plusSign:\n      case charCodes.dash:\n        this.readToken_plus_min(code);\n        return;\n\n      case charCodes.lessThan:\n        this.readToken_lt();\n        return;\n\n      case charCodes.greaterThan:\n        this.readToken_gt();\n        return;\n\n      case charCodes.equalsTo:\n      case charCodes.exclamationMark:\n        this.readToken_eq_excl(code);\n        return;\n\n      case charCodes.tilde:\n        this.finishOp(tt.tilde, 1);\n        return;\n\n      case charCodes.atSign:\n        this.readToken_atSign();\n        return;\n\n      case charCodes.numberSign:\n        this.readToken_numberSign();\n        return;\n\n      case charCodes.backslash:\n        this.readWord();\n        return;\n\n      default:\n        if (isIdentifierStart(code)) {\n          this.readWord(code);\n          return;\n        }\n    }\n\n    throw this.raise(\n      Errors.InvalidOrUnexpectedToken,\n      this.state.curPosition(),\n      {\n        unexpected: String.fromCodePoint(code),\n      },\n    );\n  }\n\n  finishOp(type: TokenType, size: number): void {\n    const str = this.input.slice(this.state.pos, this.state.pos + size);\n    this.state.pos += size;\n    this.finishToken(type, str);\n  }\n\n  readRegexp(): void {\n    const startLoc = this.state.startLoc;\n    const start = this.state.start + 1;\n    let escaped, inClass;\n    let { pos } = this.state;\n    for (; ; ++pos) {\n      if (pos >= this.length) {\n        // FIXME: explain\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      const ch = this.input.charCodeAt(pos);\n      if (isNewLine(ch)) {\n        throw this.raise(\n          Errors.UnterminatedRegExp,\n          createPositionWithColumnOffset(startLoc, 1),\n        );\n      }\n      if (escaped) {\n        escaped = false;\n      } else {\n        if (ch === charCodes.leftSquareBracket) {\n          inClass = true;\n        } else if (ch === charCodes.rightSquareBracket && inClass) {\n          inClass = false;\n        } else if (ch === charCodes.slash && !inClass) {\n          break;\n        }\n        escaped = ch === charCodes.backslash;\n      }\n    }\n    const content = this.input.slice(start, pos);\n    ++pos;\n\n    let mods = \"\";\n\n    const nextPos = () =>\n      // (pos + 1) + 1 - start\n      createPositionWithColumnOffset(startLoc, pos + 2 - start);\n\n    while (pos < this.length) {\n      const cp = this.codePointAtPos(pos);\n      // It doesn't matter if cp > 0xffff, the loop will either throw or break because we check on cp\n      const char = String.fromCharCode(cp);\n\n      // @ts-expect-error VALID_REGEX_FLAGS.has should accept expanded type: number\n      if (VALID_REGEX_FLAGS.has(cp)) {\n        if (cp === charCodes.lowercaseV) {\n          if (mods.includes(\"u\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        } else if (cp === charCodes.lowercaseU) {\n          if (mods.includes(\"v\")) {\n            this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());\n          }\n        }\n        if (mods.includes(char)) {\n          this.raise(Errors.DuplicateRegExpFlags, nextPos());\n        }\n      } else if (isIdentifierChar(cp) || cp === charCodes.backslash) {\n        this.raise(Errors.MalformedRegExpFlags, nextPos());\n      } else {\n        break;\n      }\n\n      ++pos;\n      mods += char;\n    }\n    this.state.pos = pos;\n\n    this.finishToken(tt.regexp, {\n      pattern: content,\n      flags: mods,\n    });\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  // When `forceLen` is `true`, it means that we already know that in case\n  // of a malformed number we have to skip `len` characters anyway, instead\n  // of bailing out early. For example, in \"\\u{123Z}\" we want to read up to }\n  // anyway, while in \"\\u00Z\" we will stop at Z instead of consuming four\n  // characters (and thus the closing quote).\n\n  readInt(\n    radix: number,\n    len?: number,\n    forceLen: boolean = false,\n    allowNumSeparator: boolean | \"bail\" = true,\n  ): number | null {\n    const { n, pos } = readInt(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      radix,\n      len,\n      forceLen,\n      allowNumSeparator,\n      this.errorHandlers_readInt,\n      /* bailOnError */ false,\n    );\n    this.state.pos = pos;\n    return n;\n  }\n\n  readRadixNumber(radix: number): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isBigInt = false;\n\n    this.state.pos += 2; // 0x\n    const val = this.readInt(radix);\n    if (val == null) {\n      this.raise(\n        Errors.InvalidDigit,\n        // Numeric literals can't have newlines, so this is safe to do.\n        createPositionWithColumnOffset(startLoc, 2),\n        {\n          radix,\n        },\n      );\n    }\n    const next = this.input.charCodeAt(this.state.pos);\n\n    if (next === charCodes.lowercaseN) {\n      ++this.state.pos;\n      isBigInt = true;\n    } else if (next === charCodes.lowercaseM) {\n      throw this.raise(Errors.InvalidDecimal, startLoc);\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    if (isBigInt) {\n      const str = this.input.slice(start, this.state.pos).replace(/[_n]/g, \"\");\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    this.finishToken(tt.num, val);\n  }\n\n  // Read an integer, octal integer, or floating-point number.\n\n  readNumber(startsWithDot: boolean): void {\n    const start = this.state.pos;\n    const startLoc = this.state.curPosition();\n    let isFloat = false;\n    let isBigInt = false;\n    let hasExponent = false;\n    let isOctal = false;\n\n    if (!startsWithDot && this.readInt(10) === null) {\n      this.raise(Errors.InvalidNumber, this.state.curPosition());\n    }\n    const hasLeadingZero =\n      this.state.pos - start >= 2 &&\n      this.input.charCodeAt(start) === charCodes.digit0;\n\n    if (hasLeadingZero) {\n      const integer = this.input.slice(start, this.state.pos);\n      this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);\n      if (!this.state.strict) {\n        // disallow numeric separators in non octal decimals and legacy octal likes\n        const underscorePos = integer.indexOf(\"_\");\n        if (underscorePos > 0) {\n          // Numeric literals can't have newlines, so this is safe to do.\n          this.raise(\n            Errors.ZeroDigitNumericSeparator,\n            createPositionWithColumnOffset(startLoc, underscorePos),\n          );\n        }\n      }\n      isOctal = hasLeadingZero && !/[89]/.test(integer);\n    }\n\n    let next = this.input.charCodeAt(this.state.pos);\n    if (next === charCodes.dot && !isOctal) {\n      ++this.state.pos;\n      this.readInt(10);\n      isFloat = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (\n      (next === charCodes.uppercaseE || next === charCodes.lowercaseE) &&\n      !isOctal\n    ) {\n      next = this.input.charCodeAt(++this.state.pos);\n      if (next === charCodes.plusSign || next === charCodes.dash) {\n        ++this.state.pos;\n      }\n      if (this.readInt(10) === null) {\n        this.raise(Errors.InvalidOrMissingExponent, startLoc);\n      }\n      isFloat = true;\n      hasExponent = true;\n      next = this.input.charCodeAt(this.state.pos);\n    }\n\n    if (next === charCodes.lowercaseN) {\n      // disallow floats, legacy octal syntax and non octal decimals\n      // new style octal (\"0o\") is handled in this.readRadixNumber\n      if (isFloat || hasLeadingZero) {\n        this.raise(Errors.InvalidBigIntLiteral, startLoc);\n      }\n      ++this.state.pos;\n      isBigInt = true;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && next === charCodes.lowercaseM) {\n      this.expectPlugin(\"decimal\", this.state.curPosition());\n      if (hasExponent || hasLeadingZero) {\n        this.raise(Errors.InvalidDecimal, startLoc);\n      }\n      ++this.state.pos;\n      // eslint-disable-next-line no-var\n      var isDecimal = true;\n    }\n\n    if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {\n      throw this.raise(Errors.NumberIdentifier, this.state.curPosition());\n    }\n\n    // remove \"_\" for numeric literal separator, and trailing `m` or `n`\n    const str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, \"\");\n\n    if (isBigInt) {\n      this.finishToken(tt.bigint, str);\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && isDecimal) {\n      this.finishToken(tt.decimal, str);\n      return;\n    }\n\n    const val = isOctal ? parseInt(str, 8) : parseFloat(str);\n    this.finishToken(tt.num, val);\n  }\n\n  // Read a string value, interpreting backslash-escapes.\n\n  readCodePoint(throwOnInvalid: boolean): number | null {\n    const { code, pos } = readCodePoint(\n      this.input,\n      this.state.pos,\n      this.state.lineStart,\n      this.state.curLine,\n      throwOnInvalid,\n      this.errorHandlers_readCodePoint,\n    );\n    this.state.pos = pos;\n    return code;\n  }\n\n  readString(quote: number): void {\n    const { str, pos, curLine, lineStart } = readStringContents(\n      quote === charCodes.quotationMark ? \"double\" : \"single\",\n      this.input,\n      this.state.pos + 1, // skip the quote\n      this.state.lineStart,\n      this.state.curLine,\n      this.errorHandlers_readStringContents_string,\n    );\n    this.state.pos = pos + 1; // skip the quote\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n    this.finishToken(tt.string, str);\n  }\n\n  // Reads template continuation `}...`\n  readTemplateContinuation(): void {\n    if (!this.match(tt.braceR)) {\n      this.unexpected(null, tt.braceR);\n    }\n    // rewind pos to `}`\n    this.state.pos--;\n    this.readTemplateToken();\n  }\n\n  // Reads template string tokens.\n  readTemplateToken(): void {\n    const opening = this.input[this.state.pos];\n    const { str, firstInvalidLoc, pos, curLine, lineStart } =\n      readStringContents(\n        \"template\",\n        this.input,\n        this.state.pos + 1, // skip '`' or `}`\n        this.state.lineStart,\n        this.state.curLine,\n        this.errorHandlers_readStringContents_template,\n      );\n    this.state.pos = pos + 1; // skip '`' or `$`\n    this.state.lineStart = lineStart;\n    this.state.curLine = curLine;\n\n    if (firstInvalidLoc) {\n      this.state.firstInvalidTemplateEscapePos = new Position(\n        firstInvalidLoc.curLine,\n        firstInvalidLoc.pos - firstInvalidLoc.lineStart,\n        this.sourceToOffsetPos(firstInvalidLoc.pos),\n      );\n    }\n\n    if (this.input.codePointAt(pos) === charCodes.graveAccent) {\n      this.finishToken(\n        tt.templateTail,\n        firstInvalidLoc ? null : opening + str + \"`\",\n      );\n    } else {\n      this.state.pos++; // skip '{'\n      this.finishToken(\n        tt.templateNonTail,\n        firstInvalidLoc ? null : opening + str + \"${\",\n      );\n    }\n  }\n\n  recordStrictModeErrors(toParseError: DeferredStrictError, at: Position) {\n    const index = at.index;\n\n    if (this.state.strict && !this.state.strictErrors.has(index)) {\n      this.raise(toParseError, at);\n    } else {\n      this.state.strictErrors.set(index, [toParseError, at]);\n    }\n  }\n\n  // Read an identifier, and return it as a string. Sets `this.state.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  // When `firstCode` is given, it assumes it is always an identifier start and\n  // will skip reading start position again\n\n  readWord1(firstCode?: number): string {\n    this.state.containsEsc = false;\n    let word = \"\";\n    const start = this.state.pos;\n    let chunkStart = this.state.pos;\n    if (firstCode !== undefined) {\n      this.state.pos += firstCode <= 0xffff ? 1 : 2;\n    }\n\n    while (this.state.pos < this.length) {\n      const ch = this.codePointAtPos(this.state.pos);\n      if (isIdentifierChar(ch)) {\n        this.state.pos += ch <= 0xffff ? 1 : 2;\n      } else if (ch === charCodes.backslash) {\n        this.state.containsEsc = true;\n\n        word += this.input.slice(chunkStart, this.state.pos);\n        const escStart = this.state.curPosition();\n        const identifierCheck =\n          this.state.pos === start ? isIdentifierStart : isIdentifierChar;\n\n        if (this.input.charCodeAt(++this.state.pos) !== charCodes.lowercaseU) {\n          this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());\n          chunkStart = this.state.pos - 1;\n          continue;\n        }\n\n        ++this.state.pos;\n        const esc = this.readCodePoint(true);\n        if (esc !== null) {\n          if (!identifierCheck(esc)) {\n            this.raise(Errors.EscapedCharNotAnIdentifier, escStart);\n          }\n\n          word += String.fromCodePoint(esc);\n        }\n        chunkStart = this.state.pos;\n      } else {\n        break;\n      }\n    }\n    return word + this.input.slice(chunkStart, this.state.pos);\n  }\n\n  // Read an identifier or keyword token. Will check for reserved\n  // words when necessary.\n\n  readWord(firstCode?: number): void {\n    const word = this.readWord1(firstCode);\n    const type = keywordTypes.get(word);\n    if (type !== undefined) {\n      // We don't use word as state.value here because word is a dynamic string\n      // while token label is a shared constant string\n      this.finishToken(type, tokenLabelName(type));\n    } else {\n      this.finishToken(tt.name, word);\n    }\n  }\n\n  checkKeywordEscapes(): void {\n    const { type } = this.state;\n    if (tokenIsKeyword(type) && this.state.containsEsc) {\n      this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {\n        reservedWord: tokenLabelName(type),\n      });\n    }\n  }\n\n  /**\n   * Raise a `ParseError` given the appropriate properties. If passed a\n   * `Position` for the `at` property, raises the `ParseError` at that location.\n   * Otherwise, if passed a `Node`, raises the `ParseError` at the start\n   * location of that `Node`.\n   *\n   * If `errorRecovery` is `true`, the error is pushed to the errors array and\n   * returned. If `errorRecovery` is `false`, the error is instead thrown.\n   *\n   * The return type is marked as `never` for simplicity, as error recovery\n   * will create types in an invalid AST shape.\n   */\n  raise<ErrorDetails = object>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const error = toParseError(loc, details);\n\n    if (!(this.optionFlags & OptionFlags.ErrorRecovery)) throw error;\n    if (!this.isLookahead) this.state.errors.push(error);\n\n    return error;\n  }\n\n  /**\n   * If `errorRecovery` is `false`, this method behaves identically to `raise`.\n   * If `errorRecovery` is `true`, this method will first see if there is\n   * already an error stored at the same `Position`, and replaces it with the\n   * one generated here.\n   */\n  raiseOverwrite<ErrorDetails>(\n    toParseError: ParseErrorConstructor<ErrorDetails>,\n    at: Position | Undone<Node>,\n    details: ErrorDetails = {} as ErrorDetails,\n  ): ParseError<ErrorDetails> | never {\n    const loc = at instanceof Position ? at : at.loc.start;\n    const pos = loc.index;\n    const errors = this.state.errors;\n\n    for (let i = errors.length - 1; i >= 0; i--) {\n      const error = errors[i];\n      if (error.loc.index === pos) {\n        return (errors[i] = toParseError(loc, details));\n      }\n      if (error.loc.index < pos) break;\n    }\n\n    return this.raise(toParseError, at, details);\n  }\n\n  // updateContext is used by the jsx plugin\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  updateContext(prevType: TokenType): void {}\n\n  // Raise an unexpected token error. Can take the expected token type.\n  unexpected(loc?: Position | null, type?: TokenType): void {\n    throw this.raise(\n      Errors.UnexpectedToken,\n      loc != null ? loc : this.state.startLoc,\n      {\n        expected: type ? tokenLabelName(type) : null,\n      },\n    );\n  }\n\n  expectPlugin(pluginName: Plugin, loc?: Position): true {\n    if (this.hasPlugin(pluginName)) {\n      return true;\n    }\n\n    throw this.raise(\n      Errors.MissingPlugin,\n      loc != null ? loc : this.state.startLoc,\n      {\n        missingPlugin: [pluginName],\n      },\n    );\n  }\n\n  expectOnePlugin(pluginNames: Plugin[]): void {\n    if (!pluginNames.some(name => this.hasPlugin(name))) {\n      throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {\n        missingPlugin: pluginNames,\n      });\n    }\n  }\n\n  errorBuilder(error: ParseErrorConstructor<object>) {\n    return (pos: number, lineStart: number, curLine: number) => {\n      this.raise(error, buildPosition(pos, lineStart, curLine));\n    };\n  }\n\n  errorHandlers_readInt: IntErrorHandlers = {\n    invalidDigit: (pos, lineStart, curLine, radix) => {\n      if (!(this.optionFlags & OptionFlags.ErrorRecovery)) return false;\n\n      this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {\n        radix,\n      });\n      // Continue parsing the number as if there was no invalid digit.\n      return true;\n    },\n    numericSeparatorInEscapeSequence: this.errorBuilder(\n      Errors.NumericSeparatorInEscapeSequence,\n    ),\n    unexpectedNumericSeparator: this.errorBuilder(\n      Errors.UnexpectedNumericSeparator,\n    ),\n  };\n\n  errorHandlers_readCodePoint: CodePointErrorHandlers = {\n    ...this.errorHandlers_readInt,\n    invalidEscapeSequence: this.errorBuilder(Errors.InvalidEscapeSequence),\n    invalidCodePoint: this.errorBuilder(Errors.InvalidCodePoint),\n  };\n\n  errorHandlers_readStringContents_string: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: (pos, lineStart, curLine) => {\n      this.recordStrictModeErrors(\n        Errors.StrictNumericEscape,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedString, // Report the error at the string quote\n        buildPosition(pos - 1, lineStart, curLine),\n      );\n    },\n  };\n\n  errorHandlers_readStringContents_template: StringContentsErrorHandlers = {\n    ...this.errorHandlers_readCodePoint,\n    strictNumericEscape: this.errorBuilder(Errors.StrictNumericEscape),\n    unterminated: (pos, lineStart, curLine) => {\n      throw this.raise(\n        Errors.UnterminatedTemplate,\n        buildPosition(pos, lineStart, curLine),\n      );\n    },\n  };\n}\n","import { ClassElementType } from \"./scopeflags.ts\";\nimport type { Position } from \"./location.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\n\nexport class ClassScope {\n  // A list of private named declared in the current class\n  privateNames: Set<string> = new Set();\n\n  // A list of private getters of setters without their counterpart\n  loneAccessors: Map<string, ClassElementType> = new Map();\n\n  // A list of private names used before being defined, mapping to\n  // their position.\n  undefinedPrivateNames: Map<string, Position> = new Map();\n}\n\nexport default class ClassScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ClassScope> = [];\n  undefinedPrivateNames: Map<string, Position> = new Map();\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n\n  current(): ClassScope {\n    return this.stack[this.stack.length - 1];\n  }\n\n  enter() {\n    this.stack.push(new ClassScope());\n  }\n\n  exit() {\n    const oldClassScope = this.stack.pop();\n\n    // Migrate the usage of not yet defined private names to the outer\n    // class scope, or raise an error if we reached the top-level scope.\n\n    const current = this.current();\n\n    // Array.from is needed because this is compiled to an array-like for loop\n    for (const [name, loc] of Array.from(oldClassScope.undefinedPrivateNames)) {\n      if (current) {\n        if (!current.undefinedPrivateNames.has(name)) {\n          current.undefinedPrivateNames.set(name, loc);\n        }\n      } else {\n        this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n          identifierName: name,\n        });\n      }\n    }\n  }\n\n  declarePrivateName(\n    name: string,\n    elementType: ClassElementType,\n    loc: Position,\n  ) {\n    const { privateNames, loneAccessors, undefinedPrivateNames } =\n      this.current();\n    let redefined = privateNames.has(name);\n\n    if (elementType & ClassElementType.KIND_ACCESSOR) {\n      const accessor = redefined && loneAccessors.get(name);\n      if (accessor) {\n        const oldStatic = accessor & ClassElementType.FLAG_STATIC;\n        const newStatic = elementType & ClassElementType.FLAG_STATIC;\n\n        const oldKind = accessor & ClassElementType.KIND_ACCESSOR;\n        const newKind = elementType & ClassElementType.KIND_ACCESSOR;\n\n        // The private name can be duplicated only if it is used by\n        // two accessors with different kind (get and set), and if\n        // they have the same placement (static or not).\n        redefined = oldKind === newKind || oldStatic !== newStatic;\n\n        if (!redefined) loneAccessors.delete(name);\n      } else if (!redefined) {\n        loneAccessors.set(name, elementType);\n      }\n    }\n\n    if (redefined) {\n      this.parser.raise(Errors.PrivateNameRedeclaration, loc, {\n        identifierName: name,\n      });\n    }\n\n    privateNames.add(name);\n    undefinedPrivateNames.delete(name);\n  }\n\n  usePrivateName(name: string, loc: Position) {\n    let classScope;\n    for (classScope of this.stack) {\n      if (classScope.privateNames.has(name)) return;\n    }\n\n    if (classScope) {\n      classScope.undefinedPrivateNames.set(name, loc);\n    } else {\n      // top-level\n      this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {\n        identifierName: name,\n      });\n    }\n  }\n}\n","import { Errors, type ParseErrorConstructor } from \"../parse-error.ts\";\nimport type { Position } from \"./location.ts\";\nimport type { Node } from \"../types.ts\";\nimport type Tokenizer from \"../tokenizer/index.ts\";\nimport type { Undone } from \"../parser/node.ts\";\n\n/**\n * @module util/expression-scope\n\nExpressionScope is used to track declaration errors in these ambiguous patterns:\n\n- CoverParenthesizedExpressionAndArrowParameterList\n  e.g. we don't know if `({ x })` is an parenthesized expression or an\n  arrow function parameters until we see an `=>` after `)`.\n\n- CoverCallExpressionAndAsyncArrowHead\n  e.g. we don't know if `async({ x })` is a call expression or an async arrow\n  function parameters until we see an `=>` after `)`\n\nThe following declaration errors (@see parser-errors/standard) will be recorded in\nsome expression scopes and thrown later when we know what the ambiguous pattern is\n\n- AwaitBindingIdentifier\n- AwaitExpressionFormalParameter\n- YieldInParameter\n- InvalidParenthesizedAssignment when parenthesized is an identifier\n\nThere are four different expression scope\n- Expression\n  A general scope that represents program / function body / static block. No errors\n  will be recorded nor thrown in this scope.\n\n- MaybeArrowParameterDeclaration\n  A scope that represents ambiguous arrow head e.g. `(x)`. Errors will be recorded\n  alongside parent scopes and thrown when `ExpressionScopeHandler#validateAsPattern`\n  is called.\n\n- MaybeAsyncArrowParameterDeclaration\n  A scope that represents ambiguous async arrow head e.g. `async(x)`. Errors will\n  be recorded alongside parent scopes and thrown when\n  `ExpressionScopeHandler#validateAsPattern` is called.\n\n- ParameterDeclaration\n  A scope that represents unambiguous function parameters `function(x)`. Errors\n  recorded in this scope will be thrown immediately. No errors will be recorded in\n  this scope.\n\n// @see {@link https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M | V8 Expression Scope design docs}\n */\n\nconst enum ExpressionScopeType {\n  kExpression = 0,\n  kMaybeArrowParameterDeclaration = 1,\n  kMaybeAsyncArrowParameterDeclaration = 2,\n  kParameterDeclaration = 3,\n}\n\nclass ExpressionScope {\n  declare type: ExpressionScopeType;\n\n  constructor(type: ExpressionScopeType = ExpressionScopeType.kExpression) {\n    this.type = type;\n  }\n\n  canBeArrowParameterDeclaration(): this is ArrowHeadParsingScope {\n    return (\n      this.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration ||\n      this.type === ExpressionScopeType.kMaybeArrowParameterDeclaration\n    );\n  }\n\n  isCertainlyParameterDeclaration() {\n    return this.type === ExpressionScopeType.kParameterDeclaration;\n  }\n}\n\ntype ArrowHeadParsingParameterInitializerError =\n  | typeof Errors.AwaitExpressionFormalParameter\n  | typeof Errors.YieldInParameter;\ntype ArrowHeadParsingDeclarationError =\n  | ArrowHeadParsingParameterInitializerError\n  | typeof Errors.InvalidParenthesizedAssignment\n  | typeof Errors.AwaitBindingIdentifier;\n\nclass ArrowHeadParsingScope extends ExpressionScope {\n  declarationErrors: Map<number, [ParseErrorConstructor<object>, Position]> =\n    new Map();\n  constructor(\n    type:\n      | ExpressionScopeType.kMaybeArrowParameterDeclaration\n      | ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  ) {\n    super(type);\n  }\n  recordDeclarationError(\n    ParsingErrorClass: ParseErrorConstructor<object>,\n    at: Position,\n  ) {\n    const index = at.index;\n\n    this.declarationErrors.set(index, [ParsingErrorClass, at]);\n  }\n  clearDeclarationError(index: number) {\n    this.declarationErrors.delete(index);\n  }\n  iterateErrors(\n    iterator: (a: [ArrowHeadParsingDeclarationError, Position]) => void,\n  ) {\n    this.declarationErrors.forEach(iterator);\n  }\n}\n\nexport default class ExpressionScopeHandler {\n  parser: Tokenizer;\n  stack: Array<ExpressionScope> = [new ExpressionScope()];\n\n  constructor(parser: Tokenizer) {\n    this.parser = parser;\n  }\n  enter(scope: ExpressionScope) {\n    this.stack.push(scope);\n  }\n\n  exit() {\n    this.stack.pop();\n  }\n\n  /**\n   * Record likely parameter initializer errors\n   *\n   * When current scope is a ParameterDeclaration, the error will be thrown immediately,\n   * otherwise it will be recorded to any ancestry MaybeArrowParameterDeclaration and\n   * MaybeAsyncArrowParameterDeclaration scope until an Expression scope is seen.\n   */\n  recordParameterInitializerError(\n    toParseError: ArrowHeadParsingParameterInitializerError,\n    node: Undone<Node>,\n  ): void {\n    const origin = node.loc.start;\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (!scope.isCertainlyParameterDeclaration()) {\n      if (scope.canBeArrowParameterDeclaration()) {\n        scope.recordDeclarationError(toParseError, origin);\n      } else {\n        /*:: invariant(scope.type == ExpressionScopeType.kExpression) */\n        // Type-Expression is the boundary where initializer error can populate to\n        return;\n      }\n      scope = stack[--i];\n    }\n    this.parser.raise(toParseError, origin);\n  }\n\n  /**\n   * Record errors that must be thrown if the current pattern ends up being an arrow\n   * function parameter. This is used to record parenthesized identifiers, and to record\n   * \"a as T\" and \"<T> a\" type assertions when parsing typescript.\n   *\n   * A parenthesized identifier (or type assertion) in LHS can be ambiguous because the assignment\n   * can be transformed to an assignable later, but not vice versa:\n   * For example, in `([(a) = []] = []) => {}`, we think `(a) = []` is an LHS in `[(a) = []]`,\n   * an LHS within `[(a) = []] = []`. However the LHS chain is then transformed by toAssignable,\n   * and we should throw assignment `(a)`, which is only valid in LHS. Hence we record the\n   * location of parenthesized `(a)` to current scope if it is one of MaybeArrowParameterDeclaration\n   * and MaybeAsyncArrowParameterDeclaration\n   *\n   * Unlike `recordParameterInitializerError`, we don't record to ancestry scope because we\n   * validate arrow head parsing scope before exit, and then the LHS will be unambiguous:\n   * For example, in `( x = ( [(a) = []] = [] ) ) => {}`, we should not record `(a)` in `( x = ... ) =>`\n   * arrow scope because when we finish parsing `( [(a) = []] = [] )`, it is an unambiguous assignment\n   * expression and can not be cast to pattern\n   */\n  recordArrowParameterBindingError(\n    error: ParseErrorConstructor<object>,\n    node: Node,\n  ): void {\n    const { stack } = this;\n    const scope: ExpressionScope = stack[stack.length - 1];\n    const origin = node.loc.start;\n    if (scope.isCertainlyParameterDeclaration()) {\n      this.parser.raise(error, origin);\n    } else if (scope.canBeArrowParameterDeclaration()) {\n      scope.recordDeclarationError(error, origin);\n    } else {\n      return;\n    }\n  }\n\n  /**\n   * Record likely async arrow parameter errors\n   *\n   * Errors will be recorded to any ancestry MaybeAsyncArrowParameterDeclaration\n   * scope until an Expression scope is seen.\n   */\n  recordAsyncArrowParametersError(at: Position): void {\n    const { stack } = this;\n    let i = stack.length - 1;\n    let scope: ExpressionScope = stack[i];\n    while (scope.canBeArrowParameterDeclaration()) {\n      if (\n        scope.type === ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration\n      ) {\n        scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);\n      }\n      scope = stack[--i];\n    }\n  }\n\n  validateAsPattern(): void {\n    const { stack } = this;\n    const currentScope = stack[stack.length - 1];\n    if (!currentScope.canBeArrowParameterDeclaration()) return;\n    currentScope.iterateErrors(([toParseError, loc]) => {\n      this.parser.raise(toParseError, loc);\n      // iterate from parent scope\n      let i = stack.length - 2;\n      let scope = stack[i];\n      while (scope.canBeArrowParameterDeclaration()) {\n        scope.clearDeclarationError(loc.index);\n        scope = stack[--i];\n      }\n    });\n  }\n}\n\nexport function newParameterDeclarationScope() {\n  return new ExpressionScope(ExpressionScopeType.kParameterDeclaration);\n}\n\nexport function newArrowHeadScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeArrowParameterDeclaration,\n  );\n}\n\nexport function newAsyncArrowScope() {\n  return new ArrowHeadParsingScope(\n    ExpressionScopeType.kMaybeAsyncArrowParameterDeclaration,\n  );\n}\n\nexport function newExpressionScope() {\n  return new ExpressionScope();\n}\n","// ProductionParameterHandler is a stack fashioned production parameter tracker\n// https://tc39.es/ecma262/#sec-grammar-notation\n// The tracked parameters are defined above.\n//\n// Whenever [+Await]/[+Yield] appears in the right-hand sides of a production,\n// we must enter a new tracking stack. For example when parsing\n//\n// AsyncFunctionDeclaration [Yield, Await]:\n//   async [no LineTerminator here] function BindingIdentifier[?Yield, ?Await]\n//     ( FormalParameters[~Yield, +Await] ) { AsyncFunctionBody }\n//\n// we must follow such process:\n//\n// 1. parse async keyword\n// 2. parse function keyword\n// 3. parse bindingIdentifier <= inherit current parameters: [?Await]\n// 4. enter new stack with (PARAM_AWAIT)\n// 5. parse formal parameters <= must have [Await] parameter [+Await]\n// 6. parse function body\n// 7. exit current stack\n\nexport const enum ParamKind {\n  // Initial Parameter flags\n  PARAM = 0b0000,\n  // track [Yield] production parameter\n  PARAM_YIELD = 0b0001,\n  // track [Await] production parameter\n  PARAM_AWAIT = 0b0010,\n  // track [Return] production parameter\n  PARAM_RETURN = 0b0100,\n  // track [In] production parameter\n  PARAM_IN = 0b1000,\n}\n\n// todo(flow->ts) - check if more granular type can be used,\n//  type below is not good because things like PARAM_AWAIT|PARAM_YIELD are not included\n// export type ParamKind =\n//   | typeof PARAM\n//   | typeof PARAM_AWAIT\n//   | typeof PARAM_IN\n//   | typeof PARAM_RETURN\n//   | typeof PARAM_YIELD;\n\nexport default class ProductionParameterHandler {\n  stacks: Array<ParamKind> = [];\n  enter(flags: ParamKind) {\n    this.stacks.push(flags);\n  }\n\n  exit() {\n    this.stacks.pop();\n  }\n\n  currentFlags(): ParamKind {\n    return this.stacks[this.stacks.length - 1];\n  }\n\n  get hasAwait(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;\n  }\n\n  get hasYield(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;\n  }\n\n  get hasReturn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;\n  }\n\n  get hasIn(): boolean {\n    return (this.currentFlags() & ParamKind.PARAM_IN) > 0;\n  }\n}\n\nexport function functionFlags(\n  isAsync: boolean,\n  isGenerator: boolean,\n): ParamKind {\n  return (\n    (isAsync ? ParamKind.PARAM_AWAIT : 0) |\n    (isGenerator ? ParamKind.PARAM_YIELD : 0)\n  );\n}\n","import type { Position } from \"../util/location.ts\";\nimport {\n  tokenIsLiteralPropertyName,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport Tokenizer from \"../tokenizer/index.ts\";\nimport type State from \"../tokenizer/state.ts\";\nimport type {\n  EstreePropertyDefinition,\n  Node,\n  ObjectMethod,\n  ObjectProperty,\n  PrivateName,\n} from \"../types.d.ts\";\nimport { hasNewLine } from \"../util/whitespace.ts\";\nimport { isIdentifierChar } from \"../util/identifier.ts\";\nimport ClassScopeHandler from \"../util/class-scope.ts\";\nimport ExpressionScopeHandler from \"../util/expression-scope.ts\";\nimport { ScopeFlag } from \"../util/scopeflags.ts\";\nimport ProductionParameterHandler, {\n  ParamKind,\n} from \"../util/production-parameter.ts\";\nimport {\n  Errors,\n  type ParseError,\n  type ParseErrorConstructor,\n} from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nimport type ScopeHandler from \"../util/scope.ts\";\n\ntype TryParse<Node, Error, Thrown, Aborted, FailState> = {\n  node: Node;\n  error: Error;\n  thrown: Thrown;\n  aborted: Aborted;\n  failState: FailState;\n};\n\n// ## Parser utilities\n\nexport default abstract class UtilParser extends Tokenizer {\n  // Forward-declaration: defined in parser/index.js\n  abstract getScopeHandler(): new (...args: any) => ScopeHandler;\n\n  addExtra(\n    node: Partial<Node>,\n    key: string,\n    value: any,\n    enumerable: boolean = true,\n  ): void {\n    if (!node) return;\n\n    let { extra } = node;\n    if (extra == null) {\n      extra = {};\n      node.extra = extra;\n    }\n\n    if (enumerable) {\n      extra[key] = value;\n    } else {\n      Object.defineProperty(extra, key, { enumerable, value });\n    }\n  }\n\n  // Tests whether parsed token is a contextual keyword.\n\n  isContextual(token: TokenType): boolean {\n    return this.state.type === token && !this.state.containsEsc;\n  }\n\n  isUnparsedContextual(nameStart: number, name: string): boolean {\n    const nameEnd = nameStart + name.length;\n    if (this.input.slice(nameStart, nameEnd) === name) {\n      const nextCh = this.input.charCodeAt(nameEnd);\n      return !(\n        isIdentifierChar(nextCh) ||\n        // check if `nextCh is between 0xd800 - 0xdbff,\n        // if `nextCh` is NaN, `NaN & 0xfc00` is 0, the function\n        // returns true\n        (nextCh & 0xfc00) === 0xd800\n      );\n    }\n    return false;\n  }\n\n  isLookaheadContextual(name: string): boolean {\n    const next = this.nextTokenStart();\n    return this.isUnparsedContextual(next, name);\n  }\n\n  // Consumes contextual keyword if possible.\n\n  eatContextual(token: TokenType): boolean {\n    if (this.isContextual(token)) {\n      this.next();\n      return true;\n    }\n    return false;\n  }\n\n  // Asserts that following token is given contextual keyword.\n\n  expectContextual(\n    token: TokenType,\n    toParseError?: ParseErrorConstructor<any>,\n  ): void {\n    if (!this.eatContextual(token)) {\n      if (toParseError != null) {\n        throw this.raise(toParseError, this.state.startLoc);\n      }\n      this.unexpected(null, token);\n    }\n  }\n\n  // Test whether a semicolon can be inserted at the current position.\n\n  canInsertSemicolon(): boolean {\n    return (\n      this.match(tt.eof) ||\n      this.match(tt.braceR) ||\n      this.hasPrecedingLineBreak()\n    );\n  }\n\n  hasPrecedingLineBreak(): boolean {\n    return hasNewLine(\n      this.input,\n      this.offsetToSourcePos(this.state.lastTokEndLoc.index),\n      this.state.start,\n    );\n  }\n\n  hasFollowingLineBreak(): boolean {\n    return hasNewLine(this.input, this.state.end, this.nextTokenStart());\n  }\n\n  isLineTerminator(): boolean {\n    return this.eat(tt.semi) || this.canInsertSemicolon();\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  semicolon(allowAsi: boolean = true): void {\n    if (allowAsi ? this.isLineTerminator() : this.eat(tt.semi)) return;\n    this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);\n  }\n\n  // Expect a token of a given type. If found, consume it, otherwise,\n  // raise an unexpected token error at given pos.\n\n  expect(type: TokenType, loc?: Position | null): void {\n    if (!this.eat(type)) {\n      this.unexpected(loc, type);\n    }\n  }\n\n  // tryParse will clone parser state.\n  // It is expensive and should be used with cautions\n  tryParse<T extends Node | ReadonlyArray<Node>>(\n    fn: (abort: (node?: T) => never) => T,\n    oldState: State = this.state.clone(),\n  ):\n    | TryParse<T, null, false, false, null>\n    | TryParse<T | null, ParseError<any>, boolean, false, State>\n    | TryParse<T | null, null, false, true, State> {\n    const abortSignal: {\n      node: T | null;\n    } = { node: null };\n    try {\n      const node = fn((node = null) => {\n        abortSignal.node = node;\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw abortSignal;\n      });\n      if (this.state.errors.length > oldState.errors.length) {\n        const failState = this.state;\n        this.state = oldState;\n        // tokensLength should be preserved during error recovery mode\n        // since the parser does not halt and will instead parse the\n        // remaining tokens\n        this.state.tokensLength = failState.tokensLength;\n        return {\n          node,\n          error: failState.errors[oldState.errors.length],\n          thrown: false,\n          aborted: false,\n          failState,\n        };\n      }\n\n      return {\n        node,\n        error: null,\n        thrown: false,\n        aborted: false,\n        failState: null,\n      };\n    } catch (error) {\n      const failState = this.state;\n      this.state = oldState;\n      if (error instanceof SyntaxError) {\n        // @ts-expect-error casting general syntax error to parse error\n        return { node: null, error, thrown: true, aborted: false, failState };\n      }\n      if (error === abortSignal) {\n        return {\n          node: abortSignal.node,\n          error: null,\n          thrown: false,\n          aborted: true,\n          failState,\n        };\n      }\n\n      throw error;\n    }\n  }\n\n  checkExpressionErrors(\n    refExpressionErrors: ExpressionErrors | undefined | null,\n    andThrow: boolean,\n  ) {\n    if (!refExpressionErrors) return false;\n    const {\n      shorthandAssignLoc,\n      doubleProtoLoc,\n      privateKeyLoc,\n      optionalParametersLoc,\n    } = refExpressionErrors;\n\n    const hasErrors =\n      !!shorthandAssignLoc ||\n      !!doubleProtoLoc ||\n      !!optionalParametersLoc ||\n      !!privateKeyLoc;\n\n    if (!andThrow) {\n      return hasErrors;\n    }\n\n    if (shorthandAssignLoc != null) {\n      this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n    }\n\n    if (doubleProtoLoc != null) {\n      this.raise(Errors.DuplicateProto, doubleProtoLoc);\n    }\n\n    if (privateKeyLoc != null) {\n      this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n    }\n\n    if (optionalParametersLoc != null) {\n      this.unexpected(optionalParametersLoc);\n    }\n  }\n\n  /**\n   * Test if current token is a literal property name\n   * https://tc39.es/ecma262/#prod-LiteralPropertyName\n   * LiteralPropertyName:\n   *   IdentifierName\n   *   StringLiteral\n   *   NumericLiteral\n   *   BigIntLiteral\n   */\n  isLiteralPropertyName(): boolean {\n    return tokenIsLiteralPropertyName(this.state.type);\n  }\n\n  /**\n   * Test if given node is a PrivateName\n   * will be overridden in ESTree plugin\n   */\n  isPrivateName(node: Node): node is PrivateName {\n    return node.type === \"PrivateName\";\n  }\n\n  /**\n   * Return the string value of a given private name\n   * WITHOUT `#`\n   * @see {@link https://tc39.es/ecma262/#sec-static-semantics-stringvalue}\n   */\n  getPrivateNameSV(node: PrivateName): string {\n    return node.id.name;\n  }\n\n  /**\n   * Return whether the given node is a member/optional chain that\n   * contains a private name as its property\n   * It is overridden in ESTree plugin\n   */\n  hasPropertyAsPrivateName(node: Node): boolean {\n    return (\n      (node.type === \"MemberExpression\" ||\n        node.type === \"OptionalMemberExpression\") &&\n      this.isPrivateName(node.property)\n    );\n  }\n\n  isObjectProperty(\n    node: Node,\n  ): node is ObjectProperty | EstreePropertyDefinition {\n    return node.type === \"ObjectProperty\";\n  }\n\n  isObjectMethod(node: Node): node is ObjectMethod {\n    return node.type === \"ObjectMethod\";\n  }\n\n  initializeScopes(\n    this: Parser,\n    inModule: boolean = this.options.sourceType === \"module\",\n  ): () => void {\n    // Initialize state\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n\n    const oldExportedIdentifiers = this.exportedIdentifiers;\n    this.exportedIdentifiers = new Set();\n\n    // initialize scopes\n    const oldInModule = this.inModule;\n    this.inModule = inModule;\n\n    const oldScope = this.scope;\n    const ScopeHandler = this.getScopeHandler();\n    this.scope = new ScopeHandler(this, inModule);\n\n    const oldProdParam = this.prodParam;\n    this.prodParam = new ProductionParameterHandler();\n\n    const oldClassScope = this.classScope;\n    this.classScope = new ClassScopeHandler(this);\n\n    const oldExpressionScope = this.expressionScope;\n    this.expressionScope = new ExpressionScopeHandler(this);\n\n    return () => {\n      // Revert state\n      this.state.labels = oldLabels;\n      this.exportedIdentifiers = oldExportedIdentifiers;\n\n      // Revert scopes\n      this.inModule = oldInModule;\n      this.scope = oldScope;\n      this.prodParam = oldProdParam;\n      this.classScope = oldClassScope;\n      this.expressionScope = oldExpressionScope;\n    };\n  }\n\n  enterInitialScopes() {\n    let paramFlags = ParamKind.PARAM;\n    if (this.inModule) {\n      paramFlags |= ParamKind.PARAM_AWAIT;\n    }\n    this.scope.enter(ScopeFlag.PROGRAM);\n    this.prodParam.enter(paramFlags);\n  }\n\n  checkDestructuringPrivate(refExpressionErrors: ExpressionErrors) {\n    const { privateKeyLoc } = refExpressionErrors;\n    if (privateKeyLoc !== null) {\n      this.expectPlugin(\"destructuringPrivate\", privateKeyLoc);\n    }\n  }\n}\n\n/**\n * The ExpressionErrors is a context struct used to track ambiguous patterns\n * When we are sure the parsed pattern is a RHS, which means it is not a pattern,\n * we will throw on this position on invalid assign syntax, otherwise it will be reset to null\n *\n * Types of ExpressionErrors:\n *\n * - **shorthandAssignLoc**: track initializer `=` position\n * - **doubleProtoLoc**: track the duplicate `__proto__` key position\n * - **privateKeyLoc**: track private key `#p` position\n * - **optionalParametersLoc**: track the optional parameter (`?`).\n *   It's only used by typescript and flow plugins\n */\nexport class ExpressionErrors {\n  shorthandAssignLoc: Position | undefined | null = null;\n  doubleProtoLoc: Position | undefined | null = null;\n  privateKeyLoc: Position | undefined | null = null;\n  optionalParametersLoc: Position | undefined | null = null;\n}\n","import UtilParser from \"./util.ts\";\nimport { SourceLocation, type Position } from \"../util/location.ts\";\nimport type { Comment, Node as NodeType, NodeBase } from \"../types.ts\";\nimport { OptionFlags } from \"../options.ts\";\n\n// Start an AST node, attaching a start offset.\n\nclass Node implements NodeBase {\n  constructor(parser: UtilParser, pos: number, loc: Position) {\n    this.start = pos;\n    this.end = 0;\n    this.loc = new SourceLocation(loc);\n    if (parser?.optionFlags & OptionFlags.Ranges) this.range = [pos, 0];\n    if (parser?.filename) this.loc.filename = parser.filename;\n  }\n\n  type: string = \"\";\n  declare start: number;\n  declare end: number;\n  declare loc: SourceLocation;\n  declare range: [number, number];\n  declare leadingComments: Array<Comment>;\n  declare trailingComments: Array<Comment>;\n  declare innerComments: Array<Comment>;\n  declare extra: {\n    [key: string]: any;\n  };\n}\nconst NodePrototype = Node.prototype;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error __clone is not defined in Node prototype\n  NodePrototype.__clone = function (): Node {\n    const newNode = new Node(undefined, this.start, this.loc.start);\n    const keys = Object.keys(this) as (keyof Node)[];\n    for (let i = 0, length = keys.length; i < length; i++) {\n      const key = keys[i];\n      // Do not clone comments that are already attached to the node\n      if (\n        key !== \"leadingComments\" &&\n        key !== \"trailingComments\" &&\n        key !== \"innerComments\"\n      ) {\n        // @ts-expect-error cloning this to newNode\n        newNode[key] = this[key];\n      }\n    }\n\n    return newNode;\n  };\n}\n\nfunction clonePlaceholder(node: any): any {\n  return cloneIdentifier(node);\n}\n\nexport function cloneIdentifier(node: any): any {\n  // We don't need to clone `typeAnnotations` and `optional`: because\n  // cloneIdentifier is only used in object shorthand and named import/export.\n  // Neither of them allow type annotations after the identifier or optional identifier\n  const { type, start, end, loc, range, extra, name } = node;\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  cloned.extra = extra;\n  cloned.name = name;\n  if (type === \"Placeholder\") {\n    cloned.expectedNode = node.expectedNode;\n  }\n  return cloned;\n}\n\nexport function cloneStringLiteral(node: any): any {\n  const { type, start, end, loc, range, extra } = node;\n  if (type === \"Placeholder\") {\n    return clonePlaceholder(node);\n  }\n  const cloned = Object.create(NodePrototype);\n  cloned.type = type;\n  cloned.start = start;\n  cloned.end = end;\n  cloned.loc = loc;\n  cloned.range = range;\n  if (node.raw !== undefined) {\n    // estree set node.raw instead of node.extra\n    cloned.raw = node.raw;\n  } else {\n    cloned.extra = extra;\n  }\n  cloned.value = node.value;\n  return cloned;\n}\n\nexport type Undone<T extends NodeType> = Omit<T, \"type\">;\n\nexport abstract class NodeUtils extends UtilParser {\n  startNode<T extends NodeType = never>(): Undone<T> {\n    const loc = this.state.startLoc;\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  startNodeAt<T extends NodeType = never>(loc: Position): Undone<T> {\n    return new Node(this, loc.index, loc) as unknown as Undone<T>;\n  }\n\n  /** Start a new node with a previous node's location. */\n  startNodeAtNode<T extends NodeType = never>(\n    type: Undone<NodeType>,\n  ): Undone<T> {\n    return this.startNodeAt(type.loc.start);\n  }\n\n  // Finish an AST node, adding `type` and `end` properties.\n\n  finishNode<T extends NodeType>(node: Undone<T>, type: T[\"type\"]): T {\n    return this.finishNodeAt(node, type, this.state.lastTokEndLoc);\n  }\n\n  // Finish node at given position\n\n  finishNodeAt<T extends NodeType>(\n    node: Omit<T, \"type\">,\n    type: T[\"type\"],\n    endLoc: Position,\n  ): T {\n    if (process.env.NODE_ENV !== \"production\" && node.end > 0) {\n      throw new Error(\n        \"Do not call finishNode*() twice on the same node.\" +\n          \" Instead use resetEndLocation() or change type directly.\",\n      );\n    }\n    (node as T).type = type;\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n    if (this.optionFlags & OptionFlags.AttachComment) {\n      this.processComment(node as T);\n    }\n    return node as T;\n  }\n\n  resetStartLocation(node: NodeBase, startLoc: Position): void {\n    node.start = startLoc.index;\n    node.loc.start = startLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[0] = startLoc.index;\n  }\n\n  resetEndLocation(\n    node: NodeBase,\n    endLoc: Position = this.state.lastTokEndLoc,\n  ): void {\n    node.end = endLoc.index;\n    node.loc.end = endLoc;\n    if (this.optionFlags & OptionFlags.Ranges) node.range[1] = endLoc.index;\n  }\n\n  /**\n   * Reset the start location of node to the start location of locationNode\n   */\n  resetStartLocationFromNode(node: NodeBase, locationNode: NodeBase): void {\n    this.resetStartLocation(node, locationNode.loc.start);\n  }\n}\n","/*:: declare var invariant; */\n\nimport type Parser from \"../../parser/index.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeyword,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLiteralPropertyName,\n  tokenLabelName,\n  tt,\n  type TokenType,\n  tokenIsFlowInterfaceOrTypeOrOpaque,\n} from \"../../tokenizer/types.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport * as charCodes from \"charcodes\";\nimport { isIteratorStart } from \"../../util/identifier.ts\";\nimport FlowScopeHandler from \"./scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\n\nconst reservedTypes = new Set([\n  \"_\",\n  \"any\",\n  \"bool\",\n  \"boolean\",\n  \"empty\",\n  \"extends\",\n  \"false\",\n  \"interface\",\n  \"mixed\",\n  \"null\",\n  \"number\",\n  \"static\",\n  \"string\",\n  \"true\",\n  \"typeof\",\n  \"void\",\n]);\n\n/* eslint sort-keys: \"error\" */\n// The Errors key follows https://github.com/facebook/flow/blob/master/src/parser/parse_error.ml unless it does not exist\nconst FlowErrors = ParseErrorEnum`flow`({\n  AmbiguousConditionalArrow:\n    \"Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.\",\n  AmbiguousDeclareModuleKind:\n    \"Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.\",\n  // TODO: When we get proper string enums in typescript make this ReservedType.\n  // Not really worth it to do the whole $Values dance with reservedTypes set.\n  AssignReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Cannot overwrite reserved type ${reservedType}.`,\n  DeclareClassElement:\n    \"The `declare` modifier can only appear on class fields.\",\n  DeclareClassFieldInitializer:\n    \"Initializers are not allowed in fields with the `declare` modifier.\",\n  DuplicateDeclareModuleExports:\n    \"Duplicate `declare module.exports` statement.\",\n  EnumBooleanMemberNotInitialized: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Boolean enum members need to be initialized. Use either \\`${memberName} = true,\\` or \\`${memberName} = false,\\` in enum \\`${enumName}\\`.`,\n  EnumDuplicateMemberName: ({\n    memberName,\n    enumName,\n  }: {\n    memberName: string;\n    enumName: string;\n  }) =>\n    `Enum member names need to be unique, but the name \\`${memberName}\\` has already been used before in enum \\`${enumName}\\`.`,\n  EnumInconsistentMemberValues: ({ enumName }: { enumName: string }) =>\n    `Enum \\`${enumName}\\` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.`,\n  EnumInvalidExplicitType: ({\n    invalidEnumType,\n    enumName,\n  }: {\n    invalidEnumType: string;\n    enumName: string;\n  }) =>\n    `Enum type \\`${invalidEnumType}\\` is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidExplicitTypeUnknownSupplied: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `Supplied enum type is not valid. Use one of \\`boolean\\`, \\`number\\`, \\`string\\`, or \\`symbol\\` in enum \\`${enumName}\\`.`,\n\n  // TODO: When moving to typescript, we should either have each of the\n  // following errors only accept the specific strings they want:\n  //\n  // ...PrimaryType: explicitType: \"string\" | \"number\" | \"boolean\"\n  // ...SymbolType: explicitType: \"symbol\"\n  // ...UnknownType: explicitType: null\n  //\n  // Or, alternatively, merge these three errors together into one\n  // `EnumInvalidMemberInitializer` error that can accept `EnumExplicitType`\n  // without alteration, and then just have its message change based on the\n  // explicitType.\n  EnumInvalidMemberInitializerPrimaryType: ({\n    enumName,\n    memberName,\n    explicitType,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Enum \\`${enumName}\\` has type \\`${explicitType}\\`, so the initializer of \\`${memberName}\\` needs to be a ${explicitType} literal.`,\n  EnumInvalidMemberInitializerSymbolType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `Symbol enum members cannot be initialized. Use \\`${memberName},\\` in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberInitializerUnknownType: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n    explicitType: EnumExplicitType;\n  }) =>\n    `The enum member initializer for \\`${memberName}\\` needs to be a literal (either a boolean, number, or string) in enum \\`${enumName}\\`.`,\n  EnumInvalidMemberName: ({\n    enumName,\n    memberName,\n    suggestion,\n  }: {\n    enumName: string;\n    memberName: string;\n    suggestion: string;\n  }) =>\n    `Enum member names cannot start with lowercase 'a' through 'z'. Instead of using \\`${memberName}\\`, consider using \\`${suggestion}\\`, in enum \\`${enumName}\\`.`,\n  EnumNumberMemberNotInitialized: ({\n    enumName,\n    memberName,\n  }: {\n    enumName: string;\n    memberName: string;\n  }) =>\n    `Number enum members need to be initialized, e.g. \\`${memberName} = 1\\` in enum \\`${enumName}\\`.`,\n  EnumStringMemberInconsistentlyInitialized: ({\n    enumName,\n  }: {\n    enumName: string;\n  }) =>\n    `String enum members need to consistently either all use initializers, or use no initializers, in enum \\`${enumName}\\`.`,\n  GetterMayNotHaveThisParam: \"A getter cannot have a `this` parameter.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` or `typeof` keyword.\",\n  ImportTypeShorthandOnlyInPureImport:\n    \"The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.\",\n  InexactInsideExact:\n    \"Explicit inexact syntax cannot appear inside an explicit exact object type.\",\n  InexactInsideNonObject:\n    \"Explicit inexact syntax cannot appear in class or interface definitions.\",\n  InexactVariance: \"Explicit inexact syntax cannot have variance.\",\n  InvalidNonTypeImportInDeclareModule:\n    \"Imports within a `declare module` body must always be `import type` or `import typeof`.\",\n  MissingTypeParamDefault:\n    \"Type parameter declaration needs a default, since a preceding type parameter declaration has a default.\",\n  NestedDeclareModule:\n    \"`declare module` cannot be used inside another `declare module`.\",\n  NestedFlowComment: \"Cannot have a flow comment inside another flow comment.\",\n  PatternIsOptional: {\n    message:\n      \"A binding pattern parameter cannot be optional in an implementation signature.\",\n    // For consistency in TypeScript and Flow error codes\n    ...(!process.env.BABEL_8_BREAKING\n      ? { reasonCode: \"OptionalBindingPattern\" }\n      : {}),\n  },\n  SetterMayNotHaveThisParam: \"A setter cannot have a `this` parameter.\",\n  SpreadVariance: \"Spread properties cannot have variance.\",\n  ThisParamAnnotationRequired:\n    \"A type annotation is required for the `this` parameter.\",\n  ThisParamBannedInConstructor:\n    \"Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.\",\n  ThisParamMayNotBeOptional: \"The `this` parameter cannot be optional.\",\n  ThisParamMustBeFirst:\n    \"The `this` parameter must be the first function parameter.\",\n  ThisParamNoDefault: \"The `this` parameter may not have a default value.\",\n  TypeBeforeInitializer:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeCastInPattern:\n    \"The type cast expression is expected to be wrapped with parenthesis.\",\n  UnexpectedExplicitInexactInObject:\n    \"Explicit inexact syntax must appear at the end of an inexact object.\",\n  UnexpectedReservedType: ({ reservedType }: { reservedType: string }) =>\n    `Unexpected reserved type ${reservedType}.`,\n  UnexpectedReservedUnderscore:\n    \"`_` is only allowed as a type argument to call or new.\",\n  UnexpectedSpaceBetweenModuloChecks:\n    \"Spaces between `%` and `checks` are not allowed here.\",\n  UnexpectedSpreadType:\n    \"Spread operator cannot appear in class or interface definitions.\",\n  UnexpectedSubtractionOperand:\n    'Unexpected token, expected \"number\" or \"bigint\".',\n  UnexpectedTokenAfterTypeParameter:\n    \"Expected an arrow function after this type parameter declaration.\",\n  UnexpectedTypeParameterBeforeAsyncArrowFunction:\n    \"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.\",\n  UnsupportedDeclareExportKind: ({\n    unsupportedExportKind,\n    suggestion,\n  }: {\n    unsupportedExportKind: string;\n    suggestion: string;\n  }) =>\n    `\\`declare export ${unsupportedExportKind}\\` is not supported. Use \\`${suggestion}\\` instead.`,\n  UnsupportedStatementInDeclareModule:\n    \"Only declares and type imports are allowed inside declare module.\",\n  UnterminatedFlowComment: \"Unterminated flow-comment.\",\n});\n/* eslint-disable sort-keys */\n\nfunction isEsModuleType(bodyElement: N.Node): boolean {\n  return (\n    bodyElement.type === \"DeclareExportAllDeclaration\" ||\n    (bodyElement.type === \"DeclareExportDeclaration\" &&\n      (!bodyElement.declaration ||\n        (bodyElement.declaration.type !== \"TypeAlias\" &&\n          bodyElement.declaration.type !== \"InterfaceDeclaration\")))\n  );\n}\n\nfunction hasTypeImportKind(\n  node: Undone<N.ImportSpecifier | N.ImportDeclaration>,\n): boolean {\n  return node.importKind === \"type\" || node.importKind === \"typeof\";\n}\n\nconst exportSuggestions = {\n  const: \"declare export var\",\n  let: \"declare export var\",\n  type: \"export type\",\n  interface: \"export interface\",\n};\n\n// Like Array#filter, but returns a tuple [ acceptedElements, discardedElements ]\nfunction partition<T>(\n  list: T[],\n  test: (c: T, b: number, a: T[]) => boolean | undefined | null,\n): [T[], T[]] {\n  const list1: T[] = [];\n  const list2: T[] = [];\n  for (let i = 0; i < list.length; i++) {\n    (test(list[i], i, list) ? list1 : list2).push(list[i]);\n  }\n  return [list1, list2];\n}\n\nconst FLOW_PRAGMA_REGEX = /\\*?\\s*@((?:no)?flow)\\b/;\n\n// Flow enums types\ntype EnumExplicitType = null | \"boolean\" | \"number\" | \"string\" | \"symbol\";\n\ntype EnumContext = {\n  enumName: string;\n  explicitType: EnumExplicitType;\n  memberName: string;\n};\n\ntype EnumMemberInit =\n  | {\n      type: \"number\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"string\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"boolean\";\n      loc: Position;\n      value: N.Node;\n    }\n  | {\n      type: \"invalid\";\n      loc: Position;\n    }\n  | {\n      type: \"none\";\n      loc: Position;\n    };\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class FlowParserMixin extends superClass implements Parser {\n    // The value of the @flow/@noflow pragma. Initially undefined, transitions\n    // to \"@flow\" or \"@noflow\" if we see a pragma. Transitions to null if we are\n    // past the initial comment.\n    flowPragma: void | null | \"flow\" | \"noflow\" = undefined;\n\n    getScopeHandler(): new (...args: any) => FlowScopeHandler {\n      return FlowScopeHandler;\n    }\n\n    shouldParseTypes(): boolean {\n      return this.getPluginOption(\"flow\", \"all\") || this.flowPragma === \"flow\";\n    }\n\n    finishToken(type: TokenType, val: any): void {\n      if (\n        type !== tt.string &&\n        type !== tt.semi &&\n        type !== tt.interpreterDirective\n      ) {\n        if (this.flowPragma === undefined) {\n          this.flowPragma = null;\n        }\n      }\n      super.finishToken(type, val);\n    }\n\n    addComment(comment: N.Comment): void {\n      if (this.flowPragma === undefined) {\n        // Try to parse a flow pragma.\n        const matches = FLOW_PRAGMA_REGEX.exec(comment.value);\n        if (!matches) {\n          // do nothing\n        } else if (matches[1] === \"flow\") {\n          this.flowPragma = \"flow\";\n        } else if (matches[1] === \"noflow\") {\n          this.flowPragma = \"noflow\";\n        } else {\n          throw new Error(\"Unexpected flow pragma\");\n        }\n      }\n      super.addComment(comment);\n    }\n\n    flowParseTypeInitialiser(tok?: TokenType): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tok || tt.colon);\n\n      const type = this.flowParseType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParsePredicate(): N.FlowPredicate {\n      const node = this.startNode<N.FlowPredicate>();\n      const moduloLoc = this.state.startLoc;\n      this.next(); // eat `%`\n      this.expectContextual(tt._checks);\n      // Force '%' and 'checks' to be adjacent\n      if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {\n        this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);\n      }\n      if (this.eat(tt.parenL)) {\n        node.value = super.parseExpression();\n        this.expect(tt.parenR);\n        return this.finishNode(node, \"DeclaredPredicate\");\n      } else {\n        return this.finishNode(node, \"InferredPredicate\");\n      }\n    }\n\n    flowParseTypeAndPredicateInitialiser(): [\n      N.FlowType | undefined | null,\n      N.FlowPredicate | undefined | null,\n    ] {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      this.expect(tt.colon);\n      let type = null;\n      let predicate = null;\n      if (this.match(tt.modulo)) {\n        this.state.inType = oldInType;\n        predicate = this.flowParsePredicate();\n      } else {\n        type = this.flowParseType();\n        this.state.inType = oldInType;\n        if (this.match(tt.modulo)) {\n          predicate = this.flowParsePredicate();\n        }\n      }\n      return [type, predicate];\n    }\n\n    flowParseDeclareClass(\n      node: Undone<N.FlowDeclareClass>,\n    ): N.FlowDeclareClass {\n      this.next();\n      this.flowParseInterfaceish(node, /*isClass*/ true);\n      return this.finishNode(node, \"DeclareClass\");\n    }\n\n    flowParseDeclareFunction(\n      node: Undone<N.FlowDeclareFunction>,\n    ): N.FlowDeclareFunction {\n      this.next();\n\n      const id = (node.id = this.parseIdentifier());\n\n      const typeNode = this.startNode<N.FlowFunctionTypeAnnotation>();\n      const typeContainer = this.startNode<N.TypeAnnotation>();\n\n      if (this.match(tt.lt)) {\n        typeNode.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        typeNode.typeParameters = null;\n      }\n\n      this.expect(tt.parenL);\n      const tmp = this.flowParseFunctionTypeParams();\n      typeNode.params = tmp.params;\n      typeNode.rest = tmp.rest;\n      typeNode.this = tmp._this;\n      this.expect(tt.parenR);\n\n      [typeNode.returnType, node.predicate] =\n        this.flowParseTypeAndPredicateInitialiser();\n\n      typeContainer.typeAnnotation = this.finishNode(\n        typeNode,\n        \"FunctionTypeAnnotation\",\n      );\n\n      id.typeAnnotation = this.finishNode(typeContainer, \"TypeAnnotation\");\n\n      this.resetEndLocation(id);\n      this.semicolon();\n\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_FLOW_DECLARE_FN,\n        node.id.loc.start,\n      );\n\n      return this.finishNode(node, \"DeclareFunction\");\n    }\n\n    flowParseDeclare(\n      node: Undone<N.FlowDeclare>,\n      insideModule?: boolean,\n    ): N.FlowDeclare {\n      if (this.match(tt._class)) {\n        return this.flowParseDeclareClass(node);\n      } else if (this.match(tt._function)) {\n        return this.flowParseDeclareFunction(node);\n      } else if (this.match(tt._var)) {\n        return this.flowParseDeclareVariable(node);\n      } else if (this.eatContextual(tt._module)) {\n        if (this.match(tt.dot)) {\n          return this.flowParseDeclareModuleExports(node);\n        } else {\n          if (insideModule) {\n            this.raise(\n              FlowErrors.NestedDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          return this.flowParseDeclareModule(node);\n        }\n      } else if (this.isContextual(tt._type)) {\n        return this.flowParseDeclareTypeAlias(node);\n      } else if (this.isContextual(tt._opaque)) {\n        return this.flowParseDeclareOpaqueType(node);\n      } else if (this.isContextual(tt._interface)) {\n        return this.flowParseDeclareInterface(node);\n      } else if (this.match(tt._export)) {\n        return this.flowParseDeclareExportDeclaration(node, insideModule);\n      } else {\n        this.unexpected();\n      }\n    }\n\n    flowParseDeclareVariable(\n      node: Undone<N.FlowDeclareVariable>,\n    ): N.FlowDeclareVariable {\n      this.next();\n      node.id = this.flowParseTypeAnnotatableIdentifier(\n        /*allowPrimitiveOverride*/ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_VAR,\n        node.id.loc.start,\n      );\n      this.semicolon();\n      return this.finishNode(node, \"DeclareVariable\");\n    }\n\n    flowParseDeclareModule(\n      node: Undone<N.FlowDeclareModule>,\n    ): N.FlowDeclareModule {\n      this.scope.enter(ScopeFlag.OTHER);\n\n      if (this.match(tt.string)) {\n        node.id = super.parseExprAtom();\n      } else {\n        node.id = this.parseIdentifier();\n      }\n\n      const bodyNode = (node.body = this.startNode<N.BlockStatement>());\n      // @ts-expect-error refine typings\n      const body = (bodyNode.body = []);\n      this.expect(tt.braceL);\n      while (!this.match(tt.braceR)) {\n        let bodyNode = this.startNode<N.ImportDeclaration>();\n\n        if (this.match(tt._import)) {\n          this.next();\n          if (!this.isContextual(tt._type) && !this.match(tt._typeof)) {\n            this.raise(\n              FlowErrors.InvalidNonTypeImportInDeclareModule,\n              this.state.lastTokStartLoc,\n            );\n          }\n          super.parseImport(bodyNode);\n        } else {\n          this.expectContextual(\n            tt._declare,\n            FlowErrors.UnsupportedStatementInDeclareModule,\n          );\n          // @ts-expect-error refine typings\n          bodyNode = this.flowParseDeclare(bodyNode, true);\n        }\n\n        body.push(bodyNode);\n      }\n\n      this.scope.exit();\n\n      this.expect(tt.braceR);\n\n      this.finishNode(bodyNode, \"BlockStatement\");\n\n      let kind: \"CommonJS\" | \"ES\" | null = null;\n      let hasModuleExport = false;\n      body.forEach(bodyElement => {\n        if (isEsModuleType(bodyElement)) {\n          if (kind === \"CommonJS\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"ES\";\n        } else if (bodyElement.type === \"DeclareModuleExports\") {\n          if (hasModuleExport) {\n            this.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);\n          }\n          if (kind === \"ES\") {\n            this.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);\n          }\n          kind = \"CommonJS\";\n          hasModuleExport = true;\n        }\n      });\n\n      node.kind = kind || \"CommonJS\";\n      return this.finishNode(node, \"DeclareModule\");\n    }\n\n    flowParseDeclareExportDeclaration(\n      node: Undone<N.FlowDeclareExportDeclaration>,\n      insideModule?: boolean | null,\n    ): N.FlowDeclareExportDeclaration {\n      this.expect(tt._export);\n\n      if (this.eat(tt._default)) {\n        if (this.match(tt._function) || this.match(tt._class)) {\n          // declare export default class ...\n          // declare export default function ...\n          node.declaration = this.flowParseDeclare(this.startNode());\n        } else {\n          // declare export default [type];\n          node.declaration = this.flowParseType();\n          this.semicolon();\n        }\n        node.default = true;\n\n        return this.finishNode(node, \"DeclareExportDeclaration\");\n      } else {\n        if (\n          this.match(tt._const) ||\n          this.isLet() ||\n          ((this.isContextual(tt._type) || this.isContextual(tt._interface)) &&\n            !insideModule)\n        ) {\n          const label = this.state.value as\n            | \"const\"\n            | \"let\"\n            | \"type\"\n            | \"interface\";\n          throw this.raise(\n            FlowErrors.UnsupportedDeclareExportKind,\n            this.state.startLoc,\n            {\n              unsupportedExportKind: label,\n              suggestion: exportSuggestions[label],\n            },\n          );\n        }\n\n        if (\n          this.match(tt._var) || // declare export var ...\n          this.match(tt._function) || // declare export function ...\n          this.match(tt._class) || // declare export class ...\n          this.isContextual(tt._opaque) // declare export opaque ..\n        ) {\n          node.declaration = this.flowParseDeclare(this.startNode());\n          node.default = false;\n\n          return this.finishNode(node, \"DeclareExportDeclaration\");\n        } else if (\n          this.match(tt.star) || // declare export * from ''\n          this.match(tt.braceL) || // declare export {} ...\n          this.isContextual(tt._interface) || // declare export interface ...\n          this.isContextual(tt._type) || // declare export type ...\n          this.isContextual(tt._opaque) // declare export opaque type ...\n        ) {\n          node = this.parseExport(\n            node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n            /* decorators */ null,\n          );\n          if (node.type === \"ExportNamedDeclaration\") {\n            node.type = \"ExportDeclaration\";\n            node.default = false;\n            delete node.exportKind;\n          }\n\n          node.type = \"Declare\" + node.type;\n\n          return node as N.FlowDeclareExportDeclaration;\n        }\n      }\n\n      this.unexpected();\n    }\n\n    flowParseDeclareModuleExports(\n      node: Undone<N.FlowDeclareModuleExports>,\n    ): N.FlowDeclareModuleExports {\n      this.next();\n      this.expectContextual(tt._exports);\n      node.typeAnnotation = this.flowParseTypeAnnotation();\n      this.semicolon();\n\n      return this.finishNode(node, \"DeclareModuleExports\");\n    }\n\n    flowParseDeclareTypeAlias(\n      node: Undone<N.FlowDeclareTypeAlias>,\n    ): N.FlowDeclareTypeAlias {\n      this.next();\n      const finished = this.flowParseTypeAlias(\n        node,\n      ) as unknown as N.FlowDeclareTypeAlias;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareTypeAlias\";\n      return finished;\n    }\n\n    flowParseDeclareOpaqueType(\n      node: Undone<N.FlowDeclareOpaqueType>,\n    ): N.FlowDeclareOpaqueType {\n      this.next();\n      const finished = this.flowParseOpaqueType(\n        node,\n        true,\n      ) as unknown as N.FlowDeclareOpaqueType;\n      // Don't do finishNode as we don't want to process comments twice\n      finished.type = \"DeclareOpaqueType\";\n      return finished;\n    }\n\n    flowParseDeclareInterface(\n      node: Undone<N.FlowDeclareInterface>,\n    ): N.FlowDeclareInterface {\n      this.next();\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"DeclareInterface\");\n    }\n\n    // Interfaces\n\n    flowParseInterfaceish(node: Undone<N.FlowDeclare>, isClass: boolean): void {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ !isClass,\n        /* declaration */ true,\n      );\n\n      this.scope.declareName(\n        node.id.name,\n        isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.extends = [];\n\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (!isClass && this.eat(tt.comma));\n      }\n\n      if (isClass) {\n        node.implements = [];\n        node.mixins = [];\n\n        if (this.eatContextual(tt._mixins)) {\n          do {\n            node.mixins.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n\n        if (this.eatContextual(tt._implements)) {\n          do {\n            node.implements.push(this.flowParseInterfaceExtends());\n          } while (this.eat(tt.comma));\n        }\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: isClass,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: isClass,\n        allowInexact: false,\n      });\n    }\n\n    flowParseInterfaceExtends(): N.FlowInterfaceExtends {\n      const node = this.startNode<N.FlowInterfaceExtends>();\n\n      node.id = this.flowParseQualifiedTypeIdentifier();\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      } else {\n        node.typeParameters = null;\n      }\n\n      return this.finishNode(node, \"InterfaceExtends\");\n    }\n\n    flowParseInterface(node: Undone<N.FlowInterface>): N.FlowInterface {\n      this.flowParseInterfaceish(node, /* isClass */ false);\n      return this.finishNode(node, \"InterfaceDeclaration\");\n    }\n\n    checkNotUnderscore(word: string) {\n      if (word === \"_\") {\n        this.raise(\n          FlowErrors.UnexpectedReservedUnderscore,\n          this.state.startLoc,\n        );\n      }\n    }\n\n    checkReservedType(word: string, startLoc: Position, declaration?: boolean) {\n      if (!reservedTypes.has(word)) return;\n\n      this.raise(\n        declaration\n          ? FlowErrors.AssignReservedType\n          : FlowErrors.UnexpectedReservedType,\n        startLoc,\n        {\n          reservedType: word,\n        },\n      );\n    }\n\n    flowParseRestrictedIdentifier(\n      liberal?: boolean,\n      declaration?: boolean,\n    ): N.Identifier {\n      this.checkReservedType(\n        this.state.value,\n        this.state.startLoc,\n        declaration,\n      );\n      return this.parseIdentifier(liberal);\n    }\n\n    // Type aliases\n\n    flowParseTypeAlias(node: Undone<N.FlowTypeAlias>): N.FlowTypeAlias {\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ false,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      node.right = this.flowParseTypeInitialiser(tt.eq);\n      this.semicolon();\n\n      return this.finishNode(node, \"TypeAlias\");\n    }\n\n    flowParseOpaqueType(\n      node: Undone<N.FlowOpaqueType>,\n      declare: boolean,\n    ): N.FlowOpaqueType {\n      this.expectContextual(tt._type);\n      node.id = this.flowParseRestrictedIdentifier(\n        /* liberal */ true,\n        /* declaration */ true,\n      );\n      this.scope.declareName(\n        node.id.name,\n        BindingFlag.TYPE_LEXICAL,\n        node.id.loc.start,\n      );\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      } else {\n        node.typeParameters = null;\n      }\n\n      // Parse the supertype\n      node.supertype = null;\n      if (this.match(tt.colon)) {\n        node.supertype = this.flowParseTypeInitialiser(tt.colon);\n      }\n\n      node.impltype = null;\n      if (!declare) {\n        node.impltype = this.flowParseTypeInitialiser(tt.eq);\n      }\n      this.semicolon();\n\n      return this.finishNode(node, \"OpaqueType\");\n    }\n\n    // Type annotations\n\n    flowParseTypeParameter(requireDefault: boolean = false): N.TypeParameter {\n      const nodeStartLoc = this.state.startLoc;\n\n      const node = this.startNode<N.TypeParameter>();\n\n      const variance = this.flowParseVariance();\n\n      const ident = this.flowParseTypeAnnotatableIdentifier();\n      node.name = ident.name;\n      // @ts-expect-error migrate to Babel types\n      node.variance = variance;\n      // @ts-expect-error migrate to Babel types\n      node.bound = ident.typeAnnotation;\n\n      if (this.match(tt.eq)) {\n        this.eat(tt.eq);\n        // @ts-expect-error migrate to Babel types\n        node.default = this.flowParseType();\n      } else {\n        if (requireDefault) {\n          this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);\n        }\n      }\n\n      return this.finishNode(node, \"TypeParameter\");\n    }\n\n    flowParseTypeParameterDeclaration(): N.TypeParameterDeclaration {\n      const oldInType = this.state.inType;\n      const node = this.startNode<N.TypeParameterDeclaration>();\n      node.params = [];\n\n      this.state.inType = true;\n\n      // istanbul ignore else: this condition is already checked at all call sites\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      let defaultRequired = false;\n\n      do {\n        const typeParameter = this.flowParseTypeParameter(defaultRequired);\n\n        node.params.push(typeParameter);\n\n        if (typeParameter.default) {\n          defaultRequired = true;\n        }\n\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      } while (!this.match(tt.gt));\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    flowInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    flowParseTypeParameterInstantiationInExpression():\n      | N.TypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.flowParseTypeParameterInstantiation();\n    }\n\n    flowParseTypeParameterInstantiation(): N.TypeParameterInstantiation {\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n\n      this.state.inType = true;\n      node.params = [];\n      this.flowInTopLevelContext(() => {\n        this.expect(tt.lt);\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = false;\n        while (!this.match(tt.gt)) {\n          node.params.push(this.flowParseType());\n          if (!this.match(tt.gt)) {\n            this.expect(tt.comma);\n          }\n        }\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      });\n\n      this.state.inType = oldInType;\n      if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseTypeParameterInstantiationCallOrNew(): N.TypeParameterInstantiation {\n      if (this.reScan_lt() !== tt.lt) return;\n      const node = this.startNode<N.TypeParameterInstantiation>();\n      const oldInType = this.state.inType;\n      node.params = [];\n\n      this.state.inType = true;\n\n      this.expect(tt.lt);\n      while (!this.match(tt.gt)) {\n        node.params.push(this.flowParseTypeOrImplicitInstantiation());\n        if (!this.match(tt.gt)) {\n          this.expect(tt.comma);\n        }\n      }\n      this.expect(tt.gt);\n\n      this.state.inType = oldInType;\n\n      return this.finishNode(node, \"TypeParameterInstantiation\");\n    }\n\n    flowParseInterfaceType(): N.FlowInterfaceType {\n      const node = this.startNode<N.FlowInterfaceType>();\n      this.expectContextual(tt._interface);\n\n      node.extends = [];\n      if (this.eat(tt._extends)) {\n        do {\n          node.extends.push(this.flowParseInterfaceExtends());\n        } while (this.eat(tt.comma));\n      }\n\n      node.body = this.flowParseObjectType({\n        allowStatic: false,\n        allowExact: false,\n        allowSpread: false,\n        allowProto: false,\n        allowInexact: false,\n      });\n\n      return this.finishNode(node, \"InterfaceTypeAnnotation\");\n    }\n\n    flowParseObjectPropertyKey(): N.Expression {\n      return this.match(tt.num) || this.match(tt.string)\n        ? super.parseExprAtom()\n        : this.parseIdentifier(true);\n    }\n\n    flowParseObjectTypeIndexer(\n      node: Undone<N.FlowObjectTypeIndexer>,\n      isStatic: boolean,\n      variance?: N.FlowVariance | null,\n    ): N.FlowObjectTypeIndexer {\n      node.static = isStatic;\n\n      // Note: bracketL has already been consumed\n      if (this.lookahead().type === tt.colon) {\n        node.id = this.flowParseObjectPropertyKey();\n        node.key = this.flowParseTypeInitialiser();\n      } else {\n        node.id = null;\n        node.key = this.flowParseType();\n      }\n      this.expect(tt.bracketR);\n      node.value = this.flowParseTypeInitialiser();\n      node.variance = variance;\n\n      return this.finishNode(node, \"ObjectTypeIndexer\");\n    }\n\n    flowParseObjectTypeInternalSlot(\n      node: Undone<N.FlowObjectTypeInternalSlot>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeInternalSlot {\n      node.static = isStatic;\n      // Note: both bracketL have already been consumed\n      node.id = this.flowParseObjectPropertyKey();\n      this.expect(tt.bracketR);\n      this.expect(tt.bracketR);\n      if (this.match(tt.lt) || this.match(tt.parenL)) {\n        node.method = true;\n        node.optional = false;\n        node.value = this.flowParseObjectTypeMethodish(\n          this.startNodeAt(node.loc.start),\n        );\n      } else {\n        node.method = false;\n        if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n        node.value = this.flowParseTypeInitialiser();\n      }\n      return this.finishNode(node, \"ObjectTypeInternalSlot\");\n    }\n\n    flowParseObjectTypeMethodish(\n      node: Undone<N.FlowFunctionTypeAnnotation>,\n    ): N.FlowFunctionTypeAnnotation {\n      node.params = [];\n      node.rest = null;\n      node.typeParameters = null;\n      node.this = null;\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      this.expect(tt.parenL);\n      if (this.match(tt._this)) {\n        node.this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        node.this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        node.params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n\n      if (this.eat(tt.ellipsis)) {\n        node.rest = this.flowParseFunctionTypeParam(false);\n      }\n      this.expect(tt.parenR);\n      node.returnType = this.flowParseTypeInitialiser();\n\n      return this.finishNode(node, \"FunctionTypeAnnotation\");\n    }\n\n    flowParseObjectTypeCallProperty(\n      node: Undone<N.FlowObjectTypeCallProperty>,\n      isStatic: boolean,\n    ): N.FlowObjectTypeCallProperty {\n      const valueNode = this.startNode();\n      node.static = isStatic;\n      node.value = this.flowParseObjectTypeMethodish(valueNode);\n      return this.finishNode(node, \"ObjectTypeCallProperty\");\n    }\n\n    flowParseObjectType({\n      allowStatic,\n      allowExact,\n      allowSpread,\n      allowProto,\n      allowInexact,\n    }: {\n      allowStatic: boolean;\n      allowExact: boolean;\n      allowSpread: boolean;\n      allowProto: boolean;\n      allowInexact: boolean;\n    }): N.FlowObjectTypeAnnotation {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n\n      const nodeStart = this.startNode<N.FlowObjectTypeAnnotation>();\n\n      nodeStart.callProperties = [];\n      nodeStart.properties = [];\n      nodeStart.indexers = [];\n      nodeStart.internalSlots = [];\n\n      let endDelim;\n      let exact;\n      let inexact = false;\n      if (allowExact && this.match(tt.braceBarL)) {\n        this.expect(tt.braceBarL);\n        endDelim = tt.braceBarR;\n        exact = true;\n      } else {\n        this.expect(tt.braceL);\n        endDelim = tt.braceR;\n        exact = false;\n      }\n\n      nodeStart.exact = exact;\n\n      while (!this.match(endDelim)) {\n        let isStatic = false;\n        let protoStartLoc: Position | undefined | null = null;\n        let inexactStartLoc: Position | undefined | null = null;\n        const node = this.startNode();\n\n        if (allowProto && this.isContextual(tt._proto)) {\n          const lookahead = this.lookahead();\n\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            protoStartLoc = this.state.startLoc;\n            allowStatic = false;\n          }\n        }\n\n        if (allowStatic && this.isContextual(tt._static)) {\n          const lookahead = this.lookahead();\n\n          // static is a valid identifier name\n          if (lookahead.type !== tt.colon && lookahead.type !== tt.question) {\n            this.next();\n            isStatic = true;\n          }\n        }\n\n        const variance = this.flowParseVariance();\n\n        if (this.eat(tt.bracketL)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (this.eat(tt.bracketL)) {\n            if (variance) {\n              this.unexpected(variance.loc.start);\n            }\n            nodeStart.internalSlots.push(\n              this.flowParseObjectTypeInternalSlot(node, isStatic),\n            );\n          } else {\n            nodeStart.indexers.push(\n              this.flowParseObjectTypeIndexer(node, isStatic, variance),\n            );\n          }\n        } else if (this.match(tt.parenL) || this.match(tt.lt)) {\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n          nodeStart.callProperties.push(\n            this.flowParseObjectTypeCallProperty(node, isStatic),\n          );\n        } else {\n          let kind = \"init\";\n\n          if (this.isContextual(tt._get) || this.isContextual(tt._set)) {\n            const lookahead = this.lookahead();\n            if (tokenIsLiteralPropertyName(lookahead.type)) {\n              kind = this.state.value;\n              this.next();\n            }\n          }\n\n          const propOrInexact = this.flowParseObjectTypeProperty(\n            node,\n            isStatic,\n            protoStartLoc,\n            variance,\n            kind,\n            allowSpread,\n            allowInexact ?? !exact,\n          );\n\n          if (propOrInexact === null) {\n            inexact = true;\n            inexactStartLoc = this.state.lastTokStartLoc;\n          } else {\n            nodeStart.properties.push(propOrInexact);\n          }\n        }\n\n        this.flowObjectTypeSemicolon();\n\n        if (\n          inexactStartLoc &&\n          !this.match(tt.braceR) &&\n          !this.match(tt.braceBarR)\n        ) {\n          this.raise(\n            FlowErrors.UnexpectedExplicitInexactInObject,\n            inexactStartLoc,\n          );\n        }\n      }\n\n      this.expect(endDelim);\n\n      /* The inexact flag should only be added on ObjectTypeAnnotations that\n       * are not the body of an interface, declare interface, or declare class.\n       * Since spreads are only allowed in object types, checking that is\n       * sufficient here.\n       */\n      if (allowSpread) {\n        nodeStart.inexact = inexact;\n      }\n\n      const out = this.finishNode(nodeStart, \"ObjectTypeAnnotation\");\n\n      this.state.inType = oldInType;\n\n      return out;\n    }\n\n    flowParseObjectTypeProperty(\n      node: Undone<N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty>,\n      isStatic: boolean,\n      protoStartLoc: Position | undefined | null,\n      variance: N.FlowVariance | undefined | null,\n      kind: string,\n      allowSpread: boolean,\n      allowInexact: boolean,\n    ): N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty | null {\n      if (this.eat(tt.ellipsis)) {\n        const isInexactToken =\n          this.match(tt.comma) ||\n          this.match(tt.semi) ||\n          this.match(tt.braceR) ||\n          this.match(tt.braceBarR);\n\n        if (isInexactToken) {\n          if (!allowSpread) {\n            this.raise(\n              FlowErrors.InexactInsideNonObject,\n              this.state.lastTokStartLoc,\n            );\n          } else if (!allowInexact) {\n            this.raise(\n              FlowErrors.InexactInsideExact,\n              this.state.lastTokStartLoc,\n            );\n          }\n          if (variance) {\n            this.raise(FlowErrors.InexactVariance, variance);\n          }\n\n          return null;\n        }\n\n        if (!allowSpread) {\n          this.raise(\n            FlowErrors.UnexpectedSpreadType,\n            this.state.lastTokStartLoc,\n          );\n        }\n        if (protoStartLoc != null) {\n          this.unexpected(protoStartLoc);\n        }\n        if (variance) {\n          this.raise(FlowErrors.SpreadVariance, variance);\n        }\n\n        node.argument = this.flowParseType();\n        return this.finishNode(node, \"ObjectTypeSpreadProperty\");\n      } else {\n        node.key = this.flowParseObjectPropertyKey();\n        node.static = isStatic;\n        node.proto = protoStartLoc != null;\n        node.kind = kind;\n\n        let optional = false;\n        if (this.match(tt.lt) || this.match(tt.parenL)) {\n          // This is a method property\n          node.method = true;\n\n          if (protoStartLoc != null) {\n            this.unexpected(protoStartLoc);\n          }\n          if (variance) {\n            this.unexpected(variance.loc.start);\n          }\n\n          node.value = this.flowParseObjectTypeMethodish(\n            this.startNodeAt(node.loc.start),\n          );\n          if (kind === \"get\" || kind === \"set\") {\n            this.flowCheckGetterSetterParams(node);\n          }\n          /** Declared classes/interfaces do not allow spread */\n          if (\n            !allowSpread &&\n            node.key.name === \"constructor\" &&\n            node.value.this\n          ) {\n            this.raise(\n              FlowErrors.ThisParamBannedInConstructor,\n              node.value.this,\n            );\n          }\n        } else {\n          if (kind !== \"init\") this.unexpected();\n\n          node.method = false;\n\n          if (this.eat(tt.question)) {\n            optional = true;\n          }\n          node.value = this.flowParseTypeInitialiser();\n          node.variance = variance;\n        }\n\n        node.optional = optional;\n\n        return this.finishNode(node, \"ObjectTypeProperty\");\n      }\n    }\n\n    // This is similar to checkGetterSetterParams, but as\n    // @babel/parser uses non estree properties we cannot reuse it here\n    flowCheckGetterSetterParams(\n      property: Undone<\n        N.FlowObjectTypeProperty | N.FlowObjectTypeSpreadProperty\n      >,\n    ): void {\n      const paramCount = property.kind === \"get\" ? 0 : 1;\n      const length =\n        property.value.params.length + (property.value.rest ? 1 : 0);\n\n      if (property.value.this) {\n        this.raise(\n          property.kind === \"get\"\n            ? FlowErrors.GetterMayNotHaveThisParam\n            : FlowErrors.SetterMayNotHaveThisParam,\n          property.value.this,\n        );\n      }\n\n      if (length !== paramCount) {\n        this.raise(\n          property.kind === \"get\"\n            ? Errors.BadGetterArity\n            : Errors.BadSetterArity,\n          property,\n        );\n      }\n\n      if (property.kind === \"set\" && property.value.rest) {\n        this.raise(Errors.BadSetterRestParameter, property);\n      }\n    }\n\n    flowObjectTypeSemicolon(): void {\n      if (\n        !this.eat(tt.semi) &&\n        !this.eat(tt.comma) &&\n        !this.match(tt.braceR) &&\n        !this.match(tt.braceBarR)\n      ) {\n        this.unexpected();\n      }\n    }\n\n    flowParseQualifiedTypeIdentifier(\n      startLoc?: Position,\n      id?: N.Identifier,\n    ): N.FlowQualifiedTypeIdentifier | N.Identifier {\n      startLoc ??= this.state.startLoc;\n      let node: N.Identifier | N.FlowQualifiedTypeIdentifier =\n        id || this.flowParseRestrictedIdentifier(true);\n\n      while (this.eat(tt.dot)) {\n        const node2 = this.startNodeAt<N.FlowQualifiedTypeIdentifier>(startLoc);\n        node2.qualification = node;\n        node2.id = this.flowParseRestrictedIdentifier(true);\n        node = this.finishNode(node2, \"QualifiedTypeIdentifier\");\n      }\n\n      return node;\n    }\n\n    flowParseGenericType(\n      startLoc: Position,\n      id: N.Identifier,\n    ): N.FlowGenericTypeAnnotation {\n      const node = this.startNodeAt<N.FlowGenericTypeAnnotation>(startLoc);\n\n      node.typeParameters = null;\n      node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);\n\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterInstantiation();\n      }\n\n      return this.finishNode(node, \"GenericTypeAnnotation\");\n    }\n\n    flowParseTypeofType(): N.FlowTypeofTypeAnnotation {\n      const node = this.startNode<N.FlowTypeofTypeAnnotation>();\n      this.expect(tt._typeof);\n      node.argument = this.flowParsePrimaryType();\n      return this.finishNode(node, \"TypeofTypeAnnotation\");\n    }\n\n    flowParseTupleType(): N.FlowTupleTypeAnnotation {\n      const node = this.startNode<N.FlowTupleTypeAnnotation>();\n      node.types = [];\n      this.expect(tt.bracketL);\n      // We allow trailing commas\n      while (this.state.pos < this.length && !this.match(tt.bracketR)) {\n        node.types.push(this.flowParseType());\n        if (this.match(tt.bracketR)) break;\n        this.expect(tt.comma);\n      }\n      this.expect(tt.bracketR);\n      return this.finishNode(node, \"TupleTypeAnnotation\");\n    }\n\n    flowParseFunctionTypeParam(first: boolean): N.FlowFunctionTypeParam {\n      let name = null;\n      let optional = false;\n      let typeAnnotation = null;\n      const node = this.startNode<N.FlowFunctionTypeParam>();\n      const lh = this.lookahead();\n      const isThis = this.state.type === tt._this;\n\n      if (lh.type === tt.colon || lh.type === tt.question) {\n        if (isThis && !first) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node);\n        }\n        name = this.parseIdentifier(isThis);\n        if (this.eat(tt.question)) {\n          optional = true;\n          if (isThis) {\n            this.raise(FlowErrors.ThisParamMayNotBeOptional, node);\n          }\n        }\n        typeAnnotation = this.flowParseTypeInitialiser();\n      } else {\n        typeAnnotation = this.flowParseType();\n      }\n      node.name = name;\n      node.optional = optional;\n      node.typeAnnotation = typeAnnotation;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    reinterpretTypeAsFunctionTypeParam(\n      type: N.FlowType,\n    ): N.FlowFunctionTypeParam {\n      const node = this.startNodeAt<N.FlowFunctionTypeParam>(type.loc.start);\n      node.name = null;\n      node.optional = false;\n      node.typeAnnotation = type;\n      return this.finishNode(node, \"FunctionTypeParam\");\n    }\n\n    flowParseFunctionTypeParams(params: N.FlowFunctionTypeParam[] = []): {\n      params: N.FlowFunctionTypeParam[];\n      rest: N.FlowFunctionTypeParam | undefined | null;\n      _this: N.FlowFunctionTypeParam | undefined | null;\n    } {\n      let rest: N.FlowFunctionTypeParam | undefined | null = null;\n      let _this: N.FlowFunctionTypeParam | undefined | null = null;\n      if (this.match(tt._this)) {\n        _this = this.flowParseFunctionTypeParam(/* first */ true);\n        // match Flow parser behavior\n        _this.name = null;\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      while (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n        params.push(this.flowParseFunctionTypeParam(false));\n        if (!this.match(tt.parenR)) {\n          this.expect(tt.comma);\n        }\n      }\n      if (this.eat(tt.ellipsis)) {\n        rest = this.flowParseFunctionTypeParam(false);\n      }\n      return { params, rest, _this };\n    }\n\n    flowIdentToTypeAnnotation(\n      startLoc: Position,\n      node: Undone<N.FlowType>,\n      id: N.Identifier,\n    ): N.FlowType {\n      switch (id.name) {\n        case \"any\":\n          return this.finishNode(node, \"AnyTypeAnnotation\");\n\n        case \"bool\":\n        case \"boolean\":\n          return this.finishNode(node, \"BooleanTypeAnnotation\");\n\n        case \"mixed\":\n          return this.finishNode(node, \"MixedTypeAnnotation\");\n\n        case \"empty\":\n          return this.finishNode(node, \"EmptyTypeAnnotation\");\n\n        case \"number\":\n          return this.finishNode(node, \"NumberTypeAnnotation\");\n\n        case \"string\":\n          return this.finishNode(node, \"StringTypeAnnotation\");\n\n        case \"symbol\":\n          return this.finishNode(node, \"SymbolTypeAnnotation\");\n\n        default:\n          this.checkNotUnderscore(id.name);\n          return this.flowParseGenericType(startLoc, id);\n      }\n    }\n\n    // The parsing of types roughly parallels the parsing of expressions, and\n    // primary types are kind of like primary expressions...they're the\n    // primitives with which other types are constructed.\n    flowParsePrimaryType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      let tmp;\n      let type;\n      let isGroupedType = false;\n      const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n\n      switch (this.state.type) {\n        case tt.braceL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: false,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: true,\n          });\n\n        case tt.braceBarL:\n          return this.flowParseObjectType({\n            allowStatic: false,\n            allowExact: true,\n            allowSpread: true,\n            allowProto: false,\n            allowInexact: false,\n          });\n\n        case tt.bracketL:\n          this.state.noAnonFunctionType = false;\n          type = this.flowParseTupleType();\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n          return type;\n\n        case tt.lt: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          node.typeParameters = this.flowParseTypeParameterDeclaration();\n          this.expect(tt.parenL);\n          tmp = this.flowParseFunctionTypeParams();\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.parenL: {\n          const node = this.startNode<N.FlowFunctionTypeAnnotation>();\n          this.next();\n\n          // Check to see if this is actually a grouped type\n          if (!this.match(tt.parenR) && !this.match(tt.ellipsis)) {\n            if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n              const token = this.lookahead().type;\n              isGroupedType = token !== tt.question && token !== tt.colon;\n            } else {\n              isGroupedType = true;\n            }\n          }\n\n          if (isGroupedType) {\n            this.state.noAnonFunctionType = false;\n            type = this.flowParseType();\n            this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n            // A `,` or a `) =>` means this is an anonymous function type\n            if (\n              this.state.noAnonFunctionType ||\n              !(\n                this.match(tt.comma) ||\n                (this.match(tt.parenR) && this.lookahead().type === tt.arrow)\n              )\n            ) {\n              this.expect(tt.parenR);\n              return type;\n            } else {\n              // Eat a comma if there is one\n              this.eat(tt.comma);\n            }\n          }\n\n          if (type) {\n            tmp = this.flowParseFunctionTypeParams([\n              this.reinterpretTypeAsFunctionTypeParam(type),\n            ]);\n          } else {\n            tmp = this.flowParseFunctionTypeParams();\n          }\n\n          node.params = tmp.params;\n          node.rest = tmp.rest;\n          node.this = tmp._this;\n\n          this.expect(tt.parenR);\n\n          this.expect(tt.arrow);\n\n          node.returnType = this.flowParseType();\n\n          node.typeParameters = null;\n\n          return this.finishNode(node, \"FunctionTypeAnnotation\");\n        }\n\n        case tt.string:\n          return this.parseLiteral<N.StringLiteralTypeAnnotation>(\n            this.state.value,\n            \"StringLiteralTypeAnnotation\",\n          );\n\n        case tt._true:\n        case tt._false:\n          node.value = this.match(tt._true);\n          this.next();\n          return this.finishNode(\n            node as Undone<N.BooleanLiteralTypeAnnotation>,\n            \"BooleanLiteralTypeAnnotation\",\n          );\n\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            this.next();\n            if (this.match(tt.num)) {\n              return this.parseLiteralAtNode<N.NumberLiteralTypeAnnotation>(\n                -this.state.value,\n                \"NumberLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            if (this.match(tt.bigint)) {\n              return this.parseLiteralAtNode<N.BigIntLiteralTypeAnnotation>(\n                -this.state.value,\n                \"BigIntLiteralTypeAnnotation\",\n                node,\n              );\n            }\n\n            throw this.raise(\n              FlowErrors.UnexpectedSubtractionOperand,\n              this.state.startLoc,\n            );\n          }\n          this.unexpected();\n          return;\n        case tt.num:\n          return this.parseLiteral(\n            this.state.value,\n            \"NumberLiteralTypeAnnotation\",\n          );\n\n        case tt.bigint:\n          return this.parseLiteral(\n            this.state.value,\n            \"BigIntLiteralTypeAnnotation\",\n          );\n\n        case tt._void:\n          this.next();\n          return this.finishNode(node, \"VoidTypeAnnotation\");\n\n        case tt._null:\n          this.next();\n          return this.finishNode(node, \"NullLiteralTypeAnnotation\");\n\n        case tt._this:\n          this.next();\n          return this.finishNode(node, \"ThisTypeAnnotation\");\n\n        case tt.star:\n          this.next();\n          return this.finishNode(node, \"ExistsTypeAnnotation\");\n\n        case tt._typeof:\n          return this.flowParseTypeofType();\n\n        default:\n          if (tokenIsKeyword(this.state.type)) {\n            const label = tokenLabelName(this.state.type);\n            this.next();\n            return super.createIdentifier(node as Undone<N.Identifier>, label);\n          } else if (tokenIsIdentifier(this.state.type)) {\n            if (this.isContextual(tt._interface)) {\n              return this.flowParseInterfaceType();\n            }\n\n            return this.flowIdentToTypeAnnotation(\n              startLoc,\n              node,\n              this.parseIdentifier(),\n            );\n          }\n      }\n\n      this.unexpected();\n    }\n\n    flowParsePostfixType(): N.FlowType {\n      const startLoc = this.state.startLoc;\n      let type = this.flowParsePrimaryType();\n      let seenOptionalIndexedAccess = false;\n      while (\n        (this.match(tt.bracketL) || this.match(tt.questionDot)) &&\n        !this.canInsertSemicolon()\n      ) {\n        const node = this.startNodeAt<N.FlowOtherTypeAnnotation>(startLoc);\n        const optional = this.eat(tt.questionDot);\n        seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;\n        this.expect(tt.bracketL);\n        if (!optional && this.match(tt.bracketR)) {\n          node.elementType = type;\n          this.next(); // eat `]`\n          type = this.finishNode(node, \"ArrayTypeAnnotation\");\n        } else {\n          node.objectType = type;\n          node.indexType = this.flowParseType();\n          this.expect(tt.bracketR);\n          if (seenOptionalIndexedAccess) {\n            node.optional = optional;\n            type = this.finishNode<N.FlowOptionalIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"OptionalIndexedAccessType\",\n            );\n          } else {\n            type = this.finishNode<N.FlowIndexedAccessType>(\n              // @ts-expect-error todo(flow->ts)\n              node,\n              \"IndexedAccessType\",\n            );\n          }\n        }\n      }\n      return type;\n    }\n\n    flowParsePrefixType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      if (this.eat(tt.question)) {\n        node.typeAnnotation = this.flowParsePrefixType();\n        return this.finishNode(node, \"NullableTypeAnnotation\");\n      } else {\n        return this.flowParsePostfixType();\n      }\n    }\n\n    flowParseAnonFunctionWithoutParens(): N.FlowType {\n      const param = this.flowParsePrefixType();\n      if (!this.state.noAnonFunctionType && this.eat(tt.arrow)) {\n        // TODO: This should be a type error. Passing in a SourceLocation, and it expects a Position.\n        const node = this.startNodeAt<N.FlowFunctionTypeAnnotation>(\n          param.loc.start,\n        );\n        node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];\n        node.rest = null;\n        node.this = null;\n        node.returnType = this.flowParseType();\n        node.typeParameters = null;\n        return this.finishNode(node, \"FunctionTypeAnnotation\");\n      }\n      return param;\n    }\n\n    flowParseIntersectionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseAND);\n      const type = this.flowParseAnonFunctionWithoutParens();\n      node.types = [type];\n      while (this.eat(tt.bitwiseAND)) {\n        node.types.push(this.flowParseAnonFunctionWithoutParens());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"IntersectionTypeAnnotation\");\n    }\n\n    flowParseUnionType(): N.FlowType {\n      const node = this.startNode<N.FlowOtherTypeAnnotation>();\n      this.eat(tt.bitwiseOR);\n      const type = this.flowParseIntersectionType();\n      node.types = [type];\n      while (this.eat(tt.bitwiseOR)) {\n        node.types.push(this.flowParseIntersectionType());\n      }\n      return node.types.length === 1\n        ? type\n        : this.finishNode(node, \"UnionTypeAnnotation\");\n    }\n\n    flowParseType(): N.FlowType {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      const type = this.flowParseUnionType();\n      this.state.inType = oldInType;\n      return type;\n    }\n\n    flowParseTypeOrImplicitInstantiation(): N.FlowType {\n      if (this.state.type === tt.name && this.state.value === \"_\") {\n        const startLoc = this.state.startLoc;\n        const node = this.parseIdentifier();\n        return this.flowParseGenericType(startLoc, node);\n      } else {\n        return this.flowParseType();\n      }\n    }\n\n    flowParseTypeAnnotation(): N.TypeAnnotation {\n      const node = this.startNode<N.TypeAnnotation>();\n      node.typeAnnotation = this.flowParseTypeInitialiser();\n      return this.finishNode(node, \"TypeAnnotation\");\n    }\n\n    flowParseTypeAnnotatableIdentifier(\n      allowPrimitiveOverride?: boolean,\n    ): N.Identifier {\n      const ident = allowPrimitiveOverride\n        ? this.parseIdentifier()\n        : this.flowParseRestrictedIdentifier();\n      if (this.match(tt.colon)) {\n        ident.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(ident);\n      }\n      return ident;\n    }\n\n    typeCastToParameter(node: N.TypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    flowParseVariance(): N.FlowVariance | undefined | null {\n      let variance = null;\n      if (this.match(tt.plusMin)) {\n        variance = this.startNode<N.FlowVariance>();\n        if (this.state.value === \"+\") {\n          variance.kind = \"plus\";\n        } else {\n          variance.kind = \"minus\";\n        }\n        this.next();\n        return this.finishNode(variance, \"Variance\");\n      }\n      return variance;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseFunctionBody(\n      node: N.Function,\n      allowExpressionBody?: boolean | null,\n      isMethod: boolean = false,\n    ): void {\n      if (allowExpressionBody) {\n        this.forwardNoArrowParamsConversionAt(node, () =>\n          super.parseFunctionBody(node, true, isMethod),\n        );\n        return;\n      }\n\n      super.parseFunctionBody(node, false, isMethod);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        const typeNode = this.startNode<N.TypeAnnotation>();\n\n        [\n          typeNode.typeAnnotation,\n          // @ts-expect-error predicate may not exist\n          node.predicate,\n        ] = this.flowParseTypeAndPredicateInitialiser();\n\n        node.returnType = typeNode.typeAnnotation\n          ? this.finishNode(typeNode, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    // interfaces and enums\n    parseStatementLike(flags: ParseStatementFlag): N.Statement {\n      // strict mode handling of `interface` since it's a reserved word\n      if (this.state.strict && this.isContextual(tt._interface)) {\n        const lookahead = this.lookahead();\n        if (tokenIsKeywordOrIdentifier(lookahead.type)) {\n          const node = this.startNode<N.FlowInterface>();\n          this.next();\n          return this.flowParseInterface(node);\n        }\n      } else if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      const stmt = super.parseStatementLike(flags);\n      // We will parse a flow pragma in any comment before the first statement.\n      if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {\n        this.flowPragma = null;\n      }\n      return stmt;\n    }\n\n    // declares, interfaces and type aliases\n    parseExpressionStatement(\n      node: N.ExpressionStatement,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.ExpressionStatement {\n      if (expr.type === \"Identifier\") {\n        if (expr.name === \"declare\") {\n          if (\n            this.match(tt._class) ||\n            tokenIsIdentifier(this.state.type) ||\n            this.match(tt._function) ||\n            this.match(tt._var) ||\n            this.match(tt._export)\n          ) {\n            // @ts-expect-error: refine typings\n            return this.flowParseDeclare(node);\n          }\n        } else if (tokenIsIdentifier(this.state.type)) {\n          if (expr.name === \"interface\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseInterface(node);\n          } else if (expr.name === \"type\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseTypeAlias(node);\n          } else if (expr.name === \"opaque\") {\n            // @ts-expect-error: refine typings\n            return this.flowParseOpaqueType(node, false);\n          }\n        }\n      }\n\n      return super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    shouldParseExportDeclaration(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return !this.state.containsEsc;\n      }\n      return super.shouldParseExportDeclaration();\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      const { type } = this.state;\n      if (type === tt._enum || tokenIsFlowInterfaceOrTypeOrOpaque(type)) {\n        return this.state.containsEsc;\n      }\n\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseExportDefaultExpression() {\n      if (this.isContextual(tt._enum)) {\n        const node = this.startNode();\n        this.next();\n        return this.flowParseEnumDeclaration(node);\n      }\n      return super.parseExportDefaultExpression();\n    }\n\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      this.expect(tt.question);\n      const state = this.state.clone();\n      const originalNoArrowAt = this.state.noArrowAt;\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      let { consequent, failed } = this.tryParseConditionalConsequent();\n      let [valid, invalid] = this.getArrowLikeExpressions(consequent);\n\n      if (failed || invalid.length > 0) {\n        const noArrowAt = [...originalNoArrowAt];\n\n        if (invalid.length > 0) {\n          this.state = state;\n          this.state.noArrowAt = noArrowAt;\n\n          for (let i = 0; i < invalid.length; i++) {\n            noArrowAt.push(invalid[i].start);\n          }\n\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n          [valid, invalid] = this.getArrowLikeExpressions(consequent);\n        }\n\n        if (failed && valid.length > 1) {\n          // if there are two or more possible correct ways of parsing, throw an\n          // error.\n          // e.g.   Source: a ? (b): c => (d): e => f\n          //      Result 1: a ? b : (c => ((d): e => f))\n          //      Result 2: a ? ((b): c => d) : (e => f)\n          this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);\n        }\n\n        if (failed && valid.length === 1) {\n          this.state = state;\n          noArrowAt.push(valid[0].start);\n          this.state.noArrowAt = noArrowAt;\n          ({ consequent, failed } = this.tryParseConditionalConsequent());\n        }\n      }\n\n      this.getArrowLikeExpressions(consequent, true);\n\n      this.state.noArrowAt = originalNoArrowAt;\n      this.expect(tt.colon);\n\n      node.test = expr;\n      node.consequent = consequent;\n      node.alternate = this.forwardNoArrowParamsConversionAt(node, () =>\n        this.parseMaybeAssign(undefined, undefined),\n      );\n\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n\n    tryParseConditionalConsequent(): {\n      consequent: N.Expression;\n      failed: boolean;\n    } {\n      this.state.noArrowParamsConversionAt.push(this.state.start);\n\n      const consequent = this.parseMaybeAssignAllowIn();\n      const failed = !this.match(tt.colon);\n\n      this.state.noArrowParamsConversionAt.pop();\n\n      return { consequent, failed };\n    }\n\n    // Given an expression, walks through out its arrow functions whose body is\n    // an expression and through out conditional expressions. It returns every\n    // function which has been parsed with a return type but could have been\n    // parenthesized expressions.\n    // These functions are separated into two arrays: one containing the ones\n    // whose parameters can be converted to assignable lists, one containing the\n    // others.\n    getArrowLikeExpressions(\n      node: N.Expression,\n      disallowInvalid?: boolean,\n    ): [N.ArrowFunctionExpression[], N.ArrowFunctionExpression[]] {\n      const stack = [node];\n      const arrows: N.ArrowFunctionExpression[] = [];\n\n      while (stack.length !== 0) {\n        const node = stack.pop();\n        if (\n          node.type === \"ArrowFunctionExpression\" &&\n          node.body.type !== \"BlockStatement\"\n        ) {\n          if (node.typeParameters || !node.returnType) {\n            // This is an arrow expression without ambiguity, so check its parameters\n            this.finishArrowValidation(node);\n          } else {\n            arrows.push(node);\n          }\n          stack.push(node.body);\n        } else if (node.type === \"ConditionalExpression\") {\n          stack.push(node.consequent);\n          stack.push(node.alternate);\n        }\n      }\n\n      if (disallowInvalid) {\n        arrows.forEach(node => this.finishArrowValidation(node));\n        return [arrows, []];\n      }\n\n      return partition(arrows, node =>\n        node.params.every(param => this.isAssignable(param, true)),\n      );\n    }\n\n    finishArrowValidation(node: N.ArrowFunctionExpression) {\n      this.toAssignableList(\n        // node.params is Expression[] instead of $ReadOnlyArray<Pattern> because it\n        // has not been converted yet.\n        node.params as any as N.Expression[],\n        node.extra?.trailingCommaLoc,\n        /* isLHS */ false,\n      );\n      // Enter scope, as checkParams defines bindings\n      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n      // Use super's method to force the parameters to be checked\n      super.checkParams(node, false, true);\n      this.scope.exit();\n    }\n\n    forwardNoArrowParamsConversionAt<T>(\n      node: Undone<N.Node>,\n      parse: () => T,\n    ): T {\n      let result: T;\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        this.state.noArrowParamsConversionAt.push(this.state.start);\n        result = parse();\n        this.state.noArrowParamsConversionAt.pop();\n      } else {\n        result = parse();\n      }\n\n      return result;\n    }\n\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TypeCastExpression>(startLoc);\n        typeCastNode.expression = newNode as N.Expression;\n        typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TypeCastExpression\");\n      }\n\n      return newNode;\n    }\n\n    assertModuleNodeAllowed(node: N.Node) {\n      if (\n        (node.type === \"ImportDeclaration\" &&\n          (node.importKind === \"type\" || node.importKind === \"typeof\")) ||\n        (node.type === \"ExportNamedDeclaration\" &&\n          node.exportKind === \"type\") ||\n        (node.type === \"ExportAllDeclaration\" && node.exportKind === \"type\")\n      ) {\n        // Allow Flowtype imports and exports in all conditions because\n        // Flow itself does not care about 'sourceType'.\n        return;\n      }\n\n      super.assertModuleNodeAllowed(node);\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (this.isContextual(tt._type)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n\n        if (this.match(tt.braceL)) {\n          // export type { foo, bar };\n          node.specifiers = this.parseExportSpecifiers(\n            /* isInTypeExport */ true,\n          );\n          super.parseExportFrom(node);\n          return null;\n        } else {\n          // export type Foo = Bar;\n          // @ts-expect-error: refine typings\n          return this.flowParseTypeAlias(declarationNode);\n        }\n      } else if (this.isContextual(tt._opaque)) {\n        node.exportKind = \"type\";\n\n        const declarationNode = this.startNode();\n        this.next();\n        // export opaque type Foo = Bar;\n        // @ts-expect-error: refine typings\n        return this.flowParseOpaqueType(declarationNode, false);\n      } else if (this.isContextual(tt._interface)) {\n        node.exportKind = \"type\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseInterface(declarationNode);\n      } else if (this.isContextual(tt._enum)) {\n        node.exportKind = \"value\";\n        const declarationNode = this.startNode();\n        this.next();\n        // @ts-expect-error: refine typings\n        return this.flowParseEnumDeclaration(declarationNode);\n      } else {\n        return super.parseExportDeclaration(node);\n      }\n    }\n\n    eatExportStar(\n      node: Undone<N.Node>,\n    ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n      if (super.eatExportStar(node)) return true;\n\n      if (this.isContextual(tt._type) && this.lookahead().type === tt.star) {\n        (\n          node as Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>\n        ).exportKind = \"type\";\n        this.next();\n        this.next();\n        return true;\n      }\n\n      return false;\n    }\n\n    maybeParseExportNamespaceSpecifier(\n      node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      const { startLoc } = this.state;\n      const hasNamespace = super.maybeParseExportNamespaceSpecifier(node);\n      if (hasNamespace && node.exportKind === \"type\") {\n        this.unexpected(startLoc);\n      }\n      return hasNamespace;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n    ) {\n      super.parseClassId(node, isStatement, optionalId);\n      if (this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const { startLoc } = this.state;\n      if (this.isContextual(tt._declare)) {\n        if (super.parseClassMemberFromModifier(classBody, member)) {\n          // 'declare' is a class element name\n          return;\n        }\n\n        member.declare = true;\n      }\n\n      super.parseClassMember(classBody, member, state);\n\n      if (member.declare) {\n        if (\n          member.type !== \"ClassProperty\" &&\n          member.type !== \"ClassPrivateProperty\" &&\n          member.type !== \"PropertyDefinition\" // Used by estree plugin\n        ) {\n          this.raise(FlowErrors.DeclareClassElement, startLoc);\n        } else if (member.value) {\n          this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);\n        }\n      }\n    }\n\n    isIterator(word: string): boolean {\n      return word === \"iterator\" || word === \"asyncIterator\";\n    }\n\n    readIterator(): void {\n      const word = super.readWord1();\n      const fullWord = \"@@\" + word;\n\n      // Allow @@iterator and @@asyncIterator as a identifier only inside type\n      if (!this.isIterator(word) || !this.state.inType) {\n        this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {\n          identifierName: fullWord,\n        });\n      }\n\n      this.finishToken(tt.name, fullWord);\n    }\n\n    // ensure that inside flow types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (code === charCodes.leftCurlyBrace && next === charCodes.verticalBar) {\n        this.finishOp(tt.braceBarL, 2);\n      } else if (\n        this.state.inType &&\n        (code === charCodes.greaterThan || code === charCodes.lessThan)\n      ) {\n        this.finishOp(code === charCodes.greaterThan ? tt.gt : tt.lt, 1);\n      } else if (this.state.inType && code === charCodes.questionMark) {\n        if (next === charCodes.dot) {\n          this.finishOp(tt.questionDot, 2);\n        } else {\n          // allow double nullable types in Flow: ??string\n          this.finishOp(tt.question, 1);\n        }\n      } else if (\n        isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))\n      ) {\n        this.state.pos += 2; // eat \"@@\"\n        this.readIterator();\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      if (node.type === \"TypeCastExpression\") {\n        return this.isAssignable(node.expression, isBinding);\n      } else {\n        return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      if (\n        !isLHS &&\n        node.type === \"AssignmentExpression\" &&\n        node.left.type === \"TypeCastExpression\"\n      ) {\n        node.left = this.typeCastToParameter(node.left) as N.Assignable;\n      }\n      super.toAssignable(node, isLHS);\n    }\n\n    // turn type casts that we found in function parameter head into type annotated params\n    toAssignableList(\n      exprList: N.Expression[],\n      trailingCommaLoc: Position | undefined | null,\n      isLHS: boolean,\n    ): void {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (expr?.type === \"TypeCastExpression\") {\n          exprList[i] = this.typeCastToParameter(expr);\n        }\n      }\n      super.toAssignableList(exprList, trailingCommaLoc, isLHS);\n    }\n\n    // this is a list of nodes, from something like a call expression, we need to filter the\n    // type casts that we've found that are illegal in this context\n    toReferencedList(\n      exprList:\n        | ReadonlyArray<N.Expression | N.SpreadElement>\n        | ReadonlyArray<N.Expression | N.RestElement>,\n      isParenthesizedExpr?: boolean,\n    ):\n      | ReadonlyArray<N.Expression | N.SpreadElement>\n      | ReadonlyArray<N.Expression | N.RestElement> {\n      for (let i = 0; i < exprList.length; i++) {\n        const expr = exprList[i];\n        if (\n          expr &&\n          expr.type === \"TypeCastExpression\" &&\n          !expr.extra?.parenthesized &&\n          (exprList.length > 1 || !isParenthesizedExpr)\n        ) {\n          this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);\n        }\n      }\n\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      // This could be an array pattern:\n      //   ([a: string, b: string]) => {}\n      // In this case, we don't have to call toReferencedList. We will\n      // call it, if needed, when we are sure that it is a parenthesized\n      // expression by calling toReferencedListDeep.\n      if (canBePattern && !this.state.maybeInArrowParameters) {\n        this.toReferencedList(node.elements);\n      }\n\n      return node;\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"TypeCastExpression\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    // parse class property type annotations\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (this.match(tt.colon)) {\n        node.typeAnnotation = this.flowParseTypeAnnotation();\n      }\n      return super.parseClassPrivateProperty(node);\n    }\n\n    // determine whether or not we're currently in the position where a class method would appear\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    // determine whether or not we're currently in the position where a class property would appear\n    isClassProperty(): boolean {\n      return this.match(tt.colon) || super.isClassProperty();\n    }\n\n    isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n      return !this.match(tt.colon) && super.isNonstaticConstructor(method);\n    }\n\n    // parse type parameters for class methods\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n\n      if (method.params && isConstructor) {\n        const params = method.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n        // estree support\n      } else if (\n        // @ts-expect-error TS does not know about the fact that estree can replace ClassMethod with MethodDefinition\n        method.type === \"MethodDefinition\" &&\n        isConstructor &&\n        // @ts-expect-error estree\n        method.value.params\n      ) {\n        // @ts-expect-error estree\n        const params = method.value.params;\n        if (params.length > 0 && this.isThisParam(params[0])) {\n          this.raise(FlowErrors.ThisParamBannedInConstructor, method);\n        }\n      }\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      if ((method as any).variance) {\n        this.unexpected((method as any).variance.loc.start);\n      }\n      delete (method as any).variance;\n      if (this.match(tt.lt)) {\n        method.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    // parse a the super class type parameters and implements\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      if (\n        node.superClass &&\n        (this.match(tt.lt) ||\n          // handles `class extends C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        } else {\n          node.superTypeParameters =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n      if (this.isContextual(tt._implements)) {\n        this.next();\n        const implemented: N.FlowClassImplements[] = (node.implements = []);\n        do {\n          const node = this.startNode<N.FlowClassImplements>();\n          node.id = this.flowParseRestrictedIdentifier(/*liberal*/ true);\n          if (this.match(tt.lt)) {\n            node.typeParameters = this.flowParseTypeParameterInstantiation();\n          } else {\n            node.typeParameters = null;\n          }\n          implemented.push(this.finishNode(node, \"ClassImplements\"));\n        } while (this.eat(tt.comma));\n      }\n    }\n\n    checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n      super.checkGetterSetterParams(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      if (params.length > 0) {\n        const param = params[0];\n        if (this.isThisParam(param) && method.kind === \"get\") {\n          this.raise(FlowErrors.GetterMayNotHaveThisParam, param);\n        } else if (this.isThisParam(param)) {\n          this.raise(FlowErrors.SetterMayNotHaveThisParam, param);\n        }\n      }\n    }\n\n    parsePropertyNamePrefixOperator(\n      node: N.ObjectOrClassMember | N.ClassMember,\n    ): void {\n      node.variance = this.flowParseVariance();\n    }\n\n    // parse type parameters for object method shorthand\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      if ((prop as any).variance) {\n        this.unexpected((prop as any).variance.loc.start);\n      }\n      delete (prop as any).variance;\n\n      let typeParameters;\n\n      // method shorthand\n      if (this.match(tt.lt) && !isAccessor) {\n        typeParameters = this.flowParseTypeParameterDeclaration();\n        if (!this.match(tt.parenL)) this.unexpected();\n      }\n\n      const result = super.parseObjPropValue(\n        prop,\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n\n      // add typeParameters if we found them\n      if (typeParameters) {\n        // @ts-expect-error: refine typings\n        (result.value || result).typeParameters = typeParameters;\n      }\n      return result;\n    }\n\n    parseFunctionParamType(param: N.Pattern): N.Pattern {\n      if (this.eat(tt.question)) {\n        if (param.type !== \"Identifier\") {\n          this.raise(FlowErrors.PatternIsOptional, param);\n        }\n        if (this.isThisParam(param)) {\n          this.raise(FlowErrors.ThisParamMayNotBeOptional, param);\n        }\n\n        (param as any as N.Identifier).optional = true;\n      }\n      if (this.match(tt.colon)) {\n        param.typeAnnotation = this.flowParseTypeAnnotation();\n      } else if (this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamAnnotationRequired, param);\n      }\n\n      if (this.match(tt.eq) && this.isThisParam(param)) {\n        this.raise(FlowErrors.ThisParamNoDefault, param);\n      }\n\n      this.resetEndLocation(param);\n      return param;\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: N.Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          FlowErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    parseImportSpecifierLocal<\n      T extends\n        | N.ImportSpecifier\n        | N.ImportDefaultSpecifier\n        | N.ImportNamespaceSpecifier,\n    >(node: N.ImportDeclaration, specifier: Undone<T>, type: T[\"type\"]): void {\n      specifier.local = hasTypeImportKind(node)\n        ? this.flowParseRestrictedIdentifier(\n            /* liberal */ true,\n            /* declaration */ true,\n          )\n        : this.parseIdentifier();\n\n      node.specifiers.push(this.finishImportSpecifier(specifier, type));\n    }\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        if (!isExport) return true;\n        const ch = this.lookaheadCharCode();\n        return ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        if (!phase && this.match(tt._default)) {\n          // TODO: Align with our TS AST and always add .exportKind\n          return;\n        }\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? phase : \"value\";\n      } else {\n        if (phase === \"type\" && this.match(tt.star)) this.unexpected();\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    // parse import-type/typeof shorthand\n    parseImportSpecifier(\n      specifier: any,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      const firstIdent = specifier.imported;\n\n      let specifierTypeKind = null;\n      if (firstIdent.type === \"Identifier\") {\n        if (firstIdent.name === \"type\") {\n          specifierTypeKind = \"type\";\n        } else if (firstIdent.name === \"typeof\") {\n          specifierTypeKind = \"typeof\";\n        }\n      }\n\n      let isBinding = false;\n      if (this.isContextual(tt._as) && !this.isLookaheadContextual(\"as\")) {\n        const as_ident = this.parseIdentifier(true);\n        if (\n          specifierTypeKind !== null &&\n          !tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type as ,` or `import {type as }`\n          specifier.imported = as_ident;\n          specifier.importKind = specifierTypeKind;\n          specifier.local = cloneIdentifier(as_ident);\n        } else {\n          // `import {type as foo`\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n          specifier.local = this.parseIdentifier();\n        }\n      } else {\n        if (\n          specifierTypeKind !== null &&\n          tokenIsKeywordOrIdentifier(this.state.type)\n        ) {\n          // `import {type foo`\n          specifier.imported = this.parseIdentifier(true);\n          specifier.importKind = specifierTypeKind;\n        } else {\n          if (importedIsString) {\n            /*:: invariant(firstIdent instanceof N.StringLiteral) */\n            throw this.raise(Errors.ImportBindingIsString, specifier, {\n              importName: firstIdent.value,\n            });\n          }\n          /*:: invariant(firstIdent instanceof N.Node) */\n          specifier.imported = firstIdent;\n          specifier.importKind = null;\n        }\n\n        if (this.eatContextual(tt._as)) {\n          specifier.local = this.parseIdentifier();\n        } else {\n          isBinding = true;\n          specifier.local = cloneIdentifier(specifier.imported);\n        }\n      }\n\n      const specifierIsTypeImport = hasTypeImportKind(specifier);\n\n      if (isInTypeOnlyImport && specifierIsTypeImport) {\n        this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);\n      }\n\n      if (isInTypeOnlyImport || specifierIsTypeImport) {\n        this.checkReservedType(\n          specifier.local.name,\n          specifier.local.loc.start,\n          /* declaration */ true,\n        );\n      }\n\n      if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {\n        this.checkReservedWord(\n          specifier.local.name,\n          specifier.loc.start,\n          true,\n          true,\n        );\n      }\n\n      return this.finishImportSpecifier(specifier, \"ImportSpecifier\");\n    }\n\n    parseBindingAtom(): N.Pattern {\n      switch (this.state.type) {\n        case tt._this:\n          // \"this\" may be the name of a parameter, so allow it.\n          return this.parseIdentifier(/* liberal */ true);\n        default:\n          return super.parseBindingAtom();\n      }\n    }\n\n    // parse function type parameters - function foo<T>() {}\n    parseFunctionParams(\n      node: Undone<N.Function>,\n      isConstructor: boolean,\n    ): void {\n      // @ts-expect-error kind may not index node\n      const kind = node.kind;\n      if (kind !== \"get\" && kind !== \"set\" && this.match(tt.lt)) {\n        node.typeParameters = this.flowParseTypeParameterDeclaration();\n      }\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // parse flow type annotations on variable declarator heads - let foo: string = bar\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (this.match(tt.colon)) {\n        decl.id.typeAnnotation = this.flowParseTypeAnnotation();\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n        this.state.noAnonFunctionType = true;\n        node.returnType = this.flowParseTypeAnnotation();\n        this.state.noAnonFunctionType = oldNoAnonFunctionType;\n      }\n\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    // todo description\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    // We need to support type parameter declarations for arrow functions. This\n    // is tricky. There are three situations we need to handle\n    //\n    // 1. This is either JSX or an arrow function. We'll try JSX first. If that\n    //    fails, we'll try an arrow function. If that fails, we'll throw the JSX\n    //    error.\n    // 2. This is an arrow function. We'll parse the type parameter declaration,\n    //    parse the rest, make sure the rest is an arrow function, and go from\n    //    there\n    // 3. This is neither. Just call the super method\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      let state = null;\n\n      let jsx;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` and `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (jsx?.error || this.match(tt.lt)) {\n        state = state || this.state.clone();\n\n        let typeParameters: N.TypeParameterDeclaration;\n\n        const arrow = this.tryParse((abort: () => never) => {\n          typeParameters = this.flowParseTypeParameterDeclaration();\n\n          const arrowExpression = this.forwardNoArrowParamsConversionAt(\n            typeParameters,\n            () => {\n              const result = super.parseMaybeAssign(\n                refExpressionErrors,\n                afterLeftParse,\n              );\n\n              this.resetStartLocationFromNode(result, typeParameters);\n\n              return result;\n            },\n          );\n\n          // <T>(() => {});\n          // <T>(() => {}: any);\n          if (arrowExpression.extra?.parenthesized) abort();\n\n          // The above can return a TypeCastExpression when the arrow\n          // expression is not wrapped in parens. See also `this.parseParenItem`.\n          // (<T>() => {}: any);\n          const expr = this.maybeUnwrapTypeCastExpression(arrowExpression);\n\n          if (expr.type !== \"ArrowFunctionExpression\") abort();\n\n          expr.typeParameters = typeParameters;\n          this.resetStartLocationFromNode(expr, typeParameters);\n\n          return arrowExpression;\n        }, state);\n\n        let arrowExpression:\n          | N.ArrowFunctionExpression\n          | N.TypeCastExpression\n          | undefined\n          | null = null;\n\n        if (\n          arrow.node &&\n          this.maybeUnwrapTypeCastExpression(arrow.node).type ===\n            \"ArrowFunctionExpression\"\n        ) {\n          if (!arrow.error && !arrow.aborted) {\n            // <T> async () => {}\n            // @ts-expect-error: refine tryParse typings\n            if (arrow.node.async) {\n              /*:: invariant(typeParameters) */\n              this.raise(\n                FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction,\n                typeParameters,\n              );\n            }\n            return arrow.node;\n          }\n\n          // @ts-expect-error: refine typings\n          arrowExpression = arrow.node;\n        }\n\n        // If we are here, both JSX and Flow parsing attempts failed.\n        // Give the precedence to the JSX error, except if JSX had an\n        // unrecoverable error while Flow didn't.\n        // If the error is recoverable, we can only re-report it if there is\n        // a node we can return.\n\n        if (jsx?.node) {\n          /*:: invariant(jsx.failState) */\n          this.state = jsx.failState;\n          return jsx.node;\n        }\n\n        if (arrowExpression) {\n          /*:: invariant(arrow.failState) */\n          this.state = arrow.failState;\n          return arrowExpression;\n        }\n\n        if (jsx?.thrown) throw jsx.error;\n        if (arrow.thrown) throw arrow.error;\n\n        /*:: invariant(typeParameters) */\n        throw this.raise(\n          FlowErrors.UnexpectedTokenAfterTypeParameter,\n          typeParameters,\n        );\n      }\n\n      return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n    }\n\n    // handle return types for arrow functions\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // @ts-expect-error todo(flow->ts)\n        const result = this.tryParse<N.TypeAnnotation>(() => {\n          const oldNoAnonFunctionType = this.state.noAnonFunctionType;\n          this.state.noAnonFunctionType = true;\n\n          const typeNode = this.startNode<N.TypeAnnotation>();\n\n          [\n            typeNode.typeAnnotation,\n            // @ts-expect-error (destructuring not supported yet)\n            node.predicate,\n          ] = this.flowParseTypeAndPredicateInitialiser();\n\n          this.state.noAnonFunctionType = oldNoAnonFunctionType;\n\n          if (this.canInsertSemicolon()) this.unexpected();\n          if (!this.match(tt.arrow)) this.unexpected();\n\n          return typeNode;\n        });\n\n        if (result.thrown) return null;\n        /*:: invariant(result.node) */\n\n        if (result.error) this.state = result.failState;\n\n        // assign after it is clear it is an arrow\n        // @ts-expect-error todo(flow->ts)\n        node.returnType = result.node.typeAnnotation\n          ? this.finishNode(result.node, \"TypeAnnotation\")\n          : null;\n      }\n\n      return super.parseArrow(node);\n    }\n\n    shouldParseArrow(params: Array<N.Node>): boolean {\n      return this.match(tt.colon) || super.shouldParseArrow(params);\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params:\n        | Array<N.Expression | N.SpreadElement>\n        | Array<N.Expression | N.RestElement>,\n    ): void {\n      if (\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        node.params = params as N.ArrowFunctionExpression[\"params\"];\n      } else {\n        super.setArrowFunctionParameters(node, params);\n      }\n    }\n\n    checkParams(\n      node: N.Function,\n      allowDuplicates: boolean,\n      isArrowFunction?: boolean | null,\n      strictModeChanged: boolean = true,\n    ): void {\n      if (\n        isArrowFunction &&\n        this.state.noArrowParamsConversionAt.includes(\n          this.offsetToSourcePos(node.start),\n        )\n      ) {\n        return;\n      }\n\n      // ensure the `this` param is first, if it exists\n      for (let i = 0; i < node.params.length; i++) {\n        if (this.isThisParam(node.params[i]) && i > 0) {\n          this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);\n        }\n      }\n\n      super.checkParams(\n        node,\n        allowDuplicates,\n        isArrowFunction,\n        strictModeChanged,\n      );\n    }\n\n    parseParenAndDistinguishExpression(canBeArrow: boolean): N.Expression {\n      return super.parseParenAndDistinguishExpression(\n        canBeArrow &&\n          !this.state.noArrowAt.includes(\n            this.sourceToOffsetPos(this.state.start),\n          ),\n      );\n    }\n\n    parseSubscripts(\n      base: N.Expression,\n      startLoc: Position,\n      noCalls?: boolean | null,\n    ): N.Expression {\n      if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.state.noArrowAt.includes(startLoc.index)\n      ) {\n        this.next();\n\n        const node = this.startNodeAt<N.CallExpression>(startLoc);\n        node.callee = base;\n        node.arguments = super.parseCallExpressionArguments(tt.parenR);\n        base = this.finishNode(node, \"CallExpression\");\n      } else if (\n        base.type === \"Identifier\" &&\n        base.name === \"async\" &&\n        this.match(tt.lt)\n      ) {\n        const state = this.state.clone();\n        const arrow = this.tryParse(\n          abort => this.parseAsyncArrowWithTypeParameters(startLoc) || abort(),\n          state,\n        );\n\n        /*:: invariant(arrow.node != null) */\n        // @ts-expect-error: refine tryParse typings\n        if (!arrow.error && !arrow.aborted) return arrow.node;\n\n        const result = this.tryParse(\n          () => super.parseSubscripts(base, startLoc, noCalls),\n          state,\n        );\n\n        if (result.node && !result.error) return result.node;\n\n        if (arrow.node) {\n          this.state = arrow.failState;\n          // @ts-expect-error: refine tryParse typings\n          return arrow.node;\n        }\n\n        if (result.node) {\n          this.state = result.failState;\n          return result.node;\n        }\n\n        throw arrow.error || result.error;\n      }\n\n      return super.parseSubscripts(base, startLoc, noCalls);\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      subscriptState: N.ParseSubscriptState,\n    ): N.Expression {\n      if (this.match(tt.questionDot) && this.isLookaheadToken_lt()) {\n        subscriptState.optionalChainMember = true;\n        if (noCalls) {\n          subscriptState.stop = true;\n          return base;\n        }\n        this.next();\n        const node = this.startNodeAt<N.OptionalCallExpression>(startLoc);\n        node.callee = base;\n        node.typeArguments =\n          this.flowParseTypeParameterInstantiationInExpression();\n        this.expect(tt.parenL);\n        node.arguments = this.parseCallExpressionArguments(tt.parenR);\n        node.optional = true;\n        return this.finishCallExpression(node, /* optional */ true);\n      } else if (\n        !noCalls &&\n        this.shouldParseTypes() &&\n        (this.match(tt.lt) ||\n          // also handles `new C<<T>`\n          this.match(tt.bitShiftL))\n      ) {\n        const node = this.startNodeAt<\n          N.OptionalCallExpression | N.CallExpression\n        >(startLoc);\n        node.callee = base;\n\n        const result = this.tryParse(() => {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationCallOrNew();\n          this.expect(tt.parenL);\n          node.arguments = super.parseCallExpressionArguments(tt.parenR);\n          if (subscriptState.optionalChainMember) {\n            (node as Undone<N.OptionalCallExpression>).optional = false;\n          }\n          return this.finishCallExpression(\n            node,\n            subscriptState.optionalChainMember,\n          );\n        });\n\n        if (result.node) {\n          if (result.error) this.state = result.failState;\n          return result.node;\n        }\n      }\n\n      return super.parseSubscript(\n        base,\n\n        startLoc,\n        noCalls,\n        subscriptState,\n      );\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      let targs = null;\n      if (this.shouldParseTypes() && this.match(tt.lt)) {\n        targs = this.tryParse(() =>\n          this.flowParseTypeParameterInstantiationCallOrNew(),\n        ).node;\n      }\n      node.typeArguments = targs;\n    }\n\n    parseAsyncArrowWithTypeParameters(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined | null {\n      const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n      this.parseFunctionParams(node, false);\n      if (!this.parseArrow(node)) return;\n      return super.parseArrowExpression(\n        node,\n        /* params */ undefined,\n        /* isAsync */ true,\n      );\n    }\n\n    readToken_mult_modulo(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.asterisk &&\n        next === charCodes.slash &&\n        this.state.hasFlowComment\n      ) {\n        this.state.hasFlowComment = false;\n        this.state.pos += 2;\n        this.nextToken();\n        return;\n      }\n\n      super.readToken_mult_modulo(code);\n    }\n\n    readToken_pipe_amp(code: number): void {\n      const next = this.input.charCodeAt(this.state.pos + 1);\n      if (\n        code === charCodes.verticalBar &&\n        next === charCodes.rightCurlyBrace\n      ) {\n        // '|}'\n        this.finishOp(tt.braceBarR, 2);\n        return;\n      }\n\n      super.readToken_pipe_amp(code);\n    }\n\n    parseTopLevel(file: N.File, program: N.Program): N.File {\n      const fileNode = super.parseTopLevel(file, program);\n      if (this.state.hasFlowComment) {\n        this.raise(\n          FlowErrors.UnterminatedFlowComment,\n          this.state.curPosition(),\n        );\n      }\n      return fileNode;\n    }\n\n    skipBlockComment(): N.CommentBlock | undefined {\n      if (this.hasPlugin(\"flowComments\") && this.skipFlowComment()) {\n        if (this.state.hasFlowComment) {\n          throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);\n        }\n        this.hasFlowCommentCompletion();\n        const commentSkip = this.skipFlowComment();\n        if (commentSkip) {\n          this.state.pos += commentSkip;\n          this.state.hasFlowComment = true;\n        }\n        return;\n      }\n\n      return super.skipBlockComment(this.state.hasFlowComment ? \"*-/\" : \"*/\");\n    }\n\n    skipFlowComment(): number | false {\n      const { pos } = this.state;\n      let shiftToFirstNonWhiteSpace = 2;\n      while (\n        [charCodes.space, charCodes.tab].includes(\n          // @ts-expect-error testing whether a number is included\n          this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace),\n        )\n      ) {\n        shiftToFirstNonWhiteSpace++;\n      }\n\n      const ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);\n      const ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);\n\n      if (ch2 === charCodes.colon && ch3 === charCodes.colon) {\n        return shiftToFirstNonWhiteSpace + 2; // check for /*::\n      }\n      if (\n        this.input.slice(\n          shiftToFirstNonWhiteSpace + pos,\n          shiftToFirstNonWhiteSpace + pos + 12,\n        ) === \"flow-include\"\n      ) {\n        return shiftToFirstNonWhiteSpace + 12; // check for /*flow-include\n      }\n      if (ch2 === charCodes.colon && ch3 !== charCodes.colon) {\n        return shiftToFirstNonWhiteSpace; // check for /*:, advance up to :\n      }\n      return false;\n    }\n\n    hasFlowCommentCompletion(): void {\n      const end = this.input.indexOf(\"*/\", this.state.pos);\n      if (end === -1) {\n        throw this.raise(Errors.UnterminatedComment, this.state.curPosition());\n      }\n    }\n\n    // Flow enum parsing\n\n    flowEnumErrorBooleanMemberNotInitialized(\n      loc: Position,\n      {\n        enumName,\n        memberName,\n      }: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {\n        memberName,\n        enumName,\n      });\n    }\n\n    flowEnumErrorInvalidMemberInitializer(\n      loc: Position,\n      enumContext: EnumContext,\n    ) {\n      return this.raise(\n        !enumContext.explicitType\n          ? FlowErrors.EnumInvalidMemberInitializerUnknownType\n          : enumContext.explicitType === \"symbol\"\n            ? FlowErrors.EnumInvalidMemberInitializerSymbolType\n            : FlowErrors.EnumInvalidMemberInitializerPrimaryType,\n        loc,\n        enumContext,\n      );\n    }\n\n    flowEnumErrorNumberMemberNotInitialized(\n      loc: Position,\n      details: {\n        enumName: string;\n        memberName: string;\n      },\n    ): void {\n      this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);\n    }\n\n    flowEnumErrorStringMemberInconsistentlyInitialized(\n      node: N.Node,\n      details: {\n        enumName: string;\n      },\n    ): void {\n      this.raise(\n        FlowErrors.EnumStringMemberInconsistentlyInitialized,\n        node,\n        details,\n      );\n    }\n\n    flowEnumMemberInit(): EnumMemberInit {\n      const startLoc = this.state.startLoc;\n      const endOfInit = () => this.match(tt.comma) || this.match(tt.braceR);\n      switch (this.state.type) {\n        case tt.num: {\n          const literal = this.parseNumericLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"number\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt.string: {\n          const literal = this.parseStringLiteral(this.state.value);\n          if (endOfInit()) {\n            return { type: \"string\", loc: literal.loc.start, value: literal };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        case tt._true:\n        case tt._false: {\n          const literal = this.parseBooleanLiteral(this.match(tt._true));\n          if (endOfInit()) {\n            return {\n              type: \"boolean\",\n              loc: literal.loc.start,\n              value: literal,\n            };\n          }\n          return { type: \"invalid\", loc: startLoc };\n        }\n        default:\n          return { type: \"invalid\", loc: startLoc };\n      }\n    }\n\n    flowEnumMemberRaw(): {\n      id: N.Identifier;\n      init: EnumMemberInit;\n    } {\n      const loc = this.state.startLoc;\n      const id = this.parseIdentifier(true);\n      const init = this.eat(tt.eq)\n        ? this.flowEnumMemberInit()\n        : { type: \"none\" as const, loc };\n      return { id, init };\n    }\n\n    flowEnumCheckExplicitTypeMismatch(\n      loc: Position,\n      context: EnumContext,\n      expectedType: EnumExplicitType,\n    ): void {\n      const { explicitType } = context;\n      if (explicitType === null) {\n        return;\n      }\n      if (explicitType !== expectedType) {\n        this.flowEnumErrorInvalidMemberInitializer(loc, context);\n      }\n    }\n\n    flowEnumMembers({\n      enumName,\n      explicitType,\n    }: {\n      enumName: string;\n      explicitType: EnumExplicitType;\n    }): {\n      members: {\n        booleanMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumBooleanMember\" }\n        >[];\n        numberMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumNumberMember\" }\n        >[];\n        stringMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumStringMember\" }\n        >[];\n        defaultedMembers: Extract<\n          N.FlowEnumMember,\n          { type: \"EnumDefaultedMember\" }\n        >[];\n      };\n      hasUnknownMembers: boolean;\n    } {\n      const seenNames = new Set();\n      const members = {\n        // @ts-expect-error: migrate to Babel types\n        booleanMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        numberMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        stringMembers: [],\n        // @ts-expect-error: migrate to Babel types\n        defaultedMembers: [],\n      };\n      let hasUnknownMembers = false;\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.ellipsis)) {\n          hasUnknownMembers = true;\n          break;\n        }\n        const memberNode = this.startNode<N.FlowEnumMember>();\n        const { id, init } = this.flowEnumMemberRaw();\n        const memberName = id.name;\n        if (memberName === \"\") {\n          continue;\n        }\n        if (/^[a-z]/.test(memberName)) {\n          this.raise(FlowErrors.EnumInvalidMemberName, id, {\n            memberName,\n            suggestion: memberName[0].toUpperCase() + memberName.slice(1),\n            enumName,\n          });\n        }\n        if (seenNames.has(memberName)) {\n          this.raise(FlowErrors.EnumDuplicateMemberName, id, {\n            memberName,\n            enumName,\n          });\n        }\n        seenNames.add(memberName);\n        const context = { enumName, explicitType, memberName };\n        memberNode.id = id;\n        switch (init.type) {\n          case \"boolean\": {\n            this.flowEnumCheckExplicitTypeMismatch(\n              init.loc,\n              context,\n              \"boolean\",\n            );\n            memberNode.init = init.value;\n            members.booleanMembers.push(\n              this.finishNode(memberNode, \"EnumBooleanMember\"),\n            );\n            break;\n          }\n          case \"number\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"number\");\n            memberNode.init = init.value;\n            members.numberMembers.push(\n              this.finishNode(memberNode, \"EnumNumberMember\"),\n            );\n            break;\n          }\n          case \"string\": {\n            this.flowEnumCheckExplicitTypeMismatch(init.loc, context, \"string\");\n            memberNode.init = init.value;\n            members.stringMembers.push(\n              this.finishNode(memberNode, \"EnumStringMember\"),\n            );\n            break;\n          }\n          case \"invalid\": {\n            throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);\n          }\n          case \"none\": {\n            switch (explicitType) {\n              case \"boolean\":\n                this.flowEnumErrorBooleanMemberNotInitialized(\n                  init.loc,\n                  context,\n                );\n                break;\n              case \"number\":\n                this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);\n                break;\n              default:\n                members.defaultedMembers.push(\n                  this.finishNode(memberNode, \"EnumDefaultedMember\"),\n                );\n            }\n          }\n        }\n\n        if (!this.match(tt.braceR)) {\n          this.expect(tt.comma);\n        }\n      }\n      return { members, hasUnknownMembers };\n    }\n\n    flowEnumStringMembers(\n      initializedMembers: Array<N.Node>,\n      defaultedMembers: Array<N.Node>,\n      {\n        enumName,\n      }: {\n        enumName: string;\n      },\n    ): Array<N.Node> {\n      if (initializedMembers.length === 0) {\n        return defaultedMembers;\n      } else if (defaultedMembers.length === 0) {\n        return initializedMembers;\n      } else if (defaultedMembers.length > initializedMembers.length) {\n        for (const member of initializedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return defaultedMembers;\n      } else {\n        for (const member of defaultedMembers) {\n          this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {\n            enumName,\n          });\n        }\n        return initializedMembers;\n      }\n    }\n\n    flowEnumParseExplicitType({\n      enumName,\n    }: {\n      enumName: string;\n    }): EnumExplicitType {\n      if (!this.eatContextual(tt._of)) return null;\n\n      if (!tokenIsIdentifier(this.state.type)) {\n        throw this.raise(\n          FlowErrors.EnumInvalidExplicitTypeUnknownSupplied,\n          this.state.startLoc,\n          {\n            enumName,\n          },\n        );\n      }\n\n      const { value } = this.state;\n      this.next();\n\n      if (\n        value !== \"boolean\" &&\n        value !== \"number\" &&\n        value !== \"string\" &&\n        value !== \"symbol\"\n      ) {\n        this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {\n          enumName,\n          invalidEnumType: value,\n        });\n      }\n\n      return value;\n    }\n\n    flowEnumBody(node: Undone<N.FlowEnumBody>, id: N.Identifier): N.Node {\n      const enumName = id.name;\n      const nameLoc = id.loc.start;\n      const explicitType = this.flowEnumParseExplicitType({ enumName });\n      this.expect(tt.braceL);\n      const { members, hasUnknownMembers } = this.flowEnumMembers({\n        enumName,\n        explicitType,\n      });\n      node.hasUnknownMembers = hasUnknownMembers;\n\n      switch (explicitType) {\n        case \"boolean\":\n          node.explicitType = true;\n          node.members = members.booleanMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumBooleanBody\");\n        case \"number\":\n          node.explicitType = true;\n          node.members = members.numberMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumNumberBody\");\n        case \"string\":\n          node.explicitType = true;\n          node.members = this.flowEnumStringMembers(\n            members.stringMembers,\n            members.defaultedMembers,\n            { enumName },\n          );\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumStringBody\");\n        case \"symbol\":\n          node.members = members.defaultedMembers;\n          this.expect(tt.braceR);\n          return this.finishNode(node, \"EnumSymbolBody\");\n        default: {\n          // `explicitType` is `null`\n          const empty = () => {\n            node.members = [];\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          };\n          node.explicitType = false;\n\n          const boolsLen = members.booleanMembers.length;\n          const numsLen = members.numberMembers.length;\n          const strsLen = members.stringMembers.length;\n          const defaultedLen = members.defaultedMembers.length;\n\n          if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {\n            return empty();\n          } else if (!boolsLen && !numsLen) {\n            node.members = this.flowEnumStringMembers(\n              members.stringMembers,\n              members.defaultedMembers,\n              { enumName },\n            );\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumStringBody\");\n          } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.booleanMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumBooleanBody\");\n          } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {\n            for (const member of members.defaultedMembers) {\n              this.flowEnumErrorNumberMemberNotInitialized(member.loc.start, {\n                enumName,\n                memberName: member.id.name,\n              });\n            }\n            node.members = members.numberMembers;\n            this.expect(tt.braceR);\n            return this.finishNode(node, \"EnumNumberBody\");\n          } else {\n            this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {\n              enumName,\n            });\n            return empty();\n          }\n        }\n      }\n    }\n\n    flowParseEnumDeclaration(\n      node: Undone<N.FlowEnumDeclaration>,\n    ): N.FlowEnumDeclaration {\n      const id = this.parseIdentifier();\n      node.id = id;\n      node.body = this.flowEnumBody(this.startNode(), id);\n      return this.finishNode(node, \"EnumDeclaration\");\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      if (this.shouldParseTypes()) {\n        if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n          node.typeArguments =\n            this.flowParseTypeParameterInstantiationInExpression();\n        }\n      }\n\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    // check if the next token is a tt.lt\n    isLookaheadToken_lt(): boolean {\n      const next = this.nextTokenStart();\n      if (this.input.charCodeAt(next) === charCodes.lessThan) {\n        const afterNext = this.input.charCodeAt(next + 1);\n        return (\n          afterNext !== charCodes.lessThan && afterNext !== charCodes.equalsTo\n        );\n      }\n      return false;\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    maybeUnwrapTypeCastExpression(node: N.Node) {\n      return node.type === \"TypeCastExpression\" ? node.expression : node;\n    }\n  };\n","const entities: {\n  __proto__: null;\n  [name: string]: string;\n} = {\n  __proto__: null,\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} as const;\nexport default entities;\n","import * as charCodes from \"charcodes\";\n\nimport XHTMLEntities from \"./xhtml.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport {\n  tokenComesBeforeExpression,\n  tokenIsKeyword,\n  tokenLabelName,\n  type TokenType,\n  tt,\n} from \"../../tokenizer/types.ts\";\nimport type { TokContext } from \"../../tokenizer/context.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../../util/identifier.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { isNewLine } from \"../../util/whitespace.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport type { Undone } from \"../../parser/node.ts\";\n\n/* eslint sort-keys: \"error\" */\nconst JsxErrors = ParseErrorEnum`jsx`({\n  AttributeIsEmpty:\n    \"JSX attributes must only be assigned a non-empty expression.\",\n  MissingClosingTagElement: ({ openingTagName }: { openingTagName: string }) =>\n    `Expected corresponding JSX closing tag for <${openingTagName}>.`,\n  MissingClosingTagFragment: \"Expected corresponding JSX closing tag for <>.\",\n  UnexpectedSequenceExpression:\n    \"Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?\",\n  // FIXME: Unify with Errors.UnexpectedToken\n  UnexpectedToken: ({\n    unexpected,\n    HTMLEntity,\n  }: {\n    unexpected: string;\n    HTMLEntity: string;\n  }) =>\n    `Unexpected token \\`${unexpected}\\`. Did you mean \\`${HTMLEntity}\\` or \\`{'${unexpected}'}\\`?`,\n  UnsupportedJsxValue:\n    \"JSX value should be either an expression or a quoted JSX text.\",\n  UnterminatedJsxContent: \"Unterminated JSX contents.\",\n  UnwrappedAdjacentJSXElements:\n    \"Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?\",\n});\n\n/* eslint-disable sort-keys */\n\nfunction isFragment(object?: N.JSXTag | null): object is N.JSXFragmentTag {\n  return object\n    ? object.type === \"JSXOpeningFragment\" ||\n        object.type === \"JSXClosingFragment\"\n    : false;\n}\n\n// Transforms JSX element name to string.\n\nfunction getQualifiedJSXName(\n  object: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression,\n): string {\n  if (object.type === \"JSXIdentifier\") {\n    return object.name;\n  }\n\n  if (object.type === \"JSXNamespacedName\") {\n    return object.namespace.name + \":\" + object.name.name;\n  }\n\n  if (object.type === \"JSXMemberExpression\") {\n    return (\n      getQualifiedJSXName(object.object) +\n      \".\" +\n      getQualifiedJSXName(object.property)\n    );\n  }\n\n  // istanbul ignore next\n  // @ts-expect-error - object is 'never'\n  throw new Error(\"Node had unexpected type: \" + object.type);\n}\n\nexport interface IJSXParserMixin {\n  jsxParseOpeningElementAfterName(\n    node: N.JSXOpeningElement,\n  ): N.JSXOpeningElement;\n}\n\nexport type ClassWithMixin<\n  T extends new (...args: any) => any,\n  M extends object,\n> = T extends new (...args: infer P) => infer I\n  ? new (...args: P) => I & M\n  : never;\n\nexport default (superClass: typeof Parser) =>\n  class JSXParserMixin extends superClass implements Parser, IJSXParserMixin {\n    // Reads inline JSX contents token.\n\n    jsxReadToken(): void {\n      let out = \"\";\n      let chunkStart = this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(\n            JsxErrors.UnterminatedJsxContent,\n            this.state.startLoc,\n          );\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n\n        switch (ch) {\n          case charCodes.lessThan:\n          case charCodes.leftCurlyBrace:\n            if (this.state.pos === this.state.start) {\n              if (ch === charCodes.lessThan && this.state.canStartJSXElement) {\n                ++this.state.pos;\n                this.finishToken(tt.jsxTagStart);\n              } else {\n                super.getTokenFromCode(ch);\n              }\n              return;\n            }\n            out += this.input.slice(chunkStart, this.state.pos);\n            this.finishToken(tt.jsxText, out);\n            return;\n\n          case charCodes.ampersand:\n            out += this.input.slice(chunkStart, this.state.pos);\n            out += this.jsxReadEntity();\n            chunkStart = this.state.pos;\n            break;\n\n          case charCodes.greaterThan:\n          case charCodes.rightCurlyBrace:\n            if (process.env.BABEL_8_BREAKING) {\n              this.raise(JsxErrors.UnexpectedToken, this.state.curPosition(), {\n                unexpected: this.input[this.state.pos],\n                HTMLEntity:\n                  ch === charCodes.rightCurlyBrace ? \"&rbrace;\" : \"&gt;\",\n              });\n            }\n          /* falls through */\n\n          default:\n            if (isNewLine(ch)) {\n              out += this.input.slice(chunkStart, this.state.pos);\n              out += this.jsxReadNewLine(true);\n              chunkStart = this.state.pos;\n            } else {\n              ++this.state.pos;\n            }\n        }\n      }\n    }\n\n    jsxReadNewLine(normalizeCRLF: boolean): string {\n      const ch = this.input.charCodeAt(this.state.pos);\n      let out;\n      ++this.state.pos;\n      if (\n        ch === charCodes.carriageReturn &&\n        this.input.charCodeAt(this.state.pos) === charCodes.lineFeed\n      ) {\n        ++this.state.pos;\n        out = normalizeCRLF ? \"\\n\" : \"\\r\\n\";\n      } else {\n        out = String.fromCharCode(ch);\n      }\n      ++this.state.curLine;\n      this.state.lineStart = this.state.pos;\n\n      return out;\n    }\n\n    jsxReadString(quote: number): void {\n      let out = \"\";\n      let chunkStart = ++this.state.pos;\n      for (;;) {\n        if (this.state.pos >= this.length) {\n          throw this.raise(Errors.UnterminatedString, this.state.startLoc);\n        }\n\n        const ch = this.input.charCodeAt(this.state.pos);\n        if (ch === quote) break;\n        if (ch === charCodes.ampersand) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadEntity();\n          chunkStart = this.state.pos;\n        } else if (isNewLine(ch)) {\n          out += this.input.slice(chunkStart, this.state.pos);\n          out += this.jsxReadNewLine(false);\n          chunkStart = this.state.pos;\n        } else {\n          ++this.state.pos;\n        }\n      }\n      out += this.input.slice(chunkStart, this.state.pos++);\n      this.finishToken(tt.string, out);\n    }\n\n    jsxReadEntity(): string {\n      const startPos = ++this.state.pos;\n      if (this.codePointAtPos(this.state.pos) === charCodes.numberSign) {\n        ++this.state.pos;\n\n        let radix = 10;\n        if (this.codePointAtPos(this.state.pos) === charCodes.lowercaseX) {\n          radix = 16;\n          ++this.state.pos;\n        }\n\n        const codePoint = this.readInt(\n          radix,\n          /* len */ undefined,\n          /* forceLen */ false,\n          /* allowNumSeparator */ \"bail\",\n        );\n        if (\n          codePoint !== null &&\n          this.codePointAtPos(this.state.pos) === charCodes.semicolon\n        ) {\n          ++this.state.pos;\n          return String.fromCodePoint(codePoint);\n        }\n      } else {\n        let count = 0;\n        let semi = false;\n        while (\n          count++ < 10 &&\n          this.state.pos < this.length &&\n          !(semi = this.codePointAtPos(this.state.pos) === charCodes.semicolon)\n        ) {\n          ++this.state.pos;\n        }\n\n        if (semi) {\n          const desc = this.input.slice(startPos, this.state.pos);\n          const entity = XHTMLEntities[desc];\n          ++this.state.pos;\n\n          if (entity) {\n            return entity;\n          }\n        }\n      }\n\n      // Not a valid entity\n      this.state.pos = startPos;\n      return \"&\";\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    jsxReadWord(): void {\n      let ch;\n      const start = this.state.pos;\n      do {\n        ch = this.input.charCodeAt(++this.state.pos);\n      } while (isIdentifierChar(ch) || ch === charCodes.dash);\n      this.finishToken(tt.jsxName, this.input.slice(start, this.state.pos));\n    }\n\n    // Parse next token as JSX identifier\n\n    jsxParseIdentifier(): N.JSXIdentifier {\n      const node = this.startNode<N.JSXIdentifier>();\n      if (this.match(tt.jsxName)) {\n        node.name = this.state.value;\n      } else if (tokenIsKeyword(this.state.type)) {\n        node.name = tokenLabelName(this.state.type);\n      } else {\n        this.unexpected();\n      }\n      this.next();\n      return this.finishNode(node, \"JSXIdentifier\");\n    }\n\n    // Parse namespaced identifier.\n\n    jsxParseNamespacedName(): N.JSXNamespacedName | N.JSXIdentifier {\n      const startLoc = this.state.startLoc;\n      const name = this.jsxParseIdentifier();\n      if (!this.eat(tt.colon)) return name;\n\n      const node = this.startNodeAt<N.JSXNamespacedName>(startLoc);\n      node.namespace = name;\n      node.name = this.jsxParseIdentifier();\n      return this.finishNode(node, \"JSXNamespacedName\");\n    }\n\n    // Parses element name in any form - namespaced, member\n    // or single identifier.\n\n    jsxParseElementName():\n      | N.JSXIdentifier\n      | N.JSXNamespacedName\n      | N.JSXMemberExpression {\n      const startLoc = this.state.startLoc;\n      let node: N.JSXIdentifier | N.JSXNamespacedName | N.JSXMemberExpression =\n        this.jsxParseNamespacedName();\n      if (node.type === \"JSXNamespacedName\") {\n        return node;\n      }\n      while (this.eat(tt.dot)) {\n        const newNode = this.startNodeAt<N.JSXMemberExpression>(startLoc);\n        newNode.object = node;\n        newNode.property = this.jsxParseIdentifier();\n        node = this.finishNode(newNode, \"JSXMemberExpression\");\n      }\n      return node;\n    }\n\n    // Parses any type of JSX attribute value.\n\n    jsxParseAttributeValue():\n      | N.JSXExpressionContainer\n      | N.JSXElement\n      | N.StringLiteral {\n      let node;\n      switch (this.state.type) {\n        case tt.braceL:\n          node = this.startNode();\n          this.setContext(tc.brace);\n          this.next();\n          node = this.jsxParseExpressionContainer(node, tc.j_oTag);\n          if (node.expression.type === \"JSXEmptyExpression\") {\n            this.raise(JsxErrors.AttributeIsEmpty, node);\n          }\n          return node;\n\n        case tt.jsxTagStart:\n        case tt.string:\n          return this.parseExprAtom() as N.JSXElement | N.StringLiteral;\n\n        default:\n          throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);\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    jsxParseEmptyExpression(): N.JSXEmptyExpression {\n      const node = this.startNodeAt(this.state.lastTokEndLoc);\n      return this.finishNodeAt(node, \"JSXEmptyExpression\", this.state.startLoc);\n    }\n\n    // Parse JSX spread child\n\n    jsxParseSpreadChild(node: Undone<N.JSXSpreadChild>): N.JSXSpreadChild {\n      this.next(); // ellipsis\n      node.expression = this.parseExpression();\n      this.setContext(tc.j_expr);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXSpreadChild\");\n    }\n\n    // Parses JSX expression enclosed into curly brackets.\n\n    jsxParseExpressionContainer(\n      node: Undone<N.JSXExpressionContainer>,\n      previousContext: TokContext,\n    ): N.JSXExpressionContainer {\n      if (this.match(tt.braceR)) {\n        node.expression = this.jsxParseEmptyExpression();\n      } else {\n        const expression = this.parseExpression();\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            expression.type === \"SequenceExpression\" &&\n            !expression.extra?.parenthesized\n          ) {\n            this.raise(\n              JsxErrors.UnexpectedSequenceExpression,\n              expression.expressions[1],\n            );\n          }\n        }\n\n        node.expression = expression;\n      }\n      this.setContext(previousContext);\n      this.state.canStartJSXElement = true;\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"JSXExpressionContainer\");\n    }\n\n    // Parses following JSX attribute name-value pair.\n\n    jsxParseAttribute(): N.JSXAttribute | N.JSXSpreadAttribute {\n      const node = this.startNode<N.JSXAttribute | N.JSXSpreadAttribute>();\n      if (this.match(tt.braceL)) {\n        this.setContext(tc.brace);\n        this.next();\n        this.expect(tt.ellipsis);\n        node.argument = this.parseMaybeAssignAllowIn();\n        this.setContext(tc.j_oTag);\n        this.state.canStartJSXElement = true;\n        this.expect(tt.braceR);\n        return this.finishNode(node, \"JSXSpreadAttribute\");\n      }\n      node.name = this.jsxParseNamespacedName();\n      node.value = this.eat(tt.eq) ? this.jsxParseAttributeValue() : null;\n      return this.finishNode(node, \"JSXAttribute\");\n    }\n\n    // Parses JSX opening tag starting after \"<\".\n\n    jsxParseOpeningElementAt(\n      startLoc: Position,\n    ): N.JSXOpeningElement | N.JSXOpeningFragment {\n      const node = this.startNodeAt<N.JSXOpeningElement | N.JSXOpeningFragment>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXOpeningFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      return this.jsxParseOpeningElementAfterName(\n        node as Undone<N.JSXOpeningElement>,\n      );\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: Undone<N.JSXOpeningElement>,\n    ): N.JSXOpeningElement {\n      const attributes: (N.JSXAttribute | N.JSXSpreadAttribute)[] = [];\n      while (!this.match(tt.slash) && !this.match(tt.jsxTagEnd)) {\n        attributes.push(this.jsxParseAttribute());\n      }\n      node.attributes = attributes;\n      node.selfClosing = this.eat(tt.slash);\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXOpeningElement\");\n    }\n\n    // Parses JSX closing tag starting after \"</\".\n\n    jsxParseClosingElementAt(\n      startLoc: Position,\n    ): N.JSXClosingElement | N.JSXClosingFragment {\n      const node = this.startNodeAt<N.JSXClosingFragment | N.JSXClosingElement>(\n        startLoc,\n      );\n      if (this.eat(tt.jsxTagEnd)) {\n        return this.finishNode(node, \"JSXClosingFragment\");\n      }\n      node.name = this.jsxParseElementName();\n      this.expect(tt.jsxTagEnd);\n      return this.finishNode(node, \"JSXClosingElement\");\n    }\n\n    // Parses entire JSX element, including it\"s opening tag\n    // (starting after \"<\"), attributes, contents and closing tag.\n\n    jsxParseElementAt(startLoc: Position): N.JSXElement | N.JSXFragment {\n      const node = this.startNodeAt<N.JSXElement | N.JSXFragment>(startLoc);\n      const children = [];\n      const openingElement = this.jsxParseOpeningElementAt(startLoc);\n      let closingElement = null;\n\n      if (!openingElement.selfClosing) {\n        contents: for (;;) {\n          switch (this.state.type) {\n            case tt.jsxTagStart:\n              startLoc = this.state.startLoc;\n              this.next();\n              if (this.eat(tt.slash)) {\n                closingElement = this.jsxParseClosingElementAt(startLoc);\n                break contents;\n              }\n              children.push(this.jsxParseElementAt(startLoc));\n              break;\n\n            case tt.jsxText:\n              children.push(this.parseLiteral(this.state.value, \"JSXText\"));\n              break;\n\n            case tt.braceL: {\n              const node = this.startNode<\n                N.JSXSpreadChild | N.JSXExpressionContainer\n              >();\n              this.setContext(tc.brace);\n              this.next();\n              if (this.match(tt.ellipsis)) {\n                children.push(this.jsxParseSpreadChild(node));\n              } else {\n                children.push(\n                  this.jsxParseExpressionContainer(node, tc.j_expr),\n                );\n              }\n\n              break;\n            }\n            // istanbul ignore next - should never happen\n            default:\n              this.unexpected();\n          }\n        }\n\n        if (\n          isFragment(openingElement) &&\n          !isFragment(closingElement) &&\n          closingElement !== null\n        ) {\n          this.raise(JsxErrors.MissingClosingTagFragment, closingElement);\n        } else if (!isFragment(openingElement) && isFragment(closingElement)) {\n          this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n            openingTagName: getQualifiedJSXName(openingElement.name),\n          });\n        } else if (!isFragment(openingElement) && !isFragment(closingElement)) {\n          if (\n            getQualifiedJSXName(closingElement.name) !==\n            getQualifiedJSXName(openingElement.name)\n          ) {\n            this.raise(JsxErrors.MissingClosingTagElement, closingElement, {\n              openingTagName: getQualifiedJSXName(openingElement.name),\n            });\n          }\n        }\n      }\n\n      if (isFragment(openingElement)) {\n        node.openingFragment = openingElement;\n        node.closingFragment = closingElement;\n      } else {\n        node.openingElement = openingElement;\n        node.closingElement = closingElement;\n      }\n      node.children = children;\n      if (this.match(tt.lt)) {\n        throw this.raise(\n          JsxErrors.UnwrappedAdjacentJSXElements,\n          this.state.startLoc,\n        );\n      }\n\n      return isFragment(openingElement)\n        ? this.finishNode(node, \"JSXFragment\")\n        : this.finishNode(node, \"JSXElement\");\n    }\n\n    // Parses entire JSX element from current position.\n\n    jsxParseElement(): N.JSXElement | N.JSXFragment {\n      const startLoc = this.state.startLoc;\n      this.next();\n      return this.jsxParseElementAt(startLoc);\n    }\n\n    setContext(newContext: TokContext) {\n      const { context } = this.state;\n      context[context.length - 1] = newContext;\n    }\n\n    // ==================================\n    // Overrides\n    // ==================================\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      if (this.match(tt.jsxTagStart)) {\n        return this.jsxParseElement();\n      } else if (\n        this.match(tt.lt) &&\n        this.input.charCodeAt(this.state.pos) !== charCodes.exclamationMark\n      ) {\n        // In case we encounter an lt token here it will always be the start of\n        // jsx as the lt sign is not allowed in places that expect an expression\n        this.replaceToken(tt.jsxTagStart);\n        return this.jsxParseElement();\n      } else {\n        return super.parseExprAtom(refExpressionErrors);\n      }\n    }\n\n    skipSpace() {\n      const curContext = this.curContext();\n      if (!curContext.preserveSpace) super.skipSpace();\n    }\n\n    getTokenFromCode(code: number): void {\n      const context = this.curContext();\n\n      if (context === tc.j_expr) {\n        this.jsxReadToken();\n        return;\n      }\n\n      if (context === tc.j_oTag || context === tc.j_cTag) {\n        if (isIdentifierStart(code)) {\n          this.jsxReadWord();\n          return;\n        }\n\n        if (code === charCodes.greaterThan) {\n          ++this.state.pos;\n          this.finishToken(tt.jsxTagEnd);\n          return;\n        }\n\n        if (\n          (code === charCodes.quotationMark || code === charCodes.apostrophe) &&\n          context === tc.j_oTag\n        ) {\n          this.jsxReadString(code);\n          return;\n        }\n      }\n\n      if (\n        code === charCodes.lessThan &&\n        this.state.canStartJSXElement &&\n        this.input.charCodeAt(this.state.pos + 1) !== charCodes.exclamationMark\n      ) {\n        ++this.state.pos;\n        this.finishToken(tt.jsxTagStart);\n        return;\n      }\n\n      super.getTokenFromCode(code);\n    }\n\n    updateContext(prevType: TokenType): void {\n      const { context, type } = this.state;\n      if (type === tt.slash && prevType === tt.jsxTagStart) {\n        // do not consider JSX expr -> JSX open tag -> ... anymore\n        // reconsider as closing tag context\n        context.splice(-2, 2, tc.j_cTag);\n        this.state.canStartJSXElement = false;\n      } else if (type === tt.jsxTagStart) {\n        // start opening tag context\n        context.push(tc.j_oTag);\n      } else if (type === tt.jsxTagEnd) {\n        const out = context[context.length - 1];\n        if ((out === tc.j_oTag && prevType === tt.slash) || out === tc.j_cTag) {\n          context.pop();\n          this.state.canStartJSXElement =\n            context[context.length - 1] === tc.j_expr;\n        } else {\n          this.setContext(tc.j_expr);\n          this.state.canStartJSXElement = true;\n        }\n      } else {\n        this.state.canStartJSXElement = tokenComesBeforeExpression(type);\n      }\n    }\n  };\n","import type { Position } from \"../../util/location.ts\";\nimport ScopeHandler, { NameType, Scope } from \"../../util/scope.ts\";\nimport { BindingFlag, ScopeFlag } from \"../../util/scopeflags.ts\";\nimport type * as N from \"../../types.ts\";\nimport { Errors } from \"../../parse-error.ts\";\n\nconst enum TsNameType {\n  Types = 1 << 0,\n  // enums (which are also in .types)\n  Enums = 1 << 1,\n  // const enums (which are also in .enums and .types)\n  ConstEnums = 1 << 2,\n  // classes (which are also in .lexical) and interface (which are also in .types)\n  Classes = 1 << 3,\n  // namespaces and ambient functions (or classes) are too difficult to track,\n  // especially without type analysis.\n  // We need to track them anyway, to avoid \"X is not defined\" errors\n  // when exporting them.\n  ExportOnlyBindings = 1 << 4,\n}\n\nclass TypeScriptScope extends Scope {\n  tsNames: Map<string, TsNameType> = new Map();\n}\n\n// See https://github.com/babel/babel/pull/9766#discussion_r268920730 for an\n// explanation of how typescript handles scope.\n\nexport default class TypeScriptScopeHandler extends ScopeHandler<TypeScriptScope> {\n  importsStack: Set<string>[] = [];\n\n  createScope(flags: ScopeFlag): TypeScriptScope {\n    this.importsStack.push(new Set()); // Always keep the top-level scope for export checks.\n\n    return new TypeScriptScope(flags);\n  }\n\n  enter(flags: ScopeFlag): void {\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.push(new Set());\n    }\n\n    super.enter(flags);\n  }\n\n  exit() {\n    const flags = super.exit();\n\n    if (flags === ScopeFlag.TS_MODULE) {\n      this.importsStack.pop();\n    }\n\n    return flags;\n  }\n\n  hasImport(name: string, allowShadow?: boolean) {\n    const len = this.importsStack.length;\n    if (this.importsStack[len - 1].has(name)) {\n      return true;\n    }\n    if (!allowShadow && len > 1) {\n      for (let i = 0; i < len - 1; i++) {\n        if (this.importsStack[i].has(name)) return true;\n      }\n    }\n    return false;\n  }\n\n  declareName(name: string, bindingType: BindingFlag, loc: Position) {\n    if (bindingType & BindingFlag.FLAG_TS_IMPORT) {\n      if (this.hasImport(name, true)) {\n        this.parser.raise(Errors.VarRedeclaration, loc, {\n          identifierName: name,\n        });\n      }\n      this.importsStack[this.importsStack.length - 1].add(name);\n      return;\n    }\n\n    const scope = this.currentScope();\n    let type = scope.tsNames.get(name) || 0;\n\n    if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {\n      this.maybeExportDefined(scope, name);\n      scope.tsNames.set(name, type | TsNameType.ExportOnlyBindings);\n      return;\n    }\n\n    super.declareName(name, bindingType, loc);\n\n    if (bindingType & BindingFlag.KIND_TYPE) {\n      if (!(bindingType & BindingFlag.KIND_VALUE)) {\n        // \"Value\" bindings have already been registered by the superclass.\n        this.checkRedeclarationInScope(scope, name, bindingType, loc);\n        this.maybeExportDefined(scope, name);\n      }\n      type = type | TsNameType.Types;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n      type = type | TsNameType.Enums;\n    }\n    if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {\n      type = type | TsNameType.ConstEnums;\n    }\n    if (bindingType & BindingFlag.FLAG_CLASS) {\n      type = type | TsNameType.Classes;\n    }\n    if (type) scope.tsNames.set(name, type);\n  }\n\n  isRedeclaredInScope(\n    scope: TypeScriptScope,\n    name: string,\n    bindingType: BindingFlag,\n  ): boolean {\n    const type = scope.tsNames.get(name);\n    if ((type & TsNameType.Enums) > 0) {\n      if (bindingType & BindingFlag.FLAG_TS_ENUM) {\n        // Enums can be merged with other enums if they are both\n        //  const or both non-const.\n        const isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);\n        const wasConst = (type & TsNameType.ConstEnums) > 0;\n        return isConst !== wasConst;\n      }\n      return true;\n    }\n    if (\n      bindingType & BindingFlag.FLAG_CLASS &&\n      (type & TsNameType.Classes) > 0\n    ) {\n      if (scope.names.get(name) & NameType.Lexical) {\n        // Classes can be merged with interfaces\n        return !!(bindingType & BindingFlag.KIND_VALUE);\n      } else {\n        // Interface can be merged with other classes or interfaces\n        return false;\n      }\n    }\n    if (bindingType & BindingFlag.KIND_TYPE && (type & TsNameType.Types) > 0) {\n      return true;\n    }\n\n    return super.isRedeclaredInScope(scope, name, bindingType);\n  }\n\n  checkLocalExport(id: N.Identifier) {\n    const { name } = id;\n\n    if (this.hasImport(name)) return;\n\n    const len = this.scopeStack.length;\n    for (let i = len - 1; i >= 0; i--) {\n      const scope = this.scopeStack[i];\n      const type = scope.tsNames.get(name);\n      if (\n        (type & TsNameType.Types) > 0 ||\n        (type & TsNameType.ExportOnlyBindings) > 0\n      ) {\n        return;\n      }\n    }\n\n    super.checkLocalExport(id);\n  }\n}\n","import * as charCodes from \"charcodes\";\nimport { tt, type TokenType } from \"../tokenizer/types.ts\";\nimport type {\n  AssignmentPattern,\n  TSParameterProperty,\n  Decorator,\n  Expression,\n  Identifier,\n  Node,\n  Pattern,\n  RestElement,\n  SpreadElement,\n  ObjectOrClassMember,\n  ClassMember,\n  ObjectMember,\n  TsNamedTypeElementBase,\n  PrivateName,\n  ObjectExpression,\n  ObjectPattern,\n  ArrayPattern,\n  AssignmentProperty,\n  Assignable,\n} from \"../types.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport {\n  isStrictBindOnlyReservedWord,\n  isStrictBindReservedWord,\n} from \"../util/identifier.ts\";\nimport { NodeUtils, type Undone } from \"./node.ts\";\nimport { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { ExpressionErrors } from \"./util.ts\";\nimport { Errors, type LValAncestor } from \"../parse-error.ts\";\nimport type Parser from \"./index.ts\";\n\nconst unwrapParenthesizedExpression = (node: Node): Node => {\n  return node.type === \"ParenthesizedExpression\"\n    ? unwrapParenthesizedExpression(node.expression)\n    : node;\n};\n\nexport const enum ParseBindingListFlags {\n  ALLOW_EMPTY = 1 << 0,\n  IS_FUNCTION_PARAMS = 1 << 1,\n  IS_CONSTRUCTOR_PARAMS = 1 << 2,\n}\n\nexport default abstract class LValParser extends NodeUtils {\n  // Forward-declaration: defined in expression.js\n  abstract parseIdentifier(liberal?: boolean): Identifier;\n  abstract parseMaybeAssign(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): Expression;\n\n  abstract parseMaybeAssignAllowIn(\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): Expression;\n\n  abstract parseObjectLike<T extends ObjectPattern | ObjectExpression>(\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): T;\n  abstract parseObjPropValue(\n    prop: any,\n    startLoc: Position | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void;\n  abstract parsePropertyName(\n    prop: ObjectOrClassMember | ClassMember | TsNamedTypeElementBase,\n  ): void;\n  abstract parsePrivateName(): PrivateName;\n  // Forward-declaration: defined in statement.js\n  abstract parseDecorator(): Decorator;\n\n  /**\n   * Convert existing expression atom to assignable pattern\n   * if possible. Also checks invalid destructuring targets:\n   *\n   * - Parenthesized Destructuring patterns\n   * - RestElement is not the last element\n   * - Missing `=` in assignment pattern\n   *\n   * NOTE: There is a corresponding \"isAssignable\" method.\n   * When this one is updated, please check if also that one needs to be updated.\n   *\n   * @param node The expression atom\n   * @param isLHS Whether we are parsing a LeftHandSideExpression.\n   *              If isLHS is `true`, the following cases are allowed: `[(a)] = [0]`, `[(a.b)] = [0]`\n   *              If isLHS is `false`, we are in an arrow function parameters list.\n   */\n  toAssignable(node: Node, isLHS: boolean = false): asserts node is Assignable {\n    let parenthesized = undefined;\n    if (node.type === \"ParenthesizedExpression\" || node.extra?.parenthesized) {\n      parenthesized = unwrapParenthesizedExpression(node);\n      if (isLHS) {\n        // an LHS can be reinterpreted to a binding pattern but not vice versa.\n        // therefore a parenthesized identifier is ambiguous until we are sure it is an assignment expression\n        // i.e. `([(a) = []] = []) => {}`\n        // see also `recordArrowParameterBindingError` signature in packages/babel-parser/src/util/expression-scope.js\n        if (parenthesized.type === \"Identifier\") {\n          this.expressionScope.recordArrowParameterBindingError(\n            Errors.InvalidParenthesizedAssignment,\n            node,\n          );\n        } else if (\n          parenthesized.type !== \"MemberExpression\" &&\n          !this.isOptionalMemberExpression(parenthesized)\n        ) {\n          // A parenthesized member expression can be in LHS but not in pattern.\n          // If the LHS is later interpreted as a pattern, `checkLVal` will throw for member expression binding\n          // i.e. `([(a.b) = []] = []) => {}`\n          this.raise(Errors.InvalidParenthesizedAssignment, node);\n        }\n      } else {\n        this.raise(Errors.InvalidParenthesizedAssignment, node);\n      }\n    }\n\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        break;\n\n      case \"ObjectExpression\":\n        (node as Node).type = \"ObjectPattern\";\n        for (\n          let i = 0, length = node.properties.length, last = length - 1;\n          i < length;\n          i++\n        ) {\n          const prop = node.properties[i];\n          const isLast = i === last;\n          this.toAssignableObjectExpressionProp(prop, isLast, isLHS);\n\n          if (\n            isLast &&\n            (prop as Node).type === \"RestElement\" &&\n            node.extra?.trailingCommaLoc\n          ) {\n            this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);\n          }\n        }\n        break;\n\n      case \"ObjectProperty\": {\n        const { key, value } = node;\n        if (this.isPrivateName(key)) {\n          this.classScope.usePrivateName(\n            this.getPrivateNameSV(key),\n            key.loc.start,\n          );\n        }\n        this.toAssignable(value, isLHS);\n        break;\n      }\n\n      case \"SpreadElement\": {\n        throw new Error(\n          \"Internal @babel/parser error (this is a bug, please report it).\" +\n            \" SpreadElement should be converted by .toAssignable's caller.\",\n        );\n      }\n\n      case \"ArrayExpression\":\n        (node as Node).type = \"ArrayPattern\";\n        this.toAssignableList(\n          node.elements,\n          node.extra?.trailingCommaLoc,\n          isLHS,\n        );\n        break;\n\n      case \"AssignmentExpression\":\n        if (node.operator !== \"=\") {\n          this.raise(Errors.MissingEqInAssignment, node.left.loc.end);\n        }\n\n        (node as Node).type = \"AssignmentPattern\";\n        delete node.operator;\n        this.toAssignable(node.left, isLHS);\n        break;\n\n      case \"ParenthesizedExpression\":\n        /*::invariant (parenthesized !== undefined) */\n        this.toAssignable(parenthesized, isLHS);\n        break;\n\n      default:\n      // We don't know how to deal with this node. It will\n      // be reported by a later call to checkLVal\n    }\n  }\n\n  toAssignableObjectExpressionProp(\n    prop: Node,\n    isLast: boolean,\n    isLHS: boolean,\n  ) {\n    if (prop.type === \"ObjectMethod\") {\n      this.raise(\n        prop.kind === \"get\" || prop.kind === \"set\"\n          ? Errors.PatternHasAccessor\n          : Errors.PatternHasMethod,\n        prop.key,\n      );\n    } else if (prop.type === \"SpreadElement\") {\n      (prop as Node).type = \"RestElement\";\n      const arg = prop.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ false);\n      this.toAssignable(arg, isLHS);\n\n      if (!isLast) {\n        this.raise(Errors.RestTrailingComma, prop);\n      }\n    } else {\n      this.toAssignable(prop, isLHS);\n    }\n  }\n\n  // Convert list of expression atoms to binding list.\n\n  toAssignableList(\n    exprList: (Expression | SpreadElement | RestElement | null)[],\n    trailingCommaLoc: Position | undefined | null,\n    isLHS: boolean,\n  ): void {\n    const end = exprList.length - 1;\n\n    for (let i = 0; i <= end; i++) {\n      const elt = exprList[i];\n      if (!elt) continue;\n\n      this.toAssignableListItem(exprList, i, isLHS);\n\n      if (elt.type === \"RestElement\") {\n        if (i < end) {\n          this.raise(Errors.RestTrailingComma, elt);\n        } else if (trailingCommaLoc) {\n          this.raise(Errors.RestTrailingComma, trailingCommaLoc);\n        }\n      }\n    }\n  }\n\n  toAssignableListItem(\n    exprList: (Expression | SpreadElement | RestElement)[],\n    index: number,\n    isLHS: boolean,\n  ): void {\n    const node = exprList[index];\n    if (node.type === \"SpreadElement\") {\n      (node as unknown as RestElement).type = \"RestElement\";\n      const arg = node.argument;\n      this.checkToRestConversion(arg, /* allowPattern */ true);\n      this.toAssignable(arg, isLHS);\n    } else {\n      this.toAssignable(node, isLHS);\n    }\n  }\n\n  isAssignable(node: Node, isBinding?: boolean): boolean {\n    switch (node.type) {\n      case \"Identifier\":\n      case \"ObjectPattern\":\n      case \"ArrayPattern\":\n      case \"AssignmentPattern\":\n      case \"RestElement\":\n        return true;\n\n      case \"ObjectExpression\": {\n        const last = node.properties.length - 1;\n        return node.properties.every((prop, i) => {\n          return (\n            prop.type !== \"ObjectMethod\" &&\n            (i === last || prop.type !== \"SpreadElement\") &&\n            this.isAssignable(prop)\n          );\n        });\n      }\n\n      case \"ObjectProperty\":\n        return this.isAssignable(node.value);\n\n      case \"SpreadElement\":\n        return this.isAssignable(node.argument);\n\n      case \"ArrayExpression\":\n        return node.elements.every(\n          element => element === null || this.isAssignable(element),\n        );\n\n      case \"AssignmentExpression\":\n        return node.operator === \"=\";\n\n      case \"ParenthesizedExpression\":\n        return this.isAssignable(node.expression);\n\n      case \"MemberExpression\":\n      case \"OptionalMemberExpression\":\n        return !isBinding;\n\n      default:\n        return false;\n    }\n  }\n\n  // Convert list of expression atoms to a list of\n\n  toReferencedList(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isParenthesizedExpr?: boolean,\n  ):\n    | ReadonlyArray<Expression | SpreadElement>\n    | ReadonlyArray<Expression | RestElement> {\n    return exprList;\n  }\n\n  toReferencedListDeep(\n    exprList:\n      | ReadonlyArray<Expression | SpreadElement>\n      | ReadonlyArray<Expression | RestElement>,\n    isParenthesizedExpr?: boolean,\n  ): void {\n    this.toReferencedList(exprList, isParenthesizedExpr);\n\n    for (const expr of exprList) {\n      if (expr?.type === \"ArrayExpression\") {\n        this.toReferencedListDeep(expr.elements);\n      }\n    }\n  }\n\n  // Parses spread element.\n\n  parseSpread(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): SpreadElement {\n    const node = this.startNode<SpreadElement>();\n    this.next();\n    node.argument = this.parseMaybeAssignAllowIn(\n      refExpressionErrors,\n      undefined,\n    );\n    return this.finishNode(node, \"SpreadElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  // https://tc39.es/ecma262/#prod-BindingRestElement\n  parseRestBinding(this: Parser): RestElement {\n    const node = this.startNode<RestElement>();\n    this.next(); // eat `...`\n    node.argument = this.parseBindingAtom();\n    return this.finishNode(node, \"RestElement\");\n  }\n\n  // Parses lvalue (assignable) atom.\n  parseBindingAtom(this: Parser): Pattern {\n    // https://tc39.es/ecma262/#prod-BindingPattern\n    switch (this.state.type) {\n      case tt.bracketL: {\n        const node = this.startNode<ArrayPattern>();\n        this.next();\n        // @ts-expect-error: Fixme: TSParameterProperty can not be assigned to node.elements\n        node.elements = this.parseBindingList(\n          tt.bracketR,\n          charCodes.rightSquareBracket,\n          ParseBindingListFlags.ALLOW_EMPTY,\n        );\n        return this.finishNode(node, \"ArrayPattern\");\n      }\n\n      case tt.braceL:\n        return this.parseObjectLike(tt.braceR, true);\n    }\n\n    // https://tc39.es/ecma262/#prod-BindingIdentifier\n    return this.parseIdentifier();\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElementList\n  parseBindingList(\n    this: Parser,\n    close: TokenType,\n    closeCharCode: (typeof charCodes)[keyof typeof charCodes],\n    flags: ParseBindingListFlags,\n  ): Array<Pattern | TSParameterProperty> {\n    const allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;\n\n    const elts: Array<Pattern | TSParameterProperty> = [];\n    let first = true;\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n      }\n      if (allowEmpty && this.match(tt.comma)) {\n        elts.push(null);\n      } else if (this.eat(close)) {\n        break;\n      } else if (this.match(tt.ellipsis)) {\n        let rest: Pattern = this.parseRestBinding();\n        if (\n          (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n          flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n        ) {\n          rest = this.parseFunctionParamType(rest);\n        }\n        elts.push(rest);\n        if (!this.checkCommaAfterRest(closeCharCode)) {\n          this.expect(close);\n          break;\n        }\n      } else {\n        const decorators = [];\n        if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n          if (this.match(tt.at) && this.hasPlugin(\"decorators\")) {\n            this.raise(\n              Errors.UnsupportedParameterDecorator,\n              this.state.startLoc,\n            );\n          }\n          // invariant: hasPlugin(\"decorators-legacy\")\n          while (this.match(tt.at)) {\n            decorators.push(this.parseDecorator());\n          }\n        }\n        elts.push(this.parseBindingElement(flags, decorators));\n      }\n    }\n    return elts;\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingRestProperty\n  parseBindingRestProperty(\n    this: Parser,\n    prop: Undone<RestElement>,\n  ): RestElement {\n    this.next(); // eat '...'\n    // Don't use parseRestBinding() as we only allow Identifier here.\n    prop.argument = this.parseIdentifier();\n    this.checkCommaAfterRest(charCodes.rightCurlyBrace);\n    return this.finishNode(prop, \"RestElement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingProperty\n  parseBindingProperty(this: Parser): AssignmentProperty | RestElement {\n    const { type, startLoc } = this.state;\n    if (type === tt.ellipsis) {\n      return this.parseBindingRestProperty(this.startNode());\n    }\n\n    const prop = this.startNode<AssignmentProperty>();\n    if (type === tt.privateName) {\n      this.expectPlugin(\"destructuringPrivate\", startLoc);\n      this.classScope.usePrivateName(this.state.value, startLoc);\n      prop.key = this.parsePrivateName();\n    } else {\n      this.parsePropertyName(prop);\n    }\n    prop.method = false;\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      false /* isGenerator */,\n      false /* isAsync */,\n      true /* isPattern */,\n      false /* isAccessor */,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseBindingElement(\n    this: Parser,\n    flags: ParseBindingListFlags,\n    decorators: Decorator[],\n  ): Pattern | TSParameterProperty {\n    const left = this.parseMaybeDefault();\n    if (\n      (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"flow\")) ||\n      flags & ParseBindingListFlags.IS_FUNCTION_PARAMS\n    ) {\n      this.parseFunctionParamType(left);\n    }\n    const elt = this.parseMaybeDefault(left.loc.start, left);\n    if (decorators.length) {\n      left.decorators = decorators;\n    }\n    return elt;\n  }\n\n  // Used by flow/typescript plugin to add type annotations to binding elements\n  parseFunctionParamType(param: Pattern): Pattern {\n    return param;\n  }\n\n  // Parses assignment pattern around given atom if possible.\n  // https://tc39.es/ecma262/#prod-BindingElement\n  parseMaybeDefault(\n    this: Parser,\n    startLoc?: Position | null,\n    left?: Pattern | null,\n  ): Pattern {\n    startLoc ??= this.state.startLoc;\n    left = left ?? this.parseBindingAtom();\n    if (!this.eat(tt.eq)) return left;\n\n    const node = this.startNodeAt<AssignmentPattern>(startLoc);\n    node.left = left;\n    node.right = this.parseMaybeAssignAllowIn();\n    return this.finishNode(node, \"AssignmentPattern\");\n  }\n  /**\n   * Return information use in determining whether a Node of a given type is an LVal,\n   * possibly given certain additional context information.\n   *\n   * Subclasser notes: This method has kind of a lot of mixed, but related,\n   * responsibilities. If we can definitively determine with the information\n   * provided that this either *is* or *isn't* a valid `LVal`, then the return\n   * value is easy: just return `true` or `false`. However, if it is a valid\n   * LVal *ancestor*, and thus its descendants must be subsequently visited to\n   * continue the \"investigation\", then this method should return the relevant\n   * child key as a `string`. In some special cases, you additionally want to\n   * convey that this node should be treated as if it were parenthesized. In\n   * that case, a tuple of [key: string, parenthesized: boolean] is returned.\n   * The `string`-only return option is actually just a shorthand for:\n   * `[key: string, parenthesized: false]`.\n   *\n   * @param type A Node `type` string\n   * @param isUnparenthesizedInAssign\n   *        Whether the node in question is unparenthesized and its parent\n   *        is either an assignment pattern or an assignment expression.\n   * @param binding\n   *        The binding operation that is being considered for this potential\n   *        LVal.\n   * @returns `true` or `false` if we can immediately determine whether the node\n   *          type in question can be treated as an `LVal`.\n   *          A `string` key to traverse if we must check this child.\n   *          A `[string, boolean]` tuple if we need to check this child and\n   *          treat is as parenthesized.\n   */\n  isValidLVal(\n    type: string,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    isUnparenthesizedInAssign: boolean,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    binding: BindingFlag,\n  ): string | boolean | [string, boolean] {\n    switch (type) {\n      case \"AssignmentPattern\":\n        return \"left\";\n      case \"RestElement\":\n        return \"argument\";\n      case \"ObjectProperty\":\n        return \"value\";\n      case \"ParenthesizedExpression\":\n        return \"expression\";\n      case \"ArrayPattern\":\n        return \"elements\";\n      case \"ObjectPattern\":\n        return \"properties\";\n    }\n    return false;\n  }\n\n  // Overridden by the estree plugin\n  isOptionalMemberExpression(expression: Node): boolean {\n    return expression.type === \"OptionalMemberExpression\";\n  }\n\n  /**\n   * Verify that a target expression is an lval (something that can be assigned to).\n   *\n   * @param expression The expression in question to check.\n   * @param ancestor\n   *        The relevant ancestor to provide context information for the error\n   *        if the check fails.\n   * @param binding\n   *        The desired binding type. If the given expression is an identifier\n   *        and `binding` is not `BindingFlag.TYPE_NONE`, `checkLVal` will register binding\n   *        to the parser scope See also `src/util/scopeflags.js`\n   * @param checkClashes\n   *        An optional string set to check if an identifier name is included.\n   *        `checkLVal` will add checked identifier name to `checkClashes` It is\n   *        used in tracking duplicates in function parameter lists. If it is\n   *        false, `checkLVal` will skip duplicate checks\n   * @param strictModeChanged\n   *        Whether an identifier has been parsed in a sloppy context but should\n   *        be reinterpreted as strict-mode. e.g. `(arguments) => { \"use strict \"}`\n   * @param hasParenthesizedAncestor\n   *        This is only used internally during recursive calls, and you should\n   *        not have to set it yourself.\n   */\n\n  checkLVal(\n    expression:\n      | Expression\n      | ObjectMember\n      | RestElement\n      | Pattern\n      | TSParameterProperty,\n    ancestor: LValAncestor,\n    binding: BindingFlag = BindingFlag.TYPE_NONE,\n    checkClashes: Set<string> | false = false,\n    strictModeChanged: boolean = false,\n    hasParenthesizedAncestor: boolean = false,\n  ): void {\n    const type = expression.type;\n\n    // If we find here an ObjectMethod, it's because this was originally\n    // an ObjectExpression which has then been converted.\n    // toAssignable already reported this error with a nicer message.\n    if (this.isObjectMethod(expression)) return;\n\n    const isOptionalMemberExpression =\n      this.isOptionalMemberExpression(expression);\n\n    if (isOptionalMemberExpression || type === \"MemberExpression\") {\n      if (isOptionalMemberExpression) {\n        this.expectPlugin(\"optionalChainingAssign\", expression.loc.start);\n        if (ancestor.type !== \"AssignmentExpression\") {\n          this.raise(Errors.InvalidLhsOptionalChaining, expression, {\n            ancestor,\n          });\n        }\n      }\n\n      if (binding !== BindingFlag.TYPE_NONE) {\n        this.raise(Errors.InvalidPropertyBindingPattern, expression);\n      }\n      return;\n    }\n\n    if (type === \"Identifier\") {\n      this.checkIdentifier(expression, binding, strictModeChanged);\n\n      const { name } = expression;\n\n      if (checkClashes) {\n        if (checkClashes.has(name)) {\n          this.raise(Errors.ParamDupe, expression);\n        } else {\n          checkClashes.add(name);\n        }\n      }\n\n      return;\n    }\n\n    const validity = this.isValidLVal(\n      type,\n      !(hasParenthesizedAncestor || expression.extra?.parenthesized) &&\n        ancestor.type === \"AssignmentExpression\",\n      binding,\n    );\n\n    if (validity === true) return;\n    if (validity === false) {\n      const ParseErrorClass =\n        binding === BindingFlag.TYPE_NONE\n          ? Errors.InvalidLhs\n          : Errors.InvalidLhsBinding;\n\n      this.raise(ParseErrorClass, expression, { ancestor });\n      return;\n    }\n\n    let key: string, isParenthesizedExpression: boolean;\n    if (typeof validity === \"string\") {\n      key = validity;\n      isParenthesizedExpression = type === \"ParenthesizedExpression\";\n    } else {\n      [key, isParenthesizedExpression] = validity;\n    }\n\n    const nextAncestor =\n      type === \"ArrayPattern\" || type === \"ObjectPattern\"\n        ? ({ type } as const)\n        : ancestor;\n\n    // @ts-expect-error key may not index expression.\n    const val = expression[key];\n    if (Array.isArray(val)) {\n      for (const child of val) {\n        if (child) {\n          this.checkLVal(\n            child,\n            nextAncestor,\n            binding,\n            checkClashes,\n            strictModeChanged,\n            isParenthesizedExpression,\n          );\n        }\n      }\n    } else if (val) {\n      this.checkLVal(\n        val,\n        nextAncestor,\n        binding,\n        checkClashes,\n        strictModeChanged,\n        isParenthesizedExpression,\n      );\n    }\n  }\n\n  checkIdentifier(\n    at: Identifier,\n    bindingType: BindingFlag,\n    strictModeChanged: boolean = false,\n  ) {\n    if (\n      this.state.strict &&\n      (strictModeChanged\n        ? isStrictBindReservedWord(at.name, this.inModule)\n        : isStrictBindOnlyReservedWord(at.name))\n    ) {\n      if (bindingType === BindingFlag.TYPE_NONE) {\n        this.raise(Errors.StrictEvalArguments, at, { referenceName: at.name });\n      } else {\n        this.raise(Errors.StrictEvalArgumentsBinding, at, {\n          bindingName: at.name,\n        });\n      }\n    }\n\n    if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === \"let\") {\n      this.raise(Errors.LetInLexicalBinding, at);\n    }\n\n    if (!(bindingType & BindingFlag.TYPE_NONE)) {\n      this.declareNameFromIdentifier(at, bindingType);\n    }\n  }\n\n  declareNameFromIdentifier(identifier: Identifier, binding: BindingFlag) {\n    this.scope.declareName(identifier.name, binding, identifier.loc.start);\n  }\n\n  checkToRestConversion(node: Node, allowPattern: boolean): void {\n    switch (node.type) {\n      case \"ParenthesizedExpression\":\n        this.checkToRestConversion(node.expression, allowPattern);\n        break;\n      case \"Identifier\":\n      case \"MemberExpression\":\n        break;\n      case \"ArrayExpression\":\n      case \"ObjectExpression\":\n        if (allowPattern) break;\n      /* falls through */\n      default:\n        this.raise(Errors.InvalidRestAssignmentPattern, node);\n    }\n  }\n\n  checkCommaAfterRest(\n    close: (typeof charCodes)[keyof typeof charCodes],\n  ): boolean {\n    if (!this.match(tt.comma)) {\n      return false;\n    }\n\n    this.raise(\n      this.lookaheadCharCode() === close\n        ? Errors.RestTrailingComma\n        : Errors.ElementAfterRest,\n      this.state.startLoc,\n    );\n\n    return true;\n  }\n}\n","import type State from \"../../tokenizer/state.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsTSDeclarationStart,\n  tokenIsTSTypeOperator,\n  tokenOperatorPrecedence,\n  tokenIsKeywordOrIdentifier,\n  tt,\n  type TokenType,\n  tokenIsTemplate,\n  tokenCanStartExpression,\n} from \"../../tokenizer/types.ts\";\nimport { types as tc } from \"../../tokenizer/context.ts\";\nimport type * as N from \"../../types.ts\";\nimport type { Position } from \"../../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../../util/location.ts\";\nimport type Parser from \"../../parser/index.ts\";\nimport { ScopeFlag, BindingFlag } from \"../../util/scopeflags.ts\";\nimport TypeScriptScopeHandler from \"./scope.ts\";\nimport * as charCodes from \"charcodes\";\nimport type { ExpressionErrors } from \"../../parser/util.ts\";\nimport type { ParseStatementFlag } from \"../../parser/statement.ts\";\nimport { ParamKind } from \"../../util/production-parameter.ts\";\nimport { Errors, ParseErrorEnum } from \"../../parse-error.ts\";\nimport { cloneIdentifier, type Undone } from \"../../parser/node.ts\";\nimport type { Pattern } from \"../../types.ts\";\nimport type { ClassWithMixin, IJSXParserMixin } from \"../jsx/index.ts\";\nimport { ParseBindingListFlags } from \"../../parser/lval.ts\";\nimport { OptionFlags } from \"../../options.ts\";\n\ntype TsModifier =\n  | \"readonly\"\n  | \"abstract\"\n  | \"declare\"\n  | \"static\"\n  | \"override\"\n  | \"const\"\n  | N.Accessibility\n  | N.VarianceAnnotations;\n\nfunction nonNull<T>(x?: T | null): T {\n  if (x == null) {\n    throw new Error(`Unexpected ${x} value.`);\n  }\n  return x;\n}\n\nfunction assert(x: boolean): void {\n  if (!x) {\n    throw new Error(\"Assert fail\");\n  }\n}\n\ntype ParsingContext =\n  | \"EnumMembers\"\n  | \"HeritageClauseElement\"\n  | \"TupleElementTypes\"\n  | \"TypeMembers\"\n  | \"TypeParametersOrArguments\";\n\ntype ModifierBase = {\n  accessibility?: N.Accessibility;\n} & {\n  [key in TsModifier]?: boolean | undefined | null;\n};\n\n/* eslint sort-keys: \"error\" */\nconst TSErrors = ParseErrorEnum`typescript`({\n  AbstractMethodHasImplementation: ({ methodName }: { methodName: string }) =>\n    `Method '${methodName}' cannot have an implementation because it is marked abstract.`,\n  AbstractPropertyHasInitializer: ({\n    propertyName,\n  }: {\n    propertyName: string;\n  }) =>\n    `Property '${propertyName}' cannot have an initializer because it is marked abstract.`,\n  AccessorCannotBeOptional:\n    \"An 'accessor' property cannot be declared optional.\",\n  AccessorCannotDeclareThisParameter:\n    \"'get' and 'set' accessors cannot declare 'this' parameters.\",\n  AccessorCannotHaveTypeParameters: \"An accessor cannot have type parameters.\",\n  ClassMethodHasDeclare: \"Class methods cannot have the 'declare' modifier.\",\n  ClassMethodHasReadonly: \"Class methods cannot have the 'readonly' modifier.\",\n  ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference:\n    \"A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.\",\n  ConstructorHasTypeParameters:\n    \"Type parameters cannot appear on a constructor declaration.\",\n  DeclareAccessor: ({ kind }: { kind: \"get\" | \"set\" }) =>\n    `'declare' is not allowed in ${kind}ters.`,\n  DeclareClassFieldHasInitializer:\n    \"Initializers are not allowed in ambient contexts.\",\n  DeclareFunctionHasImplementation:\n    \"An implementation cannot be declared in ambient contexts.\",\n  DuplicateAccessibilityModifier:\n    // `Accessibility modifier already seen: ${modifier}` would be more helpful.\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    ({ modifier }: { modifier: N.Accessibility }) =>\n      `Accessibility modifier already seen.`,\n  DuplicateModifier: ({ modifier }: { modifier: TsModifier }) =>\n    `Duplicate modifier: '${modifier}'.`,\n  // `token` matches the terminology used by typescript:\n  // https://github.com/microsoft/TypeScript/blob/main/src/compiler/types.ts#L2915\n  EmptyHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list cannot be empty.`,\n  EmptyTypeArguments: \"Type argument list cannot be empty.\",\n  EmptyTypeParameters: \"Type parameter list cannot be empty.\",\n  ExpectedAmbientAfterExportDeclare:\n    \"'export declare' must be followed by an ambient declaration.\",\n  ImportAliasHasImportType: \"An import alias can not use 'import type'.\",\n  ImportReflectionHasImportType:\n    \"An `import module` declaration can not use `type` modifier\",\n  IncompatibleModifiers: ({\n    modifiers,\n  }: {\n    modifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${modifiers[0]}' modifier cannot be used with '${modifiers[1]}' modifier.`,\n  IndexSignatureHasAbstract:\n    \"Index signatures cannot have the 'abstract' modifier.\",\n  IndexSignatureHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Index signatures cannot have an accessibility modifier ('${modifier}').`,\n  IndexSignatureHasDeclare:\n    \"Index signatures cannot have the 'declare' modifier.\",\n  IndexSignatureHasOverride:\n    \"'override' modifier cannot appear on an index signature.\",\n  IndexSignatureHasStatic:\n    \"Index signatures cannot have the 'static' modifier.\",\n  InitializerNotAllowedInAmbientContext:\n    \"Initializers are not allowed in ambient contexts.\",\n  InvalidHeritageClauseType: ({ token }: { token: \"extends\" | \"implements\" }) =>\n    `'${token}' list can only include identifiers or qualified-names with optional type arguments.`,\n  InvalidModifierOnTypeMember: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type member.`,\n  InvalidModifierOnTypeParameter: ({ modifier }: { modifier: TsModifier }) =>\n    `'${modifier}' modifier cannot appear on a type parameter.`,\n  InvalidModifierOnTypeParameterPositions: ({\n    modifier,\n  }: {\n    modifier: TsModifier;\n  }) =>\n    `'${modifier}' modifier can only appear on a type parameter of a class, interface or type alias.`,\n  InvalidModifiersOrder: ({\n    orderedModifiers,\n  }: {\n    orderedModifiers: [TsModifier, TsModifier];\n  }) =>\n    `'${orderedModifiers[0]}' modifier must precede '${orderedModifiers[1]}' modifier.`,\n  InvalidPropertyAccessAfterInstantiationExpression:\n    \"Invalid property access after an instantiation expression. \" +\n    \"You can either wrap the instantiation expression in parentheses, or delete the type arguments.\",\n  InvalidTupleMemberLabel:\n    \"Tuple members must be labeled with a simple identifier.\",\n  MissingInterfaceName:\n    \"'interface' declarations must be followed by an identifier.\",\n  NonAbstractClassHasAbstractMethod:\n    \"Abstract methods can only appear within an abstract class.\",\n  NonClassMethodPropertyHasAbstractModifer:\n    \"'abstract' modifier can only appear on a class, method, or property declaration.\",\n  OptionalTypeBeforeRequired:\n    \"A required element cannot follow an optional element.\",\n  OverrideNotInSubClass:\n    \"This member cannot have an 'override' modifier because its containing class does not extend another class.\",\n  PatternIsOptional:\n    \"A binding pattern parameter cannot be optional in an implementation signature.\",\n  PrivateElementHasAbstract:\n    \"Private elements cannot have the 'abstract' modifier.\",\n  PrivateElementHasAccessibility: ({\n    modifier,\n  }: {\n    modifier: N.Accessibility;\n  }) =>\n    `Private elements cannot have an accessibility modifier ('${modifier}').`,\n  ReadonlyForMethodSignature:\n    \"'readonly' modifier can only appear on a property declaration or index signature.\",\n  ReservedArrowTypeParam:\n    \"This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.\",\n  ReservedTypeAssertion:\n    \"This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.\",\n  SetAccessorCannotHaveOptionalParameter:\n    \"A 'set' accessor cannot have an optional parameter.\",\n  SetAccessorCannotHaveRestParameter:\n    \"A 'set' accessor cannot have rest parameter.\",\n  SetAccessorCannotHaveReturnType:\n    \"A 'set' accessor cannot have a return type annotation.\",\n  SingleTypeParameterWithoutTrailingComma: ({\n    typeParameterName,\n  }: {\n    typeParameterName: string;\n  }) =>\n    `Single type parameter ${typeParameterName} should have a trailing comma. Example usage: <${typeParameterName},>.`,\n  StaticBlockCannotHaveModifier:\n    \"Static class blocks cannot have any modifier.\",\n  TupleOptionalAfterType:\n    \"A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).\",\n  TypeAnnotationAfterAssign:\n    \"Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.\",\n  TypeImportCannotSpecifyDefaultAndNamed:\n    \"A type-only import can specify a default import or named bindings, but not both.\",\n  TypeModifierIsUsedInTypeExports:\n    \"The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.\",\n  TypeModifierIsUsedInTypeImports:\n    \"The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.\",\n  UnexpectedParameterModifier:\n    \"A parameter property is only allowed in a constructor implementation.\",\n  UnexpectedReadonly:\n    \"'readonly' type modifier is only permitted on array and tuple literal types.\",\n  UnexpectedTypeAnnotation: \"Did not expect a type annotation here.\",\n  UnexpectedTypeCastInParameter: \"Unexpected type cast in parameter position.\",\n  UnsupportedImportTypeArgument:\n    \"Argument in a type import must be a string literal.\",\n  UnsupportedParameterPropertyKind:\n    \"A parameter property may not be declared using a binding pattern.\",\n  UnsupportedSignatureParameterKind: ({ type }: { type: string }) =>\n    `Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got ${type}.`,\n});\n\n/* eslint-disable sort-keys */\n\n// Doesn't handle \"void\" or \"null\" because those are keywords, not identifiers.\n// It also doesn't handle \"intrinsic\", since usually it's not a keyword.\nfunction keywordTypeFromName(value: string): N.TsKeywordTypeType | undefined {\n  switch (value) {\n    case \"any\":\n      return \"TSAnyKeyword\";\n    case \"boolean\":\n      return \"TSBooleanKeyword\";\n    case \"bigint\":\n      return \"TSBigIntKeyword\";\n    case \"never\":\n      return \"TSNeverKeyword\";\n    case \"number\":\n      return \"TSNumberKeyword\";\n    case \"object\":\n      return \"TSObjectKeyword\";\n    case \"string\":\n      return \"TSStringKeyword\";\n    case \"symbol\":\n      return \"TSSymbolKeyword\";\n    case \"undefined\":\n      return \"TSUndefinedKeyword\";\n    case \"unknown\":\n      return \"TSUnknownKeyword\";\n    default:\n      return undefined;\n  }\n}\n\nfunction tsIsAccessModifier(modifier: string): modifier is N.Accessibility {\n  return (\n    modifier === \"private\" || modifier === \"public\" || modifier === \"protected\"\n  );\n}\n\nfunction tsIsVarianceAnnotations(\n  modifier: string,\n): modifier is N.VarianceAnnotations {\n  return modifier === \"in\" || modifier === \"out\";\n}\n\nfunction tsIsEntityName(\n  node: N.Expression,\n): node is N.MemberExpression | N.Identifier | N.TsInstantiationExpression {\n  if (node.extra?.parenthesized) {\n    return false;\n  }\n  switch (node.type) {\n    case \"Identifier\":\n      return true;\n    case \"MemberExpression\":\n      return !node.computed && tsIsEntityName(node.object);\n    case \"TSInstantiationExpression\":\n      return tsIsEntityName(node.expression);\n    default:\n      return false;\n  }\n}\n\nexport const enum tsParseEntityNameFlags {\n  NONE = 0b00,\n  ALLOW_RESERVED_WORDS = 0b01,\n  LEADING_THIS_AS_IDENTIFIER = 0b10,\n}\n\nexport default (superClass: ClassWithMixin<typeof Parser, IJSXParserMixin>) =>\n  class TypeScriptParserMixin extends superClass implements Parser {\n    getScopeHandler(): new (...args: any) => TypeScriptScopeHandler {\n      return TypeScriptScopeHandler;\n    }\n\n    tsIsIdentifier(): boolean {\n      // TODO: actually a bit more complex in TypeScript, but shouldn't matter.\n      // See https://github.com/Microsoft/TypeScript/issues/15008\n      return tokenIsIdentifier(this.state.type);\n    }\n\n    tsTokenCanFollowModifier() {\n      return (\n        this.match(tt.bracketL) ||\n        this.match(tt.braceL) ||\n        this.match(tt.star) ||\n        this.match(tt.ellipsis) ||\n        this.match(tt.privateName) ||\n        this.isLiteralPropertyName()\n      );\n    }\n\n    tsNextTokenOnSameLineAndCanFollowModifier() {\n      this.next();\n      if (this.hasPrecedingLineBreak()) {\n        return false;\n      }\n      return this.tsTokenCanFollowModifier();\n    }\n\n    tsNextTokenCanFollowModifier() {\n      // Note: TypeScript's implementation is much more complicated because\n      // more things are considered modifiers there.\n      // This implementation only handles modifiers not handled by @babel/parser itself. And \"static\".\n      if (this.match(tt._static)) {\n        this.next();\n        return this.tsTokenCanFollowModifier();\n      }\n      return this.tsNextTokenOnSameLineAndCanFollowModifier();\n    }\n\n    /** Parses a modifier matching one the given modifier names. */\n    tsParseModifier<T extends TsModifier>(\n      allowedModifiers: T[],\n      stopOnStartOfClassStaticBlock?: boolean,\n    ): T | undefined | null {\n      if (\n        !tokenIsIdentifier(this.state.type) &&\n        this.state.type !== tt._in &&\n        this.state.type !== tt._const\n      ) {\n        return undefined;\n      }\n\n      const modifier = this.state.value;\n      if (allowedModifiers.includes(modifier)) {\n        if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {\n          return undefined;\n        }\n        if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {\n          return modifier;\n        }\n      }\n      return undefined;\n    }\n\n    /** Parses a list of modifiers, in any order.\n     *  If you need a specific order, you must call this function multiple times:\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"public\"] });\n     *    this.tsParseModifiers({ modified: node, allowedModifiers: [\"abstract\", \"readonly\"] });\n     */\n    tsParseModifiers<N extends ModifierBase>(\n      {\n        allowedModifiers,\n        disallowedModifiers,\n        stopOnStartOfClassStaticBlock,\n        errorTemplate = TSErrors.InvalidModifierOnTypeMember,\n      }: {\n        allowedModifiers: readonly TsModifier[];\n        disallowedModifiers?: TsModifier[];\n        stopOnStartOfClassStaticBlock?: boolean;\n        errorTemplate?: typeof TSErrors.InvalidModifierOnTypeMember;\n      },\n      modified: N,\n    ): void {\n      const enforceOrder = (\n        loc: Position,\n        modifier: TsModifier,\n        before: TsModifier,\n        after: TsModifier,\n      ) => {\n        if (modifier === before && modified[after]) {\n          this.raise(TSErrors.InvalidModifiersOrder, loc, {\n            orderedModifiers: [before, after],\n          });\n        }\n      };\n      const incompatible = (\n        loc: Position,\n        modifier: TsModifier,\n        mod1: TsModifier,\n        mod2: TsModifier,\n      ) => {\n        if (\n          (modified[mod1] && modifier === mod2) ||\n          (modified[mod2] && modifier === mod1)\n        ) {\n          this.raise(TSErrors.IncompatibleModifiers, loc, {\n            modifiers: [mod1, mod2],\n          });\n        }\n      };\n\n      for (;;) {\n        const { startLoc } = this.state;\n        const modifier: TsModifier | undefined | null = this.tsParseModifier(\n          allowedModifiers.concat(disallowedModifiers ?? []),\n          stopOnStartOfClassStaticBlock,\n        );\n\n        if (!modifier) break;\n\n        if (tsIsAccessModifier(modifier)) {\n          if (modified.accessibility) {\n            this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {\n              modifier,\n            });\n          } else {\n            enforceOrder(startLoc, modifier, modifier, \"override\");\n            enforceOrder(startLoc, modifier, modifier, \"static\");\n            enforceOrder(startLoc, modifier, modifier, \"readonly\");\n\n            modified.accessibility = modifier;\n          }\n        } else if (tsIsVarianceAnnotations(modifier)) {\n          if (modified[modifier]) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          }\n          modified[modifier] = true;\n\n          enforceOrder(startLoc, modifier, \"in\", \"out\");\n        } else {\n          if (Object.hasOwn(modified, modifier)) {\n            this.raise(TSErrors.DuplicateModifier, startLoc, { modifier });\n          } else {\n            enforceOrder(startLoc, modifier, \"static\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"static\", \"override\");\n            enforceOrder(startLoc, modifier, \"override\", \"readonly\");\n            enforceOrder(startLoc, modifier, \"abstract\", \"override\");\n\n            incompatible(startLoc, modifier, \"declare\", \"override\");\n            incompatible(startLoc, modifier, \"static\", \"abstract\");\n          }\n          modified[modifier] = true;\n        }\n\n        if (disallowedModifiers?.includes(modifier)) {\n          this.raise(errorTemplate, startLoc, {\n            modifier,\n          });\n        }\n      }\n    }\n\n    tsIsListTerminator(kind: ParsingContext): boolean {\n      switch (kind) {\n        case \"EnumMembers\":\n        case \"TypeMembers\":\n          return this.match(tt.braceR);\n        case \"HeritageClauseElement\":\n          return this.match(tt.braceL);\n        case \"TupleElementTypes\":\n          return this.match(tt.bracketR);\n        case \"TypeParametersOrArguments\":\n          return this.match(tt.gt);\n      }\n    }\n\n    tsParseList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n    ): T[] {\n      const result: T[] = [];\n      while (!this.tsIsListTerminator(kind)) {\n        // Skipping \"parseListElement\" from the TS source since that's just for error handling.\n        result.push(parseElement());\n      }\n      return result;\n    }\n\n    tsParseDelimitedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      return nonNull(\n        this.tsParseDelimitedListWorker(\n          kind,\n          parseElement,\n          /* expectSuccess */ true,\n          refTrailingCommaPos,\n        ),\n      );\n    }\n\n    /**\n     * If !expectSuccess, returns undefined instead of failing to parse.\n     * If expectSuccess, parseElement should always return a defined value.\n     */\n    tsParseDelimitedListWorker<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T | undefined,\n      expectSuccess: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] | undefined {\n      const result: T[] = [];\n      let trailingCommaPos = -1;\n\n      for (;;) {\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n        trailingCommaPos = -1;\n\n        const element = parseElement();\n        if (element == null) {\n          return undefined;\n        }\n        result.push(element);\n\n        if (this.eat(tt.comma)) {\n          trailingCommaPos = this.state.lastTokStartLoc.index;\n          continue;\n        }\n\n        if (this.tsIsListTerminator(kind)) {\n          break;\n        }\n\n        if (expectSuccess) {\n          // This will fail with an error about a missing comma\n          this.expect(tt.comma);\n        }\n        return undefined;\n      }\n\n      if (refTrailingCommaPos) {\n        refTrailingCommaPos.value = trailingCommaPos;\n      }\n\n      return result;\n    }\n\n    tsParseBracketedList<T extends N.Node>(\n      kind: ParsingContext,\n      parseElement: () => T,\n      bracket: boolean,\n      skipFirstToken: boolean,\n      refTrailingCommaPos?: {\n        value: number;\n      },\n    ): T[] {\n      if (!skipFirstToken) {\n        if (bracket) {\n          this.expect(tt.bracketL);\n        } else {\n          this.expect(tt.lt);\n        }\n      }\n\n      const result = this.tsParseDelimitedList(\n        kind,\n        parseElement,\n        refTrailingCommaPos,\n      );\n\n      if (bracket) {\n        this.expect(tt.bracketR);\n      } else {\n        this.expect(tt.gt);\n      }\n\n      return result;\n    }\n\n    tsParseImportType(): N.TsImportType {\n      const node = this.startNode<N.TsImportType>();\n      this.expect(tt._import);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);\n        if (process.env.BABEL_8_BREAKING) {\n          // Consume as an non-conditional type so that we can recover from this error\n          node.argument = this.tsParseNonConditionalType() as any;\n        } else {\n          node.argument = super.parseExprAtom() as any;\n        }\n      } else {\n        if (process.env.BABEL_8_BREAKING) {\n          node.argument = this.tsParseLiteralTypeNode();\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n          node.argument = this.parseStringLiteral(this.state.value);\n        }\n      }\n      if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n        node.options = super.parseMaybeAssignAllowIn();\n        this.eat(tt.comma);\n      } else {\n        node.options = null;\n      }\n      this.expect(tt.parenR);\n\n      if (this.eat(tt.dot)) {\n        // In this instance, the entity name will actually itself be a\n        // qualifier, so allow it to be a reserved word as well.\n        node.qualifier = this.tsParseEntityName(\n          tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n            tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n        );\n      }\n      if (this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSImportType\");\n    }\n\n    tsParseEntityName(flags: tsParseEntityNameFlags): N.TsEntityName {\n      let entity: N.TsEntityName;\n      if (\n        flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS &&\n        this.match(tt._this)\n      ) {\n        if (flags & tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER) {\n          entity = this.parseIdentifier(true);\n        } else {\n          const node = this.startNode<N.ThisExpression>();\n          this.next();\n          entity = this.finishNode(node, \"ThisExpression\");\n        }\n      } else {\n        entity = this.parseIdentifier(\n          !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n        );\n      }\n      while (this.eat(tt.dot)) {\n        const node: Undone<N.TsQualifiedName> =\n          this.startNodeAtNode<N.TsQualifiedName>(entity);\n        node.left = entity;\n        node.right = this.parseIdentifier(\n          !!(flags & tsParseEntityNameFlags.ALLOW_RESERVED_WORDS),\n        );\n        entity = this.finishNode(node, \"TSQualifiedName\");\n      }\n      return entity;\n    }\n\n    tsParseTypeReference(): N.TsTypeReference {\n      const node = this.startNode<N.TsTypeReference>();\n      node.typeName = this.tsParseEntityName(\n        tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n      );\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeReference\");\n    }\n\n    tsParseThisTypePredicate(lhs: N.TsThisType): N.TsTypePredicate {\n      this.next();\n      const node = this.startNodeAtNode<N.TsTypePredicate>(lhs);\n      node.parameterName = lhs;\n      node.typeAnnotation = this.tsParseTypeAnnotation(/* eatColon */ false);\n      node.asserts = false;\n      return this.finishNode(node, \"TSTypePredicate\");\n    }\n\n    tsParseThisTypeNode(): N.TsThisType {\n      const node = this.startNode<N.TsThisType>();\n      this.next();\n      return this.finishNode(node, \"TSThisType\");\n    }\n\n    tsParseTypeQuery(): N.TsTypeQuery {\n      const node = this.startNode<N.TsTypeQuery>();\n      this.expect(tt._typeof);\n      if (this.match(tt._import)) {\n        node.exprName = this.tsParseImportType();\n      } else {\n        if (process.env.BABEL_8_BREAKING) {\n          node.exprName = this.tsParseEntityName(\n            tsParseEntityNameFlags.ALLOW_RESERVED_WORDS,\n          );\n        } else {\n          node.exprName = this.tsParseEntityName(\n            tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n              tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n          );\n        }\n      }\n      if (!this.hasPrecedingLineBreak() && this.match(tt.lt)) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = this.tsParseTypeArguments();\n        } else {\n          node.typeParameters = this.tsParseTypeArguments();\n        }\n      }\n      return this.finishNode(node, \"TSTypeQuery\");\n    }\n\n    tsParseInOutModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\"],\n      disallowedModifiers: [\n        \"const\",\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseConstModifier = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"const\"],\n      // for better error recovery\n      disallowedModifiers: [\"in\", \"out\"],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n    });\n\n    tsParseInOutConstModifiers = this.tsParseModifiers.bind(this, {\n      allowedModifiers: [\"in\", \"out\", \"const\"],\n      disallowedModifiers: [\n        \"public\",\n        \"private\",\n        \"protected\",\n        \"readonly\",\n        \"declare\",\n        \"abstract\",\n        \"override\",\n      ],\n      errorTemplate: TSErrors.InvalidModifierOnTypeParameter,\n    });\n\n    tsParseTypeParameter(\n      parseModifiers: (node: Undone<N.TsTypeParameter>) => void,\n    ): N.TsTypeParameter {\n      const node = this.startNode<N.TsTypeParameter>();\n\n      parseModifiers(node);\n\n      node.name = this.tsParseTypeParameterName();\n      node.constraint = this.tsEatThenParseType(tt._extends);\n      node.default = this.tsEatThenParseType(tt.eq);\n      return this.finishNode(node, \"TSTypeParameter\");\n    }\n\n    tsTryParseTypeParameters(\n      parseModifiers: (node: N.TsTypeParameter) => void,\n    ): N.TsTypeParameterDeclaration | undefined | null {\n      if (this.match(tt.lt)) {\n        return this.tsParseTypeParameters(parseModifiers);\n      }\n    }\n\n    tsParseTypeParameters(parseModifiers: (node: N.TsTypeParameter) => void) {\n      const node = this.startNode<N.TsTypeParameterDeclaration>();\n\n      if (this.match(tt.lt) || this.match(tt.jsxTagStart)) {\n        this.next();\n      } else {\n        this.unexpected();\n      }\n\n      const refTrailingCommaPos = { value: -1 };\n\n      node.params = this.tsParseBracketedList(\n        \"TypeParametersOrArguments\",\n        this.tsParseTypeParameter.bind(this, parseModifiers),\n        /* bracket */ false,\n        /* skipFirstToken */ true,\n        refTrailingCommaPos,\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeParameters, node);\n      }\n      if (refTrailingCommaPos.value !== -1) {\n        this.addExtra(node, \"trailingComma\", refTrailingCommaPos.value);\n      }\n      return this.finishNode(node, \"TSTypeParameterDeclaration\");\n    }\n\n    // Note: In TypeScript implementation we must provide `yieldContext` and `awaitContext`,\n    // but here it's always false, because this is only used for types.\n    tsFillSignature(\n      returnToken: TokenType,\n      signature: Undone<N.TsSignatureDeclaration>,\n    ): void {\n      // Arrow fns *must* have return token (`=>`). Normal functions can omit it.\n      const returnTokenRequired = returnToken === tt.arrow;\n\n      // https://github.com/babel/babel/issues/9231\n      const paramsKey = process.env.BABEL_8_BREAKING ? \"params\" : \"parameters\";\n      const returnTypeKey = process.env.BABEL_8_BREAKING\n        ? \"returnType\"\n        : \"typeAnnotation\";\n\n      signature.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      this.expect(tt.parenL);\n      signature[paramsKey] = this.tsParseBindingListForSignature();\n      if (returnTokenRequired) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      } else if (this.match(returnToken)) {\n        signature[returnTypeKey] =\n          this.tsParseTypeOrTypePredicateAnnotation(returnToken);\n      }\n    }\n\n    tsParseBindingListForSignature(): Array<\n      N.Identifier | N.RestElement | N.ObjectPattern | N.ArrayPattern\n    > {\n      const list = super.parseBindingList(\n        tt.parenR,\n        charCodes.rightParenthesis,\n        ParseBindingListFlags.IS_FUNCTION_PARAMS,\n      );\n      for (const pattern of list) {\n        const { type } = pattern;\n        if (type === \"AssignmentPattern\" || type === \"TSParameterProperty\") {\n          this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {\n            type,\n          });\n        }\n      }\n      return list as Exclude<\n        (typeof list)[0],\n        N.AssignmentPattern | N.TSParameterProperty\n      >[];\n    }\n\n    tsParseTypeMemberSemicolon(): void {\n      if (!this.eat(tt.comma) && !this.isLineTerminator()) {\n        this.expect(tt.semi);\n      }\n    }\n\n    tsParseSignatureMember(\n      kind: \"TSCallSignatureDeclaration\" | \"TSConstructSignatureDeclaration\",\n      node: Undone<\n        N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration\n      >,\n    ): N.TsCallSignatureDeclaration | N.TsConstructSignatureDeclaration {\n      this.tsFillSignature(tt.colon, node);\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, kind);\n    }\n\n    tsIsUnambiguouslyIndexSignature() {\n      this.next(); // Skip '{'\n      if (tokenIsIdentifier(this.state.type)) {\n        this.next();\n        return this.match(tt.colon);\n      }\n      return false;\n    }\n\n    tsTryParseIndexSignature(\n      node: Undone<N.TsIndexSignature>,\n    ): N.TsIndexSignature | undefined {\n      if (\n        !(\n          this.match(tt.bracketL) &&\n          this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this))\n        )\n      ) {\n        return;\n      }\n\n      this.expect(tt.bracketL);\n      const id = this.parseIdentifier();\n      id.typeAnnotation = this.tsParseTypeAnnotation();\n      this.resetEndLocation(id); // set end position to end of type\n\n      this.expect(tt.bracketR);\n      node.parameters = [id];\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n      this.tsParseTypeMemberSemicolon();\n      return this.finishNode(node, \"TSIndexSignature\");\n    }\n\n    tsParsePropertyOrMethodSignature(\n      node: N.TsPropertySignature | N.TsMethodSignature,\n      readonly: boolean,\n    ): N.TsPropertySignature | N.TsMethodSignature {\n      if (this.eat(tt.question)) node.optional = true;\n      const nodeAny: any = node;\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        if (readonly) {\n          this.raise(TSErrors.ReadonlyForMethodSignature, node);\n        }\n        const method: N.TsMethodSignature = nodeAny;\n        if (method.kind && this.match(tt.lt)) {\n          this.raise(\n            TSErrors.AccessorCannotHaveTypeParameters,\n            this.state.curPosition(),\n          );\n        }\n        this.tsFillSignature(tt.colon, method);\n        this.tsParseTypeMemberSemicolon();\n        const paramsKey = process.env.BABEL_8_BREAKING\n          ? \"params\"\n          : \"parameters\";\n        const returnTypeKey = process.env.BABEL_8_BREAKING\n          ? \"returnType\"\n          : \"typeAnnotation\";\n        if (method.kind === \"get\") {\n          if (method[paramsKey].length > 0) {\n            this.raise(Errors.BadGetterArity, this.state.curPosition());\n            if (this.isThisParam(method[paramsKey][0])) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n        } else if (method.kind === \"set\") {\n          if (method[paramsKey].length !== 1) {\n            this.raise(Errors.BadSetterArity, this.state.curPosition());\n          } else {\n            const firstParameter = method[paramsKey][0];\n            if (this.isThisParam(firstParameter)) {\n              this.raise(\n                TSErrors.AccessorCannotDeclareThisParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (\n              firstParameter.type === \"Identifier\" &&\n              firstParameter.optional\n            ) {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveOptionalParameter,\n                this.state.curPosition(),\n              );\n            }\n            if (firstParameter.type === \"RestElement\") {\n              this.raise(\n                TSErrors.SetAccessorCannotHaveRestParameter,\n                this.state.curPosition(),\n              );\n            }\n          }\n          if (method[returnTypeKey]) {\n            this.raise(\n              TSErrors.SetAccessorCannotHaveReturnType,\n              method[returnTypeKey],\n            );\n          }\n        } else {\n          method.kind = \"method\";\n        }\n        return this.finishNode(method, \"TSMethodSignature\");\n      } else {\n        const property: N.TsPropertySignature = nodeAny;\n        if (readonly) property.readonly = true;\n        const type = this.tsTryParseTypeAnnotation();\n        if (type) property.typeAnnotation = type;\n        this.tsParseTypeMemberSemicolon();\n        return this.finishNode(property, \"TSPropertySignature\");\n      }\n    }\n\n    tsParseTypeMember(): N.TsTypeElement {\n      const node: any = this.startNode();\n\n      if (this.match(tt.parenL) || this.match(tt.lt)) {\n        return this.tsParseSignatureMember(\"TSCallSignatureDeclaration\", node);\n      }\n\n      if (this.match(tt._new)) {\n        const id = this.startNode<N.Identifier>();\n        this.next();\n        if (this.match(tt.parenL) || this.match(tt.lt)) {\n          return this.tsParseSignatureMember(\n            \"TSConstructSignatureDeclaration\",\n            node,\n          );\n        } else {\n          node.key = this.createIdentifier(id, \"new\");\n          return this.tsParsePropertyOrMethodSignature(node, false);\n        }\n      }\n\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\"readonly\"],\n          disallowedModifiers: [\n            \"declare\",\n            \"abstract\",\n            \"private\",\n            \"protected\",\n            \"public\",\n            \"static\",\n            \"override\",\n          ],\n        },\n        node,\n      );\n\n      const idx = this.tsTryParseIndexSignature(node);\n      if (idx) {\n        return idx;\n      }\n\n      super.parsePropertyName(node);\n      if (\n        !node.computed &&\n        node.key.type === \"Identifier\" &&\n        (node.key.name === \"get\" || node.key.name === \"set\") &&\n        this.tsTokenCanFollowModifier()\n      ) {\n        node.kind = node.key.name;\n        super.parsePropertyName(node);\n      }\n      return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);\n    }\n\n    tsParseTypeLiteral(): N.TsTypeLiteral {\n      const node = this.startNode<N.TsTypeLiteral>();\n      node.members = this.tsParseObjectTypeMembers();\n      return this.finishNode(node, \"TSTypeLiteral\");\n    }\n\n    tsParseObjectTypeMembers(): Array<N.TsTypeElement> {\n      this.expect(tt.braceL);\n      const members = this.tsParseList(\n        \"TypeMembers\",\n        this.tsParseTypeMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return members;\n    }\n\n    tsIsStartOfMappedType(): boolean {\n      this.next();\n      if (this.eat(tt.plusMin)) {\n        return this.isContextual(tt._readonly);\n      }\n      if (this.isContextual(tt._readonly)) {\n        this.next();\n      }\n      if (!this.match(tt.bracketL)) {\n        return false;\n      }\n      this.next();\n      if (!this.tsIsIdentifier()) {\n        return false;\n      }\n      this.next();\n      return this.match(tt._in);\n    }\n\n    tsParseMappedType(): N.TsMappedType {\n      const node = this.startNode<N.TsMappedType>();\n\n      this.expect(tt.braceL);\n\n      if (this.match(tt.plusMin)) {\n        node.readonly = this.state.value;\n        this.next();\n        this.expectContextual(tt._readonly);\n      } else if (this.eatContextual(tt._readonly)) {\n        node.readonly = true;\n      }\n\n      this.expect(tt.bracketL);\n      if (process.env.BABEL_8_BREAKING) {\n        node.key = this.tsParseTypeParameterName() as N.Identifier;\n        node.constraint = this.tsExpectThenParseType(tt._in);\n      } else {\n        const typeParameter = this.startNode<N.TsTypeParameter>();\n        typeParameter.name = this.tsParseTypeParameterName();\n        typeParameter.constraint = this.tsExpectThenParseType(tt._in);\n        // @ts-expect-error for Babel 7\n        node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      }\n      node.nameType = this.eatContextual(tt._as) ? this.tsParseType() : null;\n\n      this.expect(tt.bracketR);\n\n      if (this.match(tt.plusMin)) {\n        node.optional = this.state.value;\n        this.next();\n        this.expect(tt.question);\n      } else if (this.eat(tt.question)) {\n        node.optional = true;\n      }\n\n      node.typeAnnotation = this.tsTryParseType();\n      this.semicolon();\n      this.expect(tt.braceR);\n\n      return this.finishNode(node, \"TSMappedType\");\n    }\n\n    tsParseTupleType(): N.TsTupleType {\n      const node = this.startNode<N.TsTupleType>();\n      node.elementTypes = this.tsParseBracketedList(\n        \"TupleElementTypes\",\n        this.tsParseTupleElementType.bind(this),\n        /* bracket */ true,\n        /* skipFirstToken */ false,\n      );\n\n      // Validate the elementTypes to ensure that no mandatory elements\n      // follow optional elements\n      let seenOptionalElement = false;\n      node.elementTypes.forEach(elementNode => {\n        const { type } = elementNode;\n\n        if (\n          seenOptionalElement &&\n          type !== \"TSRestType\" &&\n          type !== \"TSOptionalType\" &&\n          !(type === \"TSNamedTupleMember\" && elementNode.optional)\n        ) {\n          this.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);\n        }\n\n        seenOptionalElement ||=\n          (type === \"TSNamedTupleMember\" && elementNode.optional) ||\n          type === \"TSOptionalType\";\n      });\n\n      return this.finishNode(node, \"TSTupleType\");\n    }\n\n    tsParseTupleElementType(): N.TsNamedTupleMember | N.TsType {\n      // parses `...TsType[]`\n\n      const restStartLoc = this.state.startLoc;\n\n      const rest = this.eat(tt.ellipsis);\n      const { startLoc } = this.state;\n\n      let labeled: boolean;\n      let label: N.Identifier;\n      let optional: boolean;\n      let type: N.TsNamedTupleMember | N.TsType;\n\n      const isWord = tokenIsKeywordOrIdentifier(this.state.type);\n      const chAfterWord = isWord ? this.lookaheadCharCode() : null;\n      if (chAfterWord === charCodes.colon) {\n        labeled = true;\n        optional = false;\n        label = this.parseIdentifier(true);\n        this.expect(tt.colon);\n        type = this.tsParseType();\n      } else if (chAfterWord === charCodes.questionMark) {\n        optional = true;\n        const wordName = this.state.value;\n        const typeOrLabel = this.tsParseNonArrayType();\n\n        if (this.lookaheadCharCode() === charCodes.colon) {\n          labeled = true;\n          label = this.createIdentifier(\n            this.startNodeAt<N.Identifier>(startLoc),\n            wordName,\n          );\n          this.expect(tt.question);\n          this.expect(tt.colon);\n          type = this.tsParseType();\n        } else {\n          labeled = false;\n          type = typeOrLabel;\n          this.expect(tt.question);\n        }\n      } else {\n        type = this.tsParseType();\n        optional = this.eat(tt.question);\n        // In this case (labeled === true) could be only in invalid label.\n        // E.g. [x.y:type]\n        // An error is raised while processing node.\n        labeled = this.eat(tt.colon);\n      }\n\n      if (labeled) {\n        let labeledNode: Undone<N.TsNamedTupleMember>;\n        if (label) {\n          labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n          labeledNode.optional = optional;\n          labeledNode.label = label;\n          labeledNode.elementType = type;\n\n          if (this.eat(tt.question)) {\n            labeledNode.optional = true;\n            this.raise(\n              TSErrors.TupleOptionalAfterType,\n              this.state.lastTokStartLoc,\n            );\n          }\n        } else {\n          labeledNode = this.startNodeAt<N.TsNamedTupleMember>(startLoc);\n          labeledNode.optional = optional;\n          this.raise(TSErrors.InvalidTupleMemberLabel, type);\n          // @ts-expect-error This produces an invalid AST, but at least we don't drop\n          // nodes representing the invalid source.\n          labeledNode.label = type;\n          labeledNode.elementType = this.tsParseType();\n        }\n        type = this.finishNode(labeledNode, \"TSNamedTupleMember\");\n      } else if (optional) {\n        const optionalTypeNode = this.startNodeAt<N.TsOptionalType>(startLoc);\n        optionalTypeNode.typeAnnotation = type;\n        type = this.finishNode(optionalTypeNode, \"TSOptionalType\");\n      }\n\n      if (rest) {\n        const restNode = this.startNodeAt<N.TsRestType>(restStartLoc);\n        restNode.typeAnnotation = type;\n        type = this.finishNode(restNode, \"TSRestType\");\n      }\n\n      return type;\n    }\n\n    tsParseParenthesizedType(): N.TsParenthesizedType {\n      const node = this.startNode<N.TsParenthesizedType>();\n      this.expect(tt.parenL);\n      node.typeAnnotation = this.tsParseType();\n      this.expect(tt.parenR);\n      return this.finishNode(node, \"TSParenthesizedType\");\n    }\n\n    tsParseFunctionOrConstructorType(\n      type: \"TSFunctionType\" | \"TSConstructorType\",\n      abstract?: boolean,\n    ): N.TsFunctionOrConstructorType {\n      const node = this.startNode<\n        N.TsFunctionOrConstructorType | N.TsConstructorType\n      >();\n      if (type === \"TSConstructorType\") {\n        (node as Undone<N.TsConstructorType>).abstract = !!abstract;\n        if (abstract) this.next();\n        this.next(); // eat `new`\n      }\n      this.tsInAllowConditionalTypesContext(() =>\n        this.tsFillSignature(tt.arrow, node),\n      );\n      return this.finishNode(node, type);\n    }\n\n    tsParseLiteralTypeNode(): N.TsLiteralType {\n      const node = this.startNode<N.TsLiteralType>();\n      switch (this.state.type) {\n        case tt.num:\n        case tt.bigint:\n        case tt.string:\n        case tt._true:\n        case tt._false:\n          // For compatibility to estree we cannot call parseLiteral directly here\n          // @ts-expect-error refine typings\n          node.literal = super.parseExprAtom();\n          break;\n        default:\n          this.unexpected();\n      }\n      return this.finishNode(node, \"TSLiteralType\");\n    }\n\n    tsParseTemplateLiteralType(): N.TsTemplateLiteralType | N.TsLiteralType {\n      if (process.env.BABEL_8_BREAKING) {\n        const startLoc = this.state.startLoc;\n        let curElt = this.parseTemplateElement(false);\n        const quasis = [curElt];\n        if (curElt.tail) {\n          const node = this.startNodeAt<N.TsLiteralType>(startLoc);\n          const literal = this.startNodeAt<N.TemplateLiteral>(startLoc);\n          literal.expressions = [];\n          literal.quasis = quasis;\n          node.literal = this.finishNode(literal, \"TemplateLiteral\");\n          return this.finishNode(node, \"TSLiteralType\");\n        } else {\n          const substitutions: N.TsType[] = [];\n          while (!curElt.tail) {\n            substitutions.push(this.tsParseType());\n            this.readTemplateContinuation();\n            quasis.push((curElt = this.parseTemplateElement(false)));\n          }\n          const node = this.startNodeAt<N.TsTemplateLiteralType>(startLoc);\n          node.types = substitutions;\n          node.quasis = quasis;\n          return this.finishNode(node, \"TSTemplateLiteralType\");\n        }\n      } else {\n        const node = this.startNode<N.TsLiteralType>();\n        node.literal = super.parseTemplate(false);\n        return this.finishNode(node, \"TSLiteralType\");\n      }\n    }\n\n    parseTemplateSubstitution(): N.TsType | N.Expression {\n      if (this.state.inType) return this.tsParseType();\n      return super.parseTemplateSubstitution();\n    }\n\n    tsParseThisTypeOrThisTypePredicate(): N.TsThisType | N.TsTypePredicate {\n      const thisKeyword = this.tsParseThisTypeNode();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        return this.tsParseThisTypePredicate(thisKeyword);\n      } else {\n        return thisKeyword;\n      }\n    }\n\n    tsParseNonArrayType(): N.TsType {\n      switch (this.state.type) {\n        case tt.string:\n        case tt.num:\n        case tt.bigint:\n        case tt._true:\n        case tt._false:\n          return this.tsParseLiteralTypeNode();\n        case tt.plusMin:\n          if (this.state.value === \"-\") {\n            const node = this.startNode<N.TsLiteralType>();\n            const nextToken = this.lookahead();\n            if (nextToken.type !== tt.num && nextToken.type !== tt.bigint) {\n              this.unexpected();\n            }\n            // @ts-expect-error: parseMaybeUnary must returns unary expression\n            node.literal = this.parseMaybeUnary();\n            return this.finishNode(node, \"TSLiteralType\");\n          }\n          break;\n        case tt._this:\n          return this.tsParseThisTypeOrThisTypePredicate();\n        case tt._typeof:\n          return this.tsParseTypeQuery();\n        case tt._import:\n          return this.tsParseImportType();\n        case tt.braceL:\n          return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this))\n            ? this.tsParseMappedType()\n            : this.tsParseTypeLiteral();\n        case tt.bracketL:\n          return this.tsParseTupleType();\n        case tt.parenL:\n          if (process.env.BABEL_8_BREAKING) {\n            if (\n              !(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)\n            ) {\n              const startLoc = this.state.startLoc;\n              this.next();\n              const type = this.tsParseType();\n              this.expect(tt.parenR);\n              this.addExtra(type, \"parenthesized\", true);\n              this.addExtra(type, \"parenStart\", startLoc.index);\n              return type;\n            }\n          }\n\n          return this.tsParseParenthesizedType();\n        case tt.templateNonTail:\n        case tt.templateTail:\n          return this.tsParseTemplateLiteralType();\n        default: {\n          const { type } = this.state;\n          if (\n            tokenIsIdentifier(type) ||\n            type === tt._void ||\n            type === tt._null\n          ) {\n            const nodeType =\n              type === tt._void\n                ? \"TSVoidKeyword\"\n                : type === tt._null\n                  ? \"TSNullKeyword\"\n                  : keywordTypeFromName(this.state.value);\n            if (\n              nodeType !== undefined &&\n              this.lookaheadCharCode() !== charCodes.dot\n            ) {\n              const node = this.startNode<N.TsKeywordType>();\n              this.next();\n              return this.finishNode(node, nodeType);\n            }\n            return this.tsParseTypeReference();\n          }\n        }\n      }\n\n      this.unexpected();\n    }\n\n    tsParseArrayTypeOrHigher(): N.TsType {\n      const { startLoc } = this.state;\n      let type = this.tsParseNonArrayType();\n      while (!this.hasPrecedingLineBreak() && this.eat(tt.bracketL)) {\n        if (this.match(tt.bracketR)) {\n          const node = this.startNodeAt<N.TsArrayType>(startLoc);\n          node.elementType = type;\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSArrayType\");\n        } else {\n          const node = this.startNodeAt<N.TsIndexedAccessType>(startLoc);\n          node.objectType = type;\n          node.indexType = this.tsParseType();\n          this.expect(tt.bracketR);\n          type = this.finishNode(node, \"TSIndexedAccessType\");\n        }\n      }\n      return type;\n    }\n\n    tsParseTypeOperator(): N.TsTypeOperator {\n      const node = this.startNode<N.TsTypeOperator>();\n      const operator = this.state.value;\n      this.next(); // eat operator\n      node.operator = operator;\n      node.typeAnnotation = this.tsParseTypeOperatorOrHigher();\n\n      if (operator === \"readonly\") {\n        this.tsCheckTypeAnnotationForReadOnly(node);\n      }\n\n      return this.finishNode(node, \"TSTypeOperator\");\n    }\n\n    tsCheckTypeAnnotationForReadOnly(node: Undone<N.TsTypeOperator>) {\n      switch (node.typeAnnotation.type) {\n        case \"TSTupleType\":\n        case \"TSArrayType\":\n          return;\n        default:\n          this.raise(TSErrors.UnexpectedReadonly, node);\n      }\n    }\n\n    tsParseInferType(): N.TsInferType {\n      const node = this.startNode<N.TsInferType>();\n      this.expectContextual(tt._infer);\n      const typeParameter = this.startNode<N.TsTypeParameter>();\n      typeParameter.name = this.tsParseTypeParameterName();\n      typeParameter.constraint = this.tsTryParse(() =>\n        this.tsParseConstraintForInferType(),\n      );\n      node.typeParameter = this.finishNode(typeParameter, \"TSTypeParameter\");\n      return this.finishNode(node, \"TSInferType\");\n    }\n\n    tsParseConstraintForInferType() {\n      if (this.eat(tt._extends)) {\n        const constraint = this.tsInDisallowConditionalTypesContext(() =>\n          this.tsParseType(),\n        );\n        if (\n          this.state.inDisallowConditionalTypesContext ||\n          !this.match(tt.question)\n        ) {\n          return constraint;\n        }\n      }\n    }\n\n    tsParseTypeOperatorOrHigher(): N.TsType {\n      const isTypeOperator =\n        tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;\n      return isTypeOperator\n        ? this.tsParseTypeOperator()\n        : this.isContextual(tt._infer)\n          ? this.tsParseInferType()\n          : this.tsInAllowConditionalTypesContext(() =>\n              this.tsParseArrayTypeOrHigher(),\n            );\n    }\n\n    tsParseUnionOrIntersectionType(\n      kind: \"TSUnionType\" | \"TSIntersectionType\",\n      parseConstituentType: () => N.TsType,\n      operator: TokenType,\n    ): N.TsType {\n      const node = this.startNode<N.TsUnionType | N.TsIntersectionType>();\n      const hasLeadingOperator = this.eat(operator);\n      const types = [];\n      do {\n        types.push(parseConstituentType());\n      } while (this.eat(operator));\n      if (types.length === 1 && !hasLeadingOperator) {\n        return types[0];\n      }\n      node.types = types;\n      return this.finishNode(node, kind);\n    }\n\n    tsParseIntersectionTypeOrHigher(): N.TsType {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSIntersectionType\",\n        this.tsParseTypeOperatorOrHigher.bind(this),\n        tt.bitwiseAND,\n      );\n    }\n\n    tsParseUnionTypeOrHigher() {\n      return this.tsParseUnionOrIntersectionType(\n        \"TSUnionType\",\n        this.tsParseIntersectionTypeOrHigher.bind(this),\n        tt.bitwiseOR,\n      );\n    }\n\n    tsIsStartOfFunctionType() {\n      if (this.match(tt.lt)) {\n        return true;\n      }\n      return (\n        this.match(tt.parenL) &&\n        this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this))\n      );\n    }\n\n    tsSkipParameterStart(): boolean {\n      if (tokenIsIdentifier(this.state.type) || this.match(tt._this)) {\n        this.next();\n        return true;\n      }\n\n      if (this.match(tt.braceL)) {\n        // Return true if we can parse an object pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          this.parseObjectLike(tt.braceR, true);\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      if (this.match(tt.bracketL)) {\n        this.next();\n        // Return true if we can parse an array pattern without errors\n        const { errors } = this.state;\n        const previousErrorCount = errors.length;\n        try {\n          super.parseBindingList(\n            tt.bracketR,\n            charCodes.rightSquareBracket,\n            ParseBindingListFlags.ALLOW_EMPTY,\n          );\n          return errors.length === previousErrorCount;\n        } catch {\n          return false;\n        }\n      }\n\n      return false;\n    }\n\n    tsIsUnambiguouslyStartOfFunctionType(): boolean {\n      this.next();\n      if (this.match(tt.parenR) || this.match(tt.ellipsis)) {\n        // ( )\n        // ( ...\n        return true;\n      }\n      if (this.tsSkipParameterStart()) {\n        if (\n          this.match(tt.colon) ||\n          this.match(tt.comma) ||\n          this.match(tt.question) ||\n          this.match(tt.eq)\n        ) {\n          // ( xxx :\n          // ( xxx ,\n          // ( xxx ?\n          // ( xxx =\n          return true;\n        }\n        if (this.match(tt.parenR)) {\n          this.next();\n          if (this.match(tt.arrow)) {\n            // ( xxx ) =>\n            return true;\n          }\n        }\n      }\n      return false;\n    }\n\n    tsParseTypeOrTypePredicateAnnotation(\n      returnToken: TokenType,\n    ): N.TsTypeAnnotation {\n      return this.tsInType(() => {\n        const t = this.startNode<N.TsTypeAnnotation>();\n        this.expect(returnToken);\n\n        const node = this.startNode<N.TsTypePredicate>();\n\n        const asserts = !!this.tsTryParse(\n          this.tsParseTypePredicateAsserts.bind(this),\n        );\n\n        if (asserts && this.match(tt._this)) {\n          // When asserts is false, thisKeyword is handled by tsParseNonArrayType\n          // : asserts this is type\n          let thisTypePredicate = this.tsParseThisTypeOrThisTypePredicate();\n          // if it turns out to be a `TSThisType`, wrap it with `TSTypePredicate`\n          // : asserts this\n          if (thisTypePredicate.type === \"TSThisType\") {\n            node.parameterName = thisTypePredicate;\n            node.asserts = true;\n            (node as N.TsTypePredicate).typeAnnotation = null;\n            thisTypePredicate = this.finishNode(node, \"TSTypePredicate\");\n          } else {\n            this.resetStartLocationFromNode(thisTypePredicate, node);\n            thisTypePredicate.asserts = true;\n          }\n          t.typeAnnotation = thisTypePredicate;\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        const typePredicateVariable =\n          this.tsIsIdentifier() &&\n          this.tsTryParse(this.tsParseTypePredicatePrefix.bind(this));\n\n        if (!typePredicateVariable) {\n          if (!asserts) {\n            // : type\n            return this.tsParseTypeAnnotation(/* eatColon */ false, t);\n          }\n\n          // : asserts foo\n          node.parameterName = this.parseIdentifier();\n          node.asserts = asserts;\n          (node as N.TsTypePredicate).typeAnnotation = null;\n          t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n          return this.finishNode(t, \"TSTypeAnnotation\");\n        }\n\n        // : asserts foo is type\n        const type = this.tsParseTypeAnnotation(/* eatColon */ false);\n        node.parameterName = typePredicateVariable;\n        node.typeAnnotation = type;\n        node.asserts = asserts;\n        t.typeAnnotation = this.finishNode(node, \"TSTypePredicate\");\n        return this.finishNode(t, \"TSTypeAnnotation\");\n      });\n    }\n\n    tsTryParseTypeOrTypePredicateAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n    }\n\n    tsTryParseTypeAnnotation(): N.TsTypeAnnotation | undefined {\n      if (this.match(tt.colon)) {\n        return this.tsParseTypeAnnotation();\n      }\n    }\n\n    tsTryParseType(): N.TsType | undefined {\n      return this.tsEatThenParseType(tt.colon);\n    }\n\n    tsParseTypePredicatePrefix(): N.Identifier | undefined {\n      const id = this.parseIdentifier();\n      if (this.isContextual(tt._is) && !this.hasPrecedingLineBreak()) {\n        this.next();\n        return id;\n      }\n    }\n\n    tsParseTypePredicateAsserts(): boolean {\n      if (this.state.type !== tt._asserts) {\n        return false;\n      }\n      const containsEsc = this.state.containsEsc;\n      this.next();\n      if (!tokenIsIdentifier(this.state.type) && !this.match(tt._this)) {\n        return false;\n      }\n\n      if (containsEsc) {\n        this.raise(\n          Errors.InvalidEscapedReservedWord,\n          this.state.lastTokStartLoc,\n          {\n            reservedWord: \"asserts\",\n          },\n        );\n      }\n\n      return true;\n    }\n\n    tsParseTypeAnnotation(\n      eatColon = true,\n      t: Undone<N.TsTypeAnnotation> = this.startNode<N.TsTypeAnnotation>(),\n    ): N.TsTypeAnnotation {\n      this.tsInType(() => {\n        if (eatColon) this.expect(tt.colon);\n        t.typeAnnotation = this.tsParseType();\n      });\n      return this.finishNode(t, \"TSTypeAnnotation\");\n    }\n\n    /** Be sure to be in a type context before calling this, using `tsInType`. */\n    tsParseType(): N.TsType {\n      // Need to set `state.inType` so that we don't parse JSX in a type context.\n      assert(this.state.inType);\n      const type = this.tsParseNonConditionalType();\n\n      if (\n        this.state.inDisallowConditionalTypesContext ||\n        this.hasPrecedingLineBreak() ||\n        !this.eat(tt._extends)\n      ) {\n        return type;\n      }\n      const node = this.startNodeAtNode<N.TsConditionalType>(type);\n      node.checkType = type;\n\n      node.extendsType = this.tsInDisallowConditionalTypesContext(() =>\n        this.tsParseNonConditionalType(),\n      );\n\n      this.expect(tt.question);\n      node.trueType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      this.expect(tt.colon);\n      node.falseType = this.tsInAllowConditionalTypesContext(() =>\n        this.tsParseType(),\n      );\n\n      return this.finishNode(node, \"TSConditionalType\");\n    }\n\n    isAbstractConstructorSignature(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._new\n      );\n    }\n\n    tsParseNonConditionalType(): N.TsType {\n      if (this.tsIsStartOfFunctionType()) {\n        return this.tsParseFunctionOrConstructorType(\"TSFunctionType\");\n      }\n      if (this.match(tt._new)) {\n        // As in `new () => Date`\n        return this.tsParseFunctionOrConstructorType(\"TSConstructorType\");\n      } else if (this.isAbstractConstructorSignature()) {\n        // As in `abstract new () => Date`\n        return this.tsParseFunctionOrConstructorType(\n          \"TSConstructorType\",\n          /* abstract */ true,\n        );\n      }\n      return this.tsParseUnionTypeOrHigher();\n    }\n\n    tsParseTypeAssertion(): N.TsTypeAssertion {\n      if (this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")) {\n        this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);\n      }\n\n      const node = this.startNode<N.TsTypeAssertion>();\n      node.typeAnnotation = this.tsInType(() => {\n        this.next(); // \"<\"\n        return this.match(tt._const)\n          ? this.tsParseTypeReference()\n          : this.tsParseType();\n      });\n      this.expect(tt.gt);\n      node.expression = this.parseMaybeUnary();\n      return this.finishNode(node, \"TSTypeAssertion\");\n    }\n\n    tsParseHeritageClause(token: \"extends\"): Array<N.TSInterfaceHeritage>;\n    tsParseHeritageClause(token: \"implements\"): Array<N.TSClassImplements>;\n    tsParseHeritageClause(\n      token: \"extends\" | \"implements\",\n    ): Array<N.TSClassImplements> | Array<N.TSInterfaceHeritage> {\n      const originalStartLoc = this.state.startLoc;\n\n      const delimitedList = this.tsParseDelimitedList(\n        \"HeritageClauseElement\",\n        () => {\n          if (process.env.BABEL_8_BREAKING) {\n            const expression = super.parseExprSubscripts();\n            if (!tsIsEntityName(expression)) {\n              this.raise(\n                TSErrors.InvalidHeritageClauseType,\n                expression.loc.start,\n                { token },\n              );\n            }\n            const nodeType =\n              token === \"extends\" ? \"TSInterfaceHeritage\" : \"TSClassImplements\";\n            if (expression.type === \"TSInstantiationExpression\") {\n              // @ts-expect-error cast TSInstantiationExpression to TSInterfaceHeritage/TSClassImplements\n              expression.type = nodeType;\n              return expression;\n            }\n            const node = this.startNodeAtNode<\n              N.TSInterfaceHeritage | N.TSClassImplements\n            >(expression);\n            node.expression = expression;\n            // The last element can not form a TSInstantiationExpression because of the bail condition in\n            // `parseSubscript`, in this case we have to parse type arguments again\n            if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n              node.typeArguments = this.tsParseTypeArgumentsInExpression();\n            }\n            return this.finishNode(node, nodeType);\n          } else {\n            const node = this.startNode<\n              N.TSInterfaceHeritage | N.TSClassImplements\n            >();\n            // @ts-expect-error Babel 7 vs Babel 8\n            node.expression = this.tsParseEntityName(\n              tsParseEntityNameFlags.ALLOW_RESERVED_WORDS |\n                tsParseEntityNameFlags.LEADING_THIS_AS_IDENTIFIER,\n            );\n            if (this.match(tt.lt)) {\n              // @ts-expect-error Babel 7 vs Babel 8\n              node.typeParameters = this.tsParseTypeArguments();\n            }\n\n            return this.finishNode(\n              node,\n              // @ts-expect-error Babel 7 vs Babel 8\n              \"TSExpressionWithTypeArguments\",\n            );\n          }\n        },\n      );\n\n      if (!delimitedList.length) {\n        this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {\n          token,\n        });\n      }\n\n      return delimitedList as\n        | Array<N.TSClassImplements>\n        | Array<N.TSInterfaceHeritage>;\n    }\n\n    tsParseInterfaceDeclaration(\n      node: Undone<N.TsInterfaceDeclaration>,\n      properties: {\n        declare?: true;\n      } = {},\n    ): N.TsInterfaceDeclaration | null {\n      if (this.hasFollowingLineBreak()) return null;\n      this.expectContextual(tt._interface);\n      if (properties.declare) node.declare = true;\n      if (tokenIsIdentifier(this.state.type)) {\n        node.id = this.parseIdentifier();\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);\n      } else {\n        node.id = null;\n        this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);\n      }\n\n      node.typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (this.eat(tt._extends)) {\n        node.extends = this.tsParseHeritageClause(\"extends\");\n      }\n      const body = this.startNode<N.TSInterfaceBody>();\n      body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));\n      node.body = this.finishNode(body, \"TSInterfaceBody\");\n      return this.finishNode(node, \"TSInterfaceDeclaration\");\n    }\n\n    tsParseTypeAliasDeclaration(\n      node: N.TsTypeAliasDeclaration,\n    ): N.TsTypeAliasDeclaration {\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);\n\n      node.typeAnnotation = this.tsInType(() => {\n        node.typeParameters = this.tsTryParseTypeParameters(\n          this.tsParseInOutModifiers,\n        );\n\n        this.expect(tt.eq);\n\n        if (\n          this.isContextual(tt._intrinsic) &&\n          this.lookahead().type !== tt.dot\n        ) {\n          const node = this.startNode<N.TsKeywordType>();\n          this.next();\n          return this.finishNode(node, \"TSIntrinsicKeyword\");\n        }\n\n        return this.tsParseType();\n      });\n\n      this.semicolon();\n      return this.finishNode(node, \"TSTypeAliasDeclaration\");\n    }\n\n    // Parse in top level normal context if we are in a JSX context\n    tsInTopLevelContext<T>(cb: () => T): T {\n      if (this.curContext() !== tc.brace) {\n        const oldContext = this.state.context;\n        this.state.context = [oldContext[0]];\n        try {\n          return cb();\n        } finally {\n          this.state.context = oldContext;\n        }\n      } else {\n        return cb();\n      }\n    }\n\n    /**\n     * Runs `cb` in a type context.\n     * This should be called one token *before* the first type token,\n     * so that the call to `next()` is run in type context.\n     */\n    tsInType<T>(cb: () => T): T {\n      const oldInType = this.state.inType;\n      this.state.inType = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inType = oldInType;\n      }\n    }\n\n    tsInDisallowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = true;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsInAllowConditionalTypesContext<T>(cb: () => T): T {\n      const oldInDisallowConditionalTypesContext =\n        this.state.inDisallowConditionalTypesContext;\n      this.state.inDisallowConditionalTypesContext = false;\n      try {\n        return cb();\n      } finally {\n        this.state.inDisallowConditionalTypesContext =\n          oldInDisallowConditionalTypesContext;\n      }\n    }\n\n    tsEatThenParseType(token: TokenType): N.TsType | undefined {\n      if (this.match(token)) {\n        return this.tsNextThenParseType();\n      }\n    }\n\n    tsExpectThenParseType(token: TokenType): N.TsType {\n      return this.tsInType(() => {\n        this.expect(token);\n        return this.tsParseType();\n      });\n    }\n\n    tsNextThenParseType(): N.TsType {\n      return this.tsInType(() => {\n        this.next();\n        return this.tsParseType();\n      });\n    }\n\n    tsParseEnumMember(): N.TsEnumMember {\n      const node = this.startNode<N.TsEnumMember>();\n      // Computed property names are grammar errors in an enum, so accept just string literal or identifier.\n      node.id = this.match(tt.string)\n        ? super.parseStringLiteral(this.state.value)\n        : this.parseIdentifier(/* liberal */ true);\n      if (this.eat(tt.eq)) {\n        node.initializer = super.parseMaybeAssignAllowIn();\n      }\n      return this.finishNode(node, \"TSEnumMember\");\n    }\n\n    tsParseEnumDeclaration(\n      node: Undone<N.TsEnumDeclaration>,\n      properties: {\n        const?: true;\n        declare?: true;\n      } = {},\n    ): N.TsEnumDeclaration {\n      if (properties.const) node.const = true;\n      if (properties.declare) node.declare = true;\n      this.expectContextual(tt._enum);\n      node.id = this.parseIdentifier();\n      this.checkIdentifier(\n        node.id,\n        node.const ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM,\n      );\n\n      if (process.env.BABEL_8_BREAKING) {\n        node.body = this.tsParseEnumBody();\n      } else {\n        this.expect(tt.braceL);\n        node.members = this.tsParseDelimitedList(\n          \"EnumMembers\",\n          this.tsParseEnumMember.bind(this),\n        );\n        this.expect(tt.braceR);\n      }\n      return this.finishNode(node, \"TSEnumDeclaration\");\n    }\n\n    tsParseEnumBody(): N.TsEnumBody {\n      const node = this.startNode<N.TsEnumBody>();\n      this.expect(tt.braceL);\n      node.members = this.tsParseDelimitedList(\n        \"EnumMembers\",\n        this.tsParseEnumMember.bind(this),\n      );\n      this.expect(tt.braceR);\n      return this.finishNode(node, \"TSEnumBody\");\n    }\n\n    tsParseModuleBlock(): N.TsModuleBlock {\n      const node = this.startNode<N.TsModuleBlock>();\n      this.scope.enter(ScopeFlag.OTHER);\n\n      this.expect(tt.braceL);\n      // Inside of a module block is considered \"top-level\", meaning it can have imports and exports.\n      super.parseBlockOrModuleBlockBody(\n        (node.body = []),\n        /* directives */ undefined,\n        /* topLevel */ true,\n        /* end */ tt.braceR,\n      );\n      this.scope.exit();\n      return this.finishNode(node, \"TSModuleBlock\");\n    }\n\n    tsParseModuleOrNamespaceDeclaration(\n      node: Undone<N.TsModuleDeclaration>,\n      nested: boolean = false,\n    ): N.TsModuleDeclaration {\n      node.id = process.env.BABEL_8_BREAKING\n        ? this.tsParseEntityName(tsParseEntityNameFlags.ALLOW_RESERVED_WORDS)\n        : this.parseIdentifier();\n\n      if (\n        process.env.BABEL_8_BREAKING ? node.id.type === \"Identifier\" : !nested\n      ) {\n        // @ts-expect-error checked above\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);\n      }\n\n      if (!process.env.BABEL_8_BREAKING && this.eat(tt.dot)) {\n        const inner = this.startNode<N.TsModuleDeclaration>();\n        this.tsParseModuleOrNamespaceDeclaration(inner, true);\n        // @ts-expect-error Fixme: refine typings\n        node.body = inner;\n      } else {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      }\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseAmbientExternalModuleDeclaration(\n      node: N.TsModuleDeclaration,\n    ): N.TsModuleDeclaration {\n      if (this.isContextual(tt._global)) {\n        node.kind = \"global\";\n        if (!process.env.BABEL_8_BREAKING) {\n          node.global = true;\n        }\n        node.id = this.parseIdentifier();\n      } else if (this.match(tt.string)) {\n        node.kind = \"module\";\n        node.id = super.parseStringLiteral(this.state.value);\n      } else {\n        this.unexpected();\n      }\n      if (this.match(tt.braceL)) {\n        this.scope.enter(ScopeFlag.TS_MODULE);\n        this.prodParam.enter(ParamKind.PARAM);\n        node.body = this.tsParseModuleBlock();\n        this.prodParam.exit();\n        this.scope.exit();\n      } else {\n        this.semicolon();\n      }\n\n      return this.finishNode(node, \"TSModuleDeclaration\");\n    }\n\n    tsParseImportEqualsDeclaration(\n      node: Undone<N.TsImportEqualsDeclaration>,\n      maybeDefaultIdentifier?: N.Identifier | null,\n      isExport?: boolean,\n    ): N.TsImportEqualsDeclaration {\n      if (!process.env.BABEL_8_BREAKING) {\n        node.isExport = isExport || false;\n      }\n      node.id = maybeDefaultIdentifier || this.parseIdentifier();\n      this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);\n      this.expect(tt.eq);\n      const moduleReference = this.tsParseModuleReference();\n      if (\n        node.importKind === \"type\" &&\n        moduleReference.type !== \"TSExternalModuleReference\"\n      ) {\n        this.raise(TSErrors.ImportAliasHasImportType, moduleReference);\n      }\n      node.moduleReference = moduleReference;\n      this.semicolon();\n      return this.finishNode(node, \"TSImportEqualsDeclaration\");\n    }\n\n    tsIsExternalModuleReference(): boolean {\n      return (\n        this.isContextual(tt._require) &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      );\n    }\n\n    tsParseModuleReference(): N.TsModuleReference {\n      return this.tsIsExternalModuleReference()\n        ? this.tsParseExternalModuleReference()\n        : this.tsParseEntityName(tsParseEntityNameFlags.NONE);\n    }\n\n    tsParseExternalModuleReference(): N.TsExternalModuleReference {\n      const node = this.startNode<N.TsExternalModuleReference>();\n      this.expectContextual(tt._require);\n      this.expect(tt.parenL);\n      if (!this.match(tt.string)) {\n        this.unexpected();\n      }\n      // For compatibility to estree we cannot call parseLiteral directly here\n      node.expression = super.parseExprAtom() as N.StringLiteral;\n      this.expect(tt.parenR);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node, \"TSExternalModuleReference\");\n    }\n\n    // Utilities\n\n    tsLookAhead<T>(f: () => T): T {\n      const state = this.state.clone();\n      const res = f();\n      this.state = state;\n      return res;\n    }\n\n    tsTryParseAndCatch<T extends N.NodeBase | undefined | null>(\n      f: () => T,\n    ): T | undefined | null {\n      const result = this.tryParse(\n        abort =>\n          // @ts-expect-error todo(flow->ts)\n          f() || abort(),\n      );\n\n      if (result.aborted || !result.node) return;\n      if (result.error) this.state = result.failState;\n      // @ts-expect-error refine typings\n      return result.node;\n    }\n\n    tsTryParse<T>(f: () => T | undefined | false): T | undefined {\n      const state = this.state.clone();\n      const result = f();\n      if (result !== undefined && result !== false) {\n        return result;\n      }\n      this.state = state;\n    }\n\n    tsTryParseDeclare(nany: any) {\n      if (this.isLineTerminator()) {\n        return;\n      }\n      let startType = this.state.type;\n      let kind: \"let\" | null;\n\n      if (this.isContextual(tt._let)) {\n        startType = tt._var;\n        kind = \"let\";\n      }\n\n      return this.tsInAmbientContext(() => {\n        switch (startType) {\n          case tt._function:\n            nany.declare = true;\n            return super.parseFunctionStatement(\n              nany,\n              /* async */ false,\n              /* isHangingDeclaration */ false,\n            );\n          case tt._class:\n            // While this is also set by tsParseExpressionStatement, we need to set it\n            // before parsing the class declaration to know how to register it in the scope.\n            nany.declare = true;\n            return this.parseClass(\n              nany as Undone<N.ClassDeclaration>,\n              /* isStatement */ true,\n              /* optionalId */ false,\n            );\n          case tt._enum:\n            return this.tsParseEnumDeclaration(nany, { declare: true });\n          case tt._global:\n            return this.tsParseAmbientExternalModuleDeclaration(nany);\n          case tt._const:\n          case tt._var:\n            if (!this.match(tt._const) || !this.isLookaheadContextual(\"enum\")) {\n              nany.declare = true;\n              return this.parseVarStatement(\n                nany,\n                kind || this.state.value,\n                true,\n              );\n            }\n\n            // `const enum = 0;` not allowed because \"enum\" is a strict mode reserved word.\n            this.expect(tt._const);\n            return this.tsParseEnumDeclaration(nany, {\n              const: true,\n              declare: true,\n            });\n          case tt._interface: {\n            const result = this.tsParseInterfaceDeclaration(nany, {\n              declare: true,\n            });\n            if (result) return result;\n          }\n          // fallthrough\n          default:\n            if (tokenIsIdentifier(startType)) {\n              return this.tsParseDeclaration(\n                nany,\n                this.state.value,\n                /* next */ true,\n                /* decorators */ null,\n              );\n            }\n        }\n      });\n    }\n\n    // Note: this won't be called unless the keyword is allowed in `shouldParseExportDeclaration`.\n    tsTryParseExportDeclaration(): N.Declaration | undefined {\n      return this.tsParseDeclaration(\n        this.startNode(),\n        this.state.value,\n        /* next */ true,\n        /* decorators */ null,\n      );\n    }\n\n    tsParseExpressionStatement(\n      node: Undone<N.TsModuleDeclaration>,\n      expr: N.Identifier,\n      decorators: N.Decorator[] | null,\n    ): N.Declaration | undefined {\n      switch (expr.name) {\n        case \"declare\": {\n          const declaration = this.tsTryParseDeclare(node);\n          if (declaration) {\n            declaration.declare = true;\n          }\n          return declaration;\n        }\n        case \"global\":\n          // `global { }` (with no `declare`) may appear inside an ambient module declaration.\n          // Would like to use tsParseAmbientExternalModuleDeclaration here, but already ran past \"global\".\n          if (this.match(tt.braceL)) {\n            this.scope.enter(ScopeFlag.TS_MODULE);\n            this.prodParam.enter(ParamKind.PARAM);\n            const mod = node;\n            mod.kind = \"global\";\n            if (!process.env.BABEL_8_BREAKING) {\n              node.global = true;\n            }\n            mod.id = expr;\n            mod.body = this.tsParseModuleBlock();\n            this.scope.exit();\n            this.prodParam.exit();\n            return this.finishNode(mod, \"TSModuleDeclaration\");\n          }\n          break;\n\n        default:\n          return this.tsParseDeclaration(\n            node,\n            expr.name,\n            /* next */ false,\n            decorators,\n          );\n      }\n    }\n\n    // Common to tsTryParseDeclare, tsTryParseExportDeclaration, and tsParseExpressionStatement.\n    tsParseDeclaration(\n      node: any,\n      value: string,\n      next: boolean,\n      decorators: N.Decorator[] | null,\n    ) {\n      // no declaration apart from enum can be followed by a line break.\n      switch (value) {\n        case \"abstract\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            (this.match(tt._class) || tokenIsIdentifier(this.state.type))\n          ) {\n            return this.tsParseAbstractDeclaration(node, decorators);\n          }\n          break;\n\n        case \"module\":\n          if (this.tsCheckLineTerminator(next)) {\n            if (this.match(tt.string)) {\n              return this.tsParseAmbientExternalModuleDeclaration(node);\n            } else if (tokenIsIdentifier(this.state.type)) {\n              node.kind = \"module\";\n              return this.tsParseModuleOrNamespaceDeclaration(node);\n            }\n          }\n          break;\n\n        case \"namespace\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            node.kind = \"namespace\";\n            return this.tsParseModuleOrNamespaceDeclaration(node);\n          }\n          break;\n\n        case \"type\":\n          if (\n            this.tsCheckLineTerminator(next) &&\n            tokenIsIdentifier(this.state.type)\n          ) {\n            return this.tsParseTypeAliasDeclaration(node);\n          }\n          break;\n      }\n    }\n\n    tsCheckLineTerminator(next: boolean) {\n      if (next) {\n        if (this.hasFollowingLineBreak()) return false;\n        this.next();\n        return true;\n      }\n      return !this.isLineTerminator();\n    }\n\n    tsTryParseGenericAsyncArrowFunction(\n      startLoc: Position,\n    ): N.ArrowFunctionExpression | undefined {\n      if (!this.match(tt.lt)) return;\n\n      const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n      this.state.maybeInArrowParameters = true;\n\n      const res: Undone<N.ArrowFunctionExpression> | undefined =\n        this.tsTryParseAndCatch(() => {\n          const node = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n          node.typeParameters = this.tsParseTypeParameters(\n            this.tsParseConstModifier,\n          );\n          // Don't use overloaded parseFunctionParams which would look for \"<\" again.\n          super.parseFunctionParams(node);\n          node.returnType = this.tsTryParseTypeOrTypePredicateAnnotation();\n          this.expect(tt.arrow);\n          return node;\n        });\n\n      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n      if (!res) return;\n\n      return super.parseArrowExpression(\n        res,\n        /* params are already set */ null,\n        /* async */ true,\n      );\n    }\n\n    // Used when parsing type arguments from ES or JSX productions, where the first token\n    // has been created without state.inType. Thus we need to re-scan the lt token.\n    tsParseTypeArgumentsInExpression():\n      | N.TsTypeParameterInstantiation\n      | undefined {\n      if (this.reScan_lt() !== tt.lt) return;\n      return this.tsParseTypeArguments();\n    }\n\n    tsParseTypeArguments(): N.TsTypeParameterInstantiation {\n      const node = this.startNode<N.TsTypeParameterInstantiation>();\n      node.params = this.tsInType(() =>\n        this.tsInTopLevelContext(() => {\n          this.expect(tt.lt);\n          return this.tsParseDelimitedList(\n            \"TypeParametersOrArguments\",\n            this.tsParseType.bind(this),\n          );\n        }),\n      );\n      if (node.params.length === 0) {\n        this.raise(TSErrors.EmptyTypeArguments, node);\n      } else if (!this.state.inType && this.curContext() === tc.brace) {\n        // rescan `>` when we are no longer in type context and JSX parsing context\n        // since it was tokenized when `inType` is `true`.\n        this.reScan_lt_gt();\n      }\n      this.expect(tt.gt);\n      return this.finishNode(node, \"TSTypeParameterInstantiation\");\n    }\n\n    tsIsDeclarationStart(): boolean {\n      return tokenIsTSDeclarationStart(this.state.type);\n    }\n\n    // ======================================================\n    // OVERRIDES\n    // ======================================================\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.tsIsDeclarationStart()) return false;\n      return super.isExportDefaultSpecifier();\n    }\n\n    parseBindingElement(\n      flags: ParseBindingListFlags,\n      decorators: N.Decorator[],\n    ): N.Pattern | N.TSParameterProperty {\n      // Store original location to include modifiers in range\n      const startLoc = this.state.startLoc;\n\n      const modified: ModifierBase = {};\n      this.tsParseModifiers(\n        {\n          allowedModifiers: [\n            \"public\",\n            \"private\",\n            \"protected\",\n            \"override\",\n            \"readonly\",\n          ],\n        },\n        modified,\n      );\n      const accessibility = modified.accessibility;\n      const override = modified.override;\n      const readonly = modified.readonly;\n      if (\n        !(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) &&\n        (accessibility || readonly || override)\n      ) {\n        this.raise(TSErrors.UnexpectedParameterModifier, startLoc);\n      }\n\n      const left = this.parseMaybeDefault();\n      if (flags & ParseBindingListFlags.IS_FUNCTION_PARAMS) {\n        this.parseFunctionParamType(left);\n      }\n      const elt = this.parseMaybeDefault(left.loc.start, left);\n      if (accessibility || readonly || override) {\n        const pp = this.startNodeAt<N.TSParameterProperty>(startLoc);\n        if (decorators.length) {\n          pp.decorators = decorators;\n        }\n        if (accessibility) pp.accessibility = accessibility;\n        if (readonly) pp.readonly = readonly;\n        if (override) pp.override = override;\n        if (elt.type !== \"Identifier\" && elt.type !== \"AssignmentPattern\") {\n          this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);\n        }\n        pp.parameter = elt as any as N.Identifier | N.AssignmentPattern;\n        return this.finishNode(pp, \"TSParameterProperty\");\n      }\n\n      if (decorators.length) {\n        left.decorators = decorators;\n      }\n\n      return elt;\n    }\n\n    isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n      return (\n        (node.type === \"TSParameterProperty\" &&\n          super.isSimpleParameter(node.parameter)) ||\n        super.isSimpleParameter(node)\n      );\n    }\n\n    tsDisallowOptionalPattern(node: Undone<N.Function>) {\n      for (const param of node.params) {\n        if (\n          param.type !== \"Identifier\" &&\n          (param as any).optional &&\n          !this.state.isAmbientContext\n        ) {\n          this.raise(TSErrors.PatternIsOptional, param);\n        }\n      }\n    }\n\n    setArrowFunctionParameters(\n      node: Undone<N.ArrowFunctionExpression>,\n      params: N.Expression[],\n      trailingCommaLoc?: Position | null,\n    ): void {\n      super.setArrowFunctionParameters(node, params, trailingCommaLoc);\n      this.tsDisallowOptionalPattern(node);\n    }\n\n    parseFunctionBodyAndFinish<\n      T extends\n        | N.Function\n        | N.TSDeclareMethod\n        | N.TSDeclareFunction\n        | N.ClassPrivateMethod,\n    >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeOrTypePredicateAnnotation(tt.colon);\n      }\n\n      const bodilessType =\n        type === \"FunctionDeclaration\"\n          ? \"TSDeclareFunction\"\n          : type === \"ClassMethod\" || type === \"ClassPrivateMethod\"\n            ? \"TSDeclareMethod\"\n            : undefined;\n      if (bodilessType && !this.match(tt.braceL) && this.isLineTerminator()) {\n        return this.finishNode(node, bodilessType);\n      }\n      if (bodilessType === \"TSDeclareFunction\" && this.state.isAmbientContext) {\n        this.raise(TSErrors.DeclareFunctionHasImplementation, node);\n        if ((node as Undone<N.FunctionDeclaration>).declare) {\n          return super.parseFunctionBodyAndFinish(node, bodilessType, isMethod);\n        }\n      }\n      this.tsDisallowOptionalPattern(node);\n\n      return super.parseFunctionBodyAndFinish(node, type, isMethod);\n    }\n\n    registerFunctionStatementId(node: N.Function): void {\n      if (!node.body && node.id) {\n        // Function ids are validated after parsing their body.\n        // For bodiless function, we need to do it here.\n        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);\n      } else {\n        super.registerFunctionStatementId(node);\n      }\n    }\n\n    tsCheckForInvalidTypeCasts(items: Array<N.Expression | N.SpreadElement>) {\n      items.forEach(node => {\n        if (node?.type === \"TSTypeCastExpression\") {\n          this.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);\n        }\n      });\n    }\n\n    toReferencedList(\n      exprList: Array<N.Expression | undefined | null>,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      isInParens?: boolean,\n    ): Array<N.Expression | undefined | null> {\n      // Handles invalid scenarios like: `f(a:b)`, `(a:b);`, and `(a:b,c:d)`.\n      //\n      // Note that `f<T>(a:b)` goes through a different path and is handled\n      // in `parseSubscript` directly.\n      this.tsCheckForInvalidTypeCasts(exprList);\n      return exprList;\n    }\n\n    parseArrayLike(\n      close: TokenType,\n      canBePattern: boolean,\n      isTuple: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.ArrayExpression | N.TupleExpression {\n      const node = super.parseArrayLike(\n        close,\n        canBePattern,\n        isTuple,\n        refExpressionErrors,\n      );\n\n      if (node.type === \"ArrayExpression\") {\n        this.tsCheckForInvalidTypeCasts(node.elements);\n      }\n\n      return node;\n    }\n\n    parseSubscript(\n      base: N.Expression,\n\n      startLoc: Position,\n      noCalls: boolean | undefined | null,\n      state: N.ParseSubscriptState,\n    ): N.Expression {\n      if (!this.hasPrecedingLineBreak() && this.match(tt.bang)) {\n        // When ! is consumed as a postfix operator (non-null assertion),\n        // disallow JSX tag forming after. e.g. When parsing `p! < n.p!`\n        // `<n.p` can not be a start of JSX tag\n        this.state.canStartJSXElement = false;\n        this.next();\n\n        const nonNullExpression =\n          this.startNodeAt<N.TsNonNullExpression>(startLoc);\n        nonNullExpression.expression = base;\n        return this.finishNode(nonNullExpression, \"TSNonNullExpression\");\n      }\n\n      let isOptionalCall = false;\n      if (\n        this.match(tt.questionDot) &&\n        this.lookaheadCharCode() === charCodes.lessThan\n      ) {\n        if (noCalls) {\n          state.stop = true;\n          return base;\n        }\n        state.optionalChainMember = isOptionalCall = true;\n        this.next();\n      }\n\n      // handles 'f<<T>'\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        let missingParenErrorLoc;\n        // tsTryParseAndCatch is expensive, so avoid if not necessary.\n        // There are number of things we are going to \"maybe\" parse, like type arguments on\n        // tagged template expressions. If any of them fail, walk it back and continue.\n        const result = this.tsTryParseAndCatch(() => {\n          if (!noCalls && this.atPossibleAsyncArrow(base)) {\n            // Almost certainly this is a generic async function `async <T>() => ...\n            // But it might be a call with a type argument `async<T>();`\n            const asyncArrowFn =\n              this.tsTryParseGenericAsyncArrowFunction(startLoc);\n            if (asyncArrowFn) {\n              return asyncArrowFn;\n            }\n          }\n\n          const typeArguments = this.tsParseTypeArgumentsInExpression();\n          if (!typeArguments) return;\n\n          if (isOptionalCall && !this.match(tt.parenL)) {\n            missingParenErrorLoc = this.state.curPosition();\n            return;\n          }\n\n          if (tokenIsTemplate(this.state.type)) {\n            const result = super.parseTaggedTemplateExpression(\n              base,\n              startLoc,\n              state,\n            );\n            if (process.env.BABEL_8_BREAKING) {\n              result.typeArguments = typeArguments;\n            } else {\n              result.typeParameters = typeArguments;\n            }\n            return result;\n          }\n\n          if (!noCalls && this.eat(tt.parenL)) {\n            const node = this.startNodeAt<\n              N.CallExpression | N.OptionalCallExpression\n            >(startLoc);\n            node.callee = base;\n            // @ts-expect-error (won't be any undefined arguments)\n            node.arguments = this.parseCallExpressionArguments(tt.parenR);\n\n            // Handles invalid case: `f<T>(a:b)`\n            this.tsCheckForInvalidTypeCasts(node.arguments);\n\n            if (process.env.BABEL_8_BREAKING) {\n              node.typeArguments = typeArguments;\n            } else {\n              node.typeParameters = typeArguments;\n            }\n\n            if (state.optionalChainMember) {\n              (node as Undone<N.OptionalCallExpression>).optional =\n                isOptionalCall;\n            }\n\n            return this.finishCallExpression(node, state.optionalChainMember);\n          }\n\n          const tokenType = this.state.type;\n          if (\n            // a<b>>c is not (a<b>)>c, but a<(b>>c)\n            tokenType === tt.gt ||\n            // a<b>>>c is not (a<b>)>>c, but a<(b>>>c)\n            tokenType === tt.bitShiftR ||\n            // a<b>c is (a<b)>c\n            (tokenType !== tt.parenL &&\n              tokenCanStartExpression(tokenType) &&\n              !this.hasPrecedingLineBreak())\n          ) {\n            // Bail out.\n            return;\n          }\n\n          const node = this.startNodeAt<N.TsInstantiationExpression>(startLoc);\n          node.expression = base;\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n          return this.finishNode(node, \"TSInstantiationExpression\");\n        });\n\n        if (missingParenErrorLoc) {\n          this.unexpected(missingParenErrorLoc, tt.parenL);\n        }\n\n        if (result) {\n          if (\n            result.type === \"TSInstantiationExpression\" &&\n            (this.match(tt.dot) ||\n              (this.match(tt.questionDot) &&\n                this.lookaheadCharCode() !== charCodes.leftParenthesis))\n          ) {\n            this.raise(\n              TSErrors.InvalidPropertyAccessAfterInstantiationExpression,\n              this.state.startLoc,\n            );\n          }\n          return result;\n        }\n      }\n\n      return super.parseSubscript(base, startLoc, noCalls, state);\n    }\n\n    parseNewCallee(node: N.NewExpression): void {\n      super.parseNewCallee(node);\n\n      const { callee } = node;\n      if (\n        callee.type === \"TSInstantiationExpression\" &&\n        !callee.extra?.parenthesized\n      ) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.typeArguments = callee.typeArguments;\n        } else {\n          node.typeParameters = callee.typeParameters;\n        }\n        node.callee = callee.expression;\n      }\n    }\n\n    parseExprOp(\n      left: N.Expression,\n      leftStartLoc: Position,\n      minPrec: number,\n    ): N.Expression {\n      let isSatisfies: boolean;\n      if (\n        tokenOperatorPrecedence(tt._in) > minPrec &&\n        !this.hasPrecedingLineBreak() &&\n        (this.isContextual(tt._as) ||\n          (isSatisfies = this.isContextual(tt._satisfies)))\n      ) {\n        const node = this.startNodeAt<\n          N.TsAsExpression | N.TsSatisfiesExpression\n        >(leftStartLoc);\n        node.expression = left;\n        node.typeAnnotation = this.tsInType(() => {\n          this.next(); // \"as\" or \"satisfies\"\n          if (this.match(tt._const)) {\n            if (isSatisfies) {\n              this.raise(Errors.UnexpectedKeyword, this.state.startLoc, {\n                keyword: \"const\",\n              });\n            }\n            return this.tsParseTypeReference();\n          }\n\n          return this.tsParseType();\n        });\n        this.finishNode(\n          node,\n          isSatisfies ? \"TSSatisfiesExpression\" : \"TSAsExpression\",\n        );\n        // rescan `<`, `>` because they were scanned when this.state.inType was true\n        this.reScan_lt_gt();\n        return this.parseExprOp(\n          // @ts-expect-error todo(flow->ts)\n          node,\n          leftStartLoc,\n          minPrec,\n        );\n      }\n\n      return super.parseExprOp(left, leftStartLoc, minPrec);\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ): void {\n      // Strict mode words may be allowed as in `declare namespace N { const static: number; }`.\n      // And we have a type checker anyway, so don't bother having the parser do it.\n      if (!this.state.isAmbientContext) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    checkImportReflection(node: Undone<N.ImportDeclaration>) {\n      super.checkImportReflection(node);\n      if (node.module && node.importKind !== \"value\") {\n        this.raise(\n          TSErrors.ImportReflectionHasImportType,\n          node.specifiers[0].loc.start,\n        );\n      }\n    }\n\n    /*\n    Don't bother doing this check in TypeScript code because:\n    1. We may have a nested export statement with the same name:\n      export const x = 0;\n      export namespace N {\n        export const x = 1;\n      }\n    2. We have a type checker to warn us about this sort of thing.\n    */\n    checkDuplicateExports() {}\n\n    isPotentialImportPhase(isExport: boolean): boolean {\n      if (super.isPotentialImportPhase(isExport)) return true;\n      if (this.isContextual(tt._type)) {\n        const ch = this.lookaheadCharCode();\n        return isExport\n          ? ch === charCodes.leftCurlyBrace || ch === charCodes.asterisk\n          : ch !== charCodes.equalsTo;\n      }\n      return !isExport && this.isContextual(tt._typeof);\n    }\n\n    applyImportPhase(\n      node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n      isExport: boolean,\n      phase: string | null,\n      loc?: Position,\n    ): void {\n      super.applyImportPhase(node, isExport, phase, loc);\n      if (isExport) {\n        (node as N.ExportNamedDeclaration).exportKind =\n          phase === \"type\" ? \"type\" : \"value\";\n      } else {\n        (node as N.ImportDeclaration).importKind =\n          phase === \"type\" || phase === \"typeof\" ? phase : \"value\";\n      }\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    ): N.AnyImport {\n      if (this.match(tt.string)) {\n        node.importKind = \"value\";\n        return super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      let importNode;\n      if (\n        tokenIsIdentifier(this.state.type) &&\n        this.lookaheadCharCode() === charCodes.equalsTo\n      ) {\n        node.importKind = \"value\";\n        return this.tsParseImportEqualsDeclaration(\n          node as Undone<N.TsImportEqualsDeclaration>,\n        );\n      } else if (this.isContextual(tt._type)) {\n        const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n          node as Undone<N.ImportDeclaration>,\n          /* isExport */ false,\n        );\n        if (this.lookaheadCharCode() === charCodes.equalsTo) {\n          return this.tsParseImportEqualsDeclaration(\n            node as Undone<N.TsImportEqualsDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        } else {\n          importNode = super.parseImportSpecifiersAndAfter(\n            node as Undone<N.ImportDeclaration>,\n            maybeDefaultIdentifier,\n          );\n        }\n      } else {\n        importNode = super.parseImport(node as Undone<N.ImportDeclaration>);\n      }\n\n      // `import type` can only be used on imports with named imports or with a\n      // default import - but not both\n      if (\n        importNode.importKind === \"type\" &&\n        // @ts-expect-error refine typings\n        importNode.specifiers.length > 1 &&\n        // @ts-expect-error refine typings\n        importNode.specifiers[0].type === \"ImportDefaultSpecifier\"\n      ) {\n        this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);\n      }\n\n      return importNode;\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      if (this.match(tt._import)) {\n        // `export import A = B;`\n        const nodeImportEquals = process.env.BABEL_8_BREAKING\n          ? this.startNode<N.TsImportEqualsDeclaration>()\n          : (node as Undone<N.TsImportEqualsDeclaration>);\n        this.next(); // eat `tt._import`\n        let maybeDefaultIdentifier: N.Identifier | null = null;\n        if (\n          this.isContextual(tt._type) &&\n          // We pass false here, because we are parsing an `import ... =`\n          this.isPotentialImportPhase(/* isExport */ false)\n        ) {\n          maybeDefaultIdentifier = this.parseMaybeImportPhase(\n            nodeImportEquals,\n            /* isExport */ false,\n          );\n        } else {\n          nodeImportEquals.importKind = \"value\";\n        }\n        const declaration = this.tsParseImportEqualsDeclaration(\n          nodeImportEquals,\n          maybeDefaultIdentifier,\n          /* isExport */ true,\n        );\n        if (process.env.BABEL_8_BREAKING) {\n          (node as Undone<N.ExportNamedDeclaration>).declaration = declaration;\n          (node as Undone<N.ExportNamedDeclaration>).specifiers = [];\n          return this.finishNode(node, \"ExportNamedDeclaration\");\n        } else {\n          return declaration;\n        }\n      } else if (this.eat(tt.eq)) {\n        // `export = x;`\n        const assign = node as Undone<N.TsExportAssignment>;\n        assign.expression = super.parseExpression();\n        this.semicolon();\n        this.sawUnambiguousESM = true;\n        return this.finishNode(assign, \"TSExportAssignment\");\n      } else if (this.eatContextual(tt._as)) {\n        // `export as namespace A;`\n        const decl = node as Undone<N.TsNamespaceExportDeclaration>;\n        // See `parseNamespaceExportDeclaration` in TypeScript's own parser\n        this.expectContextual(tt._namespace);\n        decl.id = this.parseIdentifier();\n        this.semicolon();\n        return this.finishNode(decl, \"TSNamespaceExportDeclaration\");\n      } else {\n        return super.parseExport(\n          node as Undone<N.ExportAllDeclaration | N.ExportDefaultDeclaration>,\n          decorators,\n        );\n      }\n    }\n\n    isAbstractClass(): boolean {\n      return (\n        this.isContextual(tt._abstract) && this.lookahead().type === tt._class\n      );\n    }\n\n    parseExportDefaultExpression(): N.ExportDefaultDeclaration[\"declaration\"] {\n      if (this.isAbstractClass()) {\n        const cls = this.startNode<N.Class>();\n        this.next(); // Skip \"abstract\"\n        cls.abstract = true;\n        return this.parseClass(cls, true, true);\n      }\n\n      // export default interface allowed in:\n      // https://github.com/Microsoft/TypeScript/pull/16040\n      if (this.match(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(\n          this.startNode<N.TsInterfaceDeclaration>(),\n        );\n        if (result) return result;\n      }\n\n      return super.parseExportDefaultExpression();\n    }\n\n    parseVarStatement(\n      node: N.VariableDeclaration,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n      allowMissingInitializer: boolean = false,\n    ) {\n      const { isAmbientContext } = this.state;\n      const declaration = super.parseVarStatement(\n        node,\n        kind,\n        allowMissingInitializer || isAmbientContext,\n      );\n\n      if (!isAmbientContext) return declaration;\n\n      for (const { id, init } of declaration.declarations) {\n        // Empty initializer is the easy case that we want.\n        if (!init) continue;\n\n        // var and let aren't ever allowed initializers.\n        if (kind !== \"const\" || !!id.typeAnnotation) {\n          this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);\n        } else if (\n          !isValidAmbientConstInitializer(init, this.hasPlugin(\"estree\"))\n        ) {\n          this.raise(\n            TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference,\n            init,\n          );\n        }\n      }\n\n      return declaration;\n    }\n\n    parseStatementContent(\n      flags: ParseStatementFlag,\n      decorators?: N.Decorator[] | null,\n    ): N.Statement {\n      if (this.match(tt._const) && this.isLookaheadContextual(\"enum\")) {\n        const node = this.startNode<N.TsEnumDeclaration>();\n        this.expect(tt._const); // eat 'const'\n        return this.tsParseEnumDeclaration(node, { const: true });\n      }\n\n      if (this.isContextual(tt._enum)) {\n        return this.tsParseEnumDeclaration(\n          this.startNode<N.TsEnumDeclaration>(),\n        );\n      }\n\n      if (this.isContextual(tt._interface)) {\n        const result = this.tsParseInterfaceDeclaration(this.startNode());\n        if (result) return result;\n      }\n\n      return super.parseStatementContent(flags, decorators);\n    }\n\n    parseAccessModifier(): N.Accessibility | undefined | null {\n      return this.tsParseModifier([\"public\", \"protected\", \"private\"]);\n    }\n\n    tsHasSomeModifiers(member: any, modifiers: readonly TsModifier[]): boolean {\n      return modifiers.some(modifier => {\n        if (tsIsAccessModifier(modifier)) {\n          return member.accessibility === modifier;\n        }\n        return !!member[modifier];\n      });\n    }\n\n    tsIsStartOfStaticBlocks() {\n      return (\n        this.isContextual(tt._static) &&\n        this.lookaheadCharCode() === charCodes.leftCurlyBrace\n      );\n    }\n\n    parseClassMember(\n      classBody: N.ClassBody,\n      member: any,\n      state: N.ParseClassMemberState,\n    ): void {\n      const modifiers = [\n        \"declare\",\n        \"private\",\n        \"public\",\n        \"protected\",\n        \"override\",\n        \"abstract\",\n        \"readonly\",\n        \"static\",\n      ] as const;\n      this.tsParseModifiers(\n        {\n          allowedModifiers: modifiers,\n          disallowedModifiers: [\"in\", \"out\"],\n          stopOnStartOfClassStaticBlock: true,\n          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions,\n        },\n        member,\n      );\n\n      const callParseClassMemberWithIsStatic = () => {\n        if (this.tsIsStartOfStaticBlocks()) {\n          this.next(); // eat \"static\"\n          this.next(); // eat \"{\"\n          if (this.tsHasSomeModifiers(member, modifiers)) {\n            this.raise(\n              TSErrors.StaticBlockCannotHaveModifier,\n              this.state.curPosition(),\n            );\n          }\n          super.parseClassStaticBlock(classBody, member as N.StaticBlock);\n        } else {\n          this.parseClassMemberWithIsStatic(\n            classBody,\n            member,\n            state,\n            !!member.static,\n          );\n        }\n      };\n      if (member.declare) {\n        this.tsInAmbientContext(callParseClassMemberWithIsStatic);\n      } else {\n        callParseClassMemberWithIsStatic();\n      }\n    }\n\n    parseClassMemberWithIsStatic(\n      classBody: N.ClassBody,\n      member: Undone<N.ClassMember | N.TsIndexSignature>,\n      state: N.ParseClassMemberState,\n      isStatic: boolean,\n    ): void {\n      const idx = this.tsTryParseIndexSignature(\n        member as Undone<N.TsIndexSignature>,\n      );\n      if (idx) {\n        classBody.body.push(idx);\n\n        if ((member as any).abstract) {\n          this.raise(TSErrors.IndexSignatureHasAbstract, member);\n        }\n        if ((member as any).accessibility) {\n          this.raise(TSErrors.IndexSignatureHasAccessibility, member, {\n            modifier: (member as any).accessibility,\n          });\n        }\n        if ((member as any).declare) {\n          this.raise(TSErrors.IndexSignatureHasDeclare, member);\n        }\n        if ((member as any).override) {\n          this.raise(TSErrors.IndexSignatureHasOverride, member);\n        }\n\n        return;\n      }\n\n      if (!this.state.inAbstractClass && (member as any).abstract) {\n        this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);\n      }\n\n      if ((member as any).override) {\n        if (!state.hadSuperClass) {\n          this.raise(TSErrors.OverrideNotInSubClass, member);\n        }\n      }\n\n      /*:: invariant(member.type !== \"TSIndexSignature\") */\n\n      super.parseClassMemberWithIsStatic(\n        classBody,\n        member as Undone<N.ClassMember>,\n        state,\n        isStatic,\n      );\n    }\n\n    parsePostMemberNameModifiers(\n      methodOrProp: N.ClassMethod | N.ClassProperty | N.ClassPrivateProperty,\n    ): void {\n      const optional = this.eat(tt.question);\n      if (optional) methodOrProp.optional = true;\n\n      if ((methodOrProp as any).readonly && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);\n      }\n\n      if ((methodOrProp as any).declare && this.match(tt.parenL)) {\n        this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);\n      }\n    }\n\n    // Note: The reason we do this in `parseExpressionStatement` and not `parseStatement`\n    // is that e.g. `type()` is valid JS, so we must try parsing that first.\n    // If it's really a type, we will parse `type` as the statement, and can correct it here\n    // by parsing the rest.\n    // @ts-expect-error plugin overrides interfaces\n    parseExpressionStatement(\n      node: Undone<N.ExpressionStatement>,\n      expr: N.Expression,\n      decorators: N.Decorator[] | null,\n    ): N.Statement {\n      const decl =\n        expr.type === \"Identifier\"\n          ? // @ts-expect-error refine typings\n            this.tsParseExpressionStatement(node, expr, decorators)\n          : undefined;\n      return decl || super.parseExpressionStatement(node, expr, decorators);\n    }\n\n    // export type\n    // Should be true for anything parsed by `tsTryParseExportDeclaration`.\n    shouldParseExportDeclaration(): boolean {\n      if (this.tsIsDeclarationStart()) return true;\n      return super.shouldParseExportDeclaration();\n    }\n\n    // An apparent conditional expression could actually be an optional parameter in an arrow function.\n    parseConditional(\n      expr: N.Expression,\n\n      startLoc: Position,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): N.Expression {\n      if (!this.match(tt.question)) return expr;\n\n      if (this.state.maybeInArrowParameters) {\n        const nextCh = this.lookaheadCharCode();\n        // These tokens cannot start an expression, so if one of them follows\n        // ? then we are probably in an arrow function parameters list and we\n        // don't parse the conditional expression.\n        if (\n          nextCh === charCodes.comma || // (a?, b) => c\n          nextCh === charCodes.equalsTo || // (a? = b) => c\n          nextCh === charCodes.colon || // (a?: b) => c\n          nextCh === charCodes.rightParenthesis // (a?) => c\n        ) {\n          /*:: invariant(refExpressionErrors != null) */\n          this.setOptionalParametersError(refExpressionErrors);\n          return expr;\n        }\n      }\n\n      return super.parseConditional(expr, startLoc, refExpressionErrors);\n    }\n\n    // Note: These \"type casts\" are *not* valid TS expressions.\n    // But we parse them here and change them when completing the arrow function.\n    parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n      node: T,\n      startLoc: Position,\n    ): T | N.TsTypeCastExpression {\n      const newNode = super.parseParenItem(node, startLoc);\n      if (this.eat(tt.question)) {\n        (newNode as N.Identifier).optional = true;\n        // Include questionmark in location of node\n        // Don't use this.finishNode() as otherwise we might process comments twice and\n        // include already consumed parens\n        this.resetEndLocation(node);\n      }\n\n      if (this.match(tt.colon)) {\n        const typeCastNode = this.startNodeAt<N.TsTypeCastExpression>(startLoc);\n        typeCastNode.expression = node as N.Expression;\n        typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();\n\n        return this.finishNode(typeCastNode, \"TSTypeCastExpression\");\n      }\n\n      return node;\n    }\n\n    parseExportDeclaration(\n      node: N.ExportNamedDeclaration,\n    ): N.Declaration | undefined | null {\n      if (!this.state.isAmbientContext && this.isContextual(tt._declare)) {\n        return this.tsInAmbientContext(() => this.parseExportDeclaration(node));\n      }\n\n      // Store original location\n      const startLoc = this.state.startLoc;\n\n      const isDeclare = this.eatContextual(tt._declare);\n\n      if (\n        isDeclare &&\n        (this.isContextual(tt._declare) || !this.shouldParseExportDeclaration())\n      ) {\n        throw this.raise(\n          TSErrors.ExpectedAmbientAfterExportDeclare,\n          this.state.startLoc,\n        );\n      }\n\n      const isIdentifier = tokenIsIdentifier(this.state.type);\n      const declaration: N.Declaration | undefined | null =\n        (isIdentifier && this.tsTryParseExportDeclaration()) ||\n        super.parseExportDeclaration(node);\n\n      if (!declaration) return null;\n\n      if (\n        declaration.type === \"TSInterfaceDeclaration\" ||\n        declaration.type === \"TSTypeAliasDeclaration\" ||\n        isDeclare\n      ) {\n        node.exportKind = \"type\";\n      }\n\n      if (isDeclare && declaration.type !== \"TSImportEqualsDeclaration\") {\n        // Reset location to include `declare` in range\n        this.resetStartLocation(declaration, startLoc);\n\n        declaration.declare = true;\n      }\n\n      return declaration;\n    }\n\n    parseClassId(\n      node: N.Class,\n      isStatement: boolean,\n      optionalId?: boolean | null,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType?: BindingFlag,\n    ): void {\n      if ((!isStatement || optionalId) && this.isContextual(tt._implements)) {\n        return;\n      }\n\n      super.parseClassId(\n        node,\n        isStatement,\n        optionalId,\n        (node as any).declare\n          ? BindingFlag.TYPE_TS_AMBIENT\n          : BindingFlag.TYPE_CLASS,\n      );\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseInOutConstModifiers,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n    }\n\n    parseClassPropertyAnnotation(\n      node: N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty,\n    ): void {\n      if (!node.optional) {\n        if (this.eat(tt.bang)) {\n          node.definite = true;\n        } else if (this.eat(tt.question)) {\n          node.optional = true;\n        }\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) node.typeAnnotation = type;\n    }\n\n    parseClassProperty(node: N.ClassProperty): N.ClassProperty {\n      this.parseClassPropertyAnnotation(node);\n\n      if (\n        this.state.isAmbientContext &&\n        !(node.readonly && !node.typeAnnotation) &&\n        this.match(tt.eq)\n      ) {\n        this.raise(\n          TSErrors.DeclareClassFieldHasInitializer,\n          this.state.startLoc,\n        );\n      }\n      if (node.abstract && this.match(tt.eq)) {\n        const { key } = node;\n        this.raise(\n          TSErrors.AbstractPropertyHasInitializer,\n          this.state.startLoc,\n          {\n            propertyName:\n              key.type === \"Identifier\" && !node.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          },\n        );\n      }\n\n      return super.parseClassProperty(node);\n    }\n\n    parseClassPrivateProperty(\n      node: N.ClassPrivateProperty,\n    ): N.ClassPrivateProperty {\n      if (node.abstract) {\n        this.raise(TSErrors.PrivateElementHasAbstract, node);\n      }\n\n      if (node.accessibility) {\n        this.raise(TSErrors.PrivateElementHasAccessibility, node, {\n          modifier: node.accessibility,\n        });\n      }\n\n      this.parseClassPropertyAnnotation(node);\n      return super.parseClassPrivateProperty(node);\n    }\n\n    parseClassAccessorProperty(\n      node: N.ClassAccessorProperty,\n    ): N.ClassAccessorProperty {\n      this.parseClassPropertyAnnotation(node);\n      if (node.optional) {\n        this.raise(TSErrors.AccessorCannotBeOptional, node);\n      }\n      return super.parseClassAccessorProperty(node);\n    }\n\n    pushClassMethod(\n      classBody: N.ClassBody,\n      method: N.ClassMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowsDirectSuper: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters && isConstructor) {\n        this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);\n      }\n\n      // @ts-expect-error declare does not exist in ClassMethod\n      const { declare = false, kind } = method;\n\n      if (declare && (kind === \"get\" || kind === \"set\")) {\n        this.raise(TSErrors.DeclareAccessor, method, { kind });\n      }\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassMethod(\n        classBody,\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    }\n\n    pushClassPrivateMethod(\n      classBody: N.ClassBody,\n      method: N.ClassPrivateMethod,\n      isGenerator: boolean,\n      isAsync: boolean,\n    ): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) method.typeParameters = typeParameters;\n      super.pushClassPrivateMethod(classBody, method, isGenerator, isAsync);\n    }\n\n    declareClassPrivateMethodInScope(\n      node: N.ClassPrivateMethod | N.TSDeclareMethod,\n      kind: number,\n    ) {\n      if (node.type === \"TSDeclareMethod\") return;\n      // This happens when using the \"estree\" plugin.\n      if (\n        (node as N.Node).type === \"MethodDefinition\" &&\n        !Object.hasOwn(\n          (node as unknown as N.EstreeMethodDefinition).value,\n          \"body\",\n        )\n      ) {\n        return;\n      }\n\n      super.declareClassPrivateMethodInScope(node, kind);\n    }\n\n    parseClassSuper(node: N.Class): void {\n      super.parseClassSuper(node);\n      // handle `extends f<<T>\n      if (node.superClass && (this.match(tt.lt) || this.match(tt.bitShiftL))) {\n        if (process.env.BABEL_8_BREAKING) {\n          node.superTypeArguments = this.tsParseTypeArgumentsInExpression();\n        } else {\n          node.superTypeParameters = this.tsParseTypeArgumentsInExpression();\n        }\n      }\n      if (this.eatContextual(tt._implements)) {\n        node.implements = this.tsParseHeritageClause(\"implements\");\n      }\n    }\n\n    parseObjPropValue<T extends N.ObjectMember>(\n      prop: Undone<T>,\n      startLoc: Position | undefined | null,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isPattern: boolean,\n      isAccessor: boolean,\n      refExpressionErrors?: ExpressionErrors | null,\n    ): T {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) prop.typeParameters = typeParameters;\n\n      return super.parseObjPropValue(\n        prop,\n\n        startLoc,\n        isGenerator,\n        isAsync,\n        isPattern,\n        isAccessor,\n        refExpressionErrors,\n      );\n    }\n\n    parseFunctionParams(node: N.Function, isConstructor: boolean): void {\n      const typeParameters = this.tsTryParseTypeParameters(\n        this.tsParseConstModifier,\n      );\n      if (typeParameters) node.typeParameters = typeParameters;\n      super.parseFunctionParams(node, isConstructor);\n    }\n\n    // `let x: number;`\n    parseVarId(\n      decl: N.VariableDeclarator,\n      kind: \"var\" | \"let\" | \"const\" | \"using\",\n    ): void {\n      super.parseVarId(decl, kind);\n      if (\n        decl.id.type === \"Identifier\" &&\n        !this.hasPrecedingLineBreak() &&\n        this.eat(tt.bang)\n      ) {\n        decl.definite = true;\n      }\n\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) {\n        decl.id.typeAnnotation = type;\n        this.resetEndLocation(decl.id); // set end position to end of type\n      }\n    }\n\n    // parse the return type of an async arrow function - let foo = (async (): number => {});\n    parseAsyncArrowFromCallExpression(\n      node: N.ArrowFunctionExpression,\n      call: N.CallExpression,\n    ): N.ArrowFunctionExpression {\n      if (this.match(tt.colon)) {\n        node.returnType = this.tsParseTypeAnnotation();\n      }\n      return super.parseAsyncArrowFromCallExpression(node, call);\n    }\n\n    parseMaybeAssign(\n      refExpressionErrors?: ExpressionErrors | null,\n      afterLeftParse?: Function,\n    ): N.Expression {\n      // Note: When the JSX plugin is on, type assertions (`<T> x`) aren't valid syntax.\n\n      let state: State | undefined | null;\n      let jsx;\n      let typeCast;\n\n      if (\n        this.hasPlugin(\"jsx\") &&\n        (this.match(tt.jsxTagStart) || this.match(tt.lt))\n      ) {\n        // Prefer to parse JSX if possible. But may be an arrow fn.\n        state = this.state.clone();\n\n        jsx = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n\n        /*:: invariant(!jsx.aborted) */\n        /*:: invariant(jsx.node != null) */\n        if (!jsx.error) return jsx.node;\n\n        // Remove `tc.j_expr` or `tc.j_oTag` from context added\n        // by parsing `jsxTagStart` to stop the JSX plugin from\n        // messing with the tokens\n        const { context } = this.state;\n        const currentContext = context[context.length - 1];\n        if (currentContext === tc.j_oTag || currentContext === tc.j_expr) {\n          context.pop();\n        }\n      }\n\n      if (!jsx?.error && !this.match(tt.lt)) {\n        return super.parseMaybeAssign(refExpressionErrors, afterLeftParse);\n      }\n\n      // Either way, we're looking at a '<': tt.jsxTagStart or relational.\n\n      // If the state was cloned in the JSX parsing branch above but there\n      // have been any error in the tryParse call, this.state is set to state\n      // so we still need to clone it.\n      if (!state || state === this.state) state = this.state.clone();\n\n      let typeParameters: N.TsTypeParameterDeclaration | undefined | null;\n      // We need to explicitly annotate 'abort' for microsoft/TypeScript#58170\n      const arrow = this.tryParse((abort: () => never) => {\n        // This is similar to TypeScript's `tryParseParenthesizedArrowFunctionExpression`.\n        typeParameters = this.tsParseTypeParameters(this.tsParseConstModifier);\n        const expr = super.parseMaybeAssign(\n          refExpressionErrors,\n          afterLeftParse,\n        );\n\n        if (\n          expr.type !== \"ArrowFunctionExpression\" ||\n          expr.extra?.parenthesized\n        ) {\n          abort();\n        }\n\n        // Correct TypeScript code should have at least 1 type parameter, but don't crash on bad code.\n        if (typeParameters?.params.length !== 0) {\n          this.resetStartLocationFromNode(expr, typeParameters);\n        }\n        expr.typeParameters = typeParameters;\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (\n            this.hasPlugin(\"jsx\") &&\n            expr.typeParameters.params.length === 1 &&\n            !expr.typeParameters.extra?.trailingComma\n          ) {\n            // report error if single type parameter used without trailing comma.\n            const parameter = expr.typeParameters\n              .params[0] as N.TsTypeParameter;\n            if (!parameter.constraint) {\n              // A single type parameter must either have constraints\n              // or a trailing comma, otherwise it's ambiguous with JSX.\n              this.raise(\n                TSErrors.SingleTypeParameterWithoutTrailingComma,\n                createPositionWithColumnOffset(parameter.loc.end, 1),\n                {\n                  typeParameterName: process.env.BABEL_8_BREAKING\n                    ? (parameter.name as N.Identifier).name\n                    : (parameter.name as string),\n                },\n              );\n            }\n          }\n        }\n\n        return expr;\n      }, state);\n\n      /*:: invariant(arrow.node != null) */\n      if (!arrow.error && !arrow.aborted) {\n        // This error is reported outside of the this.tryParse call so that\n        // in case of <T>(x) => 2, we don't consider <T>(x) as a type assertion\n        // because of this error.\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (!jsx) {\n        // Try parsing a type cast instead of an arrow function.\n        // This will never happen outside of JSX.\n        // (Because in JSX the '<' should be a jsxTagStart and not a relational.\n        assert(!this.hasPlugin(\"jsx\"));\n\n        // This will start with a type assertion (via parseMaybeUnary).\n        // But don't directly call `this.tsParseTypeAssertion` because we want to handle any binary after it.\n        typeCast = this.tryParse(\n          () => super.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n          state,\n        );\n        /*:: invariant(!typeCast.aborted) */\n        /*:: invariant(typeCast.node != null) */\n        if (!typeCast.error) return typeCast.node;\n      }\n\n      if (jsx?.node) {\n        /*:: invariant(jsx.failState) */\n        this.state = jsx.failState;\n        return jsx.node;\n      }\n\n      if (arrow.node) {\n        /*:: invariant(arrow.failState) */\n        this.state = arrow.failState;\n        if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);\n        return arrow.node;\n      }\n\n      if (typeCast?.node) {\n        /*:: invariant(typeCast.failState) */\n        this.state = typeCast.failState;\n        return typeCast.node;\n      }\n\n      throw jsx?.error || arrow.error || typeCast?.error;\n    }\n\n    reportReservedArrowTypeParam(node: any) {\n      if (\n        node.params.length === 1 &&\n        !node.params[0].constraint &&\n        !node.extra?.trailingComma &&\n        this.getPluginOption(\"typescript\", \"disallowAmbiguousJSXLike\")\n      ) {\n        this.raise(TSErrors.ReservedArrowTypeParam, node);\n      }\n    }\n\n    // Handle type assertions\n    parseMaybeUnary(\n      refExpressionErrors?: ExpressionErrors | null,\n      sawUnary?: boolean,\n    ): N.Expression {\n      if (!this.hasPlugin(\"jsx\") && this.match(tt.lt)) {\n        return this.tsParseTypeAssertion();\n      }\n      return super.parseMaybeUnary(refExpressionErrors, sawUnary);\n    }\n\n    parseArrow(\n      node: Undone<N.ArrowFunctionExpression>,\n    ): Undone<N.ArrowFunctionExpression> | undefined | null {\n      if (this.match(tt.colon)) {\n        // This is different from how the TS parser does it.\n        // TS uses lookahead. The Babel Parser parses it as a parenthesized expression and converts.\n\n        const result = this.tryParse(abort => {\n          const returnType = this.tsParseTypeOrTypePredicateAnnotation(\n            tt.colon,\n          );\n          if (this.canInsertSemicolon() || !this.match(tt.arrow)) abort();\n          return returnType;\n        });\n\n        if (result.aborted) return;\n\n        if (!result.thrown) {\n          if (result.error) this.state = result.failState;\n          // @ts-expect-error refine typings\n          node.returnType = result.node;\n        }\n      }\n\n      return super.parseArrow(node);\n    }\n\n    // Allow type annotations inside of a parameter list.\n    parseFunctionParamType(param: N.Pattern) {\n      if (this.eat(tt.question)) {\n        (param as any as N.Identifier).optional = true;\n      }\n      const type = this.tsTryParseTypeAnnotation();\n      if (type) param.typeAnnotation = type;\n      this.resetEndLocation(param);\n\n      return param;\n    }\n\n    isAssignable(node: N.Node, isBinding?: boolean): boolean {\n      switch (node.type) {\n        case \"TSTypeCastExpression\":\n          return this.isAssignable(node.expression, isBinding);\n        case \"TSParameterProperty\":\n          return true;\n        default:\n          return super.isAssignable(node, isBinding);\n      }\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean = false): void {\n      switch (node.type) {\n        case \"ParenthesizedExpression\":\n          this.toAssignableParenthesizedExpression(node, isLHS);\n          break;\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n          if (isLHS) {\n            this.expressionScope.recordArrowParameterBindingError(\n              TSErrors.UnexpectedTypeCastInParameter,\n              node,\n            );\n          } else {\n            this.raise(TSErrors.UnexpectedTypeCastInParameter, node);\n          }\n          this.toAssignable(node.expression, isLHS);\n          break;\n        case \"AssignmentExpression\":\n          if (!isLHS && node.left.type === \"TSTypeCastExpression\") {\n            node.left = this.typeCastToParameter(node.left) as N.Assignable;\n          }\n        /* fall through */\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    toAssignableParenthesizedExpression(\n      node: N.ParenthesizedExpression,\n      isLHS: boolean,\n    ): void {\n      switch (node.expression.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSNonNullExpression\":\n        case \"TSTypeAssertion\":\n        case \"ParenthesizedExpression\":\n          this.toAssignable(node.expression, isLHS);\n          break;\n        default:\n          super.toAssignable(node, isLHS);\n      }\n    }\n\n    checkToRestConversion(node: N.Node, allowPattern: boolean): void {\n      switch (node.type) {\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n        case \"TSNonNullExpression\":\n          this.checkToRestConversion(node.expression, false);\n          break;\n        default:\n          super.checkToRestConversion(node, allowPattern);\n      }\n    }\n\n    isValidLVal(\n      type:\n        | \"TSTypeCastExpression\"\n        | \"TSParameterProperty\"\n        | \"TSNonNullExpression\"\n        | \"TSInstantiationExpression\"\n        | \"TSAsExpression\"\n        | \"TSSatisfiesExpression\"\n        | \"TSTypeAssertion\",\n      isUnparenthesizedInAssign: boolean,\n      binding: BindingFlag,\n    ) {\n      switch (type) {\n        // Allow \"typecasts\" to appear on the left of assignment expressions,\n        // because it may be in an arrow function.\n        // e.g. `const f = (foo: number = 0) => foo;`\n        case \"TSTypeCastExpression\":\n          return true;\n        case \"TSParameterProperty\":\n          return \"parameter\";\n        case \"TSNonNullExpression\":\n          return \"expression\";\n        case \"TSAsExpression\":\n        case \"TSSatisfiesExpression\":\n        case \"TSTypeAssertion\":\n          return (\n            (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) &&\n            ([\"expression\", true] as [string, boolean])\n          );\n        default:\n          return super.isValidLVal(type, isUnparenthesizedInAssign, binding);\n      }\n    }\n\n    parseBindingAtom(): N.Pattern {\n      if (this.state.type === tt._this) {\n        return this.parseIdentifier(/* liberal */ true);\n      }\n      return super.parseBindingAtom();\n    }\n\n    parseMaybeDecoratorArguments(\n      expr: N.Expression,\n      startLoc: Position,\n    ): N.Expression {\n      // handles `@f<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsParseTypeArgumentsInExpression();\n\n        if (this.match(tt.parenL)) {\n          const call = super.parseMaybeDecoratorArguments(\n            expr,\n            startLoc,\n          ) as N.CallExpression;\n          if (process.env.BABEL_8_BREAKING) {\n            call.typeArguments = typeArguments;\n          } else {\n            call.typeParameters = typeArguments;\n          }\n\n          return call;\n        }\n\n        this.unexpected(null, tt.parenL);\n      }\n\n      return super.parseMaybeDecoratorArguments(expr, startLoc);\n    }\n\n    checkCommaAfterRest(\n      close: (typeof charCodes)[keyof typeof charCodes],\n    ): boolean {\n      if (\n        this.state.isAmbientContext &&\n        this.match(tt.comma) &&\n        this.lookaheadCharCode() === close\n      ) {\n        this.next();\n        return false;\n      }\n      return super.checkCommaAfterRest(close);\n    }\n\n    // === === === === === === === === === === === === === === === ===\n    // Note: All below methods are duplicates of something in flow.js.\n    // Not sure what the best way to combine these is.\n    // === === === === === === === === === === === === === === === ===\n\n    isClassMethod(): boolean {\n      return this.match(tt.lt) || super.isClassMethod();\n    }\n\n    isClassProperty(): boolean {\n      return (\n        this.match(tt.bang) || this.match(tt.colon) || super.isClassProperty()\n      );\n    }\n\n    parseMaybeDefault(\n      startLoc?: Position | null,\n      left?: Pattern | null,\n    ): N.Pattern {\n      const node = super.parseMaybeDefault(startLoc, left);\n\n      if (\n        node.type === \"AssignmentPattern\" &&\n        node.typeAnnotation &&\n        node.right.start < node.typeAnnotation.start\n      ) {\n        this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);\n      }\n\n      return node;\n    }\n\n    // ensure that inside types, we bypass the jsx parser plugin\n    getTokenFromCode(code: number): void {\n      if (this.state.inType) {\n        if (code === charCodes.greaterThan) {\n          this.finishOp(tt.gt, 1);\n          return;\n        }\n        if (code === charCodes.lessThan) {\n          this.finishOp(tt.lt, 1);\n          return;\n        }\n      }\n      super.getTokenFromCode(code);\n    }\n\n    // used after we have finished parsing types\n    reScan_lt_gt() {\n      const { type } = this.state;\n      if (type === tt.lt) {\n        this.state.pos -= 1;\n        this.readToken_lt();\n      } else if (type === tt.gt) {\n        this.state.pos -= 1;\n        this.readToken_gt();\n      }\n    }\n\n    reScan_lt() {\n      const { type } = this.state;\n      if (type === tt.bitShiftL) {\n        this.state.pos -= 2;\n        this.finishOp(tt.lt, 1);\n        return tt.lt;\n      }\n      return type;\n    }\n\n    toAssignableListItem(\n      exprList: (N.Expression | N.SpreadElement | N.RestElement)[],\n      index: number,\n      isLHS: boolean,\n    ): void {\n      const node = exprList[index];\n      if (node.type === \"TSTypeCastExpression\") {\n        exprList[index] = this.typeCastToParameter(node);\n      }\n      super.toAssignableListItem(exprList, index, isLHS);\n    }\n\n    typeCastToParameter(node: N.TsTypeCastExpression): N.Expression {\n      (node.expression as N.Identifier).typeAnnotation = node.typeAnnotation;\n\n      this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);\n\n      return node.expression;\n    }\n\n    shouldParseArrow(params: Array<N.Node>) {\n      if (this.match(tt.colon)) {\n        return params.every(expr => this.isAssignable(expr, true));\n      }\n      return super.shouldParseArrow(params);\n    }\n\n    shouldParseAsyncArrow(): boolean {\n      return this.match(tt.colon) || super.shouldParseAsyncArrow();\n    }\n\n    canHaveLeadingDecorator() {\n      // Avoid unnecessary lookahead in checking for abstract class unless needed!\n      return super.canHaveLeadingDecorator() || this.isAbstractClass();\n    }\n\n    jsxParseOpeningElementAfterName(\n      node: N.JSXOpeningElement,\n    ): N.JSXOpeningElement {\n      // handles `<Component<<T>`\n      if (this.match(tt.lt) || this.match(tt.bitShiftL)) {\n        const typeArguments = this.tsTryParseAndCatch(() =>\n          this.tsParseTypeArgumentsInExpression(),\n        );\n        if (typeArguments) {\n          if (process.env.BABEL_8_BREAKING) {\n            node.typeArguments = typeArguments;\n          } else {\n            node.typeParameters = typeArguments;\n          }\n        }\n      }\n      return super.jsxParseOpeningElementAfterName(node);\n    }\n\n    getGetterSetterExpectedParamCount(\n      method: N.ObjectMethod | N.ClassMethod,\n    ): number {\n      const baseCount = super.getGetterSetterExpectedParamCount(method);\n      const params = this.getObjectOrClassMethodParams(method);\n      const firstParam = params[0];\n      const hasContextParam = firstParam && this.isThisParam(firstParam);\n\n      return hasContextParam ? baseCount + 1 : baseCount;\n    }\n\n    parseCatchClauseParam(): N.Pattern {\n      const param = super.parseCatchClauseParam();\n      const type = this.tsTryParseTypeAnnotation();\n\n      if (type) {\n        param.typeAnnotation = type;\n        this.resetEndLocation(param);\n      }\n\n      return param;\n    }\n\n    tsInAmbientContext<T>(cb: () => T): T {\n      const { isAmbientContext: oldIsAmbientContext, strict: oldStrict } =\n        this.state;\n      this.state.isAmbientContext = true;\n      this.state.strict = false;\n      try {\n        return cb();\n      } finally {\n        this.state.isAmbientContext = oldIsAmbientContext;\n        this.state.strict = oldStrict;\n      }\n    }\n\n    parseClass<T extends N.Class>(\n      node: Undone<T>,\n      isStatement: boolean,\n      optionalId?: boolean,\n    ): T {\n      const oldInAbstractClass = this.state.inAbstractClass;\n      this.state.inAbstractClass = !!(node as any).abstract;\n      try {\n        return super.parseClass(node, isStatement, optionalId);\n      } finally {\n        this.state.inAbstractClass = oldInAbstractClass;\n      }\n    }\n\n    tsParseAbstractDeclaration(\n      node: any,\n      decorators: N.Decorator[] | null,\n    ): N.ClassDeclaration | N.TsInterfaceDeclaration | undefined | null {\n      if (this.match(tt._class)) {\n        node.abstract = true;\n        return this.maybeTakeDecorators(\n          decorators,\n          this.parseClass<N.ClassDeclaration>(\n            node as N.ClassDeclaration,\n            /* isStatement */ true,\n            /* optionalId */ false,\n          ),\n        );\n      } else if (this.isContextual(tt._interface)) {\n        // for invalid abstract interface\n\n        // To avoid\n        //   abstract interface\n        //   Foo {}\n        if (!this.hasFollowingLineBreak()) {\n          node.abstract = true;\n          this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, node);\n          return this.tsParseInterfaceDeclaration(\n            node as N.TsInterfaceDeclaration,\n          );\n        }\n      } else {\n        this.unexpected(null, tt._class);\n      }\n    }\n\n    parseMethod<\n      T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod,\n    >(\n      node: Undone<T>,\n      isGenerator: boolean,\n      isAsync: boolean,\n      isConstructor: boolean,\n      allowDirectSuper: boolean,\n      type: T[\"type\"],\n      inClassScope?: boolean,\n    ) {\n      const method = super.parseMethod<T>(\n        node,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowDirectSuper,\n        type,\n        inClassScope,\n      );\n      // @ts-expect-error todo(flow->ts) property not defined for all types in union\n      if (method.abstract) {\n        const hasEstreePlugin = this.hasPlugin(\"estree\");\n        const methodFn = hasEstreePlugin\n          ? // @ts-expect-error estree typings\n            method.value\n          : method;\n        if (methodFn.body) {\n          const { key } = method;\n          this.raise(TSErrors.AbstractMethodHasImplementation, method, {\n            methodName:\n              key.type === \"Identifier\" && !method.computed\n                ? key.name\n                : `[${this.input.slice(this.offsetToSourcePos(key.start), this.offsetToSourcePos(key.end))}]`,\n          });\n        }\n      }\n      return method;\n    }\n\n    tsParseTypeParameterName(): N.Identifier | string {\n      const typeName: N.Identifier = this.parseIdentifier();\n      return process.env.BABEL_8_BREAKING ? typeName : typeName.name;\n    }\n\n    shouldParseAsAmbientContext(): boolean {\n      return !!this.getPluginOption(\"typescript\", \"dts\");\n    }\n\n    parse() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.parse();\n    }\n\n    getExpression() {\n      if (this.shouldParseAsAmbientContext()) {\n        this.state.isAmbientContext = true;\n      }\n      return super.getExpression();\n    }\n\n    parseExportSpecifier(\n      node: Undone<N.ExportSpecifier>,\n      isString: boolean,\n      isInTypeExport: boolean,\n      isMaybeTypeOnly: boolean,\n    ) {\n      if (!isString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          node,\n          /* isImport */ false,\n          isInTypeExport,\n        );\n        return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n      }\n      node.exportKind = \"value\";\n      return super.parseExportSpecifier(\n        node,\n        isString,\n        isInTypeExport,\n        isMaybeTypeOnly,\n      );\n    }\n\n    parseImportSpecifier(\n      specifier: Undone<N.ImportSpecifier>,\n      importedIsString: boolean,\n      isInTypeOnlyImport: boolean,\n      isMaybeTypeOnly: boolean,\n      // eslint-disable-next-line @typescript-eslint/no-unused-vars\n      bindingType: BindingFlag | undefined,\n    ): N.ImportSpecifier {\n      if (!importedIsString && isMaybeTypeOnly) {\n        this.parseTypeOnlyImportExportSpecifier(\n          specifier,\n          /* isImport */ true,\n          isInTypeOnlyImport,\n        );\n        return this.finishNode<N.ImportSpecifier>(specifier, \"ImportSpecifier\");\n      }\n      specifier.importKind = \"value\";\n      return super.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        isInTypeOnlyImport,\n        isMaybeTypeOnly,\n        isInTypeOnlyImport\n          ? BindingFlag.TYPE_TS_TYPE_IMPORT\n          : BindingFlag.TYPE_TS_VALUE_IMPORT,\n      );\n    }\n\n    parseTypeOnlyImportExportSpecifier(\n      node: any,\n      isImport: boolean,\n      isInTypeOnlyImportExport: boolean,\n    ): void {\n      const leftOfAsKey = isImport ? \"imported\" : \"local\";\n      const rightOfAsKey = isImport ? \"local\" : \"exported\";\n\n      let leftOfAs = node[leftOfAsKey];\n      let rightOfAs;\n\n      let hasTypeSpecifier = false;\n      let canParseAsKeyword = true;\n\n      const loc = leftOfAs.loc.start;\n\n      // https://github.com/microsoft/TypeScript/blob/fc4f9d83d5939047aa6bb2a43965c6e9bbfbc35b/src/compiler/parser.ts#L7411-L7456\n      // import { type } from \"mod\";          - hasTypeSpecifier: false, leftOfAs: type\n      // import { type as } from \"mod\";       - hasTypeSpecifier: true,  leftOfAs: as\n      // import { type as as } from \"mod\";    - hasTypeSpecifier: false, leftOfAs: type, rightOfAs: as\n      // import { type as as as } from \"mod\"; - hasTypeSpecifier: true,  leftOfAs: as,   rightOfAs: as\n      if (this.isContextual(tt._as)) {\n        // { type as ...? }\n        const firstAs = this.parseIdentifier();\n        if (this.isContextual(tt._as)) {\n          // { type as as ...? }\n          const secondAs = this.parseIdentifier();\n          if (tokenIsKeywordOrIdentifier(this.state.type)) {\n            // { type as as something }\n            hasTypeSpecifier = true;\n            leftOfAs = firstAs;\n            rightOfAs = isImport\n              ? this.parseIdentifier()\n              : this.parseModuleExportName();\n            canParseAsKeyword = false;\n          } else {\n            // { type as as }\n            rightOfAs = secondAs;\n            canParseAsKeyword = false;\n          }\n        } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n          // { type as something }\n          canParseAsKeyword = false;\n          rightOfAs = isImport\n            ? this.parseIdentifier()\n            : this.parseModuleExportName();\n        } else {\n          // { type as }\n          hasTypeSpecifier = true;\n          leftOfAs = firstAs;\n        }\n      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {\n        // { type something ...? }\n        hasTypeSpecifier = true;\n        if (isImport) {\n          leftOfAs = this.parseIdentifier(true);\n          if (!this.isContextual(tt._as)) {\n            this.checkReservedWord(\n              leftOfAs.name,\n              leftOfAs.loc.start,\n              true,\n              true,\n            );\n          }\n        } else {\n          leftOfAs = this.parseModuleExportName();\n        }\n      }\n      if (hasTypeSpecifier && isInTypeOnlyImportExport) {\n        this.raise(\n          isImport\n            ? TSErrors.TypeModifierIsUsedInTypeImports\n            : TSErrors.TypeModifierIsUsedInTypeExports,\n          loc,\n        );\n      }\n\n      node[leftOfAsKey] = leftOfAs;\n      node[rightOfAsKey] = rightOfAs;\n\n      const kindKey = isImport ? \"importKind\" : \"exportKind\";\n      node[kindKey] = hasTypeSpecifier ? \"type\" : \"value\";\n\n      if (canParseAsKeyword && this.eatContextual(tt._as)) {\n        node[rightOfAsKey] = isImport\n          ? this.parseIdentifier()\n          : this.parseModuleExportName();\n      }\n      if (!node[rightOfAsKey]) {\n        node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);\n      }\n      if (isImport) {\n        this.checkIdentifier(\n          node[rightOfAsKey],\n          hasTypeSpecifier\n            ? BindingFlag.TYPE_TS_TYPE_IMPORT\n            : BindingFlag.TYPE_TS_VALUE_IMPORT,\n        );\n      }\n    }\n  };\n\nfunction isPossiblyLiteralEnum(expression: N.Expression): boolean {\n  if (expression.type !== \"MemberExpression\") return false;\n\n  const { computed, property } = expression;\n\n  if (\n    computed &&\n    property.type !== \"StringLiteral\" &&\n    (property.type !== \"TemplateLiteral\" || property.expressions.length > 0)\n  ) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n\n// If a const declaration has no type annotation and is initialized to\n// a string literal, numeric literal, or enum reference, then it is\n// allowed. In an ideal world, we'd check whether init was *actually* an\n// enum reference, but we allow anything that \"could be\" a literal enum\n// in `isPossiblyLiteralEnum` since we don't have all the information\n// that the typescript compiler has.\nfunction isValidAmbientConstInitializer(\n  expression: N.Expression,\n  estree: boolean,\n): boolean {\n  const { type } = expression;\n  if (expression.extra?.parenthesized) {\n    return false;\n  }\n  if (estree) {\n    if (type === \"Literal\") {\n      const { value } = expression;\n      if (typeof value === \"string\" || typeof value === \"boolean\") {\n        return true;\n      }\n    }\n  } else {\n    if (type === \"StringLiteral\" || type === \"BooleanLiteral\") {\n      return true;\n    }\n  }\n  if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {\n    return true;\n  }\n  if (type === \"TemplateLiteral\" && expression.expressions.length === 0) {\n    return true;\n  }\n  if (isPossiblyLiteralEnum(expression)) {\n    return true;\n  }\n  return false;\n}\n\nfunction isNumber(expression: N.Expression, estree: boolean): boolean {\n  if (estree) {\n    return (\n      expression.type === \"Literal\" &&\n      (typeof expression.value === \"number\" || \"bigint\" in expression)\n    );\n  }\n  return (\n    expression.type === \"NumericLiteral\" || expression.type === \"BigIntLiteral\"\n  );\n}\n\nfunction isNegativeNumber(expression: N.Expression, estree: boolean): boolean {\n  if (expression.type === \"UnaryExpression\") {\n    const { operator, argument } = expression;\n    if (operator === \"-\" && isNumber(argument, estree)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isUncomputedMemberExpressionChain(expression: N.Expression): boolean {\n  if (expression.type === \"Identifier\") return true;\n  if (expression.type !== \"MemberExpression\" || expression.computed) {\n    return false;\n  }\n\n  return isUncomputedMemberExpressionChain(expression.object);\n}\n","import * as charCodes from \"charcodes\";\n\nimport { tokenLabelName, tt } from \"../tokenizer/types.ts\";\nimport type Parser from \"../parser/index.ts\";\nimport type * as N from \"../types.ts\";\nimport { ParseErrorEnum } from \"../parse-error.ts\";\nimport type { Undone } from \"../parser/node.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\nimport type { BindingFlag } from \"../util/scopeflags.ts\";\nimport type { Position } from \"../util/location.ts\";\n\ntype PossiblePlaceholders = {\n  Identifier: N.Identifier;\n  StringLiteral: N.StringLiteral;\n  Expression: N.Expression;\n  Statement: N.Statement;\n  Declaration: N.Declaration;\n  BlockStatement: N.BlockStatement;\n  ClassBody: N.ClassBody;\n  Pattern: N.Pattern;\n};\nexport type PlaceholderTypes = keyof PossiblePlaceholders;\n\ntype NodeOf<T extends keyof PossiblePlaceholders> = PossiblePlaceholders[T];\n// todo: when there  is proper union type for Node\n// type NodeOf<T extends PlaceholderTypes> = Extract<N.Node, { type: T }>;\n\n// todo: Placeholder<T> breaks everything, because its type is incompatible with\n// the substituted nodes.\ntype MaybePlaceholder<T extends PlaceholderTypes> = NodeOf<T>; // | Placeholder<T>\n\n/* eslint sort-keys: \"error\" */\nconst PlaceholderErrors = ParseErrorEnum`placeholders`({\n  ClassNameIsRequired: \"A class name is required.\",\n  UnexpectedSpace: \"Unexpected space in placeholder.\",\n});\n\nexport default (superClass: typeof Parser) =>\n  class PlaceholdersParserMixin extends superClass implements Parser {\n    parsePlaceholder<T extends PlaceholderTypes>(\n      expectedNode: T,\n    ): /*?N.Placeholder<T>*/ MaybePlaceholder<T> | undefined {\n      if (this.match(tt.placeholder)) {\n        const node = this.startNode<N.Placeholder<T>>();\n        this.next();\n        this.assertNoSpace();\n\n        // We can't use this.parseIdentifier because\n        // we don't want nested placeholders.\n        node.name = super.parseIdentifier(/* liberal */ true);\n\n        this.assertNoSpace();\n        this.expect(tt.placeholder);\n        return this.finishPlaceholder(node, expectedNode);\n      }\n    }\n\n    finishPlaceholder<T extends PlaceholderTypes>(\n      node: Undone<N.Placeholder> | Undone<NodeOf<PlaceholderTypes>>,\n      expectedNode: T,\n    ): /*N.Placeholder<T>*/ MaybePlaceholder<T> {\n      let placeholder = node as unknown as N.Placeholder<T>;\n\n      if (!placeholder.expectedNode || !placeholder.type) {\n        placeholder = this.finishNode(\n          placeholder,\n          \"Placeholder\",\n        ) as unknown as N.Placeholder<T>;\n      }\n\n      placeholder.expectedNode = expectedNode;\n      return placeholder as unknown as MaybePlaceholder<T>;\n    }\n\n    /* ============================================================ *\n     * tokenizer/index.js                                           *\n     * ============================================================ */\n\n    getTokenFromCode(code: number) {\n      if (\n        code === charCodes.percentSign &&\n        this.input.charCodeAt(this.state.pos + 1) === charCodes.percentSign\n      ) {\n        this.finishOp(tt.placeholder, 2);\n      } else {\n        super.getTokenFromCode(code);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(\n      refExpressionErrors?: ExpressionErrors | null,\n    ): MaybePlaceholder<\"Expression\"> {\n      return (\n        this.parsePlaceholder(\"Expression\") ||\n        super.parseExprAtom(refExpressionErrors)\n      );\n    }\n\n    parseIdentifier(liberal?: boolean): MaybePlaceholder<\"Identifier\"> {\n      // NOTE: This function only handles identifiers outside of\n      // expressions and binding patterns, since they are already\n      // handled by the parseExprAtom and parseBindingAtom functions.\n      // This is needed, for example, to parse \"class %%NAME%% {}\".\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseIdentifier(liberal)\n      );\n    }\n\n    checkReservedWord(\n      word: string,\n      startLoc: Position,\n      checkKeywords: boolean,\n      isBinding: boolean,\n    ) {\n      // Sometimes we call #checkReservedWord(node.name), expecting\n      // that node is an Identifier. If it is a Placeholder, name\n      // will be undefined.\n      if (word !== undefined) {\n        super.checkReservedWord(word, startLoc, checkKeywords, isBinding);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/lval.js                                               *\n     * ============================================================ */\n\n    parseBindingAtom(): MaybePlaceholder<\"Pattern\"> {\n      return this.parsePlaceholder(\"Pattern\") || super.parseBindingAtom();\n    }\n\n    isValidLVal(type: string, isParenthesized: boolean, binding: BindingFlag) {\n      return (\n        type === \"Placeholder\" ||\n        super.isValidLVal(type, isParenthesized, binding)\n      );\n    }\n\n    toAssignable(node: N.Node, isLHS: boolean): void {\n      if (\n        node &&\n        node.type === \"Placeholder\" &&\n        node.expectedNode === \"Expression\"\n      ) {\n        node.expectedNode = \"Pattern\";\n      } else {\n        super.toAssignable(node, isLHS);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/statement.js                                          *\n     * ============================================================ */\n\n    chStartsBindingIdentifier(ch: number, pos: number): boolean {\n      if (super.chStartsBindingIdentifier(ch, pos)) {\n        return true;\n      }\n\n      // Accept \"let %%\" as the start of \"let %%placeholder%%\", as though the\n      // placeholder were an identifier.\n      const nextToken = this.lookahead();\n      if (nextToken.type === tt.placeholder) {\n        return true;\n      }\n\n      return false;\n    }\n\n    verifyBreakContinue(\n      node: N.BreakStatement | N.ContinueStatement,\n      isBreak: boolean,\n    ) {\n      // @ts-expect-error: node.label could be Placeholder\n      if (node.label && node.label.type === \"Placeholder\") return;\n      super.verifyBreakContinue(node, isBreak);\n    }\n\n    // @ts-expect-error Plugin will override parser interface\n    parseExpressionStatement(\n      node: MaybePlaceholder<\"Statement\">,\n      expr: MaybePlaceholder<\"Expression\">,\n    ): MaybePlaceholder<\"Statement\"> {\n      // @ts-expect-error placeholder typings\n      if (expr.type !== \"Placeholder\" || expr.extra?.parenthesized) {\n        // @ts-expect-error placeholder typings\n        return super.parseExpressionStatement(node, expr);\n      }\n\n      if (this.match(tt.colon)) {\n        // @ts-expect-error placeholder typings\n        const stmt: N.LabeledStatement = node;\n        stmt.label = this.finishPlaceholder(expr, \"Identifier\");\n        this.next();\n        stmt.body = super.parseStatementOrSloppyAnnexBFunctionDeclaration();\n        return this.finishNode(stmt, \"LabeledStatement\");\n      }\n\n      this.semicolon();\n      const stmtPlaceholder = node as unknown as N.Placeholder<\"Statement\">;\n      stmtPlaceholder.name = (expr as N.Placeholder).name;\n      return this.finishPlaceholder(stmtPlaceholder, \"Statement\");\n    }\n\n    parseBlock(\n      allowDirectives?: boolean,\n      createNewLexicalScope?: boolean,\n      afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n    ): MaybePlaceholder<\"BlockStatement\"> {\n      return (\n        this.parsePlaceholder(\"BlockStatement\") ||\n        super.parseBlock(\n          allowDirectives,\n          createNewLexicalScope,\n          afterBlockParse,\n        )\n      );\n    }\n\n    parseFunctionId(\n      requireId?: boolean,\n    ): MaybePlaceholder<\"Identifier\"> | undefined | null {\n      return (\n        this.parsePlaceholder(\"Identifier\") || super.parseFunctionId(requireId)\n      );\n    }\n    // @ts-expect-error Plugin will override parser interface\n    parseClass<T extends N.Class>(\n      node: T,\n      isStatement: /* T === ClassDeclaration */ boolean,\n      optionalId?: boolean,\n    ): T {\n      const type = isStatement ? \"ClassDeclaration\" : \"ClassExpression\";\n\n      this.next();\n      const oldStrict = this.state.strict;\n\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (placeholder) {\n        if (\n          this.match(tt._extends) ||\n          this.match(tt.placeholder) ||\n          this.match(tt.braceL)\n        ) {\n          node.id = placeholder;\n        } else if (optionalId || !isStatement) {\n          node.id = null;\n          node.body = this.finishPlaceholder(placeholder, \"ClassBody\");\n          return this.finishNode(node, type);\n        } else {\n          throw this.raise(\n            PlaceholderErrors.ClassNameIsRequired,\n            this.state.startLoc,\n          );\n        }\n      } else {\n        this.parseClassId(node, isStatement, optionalId);\n      }\n\n      super.parseClassSuper(node);\n      node.body =\n        this.parsePlaceholder(\"ClassBody\") ||\n        super.parseClassBody(!!node.superClass, oldStrict);\n      return this.finishNode(node, type);\n    }\n\n    parseExport(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      decorators: N.Decorator[] | null,\n    ): N.AnyExport {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseExport(node, decorators);\n\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // export %%DECL%%;\n        node2.specifiers = [];\n        node2.source = null;\n        node2.declaration = this.finishPlaceholder(placeholder, \"Declaration\");\n        return this.finishNode(node2, \"ExportNamedDeclaration\");\n      }\n\n      // export %%NAME%% from \"foo\";\n      this.expectPlugin(\"exportDefaultFrom\");\n      const specifier = this.startNode<N.ExportDefaultSpecifier>();\n      specifier.exported = placeholder;\n      node2.specifiers = [this.finishNode(specifier, \"ExportDefaultSpecifier\")];\n\n      return super.parseExport(node2, decorators);\n    }\n\n    isExportDefaultSpecifier(): boolean {\n      if (this.match(tt._default)) {\n        const next = this.nextTokenStart();\n        if (this.isUnparsedContextual(next, \"from\")) {\n          if (\n            this.input.startsWith(\n              tokenLabelName(tt.placeholder),\n              this.nextTokenStartSince(next + 4),\n            )\n          ) {\n            return true;\n          }\n        }\n      }\n      return super.isExportDefaultSpecifier();\n    }\n\n    maybeParseExportDefaultSpecifier(\n      node: Undone<\n        | N.ExportDefaultDeclaration\n        | N.ExportAllDeclaration\n        | N.ExportNamedDeclaration\n      >,\n      maybeDefaultIdentifier: N.Identifier | null,\n    ): node is Undone<N.ExportNamedDeclaration> {\n      if ((node as N.ExportNamedDeclaration).specifiers?.length) {\n        // \"export %%NAME%%\" has already been parsed by #parseExport.\n        return true;\n      }\n      return super.maybeParseExportDefaultSpecifier(\n        node,\n        maybeDefaultIdentifier,\n      );\n    }\n\n    checkExport(node: N.ExportNamedDeclaration): void {\n      const { specifiers } = node;\n      if (specifiers?.length) {\n        node.specifiers = specifiers.filter(\n          // @ts-expect-error placeholder typings\n          node => node.exported.type === \"Placeholder\",\n        );\n      }\n      super.checkExport(node);\n      node.specifiers = specifiers;\n    }\n\n    parseImport(\n      node: Undone<N.ImportDeclaration>,\n    ): N.ImportDeclaration | N.TsImportEqualsDeclaration {\n      const placeholder = this.parsePlaceholder(\"Identifier\");\n      if (!placeholder) return super.parseImport(node);\n\n      node.specifiers = [];\n\n      if (!this.isContextual(tt._from) && !this.match(tt.comma)) {\n        // import %%STRING%%;\n        node.source = this.finishPlaceholder(placeholder, \"StringLiteral\");\n        this.semicolon();\n        return this.finishNode(node, \"ImportDeclaration\");\n      }\n\n      // import %%DEFAULT%% ...\n      const specifier =\n        this.startNodeAtNode<N.ImportDefaultSpecifier>(placeholder);\n      specifier.local = placeholder;\n      node.specifiers.push(\n        this.finishNode(specifier, \"ImportDefaultSpecifier\"),\n      );\n\n      if (this.eat(tt.comma)) {\n        // import %%DEFAULT%%, * as ...\n        const hasStarImport = this.maybeParseStarImportSpecifier(node);\n\n        // import %%DEFAULT%%, { ...\n        if (!hasStarImport) this.parseNamedImportSpecifiers(node);\n      }\n\n      this.expectContextual(tt._from);\n      node.source = this.parseImportSource();\n      this.semicolon();\n      return this.finishNode(node, \"ImportDeclaration\");\n    }\n\n    parseImportSource(): MaybePlaceholder<\"StringLiteral\"> {\n      // import ... from %%STRING%%;\n\n      return (\n        this.parsePlaceholder(\"StringLiteral\") || super.parseImportSource()\n      );\n    }\n\n    // Throws if the current token and the prev one are separated by a space.\n    assertNoSpace(): void {\n      if (\n        this.state.start >\n        this.offsetToSourcePos(this.state.lastTokEndLoc.index)\n      ) {\n        this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);\n      }\n    }\n  };\n","import type Parser from \"../parser/index.ts\";\nimport { tokenIsIdentifier, tt } from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport type { ExpressionErrors } from \"../parser/util.ts\";\n\nexport default (superClass: typeof Parser) =>\n  class V8IntrinsicMixin extends superClass implements Parser {\n    parseV8Intrinsic(): N.Expression {\n      if (this.match(tt.modulo)) {\n        const v8IntrinsicStartLoc = this.state.startLoc;\n        // let the `loc` of Identifier starts from `%`\n        const node = this.startNode<N.Identifier>();\n        this.next(); // eat '%'\n        if (tokenIsIdentifier(this.state.type)) {\n          const name = this.parseIdentifierName();\n          const identifier = this.createIdentifier(node, name);\n          // @ts-expect-error: avoid mutating AST types\n          identifier.type = \"V8IntrinsicIdentifier\";\n          if (this.match(tt.parenL)) {\n            return identifier;\n          }\n        }\n        this.unexpected(v8IntrinsicStartLoc);\n      }\n    }\n\n    /* ============================================================ *\n     * parser/expression.js                                         *\n     * ============================================================ */\n\n    parseExprAtom(refExpressionErrors?: ExpressionErrors | null): N.Expression {\n      return (\n        this.parseV8Intrinsic() || super.parseExprAtom(refExpressionErrors)\n      );\n    }\n  };\n","import type Parser from \"./parser/index.ts\";\nimport type { PluginConfig } from \"./typings.ts\";\n\nexport type Plugin = PluginConfig;\n\nexport type MixinPlugin = (\n  superClass: new (...args: any) => Parser,\n) => new (...args: any) => Parser;\n\nconst PIPELINE_PROPOSALS = process.env.BABEL_8_BREAKING\n  ? [\"fsharp\", \"hack\"]\n  : [\"minimal\", \"fsharp\", \"hack\", \"smart\"];\nconst TOPIC_TOKENS = [\"^^\", \"@@\", \"^\", \"%\", \"#\"];\n\nexport function validatePlugins(pluginsMap: Map<string, any>) {\n  if (pluginsMap.has(\"decorators\")) {\n    if (pluginsMap.has(\"decorators-legacy\")) {\n      throw new Error(\n        \"Cannot use the decorators and decorators-legacy plugin together\",\n      );\n    }\n\n    const decoratorsBeforeExport =\n      pluginsMap.get(\"decorators\").decoratorsBeforeExport;\n    if (\n      decoratorsBeforeExport != null &&\n      typeof decoratorsBeforeExport !== \"boolean\"\n    ) {\n      throw new Error(\n        \"'decoratorsBeforeExport' must be a boolean, if specified.\",\n      );\n    }\n\n    const allowCallParenthesized =\n      pluginsMap.get(\"decorators\").allowCallParenthesized;\n    if (\n      allowCallParenthesized != null &&\n      typeof allowCallParenthesized !== \"boolean\"\n    ) {\n      throw new Error(\"'allowCallParenthesized' must be a boolean.\");\n    }\n  }\n\n  if (pluginsMap.has(\"flow\") && pluginsMap.has(\"typescript\")) {\n    throw new Error(\"Cannot combine flow and typescript plugins.\");\n  }\n\n  if (pluginsMap.has(\"placeholders\") && pluginsMap.has(\"v8intrinsic\")) {\n    throw new Error(\"Cannot combine placeholders and v8intrinsic plugins.\");\n  }\n\n  if (pluginsMap.has(\"pipelineOperator\")) {\n    const proposal = pluginsMap.get(\"pipelineOperator\").proposal;\n\n    if (!PIPELINE_PROPOSALS.includes(proposal)) {\n      const proposalList = PIPELINE_PROPOSALS.map(p => `\"${p}\"`).join(\", \");\n      throw new Error(\n        `\"pipelineOperator\" requires \"proposal\" option whose value must be one of: ${proposalList}.`,\n      );\n    }\n\n    const tupleSyntaxIsHash = process.env.BABEL_8_BREAKING\n      ? pluginsMap.has(\"recordAndTuple\")\n      : pluginsMap.get(\"recordAndTuple\")?.syntaxType === \"hash\";\n\n    if (proposal === \"hack\") {\n      if (pluginsMap.has(\"placeholders\")) {\n        throw new Error(\n          \"Cannot combine placeholders plugin and Hack-style pipes.\",\n        );\n      }\n\n      if (pluginsMap.has(\"v8intrinsic\")) {\n        throw new Error(\n          \"Cannot combine v8intrinsic plugin and Hack-style pipes.\",\n        );\n      }\n\n      const topicToken = pluginsMap.get(\"pipelineOperator\").topicToken;\n\n      if (!TOPIC_TOKENS.includes(topicToken)) {\n        const tokenList = TOPIC_TOKENS.map(t => `\"${t}\"`).join(\", \");\n\n        throw new Error(\n          `\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: ${tokenList}.`,\n        );\n      }\n\n      if (topicToken === \"#\" && tupleSyntaxIsHash) {\n        throw new Error(\n          `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n        );\n      }\n    } else if (\n      !process.env.BABEL_8_BREAKING &&\n      proposal === \"smart\" &&\n      tupleSyntaxIsHash\n    ) {\n      throw new Error(\n        `Plugin conflict between \\`[\"pipelineOperator\", { proposal: \"smart\" }]\\` and \\`${JSON.stringify([\"recordAndTuple\", pluginsMap.get(\"recordAndTuple\")])}\\`.`,\n      );\n    }\n  }\n\n  if (pluginsMap.has(\"moduleAttributes\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`moduleAttributes` has been removed in Babel 8, please migrate to import attributes instead.\",\n      );\n    } else {\n      if (\n        pluginsMap.has(\"deprecatedImportAssert\") ||\n        pluginsMap.has(\"importAssertions\")\n      ) {\n        throw new Error(\n          \"Cannot combine importAssertions, deprecatedImportAssert and moduleAttributes plugins.\",\n        );\n      }\n      const moduleAttributesVersionPluginOption =\n        pluginsMap.get(\"moduleAttributes\").version;\n      if (moduleAttributesVersionPluginOption !== \"may-2020\") {\n        throw new Error(\n          \"The 'moduleAttributes' plugin requires a 'version' option,\" +\n            \" representing the last proposal update. Currently, the\" +\n            \" only supported value is 'may-2020'.\",\n        );\n      }\n    }\n  }\n  if (pluginsMap.has(\"importAssertions\")) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"`importAssertions` has been removed in Babel 8, please use import attributes instead.\" +\n          \" To use the non-standard `assert` syntax you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else if (pluginsMap.has(\"deprecatedImportAssert\")) {\n      throw new Error(\n        \"Cannot combine importAssertions and deprecatedImportAssert plugins.\",\n      );\n    }\n  }\n  if (\n    !pluginsMap.has(\"deprecatedImportAssert\") &&\n    pluginsMap.has(\"importAttributes\") &&\n    pluginsMap.get(\"importAttributes\").deprecatedAssertSyntax\n  ) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"The 'importAttributes' plugin has been removed in Babel 8. If you need to enable support \" +\n          \"for the deprecated `assert` syntax, you can enable the `deprecatedImportAssert` parser plugin.\",\n      );\n    } else {\n      pluginsMap.set(\"deprecatedImportAssert\", {});\n    }\n  }\n\n  if (pluginsMap.has(\"recordAndTuple\")) {\n    const syntaxType = pluginsMap.get(\"recordAndTuple\").syntaxType;\n    if (syntaxType != null) {\n      if (process.env.BABEL_8_BREAKING) {\n        if (syntaxType === \"hash\") {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. You can safely remove { syntaxType: \"hash\" } from the recordAndTuple config.',\n          );\n        } else {\n          throw new Error(\n            'The syntaxType option is no longer required in Babel 8. Please remove { syntaxType: \"bar\" } from the recordAndTuple config and migrate to the hash syntax #{} and #[].',\n          );\n        }\n      } else {\n        const RECORD_AND_TUPLE_SYNTAX_TYPES = [\"hash\", \"bar\"];\n        if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {\n          throw new Error(\n            \"The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: \" +\n              RECORD_AND_TUPLE_SYNTAX_TYPES.map(p => `'${p}'`).join(\", \"),\n          );\n        }\n      }\n    }\n  }\n\n  if (\n    pluginsMap.has(\"asyncDoExpressions\") &&\n    !pluginsMap.has(\"doExpressions\")\n  ) {\n    const error = new Error(\n      \"'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.\",\n    );\n    // @ts-expect-error so @babel/core can provide better error message\n    error.missingPlugins = \"doExpressions\";\n    throw error;\n  }\n\n  if (\n    pluginsMap.has(\"optionalChainingAssign\") &&\n    pluginsMap.get(\"optionalChainingAssign\").version !== \"2023-07\"\n  ) {\n    throw new Error(\n      \"The 'optionalChainingAssign' plugin requires a 'version' option,\" +\n        \" representing the last proposal update. Currently, the\" +\n        \" only supported value is '2023-07'.\",\n    );\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (pluginsMap.has(\"decimal\")) {\n      throw new Error(\n        \"The 'decimal' plugin has been removed in Babel 8. Please remove it from your configuration.\",\n      );\n    }\n    if (pluginsMap.has(\"importReflection\")) {\n      throw new Error(\n        \"The 'importReflection' plugin has been removed in Babel 8. Use 'sourcePhaseImports' instead, and \" +\n          \"replace 'import module' with 'import source' in your code.\",\n      );\n    }\n  }\n}\n\n// These plugins are defined using a mixin which extends the parser class.\n\nimport estree from \"./plugins/estree.ts\";\nimport flow from \"./plugins/flow/index.ts\";\nimport jsx from \"./plugins/jsx/index.ts\";\nimport typescript from \"./plugins/typescript/index.ts\";\nimport placeholders from \"./plugins/placeholders.ts\";\nimport v8intrinsic from \"./plugins/v8intrinsic.ts\";\n\n// NOTE: order is important. estree must come first; placeholders must come last.\nexport const mixinPlugins = {\n  estree,\n  jsx,\n  flow,\n  typescript,\n  v8intrinsic,\n  placeholders,\n};\n\nexport const mixinPluginNames = Object.keys(mixinPlugins) as ReadonlyArray<\n  \"estree\" | \"jsx\" | \"flow\" | \"typescript\" | \"v8intrinsic\" | \"placeholders\"\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 — 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\nimport {\n  tokenCanStartExpression,\n  tokenIsAssignment,\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsOperator,\n  tokenIsPostfix,\n  tokenIsPrefix,\n  tokenIsRightAssociative,\n  tokenIsTemplate,\n  tokenKeywordOrIdentifierIsKeyword,\n  tokenLabelName,\n  tokenOperatorPrecedence,\n  tt,\n  type TokenType,\n} from \"../tokenizer/types.ts\";\nimport type * as N from \"../types.ts\";\nimport LValParser from \"./lval.ts\";\nimport {\n  isKeyword,\n  isReservedWord,\n  isStrictReservedWord,\n  isStrictBindReservedWord,\n  isIdentifierStart,\n  canBeReservedWord,\n} from \"../util/identifier.ts\";\nimport {\n  type Position,\n  createPositionWithColumnOffset,\n} from \"../util/location.ts\";\nimport * as charCodes from \"charcodes\";\nimport { ScopeFlag, BindingFlag } from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newArrowHeadScope,\n  newAsyncArrowScope,\n  newExpressionScope,\n} from \"../util/expression-scope.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport {\n  UnparenthesizedPipeBodyDescriptions,\n  type UnparenthesizedPipeBodyTypes,\n} from \"../parse-error/pipeline-operator-errors.ts\";\nimport { setInnerComments } from \"./comments.ts\";\nimport { cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\n\nimport { OptionFlags, type SourceType } from \"../options.ts\";\n\nexport default abstract class ExpressionParser extends LValParser {\n  // Forward-declaration: defined in statement.js\n  abstract parseBlock(\n    allowDirectives?: boolean,\n    createNewLexicalScope?: boolean,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement;\n  abstract parseClass(\n    node: N.Class,\n    isStatement: boolean,\n    optionalId?: boolean,\n  ): N.Class;\n  abstract parseDecorators(allowExport?: boolean): void;\n  abstract parseFunction<T extends N.NormalFunction>(\n    node: T,\n    statement?: number,\n    allowExpressionBody?: boolean,\n    isAsync?: boolean,\n  ): T;\n  abstract parseFunctionParams(node: N.Function, isConstructor?: boolean): void;\n  abstract parseBlockOrModuleBlockBody(\n    body: N.Statement[],\n    directives: N.Directive[] | null | undefined,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void;\n  abstract parseProgram(\n    program: N.Program,\n    end: TokenType,\n    sourceType?: SourceType,\n  ): N.Program;\n\n  // For object literal, check if property __proto__ has been used more than once.\n  // If the expression is a destructuring assignment, then __proto__ may appear\n  // multiple times. Otherwise, __proto__ is a duplicated key.\n\n  // For record expression, check if property __proto__ exists\n\n  checkProto(\n    prop: N.ObjectMember | N.SpreadElement,\n    isRecord: boolean | undefined | null,\n    sawProto: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): boolean {\n    if (\n      prop.type === \"SpreadElement\" ||\n      this.isObjectMethod(prop) ||\n      prop.computed ||\n      prop.shorthand\n    ) {\n      return sawProto;\n    }\n\n    const key = prop.key as\n      | N.Identifier\n      | N.StringLiteral\n      | N.NumericLiteral\n      | N.BigIntLiteral;\n    // It is either an Identifier or a String/NumericLiteral\n    const name = key.type === \"Identifier\" ? key.name : key.value;\n\n    if (name === \"__proto__\") {\n      if (isRecord) {\n        this.raise(Errors.RecordNoProto, key);\n        return true;\n      }\n      if (sawProto) {\n        if (refExpressionErrors) {\n          // Store the first redefinition's position, otherwise ignore because\n          // we are parsing ambiguous pattern\n          if (refExpressionErrors.doubleProtoLoc === null) {\n            refExpressionErrors.doubleProtoLoc = key.loc.start;\n          }\n        } else {\n          this.raise(Errors.DuplicateProto, key);\n        }\n      }\n\n      return true;\n    }\n\n    return sawProto;\n  }\n\n  shouldExitDescending(\n    expr: N.Expression | N.PrivateName,\n    potentialArrowAt: number,\n  ): expr is N.ArrowFunctionExpression {\n    return (\n      expr.type === \"ArrowFunctionExpression\" &&\n      this.offsetToSourcePos(expr.start) === potentialArrowAt\n    );\n  }\n\n  // Convenience method to parse an Expression only\n  getExpression(this: Parser): N.Expression & N.ParserOutput {\n    this.enterInitialScopes();\n    this.nextToken();\n    const expr = this.parseExpression() as N.Expression & N.ParserOutput;\n    if (!this.match(tt.eof)) {\n      this.unexpected();\n    }\n    // Unlike parseTopLevel, we need to drain remaining commentStacks\n    // because the top level node is _not_ Program.\n    this.finalizeRemainingComments();\n    expr.comments = this.comments;\n    expr.errors = this.state.errors;\n    if (this.optionFlags & OptionFlags.Tokens) {\n      expr.tokens = this.tokens;\n    }\n    return expr;\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.\n  // - `disallowIn`\n  //   is used to forbid the `in` operator (in for loops initialization expressions)\n  //   When `disallowIn` is true, the production parameter [In] is not present.\n\n  // - `refExpressionErrors `\n  //   provides 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  parseExpression(\n    this: Parser,\n    disallowIn?: boolean,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    if (disallowIn) {\n      return this.disallowInAnd(() =>\n        this.parseExpressionBase(refExpressionErrors),\n      );\n    }\n    return this.allowInAnd(() => this.parseExpressionBase(refExpressionErrors));\n  }\n\n  // https://tc39.es/ecma262/#prod-Expression\n  parseExpressionBase(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const expr = this.parseMaybeAssign(refExpressionErrors);\n    if (this.match(tt.comma)) {\n      const node = this.startNodeAt<N.SequenceExpression>(startLoc);\n      node.expressions = [expr];\n      while (this.eat(tt.comma)) {\n        node.expressions.push(this.parseMaybeAssign(refExpressionErrors));\n      }\n      this.toReferencedList(node.expressions);\n      return this.finishNode(node, \"SequenceExpression\");\n    }\n    return expr;\n  }\n\n  // Set [~In] parameter for assignment expression\n  parseMaybeAssignDisallowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.disallowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // Set [+In] parameter for assignment expression\n  parseMaybeAssignAllowIn(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ) {\n    return this.allowInAnd(() =>\n      this.parseMaybeAssign(refExpressionErrors, afterLeftParse),\n    );\n  }\n\n  // This method is only used by\n  // the typescript and flow plugins.\n  setOptionalParametersError(refExpressionErrors: ExpressionErrors) {\n    refExpressionErrors.optionalParametersLoc = this.state.startLoc;\n  }\n\n  // Parse an assignment expression. This includes applications of\n  // operators like `+=`.\n  // https://tc39.es/ecma262/#prod-AssignmentExpression\n  parseMaybeAssign(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    afterLeftParse?: Function,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    if (this.isContextual(tt._yield)) {\n      if (this.prodParam.hasYield) {\n        let left = this.parseYield();\n        if (afterLeftParse) {\n          left = afterLeftParse.call(this, left, startLoc);\n        }\n        return left;\n      }\n    }\n\n    let ownExpressionErrors;\n    if (refExpressionErrors) {\n      ownExpressionErrors = false;\n    } else {\n      refExpressionErrors = new ExpressionErrors();\n      ownExpressionErrors = true;\n    }\n    const { type } = this.state;\n\n    if (type === tt.parenL || tokenIsIdentifier(type)) {\n      this.state.potentialArrowAt = this.state.start;\n    }\n\n    let left = this.parseMaybeConditional(refExpressionErrors);\n    if (afterLeftParse) {\n      left = afterLeftParse.call(this, left, startLoc);\n    }\n    if (tokenIsAssignment(this.state.type)) {\n      const node = this.startNodeAt<N.AssignmentExpression>(startLoc);\n      const operator = this.state.value;\n      node.operator = operator;\n\n      if (this.match(tt.eq)) {\n        this.toAssignable(left, /* isLHS */ true);\n        node.left = left;\n\n        const startIndex = startLoc.index;\n        if (\n          refExpressionErrors.doubleProtoLoc != null &&\n          refExpressionErrors.doubleProtoLoc.index >= startIndex\n        ) {\n          refExpressionErrors.doubleProtoLoc = null; // reset because double __proto__ is valid in assignment expression\n        }\n        if (\n          refExpressionErrors.shorthandAssignLoc != null &&\n          refExpressionErrors.shorthandAssignLoc.index >= startIndex\n        ) {\n          refExpressionErrors.shorthandAssignLoc = null; // reset because shorthand default was used correctly\n        }\n        if (\n          refExpressionErrors.privateKeyLoc != null &&\n          refExpressionErrors.privateKeyLoc.index >= startIndex\n        ) {\n          this.checkDestructuringPrivate(refExpressionErrors);\n          refExpressionErrors.privateKeyLoc = null; // reset because `({ #x: x })` is an assignable pattern\n        }\n      } else {\n        node.left = left as unknown as N.Assignable; // checked a few lines further down\n      }\n\n      this.next();\n      node.right = this.parseMaybeAssign();\n      this.checkLVal(left, this.finishNode(node, \"AssignmentExpression\"));\n      // @ts-expect-error todo(flow->ts) improve node types\n      return node;\n    } else if (ownExpressionErrors) {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n\n    return left;\n  }\n\n  // Parse a ternary conditional (`?:`) operator.\n  // https://tc39.es/ecma262/#prod-ConditionalExpression\n\n  parseMaybeConditional(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprOps(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseConditional(expr, startLoc, refExpressionErrors);\n  }\n\n  parseConditional(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (this.eat(tt.question)) {\n      const node = this.startNodeAt<N.ConditionalExpression>(startLoc);\n      node.test = expr;\n      node.consequent = this.parseMaybeAssignAllowIn();\n      this.expect(tt.colon);\n      node.alternate = this.parseMaybeAssign();\n      return this.finishNode(node, \"ConditionalExpression\");\n    }\n    return expr;\n  }\n\n  parseMaybeUnaryOrPrivate(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors,\n  ): N.Expression | N.PrivateName {\n    return this.match(tt.privateName)\n      ? this.parsePrivateName()\n      : this.parseMaybeUnary(refExpressionErrors);\n  }\n\n  // Start the precedence parser.\n  // https://tc39.es/ecma262/#prod-ShortCircuitExpression\n\n  parseExprOps(\n    this: Parser,\n    refExpressionErrors: ExpressionErrors,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseExprOp(expr, startLoc, -1);\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  parseExprOp(\n    this: Parser,\n    left: N.Expression | N.PrivateName,\n    leftStartLoc: Position,\n    minPrec: number,\n  ): N.Expression {\n    if (this.isPrivateName(left)) {\n      // https://tc39.es/ecma262/#prod-RelationalExpression\n      // RelationalExpression [In, Yield, Await]\n      //   [+In] PrivateIdentifier in ShiftExpression[?Yield, ?Await]\n\n      const value = this.getPrivateNameSV(left);\n\n      if (\n        minPrec >= tokenOperatorPrecedence(tt._in) ||\n        !this.prodParam.hasIn ||\n        !this.match(tt._in)\n      ) {\n        this.raise(Errors.PrivateInExpectedIn, left, {\n          identifierName: value,\n        });\n      }\n\n      this.classScope.usePrivateName(value, left.loc.start);\n    }\n\n    const op = this.state.type;\n    if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(tt._in))) {\n      let prec = tokenOperatorPrecedence(op);\n      if (prec > minPrec) {\n        if (op === tt.pipeline) {\n          this.expectPlugin(\"pipelineOperator\");\n          if (this.state.inFSharpPipelineDirectBody) {\n            // PrivateName must be followed by `in`, but we have `|>`\n            return left as N.Expression;\n          }\n          this.checkPipelineAtInfixOperator(left as N.Expression, leftStartLoc);\n        }\n        const node = this.startNodeAt<N.LogicalExpression | N.BinaryExpression>(\n          leftStartLoc,\n        );\n        node.left = left;\n        node.operator = this.state.value;\n\n        const logical = op === tt.logicalOR || op === tt.logicalAND;\n        const coalesce = op === tt.nullishCoalescing;\n\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 = tokenOperatorPrecedence(tt.logicalAND);\n        }\n\n        this.next();\n\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          op === tt.pipeline &&\n          // @ts-expect-error: Only in Babel 7\n          this.hasPlugin([\"pipelineOperator\", { proposal: \"minimal\" }])\n        ) {\n          if (this.state.type === tt._await && this.prodParam.hasAwait) {\n            throw this.raise(\n              Errors.UnexpectedAwaitAfterPipelineBody,\n              this.state.startLoc,\n            );\n          }\n        }\n\n        node.right = this.parseExprOpRightExpr(op, prec);\n        const finishedNode = this.finishNode(\n          node,\n          logical || coalesce ? \"LogicalExpression\" : \"BinaryExpression\",\n        );\n        /* this check is for all ?? operators\n         * a ?? b && c for this example\n         * when op is coalesce and nextOp is logical (&&), throw at the pos of nextOp that it can not be mixed.\n         * Symmetrically it also throws when op is logical and nextOp is coalesce\n         */\n        const nextOp = this.state.type;\n        if (\n          (coalesce && (nextOp === tt.logicalOR || nextOp === tt.logicalAND)) ||\n          (logical && nextOp === tt.nullishCoalescing)\n        ) {\n          throw this.raise(\n            Errors.MixingCoalesceWithLogical,\n            this.state.startLoc,\n          );\n        }\n\n        return this.parseExprOp(finishedNode, leftStartLoc, minPrec);\n      }\n    }\n    // PrivateName is followed by `in` and handled by the previous if statement\n    return left as N.Expression;\n  }\n\n  // Helper function for `parseExprOp`. Parse the right-hand side of binary-\n  // operator expressions, then apply any operator-specific functions.\n\n  parseExprOpRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    switch (op) {\n      case tt.pipeline:\n        switch (this.getPluginOption(\"pipelineOperator\", \"proposal\")) {\n          case \"hack\":\n            return this.withTopicBindingContext(() => {\n              return this.parseHackPipeBody();\n            });\n\n          case \"fsharp\":\n            return this.withSoloAwaitPermittingContext(() => {\n              return this.parseFSharpPipelineBody(prec);\n            });\n        }\n\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          // @ts-expect-error: Babel 7 only\n          this.getPluginOption(\"pipelineOperator\", \"proposal\") === \"smart\"\n        ) {\n          return this.withTopicBindingContext(() => {\n            if (this.prodParam.hasYield && this.isContextual(tt._yield)) {\n              throw this.raise(Errors.PipeBodyIsTighter, this.state.startLoc);\n            }\n            return this.parseSmartPipelineBodyInStyle(\n              this.parseExprOpBaseRightExpr(op, prec),\n              startLoc,\n            );\n          });\n        }\n\n      // Falls through.\n      default:\n        return this.parseExprOpBaseRightExpr(op, prec);\n    }\n  }\n\n  // Helper function for `parseExprOpRightExpr`. Parse the right-hand side of\n  // binary-operator expressions without applying any operator-specific functions.\n\n  parseExprOpBaseRightExpr(\n    this: Parser,\n    op: TokenType,\n    prec: number,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    return this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      tokenIsRightAssociative(op) ? prec - 1 : prec,\n    );\n  }\n\n  parseHackPipeBody(this: Parser): N.Expression {\n    const { startLoc } = this.state;\n    const body = this.parseMaybeAssign();\n    const requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(\n      // @ts-expect-error TS2345: Argument of type 'string' is not assignable to parameter of type '\"ArrowFunctionExpression\" | \"YieldExpression\" | \"AssignmentExpression\" | \"ConditionalExpression\"'.\n      body.type,\n    );\n\n    // TODO: Check how to handle type casts in Flow and TS once they are supported\n    if (requiredParentheses && !body.extra?.parenthesized) {\n      this.raise(Errors.PipeUnparenthesizedBody, startLoc, {\n        type: body.type as UnparenthesizedPipeBodyTypes,\n      });\n    }\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      // A Hack pipe body must use the topic reference at least once.\n      this.raise(Errors.PipeTopicUnused, startLoc);\n    }\n\n    return body;\n  }\n\n  checkExponentialAfterUnary(\n    node: N.AwaitExpression | Undone<N.UnaryExpression>,\n  ) {\n    if (this.match(tt.exponent)) {\n      this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);\n    }\n  }\n\n  // Parse unary operators, both prefix and postfix.\n  // https://tc39.es/ecma262/#prod-UnaryExpression\n  parseMaybeUnary(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n    sawUnary?: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const isAwait = this.isContextual(tt._await);\n\n    if (isAwait && this.recordAwaitIfAllowed()) {\n      this.next();\n      const expr = this.parseAwait(startLoc);\n      if (!sawUnary) this.checkExponentialAfterUnary(expr);\n      return expr;\n    }\n    const update = this.match(tt.incDec);\n    const node = this.startNode<N.UnaryExpression | N.UpdateExpression>();\n    if (tokenIsPrefix(this.state.type)) {\n      node.operator = this.state.value;\n      node.prefix = true;\n\n      if (this.match(tt._throw)) {\n        this.expectPlugin(\"throwExpressions\");\n      }\n      const isDelete = this.match(tt._delete);\n      this.next();\n\n      node.argument = this.parseMaybeUnary(null, true);\n\n      this.checkExpressionErrors(refExpressionErrors, true);\n\n      if (this.state.strict && isDelete) {\n        const arg = node.argument;\n\n        if (arg.type === \"Identifier\") {\n          this.raise(Errors.StrictDelete, node);\n        } else if (this.hasPropertyAsPrivateName(arg)) {\n          this.raise(Errors.DeletePrivateField, node);\n        }\n      }\n\n      if (!update) {\n        if (!sawUnary) {\n          this.checkExponentialAfterUnary(node as Undone<N.UnaryExpression>);\n        }\n        return this.finishNode(node, \"UnaryExpression\");\n      }\n    }\n\n    const expr = this.parseUpdate(\n      // @ts-expect-error using \"Undone\" node as \"done\"\n      node,\n      update,\n      refExpressionErrors,\n    );\n\n    if (isAwait) {\n      const { type } = this.state;\n      const startsExpr = this.hasPlugin(\"v8intrinsic\")\n        ? tokenCanStartExpression(type)\n        : tokenCanStartExpression(type) && !this.match(tt.modulo);\n      if (startsExpr && !this.isAmbiguousAwait()) {\n        this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);\n        return this.parseAwait(startLoc);\n      }\n    }\n\n    return expr;\n  }\n\n  // https://tc39.es/ecma262/#prod-UpdateExpression\n  parseUpdate(\n    this: Parser,\n    node: N.Expression,\n    update: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    if (update) {\n      const updateExpressionNode = node as Undone<N.UpdateExpression>;\n      this.checkLVal(\n        updateExpressionNode.argument,\n        this.finishNode(updateExpressionNode, \"UpdateExpression\"),\n      );\n      return node;\n    }\n\n    const startLoc = this.state.startLoc;\n    let expr = this.parseExprSubscripts(refExpressionErrors);\n    if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;\n    while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {\n      const node = this.startNodeAt<N.UpdateExpression>(startLoc);\n      node.operator = this.state.value;\n      node.prefix = false;\n      node.argument = expr;\n      this.next();\n      this.checkLVal(expr, (expr = this.finishNode(node, \"UpdateExpression\")));\n    }\n    return expr;\n  }\n\n  // Parse call, dot, and `[]`-subscript expressions.\n  // https://tc39.es/ecma262/#prod-LeftHandSideExpression\n  parseExprSubscripts(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n    const potentialArrowAt = this.state.potentialArrowAt;\n    const expr = this.parseExprAtom(refExpressionErrors);\n\n    if (this.shouldExitDescending(expr, potentialArrowAt)) {\n      return expr;\n    }\n\n    return this.parseSubscripts(expr, startLoc);\n  }\n\n  parseSubscripts(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls?: boolean | null,\n  ): N.Expression {\n    const state = {\n      optionalChainMember: false,\n      maybeAsyncArrow: this.atPossibleAsyncArrow(base),\n      stop: false,\n    };\n    do {\n      base = this.parseSubscript(base, startLoc, noCalls, state);\n\n      // After parsing a subscript, this isn't \"async\" for sure.\n      state.maybeAsyncArrow = false;\n    } while (!state.stop);\n    return base;\n  }\n\n  /**\n   * @param state Set 'state.stop = true' to indicate that we should stop parsing subscripts.\n   *   state.optionalChainMember to indicate that the member is currently in OptionalChain\n   */\n  parseSubscript(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const { type } = this.state;\n    if (!noCalls && type === tt.doubleColon) {\n      return this.parseBind(base, startLoc, noCalls, state);\n    } else if (tokenIsTemplate(type)) {\n      return this.parseTaggedTemplateExpression(base, startLoc, state);\n    }\n\n    let optional = false;\n\n    if (type === tt.questionDot) {\n      if (noCalls) {\n        this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);\n        if (this.lookaheadCharCode() === charCodes.leftParenthesis) {\n          // stop at `?.` when parsing `new a?.()`\n          state.stop = true;\n          return base;\n        }\n      }\n      state.optionalChainMember = optional = true;\n      this.next();\n    }\n\n    if (!noCalls && this.match(tt.parenL)) {\n      return this.parseCoverCallAndAsyncArrowHead(\n        base,\n        startLoc,\n        state,\n        optional,\n      );\n    } else {\n      const computed = this.eat(tt.bracketL);\n      if (computed || optional || this.eat(tt.dot)) {\n        return this.parseMember(base, startLoc, state, computed, optional);\n      } else {\n        state.stop = true;\n        return base;\n      }\n    }\n  }\n\n  // base[?Yield, ?Await] [ Expression[+In, ?Yield, ?Await] ]\n  // base[?Yield, ?Await] . IdentifierName\n  // base[?Yield, ?Await] . PrivateIdentifier\n  //   where `base` is one of CallExpression, MemberExpression and OptionalChain\n  parseMember(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    computed: boolean,\n    optional: boolean,\n  ): N.OptionalMemberExpression | N.MemberExpression {\n    const node = this.startNodeAt<\n      N.OptionalMemberExpression | N.MemberExpression\n    >(startLoc);\n    node.object = base;\n    node.computed = computed;\n    if (computed) {\n      node.property = this.parseExpression();\n      this.expect(tt.bracketR);\n    } else if (this.match(tt.privateName)) {\n      if (base.type === \"Super\") {\n        this.raise(Errors.SuperPrivateField, startLoc);\n      }\n      this.classScope.usePrivateName(this.state.value, this.state.startLoc);\n      node.property = this.parsePrivateName();\n    } else {\n      node.property = this.parseIdentifier(true);\n    }\n\n    if (state.optionalChainMember) {\n      (node as N.OptionalMemberExpression).optional = optional;\n      return this.finishNode(node, \"OptionalMemberExpression\");\n    } else {\n      return this.finishNode(node, \"MemberExpression\");\n    }\n  }\n\n  // https://github.com/tc39/proposal-bind-operator#syntax\n  parseBind(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    noCalls: boolean | undefined | null,\n    state: N.ParseSubscriptState,\n  ): N.Expression {\n    const node = this.startNodeAt<N.BindExpression>(startLoc);\n    node.object = base;\n    this.next(); // eat '::'\n    node.callee = this.parseNoCallExpr();\n    state.stop = true;\n    return this.parseSubscripts(\n      this.finishNode(node, \"BindExpression\"),\n      startLoc,\n      noCalls,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverCallExpressionAndAsyncArrowHead\n  // CoverCallExpressionAndAsyncArrowHead\n  // CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]\n  // OptionalChain[?Yield, ?Await] Arguments[?Yield, ?Await]\n  parseCoverCallAndAsyncArrowHead(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n    optional: boolean,\n  ): N.Expression {\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    let refExpressionErrors: ExpressionErrors | null = null;\n\n    this.state.maybeInArrowParameters = true;\n    this.next(); // eat `(`\n\n    const node = this.startNodeAt<N.CallExpression | N.OptionalCallExpression>(\n      startLoc,\n    );\n    node.callee = base;\n    const { maybeAsyncArrow, optionalChainMember } = state;\n\n    if (maybeAsyncArrow) {\n      this.expressionScope.enter(newAsyncArrowScope());\n      refExpressionErrors = new ExpressionErrors();\n    }\n\n    if (optionalChainMember) {\n      // @ts-expect-error when optionalChainMember is true, node must be an optional call\n      node.optional = optional;\n    }\n\n    if (optional) {\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n    } else {\n      node.arguments = this.parseCallExpressionArguments(\n        tt.parenR,\n        base.type !== \"Super\",\n        node,\n        refExpressionErrors,\n      );\n    }\n    let finishedNode:\n      | N.CallExpression\n      | N.OptionalCallExpression\n      | N.ArrowFunctionExpression = this.finishCallExpression(\n      node,\n      optionalChainMember,\n    );\n\n    if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {\n      /*:: invariant(refExpressionErrors != null) */\n      state.stop = true;\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      finishedNode = this.parseAsyncArrowFromCallExpression(\n        this.startNodeAt<N.ArrowFunctionExpression>(startLoc),\n        finishedNode as N.CallExpression,\n      );\n    } else {\n      if (maybeAsyncArrow) {\n        this.checkExpressionErrors(refExpressionErrors, true);\n        this.expressionScope.exit();\n      }\n      this.toReferencedArguments(finishedNode);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return finishedNode;\n  }\n\n  toReferencedArguments(\n    node: N.CallExpression | N.OptionalCallExpression,\n    isParenthesizedExpr?: boolean,\n  ) {\n    this.toReferencedListDeep(node.arguments, isParenthesizedExpr);\n  }\n\n  // MemberExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  // CallExpression [?Yield, ?Await] TemplateLiteral[?Yield, ?Await, +Tagged]\n  parseTaggedTemplateExpression(\n    this: Parser,\n    base: N.Expression,\n    startLoc: Position,\n    state: N.ParseSubscriptState,\n  ): N.TaggedTemplateExpression {\n    const node = this.startNodeAt<N.TaggedTemplateExpression>(startLoc);\n    node.tag = base;\n    node.quasi = this.parseTemplate(true);\n    if (state.optionalChainMember) {\n      this.raise(Errors.OptionalChainingNoTemplate, startLoc);\n    }\n    return this.finishNode(node, \"TaggedTemplateExpression\");\n  }\n\n  atPossibleAsyncArrow(base: N.Expression): boolean {\n    return (\n      base.type === \"Identifier\" &&\n      base.name === \"async\" &&\n      this.state.lastTokEndLoc.index === base.end &&\n      !this.canInsertSemicolon() &&\n      // check there are no escape sequences, such as \\u{61}sync\n      base.end - base.start === 5 &&\n      this.offsetToSourcePos(base.start) === this.state.potentialArrowAt\n    );\n  }\n\n  finishCallExpression<T extends N.CallExpression | N.OptionalCallExpression>(\n    node: Undone<T>,\n    optional: boolean,\n  ): T {\n    if (node.callee.type === \"Import\") {\n      if (node.arguments.length === 0 || node.arguments.length > 2) {\n        this.raise(Errors.ImportCallArity, node);\n      } else {\n        for (const arg of node.arguments) {\n          if (arg.type === \"SpreadElement\") {\n            this.raise(Errors.ImportCallSpreadArgument, arg);\n          }\n        }\n      }\n    }\n    return this.finishNode(\n      node,\n      optional ? \"OptionalCallExpression\" : \"CallExpression\",\n    );\n  }\n\n  parseCallExpressionArguments(\n    this: Parser,\n    close: TokenType,\n    allowPlaceholder?: boolean,\n    nodeForExtra?: Undone<N.Node> | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): Array<N.Expression> {\n    const elts: N.Expression[] = [];\n    let first = true;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(\n        this.parseExprListItem(false, refExpressionErrors, allowPlaceholder),\n      );\n    }\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return elts;\n  }\n\n  shouldParseAsyncArrow(): boolean {\n    return this.match(tt.arrow) && !this.canInsertSemicolon();\n  }\n\n  parseAsyncArrowFromCallExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    call: N.CallExpression,\n  ): N.ArrowFunctionExpression {\n    this.resetPreviousNodeTrailingComments(call);\n    this.expect(tt.arrow);\n    this.parseArrowExpression(\n      node,\n      call.arguments,\n      true,\n      call.extra?.trailingCommaLoc,\n    );\n    // mark inner comments of `async()` as inner comments of `async () =>`\n    if (call.innerComments) {\n      setInnerComments(node, call.innerComments);\n    }\n    // mark trailing comments of `async` to be inner comments\n    if (call.callee.trailingComments) {\n      setInnerComments(node, call.callee.trailingComments);\n    }\n    return node as N.ArrowFunctionExpression;\n  }\n\n  // Parse a no-call expression (like argument of `new` or `::` operators).\n  // https://tc39.es/ecma262/#prod-MemberExpression\n  parseNoCallExpr(this: Parser): N.Expression {\n    const startLoc = this.state.startLoc;\n    return this.parseSubscripts(this.parseExprAtom(), startLoc, true);\n  }\n\n  // Parse an atomic expression — 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  // https://tc39.es/ecma262/#prod-PrimaryExpression\n  // https://tc39.es/ecma262/#prod-AsyncArrowFunction\n  // PrimaryExpression\n  // Super\n  // Import\n  // AsyncArrowFunction\n\n  parseExprAtom(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.Expression {\n    let node;\n    let decorators: N.Decorator[] | null = null;\n\n    const { type } = this.state;\n    switch (type) {\n      case tt._super:\n        return this.parseSuper();\n\n      case tt._import:\n        node = this.startNode<N.MetaProperty | N.Import | N.ImportExpression>();\n        this.next();\n\n        if (this.match(tt.dot)) {\n          return this.parseImportMetaProperty(node as Undone<N.MetaProperty>);\n        }\n\n        if (this.match(tt.parenL)) {\n          if (this.optionFlags & OptionFlags.CreateImportExpressions) {\n            return this.parseImportCall(node as Undone<N.ImportExpression>);\n          } else {\n            return this.finishNode(node, \"Import\");\n          }\n        } else {\n          this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);\n          return this.finishNode(node, \"Import\");\n        }\n\n      case tt._this:\n        node = this.startNode<N.ThisExpression>();\n        this.next();\n        return this.finishNode(node, \"ThisExpression\");\n\n      case tt._do: {\n        return this.parseDo(this.startNode(), false);\n      }\n\n      case tt.slash:\n      case tt.slashAssign: {\n        this.readRegexp();\n        return this.parseRegExpLiteral(this.state.value);\n      }\n\n      case tt.num:\n        return this.parseNumericLiteral(this.state.value);\n\n      case tt.bigint:\n        return this.parseBigIntLiteral(this.state.value);\n\n      case tt.string:\n        return this.parseStringLiteral(this.state.value);\n\n      case tt._null:\n        return this.parseNullLiteral();\n\n      case tt._true:\n        return this.parseBooleanLiteral(true);\n      case tt._false:\n        return this.parseBooleanLiteral(false);\n\n      case tt.parenL: {\n        const canBeArrow = this.state.potentialArrowAt === this.state.start;\n        return this.parseParenAndDistinguishExpression(canBeArrow);\n      }\n\n      case tt.bracketBarL:\n      case tt.bracketHashL: {\n        return this.parseArrayLike(\n          this.state.type === tt.bracketBarL ? tt.bracketBarR : tt.bracketR,\n          /* canBePattern */ false,\n          /* isTuple */ true,\n        );\n      }\n      case tt.bracketL: {\n        return this.parseArrayLike(\n          tt.bracketR,\n          /* canBePattern */ true,\n          /* isTuple */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt.braceBarL:\n      case tt.braceHashL: {\n        return this.parseObjectLike(\n          this.state.type === tt.braceBarL ? tt.braceBarR : tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ true,\n        );\n      }\n      case tt.braceL: {\n        return this.parseObjectLike(\n          tt.braceR,\n          /* isPattern */ false,\n          /* isRecord */ false,\n          refExpressionErrors,\n        );\n      }\n      case tt._function:\n        return this.parseFunctionOrFunctionSent();\n\n      case tt.at:\n        decorators = this.parseDecorators();\n      // fall through\n      case tt._class:\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            this.startNode<N.ClassExpression>(),\n          ),\n          false,\n        );\n\n      case tt._new:\n        return this.parseNewOrNewTarget();\n\n      case tt.templateNonTail:\n      case tt.templateTail:\n        return this.parseTemplate(false);\n\n      // BindExpression[Yield]\n      //   :: MemberExpression[?Yield]\n      case tt.doubleColon: {\n        node = this.startNode<N.BindExpression>();\n        this.next();\n        node.object = null;\n        const callee = (node.callee = this.parseNoCallExpr());\n        if (callee.type === \"MemberExpression\") {\n          return this.finishNode(node, \"BindExpression\");\n        } else {\n          throw this.raise(Errors.UnsupportedBind, callee);\n        }\n      }\n\n      case tt.privateName: {\n        // Standalone private names are only allowed in \"#x in obj\"\n        // expressions, and they are directly handled by callers of\n        // parseExprOp. If we reach this, the input is always invalid.\n        // We can throw a better error message and recover, rather than\n        // just throwing \"Unexpected token\" (which is the default\n        // behavior of this big switch statement).\n        this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {\n          identifierName: this.state.value,\n        });\n        return this.parsePrivateName() as unknown as N.Expression;\n      }\n\n      case tt.moduloAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.modulo, \"%\");\n      }\n\n      case tt.xorAssign: {\n        return this.parseTopicReferenceThenEqualsSign(tt.bitwiseXOR, \"^\");\n      }\n\n      case tt.doubleCaret:\n      case tt.doubleAt: {\n        return this.parseTopicReference(\"hack\");\n      }\n\n      case tt.bitwiseXOR:\n      case tt.modulo:\n      case tt.hash: {\n        const pipeProposal = this.getPluginOption(\n          \"pipelineOperator\",\n          \"proposal\",\n        );\n\n        if (pipeProposal) {\n          return this.parseTopicReference(pipeProposal);\n        }\n        this.unexpected();\n        break;\n      }\n\n      case tt.lt: {\n        const lookaheadCh = this.input.codePointAt(this.nextTokenStart());\n        if (\n          isIdentifierStart(lookaheadCh) || // Element/Type Parameter <foo>\n          lookaheadCh === charCodes.greaterThan // Fragment <>\n        ) {\n          this.expectOnePlugin([\"jsx\", \"flow\", \"typescript\"]);\n        } else {\n          this.unexpected();\n        }\n        break;\n      }\n\n      default:\n        if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n          return this.parseDecimalLiteral(this.state.value);\n        }\n\n        if (tokenIsIdentifier(type)) {\n          if (\n            this.isContextual(tt._module) &&\n            this.lookaheadInLineCharCode() === charCodes.leftCurlyBrace\n          ) {\n            return this.parseModuleExpression();\n          }\n          const canBeArrow = this.state.potentialArrowAt === this.state.start;\n          const containsEsc = this.state.containsEsc;\n          const id = this.parseIdentifier();\n\n          if (\n            !containsEsc &&\n            id.name === \"async\" &&\n            !this.canInsertSemicolon()\n          ) {\n            const { type } = this.state;\n            if (type === tt._function) {\n              this.resetPreviousNodeTrailingComments(id);\n              this.next();\n              return this.parseAsyncFunctionExpression(\n                this.startNodeAtNode(id),\n              );\n            } else if (tokenIsIdentifier(type)) {\n              // If the next token begins with \"=\", commit to parsing an async\n              // arrow function. (Peeking ahead for \"=\" lets us avoid a more\n              // expensive full-token lookahead on this common path.)\n              if (this.lookaheadCharCode() === charCodes.equalsTo) {\n                // although `id` is not used in async arrow unary function,\n                // we don't need to reset `async`'s trailing comments because\n                // it will be attached to the upcoming async arrow binding identifier\n                return this.parseAsyncArrowUnaryFunction(\n                  this.startNodeAtNode(id),\n                );\n              } else {\n                // Otherwise, treat \"async\" as an identifier and let calling code\n                // deal with the current tt.name token.\n                return id;\n              }\n            } else if (type === tt._do) {\n              this.resetPreviousNodeTrailingComments(id);\n              return this.parseDo(this.startNodeAtNode(id), true);\n            }\n          }\n\n          if (\n            canBeArrow &&\n            this.match(tt.arrow) &&\n            !this.canInsertSemicolon()\n          ) {\n            this.next();\n            return this.parseArrowExpression(\n              this.startNodeAtNode(id),\n              [id],\n              false,\n            );\n          }\n\n          return id;\n        } else {\n          this.unexpected();\n        }\n    }\n  }\n\n  // This helper method should only be called\n  // when the parser has reached a potential Hack pipe topic token\n  // that is followed by an equals sign.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  // If we find ^= or %= in an expression position\n  // (i.e., the tt.moduloAssign or tt.xorAssign token types), and if the\n  // Hack-pipes proposal is active with ^ or % as its topicToken, then the ^ or\n  // % could be the topic token (e.g., in x |> ^==y or x |> ^===y), and so we\n  // reparse the current token as ^ or %.\n  // Otherwise, this throws an unexpected-token error.\n  parseTopicReferenceThenEqualsSign(\n    topicTokenType: TokenType,\n    topicTokenValue: string,\n  ): N.Expression {\n    const pipeProposal = this.getPluginOption(\"pipelineOperator\", \"proposal\");\n\n    if (pipeProposal) {\n      // Set the most-recent token to be a topic token\n      // given by the tokenType and tokenValue.\n      // Now the next readToken() call (in parseTopicReference)\n      // will consume that “topic token”.\n      this.state.type = topicTokenType;\n      this.state.value = topicTokenValue;\n      // Rewind the tokenizer to the end of the “topic token”, so that the\n      // following token starts at the equals sign after that topic token.\n      this.state.pos--;\n      this.state.end--;\n      // This is safe to do since the preceding character was either ^ or %, and\n      // thus not a newline.\n      this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);\n      // Now actually consume the topic token.\n      return this.parseTopicReference(pipeProposal);\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // This helper method should only be called\n  // when the proposal-pipeline-operator plugin is active,\n  // and when the parser has reached a potential Hack pipe topic token.\n  // Although a pipe-operator proposal is assumed to be active,\n  // its configuration might not match the current token’s type.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  parseTopicReference(pipeProposal: string): N.Expression {\n    const node = this.startNode<N.TopicReference>();\n    const startLoc = this.state.startLoc;\n    const tokenType = this.state.type;\n\n    // Consume the current token.\n    this.next();\n\n    // If the pipe-operator plugin’s configuration matches the current token’s type,\n    // then this will return `node`, will have been finished as a topic reference.\n    // Otherwise, this will throw a `PipeTopicUnconfiguredToken` error.\n    return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);\n  }\n\n  // This helper method attempts to finish the given `node`\n  // into a topic-reference node for the given `pipeProposal`.\n  // See <https://github.com/js-choi/proposal-hack-pipes>.\n  //\n  // The method assumes that any topic token was consumed before it was called.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // and if the given `tokenType` matches the plugin’s configuration,\n  // then this method will return the finished `node`.\n  //\n  // If the `pipelineOperator` plugin is active,\n  // but if the given `tokenType` does not match the plugin’s configuration,\n  // then this method will throw a `PipeTopicUnconfiguredToken` error.\n  finishTopicReference<\n    T extends N.PipelinePrimaryTopicReference | N.TopicReference,\n  >(\n    node: Undone<T>,\n    startLoc: Position,\n    pipeProposal: string,\n    tokenType: TokenType,\n  ): T {\n    if (\n      this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)\n    ) {\n      // The token matches the plugin’s configuration.\n      // The token is therefore a topic reference.\n\n      if (process.env.BABEL_8_BREAKING || pipeProposal === \"hack\") {\n        if (!this.topicReferenceIsAllowedInCurrentContext()) {\n          this.raise(Errors.PipeTopicUnbound, startLoc);\n        }\n\n        // Register the topic reference so that its pipe body knows\n        // that its topic was used at least once.\n        this.registerTopicReference();\n\n        return this.finishNode(node, \"TopicReference\");\n      } else {\n        // pipeProposal is \"smart\"\n\n        if (!this.topicReferenceIsAllowedInCurrentContext()) {\n          this.raise(Errors.PrimaryTopicNotAllowed, startLoc);\n        }\n        this.registerTopicReference();\n        return this.finishNode(node, \"PipelinePrimaryTopicReference\");\n      }\n    } else {\n      // The token does not match the plugin’s configuration.\n      throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {\n        token: tokenLabelName(tokenType),\n      });\n    }\n  }\n\n  // This helper method tests whether the given token type\n  // matches the pipelineOperator parser plugin’s configuration.\n  // If the active pipe proposal is Hack style,\n  // and if the given token is the same as the plugin configuration’s `topicToken`,\n  // then this is a valid topic reference.\n  // If the active pipe proposal is smart mix,\n  // then the topic token must always be `#`.\n  // If the active pipe proposal is neither (e.g., \"minimal\"(Babel 7) or \"fsharp\"),\n  // then an error is thrown.\n  testTopicReferenceConfiguration(\n    pipeProposal: string,\n    startLoc: Position,\n    tokenType: TokenType,\n  ): boolean {\n    switch (pipeProposal) {\n      case \"hack\": {\n        return this.hasPlugin([\n          \"pipelineOperator\",\n          {\n            // @ts-expect-error token must have a label\n            topicToken: tokenLabelName(tokenType),\n          },\n        ]);\n      }\n      case \"smart\":\n        return tokenType === tt.hash;\n      default:\n        throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);\n    }\n  }\n\n  // async [no LineTerminator here] AsyncArrowBindingIdentifier[?Yield] [no LineTerminator here] => AsyncConciseBody[?In]\n  parseAsyncArrowUnaryFunction(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n  ): N.ArrowFunctionExpression {\n    // We don't need to push a new ParameterDeclarationScope here since we are sure\n    // 1) it is an async arrow, 2) no biding pattern is allowed in params\n    this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));\n    const params = [this.parseIdentifier()];\n    this.prodParam.exit();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());\n    }\n    this.expect(tt.arrow);\n    // let foo = async bar => {};\n    return this.parseArrowExpression(node, params, true);\n  }\n\n  // https://github.com/tc39/proposal-do-expressions\n  // https://github.com/tc39/proposal-async-do-expressions\n  parseDo(\n    this: Parser,\n    node: Undone<N.DoExpression>,\n    isAsync: boolean,\n  ): N.DoExpression {\n    this.expectPlugin(\"doExpressions\");\n    if (isAsync) {\n      this.expectPlugin(\"asyncDoExpressions\");\n    }\n    node.async = isAsync;\n    this.next(); // eat `do`\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    if (isAsync) {\n      // AsyncDoExpression :\n      // async [no LineTerminator here] do Block[~Yield, +Await, ~Return]\n      this.prodParam.enter(ParamKind.PARAM_AWAIT);\n      node.body = this.parseBlock();\n      this.prodParam.exit();\n    } else {\n      node.body = this.parseBlock();\n    }\n\n    this.state.labels = oldLabels;\n    return this.finishNode(node, \"DoExpression\");\n  }\n\n  // Parse the `super` keyword\n  parseSuper(): N.Super {\n    const node = this.startNode<N.Super>();\n    this.next(); // eat `super`\n    if (\n      this.match(tt.parenL) &&\n      !this.scope.allowDirectSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.SuperNotAllowed, node);\n    } else if (\n      !this.scope.allowSuper &&\n      !(this.optionFlags & OptionFlags.AllowSuperOutsideMethod)\n    ) {\n      this.raise(Errors.UnexpectedSuper, node);\n    }\n\n    if (\n      !this.match(tt.parenL) &&\n      !this.match(tt.bracketL) &&\n      !this.match(tt.dot)\n    ) {\n      this.raise(Errors.UnsupportedSuper, node);\n    }\n\n    return this.finishNode(node, \"Super\");\n  }\n\n  parsePrivateName(): N.PrivateName {\n    const node = this.startNode<N.PrivateName>();\n    const id = this.startNodeAt<N.Identifier>(\n      // The position is hardcoded because we merge `#` and name into a single\n      // tt.privateName token\n      createPositionWithColumnOffset(this.state.startLoc, 1),\n    );\n    const name = this.state.value;\n    this.next(); // eat #name;\n    node.id = this.createIdentifier(id, name);\n    return this.finishNode(node, \"PrivateName\");\n  }\n\n  parseFunctionOrFunctionSent(\n    this: Parser,\n  ): N.FunctionExpression | N.MetaProperty {\n    const node = this.startNode<N.FunctionExpression | N.MetaProperty>();\n\n    // We do not do parseIdentifier here because when parseFunctionOrFunctionSent\n    // is called we already know that the current token is a \"name\" with the value \"function\"\n    // This will improve perf a tiny little bit as we do not do validation but more importantly\n    // here is that parseIdentifier will remove an item from the expression stack\n    // if \"function\" or \"class\" is parsed as identifier (in objects e.g.), which should not happen here.\n    this.next(); // eat `function`\n\n    if (this.prodParam.hasYield && this.match(tt.dot)) {\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"function\",\n      );\n      this.next(); // eat `.`\n      // https://github.com/tc39/proposal-function.sent#syntax-1\n      if (this.match(tt._sent)) {\n        this.expectPlugin(\"functionSent\");\n      } else if (!this.hasPlugin(\"functionSent\")) {\n        // The code wasn't `function.sent` but just `function.`, so a simple error is less confusing.\n        this.unexpected();\n      }\n      return this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"sent\",\n      );\n    }\n    return this.parseFunction(node as Undone<N.FunctionExpression>);\n  }\n\n  parseMetaProperty(\n    node: Undone<N.MetaProperty>,\n    meta: N.Identifier,\n    propertyName: string,\n  ): N.MetaProperty {\n    node.meta = meta;\n\n    const containsEsc = this.state.containsEsc;\n\n    node.property = this.parseIdentifier(true);\n\n    if (node.property.name !== propertyName || containsEsc) {\n      this.raise(Errors.UnsupportedMetaProperty, node.property, {\n        target: meta.name,\n        onlyValidPropertyName: propertyName,\n      });\n    }\n\n    return this.finishNode(node, \"MetaProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportMeta\n  parseImportMetaProperty(\n    this: Parser,\n    node: Undone<N.MetaProperty | N.ImportExpression>,\n  ): N.MetaProperty | N.ImportExpression {\n    const id = this.createIdentifier(\n      this.startNodeAtNode<N.Identifier>(node),\n      \"import\",\n    );\n    this.next(); // eat `.`\n\n    if (this.isContextual(tt._meta)) {\n      if (!this.inModule) {\n        this.raise(Errors.ImportMetaOutsideModule, id);\n      }\n      this.sawUnambiguousESM = true;\n    } else if (this.isContextual(tt._source) || this.isContextual(tt._defer)) {\n      const isSource = this.isContextual(tt._source);\n\n      this.expectPlugin(\n        isSource ? \"sourcePhaseImports\" : \"deferredImportEvaluation\",\n      );\n      if (!(this.optionFlags & OptionFlags.CreateImportExpressions)) {\n        throw this.raise(\n          Errors.DynamicImportPhaseRequiresImportExpressions,\n          this.state.startLoc,\n          {\n            phase: this.state.value,\n          },\n        );\n      }\n      this.next();\n      (node as Undone<N.ImportExpression>).phase = isSource\n        ? \"source\"\n        : \"defer\";\n      return this.parseImportCall(node as Undone<N.ImportExpression>);\n    }\n\n    return this.parseMetaProperty(node as Undone<N.MetaProperty>, id, \"meta\");\n  }\n\n  parseLiteralAtNode<T extends N.Node>(\n    value: any,\n    type: T[\"type\"],\n    node: any,\n  ): T {\n    this.addExtra(node, \"rawValue\", value);\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.value = value;\n    this.next();\n    return this.finishNode<T>(node, type);\n  }\n\n  parseLiteral<T extends N.Node>(value: any, type: T[\"type\"]): T {\n    const node = this.startNode();\n    return this.parseLiteralAtNode(value, type, node);\n  }\n\n  parseStringLiteral(value: any) {\n    return this.parseLiteral<N.StringLiteral>(value, \"StringLiteral\");\n  }\n\n  parseNumericLiteral(value: any) {\n    return this.parseLiteral<N.NumericLiteral>(value, \"NumericLiteral\");\n  }\n\n  parseBigIntLiteral(value: any) {\n    return this.parseLiteral<N.BigIntLiteral>(value, \"BigIntLiteral\");\n  }\n\n  // TODO: Remove this in Babel 8\n  parseDecimalLiteral(value: any) {\n    return this.parseLiteral<N.DecimalLiteral>(value, \"DecimalLiteral\");\n  }\n\n  parseRegExpLiteral(value: {\n    value: any;\n    pattern: string;\n    flags: N.RegExpLiteral[\"flags\"];\n  }) {\n    const node = this.startNode<N.RegExpLiteral>();\n    this.addExtra(\n      node,\n      \"raw\",\n      this.input.slice(this.offsetToSourcePos(node.start), this.state.end),\n    );\n    node.pattern = value.pattern;\n    node.flags = value.flags;\n    this.next();\n    return this.finishNode(node, \"RegExpLiteral\");\n  }\n\n  parseBooleanLiteral(value: boolean) {\n    const node = this.startNode<N.BooleanLiteral>();\n    node.value = value;\n    this.next();\n    return this.finishNode(node, \"BooleanLiteral\");\n  }\n\n  parseNullLiteral() {\n    const node = this.startNode<N.NullLiteral>();\n    this.next();\n    return this.finishNode(node, \"NullLiteral\");\n  }\n\n  // https://tc39.es/ecma262/#prod-CoverParenthesizedExpressionAndArrowParameterList\n  parseParenAndDistinguishExpression(\n    this: Parser,\n    canBeArrow: boolean,\n  ): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    let val;\n    this.next(); // eat `(`\n    this.expressionScope.enter(newArrowHeadScope());\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.maybeInArrowParameters = true;\n    this.state.inFSharpPipelineDirectBody = false;\n\n    const innerStartLoc = this.state.startLoc;\n    const exprList: (N.Expression | N.RestElement)[] = [];\n    const refExpressionErrors = new ExpressionErrors();\n    let first = true;\n    let spreadStartLoc;\n    let optionalCommaStartLoc;\n\n    while (!this.match(tt.parenR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(\n          tt.comma,\n          refExpressionErrors.optionalParametersLoc === null\n            ? null\n            : refExpressionErrors.optionalParametersLoc,\n        );\n        if (this.match(tt.parenR)) {\n          optionalCommaStartLoc = this.state.startLoc;\n          break;\n        }\n      }\n\n      if (this.match(tt.ellipsis)) {\n        const spreadNodeStartLoc = this.state.startLoc;\n        spreadStartLoc = this.state.startLoc;\n        exprList.push(\n          this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc),\n        );\n\n        if (!this.checkCommaAfterRest(charCodes.rightParenthesis)) {\n          break;\n        }\n      } else {\n        exprList.push(\n          this.parseMaybeAssignAllowIn(\n            refExpressionErrors,\n            this.parseParenItem,\n          ),\n        );\n      }\n    }\n\n    const innerEndLoc = this.state.lastTokEndLoc;\n    this.expect(tt.parenR);\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    let arrowNode = this.startNodeAt<N.ArrowFunctionExpression>(startLoc);\n    if (\n      canBeArrow &&\n      this.shouldParseArrow(exprList) &&\n      (arrowNode = this.parseArrow(arrowNode))\n    ) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.expressionScope.validateAsPattern();\n      this.expressionScope.exit();\n      this.parseArrowExpression(arrowNode, exprList, false);\n      // @ts-expect-error todo(flow->ts) improve node types\n      return arrowNode;\n    }\n    this.expressionScope.exit();\n\n    if (!exprList.length) {\n      this.unexpected(this.state.lastTokStartLoc);\n    }\n    if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);\n    if (spreadStartLoc) this.unexpected(spreadStartLoc);\n    this.checkExpressionErrors(refExpressionErrors, true);\n\n    this.toReferencedListDeep(exprList, /* isParenthesizedExpr */ true);\n    if (exprList.length > 1) {\n      val = this.startNodeAt<N.SequenceExpression>(innerStartLoc);\n      val.expressions = exprList as N.Expression[];\n      // finish node at current location so it can pick up comments after `)`\n      this.finishNode(val, \"SequenceExpression\");\n      this.resetEndLocation(val, innerEndLoc);\n    } else {\n      val = exprList[0];\n    }\n\n    return this.wrapParenthesis(\n      startLoc,\n      // @ts-expect-error todo(flow->ts)\n      val,\n    );\n  }\n\n  wrapParenthesis(startLoc: Position, expression: N.Expression): N.Expression {\n    if (!(this.optionFlags & OptionFlags.CreateParenthesizedExpressions)) {\n      this.addExtra(expression, \"parenthesized\", true);\n      this.addExtra(expression, \"parenStart\", startLoc.index);\n\n      this.takeSurroundingComments(\n        expression,\n        startLoc.index,\n        this.state.lastTokEndLoc.index,\n      );\n\n      return expression;\n    }\n\n    const parenExpression =\n      this.startNodeAt<N.ParenthesizedExpression>(startLoc);\n    parenExpression.expression = expression;\n    return this.finishNode(parenExpression, \"ParenthesizedExpression\");\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars -- `params` is used in typescript plugin\n  shouldParseArrow(params: Array<N.Node>): boolean {\n    return !this.canInsertSemicolon();\n  }\n\n  parseArrow(\n    node: Undone<N.ArrowFunctionExpression>,\n  ): Undone<N.ArrowFunctionExpression> | undefined {\n    if (this.eat(tt.arrow)) {\n      return node;\n    }\n  }\n\n  parseParenItem<T extends N.Expression | N.RestElement | N.SpreadElement>(\n    node: T,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    startLoc: Position,\n  ): T | N.TypeCastExpression | N.TsTypeCastExpression {\n    return node;\n  }\n\n  parseNewOrNewTarget(this: Parser): N.NewExpression | N.MetaProperty {\n    const node = this.startNode<N.NewExpression | N.MetaProperty>();\n    this.next();\n    if (this.match(tt.dot)) {\n      // https://tc39.es/ecma262/#prod-NewTarget\n      const meta = this.createIdentifier(\n        this.startNodeAtNode<N.Identifier>(node),\n        \"new\",\n      );\n      this.next();\n      const metaProp = this.parseMetaProperty(\n        node as Undone<N.MetaProperty>,\n        meta,\n        \"target\",\n      );\n\n      if (\n        !this.scope.inNonArrowFunction &&\n        !this.scope.inClass &&\n        !(this.optionFlags & OptionFlags.AllowNewTargetOutsideFunction)\n      ) {\n        this.raise(Errors.UnexpectedNewTarget, metaProp);\n      }\n\n      return metaProp;\n    }\n\n    return this.parseNew(node as Undone<N.NewExpression>);\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 — 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  // https://tc39.es/ecma262/#prod-NewExpression\n  parseNew(this: Parser, node: Undone<N.NewExpression>): N.NewExpression {\n    this.parseNewCallee(node);\n\n    if (this.eat(tt.parenL)) {\n      const args = this.parseExprList(tt.parenR);\n      this.toReferencedList(args);\n      // (parseExprList should be all non-null in this case)\n      node.arguments = args;\n    } else {\n      node.arguments = [];\n    }\n\n    return this.finishNode(node, \"NewExpression\");\n  }\n\n  parseNewCallee(this: Parser, node: Undone<N.NewExpression>): void {\n    const isImport = this.match(tt._import);\n    const callee = this.parseNoCallExpr();\n    node.callee = callee;\n    if (\n      isImport &&\n      (callee.type === \"Import\" || callee.type === \"ImportExpression\")\n    ) {\n      this.raise(Errors.ImportCallNotNewExpression, callee);\n    }\n  }\n\n  // Parse template expression.\n\n  parseTemplateElement(isTagged: boolean): N.TemplateElement {\n    const { start, startLoc, end, value } = this.state;\n    const elemStart = start + 1;\n    const elem = this.startNodeAt<N.TemplateElement>(\n      createPositionWithColumnOffset(startLoc, 1),\n    );\n    if (value === null) {\n      if (!isTagged) {\n        this.raise(\n          Errors.InvalidEscapeSequenceTemplate,\n          // FIXME: Adding 1 is probably wrong.\n          createPositionWithColumnOffset(\n            this.state.firstInvalidTemplateEscapePos,\n            1,\n          ),\n        );\n      }\n    }\n\n    const isTail = this.match(tt.templateTail);\n    const endOffset = isTail ? -1 : -2;\n    const elemEnd = end + endOffset;\n    elem.value = {\n      raw: this.input.slice(elemStart, elemEnd).replace(/\\r\\n?/g, \"\\n\"),\n      cooked: value === null ? null : value.slice(1, endOffset),\n    };\n    elem.tail = isTail;\n    this.next();\n    const finishedNode = this.finishNode(elem, \"TemplateElement\");\n    this.resetEndLocation(\n      finishedNode,\n      createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset),\n    );\n    return finishedNode;\n  }\n\n  // https://tc39.es/ecma262/#prod-TemplateLiteral\n  parseTemplate(this: Parser, isTagged: boolean): N.TemplateLiteral {\n    const node = this.startNode<N.TemplateLiteral>();\n    let curElt = this.parseTemplateElement(isTagged);\n    const quasis = [curElt];\n    const substitutions = [];\n    while (!curElt.tail) {\n      substitutions.push(this.parseTemplateSubstitution());\n      this.readTemplateContinuation();\n      quasis.push((curElt = this.parseTemplateElement(isTagged)));\n    }\n    // Type cast from (N.Expression[] | N.TsType[]). parseTemplateSubstitution\n    // returns consistent results.\n    node.expressions = substitutions as N.Expression[] | N.TsType[];\n    node.quasis = quasis;\n    return this.finishNode(node, \"TemplateLiteral\");\n  }\n\n  // This is overwritten by the TypeScript plugin to parse template types\n  parseTemplateSubstitution(this: Parser): N.Expression | N.TsType {\n    return this.parseExpression();\n  }\n\n  // Parse an object literal, binding pattern, or record.\n\n  parseObjectLike(\n    close: TokenType,\n    isPattern: true,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectPattern;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: false | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectExpression;\n  parseObjectLike(\n    close: TokenType,\n    isPattern: false,\n    isRecord?: true,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.RecordExpression;\n  parseObjectLike<T extends N.ObjectPattern | N.ObjectExpression>(\n    this: Parser,\n    close: TokenType,\n    isPattern: boolean,\n    isRecord?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    if (isRecord) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    let sawProto = false;\n    let first = true;\n    const node = this.startNode<\n      N.ObjectExpression | N.ObjectPattern | N.RecordExpression\n    >();\n\n    node.properties = [];\n    this.next();\n\n    while (!this.match(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          this.addTrailingCommaExtraToNode(node);\n          break;\n        }\n      }\n\n      let prop;\n      if (isPattern) {\n        prop = this.parseBindingProperty();\n      } else {\n        prop = this.parsePropertyDefinition(refExpressionErrors);\n        sawProto = this.checkProto(\n          prop,\n          isRecord,\n          sawProto,\n          refExpressionErrors,\n        );\n      }\n\n      if (\n        isRecord &&\n        !this.isObjectProperty(prop) &&\n        prop.type !== \"SpreadElement\"\n      ) {\n        this.raise(Errors.InvalidRecordProperty, prop);\n      }\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-expect-error shorthand may not index prop\n        if (prop.shorthand) {\n          this.addExtra(prop, \"shorthand\", true);\n        }\n      }\n\n      // @ts-expect-error Fixme: refine typings\n      node.properties.push(prop);\n    }\n\n    this.next();\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    let type = \"ObjectExpression\";\n    if (isPattern) {\n      type = \"ObjectPattern\";\n    } else if (isRecord) {\n      type = \"RecordExpression\";\n    }\n    // @ts-expect-error type is well defined\n    return this.finishNode(node, type);\n  }\n\n  addTrailingCommaExtraToNode(node: Undone<N.Node>): void {\n    this.addExtra(node, \"trailingComma\", this.state.lastTokStartLoc.index);\n    this.addExtra(node, \"trailingCommaLoc\", this.state.lastTokStartLoc, false);\n  }\n\n  // Check grammar production:\n  //   IdentifierName *_opt PropertyName\n  // It is used in `parsePropertyDefinition` to detect AsyncMethod and Accessors\n  maybeAsyncOrAccessorProp(\n    prop: Undone<N.ObjectProperty>,\n  ): prop is typeof prop & { key: N.Identifier } {\n    return (\n      !prop.computed &&\n      prop.key.type === \"Identifier\" &&\n      (this.isLiteralPropertyName() ||\n        this.match(tt.bracketL) ||\n        this.match(tt.star))\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyDefinition\n  parsePropertyDefinition(\n    this: Parser,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectMember | N.SpreadElement {\n    let decorators = [];\n    if (this.match(tt.at)) {\n      if (this.hasPlugin(\"decorators\")) {\n        this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);\n      }\n\n      // we needn't check if decorators (stage 0) plugin is enabled since it's checked by\n      // the call to this.parseDecorator\n      while (this.match(tt.at)) {\n        decorators.push(this.parseDecorator());\n      }\n    }\n\n    const prop = this.startNode<N.ObjectProperty>();\n    let isAsync = false;\n    let isAccessor = false;\n    let startLoc;\n\n    if (this.match(tt.ellipsis)) {\n      if (decorators.length) this.unexpected();\n      return this.parseSpread();\n    }\n\n    if (decorators.length) {\n      prop.decorators = decorators;\n      decorators = [];\n    }\n\n    prop.method = false;\n\n    if (refExpressionErrors) {\n      startLoc = this.state.startLoc;\n    }\n\n    let isGenerator = this.eat(tt.star);\n    this.parsePropertyNamePrefixOperator(prop);\n    const containsEsc = this.state.containsEsc;\n    this.parsePropertyName(prop, refExpressionErrors);\n\n    if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {\n      const { key } = prop;\n      const keyName = key.name;\n      // https://tc39.es/ecma262/#prod-AsyncMethod\n      // https://tc39.es/ecma262/#prod-AsyncGeneratorMethod\n      if (keyName === \"async\" && !this.hasPrecedingLineBreak()) {\n        isAsync = true;\n        this.resetPreviousNodeTrailingComments(key);\n        isGenerator = this.eat(tt.star);\n        this.parsePropertyName(prop);\n      }\n      // get PropertyName[?Yield, ?Await] () { FunctionBody[~Yield, ~Await] }\n      // set PropertyName[?Yield, ?Await] ( PropertySetParameterList ) { FunctionBody[~Yield, ~Await] }\n      if (keyName === \"get\" || keyName === \"set\") {\n        isAccessor = true;\n        this.resetPreviousNodeTrailingComments(key);\n        prop.kind = keyName;\n        if (this.match(tt.star)) {\n          isGenerator = true;\n          this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {\n            kind: keyName,\n          });\n          this.next();\n        }\n        this.parsePropertyName(prop);\n      }\n    }\n\n    return this.parseObjPropValue(\n      prop,\n      startLoc,\n      isGenerator,\n      isAsync,\n      false /* isPattern */,\n      isAccessor,\n      refExpressionErrors,\n    );\n  }\n\n  getGetterSetterExpectedParamCount(\n    method: N.ObjectMethod | N.ClassMethod,\n  ): number {\n    return method.kind === \"get\" ? 0 : 1;\n  }\n\n  // This exists so we can override within the ESTree plugin\n  getObjectOrClassMethodParams(method: N.ObjectMethod | N.ClassMethod) {\n    return method.params;\n  }\n\n  // get methods aren't allowed to have any parameters\n  // set methods must have exactly 1 parameter which is not a rest parameter\n  checkGetterSetterParams(method: N.ObjectMethod | N.ClassMethod): void {\n    const paramCount = this.getGetterSetterExpectedParamCount(method);\n    const params = this.getObjectOrClassMethodParams(method);\n\n    if (params.length !== paramCount) {\n      this.raise(\n        method.kind === \"get\" ? Errors.BadGetterArity : Errors.BadSetterArity,\n        method,\n      );\n    }\n\n    if (\n      method.kind === \"set\" &&\n      params[params.length - 1]?.type === \"RestElement\"\n    ) {\n      this.raise(Errors.BadSetterRestParameter, method);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-MethodDefinition\n  parseObjectMethod(\n    this: Parser,\n    prop: Undone<N.ObjectMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n  ): N.ObjectMethod | undefined | null {\n    if (isAccessor) {\n      // isAccessor implies isAsync: false, isPattern: false, isGenerator: false\n      const finishedProp = this.parseMethod(\n        prop,\n        // This _should_ be false, but with error recovery, we allow it to be\n        // set for informational purposes\n        isGenerator,\n        /* isAsync */ false,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n      this.checkGetterSetterParams(finishedProp);\n      return finishedProp;\n    }\n\n    if (isAsync || isGenerator || this.match(tt.parenL)) {\n      if (isPattern) this.unexpected();\n      prop.kind = \"method\";\n      prop.method = true;\n      return this.parseMethod(\n        prop,\n        isGenerator,\n        isAsync,\n        /* isConstructor */ false,\n        false,\n        \"ObjectMethod\",\n      );\n    }\n  }\n\n  // if `isPattern` is true, parse https://tc39.es/ecma262/#prod-BindingProperty\n  // else https://tc39.es/ecma262/#prod-PropertyDefinition\n  parseObjectProperty(\n    this: Parser,\n    prop: Undone<N.ObjectProperty>,\n    startLoc: Position | undefined | null,\n    isPattern: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ObjectProperty | undefined | null {\n    prop.shorthand = false;\n\n    if (this.eat(tt.colon)) {\n      prop.value = isPattern\n        ? this.parseMaybeDefault(this.state.startLoc)\n        : this.parseMaybeAssignAllowIn(refExpressionErrors);\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n\n    if (!prop.computed && prop.key.type === \"Identifier\") {\n      // PropertyDefinition:\n      //   IdentifierReference\n      //   CoverInitializedName\n      // Note: `{ eval } = {}` will be checked in `checkLVal` later.\n      this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);\n\n      if (isPattern) {\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else if (this.match(tt.eq)) {\n        const shorthandAssignLoc = this.state.startLoc;\n        if (refExpressionErrors != null) {\n          if (refExpressionErrors.shorthandAssignLoc === null) {\n            refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;\n          }\n        } else {\n          this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);\n        }\n        prop.value = this.parseMaybeDefault(\n          startLoc,\n          cloneIdentifier(prop.key),\n        );\n      } else {\n        prop.value = cloneIdentifier(prop.key);\n      }\n      prop.shorthand = true;\n\n      return this.finishNode(prop, \"ObjectProperty\");\n    }\n  }\n\n  parseObjPropValue<T extends N.ObjectMember>(\n    this: Parser,\n    prop: Undone<T>,\n    startLoc: Position | undefined | null,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isPattern: boolean,\n    isAccessor: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): T {\n    const node = (this.parseObjectMethod(\n      prop as Undone<N.ObjectMethod>,\n      isGenerator,\n      isAsync,\n      isPattern,\n      isAccessor,\n    ) ||\n      this.parseObjectProperty(\n        prop as Undone<N.ObjectProperty>,\n        startLoc,\n        isPattern,\n        refExpressionErrors,\n      )) as T;\n\n    if (!node) this.unexpected();\n\n    return node;\n  }\n\n  // https://tc39.es/ecma262/#prod-PropertyName\n  // when refExpressionErrors presents, it will parse private name\n  // and record the position of the first private name\n  parsePropertyName(\n    this: Parser,\n    prop:\n      | Undone<N.ObjectOrClassMember | N.ClassMember>\n      | N.TsNamedTypeElementBase,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): void {\n    if (this.eat(tt.bracketL)) {\n      (prop as Undone<N.ObjectOrClassMember>).computed = true;\n      prop.key = this.parseMaybeAssignAllowIn();\n      this.expect(tt.bracketR);\n    } else {\n      // We check if it's valid for it to be a private name when we push it.\n      const { type, value } = this.state;\n      let key;\n      // most un-computed property names are identifiers\n      if (tokenIsKeywordOrIdentifier(type)) {\n        key = this.parseIdentifier(true);\n      } else {\n        switch (type) {\n          case tt.num:\n            key = this.parseNumericLiteral(value);\n            break;\n          case tt.string:\n            key = this.parseStringLiteral(value);\n            break;\n          case tt.bigint:\n            key = this.parseBigIntLiteral(value);\n            break;\n          case tt.privateName: {\n            // the class private key has been handled in parseClassElementName\n            const privateKeyLoc = this.state.startLoc;\n            if (refExpressionErrors != null) {\n              if (refExpressionErrors.privateKeyLoc === null) {\n                refExpressionErrors.privateKeyLoc = privateKeyLoc;\n              }\n            } else {\n              this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);\n            }\n            key = this.parsePrivateName();\n            break;\n          }\n          default:\n            if (!process.env.BABEL_8_BREAKING && type === tt.decimal) {\n              key = this.parseDecimalLiteral(value);\n              break;\n            }\n\n            this.unexpected();\n        }\n      }\n      (prop as any).key = key;\n      if (type !== tt.privateName) {\n        // ClassPrivateProperty is never computed, so we don't assign in that case.\n        prop.computed = false;\n      }\n    }\n  }\n\n  // Initialize empty function node.\n\n  initFunction(node: N.BodilessFunctionOrMethodBase, isAsync: boolean): void {\n    node.id = null;\n    node.generator = false;\n    node.async = isAsync;\n  }\n\n  // Parse object or class method.\n\n  parseMethod<T extends N.ObjectMethod | N.ClassMethod | N.ClassPrivateMethod>(\n    this: Parser,\n    node: Undone<T>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowDirectSuper: boolean,\n    type: T[\"type\"],\n    inClassScope: boolean = false,\n  ): T {\n    this.initFunction(node, isAsync);\n    node.generator = isGenerator;\n    this.scope.enter(\n      ScopeFlag.FUNCTION |\n        ScopeFlag.SUPER |\n        (inClassScope ? ScopeFlag.CLASS : 0) |\n        (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0),\n    );\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n    this.parseFunctionParams(node, isConstructor);\n    const finishedNode = this.parseFunctionBodyAndFinish(node, type, true);\n    this.prodParam.exit();\n    this.scope.exit();\n\n    return finishedNode;\n  }\n\n  // parse an array literal or tuple literal\n  // https://tc39.es/ecma262/#prod-ArrayLiteral\n  // https://tc39.es/proposal-record-tuple/#prod-TupleLiteral\n  parseArrayLike(\n    this: Parser,\n    close: TokenType,\n    canBePattern: boolean,\n    isTuple: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n  ): N.ArrayExpression | N.TupleExpression {\n    if (isTuple) {\n      this.expectPlugin(\"recordAndTuple\");\n    }\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = false;\n    const node = this.startNode<N.ArrayExpression | N.TupleExpression>();\n    this.next();\n    node.elements = this.parseExprList(\n      close,\n      /* allowEmpty */ !isTuple,\n      refExpressionErrors,\n      // @ts-expect-error todo(flow->ts)\n      node,\n    );\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n    return this.finishNode(\n      node,\n      isTuple ? \"TupleExpression\" : \"ArrayExpression\",\n    );\n  }\n\n  // Parse arrow function expression.\n  // If the parameters are provided, they will be converted to an\n  // assignable list.\n  parseArrowExpression(\n    this: Parser,\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    isAsync: boolean,\n    trailingCommaLoc?: Position | null,\n  ): N.ArrowFunctionExpression {\n    this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);\n    let flags = functionFlags(isAsync, false);\n    // ConciseBody[In] :\n    //   [lookahead ≠ {] ExpressionBody[?In, ~Await]\n    //   { FunctionBody[~Yield, ~Await] }\n    if (!this.match(tt.braceL) && this.prodParam.hasIn) {\n      flags |= ParamKind.PARAM_IN;\n    }\n    this.prodParam.enter(flags);\n    this.initFunction(node, isAsync);\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n\n    if (params) {\n      this.state.maybeInArrowParameters = true;\n      this.setArrowFunctionParameters(node, params, trailingCommaLoc);\n    }\n    this.state.maybeInArrowParameters = false;\n    this.parseFunctionBody(node, true);\n\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n\n    return this.finishNode(node, \"ArrowFunctionExpression\");\n  }\n\n  setArrowFunctionParameters(\n    node: Undone<N.ArrowFunctionExpression>,\n    params:\n      | Array<N.Expression | N.SpreadElement>\n      | Array<N.Expression | N.RestElement>,\n    trailingCommaLoc?: Position | null,\n  ): void {\n    this.toAssignableList(params, trailingCommaLoc, false);\n    node.params = params as (N.Pattern | N.TSParameterProperty)[];\n  }\n\n  parseFunctionBodyAndFinish<\n    T extends\n      | N.Function\n      | N.TSDeclareMethod\n      | N.TSDeclareFunction\n      | N.ClassPrivateMethod,\n  >(node: Undone<T>, type: T[\"type\"], isMethod: boolean = false): T {\n    // @ts-expect-error (node is not bodiless if we get here)\n    this.parseFunctionBody(node, false, isMethod);\n    return this.finishNode(node, type);\n  }\n\n  // Parse function body and check parameters.\n  parseFunctionBody(\n    this: Parser,\n    node: Undone<N.Function>,\n    allowExpression?: boolean | null,\n    isMethod: boolean = false,\n  ): void {\n    const isExpression = allowExpression && !this.match(tt.braceL);\n    this.expressionScope.enter(newExpressionScope());\n\n    if (isExpression) {\n      // https://tc39.es/ecma262/#prod-ExpressionBody\n      (node as Undone<N.ArrowFunctionExpression>).body =\n        this.parseMaybeAssign();\n      this.checkParams(node, false, allowExpression, false);\n    } else {\n      const oldStrict = this.state.strict;\n      // Start a new scope with regard to labels\n      // flag (restore them to their old value afterwards).\n      const oldLabels = this.state.labels;\n      this.state.labels = [];\n\n      // FunctionBody[Yield, Await]:\n      //   StatementList[?Yield, ?Await, +Return] opt\n      this.prodParam.enter(\n        this.prodParam.currentFlags() | ParamKind.PARAM_RETURN,\n      );\n      node.body = this.parseBlock(\n        true,\n        false,\n        // Strict mode function checks after we parse the statements in the function body.\n        (hasStrictModeDirective: boolean) => {\n          const nonSimple = !this.isSimpleParamList(node.params);\n\n          if (hasStrictModeDirective && nonSimple) {\n            // This logic is here to align the error location with the ESTree plugin.\n            this.raise(\n              Errors.IllegalLanguageModeDirective,\n              // @ts-expect-error kind may not index node\n              (node.kind === \"method\" || node.kind === \"constructor\") &&\n                // @ts-expect-error key may not index node\n                !!node.key\n                ? // @ts-expect-error node.key has been guarded\n                  node.key.loc.end\n                : node,\n            );\n          }\n\n          const strictModeChanged = !oldStrict && this.state.strict;\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(\n            node,\n            !this.state.strict && !allowExpression && !isMethod && !nonSimple,\n            allowExpression,\n            strictModeChanged,\n          );\n\n          // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'\n          if (this.state.strict && node.id) {\n            this.checkIdentifier(\n              node.id,\n              BindingFlag.TYPE_OUTSIDE,\n              strictModeChanged,\n            );\n          }\n        },\n      );\n      this.prodParam.exit();\n      this.state.labels = oldLabels;\n    }\n    this.expressionScope.exit();\n  }\n\n  isSimpleParameter(node: N.Pattern | N.TSParameterProperty): boolean {\n    return node.type === \"Identifier\";\n  }\n\n  isSimpleParamList(\n    params: ReadonlyArray<N.Pattern | N.TSParameterProperty>,\n  ): boolean {\n    for (let i = 0, len = params.length; i < len; i++) {\n      if (!this.isSimpleParameter(params[i])) return false;\n    }\n    return true;\n  }\n\n  checkParams(\n    node: Undone<N.Function>,\n    allowDuplicates: boolean,\n    isArrowFunction?: boolean | null,\n    strictModeChanged: boolean = true,\n  ): void {\n    const checkClashes = !allowDuplicates && new Set<string>();\n    // We create a fake node with the \"ephemeral\" type `FormalParameters`[1]\n    // since we just store an array of parameters. Perhaps someday we can have\n    // something like class FormalParameters extends Array { ... }, which would\n    // also be helpful when traversing this node.\n    //\n    // 1. https://tc39.es/ecma262/#prod-FormalParameters\n    const formalParameters = { type: \"FormalParameters\" } as const;\n    for (const param of node.params) {\n      this.checkLVal(\n        param,\n        formalParameters,\n        BindingFlag.TYPE_VAR,\n        checkClashes,\n        strictModeChanged,\n      );\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  parseExprList(\n    this: Parser,\n    close: TokenType,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    nodeForExtra?: N.Node | null,\n  ): (N.Expression | null)[] {\n    const elts: (N.Expression | null)[] = [];\n    let first = true;\n\n    while (!this.eat(close)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.match(close)) {\n          if (nodeForExtra) {\n            this.addTrailingCommaExtraToNode(nodeForExtra);\n          }\n          this.next();\n          break;\n        }\n      }\n\n      elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));\n    }\n    return elts;\n  }\n\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | null;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: false,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression;\n  parseExprListItem(\n    this: Parser,\n    allowEmpty?: boolean | null,\n    refExpressionErrors?: ExpressionErrors | null,\n    allowPlaceholder?: boolean | null,\n  ): N.Expression | N.SpreadElement | N.ArgumentPlaceholder | null {\n    let elt;\n    if (this.match(tt.comma)) {\n      if (!allowEmpty) {\n        this.raise(Errors.UnexpectedToken, this.state.curPosition(), {\n          unexpected: \",\",\n        });\n      }\n      elt = null;\n    } else if (this.match(tt.ellipsis)) {\n      const spreadNodeStartLoc = this.state.startLoc;\n\n      elt = this.parseParenItem(\n        this.parseSpread(refExpressionErrors),\n        spreadNodeStartLoc,\n      );\n    } else if (this.match(tt.question)) {\n      this.expectPlugin(\"partialApplication\");\n      if (!allowPlaceholder) {\n        this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);\n      }\n      const node = this.startNode<N.ArgumentPlaceholder>();\n      this.next();\n      elt = this.finishNode(node, \"ArgumentPlaceholder\");\n    } else {\n      elt = this.parseMaybeAssignAllowIn(\n        refExpressionErrors,\n        this.parseParenItem,\n      );\n    }\n    return elt;\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  // This shouldn't be used to parse the keywords of meta properties, since they\n  // are not identifiers and cannot contain escape sequences.\n\n  parseIdentifier(liberal?: boolean): N.Identifier {\n    const node = this.startNode<N.Identifier>();\n    const name = this.parseIdentifierName(liberal);\n\n    return this.createIdentifier(node, name);\n  }\n\n  createIdentifier(\n    node: Omit<N.Identifier, \"type\">,\n    name: string,\n  ): N.Identifier {\n    node.name = name;\n    node.loc.identifierName = name;\n\n    return this.finishNode(node, \"Identifier\");\n  }\n\n  parseIdentifierName(liberal?: boolean): string {\n    let name: string;\n\n    const { startLoc, type } = this.state;\n\n    if (tokenIsKeywordOrIdentifier(type)) {\n      name = this.state.value;\n    } else {\n      this.unexpected();\n    }\n\n    const tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);\n\n    if (liberal) {\n      // If the current token is not used as a keyword, set its type to \"tt.name\".\n      // This will prevent this.next() from throwing about unexpected escapes.\n      if (tokenIsKeyword) {\n        this.replaceToken(tt.name);\n      }\n    } else {\n      this.checkReservedWord(name, startLoc, tokenIsKeyword, false);\n    }\n\n    this.next();\n\n    return name;\n  }\n\n  checkReservedWord(\n    word: string,\n    startLoc: Position,\n    checkKeywords: boolean,\n    isBinding: boolean,\n  ): void {\n    // Every JavaScript reserved word is 10 characters or less.\n    if (word.length > 10) {\n      return;\n    }\n    // Most identifiers are not reservedWord-like, they don't need special\n    // treatments afterward, which very likely ends up throwing errors\n    if (!canBeReservedWord(word)) {\n      return;\n    }\n\n    if (checkKeywords && isKeyword(word)) {\n      this.raise(Errors.UnexpectedKeyword, startLoc, {\n        keyword: word,\n      });\n      return;\n    }\n\n    const reservedTest = !this.state.strict\n      ? isReservedWord\n      : isBinding\n        ? isStrictBindReservedWord\n        : isStrictReservedWord;\n\n    if (reservedTest(word, this.inModule)) {\n      this.raise(Errors.UnexpectedReservedWord, startLoc, {\n        reservedWord: word,\n      });\n      return;\n    } else if (word === \"yield\") {\n      if (this.prodParam.hasYield) {\n        this.raise(Errors.YieldBindingIdentifier, startLoc);\n        return;\n      }\n    } else if (word === \"await\") {\n      if (this.prodParam.hasAwait) {\n        this.raise(Errors.AwaitBindingIdentifier, startLoc);\n        return;\n      }\n\n      if (this.scope.inStaticBlock) {\n        this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);\n        return;\n      }\n\n      this.expressionScope.recordAsyncArrowParametersError(startLoc);\n    } else if (word === \"arguments\") {\n      if (this.scope.inClassAndNotInNonArrowFunction) {\n        this.raise(Errors.ArgumentsInClass, startLoc);\n        return;\n      }\n    }\n  }\n\n  // Returns wether `await` is allowed or not in this context, and if it is\n  // keeps track of it to determine whether a module uses top-level await.\n  recordAwaitIfAllowed(): boolean {\n    const isAwaitAllowed =\n      this.prodParam.hasAwait ||\n      (this.optionFlags & OptionFlags.AllowAwaitOutsideFunction &&\n        !this.scope.inFunction);\n\n    if (isAwaitAllowed && !this.scope.inFunction) {\n      this.state.hasTopLevelAwait = true;\n    }\n\n    return isAwaitAllowed;\n  }\n\n  // Parses await expression inside async function.\n\n  parseAwait(this: Parser, startLoc: Position): N.AwaitExpression {\n    const node = this.startNodeAt<N.AwaitExpression>(startLoc);\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.AwaitExpressionFormalParameter,\n      node,\n    );\n\n    if (this.eat(tt.star)) {\n      this.raise(Errors.ObsoleteAwaitStar, node);\n    }\n\n    if (\n      !this.scope.inFunction &&\n      !(this.optionFlags & OptionFlags.AllowAwaitOutsideFunction)\n    ) {\n      if (this.isAmbiguousAwait()) {\n        this.ambiguousScriptDifferentAst = true;\n      } else {\n        this.sawUnambiguousESM = true;\n      }\n    }\n\n    if (!this.state.soloAwait) {\n      node.argument = this.parseMaybeUnary(null, true);\n    }\n\n    return this.finishNode(node, \"AwaitExpression\");\n  }\n\n  isAmbiguousAwait(): boolean {\n    if (this.hasPrecedingLineBreak()) return true;\n    const { type } = this.state;\n    return (\n      // All the following expressions are ambiguous:\n      //   await + 0, await - 0, await ( 0 ), await [ 0 ], await / 0 /u, await ``, await of []\n      type === tt.plusMin ||\n      type === tt.parenL ||\n      type === tt.bracketL ||\n      tokenIsTemplate(type) ||\n      (type === tt._of && !this.state.containsEsc) ||\n      // Sometimes the tokenizer generates tt.slash for regexps, and this is\n      // handler by parseExprAtom\n      type === tt.regexp ||\n      type === tt.slash ||\n      // This code could be parsed both as a modulo operator or as an intrinsic:\n      //   await %x(0)\n      (this.hasPlugin(\"v8intrinsic\") && type === tt.modulo)\n    );\n  }\n\n  // Parses yield expression inside generator.\n\n  parseYield(this: Parser): N.YieldExpression {\n    const node = this.startNode<N.YieldExpression>();\n\n    this.expressionScope.recordParameterInitializerError(\n      Errors.YieldInParameter,\n      node,\n    );\n\n    this.next();\n    let delegating = false;\n    let argument: N.Expression | null = null;\n    if (!this.hasPrecedingLineBreak()) {\n      delegating = this.eat(tt.star);\n      switch (this.state.type) {\n        case tt.semi:\n        case tt.eof:\n        case tt.braceR:\n        case tt.parenR:\n        case tt.bracketR:\n        case tt.braceBarR:\n        case tt.colon:\n        case tt.comma:\n          // The above is the complete set of tokens that can\n          // follow an AssignmentExpression, and none of them\n          // can start an AssignmentExpression\n          if (!delegating) break;\n        /* fallthrough */\n        default:\n          argument = this.parseMaybeAssign();\n      }\n    }\n    node.delegate = delegating;\n    node.argument = argument;\n    return this.finishNode(node, \"YieldExpression\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportCall\n  parseImportCall(\n    this: Parser,\n    node: Undone<N.ImportExpression>,\n  ): N.ImportExpression {\n    this.next(); // eat tt.parenL\n    node.source = this.parseMaybeAssignAllowIn();\n    node.options = null;\n    if (this.eat(tt.comma)) {\n      if (!this.match(tt.parenR)) {\n        node.options = this.parseMaybeAssignAllowIn();\n\n        if (this.eat(tt.comma) && !this.match(tt.parenR)) {\n          // keep consuming arguments, to then throw ImportCallArity\n          // instead of \"expected )\"\n          do {\n            this.parseMaybeAssignAllowIn();\n          } while (this.eat(tt.comma) && !this.match(tt.parenR));\n\n          this.raise(Errors.ImportCallArity, node);\n        }\n      }\n    }\n    this.expect(tt.parenR);\n    return this.finishNode(node, \"ImportExpression\");\n  }\n\n  // Validates a pipeline (for any of the pipeline Babylon plugins) at the point\n  // of the infix operator `|>`.\n\n  checkPipelineAtInfixOperator(left: N.Expression, leftStartLoc: Position) {\n    // @ts-expect-error Remove this in Babel 8\n    if (this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])) {\n      if (left.type === \"SequenceExpression\") {\n        // Ensure that the pipeline head is not a comma-delimited\n        // sequence expression.\n        this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);\n      }\n    }\n  }\n\n  parseSmartPipelineBodyInStyle(childExpr: N.Expression, startLoc: Position) {\n    if (this.isSimpleReference(childExpr)) {\n      const bodyNode = this.startNodeAt<N.PipelineBareFunction>(startLoc);\n      bodyNode.callee = childExpr;\n      return this.finishNode(bodyNode, \"PipelineBareFunction\");\n    } else {\n      const bodyNode = this.startNodeAt<N.PipelineTopicExpression>(startLoc);\n      this.checkSmartPipeTopicBodyEarlyErrors(startLoc);\n      bodyNode.expression = childExpr;\n      return this.finishNode(bodyNode, \"PipelineTopicExpression\");\n    }\n  }\n\n  isSimpleReference(expression: N.Expression): boolean {\n    switch (expression.type) {\n      case \"MemberExpression\":\n        return (\n          !expression.computed && this.isSimpleReference(expression.object)\n        );\n      case \"Identifier\":\n        return true;\n      default:\n        return false;\n    }\n  }\n\n  // This helper method is to be called immediately\n  // after a topic-style smart-mix pipe body is parsed.\n  // The `startLoc` is the starting position of the pipe body.\n\n  checkSmartPipeTopicBodyEarlyErrors(startLoc: Position): void {\n    // If the following token is invalidly `=>`, then throw a human-friendly error\n    // instead of something like 'Unexpected token, expected \";\"'.\n    // For example, `x => x |> y => #` (assuming `#` is the topic reference)\n    // groups into `x => (x |> y) => #`,\n    // and `(x |> y) => #` is an invalid arrow function.\n    // This is because smart-mix `|>` has tighter precedence than `=>`.\n    if (this.match(tt.arrow)) {\n      throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);\n    }\n\n    // A topic-style smart-mix pipe body must use the topic reference at least once.\n    if (!this.topicReferenceWasUsedInCurrentContext()) {\n      this.raise(Errors.PipelineTopicUnused, startLoc);\n    }\n  }\n\n  // Enable topic references from outer contexts within Hack-style pipe bodies.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references.\n  // The function then calls a callback, then resets the parser\n  // to the old topic-context state that it had before the function was called.\n\n  withTopicBindingContext<T>(callback: () => T): T {\n    const outerContextTopicState = this.state.topicContext;\n    this.state.topicContext = {\n      // Enable the use of the primary topic reference.\n      maxNumOfResolvableTopics: 1,\n      // Hide the use of any topic references from outer contexts.\n      maxTopicIndex: null,\n    };\n\n    try {\n      return callback();\n    } finally {\n      this.state.topicContext = outerContextTopicState;\n    }\n  }\n\n  // This helper method is used only with the deprecated smart-mix pipe proposal.\n  // Disables topic references from outer contexts within syntax constructs\n  // such as the bodies of iteration statements.\n  // The function modifies the parser's topic-context state to enable or disable\n  // the use of topic references with the smartPipelines plugin. They then run a\n  // callback, then they reset the parser to the old topic-context state that it\n  // had before the function was called.\n\n  withSmartMixTopicForbiddingContext<T>(callback: () => T): T {\n    // TODO(Babel 8): Remove this method\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      // @ts-expect-error Babel 7 only\n      this.hasPlugin([\"pipelineOperator\", { proposal: \"smart\" }])\n    ) {\n      // Reset the parser’s topic context only if the smart-mix pipe proposal is active.\n      const outerContextTopicState = this.state.topicContext;\n      this.state.topicContext = {\n        // Disable the use of the primary topic reference.\n        maxNumOfResolvableTopics: 0,\n        // Hide the use of any topic references from outer contexts.\n        maxTopicIndex: null,\n      };\n\n      try {\n        return callback();\n      } finally {\n        this.state.topicContext = outerContextTopicState;\n      }\n    } else {\n      // If the pipe proposal is \"minimal\"(Babel 7), \"fsharp\", or \"hack\",\n      // or if no pipe proposal is active,\n      // then the callback result is returned\n      // without touching any extra parser state.\n      return callback();\n    }\n  }\n\n  withSoloAwaitPermittingContext<T>(callback: () => T): T {\n    const outerContextSoloAwaitState = this.state.soloAwait;\n    this.state.soloAwait = true;\n\n    try {\n      return callback();\n    } finally {\n      this.state.soloAwait = outerContextSoloAwaitState;\n    }\n  }\n\n  allowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToSet = ParamKind.PARAM_IN & ~flags;\n    if (prodParamToSet) {\n      this.prodParam.enter(flags | ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  disallowInAnd<T>(callback: () => T): T {\n    const flags = this.prodParam.currentFlags();\n    const prodParamToClear = ParamKind.PARAM_IN & flags;\n    if (prodParamToClear) {\n      this.prodParam.enter(flags & ~ParamKind.PARAM_IN);\n      try {\n        return callback();\n      } finally {\n        this.prodParam.exit();\n      }\n    }\n    return callback();\n  }\n\n  // Register the use of a topic reference within the current\n  // topic-binding context.\n  registerTopicReference(): void {\n    this.state.topicContext.maxTopicIndex = 0;\n  }\n\n  topicReferenceIsAllowedInCurrentContext(): boolean {\n    return this.state.topicContext.maxNumOfResolvableTopics >= 1;\n  }\n\n  topicReferenceWasUsedInCurrentContext(): boolean {\n    return (\n      this.state.topicContext.maxTopicIndex != null &&\n      this.state.topicContext.maxTopicIndex >= 0\n    );\n  }\n\n  parseFSharpPipelineBody(this: Parser, prec: number): N.Expression {\n    const startLoc = this.state.startLoc;\n\n    this.state.potentialArrowAt = this.state.start;\n    const oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;\n    this.state.inFSharpPipelineDirectBody = true;\n\n    const ret = this.parseExprOp(\n      this.parseMaybeUnaryOrPrivate(),\n      startLoc,\n      prec,\n    );\n\n    this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;\n\n    return ret;\n  }\n\n  // https://github.com/tc39/proposal-js-module-blocks\n  parseModuleExpression(this: Parser): N.ModuleExpression {\n    this.expectPlugin(\"moduleBlocks\");\n    const node = this.startNode<N.ModuleExpression>();\n    this.next(); // eat \"module\"\n    if (!this.match(tt.braceL)) {\n      this.unexpected(null, tt.braceL);\n    }\n    // start program node immediately after `{`\n    const program = this.startNodeAt<N.Program>(this.state.endLoc);\n    this.next(); // eat `{`\n\n    const revertScopes = this.initializeScopes(/** inModule */ true);\n    this.enterInitialScopes();\n\n    try {\n      node.body = this.parseProgram(program, tt.braceR, \"module\");\n    } finally {\n      revertScopes();\n    }\n    return this.finishNode<N.ModuleExpression>(node, \"ModuleExpression\");\n  }\n\n  // Used in Flow plugin\n  parsePropertyNamePrefixOperator(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    prop: Undone<N.ObjectOrClassMember | N.ClassMember>,\n  ): void {}\n}\n","import type * as N from \"../types.ts\";\nimport {\n  tokenIsIdentifier,\n  tokenIsKeywordOrIdentifier,\n  tokenIsLoop,\n  tokenIsTemplate,\n  tt,\n  type TokenType,\n  getExportedToken,\n} from \"../tokenizer/types.ts\";\nimport ExpressionParser from \"./expression.ts\";\nimport { Errors } from \"../parse-error.ts\";\nimport { isIdentifierChar, isIdentifierStart } from \"../util/identifier.ts\";\nimport * as charCodes from \"charcodes\";\nimport {\n  ScopeFlag,\n  ClassElementType,\n  BindingFlag,\n} from \"../util/scopeflags.ts\";\nimport { ExpressionErrors } from \"./util.ts\";\nimport { ParamKind, functionFlags } from \"../util/production-parameter.ts\";\nimport {\n  newExpressionScope,\n  newParameterDeclarationScope,\n} from \"../util/expression-scope.ts\";\nimport { OptionFlags, type SourceType } from \"../options.ts\";\nimport { Token } from \"../tokenizer/index.ts\";\nimport type { Position } from \"../util/location.ts\";\nimport { createPositionWithColumnOffset } from \"../util/location.ts\";\nimport { cloneStringLiteral, cloneIdentifier, type Undone } from \"./node.ts\";\nimport type Parser from \"./index.ts\";\nimport { ParseBindingListFlags } from \"./lval.ts\";\nimport { LoopLabelKind } from \"../tokenizer/state.ts\";\n\nconst loopLabel = { kind: LoopLabelKind.Loop } as const,\n  switchLabel = { kind: LoopLabelKind.Switch } as const;\n\nexport const enum ParseFunctionFlag {\n  Expression = 0b0000,\n  Declaration = 0b0001,\n  HangingDeclaration = 0b0010,\n  NullableId = 0b0100,\n  Async = 0b1000,\n}\n\nexport const enum ParseStatementFlag {\n  StatementOnly = 0b0000,\n  AllowImportExport = 0b0001,\n  AllowDeclaration = 0b0010,\n  AllowFunctionDeclaration = 0b0100,\n  AllowLabeledFunction = 0b1000,\n}\n\nconst loneSurrogate = /[\\uD800-\\uDFFF]/u;\n\nconst keywordRelationalOperator = /in(?:stanceof)?/y;\n\n/**\n * Convert tokens for backward Babel 7 compat.\n * tt.privateName => tt.hash + tt.name\n * tt.templateTail => tt.backquote/tt.braceR + tt.template + tt.backquote\n * tt.templateNonTail => tt.backquote/tt.braceR + tt.template + tt.dollarBraceL\n * For performance reasons this routine mutates `tokens`, it is okay\n * here since we execute `parseTopLevel` once for every file.\n */\nfunction babel7CompatTokens(\n  tokens: (Token | N.Comment)[],\n  input: string,\n  startIndex: number,\n) {\n  for (let i = 0; i < tokens.length; i++) {\n    const token = tokens[i];\n    const { type } = token;\n    if (typeof type === \"number\") {\n      if (!process.env.BABEL_8_BREAKING) {\n        if (type === tt.privateName) {\n          const { loc, start, value, end } = token;\n          const hashEndPos = start + 1;\n          const hashEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          tokens.splice(\n            i,\n            1,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.hash),\n              value: \"#\",\n              start: start,\n              end: hashEndPos,\n              startLoc: loc.start,\n              endLoc: hashEndLoc,\n            }),\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.name),\n              value: value,\n              start: hashEndPos,\n              end: end,\n              startLoc: hashEndLoc,\n              endLoc: loc.end,\n            }),\n          );\n          i++;\n          continue;\n        }\n\n        if (tokenIsTemplate(type)) {\n          const { loc, start, value, end } = token;\n          const backquoteEnd = start + 1;\n          const backquoteEndLoc = createPositionWithColumnOffset(loc.start, 1);\n          let startToken;\n          if (input.charCodeAt(start - startIndex) === charCodes.graveAccent) {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          } else {\n            startToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.braceR),\n              value: \"}\",\n              start: start,\n              end: backquoteEnd,\n              startLoc: loc.start,\n              endLoc: backquoteEndLoc,\n            });\n          }\n          let templateValue,\n            templateElementEnd,\n            templateElementEndLoc,\n            endToken;\n          if (type === tt.templateTail) {\n            // ends with '`'\n            templateElementEnd = end - 1;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -1);\n            templateValue = value === null ? null : value.slice(1, -1);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.backQuote),\n              value: \"`\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          } else {\n            // ends with `${`\n            templateElementEnd = end - 2;\n            templateElementEndLoc = createPositionWithColumnOffset(loc.end, -2);\n            templateValue = value === null ? null : value.slice(1, -2);\n            endToken = new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.dollarBraceL),\n              value: \"${\",\n              start: templateElementEnd,\n              end: end,\n              startLoc: templateElementEndLoc,\n              endLoc: loc.end,\n            });\n          }\n          tokens.splice(\n            i,\n            1,\n            startToken,\n            new Token({\n              // @ts-expect-error: hacky way to create token\n              type: getExportedToken(tt.template),\n              value: templateValue,\n              start: backquoteEnd,\n              end: templateElementEnd,\n              startLoc: backquoteEndLoc,\n              endLoc: templateElementEndLoc,\n            }),\n            endToken,\n          );\n          i += 2;\n          continue;\n        }\n      }\n      // @ts-expect-error: we manipulate `token` for performance reasons\n      token.type = getExportedToken(type);\n    }\n  }\n  return tokens;\n}\nexport default abstract class StatementParser extends ExpressionParser {\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  parseTopLevel(\n    this: Parser,\n    file: Undone<N.File>,\n    program: Undone<N.Program>,\n  ): N.File {\n    file.program = this.parseProgram(program);\n    file.comments = this.comments;\n\n    if (this.optionFlags & OptionFlags.Tokens) {\n      file.tokens = babel7CompatTokens(\n        this.tokens,\n        this.input,\n        this.startIndex,\n      );\n    }\n\n    return this.finishNode(file, \"File\");\n  }\n\n  parseProgram(\n    this: Parser,\n    program: Undone<N.Program>,\n    end: TokenType = tt.eof,\n    sourceType: SourceType = this.options.sourceType,\n  ): N.Program {\n    program.sourceType = sourceType;\n    program.interpreter = this.parseInterpreterDirective();\n    this.parseBlockBody(program, true, true, end);\n    if (this.inModule) {\n      if (\n        !(this.optionFlags & OptionFlags.AllowUndeclaredExports) &&\n        this.scope.undefinedExports.size > 0\n      ) {\n        for (const [localName, at] of Array.from(this.scope.undefinedExports)) {\n          this.raise(Errors.ModuleExportUndefined, at, { localName });\n        }\n      }\n      this.addExtra(program, \"topLevelAwait\", this.state.hasTopLevelAwait);\n    }\n    let finishedProgram: N.Program;\n    if (end === tt.eof) {\n      // finish at eof for top level program\n      finishedProgram = this.finishNode(program, \"Program\");\n    } else {\n      // finish immediately before the end token\n      finishedProgram = this.finishNodeAt(\n        program,\n        \"Program\",\n        createPositionWithColumnOffset(this.state.startLoc, -1),\n      );\n    }\n    return finishedProgram;\n  }\n\n  /**\n   * cast a Statement to a Directive. This method mutates input statement.\n   */\n  stmtToDirective(stmt: N.Statement): N.Directive {\n    const directive = stmt as any;\n    directive.type = \"Directive\";\n    directive.value = directive.expression;\n    delete directive.expression;\n\n    const directiveLiteral = directive.value;\n    const expressionValue = directiveLiteral.value;\n    const raw = this.input.slice(\n      this.offsetToSourcePos(directiveLiteral.start),\n      this.offsetToSourcePos(directiveLiteral.end),\n    );\n    const val = (directiveLiteral.value = raw.slice(1, -1)); // remove quotes\n\n    this.addExtra(directiveLiteral, \"raw\", raw);\n    this.addExtra(directiveLiteral, \"rawValue\", val);\n    this.addExtra(directiveLiteral, \"expressionValue\", expressionValue);\n\n    directiveLiteral.type = \"DirectiveLiteral\";\n\n    return directive;\n  }\n\n  parseInterpreterDirective(): N.InterpreterDirective | null {\n    if (!this.match(tt.interpreterDirective)) {\n      return null;\n    }\n\n    const node = this.startNode<N.InterpreterDirective>();\n    node.value = this.state.value;\n    this.next();\n    return this.finishNode(node, \"InterpreterDirective\");\n  }\n\n  isLet(): boolean {\n    if (!this.isContextual(tt._let)) {\n      return false;\n    }\n    return this.hasFollowingBindingAtom();\n  }\n\n  chStartsBindingIdentifier(ch: number, pos: number) {\n    if (isIdentifierStart(ch)) {\n      keywordRelationalOperator.lastIndex = pos;\n      if (keywordRelationalOperator.test(this.input)) {\n        // We have seen `in` or `instanceof` so far, now check if the identifier\n        // ends here\n        const endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);\n        if (!isIdentifierChar(endCh) && endCh !== charCodes.backslash) {\n          return false;\n        }\n      }\n      return true;\n    } else if (ch === charCodes.backslash) {\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  chStartsBindingPattern(ch: number) {\n    return (\n      ch === charCodes.leftSquareBracket || ch === charCodes.leftCurlyBrace\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `let` and declaration is allowed, check if it\n   * starts a variable declaration so that it should be interpreted as a keyword.\n   */\n  hasFollowingBindingAtom(): boolean {\n    const next = this.nextTokenStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      this.chStartsBindingPattern(nextCh) ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  /**\n   * Assuming we have seen a contextual `using` and declaration is allowed, check if it\n   * starts a variable declaration in the same line so that it should be interpreted as\n   * a keyword.\n   */\n  hasInLineFollowingBindingIdentifierOrBrace(): boolean {\n    const next = this.nextTokenInLineStart();\n    const nextCh = this.codePointAtPos(next);\n    return (\n      nextCh === charCodes.leftCurlyBrace ||\n      this.chStartsBindingIdentifier(nextCh, next)\n    );\n  }\n\n  startsUsingForOf(): boolean {\n    const { type, containsEsc } = this.lookahead();\n    if (type === tt._of && !containsEsc) {\n      // `using of` must start a for-lhs-of statement\n      return false;\n    } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) {\n      this.expectPlugin(\"explicitResourceManagement\");\n      return true;\n    }\n  }\n\n  startsAwaitUsing(): boolean {\n    let next = this.nextTokenInLineStart();\n    if (this.isUnparsedContextual(next, \"using\")) {\n      next = this.nextTokenInLineStartSince(next + 5);\n      const nextCh = this.codePointAtPos(next);\n      if (this.chStartsBindingIdentifier(nextCh, next)) {\n        this.expectPlugin(\"explicitResourceManagement\");\n        return true;\n      }\n    }\n    return false;\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleItem\n  parseModuleItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowImportExport |\n        ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        // This function is actually also used to parse StatementItems,\n        // which with Annex B enabled allows labeled functions.\n        ParseStatementFlag.AllowLabeledFunction,\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-StatementListItem\n  parseStatementListItem(this: Parser) {\n    return this.parseStatementLike(\n      ParseStatementFlag.AllowDeclaration |\n        ParseStatementFlag.AllowFunctionDeclaration |\n        (!this.options.annexB || this.state.strict\n          ? 0\n          : ParseStatementFlag.AllowLabeledFunction),\n    );\n  }\n\n  parseStatementOrSloppyAnnexBFunctionDeclaration(\n    this: Parser,\n    allowLabeledFunction: boolean = false,\n  ) {\n    let flags: ParseStatementFlag = ParseStatementFlag.StatementOnly;\n    if (this.options.annexB && !this.state.strict) {\n      flags |= ParseStatementFlag.AllowFunctionDeclaration;\n      if (allowLabeledFunction) {\n        flags |= ParseStatementFlag.AllowLabeledFunction;\n      }\n    }\n    return this.parseStatementLike(flags);\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  // https://tc39.es/ecma262/#prod-Statement\n  parseStatement(this: Parser) {\n    return this.parseStatementLike(ParseStatementFlag.StatementOnly);\n  }\n\n  // ImportDeclaration and ExportDeclaration are also handled here so we can throw recoverable errors\n  // when they are not at the top level\n  parseStatementLike(\n    this: Parser,\n    flags: ParseStatementFlag,\n  ):\n    | N.Statement\n    | N.Declaration\n    | N.ImportDeclaration\n    | N.ExportDefaultDeclaration\n    | N.ExportNamedDeclaration\n    | N.ExportAllDeclaration {\n    let decorators: N.Decorator[] | null = null;\n\n    if (this.match(tt.at)) {\n      decorators = this.parseDecorators(true);\n    }\n    return this.parseStatementContent(flags, decorators);\n  }\n\n  parseStatementContent(\n    this: Parser,\n    flags: ParseStatementFlag,\n    decorators?: N.Decorator[] | null,\n  ): N.Statement {\n    const startType = this.state.type;\n    const node = this.startNode();\n    const allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);\n    const allowFunctionDeclaration = !!(\n      flags & ParseStatementFlag.AllowFunctionDeclaration\n    );\n    const topLevel = flags & ParseStatementFlag.AllowImportExport;\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 tt._break:\n        return this.parseBreakContinueStatement(node, /* isBreak */ true);\n      case tt._continue:\n        return this.parseBreakContinueStatement(node, /* isBreak */ false);\n      case tt._debugger:\n        return this.parseDebuggerStatement(node as Undone<N.DebuggerStatement>);\n      case tt._do:\n        return this.parseDoWhileStatement(node as Undone<N.DoWhileStatement>);\n      case tt._for:\n        return this.parseForStatement(node as Undone<N.ForStatement>);\n      case tt._function:\n        if (this.lookaheadCharCode() === charCodes.dot) break;\n        if (!allowFunctionDeclaration) {\n          this.raise(\n            this.state.strict\n              ? Errors.StrictFunction\n              : this.options.annexB\n                ? Errors.SloppyFunctionAnnexB\n                : Errors.SloppyFunction,\n            this.state.startLoc,\n          );\n        }\n        return this.parseFunctionStatement(\n          node as Undone<N.FunctionDeclaration>,\n          false,\n          !allowDeclaration && allowFunctionDeclaration,\n        );\n      case tt._class:\n        if (!allowDeclaration) this.unexpected();\n        return this.parseClass(\n          this.maybeTakeDecorators(\n            decorators,\n            node as Undone<N.ClassDeclaration>,\n          ),\n          true,\n        );\n\n      case tt._if:\n        return this.parseIfStatement(node as Undone<N.IfStatement>);\n      case tt._return:\n        return this.parseReturnStatement(node as Undone<N.ReturnStatement>);\n      case tt._switch:\n        return this.parseSwitchStatement(node as Undone<N.SwitchStatement>);\n      case tt._throw:\n        return this.parseThrowStatement(node as Undone<N.ThrowStatement>);\n      case tt._try:\n        return this.parseTryStatement(node as Undone<N.TryStatement>);\n\n      case tt._await:\n        // [+Await] await [no LineTerminator here] using [no LineTerminator here] BindingList[+Using]\n        if (!this.state.containsEsc && this.startsAwaitUsing()) {\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, node);\n          } else if (!allowDeclaration) {\n            this.raise(Errors.UnexpectedLexicalDeclaration, node);\n          }\n          this.next(); // eat 'await'\n          return this.parseVarStatement(\n            node as Undone<N.VariableDeclaration>,\n            \"await using\",\n          );\n        }\n        break;\n      case tt._using:\n        // using [no LineTerminator here] BindingList[+Using]\n        if (\n          this.state.containsEsc ||\n          !this.hasInLineFollowingBindingIdentifierOrBrace()\n        ) {\n          break;\n        }\n        this.expectPlugin(\"explicitResourceManagement\");\n        if (!this.scope.inModule && this.scope.inTopLevel) {\n          this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);\n        } else if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          \"using\",\n        );\n      case tt._let: {\n        if (this.state.containsEsc) {\n          break;\n        }\n        // `let [` is an explicit negative lookahead for\n        // ExpressionStatement, so special-case it first.\n        const next = this.nextTokenStart();\n        const nextCh = this.codePointAtPos(next);\n        if (nextCh !== charCodes.leftSquareBracket) {\n          if (!allowDeclaration && this.hasFollowingLineBreak()) break;\n          if (\n            !this.chStartsBindingIdentifier(nextCh, next) &&\n            nextCh !== charCodes.leftCurlyBrace\n          ) {\n            break;\n          }\n        }\n      }\n      // fall through\n      case tt._const: {\n        if (!allowDeclaration) {\n          this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);\n        }\n      }\n      // fall through\n      case tt._var: {\n        const kind = this.state.value;\n        return this.parseVarStatement(\n          node as Undone<N.VariableDeclaration>,\n          kind,\n        );\n      }\n      case tt._while:\n        return this.parseWhileStatement(node as Undone<N.WhileStatement>);\n      case tt._with:\n        return this.parseWithStatement(node as Undone<N.WithStatement>);\n      case tt.braceL:\n        return this.parseBlock();\n      case tt.semi:\n        return this.parseEmptyStatement(node as Undone<N.EmptyStatement>);\n      case tt._import: {\n        const nextTokenCharCode = this.lookaheadCharCode();\n        if (\n          nextTokenCharCode === charCodes.leftParenthesis || // import()\n          nextTokenCharCode === charCodes.dot // import.meta\n        ) {\n          break;\n        }\n      }\n      // fall through\n      case tt._export: {\n        if (\n          !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n          !topLevel\n        ) {\n          this.raise(Errors.UnexpectedImportExport, this.state.startLoc);\n        }\n\n        this.next(); // eat `import`/`export`\n\n        let result;\n        if (startType === tt._import) {\n          result = this.parseImport(node as Undone<N.ImportDeclaration>);\n        } else {\n          result = this.parseExport(\n            node as Undone<\n              | N.ExportAllDeclaration\n              | N.ExportDefaultDeclaration\n              | N.ExportNamedDeclaration\n            >,\n            decorators,\n          );\n        }\n\n        this.assertModuleNodeAllowed(result);\n\n        return result;\n      }\n\n      default: {\n        if (this.isAsyncFunction()) {\n          if (!allowDeclaration) {\n            this.raise(\n              Errors.AsyncFunctionInSingleStatementContext,\n              this.state.startLoc,\n            );\n          }\n          this.next(); // eat 'async'\n          return this.parseFunctionStatement(\n            node as Undone<N.FunctionDeclaration>,\n            true,\n            !allowDeclaration && allowFunctionDeclaration,\n          );\n        }\n      }\n    }\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    const maybeName = this.state.value;\n    const expr = this.parseExpression();\n\n    if (\n      tokenIsIdentifier(startType) &&\n      expr.type === \"Identifier\" &&\n      this.eat(tt.colon)\n    ) {\n      return this.parseLabeledStatement(\n        node as Undone<N.LabeledStatement>,\n        maybeName,\n        expr,\n        flags,\n      );\n    } else {\n      return this.parseExpressionStatement(\n        node as Undone<N.ExpressionStatement>,\n        expr,\n        decorators,\n      );\n    }\n  }\n\n  assertModuleNodeAllowed(node: N.Node): void {\n    if (\n      !(this.optionFlags & OptionFlags.AllowImportExportEverywhere) &&\n      !this.inModule\n    ) {\n      this.raise(Errors.ImportOutsideModule, node);\n    }\n  }\n\n  decoratorsEnabledBeforeExport(): boolean {\n    if (this.hasPlugin(\"decorators-legacy\")) return true;\n    return (\n      this.hasPlugin(\"decorators\") &&\n      this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") !== false\n    );\n  }\n\n  // Attach the decorators to the given class.\n  // NOTE: This method changes the .start location of the class, and thus\n  // can affect comment attachment. Calling it before or after finalizing\n  // the class node (and thus finalizing its comments) changes how comments\n  // before the `class` keyword or before the final .start location of the\n  // class are attached.\n  maybeTakeDecorators<T extends Undone<N.Class>>(\n    maybeDecorators: N.Decorator[] | null,\n    classNode: T,\n    exportNode?: Undone<N.ExportDefaultDeclaration | N.ExportNamedDeclaration>,\n  ): T {\n    if (maybeDecorators) {\n      if (classNode.decorators?.length) {\n        // Note: decorators attachment is only attempred multiple times\n        // when the class is part of an export declaration.\n        if (\n          typeof this.getPluginOption(\n            \"decorators\",\n            \"decoratorsBeforeExport\",\n          ) !== \"boolean\"\n        ) {\n          // If `decoratorsBeforeExport` was set to `true` or `false`, we\n          // already threw an error about decorators not being in a valid\n          // position.\n          this.raise(\n            Errors.DecoratorsBeforeAfterExport,\n            classNode.decorators[0],\n          );\n        }\n        classNode.decorators.unshift(...maybeDecorators);\n      } else {\n        classNode.decorators = maybeDecorators;\n      }\n      this.resetStartLocationFromNode(classNode, maybeDecorators[0]);\n      if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);\n    }\n    return classNode;\n  }\n\n  canHaveLeadingDecorator(): boolean {\n    return this.match(tt._class);\n  }\n\n  parseDecorators(this: Parser, allowExport?: boolean): N.Decorator[] {\n    const decorators = [];\n    do {\n      decorators.push(this.parseDecorator());\n    } while (this.match(tt.at));\n\n    if (this.match(tt._export)) {\n      if (!allowExport) {\n        this.unexpected();\n      }\n\n      if (!this.decoratorsEnabledBeforeExport()) {\n        this.raise(Errors.DecoratorExportClass, this.state.startLoc);\n      }\n    } else if (!this.canHaveLeadingDecorator()) {\n      throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);\n    }\n\n    return decorators;\n  }\n\n  parseDecorator(this: Parser): N.Decorator {\n    this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n\n    const node = this.startNode<N.Decorator>();\n    this.next();\n\n    if (this.hasPlugin(\"decorators\")) {\n      const startLoc = this.state.startLoc;\n      let expr: N.Expression;\n\n      if (this.match(tt.parenL)) {\n        const startLoc = this.state.startLoc;\n        this.next(); // eat '('\n        expr = this.parseExpression();\n        this.expect(tt.parenR);\n        expr = this.wrapParenthesis(startLoc, expr);\n\n        const paramsStartLoc = this.state.startLoc;\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n        if (\n          this.getPluginOption(\"decorators\", \"allowCallParenthesized\") ===\n            false &&\n          node.expression !== expr\n        ) {\n          this.raise(\n            Errors.DecoratorArgumentsOutsideParentheses,\n            paramsStartLoc,\n          );\n        }\n      } else {\n        expr = this.parseIdentifier(false);\n\n        while (this.eat(tt.dot)) {\n          const node = this.startNodeAt<N.MemberExpression>(startLoc);\n          node.object = expr;\n          if (this.match(tt.privateName)) {\n            this.classScope.usePrivateName(\n              this.state.value,\n              this.state.startLoc,\n            );\n            node.property = this.parsePrivateName();\n          } else {\n            node.property = this.parseIdentifier(true);\n          }\n          node.computed = false;\n          expr = this.finishNode(node, \"MemberExpression\");\n        }\n\n        node.expression = this.parseMaybeDecoratorArguments(expr, startLoc);\n      }\n    } else {\n      node.expression = this.parseExprSubscripts();\n    }\n    return this.finishNode(node, \"Decorator\");\n  }\n\n  parseMaybeDecoratorArguments(\n    this: Parser,\n    expr: N.Expression,\n    startLoc: Position,\n  ): N.Expression {\n    if (this.eat(tt.parenL)) {\n      const node = this.startNodeAt<N.CallExpression>(startLoc);\n      node.callee = expr;\n      node.arguments = this.parseCallExpressionArguments(tt.parenR);\n      this.toReferencedList(node.arguments);\n      return this.finishNode(node, \"CallExpression\");\n    }\n\n    return expr;\n  }\n\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: true,\n  ): N.BreakStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.Node>,\n    isBreak: false,\n  ): N.ContinueStatement;\n  parseBreakContinueStatement(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ): N.BreakStatement | N.ContinueStatement {\n    this.next();\n\n    if (this.isLineTerminator()) {\n      node.label = null;\n    } else {\n      node.label = this.parseIdentifier();\n      this.semicolon();\n    }\n\n    this.verifyBreakContinue(node, isBreak);\n\n    return this.finishNode(\n      node,\n      isBreak ? \"BreakStatement\" : \"ContinueStatement\",\n    );\n  }\n\n  verifyBreakContinue(\n    node: Undone<N.BreakStatement | N.ContinueStatement>,\n    isBreak: boolean,\n  ) {\n    let i;\n    for (i = 0; i < this.state.labels.length; ++i) {\n      const lab = this.state.labels[i];\n      if (node.label == null || lab.name === node.label.name) {\n        if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {\n          break;\n        }\n        if (node.label && isBreak) break;\n      }\n    }\n    if (i === this.state.labels.length) {\n      const type = isBreak ? \"BreakStatement\" : \"ContinueStatement\";\n      this.raise(Errors.IllegalBreakContinue, node, { type });\n    }\n  }\n\n  parseDebuggerStatement(\n    node: Undone<N.DebuggerStatement>,\n  ): N.DebuggerStatement {\n    this.next();\n    this.semicolon();\n    return this.finishNode(node, \"DebuggerStatement\");\n  }\n\n  parseHeaderExpression(this: Parser): N.Expression {\n    this.expect(tt.parenL);\n    const val = this.parseExpression();\n    this.expect(tt.parenR);\n    return val;\n  }\n\n  // https://tc39.es/ecma262/#prod-DoWhileStatement\n  parseDoWhileStatement(\n    this: Parser,\n    node: Undone<N.DoWhileStatement>,\n  ): N.DoWhileStatement {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body's body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body's body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    this.expect(tt._while);\n    node.test = this.parseHeaderExpression();\n    this.eat(tt.semi);\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  parseForStatement(\n    this: Parser,\n    node: Undone<N.ForStatement | N.ForInOf>,\n  ): N.ForLike {\n    this.next();\n    this.state.labels.push(loopLabel);\n\n    let awaitAt = null;\n\n    if (this.isContextual(tt._await) && this.recordAwaitIfAllowed()) {\n      awaitAt = this.state.startLoc;\n      this.next();\n    }\n    this.scope.enter(ScopeFlag.OTHER);\n    this.expect(tt.parenL);\n\n    if (this.match(tt.semi)) {\n      if (awaitAt !== null) {\n        this.unexpected(awaitAt);\n      }\n      return this.parseFor(node as Undone<N.ForStatement>, null);\n    }\n\n    const startsWithLet = this.isContextual(tt._let);\n    {\n      const startsWithAwaitUsing =\n        this.isContextual(tt._await) && this.startsAwaitUsing();\n      const starsWithUsingDeclaration =\n        startsWithAwaitUsing ||\n        (this.isContextual(tt._using) && this.startsUsingForOf());\n      const isLetOrUsing =\n        (startsWithLet && this.hasFollowingBindingAtom()) ||\n        starsWithUsingDeclaration;\n\n      if (this.match(tt._var) || this.match(tt._const) || isLetOrUsing) {\n        const initNode = this.startNode<N.VariableDeclaration>();\n        let kind;\n        if (startsWithAwaitUsing) {\n          kind = \"await using\";\n          if (!this.recordAwaitIfAllowed()) {\n            this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);\n          }\n          this.next(); // eat 'await'\n        } else {\n          kind = this.state.value;\n        }\n        this.next();\n        this.parseVar(initNode, true, kind);\n        const init = this.finishNode(initNode, \"VariableDeclaration\");\n\n        const isForIn = this.match(tt._in);\n        if (isForIn && starsWithUsingDeclaration) {\n          this.raise(Errors.ForInUsing, init);\n        }\n        if (\n          (isForIn || this.isContextual(tt._of)) &&\n          init.declarations.length === 1\n        ) {\n          return this.parseForIn(node as Undone<N.ForInOf>, init, awaitAt);\n        }\n        if (awaitAt !== null) {\n          this.unexpected(awaitAt);\n        }\n        return this.parseFor(node as Undone<N.ForStatement>, init);\n      }\n    }\n\n    // Check whether the first token is possibly a contextual keyword, so that\n    // we can forbid `for (async of` if this turns out to be a for-of loop.\n    const startsWithAsync = this.isContextual(tt._async);\n\n    const refExpressionErrors = new ExpressionErrors();\n    const init = this.parseExpression(true, refExpressionErrors);\n    const isForOf = this.isContextual(tt._of);\n    if (isForOf) {\n      // Check for leading tokens that are forbidden in for-of loops:\n      if (startsWithLet) {\n        this.raise(Errors.ForOfLet, init);\n      }\n\n      if (\n        // `for await (async of []);` is allowed.\n        awaitAt === null &&\n        startsWithAsync &&\n        init.type === \"Identifier\"\n      ) {\n        // This catches the case where the `async` in `for (async of` was\n        // parsed as an identifier. If it was parsed as the start of an async\n        // arrow function (e.g. `for (async of => {} of []);`), the LVal check\n        // further down will raise a more appropriate error.\n        this.raise(Errors.ForOfAsync, init);\n      }\n    }\n    if (isForOf || this.match(tt._in)) {\n      this.checkDestructuringPrivate(refExpressionErrors);\n      this.toAssignable(init, /* isLHS */ true);\n      const type = isForOf ? \"ForOfStatement\" : \"ForInStatement\";\n      this.checkLVal(init, { type });\n      return this.parseForIn(\n        node as Undone<N.ForInStatement | N.ForOfStatement>,\n        // @ts-expect-error init has been transformed to an assignable\n        init,\n        awaitAt,\n      );\n    } else {\n      this.checkExpressionErrors(refExpressionErrors, true);\n    }\n    if (awaitAt !== null) {\n      this.unexpected(awaitAt);\n    }\n    return this.parseFor(node as Undone<N.ForStatement>, init);\n  }\n\n  // https://tc39.es/ecma262/#prod-HoistableDeclaration\n  parseFunctionStatement(\n    this: Parser,\n    node: Undone<N.FunctionDeclaration>,\n    isAsync: boolean,\n    isHangingDeclaration: boolean,\n  ): N.FunctionDeclaration {\n    this.next(); // eat 'function'\n    return this.parseFunction(\n      node,\n      ParseFunctionFlag.Declaration |\n        (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) |\n        (isAsync ? ParseFunctionFlag.Async : 0),\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-IfStatement\n  parseIfStatement(this: Parser, node: Undone<N.IfStatement>) {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    // Annex B.3.3\n    // https://tc39.es/ecma262/#sec-functiondeclarations-in-ifstatement-statement-clauses\n    node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();\n    node.alternate = this.eat(tt._else)\n      ? this.parseStatementOrSloppyAnnexBFunctionDeclaration()\n      : null;\n    return this.finishNode(node, \"IfStatement\");\n  }\n\n  parseReturnStatement(this: Parser, node: Undone<N.ReturnStatement>) {\n    if (\n      !this.prodParam.hasReturn &&\n      !(this.optionFlags & OptionFlags.AllowReturnOutsideFunction)\n    ) {\n      this.raise(Errors.IllegalReturn, this.state.startLoc);\n    }\n\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.isLineTerminator()) {\n      node.argument = null;\n    } else {\n      node.argument = this.parseExpression();\n      this.semicolon();\n    }\n\n    return this.finishNode(node, \"ReturnStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-SwitchStatement\n  parseSwitchStatement(this: Parser, node: Undone<N.SwitchStatement>) {\n    this.next();\n    node.discriminant = this.parseHeaderExpression();\n    const cases: N.SwitchStatement[\"cases\"] = (node.cases = []);\n    this.expect(tt.braceL);\n    this.state.labels.push(switchLabel);\n    this.scope.enter(ScopeFlag.OTHER);\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    let cur;\n    for (let sawDefault; !this.match(tt.braceR); ) {\n      if (this.match(tt._case) || this.match(tt._default)) {\n        const isCase = this.match(tt._case);\n        if (cur) this.finishNode(cur, \"SwitchCase\");\n        // @ts-expect-error Fixme\n        cases.push((cur = this.startNode<N.SwitchCase>()));\n        cur.consequent = [];\n        this.next();\n        if (isCase) {\n          cur.test = this.parseExpression();\n        } else {\n          if (sawDefault) {\n            this.raise(\n              Errors.MultipleDefaultsInSwitch,\n              this.state.lastTokStartLoc,\n            );\n          }\n          sawDefault = true;\n          cur.test = null;\n        }\n        this.expect(tt.colon);\n      } else {\n        if (cur) {\n          cur.consequent.push(this.parseStatementListItem());\n        } else {\n          this.unexpected();\n        }\n      }\n    }\n    this.scope.exit();\n    if (cur) this.finishNode(cur, \"SwitchCase\");\n    this.next(); // Closing brace\n    this.state.labels.pop();\n    return this.finishNode(node, \"SwitchStatement\");\n  }\n\n  parseThrowStatement(this: Parser, node: Undone<N.ThrowStatement>) {\n    this.next();\n    if (this.hasPrecedingLineBreak()) {\n      this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);\n    }\n    node.argument = this.parseExpression();\n    this.semicolon();\n    return this.finishNode(node, \"ThrowStatement\");\n  }\n\n  parseCatchClauseParam(this: Parser): N.Pattern {\n    const param = this.parseBindingAtom();\n\n    this.scope.enter(\n      this.options.annexB && param.type === \"Identifier\"\n        ? ScopeFlag.SIMPLE_CATCH\n        : 0,\n    );\n    this.checkLVal(\n      param,\n      { type: \"CatchClause\" },\n      BindingFlag.TYPE_CATCH_PARAM,\n    );\n\n    return param;\n  }\n\n  parseTryStatement(\n    this: Parser,\n    node: Undone<N.TryStatement>,\n  ): N.TryStatement {\n    this.next();\n\n    node.block = this.parseBlock();\n    node.handler = null;\n\n    if (this.match(tt._catch)) {\n      const clause = this.startNode<N.CatchClause>();\n      this.next();\n      if (this.match(tt.parenL)) {\n        this.expect(tt.parenL);\n        clause.param = this.parseCatchClauseParam();\n        this.expect(tt.parenR);\n      } else {\n        clause.param = null;\n        this.scope.enter(ScopeFlag.OTHER);\n      }\n\n      // Parse the catch clause's body.\n      clause.body =\n        // For the smartPipelines plugin: Disable topic references from outer\n        // contexts within the catch clause's body.\n        this.withSmartMixTopicForbiddingContext(() =>\n          // Parse the catch clause's body.\n          this.parseBlock(false, false),\n        );\n\n      this.scope.exit();\n      node.handler = this.finishNode(clause, \"CatchClause\");\n    }\n\n    node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null;\n\n    if (!node.handler && !node.finalizer) {\n      this.raise(Errors.NoCatchOrFinally, node);\n    }\n\n    return this.finishNode(node, \"TryStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-VariableStatement\n  // https://tc39.es/ecma262/#prod-LexicalDeclaration\n  parseVarStatement(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): N.VariableDeclaration {\n    this.next();\n    this.parseVar(node, false, kind, allowMissingInitializer);\n    this.semicolon();\n    return this.finishNode(node, \"VariableDeclaration\");\n  }\n\n  // https://tc39.es/ecma262/#prod-WhileStatement\n  parseWhileStatement(\n    this: Parser,\n    node: Undone<N.WhileStatement>,\n  ): N.WhileStatement {\n    this.next();\n    node.test = this.parseHeaderExpression();\n    this.state.labels.push(loopLabel);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.state.labels.pop();\n\n    return this.finishNode(node, \"WhileStatement\");\n  }\n\n  parseWithStatement(\n    this: Parser,\n    node: Undone<N.WithStatement>,\n  ): N.WithStatement {\n    if (this.state.strict) {\n      this.raise(Errors.StrictWith, this.state.startLoc);\n    }\n    this.next();\n    node.object = this.parseHeaderExpression();\n\n    // Parse the statement body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the with statement's body.\n      // They are permitted in function default-parameter expressions, which are\n      // part of the outer context, outside of the with statement's body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the statement body.\n        this.parseStatement(),\n      );\n\n    return this.finishNode(node, \"WithStatement\");\n  }\n\n  parseEmptyStatement(node: Undone<N.EmptyStatement>): N.EmptyStatement {\n    this.next();\n    return this.finishNode(node, \"EmptyStatement\");\n  }\n\n  // https://tc39.es/ecma262/#prod-LabelledStatement\n  parseLabeledStatement(\n    this: Parser,\n    node: Undone<N.LabeledStatement>,\n    maybeName: string,\n    expr: N.Identifier,\n    flags: ParseStatementFlag,\n  ): N.LabeledStatement {\n    for (const label of this.state.labels) {\n      if (label.name === maybeName) {\n        this.raise(Errors.LabelRedeclaration, expr, {\n          labelName: maybeName,\n        });\n      }\n    }\n\n    const kind = tokenIsLoop(this.state.type)\n      ? LoopLabelKind.Loop\n      : this.match(tt._switch)\n        ? LoopLabelKind.Switch\n        : null;\n    for (let i = this.state.labels.length - 1; i >= 0; i--) {\n      const label = this.state.labels[i];\n      if (label.statementStart === node.start) {\n        label.statementStart = this.sourceToOffsetPos(this.state.start);\n        label.kind = kind;\n      } else {\n        break;\n      }\n    }\n\n    this.state.labels.push({\n      name: maybeName,\n      kind: kind,\n      statementStart: this.sourceToOffsetPos(this.state.start),\n    });\n    // https://tc39.es/ecma262/#prod-LabelledItem\n    node.body =\n      flags & ParseStatementFlag.AllowLabeledFunction\n        ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true)\n        : this.parseStatement();\n\n    this.state.labels.pop();\n    node.label = expr;\n    return this.finishNode(node, \"LabeledStatement\");\n  }\n\n  parseExpressionStatement(\n    node: Undone<N.ExpressionStatement>,\n    expr: N.Expression,\n    /* eslint-disable-next-line @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    decorators: N.Decorator[] | null,\n  ) {\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 `allowDirectives` is true (used for\n  // function bodies).\n\n  parseBlock(\n    this: Parser,\n    allowDirectives: boolean = false,\n    createNewLexicalScope: boolean = true,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): N.BlockStatement {\n    const node = this.startNode<N.BlockStatement>();\n    if (allowDirectives) {\n      this.state.strictErrors.clear();\n    }\n    this.expect(tt.braceL);\n    if (createNewLexicalScope) {\n      this.scope.enter(ScopeFlag.OTHER);\n    }\n    this.parseBlockBody(\n      node,\n      allowDirectives,\n      false,\n      tt.braceR,\n      afterBlockParse,\n    );\n    if (createNewLexicalScope) {\n      this.scope.exit();\n    }\n    return this.finishNode(node, \"BlockStatement\");\n  }\n\n  isValidDirective(stmt: N.Statement): boolean {\n    return (\n      stmt.type === \"ExpressionStatement\" &&\n      stmt.expression.type === \"StringLiteral\" &&\n      !stmt.expression.extra.parenthesized\n    );\n  }\n\n  parseBlockBody(\n    this: Parser,\n    node: Undone<N.BlockStatementLike>,\n    allowDirectives: boolean | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const body: N.BlockStatementLike[\"body\"] = (node.body = []);\n    const directives: N.BlockStatementLike[\"directives\"] = (node.directives =\n      []);\n    this.parseBlockOrModuleBlockBody(\n      body,\n      allowDirectives ? directives : undefined,\n      topLevel,\n      end,\n      afterBlockParse,\n    );\n  }\n\n  // Undefined directives means that directives are not allowed.\n  // https://tc39.es/ecma262/#prod-Block\n  // https://tc39.es/ecma262/#prod-ModuleBody\n  parseBlockOrModuleBlockBody(\n    this: Parser,\n    body: N.Statement[],\n    directives: N.Directive[] | undefined | null,\n    topLevel: boolean,\n    end: TokenType,\n    afterBlockParse?: (hasStrictModeDirective: boolean) => void,\n  ): void {\n    const oldStrict = this.state.strict;\n    let hasStrictModeDirective = false;\n    let parsedNonDirective = false;\n\n    while (!this.match(end)) {\n      const stmt = topLevel\n        ? this.parseModuleItem()\n        : this.parseStatementListItem();\n\n      if (directives && !parsedNonDirective) {\n        if (this.isValidDirective(stmt)) {\n          const directive = this.stmtToDirective(stmt);\n          directives.push(directive);\n\n          if (\n            !hasStrictModeDirective &&\n            directive.value.value === \"use strict\"\n          ) {\n            hasStrictModeDirective = true;\n            this.setStrict(true);\n          }\n\n          continue;\n        }\n        parsedNonDirective = true;\n        // clear strict errors since the strict mode will not change within the block\n        this.state.strictErrors.clear();\n      }\n      body.push(stmt);\n    }\n\n    afterBlockParse?.call(this, hasStrictModeDirective);\n\n    if (!oldStrict) {\n      this.setStrict(false);\n    }\n\n    this.next();\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  parseFor(\n    this: Parser,\n    node: Undone<N.ForStatement>,\n    init?: N.VariableDeclaration | N.Expression | null,\n  ): N.ForStatement {\n    node.init = init;\n    this.semicolon(/* allowAsi */ false);\n    node.test = this.match(tt.semi) ? null : this.parseExpression();\n    this.semicolon(/* allowAsi */ false);\n    node.update = this.match(tt.parenR) ? null : this.parseExpression();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin: Disable topic references from outer\n      // contexts within the loop body. They are permitted in test expressions,\n      // outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse the loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\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  parseForIn(\n    this: Parser,\n    node: Undone<N.ForInOf>,\n    init: N.VariableDeclaration | N.AssignmentPattern,\n    awaitAt?: Position | null,\n  ): N.ForInOf {\n    const isForIn = this.match(tt._in);\n    this.next();\n\n    if (isForIn) {\n      if (awaitAt !== null) this.unexpected(awaitAt);\n    } else {\n      node.await = awaitAt !== null;\n    }\n\n    if (\n      init.type === \"VariableDeclaration\" &&\n      init.declarations[0].init != null &&\n      (!isForIn ||\n        !this.options.annexB ||\n        this.state.strict ||\n        init.kind !== \"var\" ||\n        init.declarations[0].id.type !== \"Identifier\")\n    ) {\n      this.raise(Errors.ForInOfLoopInitializer, init, {\n        type: isForIn ? \"ForInStatement\" : \"ForOfStatement\",\n      });\n    }\n\n    if (init.type === \"AssignmentPattern\") {\n      this.raise(Errors.InvalidLhs, init, {\n        ancestor: { type: \"ForStatement\" },\n      });\n    }\n\n    node.left = init;\n    node.right = isForIn\n      ? this.parseExpression()\n      : this.parseMaybeAssignAllowIn();\n    this.expect(tt.parenR);\n\n    // Parse the loop body.\n    node.body =\n      // For the smartPipelines plugin:\n      // Disable topic references from outer contexts within the loop body.\n      // They are permitted in test expressions, outside of the loop body.\n      this.withSmartMixTopicForbiddingContext(() =>\n        // Parse loop body.\n        this.parseStatement(),\n      );\n\n    this.scope.exit();\n    this.state.labels.pop();\n\n    return this.finishNode(node, isForIn ? \"ForInStatement\" : \"ForOfStatement\");\n  }\n\n  // Parse a list of variable declarations.\n\n  parseVar(\n    this: Parser,\n    node: Undone<N.VariableDeclaration>,\n    isFor: boolean,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n    allowMissingInitializer: boolean = false,\n  ): Undone<N.VariableDeclaration> {\n    const declarations: N.VariableDeclarator[] = (node.declarations = []);\n    node.kind = kind;\n    for (;;) {\n      const decl = this.startNode<N.VariableDeclarator>();\n      this.parseVarId(decl, kind);\n      decl.init = !this.eat(tt.eq)\n        ? null\n        : isFor\n          ? this.parseMaybeAssignDisallowIn()\n          : this.parseMaybeAssignAllowIn();\n\n      if (decl.init === null && !allowMissingInitializer) {\n        if (\n          decl.id.type !== \"Identifier\" &&\n          !(isFor && (this.match(tt._in) || this.isContextual(tt._of)))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            {\n              kind: \"destructuring\",\n            },\n          );\n        } else if (\n          (kind === \"const\" || kind === \"using\" || kind === \"await using\") &&\n          !(this.match(tt._in) || this.isContextual(tt._of))\n        ) {\n          this.raise(\n            Errors.DeclarationMissingInitializer,\n            this.state.lastTokEndLoc,\n            { kind },\n          );\n        }\n      }\n      declarations.push(this.finishNode(decl, \"VariableDeclarator\"));\n      if (!this.eat(tt.comma)) break;\n    }\n    return node;\n  }\n\n  parseVarId(\n    this: Parser,\n    decl: Undone<N.VariableDeclarator>,\n    kind: \"var\" | \"let\" | \"const\" | \"using\" | \"await using\",\n  ): void {\n    const id = this.parseBindingAtom();\n    if (kind === \"using\" || kind === \"await using\") {\n      if (id.type === \"ArrayPattern\" || id.type === \"ObjectPattern\") {\n        this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);\n      }\n    }\n    this.checkLVal(\n      id,\n      { type: \"VariableDeclarator\" },\n      kind === \"var\" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL,\n    );\n    decl.id = id;\n  }\n\n  // https://tc39.es/ecma262/#prod-AsyncFunctionExpression\n  parseAsyncFunctionExpression(\n    this: Parser,\n    node: Undone<N.FunctionExpression>,\n  ): N.FunctionExpression {\n    return this.parseFunction(node, ParseFunctionFlag.Async);\n  }\n\n  // Parse a function declaration or expression (depending on the\n  // ParseFunctionFlag.Declaration flag).\n\n  parseFunction<T extends N.NormalFunction>(\n    this: Parser,\n    node: Undone<T>,\n    flags: ParseFunctionFlag = ParseFunctionFlag.Expression,\n  ): T {\n    const hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;\n    const isDeclaration = !!(flags & ParseFunctionFlag.Declaration);\n    const requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);\n    const isAsync = !!(flags & ParseFunctionFlag.Async);\n\n    this.initFunction(node, isAsync);\n\n    if (this.match(tt.star)) {\n      if (hangingDeclaration) {\n        this.raise(\n          Errors.GeneratorInSingleStatementContext,\n          this.state.startLoc,\n        );\n      }\n      this.next(); // eat *\n      node.generator = true;\n    }\n\n    if (isDeclaration) {\n      node.id = this.parseFunctionId(requireId);\n    }\n\n    const oldMaybeInArrowParameters = this.state.maybeInArrowParameters;\n    this.state.maybeInArrowParameters = false;\n    this.scope.enter(ScopeFlag.FUNCTION);\n    this.prodParam.enter(functionFlags(isAsync, node.generator));\n\n    if (!isDeclaration) {\n      node.id = this.parseFunctionId();\n    }\n\n    this.parseFunctionParams(node, /* isConstructor */ false);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the function body. They are permitted in function\n    // default-parameter expressions, outside of the function body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the function body.\n      this.parseFunctionBodyAndFinish(\n        node,\n        isDeclaration ? \"FunctionDeclaration\" : \"FunctionExpression\",\n      );\n    });\n\n    this.prodParam.exit();\n    this.scope.exit();\n\n    if (isDeclaration && !hangingDeclaration) {\n      // We need to register this _after_ parsing the function body\n      // because of TypeScript body-less function declarations,\n      // which shouldn't be added to the scope.\n      this.registerFunctionStatementId(node as T);\n    }\n\n    this.state.maybeInArrowParameters = oldMaybeInArrowParameters;\n    return node as T;\n  }\n\n  parseFunctionId(requireId?: boolean): N.Identifier | undefined | null {\n    return requireId || tokenIsIdentifier(this.state.type)\n      ? this.parseIdentifier()\n      : null;\n  }\n\n  parseFunctionParams(\n    this: Parser,\n    node: Undone<N.Function>,\n    isConstructor?: boolean,\n  ): void {\n    this.expect(tt.parenL);\n    this.expressionScope.enter(newParameterDeclarationScope());\n    node.params = this.parseBindingList(\n      tt.parenR,\n      charCodes.rightParenthesis,\n      ParseBindingListFlags.IS_FUNCTION_PARAMS |\n        (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0),\n    );\n\n    this.expressionScope.exit();\n  }\n\n  registerFunctionStatementId(node: N.Function): void {\n    if (!node.id) return;\n\n    // If it is a regular function declaration in sloppy mode, then it is\n    // subject to Annex B semantics (BindingFlag.TYPE_FUNCTION). Otherwise, the binding\n    // mode depends on properties of the current scope (see\n    // treatFunctionsAsVar).\n    this.scope.declareName(\n      node.id.name,\n      !this.options.annexB || this.state.strict || node.generator || node.async\n        ? this.scope.treatFunctionsAsVar\n          ? BindingFlag.TYPE_VAR\n          : BindingFlag.TYPE_LEXICAL\n        : BindingFlag.TYPE_FUNCTION,\n      node.id.loc.start,\n    );\n  }\n\n  // Parse a class declaration or literal (depending on the\n  // `isStatement` parameter).\n\n  parseClass<T extends N.Class>(\n    this: Parser,\n    node: Undone<T>,\n    isStatement: /* T === ClassDeclaration */ boolean,\n    optionalId?: boolean,\n  ): T {\n    this.next(); // 'class'\n\n    // A class definition is always strict mode code.\n    const oldStrict = this.state.strict;\n    this.state.strict = true;\n\n    this.parseClassId(node, isStatement, optionalId);\n    this.parseClassSuper(node);\n    // this.state.strict is restored in parseClassBody\n    node.body = this.parseClassBody(!!node.superClass, oldStrict);\n\n    return this.finishNode(\n      node,\n      isStatement ? \"ClassDeclaration\" : \"ClassExpression\",\n    );\n  }\n\n  isClassProperty(): boolean {\n    return this.match(tt.eq) || this.match(tt.semi) || this.match(tt.braceR);\n  }\n\n  isClassMethod(): boolean {\n    return this.match(tt.parenL);\n  }\n\n  nameIsConstructor(key: N.Expression | N.PrivateName): boolean {\n    return (\n      (key.type === \"Identifier\" && key.name === \"constructor\") ||\n      (key.type === \"StringLiteral\" && key.value === \"constructor\")\n    );\n  }\n\n  isNonstaticConstructor(method: N.ClassMethod | N.ClassProperty): boolean {\n    return (\n      !method.computed && !method.static && this.nameIsConstructor(method.key)\n    );\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassBody\n  parseClassBody(\n    this: Parser,\n    hadSuperClass: boolean,\n    oldStrict: boolean,\n  ): N.ClassBody {\n    this.classScope.enter();\n\n    const state: N.ParseClassMemberState = {\n      hadConstructor: false,\n      hadSuperClass,\n    };\n    let decorators: N.Decorator[] = [];\n    const classBody = this.startNode<N.ClassBody>();\n    classBody.body = [];\n\n    this.expect(tt.braceL);\n\n    // For the smartPipelines plugin: Disable topic references from outer\n    // contexts within the class body.\n    this.withSmartMixTopicForbiddingContext(() => {\n      // Parse the contents within the braces.\n      while (!this.match(tt.braceR)) {\n        if (this.eat(tt.semi)) {\n          if (decorators.length > 0) {\n            throw this.raise(\n              Errors.DecoratorSemicolon,\n              this.state.lastTokEndLoc,\n            );\n          }\n          continue;\n        }\n\n        if (this.match(tt.at)) {\n          decorators.push(this.parseDecorator());\n          continue;\n        }\n\n        const member = this.startNode<N.ClassMember>();\n\n        // steal the decorators if there are any\n        if (decorators.length) {\n          // @ts-expect-error Fixme\n          member.decorators = decorators;\n          this.resetStartLocationFromNode(member, decorators[0]);\n          decorators = [];\n        }\n\n        this.parseClassMember(classBody, member, state);\n\n        if (\n          // @ts-expect-error Fixme\n          member.kind === \"constructor\" &&\n          // @ts-expect-error Fixme\n          member.decorators &&\n          // @ts-expect-error Fixme\n          member.decorators.length > 0\n        ) {\n          this.raise(Errors.DecoratorConstructor, member);\n        }\n      }\n    });\n\n    this.state.strict = oldStrict;\n\n    this.next(); // eat `}`\n\n    if (decorators.length) {\n      throw this.raise(Errors.TrailingDecorator, this.state.startLoc);\n    }\n\n    this.classScope.exit();\n\n    return this.finishNode(classBody, \"ClassBody\");\n  }\n\n  // returns true if the current identifier is a method/field name,\n  // false if it is a modifier\n  parseClassMemberFromModifier(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n  ): boolean {\n    const key = this.parseIdentifier(true); // eats the modifier\n\n    if (this.isClassMethod()) {\n      const method: N.ClassMethod = member as any;\n\n      // a method named like the modifier\n      method.kind = \"method\";\n      method.computed = false;\n      method.key = key;\n      method.static = false;\n      this.pushClassMethod(\n        classBody,\n        method,\n        false,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n      return true;\n    } else if (this.isClassProperty()) {\n      const prop: N.ClassProperty = member as any;\n\n      // a property named like the modifier\n      prop.computed = false;\n      prop.key = key;\n      prop.static = false;\n      classBody.body.push(this.parseClassProperty(prop));\n      return true;\n    }\n    this.resetPreviousNodeTrailingComments(key);\n    return false;\n  }\n\n  parseClassMember(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n  ): void {\n    const isStatic = this.isContextual(tt._static);\n\n    if (isStatic) {\n      if (this.parseClassMemberFromModifier(classBody, member)) {\n        // a class element named 'static'\n        return;\n      }\n      if (this.eat(tt.braceL)) {\n        this.parseClassStaticBlock(classBody, member as any as N.StaticBlock);\n        return;\n      }\n    }\n\n    this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);\n  }\n\n  parseClassMemberWithIsStatic(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<N.ClassMember>,\n    state: N.ParseClassMemberState,\n    isStatic: boolean,\n  ) {\n    const publicMethod = member as N.ClassMethod;\n    const privateMethod = member as N.ClassPrivateMethod;\n    const publicProp = member as N.ClassProperty;\n    const privateProp = member as N.ClassPrivateProperty;\n    const accessorProp = member as N.ClassAccessorProperty;\n\n    const method: typeof publicMethod | typeof privateMethod = publicMethod;\n    const publicMember: typeof publicMethod | typeof publicProp = publicMethod;\n\n    member.static = isStatic;\n    this.parsePropertyNamePrefixOperator(member);\n\n    if (this.eat(tt.star)) {\n      // a generator\n      method.kind = \"method\";\n      const isPrivateName = this.match(tt.privateName);\n      this.parseClassElementName(method);\n\n      if (isPrivateName) {\n        // Private generator method\n        this.pushClassPrivateMethod(classBody, privateMethod, true, false);\n        return;\n      }\n\n      if (this.isNonstaticConstructor(publicMethod)) {\n        this.raise(Errors.ConstructorIsGenerator, publicMethod.key);\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        true,\n        false,\n        /* isConstructor */ false,\n        false,\n      );\n\n      return;\n    }\n\n    const isContextual =\n      !this.state.containsEsc && tokenIsIdentifier(this.state.type);\n    const key = this.parseClassElementName(member);\n    const maybeContextualKw = isContextual ? (key as N.Identifier).name : null;\n    const isPrivate = this.isPrivateName(key);\n    const maybeQuestionTokenStartLoc = this.state.startLoc;\n\n    this.parsePostMemberNameModifiers(publicMember);\n\n    if (this.isClassMethod()) {\n      method.kind = \"method\";\n\n      if (isPrivate) {\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n        return;\n      }\n\n      // a normal method\n      const isConstructor = this.isNonstaticConstructor(publicMethod);\n      let allowsDirectSuper = false;\n      if (isConstructor) {\n        publicMethod.kind = \"constructor\";\n\n        // TypeScript allows multiple overloaded constructor declarations.\n        if (state.hadConstructor && !this.hasPlugin(\"typescript\")) {\n          this.raise(Errors.DuplicateConstructor, key);\n        }\n        if (isConstructor && this.hasPlugin(\"typescript\") && member.override) {\n          this.raise(Errors.OverrideOnConstructor, key);\n        }\n        state.hadConstructor = true;\n        allowsDirectSuper = state.hadSuperClass;\n      }\n\n      this.pushClassMethod(\n        classBody,\n        publicMethod,\n        false,\n        false,\n        isConstructor,\n        allowsDirectSuper,\n      );\n    } else if (this.isClassProperty()) {\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else if (maybeContextualKw === \"async\" && !this.isLineTerminator()) {\n      // an async method\n      this.resetPreviousNodeTrailingComments(key);\n      const isGenerator = this.eat(tt.star);\n\n      if (publicMember.optional) {\n        this.unexpected(maybeQuestionTokenStartLoc);\n      }\n\n      method.kind = \"method\";\n      // The so-called parsed name would have been \"async\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(method);\n      this.parsePostMemberNameModifiers(publicMember);\n\n      if (isPrivate) {\n        // private async method\n        this.pushClassPrivateMethod(\n          classBody,\n          privateMethod,\n          isGenerator,\n          true,\n        );\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAsync, publicMethod.key);\n        }\n\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          isGenerator,\n          true,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n    } else if (\n      (maybeContextualKw === \"get\" || maybeContextualKw === \"set\") &&\n      !(this.match(tt.star) && this.isLineTerminator())\n    ) {\n      // `get\\n*` is an uninitialized property named 'get' followed by a generator.\n      // a getter or setter\n      this.resetPreviousNodeTrailingComments(key);\n      method.kind = maybeContextualKw;\n      // The so-called parsed name would have been \"get/set\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicMethod);\n\n      if (isPrivate) {\n        // private getter/setter\n        this.pushClassPrivateMethod(classBody, privateMethod, false, false);\n      } else {\n        if (this.isNonstaticConstructor(publicMethod)) {\n          this.raise(Errors.ConstructorIsAccessor, publicMethod.key);\n        }\n        this.pushClassMethod(\n          classBody,\n          publicMethod,\n          false,\n          false,\n          /* isConstructor */ false,\n          false,\n        );\n      }\n\n      this.checkGetterSetterParams(publicMethod);\n    } else if (maybeContextualKw === \"accessor\" && !this.isLineTerminator()) {\n      this.expectPlugin(\"decoratorAutoAccessors\");\n      this.resetPreviousNodeTrailingComments(key);\n\n      // The so-called parsed name would have been \"accessor\": get the real name.\n      const isPrivate = this.match(tt.privateName);\n      this.parseClassElementName(publicProp);\n      this.pushClassAccessorProperty(classBody, accessorProp, isPrivate);\n    } else if (this.isLineTerminator()) {\n      // an uninitialized class property (due to ASI, since we don't otherwise recognize the next token)\n      if (isPrivate) {\n        this.pushClassPrivateProperty(classBody, privateProp);\n      } else {\n        this.pushClassProperty(classBody, publicProp);\n      }\n    } else {\n      this.unexpected();\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassElementName\n  parseClassElementName(\n    this: Parser,\n    member: Undone<N.ClassMember>,\n  ): N.Expression | N.Identifier | N.PrivateName {\n    const { type, value } = this.state;\n    if (\n      (type === tt.name || type === tt.string) &&\n      member.static &&\n      value === \"prototype\"\n    ) {\n      this.raise(Errors.StaticPrototype, this.state.startLoc);\n    }\n\n    if (type === tt.privateName) {\n      if (value === \"constructor\") {\n        this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);\n      }\n      const key = this.parsePrivateName();\n      member.key = key;\n      return key;\n    }\n\n    this.parsePropertyName(member);\n    return member.key;\n  }\n\n  parseClassStaticBlock(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    member: Undone<\n      N.StaticBlock & {\n        decorators?: Array<N.Decorator>;\n      }\n    >,\n  ) {\n    // Start a new lexical scope\n    this.scope.enter(\n      ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER,\n    );\n    // Start a new scope with regard to loop labels\n    const oldLabels = this.state.labels;\n    this.state.labels = [];\n    // ClassStaticBlockStatementList:\n    //   StatementList[~Yield, ~Await, ~Return] opt\n    this.prodParam.enter(ParamKind.PARAM);\n    const body: N.Statement[] = (member.body = []);\n    this.parseBlockOrModuleBlockBody(body, undefined, false, tt.braceR);\n    this.prodParam.exit();\n    this.scope.exit();\n    this.state.labels = oldLabels;\n    classBody.body.push(this.finishNode<N.StaticBlock>(member, \"StaticBlock\"));\n    if (member.decorators?.length) {\n      this.raise(Errors.DecoratorStaticBlock, member);\n    }\n  }\n\n  pushClassProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassProperty,\n  ) {\n    if (!prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    classBody.body.push(this.parseClassProperty(prop));\n  }\n\n  pushClassPrivateProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: Undone<N.ClassPrivateProperty>,\n  ) {\n    const node = this.parseClassPrivateProperty(prop);\n    classBody.body.push(node);\n\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key),\n      ClassElementType.OTHER,\n      node.key.loc.start,\n    );\n  }\n\n  pushClassAccessorProperty(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    prop: N.ClassAccessorProperty,\n    isPrivate: boolean,\n  ) {\n    if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {\n      // Non-computed field, which is either an identifier named \"constructor\"\n      // or a string literal named \"constructor\"\n      this.raise(Errors.ConstructorClassField, prop.key);\n    }\n\n    const node = this.parseClassAccessorProperty(prop);\n    classBody.body.push(node);\n\n    if (isPrivate) {\n      this.classScope.declarePrivateName(\n        this.getPrivateNameSV(node.key as N.PrivateName),\n        ClassElementType.OTHER,\n        node.key.loc.start,\n      );\n    }\n  }\n\n  pushClassMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n    isConstructor: boolean,\n    allowsDirectSuper: boolean,\n  ): void {\n    classBody.body.push(\n      this.parseMethod(\n        method,\n        isGenerator,\n        isAsync,\n        isConstructor,\n        allowsDirectSuper,\n        \"ClassMethod\",\n        true,\n      ),\n    );\n  }\n\n  pushClassPrivateMethod(\n    this: Parser,\n    classBody: Undone<N.ClassBody>,\n    method: Undone<N.ClassPrivateMethod>,\n    isGenerator: boolean,\n    isAsync: boolean,\n  ): void {\n    const node = this.parseMethod(\n      method,\n      isGenerator,\n      isAsync,\n      /* isConstructor */ false,\n      false,\n      \"ClassPrivateMethod\",\n      true,\n    );\n    classBody.body.push(node);\n\n    const kind =\n      node.kind === \"get\"\n        ? node.static\n          ? ClassElementType.STATIC_GETTER\n          : ClassElementType.INSTANCE_GETTER\n        : node.kind === \"set\"\n          ? node.static\n            ? ClassElementType.STATIC_SETTER\n            : ClassElementType.INSTANCE_SETTER\n          : ClassElementType.OTHER;\n    this.declareClassPrivateMethodInScope(node, kind);\n  }\n\n  declareClassPrivateMethodInScope(\n    node: Undone<N.ClassPrivateMethod | N.TSDeclareMethod>,\n    kind: number,\n  ) {\n    this.classScope.declarePrivateName(\n      this.getPrivateNameSV(node.key as N.PrivateName),\n      kind,\n      node.key.loc.start,\n    );\n  }\n\n  // Overridden in typescript.js\n  parsePostMemberNameModifiers(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    methodOrProp: Undone<N.ClassMethod | N.ClassProperty>,\n  ): void {}\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassPrivateProperty(\n    this: Parser,\n    node: Undone<N.ClassPrivateProperty>,\n  ): N.ClassPrivateProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassPrivateProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-FieldDefinition\n  parseClassProperty(this: Parser, node: N.ClassProperty): N.ClassProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassProperty\");\n  }\n\n  parseClassAccessorProperty(\n    this: Parser,\n    node: N.ClassAccessorProperty,\n  ): N.ClassAccessorProperty {\n    this.parseInitializer(node);\n    this.semicolon();\n    return this.finishNode(node, \"ClassAccessorProperty\");\n  }\n\n  // https://tc39.es/ecma262/#prod-Initializer\n  parseInitializer(\n    this: Parser,\n    node: Undone<\n      N.ClassProperty | N.ClassPrivateProperty | N.ClassAccessorProperty\n    >,\n  ): void {\n    this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);\n    this.expressionScope.enter(newExpressionScope());\n    this.prodParam.enter(ParamKind.PARAM);\n    node.value = this.eat(tt.eq) ? this.parseMaybeAssignAllowIn() : null;\n    this.expressionScope.exit();\n    this.prodParam.exit();\n    this.scope.exit();\n  }\n\n  parseClassId(\n    node: Undone<N.Class>,\n    isStatement: boolean,\n    optionalId?: boolean | null,\n    bindingType: BindingFlag = BindingFlag.TYPE_CLASS,\n  ): void {\n    if (tokenIsIdentifier(this.state.type)) {\n      node.id = this.parseIdentifier();\n      if (isStatement) {\n        this.declareNameFromIdentifier(node.id, bindingType);\n      }\n    } else {\n      if (optionalId || !isStatement) {\n        node.id = null;\n      } else {\n        throw this.raise(Errors.MissingClassName, this.state.startLoc);\n      }\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ClassHeritage\n  parseClassSuper(this: Parser, node: Undone<N.Class>): void {\n    node.superClass = this.eat(tt._extends) ? this.parseExprSubscripts() : null;\n  }\n\n  // Parses module export declaration.\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n\n  parseExport(\n    this: Parser,\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    decorators: N.Decorator[] | null,\n  ): N.AnyExport {\n    const maybeDefaultIdentifier = this.parseMaybeImportPhase(\n      node,\n      /* isExport */ true,\n    );\n    const hasDefault = this.maybeParseExportDefaultSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    const parseAfterDefault = !hasDefault || this.eat(tt.comma);\n    const hasStar = parseAfterDefault && this.eatExportStar(node);\n    const hasNamespace =\n      hasStar && this.maybeParseExportNamespaceSpecifier(node);\n    const parseAfterNamespace =\n      parseAfterDefault && (!hasNamespace || this.eat(tt.comma));\n    const isFromRequired = hasDefault || hasStar;\n\n    if (hasStar && !hasNamespace) {\n      if (hasDefault) this.unexpected();\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(node, true);\n\n      this.sawUnambiguousESM = true;\n\n      return this.finishNode(node, \"ExportAllDeclaration\");\n    }\n\n    const hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);\n\n    if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {\n      this.unexpected(null, tt.braceL);\n    }\n\n    if (hasNamespace && parseAfterNamespace) {\n      this.unexpected(null, tt._from);\n    }\n\n    let hasDeclaration;\n    if (isFromRequired || hasSpecifiers) {\n      hasDeclaration = false;\n      if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.parseExportFrom(\n        node as Undone<N.ExportNamedDeclaration>,\n        isFromRequired,\n      );\n    } else {\n      hasDeclaration = this.maybeParseExportDeclaration(\n        node as Undone<N.ExportNamedDeclaration>,\n      );\n    }\n\n    if (isFromRequired || hasSpecifiers || hasDeclaration) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n      this.checkExport(node2, true, false, !!node2.source);\n      if (node2.declaration?.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, node2.declaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node2, \"ExportNamedDeclaration\");\n    }\n\n    if (this.eat(tt._default)) {\n      const node2 = node as Undone<N.ExportDefaultDeclaration>;\n      // export default ...\n      const decl = this.parseExportDefaultExpression();\n      node2.declaration = decl;\n\n      if (decl.type === \"ClassDeclaration\") {\n        this.maybeTakeDecorators(decorators, decl as N.ClassDeclaration, node2);\n      } else if (decorators) {\n        throw this.raise(Errors.UnsupportedDecoratorExport, node);\n      }\n\n      this.checkExport(node2, true, true);\n      this.sawUnambiguousESM = true;\n      return this.finishNode(node2, \"ExportDefaultDeclaration\");\n    }\n\n    this.unexpected(null, tt.braceL);\n  }\n\n  eatExportStar(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration> {\n    return this.eat(tt.star);\n  }\n\n  maybeParseExportDefaultSpecifier(\n    node: Undone<\n      | N.ExportDefaultDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportNamedDeclaration\n    >,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {\n      // export defaultObj ...\n      this.expectPlugin(\"exportDefaultFrom\", maybeDefaultIdentifier?.loc.start);\n      const id = maybeDefaultIdentifier || this.parseIdentifier(true);\n      const specifier = this.startNodeAtNode<N.ExportDefaultSpecifier>(id);\n      specifier.exported = id;\n      (node as Undone<N.ExportNamedDeclaration>).specifiers = [\n        this.finishNode(specifier, \"ExportDefaultSpecifier\"),\n      ];\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamespaceSpecifier(\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.isContextual(tt._as)) {\n      (node as Undone<N.ExportNamedDeclaration>).specifiers ??= [];\n\n      const specifier = this.startNodeAt<N.ExportNamespaceSpecifier>(\n        this.state.lastTokStartLoc,\n      );\n\n      this.next();\n\n      specifier.exported = this.parseModuleExportName();\n      (node as Undone<N.ExportNamedDeclaration>).specifiers.push(\n        this.finishNode(specifier, \"ExportNamespaceSpecifier\"),\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportNamedSpecifiers(\n    node: Undone<N.Node>,\n  ): node is Undone<N.ExportNamedDeclaration> {\n    if (this.match(tt.braceL)) {\n      const node2 = node as Undone<N.ExportNamedDeclaration>;\n\n      if (!node2.specifiers) node2.specifiers = [];\n      const isTypeExport = node2.exportKind === \"type\";\n      node2.specifiers.push(...this.parseExportSpecifiers(isTypeExport));\n      node2.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node2.assertions = [];\n      } else {\n        node2.attributes = [];\n      }\n      node2.declaration = null;\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseExportDeclaration(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration>,\n  ): boolean {\n    if (this.shouldParseExportDeclaration()) {\n      node.specifiers = [];\n      node.source = null;\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"importAssertions\")) {\n        node.assertions = [];\n      } else {\n        node.attributes = [];\n      }\n      node.declaration = this.parseExportDeclaration(node);\n      return true;\n    }\n    return false;\n  }\n\n  isAsyncFunction(): boolean {\n    if (!this.isContextual(tt._async)) return false;\n    const next = this.nextTokenInLineStart();\n    return this.isUnparsedContextual(next, \"function\");\n  }\n\n  parseExportDefaultExpression(\n    this: Parser,\n  ): N.ExportDefaultDeclaration[\"declaration\"] {\n    const expr = this.startNode();\n\n    if (this.match(tt._function)) {\n      this.next();\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId,\n      );\n    } else if (this.isAsyncFunction()) {\n      this.next(); // eat 'async'\n      this.next(); // eat 'function'\n      return this.parseFunction(\n        expr as Undone<N.FunctionDeclaration>,\n        ParseFunctionFlag.Declaration |\n          ParseFunctionFlag.NullableId |\n          ParseFunctionFlag.Async,\n      );\n    }\n\n    if (this.match(tt._class)) {\n      return this.parseClass(expr as Undone<N.ClassExpression>, true, true);\n    }\n\n    if (this.match(tt.at)) {\n      if (\n        this.hasPlugin(\"decorators\") &&\n        this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n      ) {\n        this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n      }\n      return this.parseClass(\n        this.maybeTakeDecorators(\n          this.parseDecorators(false),\n          this.startNode<N.ClassDeclaration>(),\n        ),\n        true,\n        true,\n      );\n    }\n\n    if (this.match(tt._const) || this.match(tt._var) || this.isLet()) {\n      throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);\n    }\n\n    const res = this.parseMaybeAssignAllowIn();\n    this.semicolon();\n    return res;\n  }\n\n  // https://tc39.es/ecma262/#prod-ExportDeclaration\n  parseExportDeclaration(\n    this: Parser,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    node: Undone<N.ExportNamedDeclaration>,\n  ): N.Declaration | undefined | null {\n    if (this.match(tt._class)) {\n      const node = this.parseClass(\n        this.startNode<N.ClassDeclaration>(),\n        true,\n        false,\n      );\n      return node;\n    }\n    return this.parseStatementListItem() as N.Declaration;\n  }\n\n  isExportDefaultSpecifier(): boolean {\n    const { type } = this.state;\n    if (tokenIsIdentifier(type)) {\n      if ((type === tt._async && !this.state.containsEsc) || type === tt._let) {\n        return false;\n      }\n      if (\n        (type === tt._type || type === tt._interface) &&\n        !this.state.containsEsc\n      ) {\n        const { type: nextType } = this.lookahead();\n        // If we see any variable name other than `from` after `type` keyword,\n        // we consider it as flow/typescript type exports\n        // note that this approach may fail on some pedantic cases\n        // export type from = number\n        if (\n          (tokenIsIdentifier(nextType) && nextType !== tt._from) ||\n          nextType === tt.braceL\n        ) {\n          this.expectOnePlugin([\"flow\", \"typescript\"]);\n          return false;\n        }\n      }\n    } else if (!this.match(tt._default)) {\n      return false;\n    }\n\n    const next = this.nextTokenStart();\n    const hasFrom = this.isUnparsedContextual(next, \"from\");\n    if (\n      this.input.charCodeAt(next) === charCodes.comma ||\n      (tokenIsIdentifier(this.state.type) && hasFrom)\n    ) {\n      return true;\n    }\n    // lookahead again when `export default from` is seen\n    if (this.match(tt._default) && hasFrom) {\n      const nextAfterFrom = this.input.charCodeAt(\n        this.nextTokenStartSince(next + 4),\n      );\n      return (\n        nextAfterFrom === charCodes.quotationMark ||\n        nextAfterFrom === charCodes.apostrophe\n      );\n    }\n    return false;\n  }\n\n  parseExportFrom(\n    this: Parser,\n    node: Undone<N.ExportNamedDeclaration | N.ExportAllDeclaration>,\n    expect?: boolean,\n  ): void {\n    if (this.eatContextual(tt._from)) {\n      node.source = this.parseImportSource();\n      this.checkExport(node);\n      this.maybeParseImportAttributes(node);\n      this.checkJSONModuleImport(node);\n    } else if (expect) {\n      this.unexpected();\n    }\n\n    this.semicolon();\n  }\n\n  shouldParseExportDeclaration(): boolean {\n    const { type } = this.state;\n    if (type === tt.at) {\n      this.expectOnePlugin([\"decorators\", \"decorators-legacy\"]);\n      if (this.hasPlugin(\"decorators\")) {\n        if (\n          this.getPluginOption(\"decorators\", \"decoratorsBeforeExport\") === true\n        ) {\n          this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);\n        }\n\n        return true;\n      }\n    }\n\n    if (this.isContextual(tt._using)) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    if (this.isContextual(tt._await) && this.startsAwaitUsing()) {\n      this.raise(Errors.UsingDeclarationExport, this.state.startLoc);\n      return true;\n    }\n\n    return (\n      type === tt._var ||\n      type === tt._const ||\n      type === tt._function ||\n      type === tt._class ||\n      this.isLet() ||\n      this.isAsyncFunction()\n    );\n  }\n\n  checkExport(\n    node: Undone<\n      | N.ExportNamedDeclaration\n      | N.ExportAllDeclaration\n      | N.ExportDefaultDeclaration\n    >,\n    checkNames?: boolean,\n    isDefault?: boolean,\n    isFrom?: boolean,\n  ): void {\n    if (checkNames) {\n      // Check for duplicate exports\n      if (isDefault) {\n        // Default exports\n        this.checkDuplicateExports(node, \"default\");\n        if (this.hasPlugin(\"exportDefaultFrom\")) {\n          const declaration = (node as any as N.ExportDefaultDeclaration)\n            .declaration;\n          if (\n            declaration.type === \"Identifier\" &&\n            declaration.name === \"from\" &&\n            declaration.end - declaration.start === 4 && // does not contain escape\n            !declaration.extra?.parenthesized\n          ) {\n            this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);\n          }\n        }\n        // @ts-expect-error node.specifiers may not exist\n      } else if (node.specifiers?.length) {\n        // Named exports\n        // @ts-expect-error node.specifiers may not exist\n        for (const specifier of node.specifiers) {\n          const { exported } = specifier;\n          const exportName =\n            exported.type === \"Identifier\" ? exported.name : exported.value;\n          this.checkDuplicateExports(specifier, exportName);\n          if (!isFrom && specifier.local) {\n            const { local } = specifier;\n            if (local.type !== \"Identifier\") {\n              this.raise(Errors.ExportBindingIsString, specifier, {\n                localName: local.value,\n                exportName,\n              });\n            } else {\n              // check for keywords used as local names\n              this.checkReservedWord(local.name, local.loc.start, true, false);\n              // check if export is defined\n              this.scope.checkLocalExport(local);\n            }\n          }\n        }\n      } else if ((node as Undone<N.ExportNamedDeclaration>).declaration) {\n        const decl = (node as Undone<N.ExportNamedDeclaration>).declaration;\n        // Exported declarations\n        if (\n          decl.type === \"FunctionDeclaration\" ||\n          decl.type === \"ClassDeclaration\"\n        ) {\n          const { id } = decl;\n          if (!id) throw new Error(\"Assertion failure\");\n\n          this.checkDuplicateExports(node, id.name);\n        } else if (decl.type === \"VariableDeclaration\") {\n          for (const declaration of decl.declarations) {\n            this.checkDeclaration(declaration.id);\n          }\n        }\n      }\n    }\n  }\n\n  checkDeclaration(node: N.Pattern | N.ObjectProperty): void {\n    if (node.type === \"Identifier\") {\n      this.checkDuplicateExports(node, node.name);\n    } else if (node.type === \"ObjectPattern\") {\n      for (const prop of node.properties) {\n        this.checkDeclaration(prop);\n      }\n    } else if (node.type === \"ArrayPattern\") {\n      for (const elem of node.elements) {\n        if (elem) {\n          this.checkDeclaration(elem);\n        }\n      }\n    } else if (node.type === \"ObjectProperty\") {\n      // @ts-expect-error migrate to Babel types\n      this.checkDeclaration(node.value);\n    } else if (node.type === \"RestElement\") {\n      this.checkDeclaration(node.argument);\n    } else if (node.type === \"AssignmentPattern\") {\n      this.checkDeclaration(node.left);\n    }\n  }\n\n  checkDuplicateExports(\n    node: Undone<\n      | N.Identifier\n      | N.StringLiteral\n      | N.ExportNamedDeclaration\n      | N.ExportSpecifier\n      | N.ExportDefaultSpecifier\n    >,\n    exportName: string,\n  ): void {\n    if (this.exportedIdentifiers.has(exportName)) {\n      if (exportName === \"default\") {\n        this.raise(Errors.DuplicateDefaultExport, node);\n      } else {\n        this.raise(Errors.DuplicateExport, node, { exportName });\n      }\n    }\n    this.exportedIdentifiers.add(exportName);\n  }\n\n  // Parses a comma-separated list of module exports.\n\n  parseExportSpecifiers(isInTypeExport: boolean): Array<N.ExportSpecifier> {\n    const nodes = [];\n    let first = true;\n\n    // export { x, y as z } [from '...']\n    this.expect(tt.braceL);\n\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      const isString = this.match(tt.string);\n      const node = this.startNode<N.ExportSpecifier>();\n      node.local = this.parseModuleExportName() as N.Identifier;\n      nodes.push(\n        this.parseExportSpecifier(\n          node,\n          isString,\n          isInTypeExport,\n          isMaybeTypeOnly,\n        ),\n      );\n    }\n\n    return nodes;\n  }\n\n  parseExportSpecifier(\n    node: any,\n    isString: boolean,\n    /* eslint-disable @typescript-eslint/no-unused-vars -- used in TypeScript parser */\n    isInTypeExport: boolean,\n    isMaybeTypeOnly: boolean,\n    /* eslint-enable @typescript-eslint/no-unused-vars */\n  ): N.ExportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      node.exported = this.parseModuleExportName();\n    } else if (isString) {\n      node.exported = cloneStringLiteral(node.local);\n    } else if (!node.exported) {\n      node.exported = cloneIdentifier(node.local);\n    }\n    return this.finishNode<N.ExportSpecifier>(node, \"ExportSpecifier\");\n  }\n\n  // https://tc39.es/ecma262/#prod-ModuleExportName\n  parseModuleExportName(): N.StringLiteral | N.Identifier {\n    if (this.match(tt.string)) {\n      const result = this.parseStringLiteral(this.state.value);\n      const surrogate = loneSurrogate.exec(result.value);\n      if (surrogate) {\n        this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {\n          surrogateCharCode: surrogate[0].charCodeAt(0),\n        });\n      }\n      return result;\n    }\n    return this.parseIdentifier(true);\n  }\n\n  isJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ): boolean {\n    if (node.assertions != null) {\n      return node.assertions.some(({ key, value }) => {\n        return (\n          value.value === \"json\" &&\n          (key.type === \"Identifier\"\n            ? key.name === \"type\"\n            : key.value === \"type\")\n        );\n      });\n    }\n    return false;\n  }\n\n  checkImportReflection(node: Undone<N.ImportDeclaration>) {\n    const { specifiers } = node;\n    const singleBindingType =\n      specifiers.length === 1 ? specifiers[0].type : null;\n\n    if (node.phase === \"source\") {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(\n          Errors.SourcePhaseImportRequiresDefault,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.phase === \"defer\") {\n      if (singleBindingType !== \"ImportNamespaceSpecifier\") {\n        this.raise(\n          Errors.DeferImportRequiresNamespace,\n          specifiers[0].loc.start,\n        );\n      }\n    } else if (node.module) {\n      if (singleBindingType !== \"ImportDefaultSpecifier\") {\n        this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);\n      }\n      if (node.assertions?.length > 0) {\n        this.raise(\n          Errors.ImportReflectionHasAssertion,\n          specifiers[0].loc.start,\n        );\n      }\n    }\n  }\n\n  checkJSONModuleImport(\n    node: Undone<\n      N.ExportAllDeclaration | N.ExportNamedDeclaration | N.ImportDeclaration\n    >,\n  ) {\n    // @ts-expect-error Fixme: node.type must be undefined because they are undone\n    if (this.isJSONModuleImport(node) && node.type !== \"ExportAllDeclaration\") {\n      // @ts-expect-error specifiers may not index node\n      const { specifiers } = node;\n      if (specifiers != null) {\n        // @ts-expect-error refine specifier types\n        const nonDefaultNamedSpecifier = specifiers.find(specifier => {\n          let imported;\n          if (specifier.type === \"ExportSpecifier\") {\n            imported = specifier.local;\n          } else if (specifier.type === \"ImportSpecifier\") {\n            imported = specifier.imported;\n          }\n          if (imported !== undefined) {\n            return imported.type === \"Identifier\"\n              ? imported.name !== \"default\"\n              : imported.value !== \"default\";\n          }\n        });\n        if (nonDefaultNamedSpecifier !== undefined) {\n          this.raise(\n            Errors.ImportJSONBindingNotDefault,\n            nonDefaultNamedSpecifier.loc.start,\n          );\n        }\n      }\n    }\n  }\n\n  isPotentialImportPhase(isExport: boolean): boolean {\n    if (isExport) return false;\n    return (\n      this.isContextual(tt._source) ||\n      this.isContextual(tt._defer) ||\n      (!process.env.BABEL_8_BREAKING && this.isContextual(tt._module))\n    );\n  }\n\n  applyImportPhase(\n    node: Undone<N.ImportDeclaration | N.ExportNamedDeclaration>,\n    isExport: boolean,\n    phase: string | null,\n    loc?: Position,\n  ): void {\n    if (isExport) {\n      if (!process.env.IS_PUBLISH) {\n        if (\n          (!process.env.BABEL_8_BREAKING && phase === \"module\") ||\n          phase === \"source\"\n        ) {\n          throw new Error(\n            `Assertion failure: export declarations do not support the '${phase}' phase.`,\n          );\n        }\n      }\n      return;\n    }\n\n    if (!process.env.BABEL_8_BREAKING && phase === \"module\") {\n      this.expectPlugin(\"importReflection\", loc);\n      (node as N.ImportDeclaration).module = true;\n    } else if (this.hasPlugin(\"importReflection\")) {\n      (node as N.ImportDeclaration).module = false;\n    }\n\n    if (phase === \"source\") {\n      this.expectPlugin(\"sourcePhaseImports\", loc);\n      (node as N.ImportDeclaration).phase = \"source\";\n    } else if (phase === \"defer\") {\n      this.expectPlugin(\"deferredImportEvaluation\", loc);\n      (node as N.ImportDeclaration).phase = \"defer\";\n    } else if (this.hasPlugin(\"sourcePhaseImports\")) {\n      (node as N.ImportDeclaration).phase = null;\n    }\n  }\n\n  /*\n   * Parse `source` in `import source x from \"x\"`, disambiguating\n   * `import source from \"x\"` and `import source from from \"x\"`.\n   *\n   * This function might return an identifier representing the `source`\n   * if it eats `source` and then discovers that it was the default import\n   * binding and not the import reflection.\n   *\n   * This function is also used to parse `import type` and `import typeof`\n   * in the TS and Flow plugins, and for parsing `import defer`.\n   */\n  parseMaybeImportPhase(\n    node: Undone<N.ImportDeclaration | N.TsImportEqualsDeclaration>,\n    isExport: boolean,\n  ): N.Identifier | null {\n    if (!this.isPotentialImportPhase(isExport)) {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      return null;\n    }\n\n    const phaseIdentifier = this.parseIdentifier(true);\n\n    const { type } = this.state;\n    const isImportPhase = tokenIsKeywordOrIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n\n    if (isImportPhase) {\n      this.resetPreviousIdentifierLeadingComments(phaseIdentifier);\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        phaseIdentifier.name,\n        phaseIdentifier.loc.start,\n      );\n      return null;\n    } else {\n      this.applyImportPhase(\n        node as Undone<N.ImportDeclaration>,\n        isExport,\n        null,\n      );\n      // `<phase>` is a default binding, return it to the main import declaration parser\n      return phaseIdentifier;\n    }\n  }\n\n  isPrecedingIdImportPhase(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    phase: string,\n  ) {\n    const { type } = this.state;\n    return tokenIsIdentifier(type)\n      ? // OK: import <phase> x from \"foo\";\n        // OK: import <phase> from from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // NO: import <phase> from 'foo';\n        // With the module declarations proposals, we will need further disambiguation\n        // for `import module from from;`.\n        type !== tt._from || this.lookaheadCharCode() === charCodes.lowercaseF\n      : // OK: import <phase> { x } from \"foo\";\n        // OK: import <phase> x from \"foo\";\n        // OK: import <phase> * as T from \"foo\";\n        // NO: import <phase> from \"foo\";\n        // OK: import <phase> \"foo\";\n        // The last one is invalid, we will continue parsing and throw\n        // an error later\n        type !== tt.comma;\n  }\n\n  // Parses import declaration.\n  // https://tc39.es/ecma262/#prod-ImportDeclaration\n\n  parseImport(this: Parser, node: Undone<N.ImportDeclaration>): N.AnyImport {\n    if (this.match(tt.string)) {\n      // import '...'\n      return this.parseImportSourceAndAttributes(node);\n    }\n\n    return this.parseImportSpecifiersAndAfter(\n      node,\n      this.parseMaybeImportPhase(node, /* isExport */ false),\n    );\n  }\n\n  parseImportSpecifiersAndAfter(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): N.AnyImport {\n    node.specifiers = [];\n\n    // check if we have a default import like\n    // import React from \"react\";\n    const hasDefault = this.maybeParseDefaultImportSpecifier(\n      node,\n      maybeDefaultIdentifier,\n    );\n    /* we are checking if we do not have a default import, then it is obvious that we need named imports\n     * import { get } from \"axios\";\n     * but if we do have a default import\n     * we need to check if we have a comma after that and\n     * that is where this `|| this.eat` condition comes into play\n     */\n    const parseNext = !hasDefault || this.eat(tt.comma);\n    // if we do have to parse the next set of specifiers, we first check for star imports\n    // import React, * from \"react\";\n    const hasStar = parseNext && this.maybeParseStarImportSpecifier(node);\n    // now we check if we need to parse the next imports\n    // but only if they are not importing * (everything)\n    if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);\n    this.expectContextual(tt._from);\n\n    return this.parseImportSourceAndAttributes(node);\n  }\n\n  parseImportSourceAndAttributes(\n    this: Parser,\n    node: Undone<N.ImportDeclaration>,\n  ): N.AnyImport {\n    node.specifiers ??= [];\n    node.source = this.parseImportSource();\n    this.maybeParseImportAttributes(node);\n    this.checkImportReflection(node);\n    this.checkJSONModuleImport(node);\n\n    this.semicolon();\n    this.sawUnambiguousESM = true;\n    return this.finishNode(node, \"ImportDeclaration\");\n  }\n\n  parseImportSource(this: Parser): N.StringLiteral {\n    if (!this.match(tt.string)) this.unexpected();\n    return this.parseExprAtom() as N.StringLiteral;\n  }\n\n  parseImportSpecifierLocal<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    node: Undone<N.ImportDeclaration>,\n    specifier: Undone<T>,\n    type: T[\"type\"],\n  ): void {\n    specifier.local = this.parseIdentifier();\n    node.specifiers.push(this.finishImportSpecifier(specifier, type));\n  }\n\n  finishImportSpecifier<\n    T extends\n      | N.ImportSpecifier\n      | N.ImportDefaultSpecifier\n      | N.ImportNamespaceSpecifier,\n  >(\n    specifier: Undone<T>,\n    type: T[\"type\"],\n    bindingType: BindingFlag = BindingFlag.TYPE_LEXICAL,\n  ) {\n    this.checkLVal(specifier.local, { type }, bindingType);\n    return this.finishNode(specifier, type);\n  }\n\n  /**\n   * parse assert entries\n   *\n   * @see {@link https://tc39.es/proposal-import-attributes/#prod-WithEntries WithEntries}\n   */\n  parseImportAttributes(): N.ImportAttribute[] {\n    this.expect(tt.braceL);\n\n    const attrs = [];\n    const attrNames = new Set();\n\n    do {\n      if (this.match(tt.braceR)) {\n        break;\n      }\n\n      const node = this.startNode<N.ImportAttribute>();\n\n      // parse AssertionKey : IdentifierName, StringLiteral\n      const keyName = this.state.value;\n      // check if we already have an entry for an attribute\n      // if a duplicate entry is found, throw an error\n      // for now this logic will come into play only when someone declares `type` twice\n      if (attrNames.has(keyName)) {\n        this.raise(\n          Errors.ModuleAttributesWithDuplicateKeys,\n          this.state.startLoc,\n          {\n            key: keyName,\n          },\n        );\n      }\n      attrNames.add(keyName);\n      if (this.match(tt.string)) {\n        node.key = this.parseStringLiteral(keyName);\n      } else {\n        node.key = this.parseIdentifier(true);\n      }\n      this.expect(tt.colon);\n\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    this.expect(tt.braceR);\n\n    return attrs;\n  }\n\n  /**\n   * parse module attributes\n   * @deprecated It will be removed in Babel 8\n   */\n  parseModuleAttributes() {\n    const attrs: N.ImportAttribute[] = [];\n    const attributes = new Set();\n    do {\n      const node = this.startNode<N.ImportAttribute>();\n      node.key = this.parseIdentifier(true);\n\n      if (node.key.name !== \"type\") {\n        this.raise(Errors.ModuleAttributeDifferentFromType, node.key);\n      }\n\n      if (attributes.has(node.key.name)) {\n        this.raise(Errors.ModuleAttributesWithDuplicateKeys, node.key, {\n          key: node.key.name,\n        });\n      }\n      attributes.add(node.key.name);\n      this.expect(tt.colon);\n      if (!this.match(tt.string)) {\n        throw this.raise(\n          Errors.ModuleAttributeInvalidValue,\n          this.state.startLoc,\n        );\n      }\n      node.value = this.parseStringLiteral(this.state.value);\n      attrs.push(this.finishNode(node, \"ImportAttribute\"));\n    } while (this.eat(tt.comma));\n\n    return attrs;\n  }\n\n  maybeParseImportAttributes(\n    node: Undone<\n      N.ImportDeclaration | N.ExportNamedDeclaration | N.ExportAllDeclaration\n    >,\n  ) {\n    let attributes: N.ImportAttribute[];\n    if (!process.env.BABEL_8_BREAKING) {\n      // eslint-disable-next-line no-var\n      var useWith = false;\n    }\n\n    // https://tc39.es/proposal-import-attributes/#prod-WithClause\n    if (this.match(tt._with)) {\n      if (\n        this.hasPrecedingLineBreak() &&\n        this.lookaheadCharCode() === charCodes.leftParenthesis\n      ) {\n        // This will be parsed as a with statement, and we will throw a\n        // better error about it not being supported in strict mode.\n        return;\n      }\n\n      this.next(); // eat `with`\n\n      if (!process.env.BABEL_8_BREAKING && this.hasPlugin(\"moduleAttributes\")) {\n        attributes = this.parseModuleAttributes();\n      } else {\n        attributes = this.parseImportAttributes();\n      }\n      if (!process.env.BABEL_8_BREAKING) {\n        useWith = true;\n      }\n    } else if (this.isContextual(tt._assert) && !this.hasPrecedingLineBreak()) {\n      if (\n        !this.hasPlugin(\"deprecatedImportAssert\") &&\n        (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\"))\n      ) {\n        this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);\n      }\n      if (process.env.BABEL_8_BREAKING || !this.hasPlugin(\"importAssertions\")) {\n        this.addExtra(node, \"deprecatedAssertSyntax\", true);\n      }\n      this.next(); // eat `assert`\n      attributes = this.parseImportAttributes();\n    } else {\n      attributes = [];\n    }\n\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      !useWith &&\n      this.hasPlugin(\"importAssertions\")\n    ) {\n      node.assertions = attributes;\n    } else {\n      node.attributes = attributes;\n    }\n  }\n\n  maybeParseDefaultImportSpecifier(\n    node: Undone<N.ImportDeclaration>,\n    maybeDefaultIdentifier: N.Identifier | null,\n  ): boolean {\n    // import defaultObj, { x, y as z } from '...'\n    if (maybeDefaultIdentifier) {\n      const specifier = this.startNodeAtNode<N.ImportDefaultSpecifier>(\n        maybeDefaultIdentifier,\n      );\n      specifier.local = maybeDefaultIdentifier;\n      node.specifiers.push(\n        this.finishImportSpecifier(specifier, \"ImportDefaultSpecifier\"),\n      );\n      return true;\n    } else if (\n      // We allow keywords, and parseImportSpecifierLocal will report a recoverable error\n      tokenIsKeywordOrIdentifier(this.state.type)\n    ) {\n      this.parseImportSpecifierLocal(\n        node,\n        this.startNode<N.ImportDefaultSpecifier>(),\n        \"ImportDefaultSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  maybeParseStarImportSpecifier(node: Undone<N.ImportDeclaration>): boolean {\n    if (this.match(tt.star)) {\n      const specifier = this.startNode<N.ImportNamespaceSpecifier>();\n      this.next();\n      this.expectContextual(tt._as);\n\n      this.parseImportSpecifierLocal(\n        node,\n        specifier,\n        \"ImportNamespaceSpecifier\",\n      );\n      return true;\n    }\n    return false;\n  }\n\n  parseNamedImportSpecifiers(node: Undone<N.ImportDeclaration>) {\n    let first = true;\n    this.expect(tt.braceL);\n    while (!this.eat(tt.braceR)) {\n      if (first) {\n        first = false;\n      } else {\n        // Detect an attempt to deep destructure\n        if (this.eat(tt.colon)) {\n          throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);\n        }\n\n        this.expect(tt.comma);\n        if (this.eat(tt.braceR)) break;\n      }\n\n      const specifier = this.startNode<N.ImportSpecifier>();\n      const importedIsString = this.match(tt.string);\n      const isMaybeTypeOnly = this.isContextual(tt._type);\n      specifier.imported = this.parseModuleExportName();\n      const importSpecifier = this.parseImportSpecifier(\n        specifier,\n        importedIsString,\n        node.importKind === \"type\" || node.importKind === \"typeof\",\n        isMaybeTypeOnly,\n        undefined,\n      );\n      node.specifiers.push(importSpecifier);\n    }\n  }\n\n  // https://tc39.es/ecma262/#prod-ImportSpecifier\n  parseImportSpecifier(\n    specifier: Undone<N.ImportSpecifier>,\n    importedIsString: boolean,\n    /* used in TypeScript and Flow parser */\n    isInTypeOnlyImport: boolean,\n    isMaybeTypeOnly: boolean,\n    bindingType: BindingFlag | undefined,\n  ): N.ImportSpecifier {\n    if (this.eatContextual(tt._as)) {\n      specifier.local = this.parseIdentifier();\n    } else {\n      const { imported } = specifier;\n      if (importedIsString) {\n        throw this.raise(Errors.ImportBindingIsString, specifier, {\n          importName: (imported as N.StringLiteral).value,\n        });\n      }\n      this.checkReservedWord(\n        (imported as N.Identifier).name,\n        specifier.loc.start,\n        true,\n        true,\n      );\n      if (!specifier.local) {\n        specifier.local = cloneIdentifier(imported);\n      }\n    }\n    return this.finishImportSpecifier(\n      specifier,\n      \"ImportSpecifier\",\n      bindingType,\n    );\n  }\n\n  // This is used in flow and typescript plugin\n  // Determine whether a parameter is a this param\n  isThisParam(\n    param: N.Pattern | N.Identifier | N.TSParameterProperty,\n  ): boolean {\n    return param.type === \"Identifier\" && param.name === \"this\";\n  }\n}\n","import type { Options } from \"../options.ts\";\nimport type * as N from \"../types.ts\";\nimport { getOptions, OptionFlags } from \"../options.ts\";\nimport StatementParser from \"./statement.ts\";\nimport ScopeHandler from \"../util/scope.ts\";\n\nexport type PluginsMap = Map<\n  string,\n  {\n    [x: string]: any;\n  }\n>;\n\nexport default class Parser extends StatementParser {\n  // Forward-declaration so typescript plugin can override jsx plugin\n  // todo(flow->ts) - this probably can be removed\n  // abstract jsxParseOpeningElementAfterName(\n  //   node: N.JSXOpeningElement,\n  // ): N.JSXOpeningElement;\n\n  constructor(\n    options: Options | undefined | null,\n    input: string,\n    pluginsMap: PluginsMap,\n  ) {\n    options = getOptions(options);\n    super(options, input);\n\n    this.options = options;\n    this.initializeScopes();\n    this.plugins = pluginsMap;\n    this.filename = options.sourceFilename;\n    this.startIndex = options.startIndex;\n\n    let optionFlags = 0;\n    if (options.allowAwaitOutsideFunction) {\n      optionFlags |= OptionFlags.AllowAwaitOutsideFunction;\n    }\n    if (options.allowReturnOutsideFunction) {\n      optionFlags |= OptionFlags.AllowReturnOutsideFunction;\n    }\n    if (options.allowImportExportEverywhere) {\n      optionFlags |= OptionFlags.AllowImportExportEverywhere;\n    }\n    if (options.allowSuperOutsideMethod) {\n      optionFlags |= OptionFlags.AllowSuperOutsideMethod;\n    }\n    if (options.allowUndeclaredExports) {\n      optionFlags |= OptionFlags.AllowUndeclaredExports;\n    }\n    if (options.allowNewTargetOutsideFunction) {\n      optionFlags |= OptionFlags.AllowNewTargetOutsideFunction;\n    }\n    if (options.ranges) {\n      optionFlags |= OptionFlags.Ranges;\n    }\n    if (options.tokens) {\n      optionFlags |= OptionFlags.Tokens;\n    }\n    if (options.createImportExpressions) {\n      optionFlags |= OptionFlags.CreateImportExpressions;\n    }\n    if (options.createParenthesizedExpressions) {\n      optionFlags |= OptionFlags.CreateParenthesizedExpressions;\n    }\n    if (options.errorRecovery) {\n      optionFlags |= OptionFlags.ErrorRecovery;\n    }\n    if (options.attachComment) {\n      optionFlags |= OptionFlags.AttachComment;\n    }\n    if (options.annexB) {\n      optionFlags |= OptionFlags.AnnexB;\n    }\n\n    this.optionFlags = optionFlags;\n  }\n\n  // This can be overwritten, for example, by the TypeScript plugin.\n  getScopeHandler(): new (...args: any) => ScopeHandler {\n    return ScopeHandler;\n  }\n\n  parse(): N.File {\n    this.enterInitialScopes();\n    const file = this.startNode<N.File>();\n    const program = this.startNode<N.Program>();\n    this.nextToken();\n    file.errors = null;\n    this.parseTopLevel(file, program);\n    file.errors = this.state.errors;\n    file.comments.length = this.state.commentsLen;\n    return file as N.File;\n  }\n}\n","import type { Options } from \"./options.ts\";\nimport {\n  validatePlugins,\n  mixinPluginNames,\n  mixinPlugins,\n} from \"./plugin-utils.ts\";\nexport type {\n  PluginConfig as ParserPlugin,\n  DecoratorsPluginOptions,\n  FlowPluginOptions,\n  PipelineOperatorPluginOptions,\n  RecordAndTuplePluginOptions,\n  TypeScriptPluginOptions,\n} from \"./typings.ts\";\nimport Parser, { type PluginsMap } from \"./parser/index.ts\";\n\nimport type { ExportedTokenType } from \"./tokenizer/types.ts\";\nimport {\n  getExportedToken,\n  tt as internalTokenTypes,\n  type InternalTokenTypes,\n} from \"./tokenizer/types.ts\";\nexport type { Token } from \"./tokenizer/index.ts\";\n\n// TODO: Rather than type-casting the internal AST definitions to the\n// @babel/types one, we should actually unify them.\nimport type { Expression, File } from \"@babel/types\";\nexport type { Expression, File };\n\nexport type ParserOptions = Partial<Options>;\n\nexport interface ParseError {\n  code: string;\n  reasonCode: string;\n}\nexport type ParseResult<Result extends File | Expression = File> = Result & {\n  errors: null | ParseError[];\n};\n\n/**\n * Parse the provided code as an entire ECMAScript program.\n */\nexport function parse(\n  input: string,\n  options?: ParserOptions,\n): ParseResult<File> {\n  if (options?.sourceType === \"unambiguous\") {\n    options = {\n      ...options,\n    };\n    try {\n      options.sourceType = \"module\";\n      const parser = getParser(options, input);\n      const ast = parser.parse();\n\n      if (parser.sawUnambiguousESM) {\n        return ast as unknown as ParseResult<File>;\n      }\n\n      if (parser.ambiguousScriptDifferentAst) {\n        // Top level await introduces code which can be both a valid script and\n        // a valid module, but which produces different ASTs:\n        //    await\n        //    0\n        // can be parsed either as an AwaitExpression, or as two ExpressionStatements.\n        try {\n          options.sourceType = \"script\";\n          return getParser(\n            options,\n            input,\n          ).parse() as unknown as ParseResult<File>;\n        } catch {}\n      } else {\n        // This is both a valid module and a valid script, but\n        // we parse it as a script by default\n        ast.program.sourceType = \"script\";\n      }\n\n      return ast as unknown as ParseResult<File>;\n    } catch (moduleError) {\n      try {\n        options.sourceType = \"script\";\n        return getParser(\n          options,\n          input,\n        ).parse() as unknown as ParseResult<File>;\n      } catch {}\n\n      throw moduleError;\n    }\n  } else {\n    return getParser(options, input).parse() as unknown as ParseResult<File>;\n  }\n}\n\nexport function parseExpression(\n  input: string,\n  options?: ParserOptions,\n): ParseResult<Expression> {\n  const parser = getParser(options, input);\n  if (parser.options.strictMode) {\n    parser.state.strict = true;\n  }\n  return parser.getExpression() as unknown as ParseResult<Expression>;\n}\n\nfunction generateExportedTokenTypes(\n  internalTokenTypes: InternalTokenTypes,\n): Record<string, ExportedTokenType> {\n  const tokenTypes: Record<string, ExportedTokenType> = {};\n  for (const typeName of Object.keys(\n    internalTokenTypes,\n  ) as (keyof InternalTokenTypes)[]) {\n    tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);\n  }\n  return tokenTypes;\n}\n\nexport const tokTypes = generateExportedTokenTypes(internalTokenTypes);\n\nfunction getParser(options: Options | undefined | null, input: string): Parser {\n  let cls = Parser;\n  const pluginsMap: PluginsMap = new Map();\n  if (options?.plugins) {\n    for (const plugin of options.plugins) {\n      let name, opts;\n      if (typeof plugin === \"string\") {\n        name = plugin;\n      } else {\n        [name, opts] = plugin;\n      }\n      if (!pluginsMap.has(name)) {\n        pluginsMap.set(name, opts || {});\n      }\n    }\n    validatePlugins(pluginsMap);\n    cls = getParserClass(pluginsMap);\n  }\n\n  return new cls(options, input, pluginsMap);\n}\n\nconst parserClassCache = new Map<string, new (...args: any) => Parser>();\n\n/** Get a Parser class with plugins applied. */\nfunction getParserClass(\n  pluginsMap: Map<string, any>,\n): new (...args: any) => Parser {\n  const pluginList = [];\n  for (const name of mixinPluginNames) {\n    if (pluginsMap.has(name)) {\n      pluginList.push(name);\n    }\n  }\n  const key = pluginList.join(\"|\");\n  let cls = parserClassCache.get(key);\n  if (!cls) {\n    cls = Parser;\n    for (const plugin of pluginList) {\n      // @ts-expect-error todo(flow->ts)\n      cls = mixinPlugins[plugin](cls);\n    }\n    parserClassCache.set(key, cls);\n  }\n  return cls;\n}\n","var x=String;\nvar create=function() {return {isColorSupported:false,reset:x,bold:x,dim:x,italic:x,underline:x,inverse:x,hidden:x,strikethrough:x,black:x,red:x,green:x,yellow:x,blue:x,magenta:x,cyan:x,white:x,gray:x,bgBlack:x,bgRed:x,bgGreen:x,bgYellow:x,bgBlue:x,bgMagenta:x,bgCyan:x,bgWhite:x,blackBright:x,redBright:x,greenBright:x,yellowBright:x,blueBright:x,magentaBright:x,cyanBright:x,whiteBright:x,bgBlackBright:x,bgRedBright:x,bgGreenBright:x,bgYellowBright:x,bgBlueBright:x,bgMagentaBright:x,bgCyanBright:x,bgWhiteBright:x}};\nmodule.exports=create();\nmodule.exports.createColors = create;\n","// Copyright 2014, 2015, 2016, 2017, 2018 Simon Lydell\n// License: MIT. (See LICENSE.)\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n})\n\n// This regex comes from regex.coffee, and is inserted here by generate-index.js\n// (run `npm run build`).\nexports.default = /((['\"])(?:(?!\\2|\\\\).|\\\\(?:\\r\\n|[\\s\\S]))*(\\2)?|`(?:[^`\\\\$]|\\\\[\\s\\S]|\\$(?!\\{)|\\$\\{(?:[^{}]|\\{[^}]*\\}?)*\\}?)*(`)?)|(\\/\\/.*)|(\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?)|(\\/(?!\\*)(?:\\[(?:(?![\\]\\\\]).|\\\\.)*\\]|(?![\\/\\]\\\\]).|\\\\.)+\\/(?:(?!\\s*(?:\\b|[\\u0080-\\uFFFF$\\\\'\"~({]|[+\\-!](?!=)|\\.?\\d))|[gmiyus]{1,6}\\b(?![\\u0080-\\uFFFF$\\\\]|\\s*(?:[+\\-*%&|^<>!=?({]|\\/(?![\\/*])))))|(0[xX][\\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\\d*\\.\\d+|\\d+\\.?)(?:[eE][+-]?\\d+)?)|((?!\\d)(?:(?!\\s)[$\\w\\u0080-\\uFFFF]|\\\\u[\\da-fA-F]{4}|\\\\u\\{[\\da-fA-F]+\\})+)|(--|\\+\\+|&&|\\|\\||=>|\\.{3}|(?:[+\\-\\/%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\\](){}])|(\\s+)|(^$|[\\s\\S])/g\n\nexports.matchToToken = function(match) {\n  var token = {type: \"invalid\", value: match[0], closed: undefined}\n       if (match[ 1]) token.type = \"string\" , token.closed = !!(match[3] || match[4])\n  else if (match[ 5]) token.type = \"comment\"\n  else if (match[ 6]) token.type = \"comment\", token.closed = !!match[7]\n  else if (match[ 8]) token.type = \"regex\"\n  else if (match[ 9]) token.type = \"number\"\n  else if (match[10]) token.type = \"name\"\n  else if (match[11]) token.type = \"punctuator\"\n  else if (match[12]) token.type = \"whitespace\"\n  return token\n}\n","import picocolors, { createColors } from \"picocolors\";\nimport type { Colors, Formatter } from \"picocolors/types\";\n\nexport function isColorSupported() {\n  return (\n    // See https://github.com/alexeyraspopov/picocolors/issues/62\n    typeof process === \"object\" &&\n      (process.env.FORCE_COLOR === \"0\" || process.env.FORCE_COLOR === \"false\")\n      ? false\n      : picocolors.isColorSupported\n  );\n}\n\nexport type InternalTokenType =\n  | \"keyword\"\n  | \"capitalized\"\n  | \"jsxIdentifier\"\n  | \"punctuator\"\n  | \"number\"\n  | \"string\"\n  | \"regex\"\n  | \"comment\"\n  | \"invalid\";\n\ntype UITokens = \"gutter\" | \"marker\" | \"message\";\n\nexport type Defs = {\n  [_ in InternalTokenType | UITokens | \"reset\"]: Formatter;\n};\n\nconst compose: <T, U, V>(f: (gv: U) => V, g: (v: T) => U) => (v: T) => V =\n  (f, g) => v =>\n    f(g(v));\n\n/**\n * Styles for token types.\n */\nfunction buildDefs(colors: Colors): Defs {\n  return {\n    keyword: colors.cyan,\n    capitalized: colors.yellow,\n    jsxIdentifier: colors.yellow,\n    punctuator: colors.yellow,\n    number: colors.magenta,\n    string: colors.green,\n    regex: colors.magenta,\n    comment: colors.gray,\n    invalid: compose(compose(colors.white, colors.bgRed), colors.bold),\n\n    gutter: colors.gray,\n    marker: compose(colors.red, colors.bold),\n    message: compose(colors.red, colors.bold),\n\n    reset: colors.reset,\n  };\n}\n\nconst defsOn = buildDefs(createColors(true));\nconst defsOff = buildDefs(createColors(false));\n\nexport function getDefs(enabled: boolean): Defs {\n  return enabled ? defsOn : defsOff;\n}\n","import type { Token as JSToken, JSXToken } from \"js-tokens\";\nimport jsTokens from \"js-tokens\";\n\nimport {\n  isStrictReservedWord,\n  isKeyword,\n} from \"@babel/helper-validator-identifier\";\n\nimport { getDefs, type InternalTokenType } from \"./defs.ts\";\n\n/**\n * Names that are always allowed as identifiers, but also appear as keywords\n * within certain syntactic productions.\n *\n * https://tc39.es/ecma262/#sec-keywords-and-reserved-words\n *\n * `target` has been omitted since it is very likely going to be a false\n * positive.\n */\nconst sometimesKeywords = new Set([\"as\", \"async\", \"from\", \"get\", \"of\", \"set\"]);\n\ntype Token = {\n  type: InternalTokenType | \"uncolored\";\n  value: string;\n};\n\n/**\n * RegExp to test for newlines in terminal.\n */\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * RegExp to test for the three types of brackets.\n */\nconst BRACKET = /^[()[\\]{}]$/;\n\nlet tokenize: (\n  text: string,\n) => Generator<{ type: InternalTokenType | \"uncolored\"; value: string }>;\n\nif (process.env.BABEL_8_BREAKING) {\n  /**\n   * Get the type of token, specifying punctuator type.\n   */\n  const getTokenType = function (\n    token: JSToken | JSXToken,\n  ): InternalTokenType | \"uncolored\" {\n    if (token.type === \"IdentifierName\") {\n      if (\n        isKeyword(token.value) ||\n        isStrictReservedWord(token.value, true) ||\n        sometimesKeywords.has(token.value)\n      ) {\n        return \"keyword\";\n      }\n\n      if (token.value[0] !== token.value[0].toLowerCase()) {\n        return \"capitalized\";\n      }\n    }\n\n    if (token.type === \"Punctuator\" && BRACKET.test(token.value)) {\n      return \"uncolored\";\n    }\n\n    if (token.type === \"Invalid\" && token.value === \"@\") {\n      return \"punctuator\";\n    }\n\n    switch (token.type) {\n      case \"NumericLiteral\":\n        return \"number\";\n\n      case \"StringLiteral\":\n      case \"JSXString\":\n      case \"NoSubstitutionTemplate\":\n        return \"string\";\n\n      case \"RegularExpressionLiteral\":\n        return \"regex\";\n\n      case \"Punctuator\":\n      case \"JSXPunctuator\":\n        return \"punctuator\";\n\n      case \"MultiLineComment\":\n      case \"SingleLineComment\":\n        return \"comment\";\n\n      case \"Invalid\":\n      case \"JSXInvalid\":\n        return \"invalid\";\n\n      case \"JSXIdentifier\":\n        return \"jsxIdentifier\";\n\n      default:\n        return \"uncolored\";\n    }\n  };\n\n  /**\n   * Turn a string of JS into an array of objects.\n   */\n  tokenize = function* (text: string): Generator<Token> {\n    for (const token of jsTokens(text, { jsx: true })) {\n      switch (token.type) {\n        case \"TemplateHead\":\n          yield { type: \"string\", value: token.value.slice(0, -2) };\n          yield { type: \"punctuator\", value: \"${\" };\n          break;\n\n        case \"TemplateMiddle\":\n          yield { type: \"punctuator\", value: \"}\" };\n          yield { type: \"string\", value: token.value.slice(1, -2) };\n          yield { type: \"punctuator\", value: \"${\" };\n          break;\n\n        case \"TemplateTail\":\n          yield { type: \"punctuator\", value: \"}\" };\n          yield { type: \"string\", value: token.value.slice(1) };\n          break;\n\n        default:\n          yield {\n            type: getTokenType(token),\n            value: token.value,\n          };\n      }\n    }\n  };\n} else {\n  /**\n   * RegExp to test for what seems to be a JSX tag name.\n   */\n  const JSX_TAG = /^[a-z][\\w-]*$/i;\n\n  // The token here is defined in js-tokens@4. However we don't bother\n  // typing it since the whole block will be removed in Babel 8\n  const getTokenType = function (token: any, offset: number, text: string) {\n    if (token.type === \"name\") {\n      if (\n        isKeyword(token.value) ||\n        isStrictReservedWord(token.value, true) ||\n        sometimesKeywords.has(token.value)\n      ) {\n        return \"keyword\";\n      }\n\n      if (\n        JSX_TAG.test(token.value) &&\n        (text[offset - 1] === \"<\" || text.slice(offset - 2, offset) === \"</\")\n      ) {\n        return \"jsxIdentifier\";\n      }\n\n      if (token.value[0] !== token.value[0].toLowerCase()) {\n        return \"capitalized\";\n      }\n    }\n\n    if (token.type === \"punctuator\" && BRACKET.test(token.value)) {\n      return \"bracket\";\n    }\n\n    if (\n      token.type === \"invalid\" &&\n      (token.value === \"@\" || token.value === \"#\")\n    ) {\n      return \"punctuator\";\n    }\n\n    return token.type;\n  };\n\n  tokenize = function* (text: string) {\n    let match;\n    while ((match = (jsTokens as any).default.exec(text))) {\n      const token = (jsTokens as any).matchToToken(match);\n\n      yield {\n        type: getTokenType(token, match.index, text),\n        value: token.value,\n      };\n    }\n  };\n}\n\nexport function highlight(text: string) {\n  if (text === \"\") return \"\";\n\n  const defs = getDefs(true);\n\n  let highlighted = \"\";\n\n  for (const { type, value } of tokenize(text)) {\n    if (type in defs) {\n      highlighted += value\n        .split(NEWLINE)\n        .map(str => defs[type as InternalTokenType](str))\n        .join(\"\\n\");\n    } else {\n      highlighted += value;\n    }\n  }\n\n  return highlighted;\n}\n","import { getDefs, isColorSupported } from \"./defs.ts\";\nimport { highlight } from \"./highlight.ts\";\n\nexport { highlight };\n\nlet deprecationWarningShown = false;\n\ntype Location = {\n  column: number;\n  line: number;\n};\n\ntype NodeLocation = {\n  end?: Location;\n  start: Location;\n};\n\nexport interface Options {\n  /** Syntax highlight the code as JavaScript for terminals. default: false */\n  highlightCode?: boolean;\n  /**  The number of lines to show above the error. default: 2 */\n  linesAbove?: number;\n  /**  The number of lines to show below the error. default: 3 */\n  linesBelow?: number;\n  /**\n   * Forcibly syntax highlight the code as JavaScript (for non-terminals);\n   * overrides highlightCode.\n   * default: false\n   */\n  forceColor?: boolean;\n  /**\n   * Pass in a string to be displayed inline (if possible) next to the\n   * highlighted location in the code. If it can't be positioned inline,\n   * it will be placed above the code frame.\n   * default: nothing\n   */\n  message?: string;\n}\n\n/**\n * RegExp to test for newlines in terminal.\n */\n\nconst NEWLINE = /\\r\\n|[\\n\\r\\u2028\\u2029]/;\n\n/**\n * Extract what lines should be marked and highlighted.\n */\n\ntype MarkerLines = Record<number, true | [number, number]>;\n\nfunction getMarkerLines(\n  loc: NodeLocation,\n  source: Array<string>,\n  opts: Options,\n): {\n  start: number;\n  end: number;\n  markerLines: MarkerLines;\n} {\n  const startLoc: Location = {\n    column: 0,\n    line: -1,\n    ...loc.start,\n  };\n  const endLoc: Location = {\n    ...startLoc,\n    ...loc.end,\n  };\n  const { linesAbove = 2, linesBelow = 3 } = opts || {};\n  const startLine = startLoc.line;\n  const startColumn = startLoc.column;\n  const endLine = endLoc.line;\n  const endColumn = endLoc.column;\n\n  let start = Math.max(startLine - (linesAbove + 1), 0);\n  let end = Math.min(source.length, endLine + linesBelow);\n\n  if (startLine === -1) {\n    start = 0;\n  }\n\n  if (endLine === -1) {\n    end = source.length;\n  }\n\n  const lineDiff = endLine - startLine;\n  const markerLines: MarkerLines = {};\n\n  if (lineDiff) {\n    for (let i = 0; i <= lineDiff; i++) {\n      const lineNumber = i + startLine;\n\n      if (!startColumn) {\n        markerLines[lineNumber] = true;\n      } else if (i === 0) {\n        const sourceLength = source[lineNumber - 1].length;\n\n        markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];\n      } else if (i === lineDiff) {\n        markerLines[lineNumber] = [0, endColumn];\n      } else {\n        const sourceLength = source[lineNumber - i].length;\n\n        markerLines[lineNumber] = [0, sourceLength];\n      }\n    }\n  } else {\n    if (startColumn === endColumn) {\n      if (startColumn) {\n        markerLines[startLine] = [startColumn, 0];\n      } else {\n        markerLines[startLine] = true;\n      }\n    } else {\n      markerLines[startLine] = [startColumn, endColumn - startColumn];\n    }\n  }\n\n  return { start, end, markerLines };\n}\n\nexport function codeFrameColumns(\n  rawLines: string,\n  loc: NodeLocation,\n  opts: Options = {},\n): string {\n  const shouldHighlight =\n    opts.forceColor || (isColorSupported() && opts.highlightCode);\n  const defs = getDefs(shouldHighlight);\n\n  const lines = rawLines.split(NEWLINE);\n  const { start, end, markerLines } = getMarkerLines(loc, lines, opts);\n  const hasColumns = loc.start && typeof loc.start.column === \"number\";\n\n  const numberMaxWidth = String(end).length;\n\n  const highlightedLines = shouldHighlight ? highlight(rawLines) : rawLines;\n\n  let frame = highlightedLines\n    .split(NEWLINE, end)\n    .slice(start, end)\n    .map((line, index) => {\n      const number = start + 1 + index;\n      const paddedNumber = ` ${number}`.slice(-numberMaxWidth);\n      const gutter = ` ${paddedNumber} |`;\n      const hasMarker = markerLines[number];\n      const lastMarkerLine = !markerLines[number + 1];\n      if (hasMarker) {\n        let markerLine = \"\";\n        if (Array.isArray(hasMarker)) {\n          const markerSpacing = line\n            .slice(0, Math.max(hasMarker[0] - 1, 0))\n            .replace(/[^\\t]/g, \" \");\n          const numberOfMarkers = hasMarker[1] || 1;\n\n          markerLine = [\n            \"\\n \",\n            defs.gutter(gutter.replace(/\\d/g, \" \")),\n            \" \",\n            markerSpacing,\n            defs.marker(\"^\").repeat(numberOfMarkers),\n          ].join(\"\");\n\n          if (lastMarkerLine && opts.message) {\n            markerLine += \" \" + defs.message(opts.message);\n          }\n        }\n        return [\n          defs.marker(\">\"),\n          defs.gutter(gutter),\n          line.length > 0 ? ` ${line}` : \"\",\n          markerLine,\n        ].join(\"\");\n      } else {\n        return ` ${defs.gutter(gutter)}${line.length > 0 ? ` ${line}` : \"\"}`;\n      }\n    })\n    .join(\"\\n\");\n\n  if (opts.message && !hasColumns) {\n    frame = `${\" \".repeat(numberMaxWidth + 1)}${opts.message}\\n${frame}`;\n  }\n\n  if (shouldHighlight) {\n    return defs.reset(frame);\n  } else {\n    return frame;\n  }\n}\n\n/**\n * Create a code frame, adding line numbers, code highlighting, and pointing to a given position.\n */\n\nexport default function (\n  rawLines: string,\n  lineNumber: number,\n  colNumber?: number | null,\n  opts: Options = {},\n): string {\n  if (!deprecationWarningShown) {\n    deprecationWarningShown = true;\n\n    const message =\n      \"Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.\";\n\n    if (process.emitWarning) {\n      // A string is directly supplied to emitWarning, because when supplying an\n      // Error object node throws in the tests because of different contexts\n      process.emitWarning(message, \"DeprecationWarning\");\n    } else {\n      const deprecationError = new Error(message);\n      deprecationError.name = \"DeprecationWarning\";\n      console.warn(new Error(message));\n    }\n  }\n\n  colNumber = Math.max(colNumber, 0);\n\n  const location: NodeLocation = {\n    start: { column: colNumber, line: lineNumber },\n  };\n\n  return codeFrameColumns(rawLines, location, opts);\n}\n","import {\n  isCallExpression,\n  isExpressionStatement,\n  isFunction,\n  isIdentifier,\n  isJSXIdentifier,\n  isNewExpression,\n  isPlaceholder,\n  isStatement,\n  isStringLiteral,\n  removePropertiesDeep,\n  traverse,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { TraversalAncestors } from \"@babel/types\";\nimport { parse } from \"@babel/parser\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport type { TemplateOpts, ParserOpts } from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nexport type Metadata = {\n  ast: t.File;\n  placeholders: Array<Placeholder>;\n  placeholderNames: Set<string>;\n};\n\ntype PlaceholderType = \"string\" | \"param\" | \"statement\" | \"other\";\nexport type Placeholder = {\n  name: string;\n  resolve: (a: t.File) => { parent: t.Node; key: string; index?: number };\n  type: PlaceholderType;\n  isDuplicate: boolean;\n};\n\nconst PATTERN = /^[_$A-Z0-9]+$/;\n\nexport default function parseAndBuildMetadata<T>(\n  formatter: Formatter<T>,\n  code: string,\n  opts: TemplateOpts,\n): Metadata {\n  const {\n    placeholderWhitelist,\n    placeholderPattern,\n    preserveComments,\n    syntacticPlaceholders,\n  } = opts;\n\n  const ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);\n\n  removePropertiesDeep(ast, {\n    preserveComments,\n  });\n\n  formatter.validate(ast);\n\n  const state: MetadataState = {\n    syntactic: { placeholders: [], placeholderNames: new Set() },\n    legacy: { placeholders: [], placeholderNames: new Set() },\n    placeholderWhitelist,\n    placeholderPattern,\n    syntacticPlaceholders,\n  };\n\n  traverse(ast, placeholderVisitorHandler, state);\n\n  return {\n    ast,\n    ...(state.syntactic.placeholders.length ? state.syntactic : state.legacy),\n  };\n}\n\nfunction placeholderVisitorHandler(\n  node: t.Node,\n  ancestors: TraversalAncestors,\n  state: MetadataState,\n) {\n  let name: string;\n\n  let hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;\n\n  if (isPlaceholder(node)) {\n    if (state.syntacticPlaceholders === false) {\n      throw new Error(\n        \"%%foo%%-style placeholders can't be used when \" +\n          \"'.syntacticPlaceholders' is false.\",\n      );\n    }\n    name = node.name.name;\n    hasSyntacticPlaceholders = true;\n  } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {\n    return;\n  } else if (isIdentifier(node) || isJSXIdentifier(node)) {\n    name = node.name;\n  } else if (isStringLiteral(node)) {\n    name = node.value;\n  } else {\n    return;\n  }\n\n  if (\n    hasSyntacticPlaceholders &&\n    (state.placeholderPattern != null || state.placeholderWhitelist != null)\n  ) {\n    // This check is also in options.js. We need it there to handle the default\n    // .syntacticPlaceholders behavior.\n    throw new Error(\n      \"'.placeholderWhitelist' and '.placeholderPattern' aren't compatible\" +\n        \" with '.syntacticPlaceholders: true'\",\n    );\n  }\n\n  if (\n    !hasSyntacticPlaceholders &&\n    (state.placeholderPattern === false ||\n      !(state.placeholderPattern || PATTERN).test(name)) &&\n    !state.placeholderWhitelist?.has(name)\n  ) {\n    return;\n  }\n\n  // Keep our own copy of the ancestors so we can use it in .resolve().\n  ancestors = ancestors.slice();\n\n  const { node: parent, key } = ancestors[ancestors.length - 1];\n\n  let type: PlaceholderType;\n  if (\n    isStringLiteral(node) ||\n    isPlaceholder(node, { expectedNode: \"StringLiteral\" })\n  ) {\n    type = \"string\";\n  } else if (\n    (isNewExpression(parent) && key === \"arguments\") ||\n    (isCallExpression(parent) && key === \"arguments\") ||\n    (isFunction(parent) && key === \"params\")\n  ) {\n    type = \"param\";\n  } else if (isExpressionStatement(parent) && !isPlaceholder(node)) {\n    type = \"statement\";\n    ancestors = ancestors.slice(0, -1);\n  } else if (isStatement(node) && isPlaceholder(node)) {\n    type = \"statement\";\n  } else {\n    type = \"other\";\n  }\n\n  const { placeholders, placeholderNames } = !hasSyntacticPlaceholders\n    ? state.legacy\n    : state.syntactic;\n\n  placeholders.push({\n    name,\n    type,\n    resolve: ast => resolveAncestors(ast, ancestors),\n    isDuplicate: placeholderNames.has(name),\n  });\n  placeholderNames.add(name);\n}\n\nfunction resolveAncestors(ast: t.File, ancestors: TraversalAncestors) {\n  let parent: t.Node = ast;\n  for (let i = 0; i < ancestors.length - 1; i++) {\n    const { key, index } = ancestors[i];\n\n    if (index === undefined) {\n      parent = (parent as any)[key];\n    } else {\n      parent = (parent as any)[key][index];\n    }\n  }\n\n  const { key, index } = ancestors[ancestors.length - 1];\n\n  return { parent, key, index };\n}\n\ntype MetadataState = {\n  syntactic: {\n    placeholders: Array<Placeholder>;\n    placeholderNames: Set<string>;\n  };\n  legacy: {\n    placeholders: Array<Placeholder>;\n    placeholderNames: Set<string>;\n  };\n  placeholderWhitelist?: Set<string>;\n  placeholderPattern?: RegExp | false;\n  syntacticPlaceholders?: boolean;\n};\n\nfunction parseWithCodeFrame(\n  code: string,\n  parserOpts: ParserOpts,\n  syntacticPlaceholders?: boolean,\n): t.File {\n  const plugins = (parserOpts.plugins || []).slice();\n  if (syntacticPlaceholders !== false) {\n    plugins.push(\"placeholders\");\n  }\n\n  parserOpts = {\n    allowReturnOutsideFunction: true,\n    allowSuperOutsideMethod: true,\n    sourceType: \"module\",\n    ...parserOpts,\n    plugins,\n  };\n\n  try {\n    return parse(code, parserOpts);\n  } catch (err) {\n    const loc = err.loc;\n    if (loc) {\n      err.message += \"\\n\" + codeFrameColumns(code, { start: loc });\n      err.code = \"BABEL_TEMPLATE_PARSE_ERROR\";\n    }\n    throw err;\n  }\n}\n","import {\n  blockStatement,\n  cloneNode,\n  emptyStatement,\n  expressionStatement,\n  identifier,\n  isStatement,\n  isStringLiteral,\n  stringLiteral,\n  validate,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport type { TemplateReplacements } from \"./options.ts\";\nimport type { Metadata, Placeholder } from \"./parse.ts\";\n\nexport default function populatePlaceholders(\n  metadata: Metadata,\n  replacements: TemplateReplacements,\n): t.File {\n  const ast = cloneNode(metadata.ast);\n\n  if (replacements) {\n    metadata.placeholders.forEach(placeholder => {\n      if (!Object.hasOwn(replacements, placeholder.name)) {\n        const placeholderName = placeholder.name;\n\n        throw new Error(\n          `Error: No substitution given for \"${placeholderName}\". If this is not meant to be a\n            placeholder you may want to consider passing one of the following options to @babel/template:\n            - { placeholderPattern: false, placeholderWhitelist: new Set(['${placeholderName}'])}\n            - { placeholderPattern: /^${placeholderName}$/ }`,\n        );\n      }\n    });\n    Object.keys(replacements).forEach(key => {\n      if (!metadata.placeholderNames.has(key)) {\n        throw new Error(`Unknown substitution \"${key}\" given`);\n      }\n    });\n  }\n\n  // Process in reverse order so AST mutation doesn't change indices that\n  // will be needed for later calls to `placeholder.resolve()`.\n  metadata.placeholders\n    .slice()\n    .reverse()\n    .forEach(placeholder => {\n      try {\n        applyReplacement(\n          placeholder,\n          ast,\n          (replacements && replacements[placeholder.name]) || null,\n        );\n      } catch (e) {\n        e.message = `@babel/template placeholder \"${placeholder.name}\": ${e.message}`;\n        throw e;\n      }\n    });\n\n  return ast;\n}\n\nfunction applyReplacement(\n  placeholder: Placeholder,\n  ast: t.File,\n  replacement: any,\n) {\n  // Track inserted nodes and clone them if they are inserted more than\n  // once to avoid injecting the same node multiple times.\n  if (placeholder.isDuplicate) {\n    if (Array.isArray(replacement)) {\n      replacement = replacement.map(node => cloneNode(node));\n    } else if (typeof replacement === \"object\") {\n      replacement = cloneNode(replacement);\n    }\n  }\n\n  const { parent, key, index } = placeholder.resolve(ast);\n\n  if (placeholder.type === \"string\") {\n    if (typeof replacement === \"string\") {\n      replacement = stringLiteral(replacement);\n    }\n    if (!replacement || !isStringLiteral(replacement)) {\n      throw new Error(\"Expected string substitution\");\n    }\n  } else if (placeholder.type === \"statement\") {\n    if (index === undefined) {\n      if (!replacement) {\n        replacement = emptyStatement();\n      } else if (Array.isArray(replacement)) {\n        replacement = blockStatement(replacement);\n      } else if (typeof replacement === \"string\") {\n        replacement = expressionStatement(identifier(replacement));\n      } else if (!isStatement(replacement)) {\n        replacement = expressionStatement(replacement);\n      }\n    } else {\n      if (replacement && !Array.isArray(replacement)) {\n        if (typeof replacement === \"string\") {\n          replacement = identifier(replacement);\n        }\n        if (!isStatement(replacement)) {\n          replacement = expressionStatement(replacement);\n        }\n      }\n    }\n  } else if (placeholder.type === \"param\") {\n    if (typeof replacement === \"string\") {\n      replacement = identifier(replacement);\n    }\n\n    if (index === undefined) throw new Error(\"Assertion failure.\");\n  } else {\n    if (typeof replacement === \"string\") {\n      replacement = identifier(replacement);\n    }\n    if (Array.isArray(replacement)) {\n      throw new Error(\"Cannot replace single expression with an array.\");\n    }\n  }\n\n  function set(parent: any, key: any, value: any) {\n    const node = parent[key] as t.Node;\n    parent[key] = value;\n    if (node.type === \"Identifier\" || node.type === \"Placeholder\") {\n      if (node.typeAnnotation) {\n        value.typeAnnotation = node.typeAnnotation;\n      }\n      if (node.optional) {\n        value.optional = node.optional;\n      }\n      if (node.decorators) {\n        value.decorators = node.decorators;\n      }\n    }\n  }\n\n  if (index === undefined) {\n    validate(parent, key, replacement);\n\n    set(parent, key, replacement);\n  } else {\n    const items: Array<t.Node> = (parent as any)[key].slice();\n\n    if (placeholder.type === \"statement\" || placeholder.type === \"param\") {\n      if (replacement == null) {\n        items.splice(index, 1);\n      } else if (Array.isArray(replacement)) {\n        items.splice(index, 1, ...replacement);\n      } else {\n        set(items, index, replacement);\n      }\n    } else {\n      set(items, index, replacement);\n    }\n\n    validate(parent, key, items);\n    (parent as any)[key] = items;\n  }\n}\n","import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateOpts } from \"./options.ts\";\nimport type { Metadata } from \"./parse.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function stringTemplate<T>(\n  formatter: Formatter<T>,\n  code: string,\n  opts: TemplateOpts,\n): (arg?: unknown) => T {\n  code = formatter.code(code);\n\n  let metadata: Metadata;\n\n  return (arg?: unknown) => {\n    const replacements = normalizeReplacements(arg);\n\n    if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);\n\n    return formatter.unwrap(populatePlaceholders(metadata, replacements));\n  };\n}\n","import type { Formatter } from \"./formatters.ts\";\nimport type { TemplateReplacements, TemplateOpts } from \"./options.ts\";\nimport { normalizeReplacements } from \"./options.ts\";\nimport parseAndBuildMetadata from \"./parse.ts\";\nimport populatePlaceholders from \"./populate.ts\";\n\nexport default function literalTemplate<T>(\n  formatter: Formatter<T>,\n  tpl: Array<string>,\n  opts: TemplateOpts,\n): (_: Array<unknown>) => (_: unknown) => T {\n  const { metadata, names } = buildLiteralData(formatter, tpl, opts);\n\n  return arg => {\n    const defaultReplacements: TemplateReplacements = {};\n    arg.forEach((replacement, i) => {\n      defaultReplacements[names[i]] = replacement;\n    });\n\n    return (arg: unknown) => {\n      const replacements = normalizeReplacements(arg);\n\n      if (replacements) {\n        Object.keys(replacements).forEach(key => {\n          if (Object.hasOwn(defaultReplacements, key)) {\n            throw new Error(\"Unexpected replacement overlap.\");\n          }\n        });\n      }\n\n      return formatter.unwrap(\n        populatePlaceholders(\n          metadata,\n          replacements\n            ? Object.assign(replacements, defaultReplacements)\n            : defaultReplacements,\n        ),\n      );\n    };\n  };\n}\n\nfunction buildLiteralData<T>(\n  formatter: Formatter<T>,\n  tpl: Array<string>,\n  opts: TemplateOpts,\n) {\n  let prefix = \"BABEL_TPL$\";\n\n  const raw = tpl.join(\"\");\n\n  do {\n    // If there are cases where the template already contains $$BABEL_TPL$0 or any other\n    // matching pattern, we keep adding \"$$\" characters until a unique prefix\n    // is found.\n    prefix = \"$$\" + prefix;\n  } while (raw.includes(prefix));\n\n  const { names, code } = buildTemplateCode(tpl, prefix);\n\n  const metadata = parseAndBuildMetadata(formatter, formatter.code(code), {\n    parser: opts.parser,\n\n    // Explicitly include our generated names in the whitelist so users never\n    // have to think about whether their placeholder pattern will match.\n    placeholderWhitelist: new Set(\n      names.concat(\n        opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [],\n      ),\n    ),\n    placeholderPattern: opts.placeholderPattern,\n    preserveComments: opts.preserveComments,\n    syntacticPlaceholders: opts.syntacticPlaceholders,\n  });\n\n  return { metadata, names };\n}\n\nfunction buildTemplateCode(\n  tpl: Array<string>,\n  prefix: string,\n): { names: Array<string>; code: string } {\n  const names = [];\n\n  let code = tpl[0];\n\n  for (let i = 1; i < tpl.length; i++) {\n    const value = `${prefix}${i - 1}`;\n    names.push(value);\n\n    code += value + tpl[i];\n  }\n\n  return { names, code };\n}\n","import { merge, validate } from \"./options.ts\";\nimport type {\n  TemplateOpts,\n  PublicOpts,\n  PublicReplacements,\n} from \"./options.ts\";\nimport type { Formatter } from \"./formatters.ts\";\n\nimport stringTemplate from \"./string.ts\";\nimport literalTemplate from \"./literal.ts\";\n\nexport type TemplateBuilder<T> = {\n  // Build a new builder, merging the given options with the previous ones.\n  (opts: PublicOpts): TemplateBuilder<T>;\n\n  // Building from a string produces an AST builder function by default.\n  (tpl: string, opts?: PublicOpts): (replacements?: PublicReplacements) => T;\n\n  // Building from a template literal produces an AST builder function by default.\n  (\n    tpl: TemplateStringsArray,\n    ...args: Array<unknown>\n  ): (replacements?: PublicReplacements) => T;\n\n  // Allow users to explicitly create templates that produce ASTs, skipping\n  // the need for an intermediate function.\n  ast: {\n    (tpl: string, opts?: PublicOpts): T;\n    (tpl: TemplateStringsArray, ...args: Array<unknown>): T;\n  };\n};\n\n// Prebuild the options that will be used when parsing a `.ast` template.\n// These do not use a pattern because there is no way for users to pass in\n// replacement patterns to begin with, and disabling pattern matching means\n// users have more flexibility in what type of content they have in their\n// template JS.\nconst NO_PLACEHOLDER: TemplateOpts = validate({\n  placeholderPattern: false,\n});\n\nexport default function createTemplateBuilder<T>(\n  formatter: Formatter<T>,\n  defaultOpts?: TemplateOpts,\n): TemplateBuilder<T> {\n  const templateFnCache = new WeakMap();\n  const templateAstCache = new WeakMap();\n  const cachedOpts = defaultOpts || validate(null);\n\n  return Object.assign(\n    ((tpl, ...args) => {\n      if (typeof tpl === \"string\") {\n        if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n        return extendedTrace(\n          stringTemplate(formatter, tpl, merge(cachedOpts, validate(args[0]))),\n        );\n      } else if (Array.isArray(tpl)) {\n        let builder = templateFnCache.get(tpl);\n        if (!builder) {\n          builder = literalTemplate(formatter, tpl, cachedOpts);\n          templateFnCache.set(tpl, builder);\n        }\n        return extendedTrace(builder(args));\n      } else if (typeof tpl === \"object\" && tpl) {\n        if (args.length > 0) throw new Error(\"Unexpected extra params.\");\n        return createTemplateBuilder(\n          formatter,\n          merge(cachedOpts, validate(tpl)),\n        );\n      }\n      throw new Error(`Unexpected template param ${typeof tpl}`);\n    }) as TemplateBuilder<T>,\n    {\n      ast: (tpl: string | Array<string>, ...args: Array<unknown>) => {\n        if (typeof tpl === \"string\") {\n          if (args.length > 1) throw new Error(\"Unexpected extra params.\");\n          return stringTemplate(\n            formatter,\n            tpl,\n            merge(merge(cachedOpts, validate(args[0])), NO_PLACEHOLDER),\n          )();\n        } else if (Array.isArray(tpl)) {\n          let builder = templateAstCache.get(tpl);\n          if (!builder) {\n            builder = literalTemplate(\n              formatter,\n              tpl,\n              merge(cachedOpts, NO_PLACEHOLDER),\n            );\n            templateAstCache.set(tpl, builder);\n          }\n          return builder(args)();\n        }\n\n        throw new Error(`Unexpected template param ${typeof tpl}`);\n      },\n    },\n  );\n}\n\nfunction extendedTrace<Arg, Result>(\n  fn: (_: Arg) => Result,\n): (_: Arg) => Result {\n  // Since we lazy parse the template, we get the current stack so we have the\n  // original stack to append if it errors when parsing\n  let rootStack = \"\";\n  try {\n    // error stack gets populated in IE only on throw\n    // (https://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx)\n    throw new Error();\n  } catch (error) {\n    if (error.stack) {\n      // error.stack does not exists in IE <= 9\n      // We slice off the top 3 items in the stack to remove the call to\n      // 'extendedTrace', and the anonymous builder function, with the final\n      // stripped line being the error message itself since we threw it\n      // in the first place and it doesn't matter.\n      rootStack = error.stack.split(\"\\n\").slice(3).join(\"\\n\");\n    }\n  }\n\n  return (arg: Arg) => {\n    try {\n      return fn(arg);\n    } catch (err) {\n      err.stack += `\\n    =============\\n${rootStack}`;\n      throw err;\n    }\n  };\n}\n","import * as formatters from \"./formatters.ts\";\nimport createTemplateBuilder from \"./builder.ts\";\n\nexport const smart = createTemplateBuilder(formatters.smart);\nexport const statement = createTemplateBuilder(formatters.statement);\nexport const statements = createTemplateBuilder(formatters.statements);\nexport const expression = createTemplateBuilder(formatters.expression);\nexport const program = createTemplateBuilder(formatters.program);\n\ntype DefaultTemplateBuilder = typeof smart & {\n  smart: typeof smart;\n  statement: typeof statement;\n  statements: typeof statements;\n  expression: typeof expression;\n  program: typeof program;\n};\n\nexport default Object.assign(smart.bind(undefined) as DefaultTemplateBuilder, {\n  smart,\n  statement,\n  statements,\n  expression,\n  program,\n  ast: smart.ast,\n});\n\nexport type {\n  PublicOpts as Options,\n  PublicReplacements as Replacements,\n} from \"./options.ts\";\n","/*\n * This file is auto-generated! Do not modify it directly.\n * To re-generate run 'yarn gulp generate-runtime-helpers'\n */\n\nimport template from \"@babel/template\";\nimport type * as t from \"@babel/types\";\n\ninterface Helper {\n  minVersion: string;\n  ast: () => t.Program;\n  metadata: HelperMetadata;\n}\n\nexport interface HelperMetadata {\n  globals: string[];\n  locals: { [name: string]: string[] };\n  dependencies: { [name: string]: string[] };\n  exportBindingAssignments: string[];\n  exportName: string;\n}\n\nfunction helper(\n  minVersion: string,\n  source: string,\n  metadata: HelperMetadata,\n): Helper {\n  return Object.freeze({\n    minVersion,\n    ast: () => template.program.ast(source, { preserveComments: true }),\n    metadata,\n  });\n}\n\nexport { helpers as default };\nconst helpers: Record<string, Helper> = {\n  __proto__: null,\n  // size: 47, gzip size: 63\n  OverloadYield: helper(\n    \"7.18.14\",\n    \"function _OverloadYield(e,d){this.v=e,this.k=d}\",\n    {\n      globals: [],\n      locals: { _OverloadYield: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_OverloadYield\",\n      dependencies: {},\n    },\n  ),\n  // size: 447, gzip size: 270\n  applyDecoratedDescriptor: helper(\n    \"7.0.0-beta.0\",\n    'function _applyDecoratedDescriptor(i,e,r,n,l){var a={};return Object.keys(n).forEach((function(i){a[i]=n[i]})),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,(\"value\"in a||a.initializer)&&(a.writable=!0),a=r.slice().reverse().reduce((function(r,n){return n(i,e,r)||r}),a),l&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(l):void 0,a.initializer=void 0),void 0===a.initializer?(Object.defineProperty(i,e,a),null):a}',\n    {\n      globals: [\"Object\"],\n      locals: { _applyDecoratedDescriptor: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_applyDecoratedDescriptor\",\n      dependencies: {},\n    },\n  ),\n  // size: 2840, gzip size: 1469\n  applyDecs2311: helper(\n    \"7.24.0\",\n    'function applyDecs2311(e,t,n,r,o,i){var a,c,u,s,f,l,p,d=Symbol.metadata||Symbol.for(\"Symbol.metadata\"),m=Object.defineProperty,h=Object.create,y=[h(null),h(null)],v=t.length;function g(t,n,r){return function(o,i){n&&(i=o,o=e);for(var a=0;a<t.length;a++)i=t[a].apply(o,r?[i]:[]);return r?i:o}}function b(e,t,n,r){if(\"function\"!=typeof e&&(r||void 0!==e))throw new TypeError(t+\" must \"+(n||\"be\")+\" a function\"+(r?\"\":\" or undefined\"));return e}function applyDec(e,t,n,r,o,i,u,s,f,l,p){function d(e){if(!p(e))throw new TypeError(\"Attempted to access private element on non-instance\")}var h=[].concat(t[0]),v=t[3],w=!u,D=1===o,S=3===o,j=4===o,E=2===o;function I(t,n,r){return function(o,i){return n&&(i=o,o=e),r&&r(o),P[t].call(o,i)}}if(!w){var P={},k=[],F=S?\"get\":j||D?\"set\":\"value\";if(f?(l||D?P={get:setFunctionName((function(){return v(this)}),r,\"get\"),set:function(e){t[4](this,e)}}:P[F]=v,l||setFunctionName(P[F],r,E?\"\":F)):l||(P=Object.getOwnPropertyDescriptor(e,r)),!l&&!f){if((c=y[+s][r])&&7!=(c^o))throw Error(\"Decorating two elements with the same name (\"+P[F].name+\") is not supported yet\");y[+s][r]=o<3?1:o}}for(var N=e,O=h.length-1;O>=0;O-=n?2:1){var T=b(h[O],\"A decorator\",\"be\",!0),z=n?h[O-1]:void 0,A={},H={kind:[\"field\",\"accessor\",\"method\",\"getter\",\"setter\",\"class\"][o],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw new TypeError(\"attempted to call addInitializer after decoration was finished\");b(t,\"An initializer\",\"be\",!0),i.push(t)}.bind(null,A)};if(w)c=T.call(z,N,H),A.v=1,b(c,\"class decorators\",\"return\")&&(N=c);else if(H.static=s,H.private=f,c=H.access={has:f?p.bind():function(e){return r in e}},j||(c.get=f?E?function(e){return d(e),P.value}:I(\"get\",0,d):function(e){return e[r]}),E||S||(c.set=f?I(\"set\",0,d):function(e,t){e[r]=t}),N=T.call(z,D?{get:P.get,set:P.set}:P[F],H),A.v=1,D){if(\"object\"==typeof N&&N)(c=b(N.get,\"accessor.get\"))&&(P.get=c),(c=b(N.set,\"accessor.set\"))&&(P.set=c),(c=b(N.init,\"accessor.init\"))&&k.unshift(c);else if(void 0!==N)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or undefined\")}else b(N,(l?\"field\":\"method\")+\" decorators\",\"return\")&&(l?k.unshift(N):P[F]=N)}return o<2&&u.push(g(k,s,1),g(i,s,0)),l||w||(f?D?u.splice(-1,0,I(\"get\",s),I(\"set\",s)):u.push(E?P[F]:b.call.bind(P[F])):m(e,r,P)),N}function w(e){return m(e,d,{configurable:!0,enumerable:!0,value:a})}return void 0!==i&&(a=i[d]),a=h(null==a?null:a),f=[],l=function(e){e&&f.push(g(e))},p=function(t,r){for(var i=0;i<n.length;i++){var a=n[i],c=a[1],l=7&c;if((8&c)==t&&!l==r){var p=a[2],d=!!a[3],m=16&c;applyDec(t?e:e.prototype,a,m,d?\"#\"+p:toPropertyKey(p),l,l<2?[]:t?s=s||[]:u=u||[],f,!!t,d,r,t&&d?function(t){return checkInRHS(t)===e}:o)}}},p(8,0),p(0,0),p(8,1),p(0,1),l(u),l(s),c=f,v||w(e),{e:c,get c(){var n=[];return v&&[w(e=applyDec(e,[t],r,e.name,5,n)),g(n,1)]}}}',\n    {\n      globals: [\"Symbol\", \"Object\", \"TypeError\", \"Error\"],\n      locals: { applyDecs2311: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"applyDecs2311\",\n      dependencies: {\n        checkInRHS: [\n          \"body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.10.consequent.body.body.0.argument.left.callee\",\n        ],\n        setFunctionName: [\n          \"body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.0.consequent.right.properties.0.value.callee\",\n          \"body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.1.right.callee\",\n        ],\n        toPropertyKey: [\n          \"body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.3.alternate.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 118, gzip size: 124\n  arrayLikeToArray: helper(\n    \"7.9.0\",\n    \"function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}\",\n    {\n      globals: [\"Array\"],\n      locals: { _arrayLikeToArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_arrayLikeToArray\",\n      dependencies: {},\n    },\n  ),\n  // size: 57, gzip size: 71\n  arrayWithHoles: helper(\n    \"7.0.0-beta.0\",\n    \"function _arrayWithHoles(r){if(Array.isArray(r))return r}\",\n    {\n      globals: [\"Array\"],\n      locals: { _arrayWithHoles: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_arrayWithHoles\",\n      dependencies: {},\n    },\n  ),\n  // size: 78, gzip size: 83\n  arrayWithoutHoles: helper(\n    \"7.0.0-beta.0\",\n    \"function _arrayWithoutHoles(r){if(Array.isArray(r))return arrayLikeToArray(r)}\",\n    {\n      globals: [\"Array\"],\n      locals: { _arrayWithoutHoles: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_arrayWithoutHoles\",\n      dependencies: {\n        arrayLikeToArray: [\"body.0.body.body.0.consequent.argument.callee\"],\n      },\n    },\n  ),\n  // size: 172, gzip size: 159\n  assertClassBrand: helper(\n    \"7.24.0\",\n    'function _assertClassBrand(e,t,n){if(\"function\"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError(\"Private element is not present on this object\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _assertClassBrand: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_assertClassBrand\",\n      dependencies: {},\n    },\n  ),\n  // size: 144, gzip size: 132\n  assertThisInitialized: helper(\n    \"7.0.0-beta.0\",\n    \"function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError(\\\"this hasn't been initialised - super() hasn't been called\\\");return e}\",\n    {\n      globals: [\"ReferenceError\"],\n      locals: { _assertThisInitialized: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_assertThisInitialized\",\n      dependencies: {},\n    },\n  ),\n  // size: 488, gzip size: 278\n  asyncGeneratorDelegate: helper(\n    \"7.0.0-beta.0\",\n    'function _asyncGeneratorDelegate(t){var e={},n=!1;function pump(e,r){return n=!0,r=new Promise((function(n){n(t[e](r))})),{done:!1,value:new OverloadYield(r,1)}}return e[\"undefined\"!=typeof Symbol&&Symbol.iterator||\"@@iterator\"]=function(){return this},e.next=function(t){return n?(n=!1,t):pump(\"next\",t)},\"function\"==typeof t.throw&&(e.throw=function(t){if(n)throw n=!1,t;return pump(\"throw\",t)}),\"function\"==typeof t.return&&(e.return=function(t){return n?(n=!1,t):pump(\"return\",t)}),e}',\n    {\n      globals: [\"Promise\", \"Symbol\"],\n      locals: { _asyncGeneratorDelegate: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_asyncGeneratorDelegate\",\n      dependencies: {\n        OverloadYield: [\n          \"body.0.body.body.1.body.body.0.argument.expressions.2.properties.1.value.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 1081, gzip size: 431\n  asyncIterator: helper(\n    \"7.15.9\",\n    'function _asyncIterator(r){var n,t,o,e=2;for(\"undefined\"!=typeof Symbol&&(t=Symbol.asyncIterator,o=Symbol.iterator);e--;){if(t&&null!=(n=r[t]))return n.call(r);if(o&&null!=(n=r[o]))return new AsyncFromSyncIterator(n.call(r));t=\"@@asyncIterator\",o=\"@@iterator\"}throw new TypeError(\"Object is not async iterable\")}function AsyncFromSyncIterator(r){function AsyncFromSyncIteratorContinuation(r){if(Object(r)!==r)return Promise.reject(new TypeError(r+\" is not an object.\"));var n=r.done;return Promise.resolve(r.value).then((function(r){return{value:r,done:n}}))}return AsyncFromSyncIterator=function(r){this.s=r,this.n=r.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return AsyncFromSyncIteratorContinuation(this.n.apply(this.s,arguments))},return:function(r){var n=this.s.return;return void 0===n?Promise.resolve({value:r,done:!0}):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))},throw:function(r){var n=this.s.return;return void 0===n?Promise.reject(r):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))}},new AsyncFromSyncIterator(r)}',\n    {\n      globals: [\"Symbol\", \"TypeError\", \"Object\", \"Promise\"],\n      locals: {\n        _asyncIterator: [\"body.0.id\"],\n        AsyncFromSyncIterator: [\n          \"body.1.id\",\n          \"body.0.body.body.1.body.body.1.consequent.argument.callee\",\n          \"body.1.body.body.1.argument.expressions.1.left.object\",\n          \"body.1.body.body.1.argument.expressions.2.callee\",\n          \"body.1.body.body.1.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_asyncIterator\",\n      dependencies: {},\n    },\n  ),\n  // size: 414, gzip size: 240\n  asyncToGenerator: helper(\n    \"7.0.0-beta.0\",\n    'function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,\"next\",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,\"throw\",n)}_next(void 0)}))}}',\n    {\n      globals: [\"Promise\"],\n      locals: {\n        asyncGeneratorStep: [\n          \"body.0.id\",\n          \"body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.1.body.body.0.expression.callee\",\n          \"body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.2.body.body.0.expression.callee\",\n        ],\n        _asyncToGenerator: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_asyncToGenerator\",\n      dependencies: {},\n    },\n  ),\n  // size: 63, gzip size: 83\n  awaitAsyncGenerator: helper(\n    \"7.0.0-beta.0\",\n    \"function _awaitAsyncGenerator(e){return new OverloadYield(e,0)}\",\n    {\n      globals: [],\n      locals: { _awaitAsyncGenerator: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_awaitAsyncGenerator\",\n      dependencies: { OverloadYield: [\"body.0.body.body.0.argument.callee\"] },\n    },\n  ),\n  // size: 180, gzip size: 144\n  callSuper: helper(\n    \"7.23.8\",\n    \"function _callSuper(t,o,e){return o=getPrototypeOf(o),possibleConstructorReturn(t,isNativeReflectConstruct()?Reflect.construct(o,e||[],getPrototypeOf(t).constructor):o.apply(t,e))}\",\n    {\n      globals: [\"Reflect\"],\n      locals: { _callSuper: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_callSuper\",\n      dependencies: {\n        getPrototypeOf: [\n          \"body.0.body.body.0.argument.expressions.0.right.callee\",\n          \"body.0.body.body.0.argument.expressions.1.arguments.1.consequent.arguments.2.object.callee\",\n        ],\n        isNativeReflectConstruct: [\n          \"body.0.body.body.0.argument.expressions.1.arguments.1.test.callee\",\n        ],\n        possibleConstructorReturn: [\n          \"body.0.body.body.0.argument.expressions.1.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 146, gzip size: 145\n  checkInRHS: helper(\n    \"7.20.5\",\n    'function _checkInRHS(e){if(Object(e)!==e)throw TypeError(\"right-hand side of \\'in\\' should be an object, got \"+(null!==e?typeof e:\"null\"));return e}',\n    {\n      globals: [\"Object\", \"TypeError\"],\n      locals: { _checkInRHS: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_checkInRHS\",\n      dependencies: {},\n    },\n  ),\n  // size: 139, gzip size: 132\n  checkPrivateRedeclaration: helper(\n    \"7.14.1\",\n    'function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError(\"Cannot initialize the same private elements twice on an object\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _checkPrivateRedeclaration: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_checkPrivateRedeclaration\",\n      dependencies: {},\n    },\n  ),\n  // size: 108, gzip size: 111\n  classCallCheck: helper(\n    \"7.0.0-beta.0\",\n    'function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError(\"Cannot call a class as a function\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _classCallCheck: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classCallCheck\",\n      dependencies: {},\n    },\n  ),\n  // size: 121, gzip size: 122\n  classNameTDZError: helper(\n    \"7.0.0-beta.0\",\n    \"function _classNameTDZError(e){throw new ReferenceError('Class \\\"'+e+'\\\" cannot be referenced in computed property keys.')}\",\n    {\n      globals: [\"ReferenceError\"],\n      locals: { _classNameTDZError: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classNameTDZError\",\n      dependencies: {},\n    },\n  ),\n  // size: 73, gzip size: 88\n  classPrivateFieldGet2: helper(\n    \"7.24.0\",\n    \"function _classPrivateFieldGet2(s,a){return s.get(assertClassBrand(s,a))}\",\n    {\n      globals: [],\n      locals: { _classPrivateFieldGet2: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateFieldGet2\",\n      dependencies: {\n        assertClassBrand: [\"body.0.body.body.0.argument.arguments.0.callee\"],\n      },\n    },\n  ),\n  // size: 85, gzip size: 96\n  classPrivateFieldInitSpec: helper(\n    \"7.14.1\",\n    \"function _classPrivateFieldInitSpec(e,t,a){checkPrivateRedeclaration(e,t),t.set(e,a)}\",\n    {\n      globals: [],\n      locals: { _classPrivateFieldInitSpec: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateFieldInitSpec\",\n      dependencies: {\n        checkPrivateRedeclaration: [\n          \"body.0.body.body.0.expression.expressions.0.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 148, gzip size: 141\n  classPrivateFieldLooseBase: helper(\n    \"7.0.0-beta.0\",\n    'function _classPrivateFieldBase(e,t){if(!{}.hasOwnProperty.call(e,t))throw new TypeError(\"attempted to use private field on non-instance\");return e}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _classPrivateFieldBase: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateFieldBase\",\n      dependencies: {},\n    },\n  ),\n  // size: 73, gzip size: 89\n  classPrivateFieldLooseKey: helper(\n    \"7.0.0-beta.0\",\n    'var id=0;function _classPrivateFieldKey(e){return\"__private_\"+id+++\"_\"+e}',\n    {\n      globals: [],\n      locals: {\n        id: [\n          \"body.0.declarations.0.id\",\n          \"body.1.body.body.0.argument.left.left.right.argument\",\n          \"body.1.body.body.0.argument.left.left.right.argument\",\n        ],\n        _classPrivateFieldKey: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateFieldKey\",\n      dependencies: {},\n    },\n  ),\n  // size: 79, gzip size: 95\n  classPrivateFieldSet2: helper(\n    \"7.24.0\",\n    \"function _classPrivateFieldSet2(s,a,r){return s.set(assertClassBrand(s,a),r),r}\",\n    {\n      globals: [],\n      locals: { _classPrivateFieldSet2: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateFieldSet2\",\n      dependencies: {\n        assertClassBrand: [\n          \"body.0.body.body.0.argument.expressions.0.arguments.0.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 68, gzip size: 84\n  classPrivateGetter: helper(\n    \"7.24.0\",\n    \"function _classPrivateGetter(s,r,a){return a(assertClassBrand(s,r))}\",\n    {\n      globals: [],\n      locals: { _classPrivateGetter: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateGetter\",\n      dependencies: {\n        assertClassBrand: [\"body.0.body.body.0.argument.arguments.0.callee\"],\n      },\n    },\n  ),\n  // size: 82, gzip size: 91\n  classPrivateMethodInitSpec: helper(\n    \"7.14.1\",\n    \"function _classPrivateMethodInitSpec(e,a){checkPrivateRedeclaration(e,a),a.add(e)}\",\n    {\n      globals: [],\n      locals: { _classPrivateMethodInitSpec: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateMethodInitSpec\",\n      dependencies: {\n        checkPrivateRedeclaration: [\n          \"body.0.body.body.0.expression.expressions.0.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 74, gzip size: 89\n  classPrivateSetter: helper(\n    \"7.24.0\",\n    \"function _classPrivateSetter(s,r,a,t){return r(assertClassBrand(s,a),t),t}\",\n    {\n      globals: [],\n      locals: { _classPrivateSetter: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classPrivateSetter\",\n      dependencies: {\n        assertClassBrand: [\n          \"body.0.body.body.0.argument.expressions.0.arguments.0.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 76, gzip size: 94\n  classStaticPrivateMethodGet: helper(\n    \"7.3.2\",\n    \"function _classStaticPrivateMethodGet(s,a,t){return assertClassBrand(a,s),t}\",\n    {\n      globals: [],\n      locals: { _classStaticPrivateMethodGet: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_classStaticPrivateMethodGet\",\n      dependencies: {\n        assertClassBrand: [\"body.0.body.body.0.argument.expressions.0.callee\"],\n      },\n    },\n  ),\n  // size: 206, gzip size: 160\n  construct: helper(\n    \"7.0.0-beta.0\",\n    \"function _construct(t,e,r){if(isNativeReflectConstruct())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,e);var p=new(t.bind.apply(t,o));return r&&setPrototypeOf(p,r.prototype),p}\",\n    {\n      globals: [\"Reflect\"],\n      locals: { _construct: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_construct\",\n      dependencies: {\n        isNativeReflectConstruct: [\"body.0.body.body.0.test.callee\"],\n        setPrototypeOf: [\n          \"body.0.body.body.4.argument.expressions.0.right.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 348, gzip size: 220\n  createClass: helper(\n    \"7.0.0-beta.0\",\n    'function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(e,toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,\"prototype\",{writable:!1}),e}',\n    {\n      globals: [\"Object\"],\n      locals: {\n        _defineProperties: [\n          \"body.0.id\",\n          \"body.1.body.body.0.argument.expressions.0.right.callee\",\n          \"body.1.body.body.0.argument.expressions.1.right.callee\",\n        ],\n        _createClass: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_createClass\",\n      dependencies: {\n        toPropertyKey: [\n          \"body.0.body.body.0.body.body.1.expression.expressions.3.arguments.1.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 692, gzip size: 423\n  createForOfIteratorHelper: helper(\n    \"7.9.0\",\n    'function _createForOfIteratorHelper(r,e){var t=\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(!t){if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&\"number\"==typeof r.length){t&&(r=t);var n=0,F=function(){};return{s:F,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:F}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var o,a=!0,u=!1;return{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}',\n    {\n      globals: [\"Symbol\", \"Array\", \"TypeError\"],\n      locals: { _createForOfIteratorHelper: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_createForOfIteratorHelper\",\n      dependencies: {\n        unsupportedIterableToArray: [\n          \"body.0.body.body.1.consequent.body.0.test.left.right.right.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 488, gzip size: 335\n  createForOfIteratorHelperLoose: helper(\n    \"7.9.0\",\n    'function _createForOfIteratorHelperLoose(r,e){var t=\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&\"number\"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}',\n    {\n      globals: [\"Symbol\", \"Array\", \"TypeError\"],\n      locals: { _createForOfIteratorHelperLoose: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_createForOfIteratorHelperLoose\",\n      dependencies: {\n        unsupportedIterableToArray: [\n          \"body.0.body.body.2.test.left.right.right.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 255, gzip size: 172\n  createSuper: helper(\n    \"7.9.0\",\n    \"function _createSuper(t){var r=isNativeReflectConstruct();return function(){var e,o=getPrototypeOf(t);if(r){var s=getPrototypeOf(this).constructor;e=Reflect.construct(o,arguments,s)}else e=o.apply(this,arguments);return possibleConstructorReturn(this,e)}}\",\n    {\n      globals: [\"Reflect\"],\n      locals: { _createSuper: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_createSuper\",\n      dependencies: {\n        getPrototypeOf: [\n          \"body.0.body.body.1.argument.body.body.0.declarations.1.init.callee\",\n          \"body.0.body.body.1.argument.body.body.1.consequent.body.0.declarations.0.init.object.callee\",\n        ],\n        isNativeReflectConstruct: [\n          \"body.0.body.body.0.declarations.0.init.callee\",\n        ],\n        possibleConstructorReturn: [\n          \"body.0.body.body.1.argument.body.body.2.argument.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 7029, gzip size: 2057\n  decorate: helper(\n    \"7.1.5\",\n    'function _decorate(e,r,t,i){var o=_getDecoratorsApi();if(i)for(var n=0;n<i.length;n++)o=i[n](o);var s=r((function(e){o.initializeInstanceElements(e,a.elements)}),t),a=o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)),e);return o.initializeClassElements(s.F,a.elements),o.runClassFinishers(s.F,a.finishers)}function _getDecoratorsApi(){_getDecoratorsApi=function(){return e};var e={elementsDefinitionOrder:[[\"method\"],[\"field\"]],initializeInstanceElements:function(e,r){[\"method\",\"field\"].forEach((function(t){r.forEach((function(r){r.kind===t&&\"own\"===r.placement&&this.defineClassElement(e,r)}),this)}),this)},initializeClassElements:function(e,r){var t=e.prototype;[\"method\",\"field\"].forEach((function(i){r.forEach((function(r){var o=r.placement;if(r.kind===i&&(\"static\"===o||\"prototype\"===o)){var n=\"static\"===o?e:t;this.defineClassElement(n,r)}}),this)}),this)},defineClassElement:function(e,r){var t=r.descriptor;if(\"field\"===r.kind){var i=r.initializer;t={enumerable:t.enumerable,writable:t.writable,configurable:t.configurable,value:void 0===i?void 0:i.call(e)}}Object.defineProperty(e,r.key,t)},decorateClass:function(e,r){var t=[],i=[],o={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,o)}),this),e.forEach((function(e){if(!_hasDecorators(e))return t.push(e);var r=this.decorateElement(e,o);t.push(r.element),t.push.apply(t,r.extras),i.push.apply(i,r.finishers)}),this),!r)return{elements:t,finishers:i};var n=this.decorateConstructor(t,r);return i.push.apply(i,n.finishers),n.finishers=i,n},addElementPlacement:function(e,r,t){var i=r[e.placement];if(!t&&-1!==i.indexOf(e.key))throw new TypeError(\"Duplicated element (\"+e.key+\")\");i.push(e.key)},decorateElement:function(e,r){for(var t=[],i=[],o=e.decorators,n=o.length-1;n>=0;n--){var s=r[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,o[n])(a)||a);e=l.element,this.addElementPlacement(e,r),l.finisher&&i.push(l.finisher);var c=l.extras;if(c){for(var p=0;p<c.length;p++)this.addElementPlacement(c[p],r);t.push.apply(t,c)}}return{element:e,finishers:i,extras:t}},decorateConstructor:function(e,r){for(var t=[],i=r.length-1;i>=0;i--){var o=this.fromClassDescriptor(e),n=this.toClassDescriptor((0,r[i])(o)||o);if(void 0!==n.finisher&&t.push(n.finisher),void 0!==n.elements){e=n.elements;for(var s=0;s<e.length-1;s++)for(var a=s+1;a<e.length;a++)if(e[s].key===e[a].key&&e[s].placement===e[a].placement)throw new TypeError(\"Duplicated element (\"+e[s].key+\")\")}}return{elements:e,finishers:t}},fromElementDescriptor:function(e){var r={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(r,Symbol.toStringTag,{value:\"Descriptor\",configurable:!0}),\"field\"===e.kind&&(r.initializer=e.initializer),r},toElementDescriptors:function(e){if(void 0!==e)return toArray(e).map((function(e){var r=this.toElementDescriptor(e);return this.disallowProperty(e,\"finisher\",\"An element descriptor\"),this.disallowProperty(e,\"extras\",\"An element descriptor\"),r}),this)},toElementDescriptor:function(e){var r=e.kind+\"\";if(\"method\"!==r&&\"field\"!==r)throw new TypeError(\\'An element descriptor\\\\\\'s .kind property must be either \"method\" or \"field\", but a decorator created an element descriptor with .kind \"\\'+r+\\'\"\\');var t=toPropertyKey(e.key),i=e.placement+\"\";if(\"static\"!==i&&\"prototype\"!==i&&\"own\"!==i)throw new TypeError(\\'An element descriptor\\\\\\'s .placement property must be one of \"static\", \"prototype\" or \"own\", but a decorator created an element descriptor with .placement \"\\'+i+\\'\"\\');var o=e.descriptor;this.disallowProperty(e,\"elements\",\"An element descriptor\");var n={kind:r,key:t,placement:i,descriptor:Object.assign({},o)};return\"field\"!==r?this.disallowProperty(e,\"initializer\",\"A method descriptor\"):(this.disallowProperty(o,\"get\",\"The property descriptor of a field descriptor\"),this.disallowProperty(o,\"set\",\"The property descriptor of a field descriptor\"),this.disallowProperty(o,\"value\",\"The property descriptor of a field descriptor\"),n.initializer=e.initializer),n},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:_optionalCallableProperty(e,\"finisher\"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var r={kind:\"class\",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(r,Symbol.toStringTag,{value:\"Descriptor\",configurable:!0}),r},toClassDescriptor:function(e){var r=e.kind+\"\";if(\"class\"!==r)throw new TypeError(\\'A class descriptor\\\\\\'s .kind property must be \"class\", but a decorator created a class descriptor with .kind \"\\'+r+\\'\"\\');this.disallowProperty(e,\"key\",\"A class descriptor\"),this.disallowProperty(e,\"placement\",\"A class descriptor\"),this.disallowProperty(e,\"descriptor\",\"A class descriptor\"),this.disallowProperty(e,\"initializer\",\"A class descriptor\"),this.disallowProperty(e,\"extras\",\"A class descriptor\");var t=_optionalCallableProperty(e,\"finisher\");return{elements:this.toElementDescriptors(e.elements),finisher:t}},runClassFinishers:function(e,r){for(var t=0;t<r.length;t++){var i=(0,r[t])(e);if(void 0!==i){if(\"function\"!=typeof i)throw new TypeError(\"Finishers must return a constructor.\");e=i}}return e},disallowProperty:function(e,r,t){if(void 0!==e[r])throw new TypeError(t+\" can\\'t have a .\"+r+\" property.\")}};return e}function _createElementDescriptor(e){var r,t=toPropertyKey(e.key);\"method\"===e.kind?r={value:e.value,writable:!0,configurable:!0,enumerable:!1}:\"get\"===e.kind?r={get:e.value,configurable:!0,enumerable:!1}:\"set\"===e.kind?r={set:e.value,configurable:!0,enumerable:!1}:\"field\"===e.kind&&(r={configurable:!0,writable:!0,enumerable:!0});var i={kind:\"field\"===e.kind?\"field\":\"method\",key:t,placement:e.static?\"static\":\"field\"===e.kind?\"own\":\"prototype\",descriptor:r};return e.decorators&&(i.decorators=e.decorators),\"field\"===e.kind&&(i.initializer=e.value),i}function _coalesceGetterSetter(e,r){void 0!==e.descriptor.get?r.descriptor.get=e.descriptor.get:r.descriptor.set=e.descriptor.set}function _coalesceClassElements(e){for(var r=[],isSameElement=function(e){return\"method\"===e.kind&&e.key===o.key&&e.placement===o.placement},t=0;t<e.length;t++){var i,o=e[t];if(\"method\"===o.kind&&(i=r.find(isSameElement)))if(_isDataDescriptor(o.descriptor)||_isDataDescriptor(i.descriptor)){if(_hasDecorators(o)||_hasDecorators(i))throw new ReferenceError(\"Duplicated methods (\"+o.key+\") can\\'t be decorated.\");i.descriptor=o.descriptor}else{if(_hasDecorators(o)){if(_hasDecorators(i))throw new ReferenceError(\"Decorators can\\'t be placed on different accessors with for the same property (\"+o.key+\").\");i.decorators=o.decorators}_coalesceGetterSetter(o,i)}else r.push(o)}return r}function _hasDecorators(e){return e.decorators&&e.decorators.length}function _isDataDescriptor(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _optionalCallableProperty(e,r){var t=e[r];if(void 0!==t&&\"function\"!=typeof t)throw new TypeError(\"Expected \\'\"+r+\"\\' to be a function\");return t}',\n    {\n      globals: [\"Object\", \"TypeError\", \"Symbol\", \"ReferenceError\"],\n      locals: {\n        _decorate: [\"body.0.id\"],\n        _getDecoratorsApi: [\n          \"body.1.id\",\n          \"body.0.body.body.0.declarations.0.init.callee\",\n          \"body.1.body.body.0.expression.left\",\n        ],\n        _createElementDescriptor: [\n          \"body.2.id\",\n          \"body.0.body.body.2.declarations.1.init.arguments.0.arguments.0.arguments.0\",\n        ],\n        _coalesceGetterSetter: [\n          \"body.3.id\",\n          \"body.4.body.body.0.body.body.1.consequent.alternate.body.1.expression.callee\",\n        ],\n        _coalesceClassElements: [\n          \"body.4.id\",\n          \"body.0.body.body.2.declarations.1.init.arguments.0.callee\",\n        ],\n        _hasDecorators: [\n          \"body.5.id\",\n          \"body.1.body.body.1.declarations.0.init.properties.4.value.body.body.1.test.expressions.1.arguments.0.body.body.0.test.argument.callee\",\n          \"body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.left.callee\",\n          \"body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.right.callee\",\n          \"body.4.body.body.0.body.body.1.consequent.alternate.body.0.test.callee\",\n          \"body.4.body.body.0.body.body.1.consequent.alternate.body.0.consequent.body.0.test.callee\",\n        ],\n        _isDataDescriptor: [\n          \"body.6.id\",\n          \"body.4.body.body.0.body.body.1.consequent.test.left.callee\",\n          \"body.4.body.body.0.body.body.1.consequent.test.right.callee\",\n        ],\n        _optionalCallableProperty: [\n          \"body.7.id\",\n          \"body.1.body.body.1.declarations.0.init.properties.11.value.body.body.0.argument.properties.1.value.callee\",\n          \"body.1.body.body.1.declarations.0.init.properties.13.value.body.body.3.declarations.0.init.callee\",\n        ],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_decorate\",\n      dependencies: {\n        toArray: [\n          \"body.1.body.body.1.declarations.0.init.properties.9.value.body.body.0.consequent.argument.callee.object.callee\",\n        ],\n        toPropertyKey: [\n          \"body.1.body.body.1.declarations.0.init.properties.10.value.body.body.2.declarations.0.init.callee\",\n          \"body.2.body.body.0.declarations.1.init.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 206, gzip size: 169\n  defaults: helper(\n    \"7.0.0-beta.0\",\n    \"function _defaults(e,r){for(var t=Object.getOwnPropertyNames(r),o=0;o<t.length;o++){var n=t[o],a=Object.getOwnPropertyDescriptor(r,n);a&&a.configurable&&void 0===e[n]&&Object.defineProperty(e,n,a)}return e}\",\n    {\n      globals: [\"Object\"],\n      locals: { _defaults: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_defaults\",\n      dependencies: {},\n    },\n  ),\n  // size: 115, gzip size: 120\n  defineAccessor: helper(\n    \"7.20.7\",\n    \"function _defineAccessor(e,r,n,t){var c={configurable:!0,enumerable:!0};return c[e]=t,Object.defineProperty(r,n,c)}\",\n    {\n      globals: [\"Object\"],\n      locals: { _defineAccessor: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_defineAccessor\",\n      dependencies: {},\n    },\n  ),\n  // size: 151, gzip size: 130\n  defineProperty: helper(\n    \"7.0.0-beta.0\",\n    \"function _defineProperty(e,r,t){return(r=toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}\",\n    {\n      globals: [\"Object\"],\n      locals: { _defineProperty: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_defineProperty\",\n      dependencies: {\n        toPropertyKey: [\n          \"body.0.body.body.0.argument.expressions.0.test.left.right.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 237, gzip size: 179\n  extends: helper(\n    \"7.0.0-beta.0\",\n    \"function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}\",\n    {\n      globals: [\"Object\"],\n      locals: {\n        _extends: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee.object\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.argument.expressions.0\"],\n      exportName: \"_extends\",\n      dependencies: {},\n    },\n  ),\n  // size: 263, gzip size: 202\n  get: helper(\n    \"7.0.0-beta.0\",\n    'function _get(){return _get=\"undefined\"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value}},_get.apply(null,arguments)}',\n    {\n      globals: [\"Reflect\", \"Object\"],\n      locals: {\n        _get: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee.object\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.argument.expressions.0\"],\n      exportName: \"_get\",\n      dependencies: {\n        superPropBase: [\n          \"body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.0.init.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 179, gzip size: 106\n  getPrototypeOf: helper(\n    \"7.0.0-beta.0\",\n    \"function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}\",\n    {\n      globals: [\"Object\"],\n      locals: {\n        _getPrototypeOf: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.argument.expressions.0\"],\n      exportName: \"_getPrototypeOf\",\n      dependencies: {},\n    },\n  ),\n  // size: 31, gzip size: 51\n  identity: helper(\"7.17.0\", \"function _identity(t){return t}\", {\n    globals: [],\n    locals: { _identity: [\"body.0.id\"] },\n    exportBindingAssignments: [],\n    exportName: \"_identity\",\n    dependencies: {},\n  }),\n  // size: 537, gzip size: 258\n  importDeferProxy: helper(\n    \"7.23.0\",\n    \"function _importDeferProxy(e){var t=null,constValue=function(e){return function(){return e}},proxy=function(r){return function(n,o,f){return null===t&&(t=e()),r(t,o,f)}};return new Proxy({},{defineProperty:constValue(!1),deleteProperty:constValue(!1),get:proxy(Reflect.get),getOwnPropertyDescriptor:proxy(Reflect.getOwnPropertyDescriptor),getPrototypeOf:constValue(null),isExtensible:constValue(!1),has:proxy(Reflect.has),ownKeys:proxy(Reflect.ownKeys),preventExtensions:constValue(!0),set:constValue(!1),setPrototypeOf:constValue(!1)})}\",\n    {\n      globals: [\"Proxy\", \"Reflect\"],\n      locals: { _importDeferProxy: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_importDeferProxy\",\n      dependencies: {},\n    },\n  ),\n  // size: 300, gzip size: 219\n  inherits: helper(\n    \"7.0.0-beta.0\",\n    'function _inherits(t,e){if(\"function\"!=typeof e&&null!==e)throw new TypeError(\"Super expression must either be null or a function\");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,\"prototype\",{writable:!1}),e&&setPrototypeOf(t,e)}',\n    {\n      globals: [\"TypeError\", \"Object\"],\n      locals: { _inherits: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_inherits\",\n      dependencies: {\n        setPrototypeOf: [\n          \"body.0.body.body.1.expression.expressions.2.right.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 114, gzip size: 105\n  inheritsLoose: helper(\n    \"7.0.0-beta.0\",\n    \"function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,setPrototypeOf(t,o)}\",\n    {\n      globals: [\"Object\"],\n      locals: { _inheritsLoose: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_inheritsLoose\",\n      dependencies: {\n        setPrototypeOf: [\"body.0.body.body.0.expression.expressions.2.callee\"],\n      },\n    },\n  ),\n  // size: 198, gzip size: 141\n  initializerDefineProperty: helper(\n    \"7.0.0-beta.0\",\n    \"function _initializerDefineProperty(e,i,r,l){r&&Object.defineProperty(e,i,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(l):void 0})}\",\n    {\n      globals: [\"Object\"],\n      locals: { _initializerDefineProperty: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_initializerDefineProperty\",\n      dependencies: {},\n    },\n  ),\n  // size: 187, gzip size: 154\n  initializerWarningHelper: helper(\n    \"7.0.0-beta.0\",\n    'function _initializerWarningHelper(r,e){throw Error(\"Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.\")}',\n    {\n      globals: [\"Error\"],\n      locals: { _initializerWarningHelper: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_initializerWarningHelper\",\n      dependencies: {},\n    },\n  ),\n  // size: 134, gzip size: 118\n  instanceof: helper(\n    \"7.0.0-beta.0\",\n    'function _instanceof(n,e){return null!=e&&\"undefined\"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](n):n instanceof e}',\n    {\n      globals: [\"Symbol\"],\n      locals: { _instanceof: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_instanceof\",\n      dependencies: {},\n    },\n  ),\n  // size: 72, gzip size: 88\n  interopRequireDefault: helper(\n    \"7.0.0-beta.0\",\n    \"function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}\",\n    {\n      globals: [],\n      locals: { _interopRequireDefault: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_interopRequireDefault\",\n      dependencies: {},\n    },\n  ),\n  // size: 664, gzip size: 351\n  interopRequireWildcard: helper(\n    \"7.14.0\",\n    'function _getRequireWildcardCache(e){if(\"function\"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function(e){return e?t:r})(e)}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||\"object\"!=typeof e&&\"function\"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if(\"default\"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}',\n    {\n      globals: [\"WeakMap\", \"Object\"],\n      locals: {\n        _getRequireWildcardCache: [\n          \"body.0.id\",\n          \"body.1.body.body.2.declarations.0.init.callee\",\n          \"body.0.body.body.2.argument.callee.left\",\n        ],\n        _interopRequireWildcard: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_interopRequireWildcard\",\n      dependencies: {},\n    },\n  ),\n  // size: 133, gzip size: 128\n  isNativeFunction: helper(\n    \"7.0.0-beta.0\",\n    'function _isNativeFunction(t){try{return-1!==Function.toString.call(t).indexOf(\"[native code]\")}catch(n){return\"function\"==typeof t}}',\n    {\n      globals: [\"Function\"],\n      locals: { _isNativeFunction: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_isNativeFunction\",\n      dependencies: {},\n    },\n  ),\n  // size: 193, gzip size: 144\n  isNativeReflectConstruct: helper(\n    \"7.9.0\",\n    \"function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}\",\n    {\n      globals: [\"Boolean\", \"Reflect\"],\n      locals: {\n        _isNativeReflectConstruct: [\n          \"body.0.id\",\n          \"body.0.body.body.1.argument.callee.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.1.argument.callee\"],\n      exportName: \"_isNativeReflectConstruct\",\n      dependencies: {},\n    },\n  ),\n  // size: 129, gzip size: 124\n  iterableToArray: helper(\n    \"7.0.0-beta.0\",\n    'function _iterableToArray(r){if(\"undefined\"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r[\"@@iterator\"])return Array.from(r)}',\n    {\n      globals: [\"Symbol\", \"Array\"],\n      locals: { _iterableToArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_iterableToArray\",\n      dependencies: {},\n    },\n  ),\n  // size: 416, gzip size: 293\n  iterableToArrayLimit: helper(\n    \"7.0.0-beta.0\",\n    'function _iterableToArrayLimit(r,l){var t=null==r?null:\"undefined\"!=typeof Symbol&&r[Symbol.iterator]||r[\"@@iterator\"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}',\n    {\n      globals: [\"Symbol\", \"Object\"],\n      locals: { _iterableToArrayLimit: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_iterableToArrayLimit\",\n      dependencies: {},\n    },\n  ),\n  // size: 520, gzip size: 341\n  jsx: helper(\n    \"7.0.0-beta.0\",\n    'var REACT_ELEMENT_TYPE;function _createRawReactElement(e,r,E,l){REACT_ELEMENT_TYPE||(REACT_ELEMENT_TYPE=\"function\"==typeof Symbol&&Symbol.for&&Symbol.for(\"react.element\")||60103);var o=e&&e.defaultProps,n=arguments.length-3;if(r||0===n||(r={children:void 0}),1===n)r.children=l;else if(n>1){for(var t=Array(n),f=0;f<n;f++)t[f]=arguments[f+3];r.children=t}if(r&&o)for(var i in o)void 0===r[i]&&(r[i]=o[i]);else r||(r=o||{});return{$$typeof:REACT_ELEMENT_TYPE,type:e,key:void 0===E?null:\"\"+E,ref:null,props:r,_owner:null}}',\n    {\n      globals: [\"Symbol\", \"Array\"],\n      locals: {\n        REACT_ELEMENT_TYPE: [\n          \"body.0.declarations.0.id\",\n          \"body.1.body.body.0.expression.left\",\n          \"body.1.body.body.4.argument.properties.0.value\",\n          \"body.1.body.body.0.expression.right.left\",\n        ],\n        _createRawReactElement: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_createRawReactElement\",\n      dependencies: {},\n    },\n  ),\n  // size: 160, gzip size: 144\n  maybeArrayLike: helper(\n    \"7.9.0\",\n    'function _maybeArrayLike(r,a,e){if(a&&!Array.isArray(a)&&\"number\"==typeof a.length){var y=a.length;return arrayLikeToArray(a,void 0!==e&&e<y?e:y)}return r(a,e)}',\n    {\n      globals: [\"Array\"],\n      locals: { _maybeArrayLike: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_maybeArrayLike\",\n      dependencies: {\n        arrayLikeToArray: [\n          \"body.0.body.body.0.consequent.body.1.argument.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 98, gzip size: 106\n  newArrowCheck: helper(\n    \"7.0.0-beta.0\",\n    'function _newArrowCheck(n,r){if(n!==r)throw new TypeError(\"Cannot instantiate an arrow function\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _newArrowCheck: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_newArrowCheck\",\n      dependencies: {},\n    },\n  ),\n  // size: 189, gzip size: 160\n  nonIterableRest: helper(\n    \"7.0.0-beta.0\",\n    'function _nonIterableRest(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _nonIterableRest: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_nonIterableRest\",\n      dependencies: {},\n    },\n  ),\n  // size: 186, gzip size: 156\n  nonIterableSpread: helper(\n    \"7.0.0-beta.0\",\n    'function _nonIterableSpread(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _nonIterableSpread: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_nonIterableSpread\",\n      dependencies: {},\n    },\n  ),\n  // size: 99, gzip size: 108\n  nullishReceiverError: helper(\n    \"7.22.6\",\n    'function _nullishReceiverError(r){throw new TypeError(\"Cannot set property of null or undefined.\")}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _nullishReceiverError: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_nullishReceiverError\",\n      dependencies: {},\n    },\n  ),\n  // size: 94, gzip size: 103\n  objectDestructuringEmpty: helper(\n    \"7.0.0-beta.0\",\n    'function _objectDestructuringEmpty(t){if(null==t)throw new TypeError(\"Cannot destructure \"+t)}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _objectDestructuringEmpty: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_objectDestructuringEmpty\",\n      dependencies: {},\n    },\n  ),\n  // size: 619, gzip size: 295\n  objectSpread2: helper(\n    \"7.5.0\",\n    \"function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread2(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}\",\n    {\n      globals: [\"Object\"],\n      locals: {\n        ownKeys: [\n          \"body.0.id\",\n          \"body.1.body.body.0.body.body.1.expression.consequent.callee.object.callee\",\n          \"body.1.body.body.0.body.body.1.expression.alternate.alternate.callee.object.callee\",\n        ],\n        _objectSpread2: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_objectSpread2\",\n      dependencies: {\n        defineProperty: [\n          \"body.1.body.body.0.body.body.1.expression.consequent.arguments.0.body.body.0.expression.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 279, gzip size: 205\n  objectWithoutProperties: helper(\n    \"7.0.0-beta.0\",\n    \"function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(r=0;r<n.length;r++)o=n[r],-1===t.indexOf(o)&&{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}\",\n    {\n      globals: [\"Object\"],\n      locals: { _objectWithoutProperties: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_objectWithoutProperties\",\n      dependencies: {\n        objectWithoutPropertiesLoose: [\n          \"body.0.body.body.1.declarations.2.init.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 169, gzip size: 156\n  objectWithoutPropertiesLoose: helper(\n    \"7.0.0-beta.0\",\n    \"function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(-1!==e.indexOf(n))continue;t[n]=r[n]}return t}\",\n    {\n      globals: [],\n      locals: { _objectWithoutPropertiesLoose: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_objectWithoutPropertiesLoose\",\n      dependencies: {},\n    },\n  ),\n  // size: 225, gzip size: 180\n  possibleConstructorReturn: helper(\n    \"7.0.0-beta.0\",\n    'function _possibleConstructorReturn(t,e){if(e&&(\"object\"==typeof e||\"function\"==typeof e))return e;if(void 0!==e)throw new TypeError(\"Derived constructors may only return object or undefined\");return assertThisInitialized(t)}',\n    {\n      globals: [\"TypeError\"],\n      locals: { _possibleConstructorReturn: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_possibleConstructorReturn\",\n      dependencies: {\n        assertThisInitialized: [\"body.0.body.body.2.argument.callee\"],\n      },\n    },\n  ),\n  // size: 71, gzip size: 85\n  readOnlyError: helper(\n    \"7.0.0-beta.0\",\n    \"function _readOnlyError(r){throw new TypeError('\\\"'+r+'\\\" is read-only')}\",\n    {\n      globals: [\"TypeError\"],\n      locals: { _readOnlyError: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_readOnlyError\",\n      dependencies: {},\n    },\n  ),\n  // size: 7616, gzip size: 2652\n  regeneratorRuntime: helper(\n    \"7.18.0\",\n    'function _regeneratorRuntime(){\"use strict\";\\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i=\"function\"==typeof Symbol?Symbol:{},a=i.iterator||\"@@iterator\",c=i.asyncIterator||\"@@asyncIterator\",u=i.toStringTag||\"@@toStringTag\";function define(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{define({},\"\")}catch(t){define=function(t,e,r){return t[e]=r}}function wrap(t,e,r,n){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype),c=new Context(n||[]);return o(a,\"_invoke\",{value:makeInvokeMethod(t,r,c)}),a}function tryCatch(t,e,r){try{return{type:\"normal\",arg:t.call(e,r)}}catch(t){return{type:\"throw\",arg:t}}}e.wrap=wrap;var h=\"suspendedStart\",l=\"suspendedYield\",f=\"executing\",s=\"completed\",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};define(p,a,(function(){return this}));var d=Object.getPrototypeOf,v=d&&d(d(values([])));v&&v!==r&&n.call(v,a)&&(p=v);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){[\"next\",\"throw\",\"return\"].forEach((function(e){define(t,e,(function(t){return this._invoke(e,t)}))}))}function AsyncIterator(t,e){function invoke(r,o,i,a){var c=tryCatch(t[r],t,o);if(\"throw\"!==c.type){var u=c.arg,h=u.value;return h&&\"object\"==typeof h&&n.call(h,\"__await\")?e.resolve(h.__await).then((function(t){invoke(\"next\",t,i,a)}),(function(t){invoke(\"throw\",t,i,a)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return invoke(\"throw\",t,i,a)}))}a(c.arg)}var r;o(this,\"_invoke\",{value:function(t,n){function callInvokeWithMethodAndArg(){return new e((function(e,r){invoke(t,n,e,r)}))}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(e,r,n){var o=h;return function(i,a){if(o===f)throw Error(\"Generator is already running\");if(o===s){if(\"throw\"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=maybeInvokeDelegate(c,n);if(u){if(u===y)continue;return u}}if(\"next\"===n.method)n.sent=n._sent=n.arg;else if(\"throw\"===n.method){if(o===h)throw o=s,n.arg;n.dispatchException(n.arg)}else\"return\"===n.method&&n.abrupt(\"return\",n.arg);o=f;var p=tryCatch(e,r,n);if(\"normal\"===p.type){if(o=n.done?s:l,p.arg===y)continue;return{value:p.arg,done:n.done}}\"throw\"===p.type&&(o=s,n.method=\"throw\",n.arg=p.arg)}}}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,\"throw\"===n&&e.iterator.return&&(r.method=\"return\",r.arg=t,maybeInvokeDelegate(e,r),\"throw\"===r.method)||\"return\"!==n&&(r.method=\"throw\",r.arg=new TypeError(\"The iterator does not provide a \\'\"+n+\"\\' method\")),y;var i=tryCatch(o,e.iterator,r.arg);if(\"throw\"===i.type)return r.method=\"throw\",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,\"return\"!==r.method&&(r.method=\"next\",r.arg=t),r.delegate=null,y):a:(r.method=\"throw\",r.arg=new TypeError(\"iterator result is not an object\"),r.delegate=null,y)}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function resetTryEntry(t){var e=t.completion||{};e.type=\"normal\",delete e.arg,t.completion=e}function Context(t){this.tryEntries=[{tryLoc:\"root\"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e||\"\"===e){var r=e[a];if(r)return r.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o<e.length;)if(n.call(e,o))return next.value=e[o],next.done=!1,next;return next.value=t,next.done=!0,next};return i.next=i}}throw new TypeError(typeof e+\" is not iterable\")}return GeneratorFunction.prototype=GeneratorFunctionPrototype,o(g,\"constructor\",{value:GeneratorFunctionPrototype,configurable:!0}),o(GeneratorFunctionPrototype,\"constructor\",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,\"GeneratorFunction\"),e.isGeneratorFunction=function(t){var e=\"function\"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||\"GeneratorFunction\"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,\"GeneratorFunction\")),t.prototype=Object.create(g),t},e.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,c,(function(){return this})),e.AsyncIterator=AsyncIterator,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},defineIteratorMethods(g),define(g,u,\"Generator\"),define(g,a,(function(){return this})),define(g,\"toString\",(function(){return\"[object Generator]\"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in e)return next.value=t,next.done=!1,next}return next.done=!0,next}},e.values=values,Context.prototype={constructor:Context,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method=\"next\",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var r in this)\"t\"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if(\"throw\"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function handle(n,o){return a.type=\"throw\",a.arg=e,r.next=n,o&&(r.method=\"next\",r.arg=t),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return handle(\"end\");if(i.tryLoc<=this.prev){var c=n.call(i,\"catchLoc\"),u=n.call(i,\"finallyLoc\");if(c&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0)}else{if(!u)throw Error(\"try statement without catch or finally\");if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,\"finallyLoc\")&&this.prev<o.finallyLoc){var i=o;break}}i&&(\"break\"===t||\"continue\"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method=\"next\",this.next=i.finallyLoc,y):this.complete(a)},complete:function(t,e){if(\"throw\"===t.type)throw t.arg;return\"break\"===t.type||\"continue\"===t.type?this.next=t.arg:\"return\"===t.type?(this.rval=this.arg=t.arg,this.method=\"return\",this.next=\"end\"):\"normal\"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;resetTryEntry(r)}return o}}throw Error(\"illegal catch attempt\")},delegateYield:function(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},\"next\"===this.method&&(this.arg=t),y}},e}',\n    {\n      globals: [\"Object\", \"Symbol\", \"Error\", \"TypeError\", \"isNaN\", \"Promise\"],\n      locals: {\n        _regeneratorRuntime: [\n          \"body.0.id\",\n          \"body.0.body.body.0.expression.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.expression\"],\n      exportName: \"_regeneratorRuntime\",\n      dependencies: {},\n    },\n  ),\n  // size: 494, gzip size: 274\n  set: helper(\n    \"7.0.0-beta.0\",\n    'function set(e,r,t,o){return set=\"undefined\"!=typeof Reflect&&Reflect.set?Reflect.set:function(e,r,t,o){var f,i=superPropBase(e,r);if(i){if((f=Object.getOwnPropertyDescriptor(i,r)).set)return f.set.call(o,t),!0;if(!f.writable)return!1}if(f=Object.getOwnPropertyDescriptor(o,r)){if(!f.writable)return!1;f.value=t,Object.defineProperty(o,r,f)}else defineProperty(o,r,t);return!0},set(e,r,t,o)}function _set(e,r,t,o,f){if(!set(e,r,t,o||e)&&f)throw new TypeError(\"failed to set property\");return t}',\n    {\n      globals: [\"Reflect\", \"Object\", \"TypeError\"],\n      locals: {\n        set: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee\",\n          \"body.1.body.body.0.test.left.argument.callee\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n        _set: [\"body.1.id\"],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_set\",\n      dependencies: {\n        superPropBase: [\n          \"body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.1.init.callee\",\n        ],\n        defineProperty: [\n          \"body.0.body.body.0.argument.expressions.0.right.alternate.body.body.2.alternate.expression.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 178, gzip size: 166\n  setFunctionName: helper(\n    \"7.23.6\",\n    'function setFunctionName(e,t,n){\"symbol\"==typeof t&&(t=(t=t.description)?\"[\"+t+\"]\":\"\");try{Object.defineProperty(e,\"name\",{configurable:!0,value:n?n+\" \"+t:t})}catch(e){}return e}',\n    {\n      globals: [\"Object\"],\n      locals: { setFunctionName: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"setFunctionName\",\n      dependencies: {},\n    },\n  ),\n  // size: 163, gzip size: 102\n  setPrototypeOf: helper(\n    \"7.0.0-beta.0\",\n    \"function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}\",\n    {\n      globals: [\"Object\"],\n      locals: {\n        _setPrototypeOf: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.argument.expressions.0\"],\n      exportName: \"_setPrototypeOf\",\n      dependencies: {},\n    },\n  ),\n  // size: 103, gzip size: 107\n  skipFirstGeneratorNext: helper(\n    \"7.0.0-beta.0\",\n    \"function _skipFirstGeneratorNext(t){return function(){var r=t.apply(this,arguments);return r.next(),r}}\",\n    {\n      globals: [],\n      locals: { _skipFirstGeneratorNext: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_skipFirstGeneratorNext\",\n      dependencies: {},\n    },\n  ),\n  // size: 133, gzip size: 117\n  slicedToArray: helper(\n    \"7.0.0-beta.0\",\n    \"function _slicedToArray(r,e){return arrayWithHoles(r)||iterableToArrayLimit(r,e)||unsupportedIterableToArray(r,e)||nonIterableRest()}\",\n    {\n      globals: [],\n      locals: { _slicedToArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_slicedToArray\",\n      dependencies: {\n        arrayWithHoles: [\"body.0.body.body.0.argument.left.left.left.callee\"],\n        iterableToArrayLimit: [\n          \"body.0.body.body.0.argument.left.left.right.callee\",\n        ],\n        unsupportedIterableToArray: [\n          \"body.0.body.body.0.argument.left.right.callee\",\n        ],\n        nonIterableRest: [\"body.0.body.body.0.argument.right.callee\"],\n      },\n    },\n  ),\n  // size: 104, gzip size: 113\n  superPropBase: helper(\n    \"7.0.0-beta.0\",\n    \"function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=getPrototypeOf(t)););return t}\",\n    {\n      globals: [],\n      locals: { _superPropBase: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_superPropBase\",\n      dependencies: {\n        getPrototypeOf: [\"body.0.body.body.0.test.right.right.right.callee\"],\n      },\n    },\n  ),\n  // size: 149, gzip size: 134\n  superPropGet: helper(\n    \"7.25.0\",\n    'function _superPropGet(t,o,e,r){var p=get(getPrototypeOf(1&r?t.prototype:t),o,e);return 2&r&&\"function\"==typeof p?function(t){return p.apply(e,t)}:p}',\n    {\n      globals: [],\n      locals: { _superPropGet: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_superPropGet\",\n      dependencies: {\n        get: [\"body.0.body.body.0.declarations.0.init.callee\"],\n        getPrototypeOf: [\n          \"body.0.body.body.0.declarations.0.init.arguments.0.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 88, gzip size: 95\n  superPropSet: helper(\n    \"7.25.0\",\n    \"function _superPropSet(t,e,o,r,p,f){return set(getPrototypeOf(f?t.prototype:t),e,o,r,p)}\",\n    {\n      globals: [],\n      locals: { _superPropSet: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_superPropSet\",\n      dependencies: {\n        set: [\"body.0.body.body.0.argument.callee\"],\n        getPrototypeOf: [\"body.0.body.body.0.argument.arguments.0.callee\"],\n      },\n    },\n  ),\n  // size: 135, gzip size: 128\n  taggedTemplateLiteral: helper(\n    \"7.0.0-beta.0\",\n    \"function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}\",\n    {\n      globals: [\"Object\"],\n      locals: { _taggedTemplateLiteral: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_taggedTemplateLiteral\",\n      dependencies: {},\n    },\n  ),\n  // size: 77, gzip size: 94\n  taggedTemplateLiteralLoose: helper(\n    \"7.0.0-beta.0\",\n    \"function _taggedTemplateLiteralLoose(e,t){return t||(t=e.slice(0)),e.raw=t,e}\",\n    {\n      globals: [],\n      locals: { _taggedTemplateLiteralLoose: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_taggedTemplateLiteralLoose\",\n      dependencies: {},\n    },\n  ),\n  // size: 89, gzip size: 97\n  tdz: helper(\n    \"7.5.5\",\n    'function _tdzError(e){throw new ReferenceError(e+\" is not defined - temporal dead zone\")}',\n    {\n      globals: [\"ReferenceError\"],\n      locals: { _tdzError: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_tdzError\",\n      dependencies: {},\n    },\n  ),\n  // size: 53, gzip size: 73\n  temporalRef: helper(\n    \"7.0.0-beta.0\",\n    \"function _temporalRef(r,e){return r===undef?err(e):r}\",\n    {\n      globals: [],\n      locals: { _temporalRef: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_temporalRef\",\n      dependencies: {\n        temporalUndefined: [\"body.0.body.body.0.argument.test.right\"],\n        tdz: [\"body.0.body.body.0.argument.consequent.callee\"],\n      },\n    },\n  ),\n  // size: 31, gzip size: 51\n  temporalUndefined: helper(\"7.0.0-beta.0\", \"function _temporalUndefined(){}\", {\n    globals: [],\n    locals: { _temporalUndefined: [\"body.0.id\"] },\n    exportBindingAssignments: [],\n    exportName: \"_temporalUndefined\",\n    dependencies: {},\n  }),\n  // size: 116, gzip size: 102\n  toArray: helper(\n    \"7.0.0-beta.0\",\n    \"function _toArray(r){return arrayWithHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableRest()}\",\n    {\n      globals: [],\n      locals: { _toArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_toArray\",\n      dependencies: {\n        arrayWithHoles: [\"body.0.body.body.0.argument.left.left.left.callee\"],\n        iterableToArray: [\"body.0.body.body.0.argument.left.left.right.callee\"],\n        unsupportedIterableToArray: [\n          \"body.0.body.body.0.argument.left.right.callee\",\n        ],\n        nonIterableRest: [\"body.0.body.body.0.argument.right.callee\"],\n      },\n    },\n  ),\n  // size: 131, gzip size: 114\n  toConsumableArray: helper(\n    \"7.0.0-beta.0\",\n    \"function _toConsumableArray(r){return arrayWithoutHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableSpread()}\",\n    {\n      globals: [],\n      locals: { _toConsumableArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_toConsumableArray\",\n      dependencies: {\n        arrayWithoutHoles: [\n          \"body.0.body.body.0.argument.left.left.left.callee\",\n        ],\n        iterableToArray: [\"body.0.body.body.0.argument.left.left.right.callee\"],\n        unsupportedIterableToArray: [\n          \"body.0.body.body.0.argument.left.right.callee\",\n        ],\n        nonIterableSpread: [\"body.0.body.body.0.argument.right.callee\"],\n      },\n    },\n  ),\n  // size: 270, gzip size: 201\n  toPrimitive: helper(\n    \"7.1.5\",\n    'function toPrimitive(t,r){if(\"object\"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||\"default\");if(\"object\"!=typeof i)return i;throw new TypeError(\"@@toPrimitive must return a primitive value.\")}return(\"string\"===r?String:Number)(t)}',\n    {\n      globals: [\"Symbol\", \"TypeError\", \"String\", \"Number\"],\n      locals: { toPrimitive: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"toPrimitive\",\n      dependencies: {},\n    },\n  ),\n  // size: 88, gzip size: 102\n  toPropertyKey: helper(\n    \"7.1.5\",\n    'function toPropertyKey(t){var i=toPrimitive(t,\"string\");return\"symbol\"==typeof i?i:i+\"\"}',\n    {\n      globals: [],\n      locals: { toPropertyKey: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"toPropertyKey\",\n      dependencies: {\n        toPrimitive: [\"body.0.body.body.0.declarations.0.init.callee\"],\n      },\n    },\n  ),\n  // size: 129, gzip size: 133\n  toSetter: helper(\n    \"7.24.0\",\n    'function _toSetter(t,e,n){e||(e=[]);var r=e.length++;return Object.defineProperty({},\"_\",{set:function(o){e[r]=o,t.apply(n,e)}})}',\n    {\n      globals: [\"Object\"],\n      locals: { _toSetter: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_toSetter\",\n      dependencies: {},\n    },\n  ),\n  // size: 274, gzip size: 157\n  typeof: helper(\n    \"7.0.0-beta.0\",\n    'function _typeof(o){\"@babel/helpers - typeof\";return _typeof=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&\"function\"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?\"symbol\":typeof o},_typeof(o)}',\n    {\n      globals: [\"Symbol\"],\n      locals: {\n        _typeof: [\n          \"body.0.id\",\n          \"body.0.body.body.0.argument.expressions.1.callee\",\n          \"body.0.body.body.0.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.argument.expressions.0\"],\n      exportName: \"_typeof\",\n      dependencies: {},\n    },\n  ),\n  // size: 328, gzip size: 247\n  unsupportedIterableToArray: helper(\n    \"7.9.0\",\n    'function _unsupportedIterableToArray(r,a){if(r){if(\"string\"==typeof r)return arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return\"Object\"===t&&r.constructor&&(t=r.constructor.name),\"Map\"===t||\"Set\"===t?Array.from(r):\"Arguments\"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?arrayLikeToArray(r,a):void 0}}',\n    {\n      globals: [\"Array\"],\n      locals: { _unsupportedIterableToArray: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_unsupportedIterableToArray\",\n      dependencies: {\n        arrayLikeToArray: [\n          \"body.0.body.body.0.consequent.body.0.consequent.argument.callee\",\n          \"body.0.body.body.0.consequent.body.2.argument.expressions.1.alternate.consequent.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 1117, gzip size: 548\n  usingCtx: helper(\n    \"7.23.9\",\n    'function _usingCtx(){var r=\"function\"==typeof SuppressedError?SuppressedError:function(r,e){var n=Error();return n.name=\"SuppressedError\",n.error=r,n.suppressed=e,n},e={},n=[];function using(r,e){if(null!=e){if(Object(e)!==e)throw new TypeError(\"using declarations can only be used with objects, functions, null, or undefined.\");if(r)var o=e[Symbol.asyncDispose||Symbol.for(\"Symbol.asyncDispose\")];if(void 0===o&&(o=e[Symbol.dispose||Symbol.for(\"Symbol.dispose\")],r))var t=o;if(\"function\"!=typeof o)throw new TypeError(\"Object is not disposable.\");t&&(o=function(){try{t.call(e)}catch(r){return Promise.reject(r)}}),n.push({v:e,d:o,a:r})}else r&&n.push({d:e,a:r});return e}return{e:e,u:using.bind(null,!1),a:using.bind(null,!0),d:function(){var o,t=this.e,s=0;function next(){for(;o=n.pop();)try{if(!o.a&&1===s)return s=0,n.push(o),Promise.resolve().then(next);if(o.d){var r=o.d.call(o.v);if(o.a)return s|=2,Promise.resolve(r).then(next,err)}else s|=1}catch(r){return err(r)}if(1===s)return t!==e?Promise.reject(t):Promise.resolve();if(t!==e)throw t}function err(n){return t=t!==e?new r(n,t):n,next()}return next()}}}',\n    {\n      globals: [\n        \"SuppressedError\",\n        \"Error\",\n        \"Object\",\n        \"TypeError\",\n        \"Symbol\",\n        \"Promise\",\n      ],\n      locals: { _usingCtx: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_usingCtx\",\n      dependencies: {},\n    },\n  ),\n  // size: 1172, gzip size: 526\n  wrapAsyncGenerator: helper(\n    \"7.0.0-beta.0\",\n    'function _wrapAsyncGenerator(e){return function(){return new AsyncGenerator(e.apply(this,arguments))}}function AsyncGenerator(e){var r,t;function resume(r,t){try{var n=e[r](t),o=n.value,u=o instanceof OverloadYield;Promise.resolve(u?o.v:o).then((function(t){if(u){var i=\"return\"===r?\"return\":\"next\";if(!o.k||t.done)return resume(i,t);t=e[i](t).value}settle(n.done?\"return\":\"normal\",t)}),(function(e){resume(\"throw\",e)}))}catch(e){settle(\"throw\",e)}}function settle(e,n){switch(e){case\"return\":r.resolve({value:n,done:!0});break;case\"throw\":r.reject(n);break;default:r.resolve({value:n,done:!1})}(r=r.next)?resume(r.key,r.arg):t=null}this._invoke=function(e,n){return new Promise((function(o,u){var i={key:e,arg:n,resolve:o,reject:u,next:null};t?t=t.next=i:(r=t=i,resume(e,n))}))},\"function\"!=typeof e.return&&(this.return=void 0)}AsyncGenerator.prototype[\"function\"==typeof Symbol&&Symbol.asyncIterator||\"@@asyncIterator\"]=function(){return this},AsyncGenerator.prototype.next=function(e){return this._invoke(\"next\",e)},AsyncGenerator.prototype.throw=function(e){return this._invoke(\"throw\",e)},AsyncGenerator.prototype.return=function(e){return this._invoke(\"return\",e)};',\n    {\n      globals: [\"Promise\", \"Symbol\"],\n      locals: {\n        _wrapAsyncGenerator: [\"body.0.id\"],\n        AsyncGenerator: [\n          \"body.1.id\",\n          \"body.0.body.body.0.argument.body.body.0.argument.callee\",\n          \"body.2.expression.expressions.0.left.object.object\",\n          \"body.2.expression.expressions.1.left.object.object\",\n          \"body.2.expression.expressions.2.left.object.object\",\n          \"body.2.expression.expressions.3.left.object.object\",\n        ],\n      },\n      exportBindingAssignments: [],\n      exportName: \"_wrapAsyncGenerator\",\n      dependencies: {\n        OverloadYield: [\n          \"body.1.body.body.1.body.body.0.block.body.0.declarations.2.init.right\",\n        ],\n      },\n    },\n  ),\n  // size: 563, gzip size: 318\n  wrapNativeSuper: helper(\n    \"7.0.0-beta.0\",\n    'function _wrapNativeSuper(t){var r=\"function\"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(t){if(null===t||!isNativeFunction(t))return t;if(\"function\"!=typeof t)throw new TypeError(\"Super expression must either be null or a function\");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,Wrapper)}function Wrapper(){return construct(t,arguments,getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(t.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),setPrototypeOf(Wrapper,t)},_wrapNativeSuper(t)}',\n    {\n      globals: [\"Map\", \"TypeError\", \"Object\"],\n      locals: {\n        _wrapNativeSuper: [\n          \"body.0.id\",\n          \"body.0.body.body.1.argument.expressions.1.callee\",\n          \"body.0.body.body.1.argument.expressions.0.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.1.argument.expressions.0\"],\n      exportName: \"_wrapNativeSuper\",\n      dependencies: {\n        getPrototypeOf: [\n          \"body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.arguments.2.object.callee\",\n        ],\n        setPrototypeOf: [\n          \"body.0.body.body.1.argument.expressions.0.right.body.body.4.argument.expressions.1.callee\",\n        ],\n        isNativeFunction: [\n          \"body.0.body.body.1.argument.expressions.0.right.body.body.0.test.right.argument.callee\",\n        ],\n        construct: [\n          \"body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.callee\",\n        ],\n      },\n    },\n  ),\n  // size: 1213, gzip size: 560\n  wrapRegExp: helper(\n    \"7.19.0\",\n    'function _wrapRegExp(){_wrapRegExp=function(e,r){return new BabelRegExp(e,void 0,r)};var e=RegExp.prototype,r=new WeakMap;function BabelRegExp(e,t,p){var o=RegExp(e,t);return r.set(o,p||r.get(e)),setPrototypeOf(o,BabelRegExp.prototype)}function buildGroups(e,t){var p=r.get(t);return Object.keys(p).reduce((function(r,t){var o=p[t];if(\"number\"==typeof o)r[t]=e[o];else{for(var i=0;void 0===e[o[i]]&&i+1<o.length;)i++;r[t]=e[o[i]]}return r}),Object.create(null))}return inherits(BabelRegExp,RegExp),BabelRegExp.prototype.exec=function(r){var t=e.exec.call(this,r);if(t){t.groups=buildGroups(t,this);var p=t.indices;p&&(p.groups=buildGroups(p,this))}return t},BabelRegExp.prototype[Symbol.replace]=function(t,p){if(\"string\"==typeof p){var o=r.get(this);return e[Symbol.replace].call(this,t,p.replace(/\\\\$<([^>]+)(>|$)/g,(function(e,r,t){if(\"\"===t)return e;var p=o[r];return Array.isArray(p)?\"$\"+p.join(\"$\"):\"number\"==typeof p?\"$\"+p:\"\"})))}if(\"function\"==typeof p){var i=this;return e[Symbol.replace].call(this,t,(function(){var e=arguments;return\"object\"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(buildGroups(e,i)),p.apply(this,e)}))}return e[Symbol.replace].call(this,t,p)},_wrapRegExp.apply(this,arguments)}',\n    {\n      globals: [\"RegExp\", \"WeakMap\", \"Object\", \"Symbol\", \"Array\"],\n      locals: {\n        _wrapRegExp: [\n          \"body.0.id\",\n          \"body.0.body.body.4.argument.expressions.3.callee.object\",\n          \"body.0.body.body.0.expression.left\",\n        ],\n      },\n      exportBindingAssignments: [\"body.0.body.body.0.expression\"],\n      exportName: \"_wrapRegExp\",\n      dependencies: {\n        setPrototypeOf: [\n          \"body.0.body.body.2.body.body.1.argument.expressions.1.callee\",\n        ],\n        inherits: [\"body.0.body.body.4.argument.expressions.0.callee\"],\n      },\n    },\n  ),\n  // size: 73, gzip size: 86\n  writeOnlyError: helper(\n    \"7.12.13\",\n    \"function _writeOnlyError(r){throw new TypeError('\\\"'+r+'\\\" is write-only')}\",\n    {\n      globals: [\"TypeError\"],\n      locals: { _writeOnlyError: [\"body.0.id\"] },\n      exportBindingAssignments: [],\n      exportName: \"_writeOnlyError\",\n      dependencies: {},\n    },\n  ),\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(helpers, {\n    // size: 39, gzip size: 59\n    AwaitValue: helper(\n      \"7.0.0-beta.0\",\n      \"function _AwaitValue(t){this.wrapped=t}\",\n      {\n        globals: [],\n        locals: { _AwaitValue: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_AwaitValue\",\n        dependencies: {},\n      },\n    ),\n    // size: 5767, gzip size: 2181\n    applyDecs: helper(\n      \"7.17.8\",\n      'function old_createMetadataMethodsForProperty(e,t,a,r){return{getMetadata:function(o){old_assertNotFinished(r,\"getMetadata\"),old_assertMetadataKey(o);var i=e[o];if(void 0!==i)if(1===t){var n=i.public;if(void 0!==n)return n[a]}else if(2===t){var l=i.private;if(void 0!==l)return l.get(a)}else if(Object.hasOwnProperty.call(i,\"constructor\"))return i.constructor},setMetadata:function(o,i){old_assertNotFinished(r,\"setMetadata\"),old_assertMetadataKey(o);var n=e[o];if(void 0===n&&(n=e[o]={}),1===t){var l=n.public;void 0===l&&(l=n.public={}),l[a]=i}else if(2===t){var s=n.priv;void 0===s&&(s=n.private=new Map),s.set(a,i)}else n.constructor=i}}}function old_convertMetadataMapToFinal(e,t){var a=e[Symbol.metadata||Symbol.for(\"Symbol.metadata\")],r=Object.getOwnPropertySymbols(t);if(0!==r.length){for(var o=0;o<r.length;o++){var i=r[o],n=t[i],l=a?a[i]:null,s=n.public,c=l?l.public:null;s&&c&&Object.setPrototypeOf(s,c);var d=n.private;if(d){var u=Array.from(d.values()),f=l?l.private:null;f&&(u=u.concat(f)),n.private=u}l&&Object.setPrototypeOf(n,l)}a&&Object.setPrototypeOf(t,a),e[Symbol.metadata||Symbol.for(\"Symbol.metadata\")]=t}}function old_createAddInitializerMethod(e,t){return function(a){old_assertNotFinished(t,\"addInitializer\"),old_assertCallable(a,\"An initializer\"),e.push(a)}}function old_memberDec(e,t,a,r,o,i,n,l,s){var c;switch(i){case 1:c=\"accessor\";break;case 2:c=\"method\";break;case 3:c=\"getter\";break;case 4:c=\"setter\";break;default:c=\"field\"}var d,u,f={kind:c,name:l?\"#\"+t:toPropertyKey(t),isStatic:n,isPrivate:l},p={v:!1};if(0!==i&&(f.addInitializer=old_createAddInitializerMethod(o,p)),l){d=2,u=Symbol(t);var v={};0===i?(v.get=a.get,v.set=a.set):2===i?v.get=function(){return a.value}:(1!==i&&3!==i||(v.get=function(){return a.get.call(this)}),1!==i&&4!==i||(v.set=function(e){a.set.call(this,e)})),f.access=v}else d=1,u=t;try{return e(s,Object.assign(f,old_createMetadataMethodsForProperty(r,d,u,p)))}finally{p.v=!0}}function old_assertNotFinished(e,t){if(e.v)throw Error(\"attempted to call \"+t+\" after decoration was finished\")}function old_assertMetadataKey(e){if(\"symbol\"!=typeof e)throw new TypeError(\"Metadata keys must be symbols, received: \"+e)}function old_assertCallable(e,t){if(\"function\"!=typeof e)throw new TypeError(t+\" must be a function\")}function old_assertValidReturnValue(e,t){var a=typeof t;if(1===e){if(\"object\"!==a||null===t)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");void 0!==t.get&&old_assertCallable(t.get,\"accessor.get\"),void 0!==t.set&&old_assertCallable(t.set,\"accessor.set\"),void 0!==t.init&&old_assertCallable(t.init,\"accessor.init\"),void 0!==t.initializer&&old_assertCallable(t.initializer,\"accessor.initializer\")}else if(\"function\"!==a)throw new TypeError((0===e?\"field\":10===e?\"class\":\"method\")+\" decorators must return a function or void 0\")}function old_getInit(e){var t;return null==(t=e.init)&&(t=e.initializer)&&void 0!==console&&console.warn(\".initializer has been renamed to .init as of March 2022\"),t}function old_applyMemberDec(e,t,a,r,o,i,n,l,s){var c,d,u,f,p,v,y,h=a[0];if(n?(0===o||1===o?(c={get:a[3],set:a[4]},u=\"get\"):3===o?(c={get:a[3]},u=\"get\"):4===o?(c={set:a[3]},u=\"set\"):c={value:a[3]},0!==o&&(1===o&&setFunctionName(a[4],\"#\"+r,\"set\"),setFunctionName(a[3],\"#\"+r,u))):0!==o&&(c=Object.getOwnPropertyDescriptor(t,r)),1===o?f={get:c.get,set:c.set}:2===o?f=c.value:3===o?f=c.get:4===o&&(f=c.set),\"function\"==typeof h)void 0!==(p=old_memberDec(h,r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?d=p:1===o?(d=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p);else for(var m=h.length-1;m>=0;m--){var b;void 0!==(p=old_memberDec(h[m],r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?b=p:1===o?(b=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p,void 0!==b&&(void 0===d?d=b:\"function\"==typeof d?d=[d,b]:d.push(b)))}if(0===o||1===o){if(void 0===d)d=function(e,t){return t};else if(\"function\"!=typeof d){var g=d;d=function(e,t){for(var a=t,r=0;r<g.length;r++)a=g[r].call(e,a);return a}}else{var _=d;d=function(e,t){return _.call(e,t)}}e.push(d)}0!==o&&(1===o?(c.get=f.get,c.set=f.set):2===o?c.value=f:3===o?c.get=f:4===o&&(c.set=f),n?1===o?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===o?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,r,c))}function old_applyMemberDecs(e,t,a,r,o){for(var i,n,l=new Map,s=new Map,c=0;c<o.length;c++){var d=o[c];if(Array.isArray(d)){var u,f,p,v=d[1],y=d[2],h=d.length>3,m=v>=5;if(m?(u=t,f=r,0!=(v-=5)&&(p=n=n||[])):(u=t.prototype,f=a,0!==v&&(p=i=i||[])),0!==v&&!h){var b=m?s:l,g=b.get(y)||0;if(!0===g||3===g&&4!==v||4===g&&3!==v)throw Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"+y);!g&&v>2?b.set(y,v):b.set(y,!0)}old_applyMemberDec(e,u,d,y,v,m,h,f,p)}}old_pushInitializers(e,i),old_pushInitializers(e,n)}function old_pushInitializers(e,t){t&&e.push((function(e){for(var a=0;a<t.length;a++)t[a].call(e);return e}))}function old_applyClassDecs(e,t,a,r){if(r.length>0){for(var o=[],i=t,n=t.name,l=r.length-1;l>=0;l--){var s={v:!1};try{var c=Object.assign({kind:\"class\",name:n,addInitializer:old_createAddInitializerMethod(o,s)},old_createMetadataMethodsForProperty(a,0,n,s)),d=r[l](i,c)}finally{s.v=!0}void 0!==d&&(old_assertValidReturnValue(10,d),i=d)}e.push(i,(function(){for(var e=0;e<o.length;e++)o[e].call(i)}))}}function applyDecs(e,t,a){var r=[],o={},i={};return old_applyMemberDecs(r,e,i,o,t),old_convertMetadataMapToFinal(e.prototype,i),old_applyClassDecs(r,e,o,a),old_convertMetadataMapToFinal(e,o),r}',\n      {\n        globals: [\n          \"Object\",\n          \"Map\",\n          \"Symbol\",\n          \"Array\",\n          \"Error\",\n          \"TypeError\",\n          \"console\",\n        ],\n        locals: {\n          old_createMetadataMethodsForProperty: [\n            \"body.0.id\",\n            \"body.3.body.body.4.block.body.0.argument.arguments.1.arguments.1.callee\",\n            \"body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.1.callee\",\n          ],\n          old_convertMetadataMapToFinal: [\n            \"body.1.id\",\n            \"body.13.body.body.1.argument.expressions.1.callee\",\n            \"body.13.body.body.1.argument.expressions.3.callee\",\n          ],\n          old_createAddInitializerMethod: [\n            \"body.2.id\",\n            \"body.3.body.body.3.test.expressions.0.right.right.callee\",\n            \"body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.0.properties.2.value.callee\",\n          ],\n          old_memberDec: [\n            \"body.3.id\",\n            \"body.9.body.body.1.consequent.expression.left.right.right.callee\",\n            \"body.9.body.body.1.alternate.body.body.1.expression.left.right.right.callee\",\n          ],\n          old_assertNotFinished: [\n            \"body.4.id\",\n            \"body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.0.callee\",\n            \"body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.0.callee\",\n            \"body.2.body.body.0.argument.body.body.0.expression.expressions.0.callee\",\n          ],\n          old_assertMetadataKey: [\n            \"body.5.id\",\n            \"body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.1.callee\",\n            \"body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.1.callee\",\n          ],\n          old_assertCallable: [\n            \"body.6.id\",\n            \"body.2.body.body.0.argument.body.body.0.expression.expressions.1.callee\",\n            \"body.7.body.body.1.consequent.body.1.expression.expressions.0.right.callee\",\n            \"body.7.body.body.1.consequent.body.1.expression.expressions.1.right.callee\",\n            \"body.7.body.body.1.consequent.body.1.expression.expressions.2.right.callee\",\n            \"body.7.body.body.1.consequent.body.1.expression.expressions.3.right.callee\",\n          ],\n          old_assertValidReturnValue: [\n            \"body.7.id\",\n            \"body.9.body.body.1.consequent.expression.right.expressions.0.callee\",\n            \"body.9.body.body.1.alternate.body.body.1.expression.right.expressions.0.callee\",\n            \"body.12.body.body.0.consequent.body.0.body.body.2.expression.right.expressions.0.callee\",\n          ],\n          old_getInit: [\n            \"body.8.id\",\n            \"body.9.body.body.1.consequent.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee\",\n            \"body.9.body.body.1.alternate.body.body.1.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee\",\n          ],\n          old_applyMemberDec: [\n            \"body.9.id\",\n            \"body.10.body.body.0.body.body.1.consequent.body.2.expression.callee\",\n          ],\n          old_applyMemberDecs: [\n            \"body.10.id\",\n            \"body.13.body.body.1.argument.expressions.0.callee\",\n          ],\n          old_pushInitializers: [\n            \"body.11.id\",\n            \"body.10.body.body.1.expression.expressions.0.callee\",\n            \"body.10.body.body.1.expression.expressions.1.callee\",\n          ],\n          old_applyClassDecs: [\n            \"body.12.id\",\n            \"body.13.body.body.1.argument.expressions.2.callee\",\n          ],\n          applyDecs: [\"body.13.id\"],\n        },\n        exportBindingAssignments: [],\n        exportName: \"applyDecs\",\n        dependencies: {\n          setFunctionName: [\n            \"body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee\",\n            \"body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee\",\n          ],\n          toPropertyKey: [\n            \"body.3.body.body.2.declarations.2.init.properties.1.value.alternate.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 3845, gzip size: 1570\n    applyDecs2203: helper(\n      \"7.19.0\",\n      'function applyDecs2203Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error(\"attempted to call addInitializer after decoration was finished\")}(t),assertCallable(r,\"An initializer\"),e.push(r)}}function memberDec(e,t,r,a,n,i,s,o){var c;switch(n){case 1:c=\"accessor\";break;case 2:c=\"method\";break;case 3:c=\"getter\";break;case 4:c=\"setter\";break;default:c=\"field\"}var l,u,f={kind:c,name:s?\"#\"+t:t,static:i,private:s},p={v:!1};0!==n&&(f.addInitializer=createAddInitializerMethod(a,p)),0===n?s?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===n?l=function(){return r.value}:(1!==n&&3!==n||(l=function(){return r.get.call(this)}),1!==n&&4!==n||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(o,f)}finally{p.v=!0}}function assertCallable(e,t){if(\"function\"!=typeof e)throw new TypeError(t+\" must be a function\")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if(\"object\"!==r||null===t)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");void 0!==t.get&&assertCallable(t.get,\"accessor.get\"),void 0!==t.set&&assertCallable(t.set,\"accessor.set\"),void 0!==t.init&&assertCallable(t.init,\"accessor.init\")}else if(\"function\"!==r)throw new TypeError((0===e?\"field\":10===e?\"class\":\"method\")+\" decorators must return a function or void 0\")}function applyMemberDec(e,t,r,a,n,i,s,o){var c,l,u,f,p,d,h=r[0];if(s?c=0===n||1===n?{get:r[3],set:r[4]}:3===n?{get:r[3]}:4===n?{set:r[3]}:{value:r[3]}:0!==n&&(c=Object.getOwnPropertyDescriptor(t,a)),1===n?u={get:c.get,set:c.set}:2===n?u=c.value:3===n?u=c.get:4===n&&(u=c.set),\"function\"==typeof h)void 0!==(f=memberDec(h,a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?l=f:1===n?(l=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f);else for(var v=h.length-1;v>=0;v--){var g;void 0!==(f=memberDec(h[v],a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?g=f:1===n?(g=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f,void 0!==g&&(void 0===l?l=g:\"function\"==typeof l?l=[l,g]:l.push(g)))}if(0===n||1===n){if(void 0===l)l=function(e,t){return t};else if(\"function\"!=typeof l){var y=l;l=function(e,t){for(var r=t,a=0;a<y.length;a++)r=y[a].call(e,r);return r}}else{var m=l;l=function(e,t){return m.call(e,t)}}e.push(l)}0!==n&&(1===n?(c.get=u.get,c.set=u.set):2===n?c.value=u:3===n?c.get=u:4===n&&(c.set=u),s?1===n?(e.push((function(e,t){return u.get.call(e,t)})),e.push((function(e,t){return u.set.call(e,t)}))):2===n?e.push(u):e.push((function(e,t){return u.call(e,t)})):Object.defineProperty(t,a,c))}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){var a=[];return function(e,t,r){for(var a,n,i=new Map,s=new Map,o=0;o<r.length;o++){var c=r[o];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=t,0!=(f-=5)&&(u=n=n||[])):(l=t.prototype,0!==f&&(u=a=a||[])),0!==f&&!d){var v=h?s:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(e,l,c,p,f,h,d,u)}}pushInitializers(e,a),pushInitializers(e,n)}(a,e,t),function(e,t,r){if(r.length>0){for(var a=[],n=t,i=t.name,s=r.length-1;s>=0;s--){var o={v:!1};try{var c=r[s](n,{kind:\"class\",name:i,addInitializer:createAddInitializerMethod(a,o)})}finally{o.v=!0}void 0!==c&&(assertValidReturnValue(10,c),n=c)}e.push(n,(function(){for(var e=0;e<a.length;e++)a[e].call(n)}))}}(a,e,r),a}}var applyDecs2203Impl;function applyDecs2203(e,t,r){return(applyDecs2203Impl=applyDecs2203Impl||applyDecs2203Factory())(e,t,r)}',\n      {\n        globals: [\"Error\", \"TypeError\", \"Object\", \"Map\", \"Array\"],\n        locals: {\n          applyDecs2203Factory: [\n            \"body.0.id\",\n            \"body.2.body.body.0.argument.callee.right.right.callee\",\n          ],\n          applyDecs2203Impl: [\n            \"body.1.declarations.0.id\",\n            \"body.2.body.body.0.argument.callee.right.left\",\n            \"body.2.body.body.0.argument.callee.left\",\n          ],\n          applyDecs2203: [\"body.2.id\"],\n        },\n        exportBindingAssignments: [],\n        exportName: \"applyDecs2203\",\n        dependencies: {},\n      },\n    ),\n    // size: 3982, gzip size: 1621\n    applyDecs2203R: helper(\n      \"7.20.0\",\n      'function applyDecs2203RFactory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error(\"attempted to call addInitializer after decoration was finished\")}(t),assertCallable(r,\"An initializer\"),e.push(r)}}function memberDec(e,t,r,n,a,i,o,s){var c;switch(a){case 1:c=\"accessor\";break;case 2:c=\"method\";break;case 3:c=\"getter\";break;case 4:c=\"setter\";break;default:c=\"field\"}var l,u,f={kind:c,name:o?\"#\"+t:toPropertyKey(t),static:i,private:o},p={v:!1};0!==a&&(f.addInitializer=createAddInitializerMethod(n,p)),0===a?o?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===a?l=function(){return r.value}:(1!==a&&3!==a||(l=function(){return r.get.call(this)}),1!==a&&4!==a||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(s,f)}finally{p.v=!0}}function assertCallable(e,t){if(\"function\"!=typeof e)throw new TypeError(t+\" must be a function\")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if(\"object\"!==r||null===t)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");void 0!==t.get&&assertCallable(t.get,\"accessor.get\"),void 0!==t.set&&assertCallable(t.set,\"accessor.set\"),void 0!==t.init&&assertCallable(t.init,\"accessor.init\")}else if(\"function\"!==r)throw new TypeError((0===e?\"field\":10===e?\"class\":\"method\")+\" decorators must return a function or void 0\")}function applyMemberDec(e,t,r,n,a,i,o,s){var c,l,u,f,p,d,h,v=r[0];if(o?(0===a||1===a?(c={get:r[3],set:r[4]},u=\"get\"):3===a?(c={get:r[3]},u=\"get\"):4===a?(c={set:r[3]},u=\"set\"):c={value:r[3]},0!==a&&(1===a&&setFunctionName(r[4],\"#\"+n,\"set\"),setFunctionName(r[3],\"#\"+n,u))):0!==a&&(c=Object.getOwnPropertyDescriptor(t,n)),1===a?f={get:c.get,set:c.set}:2===a?f=c.value:3===a?f=c.get:4===a&&(f=c.set),\"function\"==typeof v)void 0!==(p=memberDec(v,n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?l=p:1===a?(l=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p);else for(var g=v.length-1;g>=0;g--){var y;void 0!==(p=memberDec(v[g],n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?y=p:1===a?(y=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p,void 0!==y&&(void 0===l?l=y:\"function\"==typeof l?l=[l,y]:l.push(y)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if(\"function\"!=typeof l){var m=l;l=function(e,t){for(var r=t,n=0;n<m.length;n++)r=m[n].call(e,r);return r}}else{var b=l;l=function(e,t){return b.call(e,t)}}e.push(l)}0!==a&&(1===a?(c.get=f.get,c.set=f.set):2===a?c.value=f:3===a?c.get=f:4===a&&(c.set=f),o?1===a?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===a?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,n,c))}function applyMemberDecs(e,t){for(var r,n,a=[],i=new Map,o=new Map,s=0;s<t.length;s++){var c=t[s];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=e,0!=(f-=5)&&(u=n=n||[])):(l=e.prototype,0!==f&&(u=r=r||[])),0!==f&&!d){var v=h?o:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(a,l,c,p,f,h,d,u)}}return pushInitializers(a,r),pushInitializers(a,n),a}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){return{e:applyMemberDecs(e,t),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var o={v:!1};try{var s=t[i](n,{kind:\"class\",name:a,addInitializer:createAddInitializerMethod(r,o)})}finally{o.v=!0}void 0!==s&&(assertValidReturnValue(10,s),n=s)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2203R(e,t,r){return(applyDecs2203R=applyDecs2203RFactory())(e,t,r)}',\n      {\n        globals: [\"Error\", \"TypeError\", \"Object\", \"Map\", \"Array\"],\n        locals: {\n          applyDecs2203RFactory: [\n            \"body.0.id\",\n            \"body.1.body.body.0.argument.callee.right.callee\",\n          ],\n          applyDecs2203R: [\n            \"body.1.id\",\n            \"body.1.body.body.0.argument.callee.left\",\n          ],\n        },\n        exportBindingAssignments: [\"body.1.body.body.0.argument.callee\"],\n        exportName: \"applyDecs2203R\",\n        dependencies: {\n          setFunctionName: [\n            \"body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee\",\n            \"body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee\",\n          ],\n          toPropertyKey: [\n            \"body.0.body.body.1.body.body.2.declarations.2.init.properties.1.value.alternate.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 4526, gzip size: 1807\n    applyDecs2301: helper(\n      \"7.21.0\",\n      'function applyDecs2301Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error(\"attempted to call addInitializer after decoration was finished\")}(t),assertCallable(r,\"An initializer\"),e.push(r)}}function assertInstanceIfPrivate(e,t){if(!e(t))throw new TypeError(\"Attempted to access private element on non-instance\")}function memberDec(e,t,r,n,a,i,s,o,c){var u;switch(a){case 1:u=\"accessor\";break;case 2:u=\"method\";break;case 3:u=\"getter\";break;case 4:u=\"setter\";break;default:u=\"field\"}var l,f,p={kind:u,name:s?\"#\"+t:toPropertyKey(t),static:i,private:s},d={v:!1};if(0!==a&&(p.addInitializer=createAddInitializerMethod(n,d)),s||0!==a&&2!==a)if(2===a)l=function(e){return assertInstanceIfPrivate(c,e),r.value};else{var h=0===a||1===a;(h||3===a)&&(l=s?function(e){return assertInstanceIfPrivate(c,e),r.get.call(e)}:function(e){return r.get.call(e)}),(h||4===a)&&(f=s?function(e,t){assertInstanceIfPrivate(c,e),r.set.call(e,t)}:function(e,t){r.set.call(e,t)})}else l=function(e){return e[t]},0===a&&(f=function(e,r){e[t]=r});var v=s?c.bind():function(e){return t in e};p.access=l&&f?{get:l,set:f,has:v}:l?{get:l,has:v}:{set:f,has:v};try{return e(o,p)}finally{d.v=!0}}function assertCallable(e,t){if(\"function\"!=typeof e)throw new TypeError(t+\" must be a function\")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if(\"object\"!==r||null===t)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");void 0!==t.get&&assertCallable(t.get,\"accessor.get\"),void 0!==t.set&&assertCallable(t.set,\"accessor.set\"),void 0!==t.init&&assertCallable(t.init,\"accessor.init\")}else if(\"function\"!==r)throw new TypeError((0===e?\"field\":10===e?\"class\":\"method\")+\" decorators must return a function or void 0\")}function curryThis2(e){return function(t){e(this,t)}}function applyMemberDec(e,t,r,n,a,i,s,o,c){var u,l,f,p,d,h,v,y,g=r[0];if(s?(0===a||1===a?(u={get:(d=r[3],function(){return d(this)}),set:curryThis2(r[4])},f=\"get\"):3===a?(u={get:r[3]},f=\"get\"):4===a?(u={set:r[3]},f=\"set\"):u={value:r[3]},0!==a&&(1===a&&setFunctionName(u.set,\"#\"+n,\"set\"),setFunctionName(u[f||\"value\"],\"#\"+n,f))):0!==a&&(u=Object.getOwnPropertyDescriptor(t,n)),1===a?p={get:u.get,set:u.set}:2===a?p=u.value:3===a?p=u.get:4===a&&(p=u.set),\"function\"==typeof g)void 0!==(h=memberDec(g,n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?l=h:1===a?(l=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h);else for(var m=g.length-1;m>=0;m--){var b;void 0!==(h=memberDec(g[m],n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?b=h:1===a?(b=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h,void 0!==b&&(void 0===l?l=b:\"function\"==typeof l?l=[l,b]:l.push(b)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if(\"function\"!=typeof l){var I=l;l=function(e,t){for(var r=t,n=0;n<I.length;n++)r=I[n].call(e,r);return r}}else{var w=l;l=function(e,t){return w.call(e,t)}}e.push(l)}0!==a&&(1===a?(u.get=p.get,u.set=p.set):2===a?u.value=p:3===a?u.get=p:4===a&&(u.set=p),s?1===a?(e.push((function(e,t){return p.get.call(e,t)})),e.push((function(e,t){return p.set.call(e,t)}))):2===a?e.push(p):e.push((function(e,t){return p.call(e,t)})):Object.defineProperty(t,n,u))}function applyMemberDecs(e,t,r){for(var n,a,i,s=[],o=new Map,c=new Map,u=0;u<t.length;u++){var l=t[u];if(Array.isArray(l)){var f,p,d=l[1],h=l[2],v=l.length>3,y=d>=5,g=r;if(y?(f=e,0!=(d-=5)&&(p=a=a||[]),v&&!i&&(i=function(t){return checkInRHS(t)===e}),g=i):(f=e.prototype,0!==d&&(p=n=n||[])),0!==d&&!v){var m=y?c:o,b=m.get(h)||0;if(!0===b||3===b&&4!==d||4===b&&3!==d)throw Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"+h);!b&&d>2?m.set(h,d):m.set(h,!0)}applyMemberDec(s,f,l,h,d,y,v,p,g)}}return pushInitializers(s,n),pushInitializers(s,a),s}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r,n){return{e:applyMemberDecs(e,t,n),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var s={v:!1};try{var o=t[i](n,{kind:\"class\",name:a,addInitializer:createAddInitializerMethod(r,s)})}finally{s.v=!0}void 0!==o&&(assertValidReturnValue(10,o),n=o)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2301(e,t,r,n){return(applyDecs2301=applyDecs2301Factory())(e,t,r,n)}',\n      {\n        globals: [\"Error\", \"TypeError\", \"Object\", \"Map\", \"Array\"],\n        locals: {\n          applyDecs2301Factory: [\n            \"body.0.id\",\n            \"body.1.body.body.0.argument.callee.right.callee\",\n          ],\n          applyDecs2301: [\n            \"body.1.id\",\n            \"body.1.body.body.0.argument.callee.left\",\n          ],\n        },\n        exportBindingAssignments: [\"body.1.body.body.0.argument.callee\"],\n        exportName: \"applyDecs2301\",\n        dependencies: {\n          checkInRHS: [\n            \"body.0.body.body.7.body.body.0.body.body.1.consequent.body.1.test.expressions.0.consequent.expressions.2.right.right.body.body.0.argument.left.callee\",\n          ],\n          setFunctionName: [\n            \"body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee\",\n            \"body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee\",\n          ],\n          toPropertyKey: [\n            \"body.0.body.body.2.body.body.2.declarations.2.init.properties.1.value.alternate.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 3109, gzip size: 1569\n    applyDecs2305: helper(\n      \"7.21.0\",\n      'function applyDecs2305(e,t,r,n,o,a){function i(e,t,r){return function(n,o){return r&&r(n),e[t].call(n,o)}}function c(e,t){for(var r=0;r<e.length;r++)e[r].call(t);return t}function s(e,t,r,n){if(\"function\"!=typeof e&&(n||void 0!==e))throw new TypeError(t+\" must \"+(r||\"be\")+\" a function\"+(n?\"\":\" or undefined\"));return e}function applyDec(e,t,r,n,o,a,c,u,l,f,p,d,h){function m(e){if(!h(e))throw new TypeError(\"Attempted to access private element on non-instance\")}var y,v=t[0],g=t[3],b=!u;if(!b){r||Array.isArray(v)||(v=[v]);var w={},S=[],A=3===o?\"get\":4===o||d?\"set\":\"value\";f?(p||d?w={get:setFunctionName((function(){return g(this)}),n,\"get\"),set:function(e){t[4](this,e)}}:w[A]=g,p||setFunctionName(w[A],n,2===o?\"\":A)):p||(w=Object.getOwnPropertyDescriptor(e,n))}for(var P=e,j=v.length-1;j>=0;j-=r?2:1){var D=v[j],E=r?v[j-1]:void 0,I={},O={kind:[\"field\",\"accessor\",\"method\",\"getter\",\"setter\",\"class\"][o],name:n,metadata:a,addInitializer:function(e,t){if(e.v)throw Error(\"attempted to call addInitializer after decoration was finished\");s(t,\"An initializer\",\"be\",!0),c.push(t)}.bind(null,I)};try{if(b)(y=s(D.call(E,P,O),\"class decorators\",\"return\"))&&(P=y);else{var k,F;O.static=l,O.private=f,f?2===o?k=function(e){return m(e),w.value}:(o<4&&(k=i(w,\"get\",m)),3!==o&&(F=i(w,\"set\",m))):(k=function(e){return e[n]},(o<2||4===o)&&(F=function(e,t){e[n]=t}));var N=O.access={has:f?h.bind():function(e){return n in e}};if(k&&(N.get=k),F&&(N.set=F),P=D.call(E,d?{get:w.get,set:w.set}:w[A],O),d){if(\"object\"==typeof P&&P)(y=s(P.get,\"accessor.get\"))&&(w.get=y),(y=s(P.set,\"accessor.set\"))&&(w.set=y),(y=s(P.init,\"accessor.init\"))&&S.push(y);else if(void 0!==P)throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\")}else s(P,(p?\"field\":\"method\")+\" decorators\",\"return\")&&(p?S.push(P):w[A]=P)}}finally{I.v=!0}}return(p||d)&&u.push((function(e,t){for(var r=S.length-1;r>=0;r--)t=S[r].call(e,t);return t})),p||b||(f?d?u.push(i(w,\"get\"),i(w,\"set\")):u.push(2===o?w[A]:i.call.bind(w[A])):Object.defineProperty(e,n,w)),P}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for(\"Symbol.metadata\"),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var l=a[Symbol.metadata||Symbol.for(\"Symbol.metadata\")];var f=Object.create(null==l?null:l),p=function(e,t,r,n){var o,a,i=[],s=function(t){return checkInRHS(t)===e},u=new Map;function l(e){e&&i.push(c.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var d=p[1],h=p[2],m=p.length>3,y=16&d,v=!!(8&d),g=0==(d&=7),b=h+\"/\"+v;if(!g&&!m){var w=u.get(b);if(!0===w||3===w&&4!==d||4===w&&3!==d)throw Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \"+h);u.set(b,!(d>2)||d)}applyDec(v?e:e.prototype,p,y,m?\"#\"+h:toPropertyKey(h),d,n,v?a=a||[]:o=o||[],i,v,m,g,1===d,v&&m?s:r)}}return l(o),l(a),i}(e,t,o,f);return r.length||u(e,f),{e:p,get c(){var t=[];return r.length&&[u(applyDec(e,[r],n,e.name,5,f,t),f),c.bind(null,t,e)]}}}',\n      {\n        globals: [\"TypeError\", \"Array\", \"Object\", \"Error\", \"Symbol\", \"Map\"],\n        locals: { applyDecs2305: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"applyDecs2305\",\n        dependencies: {\n          checkInRHS: [\n            \"body.0.body.body.6.declarations.1.init.callee.body.body.0.declarations.3.init.body.body.0.argument.left.callee\",\n          ],\n          setFunctionName: [\n            \"body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.0.consequent.right.properties.0.value.callee\",\n            \"body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.1.right.callee\",\n          ],\n          toPropertyKey: [\n            \"body.0.body.body.6.declarations.1.init.callee.body.body.2.body.body.1.consequent.body.2.expression.arguments.3.alternate.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 231, gzip size: 189\n    classApplyDescriptorDestructureSet: helper(\n      \"7.13.10\",\n      'function _classApplyDescriptorDestructureSet(e,t){if(t.set)return\"__destrObj\"in t||(t.__destrObj={set value(r){t.set.call(e,r)}}),t.__destrObj;if(!t.writable)throw new TypeError(\"attempted to set read only private field\");return t}',\n      {\n        globals: [\"TypeError\"],\n        locals: { _classApplyDescriptorDestructureSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classApplyDescriptorDestructureSet\",\n        dependencies: {},\n      },\n    ),\n    // size: 74, gzip size: 90\n    classApplyDescriptorGet: helper(\n      \"7.13.10\",\n      \"function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}\",\n      {\n        globals: [],\n        locals: { _classApplyDescriptorGet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classApplyDescriptorGet\",\n        dependencies: {},\n      },\n    ),\n    // size: 161, gzip size: 149\n    classApplyDescriptorSet: helper(\n      \"7.13.10\",\n      'function _classApplyDescriptorSet(e,t,l){if(t.set)t.set.call(e,l);else{if(!t.writable)throw new TypeError(\"attempted to set read only private field\");t.value=l}}',\n      {\n        globals: [\"TypeError\"],\n        locals: { _classApplyDescriptorSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classApplyDescriptorSet\",\n        dependencies: {},\n      },\n    ),\n    // size: 78, gzip size: 93\n    classCheckPrivateStaticAccess: helper(\n      \"7.13.10\",\n      \"function _classCheckPrivateStaticAccess(s,a,r){return assertClassBrand(a,s,r)}\",\n      {\n        globals: [],\n        locals: { _classCheckPrivateStaticAccess: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classCheckPrivateStaticAccess\",\n        dependencies: {\n          assertClassBrand: [\"body.0.body.body.0.argument.callee\"],\n        },\n      },\n    ),\n    // size: 154, gzip size: 145\n    classCheckPrivateStaticFieldDescriptor: helper(\n      \"7.13.10\",\n      'function _classCheckPrivateStaticFieldDescriptor(t,e){if(void 0===t)throw new TypeError(\"attempted to \"+e+\" private static field before its declaration\")}',\n      {\n        globals: [\"TypeError\"],\n        locals: { _classCheckPrivateStaticFieldDescriptor: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classCheckPrivateStaticFieldDescriptor\",\n        dependencies: {},\n      },\n    ),\n    // size: 77, gzip size: 91\n    classExtractFieldDescriptor: helper(\n      \"7.13.10\",\n      \"function _classExtractFieldDescriptor(e,t){return classPrivateFieldGet2(t,e)}\",\n      {\n        globals: [],\n        locals: { _classExtractFieldDescriptor: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classExtractFieldDescriptor\",\n        dependencies: {\n          classPrivateFieldGet2: [\"body.0.body.body.0.argument.callee\"],\n        },\n      },\n    ),\n    // size: 127, gzip size: 111\n    classPrivateFieldDestructureSet: helper(\n      \"7.4.4\",\n      \"function _classPrivateFieldDestructureSet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorDestructureSet(e,r)}\",\n      {\n        globals: [],\n        locals: { _classPrivateFieldDestructureSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classPrivateFieldDestructureSet\",\n        dependencies: {\n          classApplyDescriptorDestructureSet: [\n            \"body.0.body.body.1.argument.callee\",\n          ],\n          classPrivateFieldGet2: [\n            \"body.0.body.body.0.declarations.0.init.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 105, gzip size: 100\n    classPrivateFieldGet: helper(\n      \"7.0.0-beta.0\",\n      \"function _classPrivateFieldGet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorGet(e,r)}\",\n      {\n        globals: [],\n        locals: { _classPrivateFieldGet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classPrivateFieldGet\",\n        dependencies: {\n          classApplyDescriptorGet: [\"body.0.body.body.1.argument.callee\"],\n          classPrivateFieldGet2: [\n            \"body.0.body.body.0.declarations.0.init.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 111, gzip size: 109\n    classPrivateFieldSet: helper(\n      \"7.0.0-beta.0\",\n      \"function _classPrivateFieldSet(e,t,r){var s=classPrivateFieldGet2(t,e);return classApplyDescriptorSet(e,s,r),r}\",\n      {\n        globals: [],\n        locals: { _classPrivateFieldSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classPrivateFieldSet\",\n        dependencies: {\n          classApplyDescriptorSet: [\n            \"body.0.body.body.1.argument.expressions.0.callee\",\n          ],\n          classPrivateFieldGet2: [\n            \"body.0.body.body.0.declarations.0.init.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 70, gzip size: 88\n    classPrivateMethodGet: helper(\n      \"7.1.6\",\n      \"function _classPrivateMethodGet(s,a,r){return assertClassBrand(a,s),r}\",\n      {\n        globals: [],\n        locals: { _classPrivateMethodGet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classPrivateMethodGet\",\n        dependencies: {\n          assertClassBrand: [\n            \"body.0.body.body.0.argument.expressions.0.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 94, gzip size: 102\n    classPrivateMethodSet: helper(\n      \"7.1.6\",\n      'function _classPrivateMethodSet(){throw new TypeError(\"attempted to reassign private method\")}',\n      {\n        globals: [\"TypeError\"],\n        locals: { _classPrivateMethodSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classPrivateMethodSet\",\n        dependencies: {},\n      },\n    ),\n    // size: 172, gzip size: 135\n    classStaticPrivateFieldDestructureSet: helper(\n      \"7.13.10\",\n      'function _classStaticPrivateFieldDestructureSet(t,r,s){return assertClassBrand(r,t),classCheckPrivateStaticFieldDescriptor(s,\"set\"),classApplyDescriptorDestructureSet(t,s)}',\n      {\n        globals: [],\n        locals: { _classStaticPrivateFieldDestructureSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classStaticPrivateFieldDestructureSet\",\n        dependencies: {\n          classApplyDescriptorDestructureSet: [\n            \"body.0.body.body.0.argument.expressions.2.callee\",\n          ],\n          assertClassBrand: [\n            \"body.0.body.body.0.argument.expressions.0.callee\",\n          ],\n          classCheckPrivateStaticFieldDescriptor: [\n            \"body.0.body.body.0.argument.expressions.1.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 154, gzip size: 133\n    classStaticPrivateFieldSpecGet: helper(\n      \"7.0.2\",\n      'function _classStaticPrivateFieldSpecGet(t,s,r){return assertClassBrand(s,t),classCheckPrivateStaticFieldDescriptor(r,\"get\"),classApplyDescriptorGet(t,r)}',\n      {\n        globals: [],\n        locals: { _classStaticPrivateFieldSpecGet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classStaticPrivateFieldSpecGet\",\n        dependencies: {\n          classApplyDescriptorGet: [\n            \"body.0.body.body.0.argument.expressions.2.callee\",\n          ],\n          assertClassBrand: [\n            \"body.0.body.body.0.argument.expressions.0.callee\",\n          ],\n          classCheckPrivateStaticFieldDescriptor: [\n            \"body.0.body.body.0.argument.expressions.1.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 160, gzip size: 134\n    classStaticPrivateFieldSpecSet: helper(\n      \"7.0.2\",\n      'function _classStaticPrivateFieldSpecSet(s,t,r,e){return assertClassBrand(t,s),classCheckPrivateStaticFieldDescriptor(r,\"set\"),classApplyDescriptorSet(s,r,e),e}',\n      {\n        globals: [],\n        locals: { _classStaticPrivateFieldSpecSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classStaticPrivateFieldSpecSet\",\n        dependencies: {\n          classApplyDescriptorSet: [\n            \"body.0.body.body.0.argument.expressions.2.callee\",\n          ],\n          assertClassBrand: [\n            \"body.0.body.body.0.argument.expressions.0.callee\",\n          ],\n          classCheckPrivateStaticFieldDescriptor: [\n            \"body.0.body.body.0.argument.expressions.1.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 111, gzip size: 114\n    classStaticPrivateMethodSet: helper(\n      \"7.3.2\",\n      'function _classStaticPrivateMethodSet(){throw new TypeError(\"attempted to set read only static private field\")}',\n      {\n        globals: [\"TypeError\"],\n        locals: { _classStaticPrivateMethodSet: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_classStaticPrivateMethodSet\",\n        dependencies: {},\n      },\n    ),\n    // size: 368, gzip size: 204\n    defineEnumerableProperties: helper(\n      \"7.0.0-beta.0\",\n      'function _defineEnumerableProperties(e,r){for(var t in r){var n=r[t];n.configurable=n.enumerable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,t,n)}if(Object.getOwnPropertySymbols)for(var a=Object.getOwnPropertySymbols(r),b=0;b<a.length;b++){var i=a[b];(n=r[i]).configurable=n.enumerable=!0,\"value\"in n&&(n.writable=!0),Object.defineProperty(e,i,n)}return e}',\n      {\n        globals: [\"Object\"],\n        locals: { _defineEnumerableProperties: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_defineEnumerableProperties\",\n        dependencies: {},\n      },\n    ),\n    // size: 653, gzip size: 319\n    dispose: helper(\n      \"7.22.0\",\n      'function dispose_SuppressedError(r,e){return\"undefined\"!=typeof SuppressedError?dispose_SuppressedError=SuppressedError:(dispose_SuppressedError=function(r,e){this.suppressed=e,this.error=r,this.stack=Error().stack},dispose_SuppressedError.prototype=Object.create(Error.prototype,{constructor:{value:dispose_SuppressedError,writable:!0,configurable:!0}})),new dispose_SuppressedError(r,e)}function _dispose(r,e,s){function next(){for(;r.length>0;)try{var o=r.pop(),p=o.d.call(o.v);if(o.a)return Promise.resolve(p).then(next,err)}catch(r){return err(r)}if(s)throw e}function err(r){return e=s?new dispose_SuppressedError(e,r):r,s=!0,next()}return next()}',\n      {\n        globals: [\"SuppressedError\", \"Error\", \"Object\", \"Promise\"],\n        locals: {\n          dispose_SuppressedError: [\n            \"body.0.id\",\n            \"body.0.body.body.0.argument.expressions.0.alternate.expressions.1.left.object\",\n            \"body.0.body.body.0.argument.expressions.0.alternate.expressions.1.right.arguments.1.properties.0.value.properties.0.value\",\n            \"body.0.body.body.0.argument.expressions.1.callee\",\n            \"body.1.body.body.1.body.body.0.argument.expressions.0.right.consequent.callee\",\n            \"body.0.body.body.0.argument.expressions.0.consequent.left\",\n            \"body.0.body.body.0.argument.expressions.0.alternate.expressions.0.left\",\n          ],\n          _dispose: [\"body.1.id\"],\n        },\n        exportBindingAssignments: [],\n        exportName: \"_dispose\",\n        dependencies: {},\n      },\n    ),\n    // size: 363, gzip size: 237\n    objectSpread: helper(\n      \"7.0.0-beta.0\",\n      'function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?Object(arguments[r]):{},o=Object.keys(t);\"function\"==typeof Object.getOwnPropertySymbols&&o.push.apply(o,Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.forEach((function(r){defineProperty(e,r,t[r])}))}return e}',\n      {\n        globals: [\"Object\"],\n        locals: { _objectSpread: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_objectSpread\",\n        dependencies: {\n          defineProperty: [\n            \"body.0.body.body.0.body.body.1.expression.expressions.1.arguments.0.body.body.0.expression.callee\",\n          ],\n        },\n      },\n    ),\n    // size: 417, gzip size: 252\n    using: helper(\n      \"7.22.0\",\n      'function _using(o,n,e){if(null==n)return n;if(Object(n)!==n)throw new TypeError(\"using declarations can only be used with objects, functions, null, or undefined.\");if(e)var r=n[Symbol.asyncDispose||Symbol.for(\"Symbol.asyncDispose\")];if(null==r&&(r=n[Symbol.dispose||Symbol.for(\"Symbol.dispose\")]),\"function\"!=typeof r)throw new TypeError(\"Property [Symbol.dispose] is not a function.\");return o.push({v:n,d:r,a:e}),n}',\n      {\n        globals: [\"Object\", \"TypeError\", \"Symbol\"],\n        locals: { _using: [\"body.0.id\"] },\n        exportBindingAssignments: [],\n        exportName: \"_using\",\n        dependencies: {},\n      },\n    ),\n  });\n}\n","import { cloneNode, identifier } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport helpers from \"./helpers-generated.ts\";\nimport type { HelperMetadata } from \"./helpers-generated.ts\";\n\ntype GetDependency = (name: string) => t.Expression;\n\nfunction deep(obj: any, path: string, value?: unknown) {\n  try {\n    const parts = path.split(\".\");\n    let last = parts.shift();\n    while (parts.length > 0) {\n      obj = obj[last];\n      last = parts.shift();\n    }\n    if (arguments.length > 2) {\n      obj[last] = value;\n    } else {\n      return obj[last];\n    }\n  } catch (e) {\n    e.message += ` (when accessing ${path})`;\n    throw e;\n  }\n}\n\ntype AdjustAst = (\n  ast: t.Program,\n  exportName: string,\n  mapExportBindingAssignments: (\n    map: (node: t.Expression) => t.Expression,\n  ) => void,\n) => void;\n\n/**\n * Given a helper AST and information about how it will be used, update the AST to match the usage.\n */\nfunction permuteHelperAST(\n  ast: t.Program,\n  metadata: HelperMetadata,\n  bindingName: string | undefined,\n  localBindings: string[] | undefined,\n  getDependency: GetDependency | undefined,\n  adjustAst: AdjustAst | undefined,\n) {\n  const { locals, dependencies, exportBindingAssignments, exportName } =\n    metadata;\n\n  const bindings = new Set(localBindings || []);\n  if (bindingName) bindings.add(bindingName);\n  for (const [name, paths] of Object.entries(locals)) {\n    let newName = name;\n    if (bindingName && name === exportName) {\n      newName = bindingName;\n    } else {\n      while (bindings.has(newName)) newName = \"_\" + newName;\n    }\n\n    if (newName !== name) {\n      for (const path of paths) {\n        deep(ast, path, identifier(newName));\n      }\n    }\n  }\n\n  for (const [name, paths] of Object.entries(dependencies)) {\n    const ref =\n      (typeof getDependency === \"function\" && getDependency(name)) ||\n      identifier(name);\n    for (const path of paths) {\n      deep(ast, path, cloneNode(ref));\n    }\n  }\n\n  adjustAst?.(ast, exportName, map => {\n    exportBindingAssignments.forEach(p => deep(ast, p, map(deep(ast, p))));\n  });\n}\n\ninterface HelperData {\n  build: (\n    getDependency: GetDependency | undefined,\n    bindingName: string | undefined,\n    localBindings: string[] | undefined,\n    adjustAst: AdjustAst | undefined,\n  ) => {\n    nodes: t.Program[\"body\"];\n    globals: string[];\n  };\n  minVersion: string;\n  getDependencies: () => string[];\n}\n\nconst helperData: Record<string, HelperData> = Object.create(null);\nfunction loadHelper(name: string) {\n  if (!helperData[name]) {\n    const helper = helpers[name];\n    if (!helper) {\n      throw Object.assign(new ReferenceError(`Unknown helper ${name}`), {\n        code: \"BABEL_HELPER_UNKNOWN\",\n        helper: name,\n      });\n    }\n\n    helperData[name] = {\n      minVersion: helper.minVersion,\n      build(getDependency, bindingName, localBindings, adjustAst) {\n        const ast = helper.ast();\n        permuteHelperAST(\n          ast,\n          helper.metadata,\n          bindingName,\n          localBindings,\n          getDependency,\n          adjustAst,\n        );\n\n        return {\n          nodes: ast.body,\n          globals: helper.metadata.globals,\n        };\n      },\n      getDependencies() {\n        return Object.keys(helper.metadata.dependencies);\n      },\n    };\n  }\n\n  return helperData[name];\n}\n\nexport function get(\n  name: string,\n  getDependency?: GetDependency,\n  bindingName?: string,\n  localBindings?: string[],\n  adjustAst?: AdjustAst,\n) {\n  if (!process.env.BABEL_8_BREAKING) {\n    // In older versions, bindingName was a t.Identifier | t.MemberExpression\n    if (typeof bindingName === \"object\") {\n      const id = bindingName as t.Identifier | t.MemberExpression | null;\n      if (id?.type === \"Identifier\") {\n        bindingName = id.name;\n      } else {\n        bindingName = undefined;\n      }\n    }\n  }\n  return loadHelper(name).build(\n    getDependency,\n    bindingName,\n    localBindings,\n    adjustAst,\n  );\n}\n\nexport function minVersion(name: string) {\n  return loadHelper(name).minVersion;\n}\n\nexport function getDependencies(name: string): ReadonlyArray<string> {\n  return loadHelper(name).getDependencies();\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.ensure = (name: string) => {\n    loadHelper(name);\n  };\n}\n\nexport const list = Object.keys(helpers).map(name => name.replace(/^_/, \"\"));\n\nexport default get;\n","import type * as t from \"@babel/types\";\n\nexport interface VirtualTypeAliases {\n  BindingIdentifier: t.Identifier;\n  BlockScoped: t.Node;\n  ExistentialTypeParam: t.ExistsTypeAnnotation;\n  Expression: t.Expression;\n  Flow: t.Flow | t.ImportDeclaration | t.ExportDeclaration | t.ImportSpecifier;\n  ForAwaitStatement: t.ForOfStatement;\n  Generated: t.Node;\n  NumericLiteralTypeAnnotation: t.NumberLiteralTypeAnnotation;\n  Pure: t.Node;\n  Referenced: t.Node;\n  ReferencedIdentifier: t.Identifier | t.JSXIdentifier;\n  ReferencedMemberExpression: t.MemberExpression;\n  RestProperty: t.RestElement;\n  Scope: t.Scopable | t.Pattern;\n  SpreadProperty: t.RestElement;\n  Statement: t.Statement;\n  User: t.Node;\n  Var: t.VariableDeclaration;\n}\n\ntype VirtualTypeMapping = readonly (t.Node[\"type\"] | keyof t.Aliases)[] | null;\n\nexport const ReferencedIdentifier: VirtualTypeMapping = [\n  \"Identifier\",\n  \"JSXIdentifier\",\n] as const;\n\nexport const ReferencedMemberExpression: VirtualTypeMapping = [\n  \"MemberExpression\",\n] as const;\n\nexport const BindingIdentifier: VirtualTypeMapping = [\"Identifier\"] as const;\n\nexport const Statement: VirtualTypeMapping = [\"Statement\"] as const;\n\nexport const Expression: VirtualTypeMapping = [\"Expression\"] as const;\n\nexport const Scope: VirtualTypeMapping = [\"Scopable\", \"Pattern\"] as const;\n\nexport const Referenced: VirtualTypeMapping = null;\n\nexport const BlockScoped: VirtualTypeMapping = null;\n\nexport const Var: VirtualTypeMapping = [\"VariableDeclaration\"];\n\nexport const User: VirtualTypeMapping = null;\n\nexport const Generated: VirtualTypeMapping = null;\n\nexport const Pure: VirtualTypeMapping = null;\n\nexport const Flow: VirtualTypeMapping = [\n  \"Flow\",\n  \"ImportDeclaration\",\n  \"ExportDeclaration\",\n  \"ImportSpecifier\",\n] as const;\n\n// TODO: 7.0 Backwards Compat\nexport const RestProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const SpreadProperty: VirtualTypeMapping = [\"RestElement\"] as const;\n\nexport const ExistentialTypeParam: VirtualTypeMapping = [\n  \"ExistsTypeAnnotation\",\n] as const;\n\nexport const NumericLiteralTypeAnnotation: VirtualTypeMapping = [\n  \"NumberLiteralTypeAnnotation\",\n] as const;\n\nexport const ForAwaitStatement: VirtualTypeMapping = [\n  \"ForOfStatement\",\n] as const;\n","import type NodePath from \"../index.ts\";\nimport {\n  isBinding,\n  isBlockScoped as nodeIsBlockScoped,\n  isExportDeclaration,\n  isExpression as nodeIsExpression,\n  isFlow as nodeIsFlow,\n  isForStatement,\n  isForXStatement,\n  isIdentifier,\n  isImportDeclaration,\n  isImportSpecifier,\n  isJSXIdentifier,\n  isJSXMemberExpression,\n  isMemberExpression,\n  isRestElement as nodeIsRestElement,\n  isReferenced as nodeIsReferenced,\n  isScope as nodeIsScope,\n  isStatement as nodeIsStatement,\n  isVar as nodeIsVar,\n  isVariableDeclaration,\n  react,\n  isForOfStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nconst { isCompatTag } = react;\nimport type { VirtualTypeAliases } from \"./virtual-types.ts\";\n\ntype Opts<Obj> = Partial<{\n  [Prop in keyof Obj]: Obj[Prop] extends t.Node\n    ? t.Node\n    : Obj[Prop] extends t.Node[]\n      ? t.Node[]\n      : Obj[Prop];\n}>;\n\nexport interface VirtualTypeNodePathValidators {\n  isBindingIdentifier(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"BindingIdentifier\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"BindingIdentifier\"]>;\n  isBlockScoped(opts?: Opts<VirtualTypeAliases[\"BlockScoped\"]>): boolean;\n  /**\n   * @deprecated\n   */\n  isExistentialTypeParam(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"ExistentialTypeParam\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"ExistentialTypeParam\"]>;\n  isExpression(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"Expression\"]>,\n  ): this is NodePath<t.Expression>;\n  isFlow(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"Flow\"]>,\n  ): this is NodePath<t.Flow>;\n  isForAwaitStatement(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"ForAwaitStatement\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"ForAwaitStatement\"]>;\n  isGenerated(opts?: VirtualTypeAliases[\"Generated\"]): boolean;\n  /**\n   * @deprecated\n   */\n  isNumericLiteralTypeAnnotation(\n    opts?: VirtualTypeAliases[\"NumericLiteralTypeAnnotation\"],\n  ): void;\n  isPure(opts?: VirtualTypeAliases[\"Pure\"]): boolean;\n  isReferenced(opts?: VirtualTypeAliases[\"Referenced\"]): boolean;\n  isReferencedIdentifier(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"ReferencedIdentifier\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"ReferencedIdentifier\"]>;\n  isReferencedMemberExpression(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"ReferencedMemberExpression\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"ReferencedMemberExpression\"]>;\n  isRestProperty(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"RestProperty\"]>,\n  ): this is NodePath<t.RestProperty>;\n  isScope(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"Scope\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"Scope\"]>;\n  isSpreadProperty(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"SpreadProperty\"]>,\n  ): this is NodePath<t.SpreadProperty>;\n  isStatement(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"Statement\"]>,\n  ): this is NodePath<t.Statement>;\n  isUser(opts?: VirtualTypeAliases[\"User\"]): boolean;\n  isVar(\n    this: NodePath,\n    opts?: Opts<VirtualTypeAliases[\"Var\"]>,\n  ): this is NodePath<VirtualTypeAliases[\"Var\"]>;\n}\n\nexport function isReferencedIdentifier(this: NodePath, opts?: any): boolean {\n  const { node, parent } = this;\n  if (!isIdentifier(node, opts) && !isJSXMemberExpression(parent, opts)) {\n    if (isJSXIdentifier(node, opts)) {\n      if (isCompatTag(node.name)) return false;\n    } else {\n      // not a JSXIdentifier or an Identifier\n      return false;\n    }\n  }\n\n  // check if node is referenced\n  return nodeIsReferenced(node, parent, this.parentPath.parent);\n}\n\nexport function isReferencedMemberExpression(this: NodePath): boolean {\n  const { node, parent } = this;\n  return isMemberExpression(node) && nodeIsReferenced(node, parent);\n}\n\nexport function isBindingIdentifier(this: NodePath): boolean {\n  const { node, parent } = this;\n  const grandparent = this.parentPath.parent;\n  return isIdentifier(node) && isBinding(node, parent, grandparent);\n}\n\nexport function isStatement(this: NodePath): boolean {\n  const { node, parent } = this;\n  if (nodeIsStatement(node)) {\n    if (isVariableDeclaration(node)) {\n      if (isForXStatement(parent, { left: node })) return false;\n      if (isForStatement(parent, { init: node })) return false;\n    }\n\n    return true;\n  } else {\n    return false;\n  }\n}\n\nexport function isExpression(this: NodePath): boolean {\n  if (this.isIdentifier()) {\n    return this.isReferencedIdentifier();\n  } else {\n    return nodeIsExpression(this.node);\n  }\n}\n\nexport function isScope(this: NodePath): boolean {\n  return nodeIsScope(this.node, this.parent);\n}\n\nexport function isReferenced(this: NodePath): boolean {\n  return nodeIsReferenced(this.node, this.parent);\n}\n\nexport function isBlockScoped(this: NodePath): boolean {\n  return nodeIsBlockScoped(this.node);\n}\n\nexport function isVar(this: NodePath): boolean {\n  return nodeIsVar(this.node);\n}\n\nexport function isUser(this: NodePath): boolean {\n  return this.node && !!this.node.loc;\n}\n\nexport function isGenerated(this: NodePath): boolean {\n  return !this.isUser();\n}\n\nexport function isPure(this: NodePath, constantsOnly?: boolean): boolean {\n  return this.scope.isPure(this.node, constantsOnly);\n}\n\nexport function isFlow(this: NodePath): boolean {\n  const { node } = this;\n  if (nodeIsFlow(node)) {\n    return true;\n  } else if (isImportDeclaration(node)) {\n    return node.importKind === \"type\" || node.importKind === \"typeof\";\n  } else if (isExportDeclaration(node)) {\n    return node.exportKind === \"type\";\n  } else if (isImportSpecifier(node)) {\n    return node.importKind === \"type\" || node.importKind === \"typeof\";\n  } else {\n    return false;\n  }\n}\n\n// TODO: 7.0 Backwards Compat\nexport function isRestProperty(this: NodePath): boolean {\n  return nodeIsRestElement(this.node) && this.parentPath?.isObjectPattern();\n}\n\nexport function isSpreadProperty(this: NodePath): boolean {\n  return nodeIsRestElement(this.node) && this.parentPath?.isObjectExpression();\n}\n\nexport function isForAwaitStatement(this: NodePath): boolean {\n  return isForOfStatement(this.node, { await: true });\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.isExistentialTypeParam = function isExistentialTypeParam(\n    this: NodePath,\n  ): void {\n    throw new Error(\n      \"`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.\",\n    );\n  };\n\n  // eslint-disable-next-line no-restricted-globals\n  exports.isNumericLiteralTypeAnnotation =\n    function isNumericLiteralTypeAnnotation(this: NodePath): void {\n      throw new Error(\n        \"`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.\",\n      );\n    };\n}\n","import * as virtualTypes from \"./path/lib/virtual-types.ts\";\nimport * as virtualTypesValidators from \"./path/lib/virtual-types-validator.ts\";\nimport type { Node } from \"@babel/types\";\nimport {\n  DEPRECATED_KEYS,\n  DEPRECATED_ALIASES,\n  FLIPPED_ALIAS_KEYS,\n  TYPES,\n  __internal__deprecationWarning as deprecationWarning,\n} from \"@babel/types\";\nimport type { ExplodedVisitor, NodePath, Visitor } from \"./index.ts\";\nimport type { ExplVisitNode, VisitNodeFunction, VisitPhase } from \"./types.ts\";\nimport { requeueComputedKeyAndDecorators } from \"./path/context.ts\";\n\ntype VIRTUAL_TYPES = keyof typeof virtualTypes;\nfunction isVirtualType(type: string): type is VIRTUAL_TYPES {\n  return type in virtualTypes;\n}\nexport type VisitWrapper<S = any> = (\n  stateName: string | undefined,\n  visitorType: VisitPhase,\n  callback: VisitNodeFunction<S, Node>,\n) => VisitNodeFunction<S, Node>;\n\nexport function isExplodedVisitor(\n  visitor: Visitor,\n): visitor is ExplodedVisitor {\n  // @ts-expect-error _exploded is not defined on non-exploded Visitor\n  return visitor?._exploded;\n}\n\n// We need to name this function `explode$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var explode: typeof explode; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `explode` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { explode$1 as explode };\n/**\n * explode() will take a visitor object with all of the various shorthands\n * that we support, and validates & normalizes it into a common format, ready\n * to be used in traversal\n *\n * The various shorthands are:\n * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`\n * * `\"Identifier|NumericLiteral\": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`\n * * Aliases in `@babel/types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`\n * Other normalizations are:\n * * Visitors of virtual types are wrapped, so that they are only visited when\n *   their dynamic check passes\n * * `enter` and `exit` functions are wrapped in arrays, to ease merging of\n *   visitors\n */\nfunction explode$1<S>(visitor: Visitor<S>): ExplodedVisitor<S> {\n  if (isExplodedVisitor(visitor)) return visitor;\n  // @ts-expect-error `visitor` will be cast to ExplodedVisitor by this function\n  visitor._exploded = true;\n\n  // normalise pipes\n  for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n    if (shouldIgnoreKey(nodeType)) continue;\n\n    const parts: Array<string> = nodeType.split(\"|\");\n    if (parts.length === 1) continue;\n\n    const fns = visitor[nodeType];\n    delete visitor[nodeType];\n\n    for (const part of parts) {\n      // @ts-expect-error part will be verified by `verify` later\n      visitor[part] = fns;\n    }\n  }\n\n  // verify data structure\n  verify$1(visitor);\n\n  // make sure there's no __esModule type since this is because we're using loose mode\n  // and it sets __esModule to be enumerable on all modules :(\n  // @ts-expect-error ESModule interop\n  delete visitor.__esModule;\n\n  // ensure visitors are objects\n  ensureEntranceObjects(visitor);\n\n  // ensure enter/exit callbacks are arrays\n  ensureCallbackArrays(visitor);\n\n  // add type wrappers\n  for (const nodeType of Object.keys(visitor)) {\n    if (shouldIgnoreKey(nodeType)) continue;\n\n    if (!isVirtualType(nodeType)) continue;\n\n    // wrap all the functions\n    const fns = visitor[nodeType];\n    for (const type of Object.keys(fns)) {\n      // @ts-expect-error normalised as VisitNodeObject\n      fns[type] = wrapCheck(nodeType, fns[type]);\n    }\n\n    // clear it from the visitor\n    delete visitor[nodeType];\n\n    const types = virtualTypes[nodeType];\n    if (types !== null) {\n      for (const type of types) {\n        // merge the visitor if necessary or just put it back in\n        if (visitor[type]) {\n          mergePair(visitor[type], fns);\n        } else {\n          // @ts-expect-error Expression produces too complex union\n          visitor[type] = fns;\n        }\n      }\n    } else {\n      mergePair(visitor, fns);\n    }\n  }\n\n  // add aliases\n  for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n    if (shouldIgnoreKey(nodeType)) continue;\n\n    let aliases = FLIPPED_ALIAS_KEYS[nodeType];\n\n    if (nodeType in DEPRECATED_KEYS) {\n      const deprecatedKey = DEPRECATED_KEYS[nodeType];\n      deprecationWarning(nodeType, deprecatedKey, \"Visitor \");\n      aliases = [deprecatedKey];\n    } else if (nodeType in DEPRECATED_ALIASES) {\n      const deprecatedAlias =\n        DEPRECATED_ALIASES[nodeType as keyof typeof DEPRECATED_ALIASES];\n      deprecationWarning(nodeType, deprecatedAlias, \"Visitor \");\n      aliases = FLIPPED_ALIAS_KEYS[deprecatedAlias];\n    }\n\n    if (!aliases) continue;\n\n    const fns = visitor[nodeType];\n    // clear it from the visitor\n    delete visitor[nodeType];\n\n    for (const alias of aliases) {\n      const existing = visitor[alias];\n      if (existing) {\n        mergePair(existing, fns);\n      } else {\n        visitor[alias] = { ...fns };\n      }\n    }\n  }\n\n  for (const nodeType of Object.keys(visitor)) {\n    if (shouldIgnoreKey(nodeType)) continue;\n\n    ensureCallbackArrays(\n      // @ts-expect-error nodeType must present in visitor after previous validations\n      visitor[nodeType],\n    );\n  }\n\n  // @ts-expect-error explosion has been performed\n  return visitor as ExplodedVisitor;\n}\n\n// We need to name this function `verify$1` because otherwise rollup-plugin-dts\n// will generate a `namespace traverse { var verify: typeof verify; }` when\n// bundling @babel/traverse's index.d.ts.\n// TODO: Just call it `verify` once https://github.com/Swatinem/rollup-plugin-dts/issues/307\n// is fixed.\nexport { verify$1 as verify };\nfunction verify$1(visitor: Visitor) {\n  // @ts-expect-error _verified is not defined on non-verified Visitor.\n  // TODO: unify _verified and _exploded.\n  if (visitor._verified) return;\n\n  if (typeof visitor === \"function\") {\n    throw new Error(\n      \"You passed `traverse()` a function when it expected a visitor object, \" +\n        \"are you sure you didn't mean `{ enter: Function }`?\",\n    );\n  }\n\n  for (const nodeType of Object.keys(visitor) as (keyof Visitor)[]) {\n    if (nodeType === \"enter\" || nodeType === \"exit\") {\n      validateVisitorMethods(nodeType, visitor[nodeType]);\n    }\n\n    if (shouldIgnoreKey(nodeType)) continue;\n\n    if (!TYPES.includes(nodeType)) {\n      throw new Error(\n        `You gave us a visitor for the node type ${nodeType} but it's not a valid type in @babel/traverse ${PACKAGE_JSON.version}`,\n      );\n    }\n\n    const visitors = visitor[nodeType];\n    if (typeof visitors === \"object\") {\n      for (const visitorKey of Object.keys(visitors)) {\n        if (visitorKey === \"enter\" || visitorKey === \"exit\") {\n          // verify that it just contains functions\n          validateVisitorMethods(\n            `${nodeType}.${visitorKey}`,\n            visitors[visitorKey],\n          );\n        } else {\n          throw new Error(\n            \"You passed `traverse()` a visitor object with the property \" +\n              `${nodeType} that has the invalid property ${visitorKey}`,\n          );\n        }\n      }\n    }\n  }\n\n  // @ts-expect-error _verified is not defined on non-verified Visitor.\n  // TODO: unify _verified and _exploded.\n  visitor._verified = true;\n}\n\nfunction validateVisitorMethods(\n  path: string,\n  val: any,\n): asserts val is Function | Function[] {\n  const fns = [].concat(val);\n  for (const fn of fns) {\n    if (typeof fn !== \"function\") {\n      throw new TypeError(\n        `Non-function found defined in ${path} with type ${typeof fn}`,\n      );\n    }\n  }\n}\n\nexport function merge<State>(\n  visitors: Visitor<State>[],\n): ExplodedVisitor<State>;\nexport function merge(\n  visitors: Visitor<unknown>[],\n  states?: any[],\n  wrapper?: Function | null,\n): ExplodedVisitor<unknown>;\nexport function merge(\n  visitors: any[],\n  states: any[] = [],\n  wrapper?: VisitWrapper | null,\n): ExplodedVisitor {\n  const mergedVisitor: ExplodedVisitor = { _verified: true, _exploded: true };\n  if (!process.env.BABEL_8_BREAKING) {\n    // For compatibility with old Babel versions, we must hide _verified and _exploded.\n    // Otherwise, old versions of the validator will throw sayng that `true` is not\n    // a function, because it tries to validate it as a visitor.\n    Object.defineProperty(mergedVisitor, \"_exploded\", { enumerable: false });\n    Object.defineProperty(mergedVisitor, \"_verified\", { enumerable: false });\n  }\n\n  for (let i = 0; i < visitors.length; i++) {\n    const visitor = explode$1(visitors[i]);\n    const state = states[i];\n\n    let topVisitor: ExplVisitNode<unknown, Node> = visitor;\n    if (state || wrapper) {\n      topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);\n    }\n    mergePair(mergedVisitor, topVisitor);\n\n    for (const key of Object.keys(visitor) as (keyof ExplodedVisitor)[]) {\n      if (shouldIgnoreKey(key)) continue;\n\n      let typeVisitor = visitor[key];\n\n      // if we have state or wrapper then overload the callbacks to take it\n      if (state || wrapper) {\n        typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);\n      }\n\n      const nodeVisitor = (mergedVisitor[key] ||= {});\n      mergePair(nodeVisitor, typeVisitor);\n    }\n  }\n\n  return mergedVisitor;\n}\n\nfunction wrapWithStateOrWrapper<State>(\n  oldVisitor: ExplVisitNode<State, Node>,\n  state: State | null,\n  wrapper?: VisitWrapper<State> | null,\n): ExplVisitNode<State, Node> {\n  const newVisitor: ExplVisitNode<State, Node> = {};\n\n  for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n    let fns = oldVisitor[phase];\n\n    // not an enter/exit array of callbacks\n    if (!Array.isArray(fns)) continue;\n\n    fns = fns.map(function (fn) {\n      let newFn = fn;\n\n      if (state) {\n        newFn = function (path: NodePath) {\n          fn.call(state, path, state);\n        };\n      }\n\n      if (wrapper) {\n        // @ts-expect-error Fixme: actually PluginPass.key (aka pluginAlias)?\n        newFn = wrapper(state?.key, phase, newFn);\n      }\n\n      // Override toString in case this function is printed, we want to print the wrapped function, same as we do in `wrapCheck`\n      if (newFn !== fn) {\n        newFn.toString = () => fn.toString();\n      }\n\n      return newFn;\n    });\n\n    newVisitor[phase] = fns;\n  }\n\n  return newVisitor;\n}\n\nfunction ensureEntranceObjects(obj: Visitor) {\n  for (const key of Object.keys(obj) as (keyof Visitor)[]) {\n    if (shouldIgnoreKey(key)) continue;\n\n    const fns = obj[key];\n    if (typeof fns === \"function\") {\n      // @ts-expect-error: Expression produces a union type that is too complex to represent.\n      obj[key] = { enter: fns };\n    }\n  }\n}\n\nfunction ensureCallbackArrays(obj: Visitor) {\n  if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];\n  if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];\n}\n\nfunction wrapCheck(nodeType: VIRTUAL_TYPES, fn: Function) {\n  const fnKey = `is${nodeType}`;\n  // @ts-expect-error we know virtualTypesValidators will contain `fnKey`, but TS doesn't\n  const validator = virtualTypesValidators[fnKey];\n  const newFn = function (this: unknown, path: NodePath) {\n    if (validator.call(path)) {\n      return fn.apply(this, arguments);\n    }\n  };\n  newFn.toString = () => fn.toString();\n  return newFn;\n}\n\nfunction shouldIgnoreKey(key: string): key is\n  | `_${string}` // ` // Comment to fix syntax highlighting in vscode\n  | \"enter\"\n  | \"exit\"\n  | \"shouldSkip\"\n  | \"denylist\"\n  | \"noScope\"\n  | \"skipKeys\"\n  | \"blacklist\" {\n  // internal/hidden key\n  if (key[0] === \"_\") return true;\n\n  // ignore function keys\n  if (key === \"enter\" || key === \"exit\" || key === \"shouldSkip\") return true;\n\n  // ignore other options\n  if (key === \"denylist\" || key === \"noScope\" || key === \"skipKeys\") {\n    return true;\n  }\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (key === \"blacklist\") {\n      return true;\n    }\n  }\n\n  return false;\n}\n\n/*\nfunction mergePair(\n  dest: ExplVisitNode<unknown, Node>,\n  src: ExplVisitNode<unknown, Node>,\n);\n*/\nfunction mergePair(dest: any, src: any) {\n  for (const phase of [\"enter\", \"exit\"] as VisitPhase[]) {\n    if (!src[phase]) continue;\n    dest[phase] = [].concat(dest[phase] || [], src[phase]);\n  }\n}\n\n// environmentVisitor should be used when traversing the whole class and not for specific class elements/methods.\n// For perf reasons, the environmentVisitor might be traversed with `{ noScope: true }`, which means `path.scope` is undefined.\n// Avoid using `path.scope` here\nconst _environmentVisitor: Visitor = {\n  FunctionParent(path) {\n    // arrows are not skipped because they inherit the context.\n    if (path.isArrowFunctionExpression()) return;\n\n    path.skip();\n    if (path.isMethod()) {\n      if (\n        !process.env.BABEL_8_BREAKING &&\n        !path.requeueComputedKeyAndDecorators\n      ) {\n        // See https://github.com/babel/babel/issues/16694\n        requeueComputedKeyAndDecorators.call(path);\n      } else {\n        path.requeueComputedKeyAndDecorators();\n      }\n    }\n  },\n  Property(path) {\n    if (path.isObjectProperty()) return;\n    path.skip();\n    if (\n      !process.env.BABEL_8_BREAKING &&\n      !path.requeueComputedKeyAndDecorators\n    ) {\n      // See https://github.com/babel/babel/issues/16694\n      requeueComputedKeyAndDecorators.call(path);\n    } else {\n      path.requeueComputedKeyAndDecorators();\n    }\n  },\n};\n\nexport function environmentVisitor<S>(visitor: Visitor<S>): Visitor<S> {\n  return merge([_environmentVisitor, visitor]);\n}\n","import type Binding from \"../binding.ts\";\nimport * as t from \"@babel/types\";\nimport type { NodePath, Visitor } from \"../../index.ts\";\nimport { traverseNode } from \"../../traverse-node.ts\";\nimport { explode } from \"../../visitors.ts\";\nimport { getAssignmentIdentifiers, type Identifier } from \"@babel/types\";\nimport { requeueComputedKeyAndDecorators } from \"../../path/context.ts\";\n\nconst renameVisitor: Visitor<Renamer> = {\n  ReferencedIdentifier({ node }, state) {\n    if (node.name === state.oldName) {\n      node.name = state.newName;\n    }\n  },\n\n  Scope(path, state) {\n    if (\n      !path.scope.bindingIdentifierEquals(\n        state.oldName,\n        state.binding.identifier,\n      )\n    ) {\n      path.skip();\n      if (path.isMethod()) {\n        if (\n          !process.env.BABEL_8_BREAKING &&\n          !path.requeueComputedKeyAndDecorators\n        ) {\n          // See https://github.com/babel/babel/issues/16694\n          requeueComputedKeyAndDecorators.call(path);\n        } else {\n          path.requeueComputedKeyAndDecorators();\n        }\n      }\n    }\n  },\n\n  ObjectProperty({ node, scope }, state) {\n    const { name } = node.key as Identifier;\n    if (\n      node.shorthand &&\n      // In destructuring the identifier is already renamed by the\n      // AssignmentExpression|Declaration|VariableDeclarator visitor,\n      // while in object literals it's renamed later by the\n      // ReferencedIdentifier visitor.\n      (name === state.oldName || name === state.newName) &&\n      // Ignore shadowed bindings\n      scope.getBindingIdentifier(name) === state.binding.identifier\n    ) {\n      node.shorthand = false;\n      if (!process.env.BABEL_8_BREAKING) {\n        if (node.extra?.shorthand) node.extra.shorthand = false;\n      }\n    }\n  },\n\n  \"AssignmentExpression|Declaration|VariableDeclarator\"(\n    path: NodePath<\n      t.AssignmentExpression | t.Declaration | t.VariableDeclarator\n    >,\n    state,\n  ) {\n    if (path.isVariableDeclaration()) return;\n    const ids = path.isAssignmentExpression()\n      ? // See https://github.com/babel/babel/issues/16694\n        getAssignmentIdentifiers(path.node)\n      : path.getOuterBindingIdentifiers();\n\n    for (const name in ids) {\n      if (name === state.oldName) ids[name].name = state.newName;\n    }\n  },\n};\n\nexport default class Renamer {\n  constructor(binding: Binding, oldName: string, newName: string) {\n    this.newName = newName;\n    this.oldName = oldName;\n    this.binding = binding;\n  }\n\n  declare oldName: string;\n  declare newName: string;\n  declare binding: Binding;\n\n  maybeConvertFromExportDeclaration(parentDeclar: NodePath) {\n    const maybeExportDeclar = parentDeclar.parentPath;\n\n    if (!maybeExportDeclar.isExportDeclaration()) {\n      return;\n    }\n\n    if (maybeExportDeclar.isExportDefaultDeclaration()) {\n      const { declaration } = maybeExportDeclar.node;\n      if (t.isDeclaration(declaration) && !declaration.id) {\n        return;\n      }\n    }\n\n    if (maybeExportDeclar.isExportAllDeclaration()) {\n      return;\n    }\n\n    maybeExportDeclar.splitExportDeclaration();\n  }\n\n  maybeConvertFromClassFunctionDeclaration(path: NodePath) {\n    return path; // TODO\n\n    // // retain the `name` of a class/function declaration\n\n    // if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;\n    // if (this.binding.kind !== \"hoisted\") return;\n\n    // path.node.id = identifier(this.oldName);\n    // path.node._blockHoist = 3;\n\n    // path.replaceWith(\n    //   variableDeclaration(\"let\", [\n    //     variableDeclarator(identifier(this.newName), toExpression(path.node)),\n    //   ]),\n    // );\n  }\n\n  maybeConvertFromClassFunctionExpression(path: NodePath) {\n    return path; // TODO\n\n    // // retain the `name` of a class/function expression\n\n    // if (!path.isFunctionExpression() && !path.isClassExpression()) return;\n    // if (this.binding.kind !== \"local\") return;\n\n    // path.node.id = identifier(this.oldName);\n\n    // this.binding.scope.parent.push({\n    //   id: identifier(this.newName),\n    // });\n\n    // path.replaceWith(\n    //   assignmentExpression(\"=\", identifier(this.newName), path.node),\n    // );\n  }\n\n  rename(/* Babel 7 - block?: t.Pattern | t.Scopable */) {\n    const { binding, oldName, newName } = this;\n    const { scope, path } = binding;\n\n    const parentDeclar = path.find(\n      path =>\n        path.isDeclaration() ||\n        path.isFunctionExpression() ||\n        path.isClassExpression(),\n    );\n    if (parentDeclar) {\n      const bindingIds = parentDeclar.getOuterBindingIdentifiers();\n      if (bindingIds[oldName] === binding.identifier) {\n        // When we are renaming an exported identifier, we need to ensure that\n        // the exported binding keeps the old name.\n        this.maybeConvertFromExportDeclaration(parentDeclar);\n      }\n    }\n\n    const blockToTraverse = process.env.BABEL_8_BREAKING\n      ? scope.block\n      : (arguments[0] as t.Pattern | t.Scopable) || scope.block;\n\n    // When blockToTraverse is a SwitchStatement, the discriminant\n    // is not part of the current scope and thus should be skipped.\n\n    // const foo = {\n    //   get [x]() {\n    //     return x;\n    //   },\n    // };\n    const skipKeys: Record<string, true> = { discriminant: true };\n    if (t.isMethod(blockToTraverse)) {\n      if (blockToTraverse.computed) {\n        skipKeys.key = true;\n      }\n      if (!t.isObjectMethod(blockToTraverse)) {\n        skipKeys.decorators = true;\n      }\n    }\n\n    traverseNode(\n      blockToTraverse,\n      explode(renameVisitor),\n      scope,\n      this,\n      scope.path,\n      skipKeys,\n    );\n\n    if (process.env.BABEL_8_BREAKING) {\n      scope.removeOwnBinding(oldName);\n      scope.bindings[newName] = binding;\n      this.binding.identifier.name = newName;\n    } else if (!arguments[0]) {\n      scope.removeOwnBinding(oldName);\n      scope.bindings[newName] = binding;\n      this.binding.identifier.name = newName;\n    }\n\n    if (parentDeclar) {\n      this.maybeConvertFromClassFunctionDeclaration(path);\n      this.maybeConvertFromClassFunctionExpression(path);\n    }\n  }\n}\n","import type NodePath from \"../path/index.ts\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"./index.ts\";\n\nexport type BindingKind =\n  | \"var\" /* var declarator */\n  | \"let\" /* let declarator, class declaration id, catch clause parameters */\n  | \"const\" /* const/using declarator */\n  | \"module\" /* import specifiers */\n  | \"hoisted\" /* function declaration id */\n  | \"param\" /* function declaration parameters */\n  | \"local\" /* function expression id, class expression id */\n  | \"unknown\"; /* export specifiers */\n/**\n * This class is responsible for a binding inside of a scope.\n *\n * It tracks the following:\n *\n *  * Node path.\n *  * Amount of times referenced by other nodes.\n *  * Paths to nodes that reassign or modify this binding.\n *  * The kind of binding. (Is it a parameter, declaration etc)\n */\n\nexport default class Binding {\n  identifier: t.Identifier;\n  scope: Scope;\n  path: NodePath;\n  kind: BindingKind;\n\n  constructor({\n    identifier,\n    scope,\n    path,\n    kind,\n  }: {\n    identifier: t.Identifier;\n    scope: Scope;\n    path: NodePath;\n    kind: BindingKind;\n  }) {\n    this.identifier = identifier;\n    this.scope = scope;\n    this.path = path;\n    this.kind = kind;\n\n    if ((kind === \"var\" || kind === \"hoisted\") && isDeclaredInLoop(path)) {\n      this.reassign(path);\n    }\n\n    this.clearValue();\n  }\n\n  constantViolations: Array<NodePath> = [];\n  constant: boolean = true;\n\n  referencePaths: Array<NodePath> = [];\n  referenced: boolean = false;\n  references: number = 0;\n\n  declare hasDeoptedValue: boolean;\n  declare hasValue: boolean;\n  declare value: any;\n\n  deoptValue() {\n    this.clearValue();\n    this.hasDeoptedValue = true;\n  }\n\n  setValue(value: any) {\n    if (this.hasDeoptedValue) return;\n    this.hasValue = true;\n    this.value = value;\n  }\n\n  clearValue() {\n    this.hasDeoptedValue = false;\n    this.hasValue = false;\n    this.value = null;\n  }\n\n  /**\n   * Register a constant violation with the provided `path`.\n   */\n\n  reassign(path: NodePath) {\n    this.constant = false;\n    if (this.constantViolations.includes(path)) {\n      return;\n    }\n    this.constantViolations.push(path);\n  }\n\n  /**\n   * Increment the amount of references to this binding.\n   */\n\n  reference(path: NodePath) {\n    if (this.referencePaths.includes(path)) {\n      return;\n    }\n    this.referenced = true;\n    this.references++;\n    this.referencePaths.push(path);\n  }\n\n  /**\n   * Decrement the amount of references to this binding.\n   */\n\n  dereference() {\n    this.references--;\n    this.referenced = !!this.references;\n  }\n}\n\nfunction isDeclaredInLoop(path: NodePath) {\n  for (\n    let { parentPath, key } = path;\n    parentPath;\n    { parentPath, key } = parentPath\n  ) {\n    if (parentPath.isFunctionParent()) return false;\n    if (\n      parentPath.isWhile() ||\n      parentPath.isForXStatement() ||\n      (parentPath.isForStatement() && key === \"body\")\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n","'use strict';\nmodule.exports = require('./globals.json');\n","import type { Node } from \"@babel/types\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type { HubInterface } from \"./hub.ts\";\n\nlet pathsCache: WeakMap<\n  HubInterface | typeof nullHub,\n  WeakMap<Node, Map<Node, NodePath>>\n> = new WeakMap();\nexport { pathsCache as path };\nexport let scope: WeakMap<Node, Scope> = new WeakMap();\n\nexport function clear() {\n  clearPath();\n  clearScope();\n}\n\nexport function clearPath() {\n  pathsCache = new WeakMap();\n}\n\nexport function clearScope() {\n  scope = new WeakMap();\n}\n\n// NodePath#hub can be null, but it's not a valid weakmap key because it\n// cannot be collected by GC. Use an object, knowing tht it will not be\n// collected anyway. It's not a memory leak because pathsCache.get(nullHub)\n// is itself a weakmap, so its entries can still be collected.\nconst nullHub = Object.freeze({} as const);\n\nexport function getCachedPaths(hub: HubInterface | null, parent: Node) {\n  if (!process.env.BABEL_8_BREAKING) {\n    // Only use Hub as part of the cache key in Babel 8, because it is a\n    // breaking change (it causes incompatibilities with older `@babel/core`\n    // versions: see https://github.com/babel/babel/pull/15759)\n    hub = null;\n  }\n  return pathsCache.get(hub ?? nullHub)?.get(parent);\n}\n\nexport function getOrCreateCachedPaths(hub: HubInterface | null, parent: Node) {\n  if (!process.env.BABEL_8_BREAKING) {\n    hub = null;\n  }\n\n  let parents = pathsCache.get(hub ?? nullHub);\n  if (!parents) pathsCache.set(hub ?? nullHub, (parents = new WeakMap()));\n\n  let paths = parents.get(parent);\n  if (!paths) parents.set(parent, (paths = new Map()));\n\n  return paths;\n}\n","import Renamer from \"./lib/renamer.ts\";\nimport type NodePath from \"../path/index.ts\";\nimport traverse from \"../index.ts\";\nimport Binding from \"./binding.ts\";\nimport type { BindingKind } from \"./binding.ts\";\nimport globals from \"globals\";\nimport {\n  NOT_LOCAL_BINDING,\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  getBindingIdentifiers,\n  identifier,\n  isArrayExpression,\n  isBinary,\n  isCallExpression,\n  isClass,\n  isClassBody,\n  isClassDeclaration,\n  isExportAllDeclaration,\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n  isFunctionDeclaration,\n  isIdentifier,\n  isImportDeclaration,\n  isLiteral,\n  isMemberExpression,\n  isMethod,\n  isModuleSpecifier,\n  isNullLiteral,\n  isObjectExpression,\n  isProperty,\n  isPureish,\n  isRegExpLiteral,\n  isSuper,\n  isTaggedTemplateExpression,\n  isTemplateLiteral,\n  isThisExpression,\n  isUnaryExpression,\n  isVariableDeclaration,\n  expressionStatement,\n  matchesPattern,\n  memberExpression,\n  numericLiteral,\n  toIdentifier,\n  variableDeclaration,\n  variableDeclarator,\n  isRecordExpression,\n  isTupleExpression,\n  isObjectProperty,\n  isTopicReference,\n  isMetaProperty,\n  isPrivateName,\n  isExportDeclaration,\n  buildUndefinedNode,\n  sequenceExpression,\n} from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport { scope as scopeCache } from \"../cache.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { isExplodedVisitor } from \"../visitors.ts\";\n\ntype NodePart = string | number | boolean;\n// Recursively gathers the identifying names of a node.\nfunction gatherNodeParts(node: t.Node, parts: NodePart[]) {\n  switch (node?.type) {\n    default:\n      if (isImportDeclaration(node) || isExportDeclaration(node)) {\n        if (\n          (isExportAllDeclaration(node) ||\n            isExportNamedDeclaration(node) ||\n            isImportDeclaration(node)) &&\n          node.source\n        ) {\n          gatherNodeParts(node.source, parts);\n        } else if (\n          (isExportNamedDeclaration(node) || isImportDeclaration(node)) &&\n          node.specifiers?.length\n        ) {\n          for (const e of node.specifiers) gatherNodeParts(e, parts);\n        } else if (\n          (isExportDefaultDeclaration(node) ||\n            isExportNamedDeclaration(node)) &&\n          node.declaration\n        ) {\n          gatherNodeParts(node.declaration, parts);\n        }\n      } else if (isModuleSpecifier(node)) {\n        // todo(flow->ts): should condition instead be:\n        //    ```\n        //    t.isExportSpecifier(node) ||\n        //    t.isImportDefaultSpecifier(node) ||\n        //    t.isImportNamespaceSpecifier(node) ||\n        //    t.isImportSpecifier(node)\n        //    ```\n        //    allowing only nodes with `.local`?\n        // @ts-expect-error todo(flow->ts)\n        gatherNodeParts(node.local, parts);\n      } else if (\n        isLiteral(node) &&\n        !isNullLiteral(node) &&\n        !isRegExpLiteral(node) &&\n        !isTemplateLiteral(node)\n      ) {\n        parts.push(node.value);\n      }\n      break;\n\n    case \"MemberExpression\":\n    case \"OptionalMemberExpression\":\n    case \"JSXMemberExpression\":\n      gatherNodeParts(node.object, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"Identifier\":\n    case \"JSXIdentifier\":\n      parts.push(node.name);\n      break;\n\n    case \"CallExpression\":\n    case \"OptionalCallExpression\":\n    case \"NewExpression\":\n      gatherNodeParts(node.callee, parts);\n      break;\n\n    case \"ObjectExpression\":\n    case \"ObjectPattern\":\n      for (const e of node.properties) {\n        gatherNodeParts(e, parts);\n      }\n      break;\n\n    case \"SpreadElement\":\n    case \"RestElement\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"ObjectProperty\":\n    case \"ObjectMethod\":\n    case \"ClassProperty\":\n    case \"ClassMethod\":\n    case \"ClassPrivateProperty\":\n    case \"ClassPrivateMethod\":\n      gatherNodeParts(node.key, parts);\n      break;\n\n    case \"ThisExpression\":\n      parts.push(\"this\");\n      break;\n\n    case \"Super\":\n      parts.push(\"super\");\n      break;\n\n    case \"Import\":\n      parts.push(\"import\");\n      break;\n\n    case \"DoExpression\":\n      parts.push(\"do\");\n      break;\n\n    case \"YieldExpression\":\n      parts.push(\"yield\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AwaitExpression\":\n      parts.push(\"await\");\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"AssignmentExpression\":\n      gatherNodeParts(node.left, parts);\n      break;\n\n    case \"VariableDeclarator\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"FunctionExpression\":\n    case \"FunctionDeclaration\":\n    case \"ClassExpression\":\n    case \"ClassDeclaration\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"PrivateName\":\n      gatherNodeParts(node.id, parts);\n      break;\n\n    case \"ParenthesizedExpression\":\n      gatherNodeParts(node.expression, parts);\n      break;\n\n    case \"UnaryExpression\":\n    case \"UpdateExpression\":\n      gatherNodeParts(node.argument, parts);\n      break;\n\n    case \"MetaProperty\":\n      gatherNodeParts(node.meta, parts);\n      gatherNodeParts(node.property, parts);\n      break;\n\n    case \"JSXElement\":\n      gatherNodeParts(node.openingElement, parts);\n      break;\n\n    case \"JSXOpeningElement\":\n      gatherNodeParts(node.name, parts);\n      break;\n\n    case \"JSXFragment\":\n      gatherNodeParts(node.openingFragment, parts);\n      break;\n\n    case \"JSXOpeningFragment\":\n      parts.push(\"Fragment\");\n      break;\n\n    case \"JSXNamespacedName\":\n      gatherNodeParts(node.namespace, parts);\n      gatherNodeParts(node.name, parts);\n      break;\n  }\n}\n\n//\ninterface CollectVisitorState {\n  assignments: NodePath<t.AssignmentExpression>[];\n  references: NodePath<t.Identifier | t.JSXIdentifier>[];\n  constantViolations: NodePath[];\n}\n\nconst collectorVisitor: Visitor<CollectVisitorState> = {\n  ForStatement(path) {\n    const declar = path.get(\"init\");\n    // delegate block scope handling to the `BlockScoped` method\n    if (declar.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", declar);\n    }\n  },\n\n  Declaration(path) {\n    // delegate block scope handling to the `BlockScoped` method\n    if (path.isBlockScoped()) return;\n\n    // delegate import handing to the `ImportDeclaration` method\n    if (path.isImportDeclaration()) return;\n\n    // this will be hit again once we traverse into it after this iteration\n    if (path.isExportDeclaration()) return;\n\n    // we've ran into a declaration!\n    const parent =\n      path.scope.getFunctionParent() || path.scope.getProgramParent();\n    parent.registerDeclaration(path);\n  },\n\n  ImportDeclaration(path) {\n    // import may only appear in the top level or inside a module/namespace (for TS/flow)\n    const parent = path.scope.getBlockParent();\n\n    parent.registerDeclaration(path);\n  },\n\n  TSImportEqualsDeclaration(path) {\n    const parent = path.scope.getBlockParent();\n\n    parent.registerDeclaration(path);\n  },\n\n  ReferencedIdentifier(path, state) {\n    if (t.isTSQualifiedName(path.parent) && path.parent.right === path.node) {\n      return;\n    }\n    if (path.parentPath.isTSImportEqualsDeclaration()) return;\n    state.references.push(path);\n  },\n\n  ForXStatement(path, state) {\n    const left = path.get(\"left\");\n    if (left.isPattern() || left.isIdentifier()) {\n      state.constantViolations.push(path);\n    }\n    // delegate block scope handling to the `BlockScoped` method\n    else if (left.isVar()) {\n      const { scope } = path;\n      const parentScope = scope.getFunctionParent() || scope.getProgramParent();\n      parentScope.registerBinding(\"var\", left);\n    }\n  },\n\n  ExportDeclaration: {\n    exit(path) {\n      const { node, scope } = path;\n      // ExportAllDeclaration does not have `declaration`\n      if (isExportAllDeclaration(node)) return;\n      const declar = node.declaration;\n      if (isClassDeclaration(declar) || isFunctionDeclaration(declar)) {\n        const id = declar.id;\n        if (!id) return;\n\n        const binding = scope.getBinding(id.name);\n        binding?.reference(path);\n      } else if (isVariableDeclaration(declar)) {\n        for (const decl of declar.declarations) {\n          for (const name of Object.keys(getBindingIdentifiers(decl))) {\n            const binding = scope.getBinding(name);\n            binding?.reference(path);\n          }\n        }\n      }\n    },\n  },\n\n  LabeledStatement(path) {\n    path.scope.getBlockParent().registerDeclaration(path);\n  },\n\n  AssignmentExpression(path, state) {\n    state.assignments.push(path);\n  },\n\n  UpdateExpression(path, state) {\n    state.constantViolations.push(path);\n  },\n\n  UnaryExpression(path, state) {\n    if (path.node.operator === \"delete\") {\n      state.constantViolations.push(path);\n    }\n  },\n\n  BlockScoped(path) {\n    let scope = path.scope;\n    if (scope.path === path) scope = scope.parent;\n\n    const parent = scope.getBlockParent();\n    parent.registerDeclaration(path);\n\n    // Register class identifier in class' scope if this is a class declaration.\n    if (path.isClassDeclaration() && path.node.id) {\n      const id = path.node.id;\n      const name = id.name;\n\n      path.scope.bindings[name] = path.scope.parent.getBinding(name);\n    }\n  },\n\n  CatchClause(path) {\n    path.scope.registerBinding(\"let\", path);\n  },\n\n  Function(path) {\n    const params: Array<NodePath> = path.get(\"params\");\n    for (const param of params) {\n      path.scope.registerBinding(\"param\", param);\n    }\n\n    // Register function expression id after params. When the id\n    // collides with a function param, the id effectively can't be\n    // referenced: here we registered it as a constantViolation\n    if (\n      path.isFunctionExpression() &&\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n\n  ClassExpression(path) {\n    if (\n      path.node.id &&\n      // @ts-expect-error Fixme: document symbol ast properties\n      !path.node.id[NOT_LOCAL_BINDING]\n    ) {\n      path.scope.registerBinding(\"local\", path.get(\"id\"), path);\n    }\n  },\n\n  TSTypeAnnotation(path) {\n    path.skip();\n  },\n};\n\nlet uid = 0;\n\nexport type { Binding };\n\nexport { Scope as default };\nclass Scope {\n  uid;\n\n  path: NodePath;\n  block: t.Pattern | t.Scopable;\n\n  inited;\n\n  labels: Map<string, NodePath<t.LabeledStatement>>;\n  bindings: { [name: string]: Binding };\n  references: { [name: string]: true };\n  globals: { [name: string]: t.Identifier | t.JSXIdentifier };\n  uids: { [name: string]: boolean };\n  data: { [key: string | symbol]: unknown };\n  crawling: boolean;\n\n  /**\n   * This searches the current \"scope\" and collects all references/bindings\n   * within.\n   */\n  constructor(path: NodePath<t.Pattern | t.Scopable>) {\n    const { node } = path;\n    const cached = scopeCache.get(node);\n    // Sometimes, a scopable path is placed higher in the AST tree.\n    // In these cases, have to create a new Scope.\n    if (cached?.path === path) {\n      return cached;\n    }\n    scopeCache.set(node, this);\n\n    this.uid = uid++;\n\n    this.block = node;\n    this.path = path;\n\n    this.labels = new Map();\n    this.inited = false;\n  }\n\n  /**\n   * Globals.\n   */\n\n  static globals = Object.keys(globals.builtin);\n\n  /**\n   * Variables available in current context.\n   */\n\n  static contextVariables = [\"arguments\", \"undefined\", \"Infinity\", \"NaN\"];\n\n  get parent() {\n    let parent,\n      path = this.path;\n    do {\n      // Skip method scope if coming from inside computed key or decorator expression\n      const shouldSkip = path.key === \"key\" || path.listKey === \"decorators\";\n      path = path.parentPath;\n      if (shouldSkip && path.isMethod()) path = path.parentPath;\n      if (path?.isScope()) parent = path;\n    } while (path && !parent);\n\n    return parent?.scope;\n  }\n\n  /**\n   * Generate a unique identifier and add it to the current scope.\n   */\n\n  generateDeclaredUidIdentifier(name?: string) {\n    const id = this.generateUidIdentifier(name);\n    this.push({ id });\n    return cloneNode(id);\n  }\n\n  /**\n   * Generate a unique identifier.\n   */\n\n  generateUidIdentifier(name?: string) {\n    return identifier(this.generateUid(name));\n  }\n\n  /**\n   * Generate a unique `_id1` binding.\n   */\n\n  generateUid(name: string = \"temp\"): string {\n    name = toIdentifier(name).replace(/^_+/, \"\").replace(/\\d+$/g, \"\");\n\n    let uid;\n    let i = 1;\n    do {\n      uid = `_${name}`;\n      if (i > 1) uid += i;\n      i++;\n    } while (\n      this.hasLabel(uid) ||\n      this.hasBinding(uid) ||\n      this.hasGlobal(uid) ||\n      this.hasReference(uid)\n    );\n\n    const program = this.getProgramParent();\n    program.references[uid] = true;\n    program.uids[uid] = true;\n\n    return uid;\n  }\n\n  generateUidBasedOnNode(node: t.Node, defaultName?: string) {\n    const parts: NodePart[] = [];\n    gatherNodeParts(node, parts);\n\n    let id = parts.join(\"$\");\n    id = id.replace(/^_/, \"\") || defaultName || \"ref\";\n\n    return this.generateUid(id.slice(0, 20));\n  }\n\n  /**\n   * Generate a unique identifier based on a node.\n   */\n\n  generateUidIdentifierBasedOnNode(node: t.Node, defaultName?: string) {\n    return identifier(this.generateUidBasedOnNode(node, defaultName));\n  }\n\n  /**\n   * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.\n   * evaluating it won't result in potentially arbitrary code from being ran. The following are\n   * allowed and determined not to cause side effects:\n   *\n   *  - `this` expressions\n   *  - `super` expressions\n   *  - Bound identifiers\n   */\n\n  isStatic(node: t.Node): boolean {\n    if (isThisExpression(node) || isSuper(node) || isTopicReference(node)) {\n      return true;\n    }\n\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding) {\n        return binding.constant;\n      } else {\n        return this.hasBinding(node.name);\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Possibly generate a memoised identifier if it is not static and has consequences.\n   */\n\n  maybeGenerateMemoised(node: t.Node, dontPush?: boolean) {\n    if (this.isStatic(node)) {\n      return null;\n    } else {\n      const id = this.generateUidIdentifierBasedOnNode(node);\n      if (!dontPush) {\n        this.push({ id });\n        return cloneNode(id);\n      }\n      return id;\n    }\n  }\n\n  checkBlockScopedCollisions(\n    local: Binding,\n    kind: BindingKind,\n    name: string,\n    id: any,\n  ) {\n    // ignore parameters\n    if (kind === \"param\") return;\n\n    // Ignore existing binding if it's the name of the current function or\n    // class expression\n    if (local.kind === \"local\") return;\n\n    const duplicate =\n      // don't allow duplicate bindings to exist alongside\n      kind === \"let\" ||\n      local.kind === \"let\" ||\n      local.kind === \"const\" ||\n      local.kind === \"module\" ||\n      // don't allow a local of param with a kind of let\n      (local.kind === \"param\" && kind === \"const\");\n\n    if (duplicate) {\n      throw this.path.hub.buildError(\n        id,\n        `Duplicate declaration \"${name}\"`,\n        TypeError,\n      );\n    }\n  }\n\n  rename(\n    oldName: string,\n    newName?: string,\n    // prettier-ignore\n    /* Babel 7 - block?: t.Pattern | t.Scopable */\n  ) {\n    const binding = this.getBinding(oldName);\n    if (binding) {\n      newName ||= this.generateUidIdentifier(oldName).name;\n      const renamer = new Renamer(binding, oldName, newName);\n      if (process.env.BABEL_8_BREAKING) {\n        renamer.rename();\n      } else {\n        // @ts-ignore(Babel 7 vs Babel 8) TODO: Delete this\n        renamer.rename(arguments[2]);\n      }\n    }\n  }\n\n  dump() {\n    const sep = \"-\".repeat(60);\n    console.log(sep);\n    let scope: Scope = this;\n    do {\n      console.log(\"#\", scope.block.type);\n      for (const name of Object.keys(scope.bindings)) {\n        const binding = scope.bindings[name];\n        console.log(\" -\", name, {\n          constant: binding.constant,\n          references: binding.references,\n          violations: binding.constantViolations.length,\n          kind: binding.kind,\n        });\n      }\n    } while ((scope = scope.parent));\n    console.log(sep);\n  }\n\n  hasLabel(name: string) {\n    return !!this.getLabel(name);\n  }\n\n  getLabel(name: string) {\n    return this.labels.get(name);\n  }\n\n  registerLabel(path: NodePath<t.LabeledStatement>) {\n    this.labels.set(path.node.label.name, path);\n  }\n\n  registerDeclaration(path: NodePath) {\n    if (path.isLabeledStatement()) {\n      this.registerLabel(path);\n    } else if (path.isFunctionDeclaration()) {\n      this.registerBinding(\"hoisted\", path.get(\"id\"), path);\n    } else if (path.isVariableDeclaration()) {\n      const declarations = path.get(\"declarations\");\n      const { kind } = path.node;\n      for (const declar of declarations) {\n        this.registerBinding(\n          kind === \"using\" || kind === \"await using\" ? \"const\" : kind,\n          declar,\n        );\n      }\n    } else if (path.isClassDeclaration()) {\n      if (path.node.declare) return;\n      this.registerBinding(\"let\", path);\n    } else if (path.isImportDeclaration()) {\n      const isTypeDeclaration =\n        path.node.importKind === \"type\" || path.node.importKind === \"typeof\";\n      const specifiers = path.get(\"specifiers\");\n      for (const specifier of specifiers) {\n        const isTypeSpecifier =\n          isTypeDeclaration ||\n          (specifier.isImportSpecifier() &&\n            (specifier.node.importKind === \"type\" ||\n              specifier.node.importKind === \"typeof\"));\n\n        this.registerBinding(isTypeSpecifier ? \"unknown\" : \"module\", specifier);\n      }\n    } else if (path.isExportDeclaration()) {\n      // todo: improve babel-types\n      const declar = path.get(\"declaration\") as NodePath;\n      if (\n        declar.isClassDeclaration() ||\n        declar.isFunctionDeclaration() ||\n        declar.isVariableDeclaration()\n      ) {\n        this.registerDeclaration(declar);\n      }\n    } else {\n      this.registerBinding(\"unknown\", path);\n    }\n  }\n\n  buildUndefinedNode() {\n    return buildUndefinedNode();\n  }\n\n  registerConstantViolation(path: NodePath) {\n    const ids = path.getAssignmentIdentifiers();\n    for (const name of Object.keys(ids)) {\n      this.getBinding(name)?.reassign(path);\n    }\n  }\n\n  registerBinding(\n    kind: Binding[\"kind\"],\n    path: NodePath,\n    bindingPath: NodePath = path,\n  ) {\n    if (!kind) throw new ReferenceError(\"no `kind`\");\n\n    if (path.isVariableDeclaration()) {\n      const declarators: Array<NodePath> = path.get(\"declarations\");\n      for (const declar of declarators) {\n        this.registerBinding(kind, declar);\n      }\n      return;\n    }\n\n    const parent = this.getProgramParent();\n    const ids = path.getOuterBindingIdentifiers(true);\n\n    for (const name of Object.keys(ids)) {\n      parent.references[name] = true;\n\n      for (const id of ids[name]) {\n        const local = this.getOwnBinding(name);\n\n        if (local) {\n          // same identifier so continue safely as we're likely trying to register it\n          // multiple times\n          if (local.identifier === id) continue;\n\n          this.checkBlockScopedCollisions(local, kind, name, id);\n        }\n\n        // A redeclaration of an existing variable is a modification\n        if (local) {\n          local.reassign(bindingPath);\n        } else {\n          this.bindings[name] = new Binding({\n            identifier: id,\n            scope: this,\n            path: bindingPath,\n            kind: kind,\n          });\n        }\n      }\n    }\n  }\n\n  addGlobal(node: t.Identifier | t.JSXIdentifier) {\n    this.globals[node.name] = node;\n  }\n\n  hasUid(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.uids[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasGlobal(name: string): boolean {\n    let scope: Scope = this;\n\n    do {\n      if (scope.globals[name]) return true;\n    } while ((scope = scope.parent));\n\n    return false;\n  }\n\n  hasReference(name: string): boolean {\n    return !!this.getProgramParent().references[name];\n  }\n\n  isPure(node: t.Node, constantsOnly?: boolean): boolean {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (!binding) return false;\n      if (constantsOnly) return binding.constant;\n      return true;\n    } else if (\n      isThisExpression(node) ||\n      isMetaProperty(node) ||\n      isTopicReference(node) ||\n      isPrivateName(node)\n    ) {\n      return true;\n    } else if (isClass(node)) {\n      if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {\n        return false;\n      }\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return this.isPure(node.body, constantsOnly);\n    } else if (isClassBody(node)) {\n      for (const method of node.body) {\n        if (!this.isPure(method, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isBinary(node)) {\n      return (\n        this.isPure(node.left, constantsOnly) &&\n        this.isPure(node.right, constantsOnly)\n      );\n    } else if (isArrayExpression(node) || isTupleExpression(node)) {\n      for (const elem of node.elements) {\n        if (elem !== null && !this.isPure(elem, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isObjectExpression(node) || isRecordExpression(node)) {\n      for (const prop of node.properties) {\n        if (!this.isPure(prop, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isMethod(node)) {\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      return true;\n    } else if (isProperty(node)) {\n      // @ts-expect-error todo(flow->ts): computed in not present on private properties\n      if (node.computed && !this.isPure(node.key, constantsOnly)) return false;\n      if (node.decorators?.length > 0) {\n        return false;\n      }\n      if (isObjectProperty(node) || node.static) {\n        if (node.value !== null && !this.isPure(node.value, constantsOnly)) {\n          return false;\n        }\n      }\n      return true;\n    } else if (isUnaryExpression(node)) {\n      return this.isPure(node.argument, constantsOnly);\n    } else if (isTemplateLiteral(node)) {\n      for (const expression of node.expressions) {\n        if (!this.isPure(expression, constantsOnly)) return false;\n      }\n      return true;\n    } else if (isTaggedTemplateExpression(node)) {\n      return (\n        matchesPattern(node.tag, \"String.raw\") &&\n        !this.hasBinding(\"String\", { noGlobals: true }) &&\n        this.isPure(node.quasi, constantsOnly)\n      );\n    } else if (isMemberExpression(node)) {\n      return (\n        !node.computed &&\n        isIdentifier(node.object) &&\n        node.object.name === \"Symbol\" &&\n        isIdentifier(node.property) &&\n        node.property.name !== \"for\" &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true })\n      );\n    } else if (isCallExpression(node)) {\n      return (\n        matchesPattern(node.callee, \"Symbol.for\") &&\n        !this.hasBinding(\"Symbol\", { noGlobals: true }) &&\n        node.arguments.length === 1 &&\n        t.isStringLiteral(node.arguments[0])\n      );\n    } else {\n      return isPureish(node);\n    }\n  }\n\n  /**\n   * Set some arbitrary data on the current scope.\n   */\n\n  setData(key: string | symbol, val: any) {\n    return (this.data[key] = val);\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key`.\n   */\n\n  getData(key: string | symbol): any {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) return data;\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Recursively walk up scope tree looking for the data `key` and if it exists,\n   * remove it.\n   */\n\n  removeData(key: string) {\n    let scope: Scope = this;\n    do {\n      const data = scope.data[key];\n      if (data != null) scope.data[key] = null;\n    } while ((scope = scope.parent));\n  }\n\n  init() {\n    if (!this.inited) {\n      this.inited = true;\n      this.crawl();\n    }\n  }\n\n  crawl() {\n    const path = this.path;\n\n    this.references = Object.create(null);\n    this.bindings = Object.create(null);\n    this.globals = Object.create(null);\n    this.uids = Object.create(null);\n    this.data = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      if (scope.crawling) return;\n      if (scope.path.isProgram()) {\n        break;\n      }\n    } while ((scope = scope.parent));\n\n    const programParent = scope;\n\n    const state: CollectVisitorState = {\n      references: [],\n      constantViolations: [],\n      assignments: [],\n    };\n\n    this.crawling = true;\n    // traverse does not visit the root node, here we explicitly collect\n    // root node binding info when the root is not a Program.\n    if (path.type !== \"Program\" && isExplodedVisitor(collectorVisitor)) {\n      for (const visit of collectorVisitor.enter) {\n        visit.call(state, path, state);\n      }\n      const typeVisitors = collectorVisitor[path.type];\n      if (typeVisitors) {\n        for (const visit of typeVisitors.enter) {\n          visit.call(state, path, state);\n        }\n      }\n    }\n    path.traverse(collectorVisitor, state);\n    this.crawling = false;\n\n    // register assignments\n    for (const path of state.assignments) {\n      // register undeclared bindings as globals\n      const ids = path.getAssignmentIdentifiers();\n      for (const name of Object.keys(ids)) {\n        if (path.scope.getBinding(name)) continue;\n        programParent.addGlobal(ids[name]);\n      }\n\n      // register as constant violation\n      path.scope.registerConstantViolation(path);\n    }\n\n    // register references\n    for (const ref of state.references) {\n      const binding = ref.scope.getBinding(ref.node.name);\n      if (binding) {\n        binding.reference(ref);\n      } else {\n        programParent.addGlobal(ref.node);\n      }\n    }\n\n    // register constant violations\n    for (const path of state.constantViolations) {\n      path.scope.registerConstantViolation(path);\n    }\n  }\n\n  push(opts: {\n    id: t.ArrayPattern | t.Identifier | t.ObjectPattern;\n    init?: t.Expression;\n    unique?: boolean;\n    _blockHoist?: number | undefined;\n    kind?: \"var\" | \"let\" | \"const\";\n  }) {\n    let path = this.path;\n\n    if (path.isPattern()) {\n      path = this.getPatternParent().path;\n    } else if (!path.isBlockStatement() && !path.isProgram()) {\n      path = this.getBlockParent().path;\n    }\n\n    if (path.isSwitchStatement()) {\n      path = (this.getFunctionParent() || this.getProgramParent()).path;\n    }\n\n    const { init, unique, kind = \"var\", id } = opts;\n\n    // When injecting a non-const non-initialized binding inside\n    // an IIFE, if the number of call arguments is less than or\n    // equal to the number of function parameters, we can safely\n    // inject the binding into the parameter list.\n    if (\n      !init &&\n      !unique &&\n      (kind === \"var\" || kind === \"let\") &&\n      path.isFunction() &&\n      // @ts-expect-error ArrowFunctionExpression never has a name\n      !path.node.name &&\n      isCallExpression(path.parent, { callee: path.node }) &&\n      path.parent.arguments.length <= path.node.params.length &&\n      isIdentifier(id)\n    ) {\n      path.pushContainer(\"params\", id);\n      path.scope.registerBinding(\n        \"param\",\n        path.get(\"params\")[path.node.params.length - 1],\n      );\n      return;\n    }\n\n    if (path.isLoop() || path.isCatchClause() || path.isFunction()) {\n      path.ensureBlock();\n      path = path.get(\"body\");\n    }\n\n    const blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;\n\n    const dataKey = `declaration:${kind}:${blockHoist}`;\n    let declarPath = !unique && path.getData(dataKey);\n\n    if (!declarPath) {\n      const declar = variableDeclaration(kind, []);\n      // @ts-expect-error todo(flow->ts): avoid modifying nodes\n      declar._blockHoist = blockHoist;\n\n      [declarPath] = (path as NodePath<t.BlockStatement>).unshiftContainer(\n        \"body\",\n        [declar],\n      );\n      if (!unique) path.setData(dataKey, declarPath);\n    }\n\n    const declarator = variableDeclarator(id, init);\n    const len = declarPath.node.declarations.push(declarator);\n    path.scope.registerBinding(kind, declarPath.get(\"declarations\")[len - 1]);\n  }\n\n  /**\n   * Walk up to the top of the scope tree and get the `Program`.\n   */\n\n  getProgramParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isProgram()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\"Couldn't find a Program\");\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a Function or return null.\n   */\n\n  getFunctionParent(): Scope | null {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isFunctionParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    return null;\n  }\n\n  /**\n   * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the\n   * very top and hit Program.\n   */\n\n  getBlockParent() {\n    let scope: Scope = this;\n    do {\n      if (scope.path.isBlockParent()) {\n        return scope;\n      }\n    } while ((scope = scope.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walk up from a pattern scope (function param initializer) until we hit a non-pattern scope,\n   * then returns its block parent\n   * @returns An ancestry scope whose path is a block parent\n   */\n  getPatternParent() {\n    let scope: Scope = this;\n    do {\n      if (!scope.path.isPattern()) {\n        return scope.getBlockParent();\n      }\n    } while ((scope = scope.parent.parent));\n    throw new Error(\n      \"We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...\",\n    );\n  }\n\n  /**\n   * Walks the scope tree and gathers **all** bindings.\n   */\n\n  getAllBindings(): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    let scope: Scope = this;\n    do {\n      for (const key of Object.keys(scope.bindings)) {\n        if (key in ids === false) {\n          ids[key] = scope.bindings[key];\n        }\n      }\n      scope = scope.parent;\n    } while (scope);\n\n    return ids;\n  }\n\n  bindingIdentifierEquals(name: string, node: t.Node): boolean {\n    return this.getBindingIdentifier(name) === node;\n  }\n\n  getBinding(name: string): Binding | undefined {\n    let scope: Scope = this;\n    let previousPath;\n\n    do {\n      const binding = scope.getOwnBinding(name);\n      if (binding) {\n        // Check if a pattern is a part of parameter expressions.\n        // Note: for performance reason we skip checking previousPath.parentPath.isFunction()\n        // because `scope.path` is validated as scope in packages/babel-types/src/validators/isScope.js\n        // That is, if a scope path is pattern, its parent must be Function/CatchClause\n\n        // Spec 9.2.10.28: The closure created by this expression should not have visibility of\n        // declarations in the function body. If the binding is not a `param`-kind (as function parameters)\n        // or `local`-kind (as id in function expression),\n        // then it must be defined inside the function body, thus it should be skipped\n        if (\n          previousPath?.isPattern() &&\n          binding.kind !== \"param\" &&\n          binding.kind !== \"local\"\n        ) {\n          // do nothing\n        } else {\n          return binding;\n        }\n      } else if (\n        !binding &&\n        name === \"arguments\" &&\n        scope.path.isFunction() &&\n        !scope.path.isArrowFunctionExpression()\n      ) {\n        break;\n      }\n      previousPath = scope.path;\n    } while ((scope = scope.parent));\n  }\n\n  getOwnBinding(name: string): Binding | undefined {\n    return this.bindings[name];\n  }\n\n  // todo: return probably can be undefined…\n  getBindingIdentifier(name: string): t.Identifier {\n    return this.getBinding(name)?.identifier;\n  }\n\n  // todo: flow->ts return probably can be undefined\n  getOwnBindingIdentifier(name: string): t.Identifier {\n    const binding = this.bindings[name];\n    return binding?.identifier;\n  }\n\n  hasOwnBinding(name: string) {\n    return !!this.getOwnBinding(name);\n  }\n\n  // By default, we consider generated UIDs as bindings.\n  // This is because they are almost always used to declare variables,\n  // and since the scope isn't always up-to-date it's better to assume that\n  // there is a variable with that name. The `noUids` option can be used to\n  // turn off this behavior, for example if you know that the generate UID\n  // was used to declare a variable in a different scope.\n  hasBinding(\n    name: string,\n    opts?: boolean | { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    if (!name) return false;\n    let scope: Scope = this;\n    do {\n      if (scope.hasOwnBinding(name)) {\n        return true;\n      }\n    } while ((scope = scope.parent));\n\n    // TODO: Only accept the object form.\n    let noGlobals;\n    let noUids;\n    if (typeof opts === \"object\") {\n      noGlobals = opts.noGlobals;\n      noUids = opts.noUids;\n    } else if (typeof opts === \"boolean\") {\n      noGlobals = opts;\n    }\n\n    if (!noUids && this.hasUid(name)) return true;\n    if (!noGlobals && Scope.globals.includes(name)) return true;\n    if (!noGlobals && Scope.contextVariables.includes(name)) return true;\n    return false;\n  }\n\n  parentHasBinding(\n    name: string,\n    opts?: { noGlobals?: boolean; noUids?: boolean },\n  ) {\n    return this.parent?.hasBinding(name, opts);\n  }\n\n  /**\n   * Move a binding of `name` to another `scope`.\n   */\n\n  moveBindingTo(name: string, scope: Scope) {\n    const info = this.getBinding(name);\n    if (info) {\n      info.scope.removeOwnBinding(name);\n      info.scope = scope;\n      scope.bindings[name] = info;\n    }\n  }\n\n  removeOwnBinding(name: string) {\n    delete this.bindings[name];\n  }\n\n  removeBinding(name: string) {\n    // clear literal binding\n    this.getBinding(name)?.scope.removeOwnBinding(name);\n\n    // clear uids with this name - https://github.com/babel/babel/issues/2101\n    let scope: Scope = this;\n    do {\n      if (scope.uids[name]) {\n        scope.uids[name] = false;\n      }\n    } while ((scope = scope.parent));\n  }\n\n  /**\n   * Hoist all the `var` variable to the beginning of the function/program\n   * scope where their binding will be actually defined. For exmaple,\n   *     { var x = 2 }\n   * will be transformed to\n   *     var x; { x = 2 }\n   *\n   * @param emit A custom function to emit `var` declarations, for example to\n   *   emit them in a different scope.\n   */\n  hoistVariables(\n    emit: (id: t.Identifier, hasInit: boolean) => void = id =>\n      this.push({ id }),\n  ) {\n    this.crawl();\n\n    const seen = new Set();\n    for (const name of Object.keys(this.bindings)) {\n      const binding = this.bindings[name];\n      if (!binding) continue;\n      const { path } = binding;\n      if (!path.isVariableDeclarator()) continue;\n      const { parent, parentPath } = path;\n\n      if (parent.kind !== \"var\" || seen.has(parent)) continue;\n      seen.add(path.parent);\n\n      let firstId;\n      const init = [];\n      for (const decl of parent.declarations) {\n        firstId ??= decl.id;\n        if (decl.init) {\n          init.push(assignmentExpression(\"=\", decl.id, decl.init));\n        }\n\n        const ids = Object.keys(getBindingIdentifiers(decl, false, true, true));\n        for (const name of ids) {\n          emit(identifier(name), decl.init != null);\n        }\n      }\n\n      // for (var i in test)\n      if (parentPath.parentPath.isFor({ left: parent })) {\n        parentPath.replaceWith(firstId);\n      } else if (init.length === 0) {\n        parentPath.remove();\n      } else {\n        const expr = init.length === 1 ? init[0] : sequenceExpression(init);\n        if (parentPath.parentPath.isForStatement({ init: parent })) {\n          parentPath.replaceWith(expr);\n        } else {\n          parentPath.replaceWith(expressionStatement(expr));\n        }\n      }\n    }\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /** @deprecated Not used in our codebase */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._renameFromMap = function _renameFromMap(\n    map: Record<string | symbol, unknown>,\n    oldName: string | symbol,\n    newName: string | symbol,\n    value: unknown,\n  ) {\n    if (map[oldName]) {\n      map[newName] = value;\n      map[oldName] = null;\n    }\n  };\n\n  /**\n   * Traverse node with current scope and path.\n   *\n   * !!! WARNING !!!\n   * This method assumes that `this.path` is the NodePath representing `node`.\n   * After running the traversal, the `.parentPath` of the NodePaths\n   * corresponding to `node`'s children will be set to `this.path`.\n   *\n   * There is no good reason to use this method, since the only safe way to use\n   * it is equivalent to `scope.path.traverse(opts, state)`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.traverse = function <S>(\n    this: Scope,\n    node: any,\n    opts: any,\n    state?: S,\n  ) {\n    traverse(node, opts, this, state, this.path);\n  };\n\n  /**\n   * Generate an `_id1`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype._generateUid = function _generateUid(\n    name: string,\n    i: number,\n  ) {\n    let id = name;\n    if (i > 1) id += i;\n    return `_${id}`;\n  };\n\n  // TODO: (Babel 8) Split i in two parameters, and use an object of flags\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.toArray = function toArray(\n    this: Scope,\n    node: t.Node,\n    i?: number | boolean,\n    arrayLikeIsIterable?: boolean | void,\n  ) {\n    if (isIdentifier(node)) {\n      const binding = this.getBinding(node.name);\n      if (binding?.constant && binding.path.isGenericType(\"Array\")) {\n        return node;\n      }\n    }\n\n    if (isArrayExpression(node)) {\n      return node;\n    }\n\n    if (isIdentifier(node, { name: \"arguments\" })) {\n      return callExpression(\n        memberExpression(\n          memberExpression(\n            memberExpression(identifier(\"Array\"), identifier(\"prototype\")),\n            identifier(\"slice\"),\n          ),\n          identifier(\"call\"),\n        ),\n        [node],\n      );\n    }\n\n    let helperName;\n    const args = [node];\n    if (i === true) {\n      // Used in array-spread to create an array.\n      helperName = \"toConsumableArray\";\n    } else if (typeof i === \"number\") {\n      args.push(numericLiteral(i));\n\n      // Used in array-rest to create an array from a subset of an iterable.\n      helperName = \"slicedToArray\";\n      // TODO if (this.hub.isLoose(\"es6.forOf\")) helperName += \"-loose\";\n    } else {\n      // Used in array-rest to create an array\n      helperName = \"toArray\";\n    }\n\n    if (arrayLikeIsIterable) {\n      args.unshift(this.path.hub.addHelper(helperName));\n      helperName = \"maybeArrayLike\";\n    }\n\n    // @ts-expect-error todo(flow->ts): t.Node is not valid to use in args, function argument typeneeds to be clarified\n    return callExpression(this.path.hub.addHelper(helperName), args);\n  };\n\n  /**\n   * Walks the scope tree and gathers all declarations of `kind`.\n   */\n  // @ts-expect-error Babel 7 compatibility\n  Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind(\n    ...kinds: string[]\n  ): Record<string, Binding> {\n    const ids = Object.create(null);\n\n    for (const kind of kinds) {\n      let scope: Scope = this;\n      do {\n        for (const name of Object.keys(scope.bindings)) {\n          const binding = scope.bindings[name];\n          if (binding.kind === kind) ids[name] = binding;\n        }\n        scope = scope.parent;\n      } while (scope);\n    }\n\n    return ids;\n  };\n\n  Object.defineProperties(Scope.prototype, {\n    parentBlock: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.parent;\n      },\n    },\n    hub: {\n      configurable: true,\n      enumerable: true,\n      get(this: Scope) {\n        return this.path.hub;\n      },\n    },\n  });\n}\n\ntype _Binding = Binding;\n// eslint-disable-next-line @typescript-eslint/no-namespace\nnamespace Scope {\n  export type Binding = _Binding;\n}\n","type Key = string | number | symbol;\n\n/**\n * SetArray acts like a `Set` (allowing only one occurrence of a string `key`), but provides the\n * index of the `key` in the backing array.\n *\n * This is designed to allow synchronizing a second array with the contents of the backing array,\n * like how in a sourcemap `sourcesContent[i]` is the source content associated with `source[i]`,\n * and there are never duplicates.\n */\nexport class SetArray<T extends Key = Key> {\n  private declare _indexes: Record<T, number | undefined>;\n  declare array: readonly T[];\n\n  constructor() {\n    this._indexes = { __proto__: null } as any;\n    this.array = [];\n  }\n}\n\ninterface PublicSet<T extends Key> {\n  array: T[];\n  _indexes: SetArray<T>['_indexes'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the set into a type\n * with public access modifiers.\n */\nfunction cast<T extends Key>(set: SetArray<T>): PublicSet<T> {\n  return set as any;\n}\n\n/**\n * Gets the index associated with `key` in the backing array, if it is already present.\n */\nexport function get<T extends Key>(setarr: SetArray<T>, key: T): number | undefined {\n  return cast(setarr)._indexes[key];\n}\n\n/**\n * Puts `key` into the backing array, if it is not already present. Returns\n * the index of the `key` in the backing array.\n */\nexport function put<T extends Key>(setarr: SetArray<T>, key: T): number {\n  // The key may or may not be present. If it is present, it's a number.\n  const index = get(setarr, key);\n  if (index !== undefined) return index;\n\n  const { array, _indexes: indexes } = cast(setarr);\n\n  const length = array.push(key);\n  return (indexes[key] = length - 1);\n}\n\n/**\n * Pops the last added item out of the SetArray.\n */\nexport function pop<T extends Key>(setarr: SetArray<T>): void {\n  const { array, _indexes: indexes } = cast(setarr);\n  if (array.length === 0) return;\n\n  const last = array.pop()!;\n  indexes[last] = undefined;\n}\n\n/**\n * Removes the key, if it exists in the set.\n */\nexport function remove<T extends Key>(setarr: SetArray<T>, key: T): void {\n  const index = get(setarr, key);\n  if (index === undefined) return;\n\n  const { array, _indexes: indexes } = cast(setarr);\n  for (let i = index + 1; i < array.length; i++) {\n    const k = array[i];\n    array[i - 1] = k;\n    indexes[k]!--;\n  }\n  indexes[key] = undefined;\n  array.pop();\n}\n","export type SourceMapSegment =\n  | [number]\n  | [number, number, number, number]\n  | [number, number, number, number, number];\nexport type SourceMapLine = SourceMapSegment[];\nexport type SourceMapMappings = SourceMapLine[];\n\nconst comma = ','.charCodeAt(0);\nconst semicolon = ';'.charCodeAt(0);\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst intToChar = new Uint8Array(64); // 64 possible chars.\nconst charToInt = new Uint8Array(128); // z is 122 in ASCII\n\nfor (let i = 0; i < chars.length; i++) {\n  const c = chars.charCodeAt(i);\n  intToChar[i] = c;\n  charToInt[c] = i;\n}\n\n// Provide a fallback for older environments.\nconst td =\n  typeof TextDecoder !== 'undefined'\n    ? /* #__PURE__ */ new TextDecoder()\n    : typeof Buffer !== 'undefined'\n    ? {\n        decode(buf: Uint8Array) {\n          const out = Buffer.from(buf.buffer, buf.byteOffset, buf.byteLength);\n          return out.toString();\n        },\n      }\n    : {\n        decode(buf: Uint8Array) {\n          let out = '';\n          for (let i = 0; i < buf.length; i++) {\n            out += String.fromCharCode(buf[i]);\n          }\n          return out;\n        },\n      };\n\nexport function decode(mappings: string): SourceMapMappings {\n  const state: [number, number, number, number, number] = new Int32Array(5) as any;\n  const decoded: SourceMapMappings = [];\n\n  let index = 0;\n  do {\n    const semi = indexOf(mappings, index);\n    const line: SourceMapLine = [];\n    let sorted = true;\n    let lastCol = 0;\n    state[0] = 0;\n\n    for (let i = index; i < semi; i++) {\n      let seg: SourceMapSegment;\n\n      i = decodeInteger(mappings, i, state, 0); // genColumn\n      const col = state[0];\n      if (col < lastCol) sorted = false;\n      lastCol = col;\n\n      if (hasMoreVlq(mappings, i, semi)) {\n        i = decodeInteger(mappings, i, state, 1); // sourcesIndex\n        i = decodeInteger(mappings, i, state, 2); // sourceLine\n        i = decodeInteger(mappings, i, state, 3); // sourceColumn\n\n        if (hasMoreVlq(mappings, i, semi)) {\n          i = decodeInteger(mappings, i, state, 4); // namesIndex\n          seg = [col, state[1], state[2], state[3], state[4]];\n        } else {\n          seg = [col, state[1], state[2], state[3]];\n        }\n      } else {\n        seg = [col];\n      }\n\n      line.push(seg);\n    }\n\n    if (!sorted) sort(line);\n    decoded.push(line);\n    index = semi + 1;\n  } while (index <= mappings.length);\n\n  return decoded;\n}\n\nfunction indexOf(mappings: string, index: number): number {\n  const idx = mappings.indexOf(';', index);\n  return idx === -1 ? mappings.length : idx;\n}\n\nfunction decodeInteger(mappings: string, pos: number, state: SourceMapSegment, j: number): number {\n  let value = 0;\n  let shift = 0;\n  let integer = 0;\n\n  do {\n    const c = mappings.charCodeAt(pos++);\n    integer = charToInt[c];\n    value |= (integer & 31) << shift;\n    shift += 5;\n  } while (integer & 32);\n\n  const shouldNegate = value & 1;\n  value >>>= 1;\n\n  if (shouldNegate) {\n    value = -0x80000000 | -value;\n  }\n\n  state[j] += value;\n  return pos;\n}\n\nfunction hasMoreVlq(mappings: string, i: number, length: number): boolean {\n  if (i >= length) return false;\n  return mappings.charCodeAt(i) !== comma;\n}\n\nfunction sort(line: SourceMapSegment[]) {\n  line.sort(sortComparator);\n}\n\nfunction sortComparator(a: SourceMapSegment, b: SourceMapSegment): number {\n  return a[0] - b[0];\n}\n\nexport function encode(decoded: SourceMapMappings): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string;\nexport function encode(decoded: Readonly<SourceMapMappings>): string {\n  const state: [number, number, number, number, number] = new Int32Array(5) as any;\n  const bufLength = 1024 * 16;\n  const subLength = bufLength - 36;\n  const buf = new Uint8Array(bufLength);\n  const sub = buf.subarray(0, subLength);\n  let pos = 0;\n  let out = '';\n\n  for (let i = 0; i < decoded.length; i++) {\n    const line = decoded[i];\n    if (i > 0) {\n      if (pos === bufLength) {\n        out += td.decode(buf);\n        pos = 0;\n      }\n      buf[pos++] = semicolon;\n    }\n    if (line.length === 0) continue;\n\n    state[0] = 0;\n\n    for (let j = 0; j < line.length; j++) {\n      const segment = line[j];\n      // We can push up to 5 ints, each int can take at most 7 chars, and we\n      // may push a comma.\n      if (pos > subLength) {\n        out += td.decode(sub);\n        buf.copyWithin(0, subLength, pos);\n        pos -= subLength;\n      }\n      if (j > 0) buf[pos++] = comma;\n\n      pos = encodeInteger(buf, pos, state, segment, 0); // genColumn\n\n      if (segment.length === 1) continue;\n      pos = encodeInteger(buf, pos, state, segment, 1); // sourcesIndex\n      pos = encodeInteger(buf, pos, state, segment, 2); // sourceLine\n      pos = encodeInteger(buf, pos, state, segment, 3); // sourceColumn\n\n      if (segment.length === 4) continue;\n      pos = encodeInteger(buf, pos, state, segment, 4); // namesIndex\n    }\n  }\n\n  return out + td.decode(buf.subarray(0, pos));\n}\n\nfunction encodeInteger(\n  buf: Uint8Array,\n  pos: number,\n  state: SourceMapSegment,\n  segment: SourceMapSegment,\n  j: number,\n): number {\n  const next = segment[j];\n  let num = next - state[j];\n  state[j] = next;\n\n  num = num < 0 ? (-num << 1) | 1 : num << 1;\n  do {\n    let clamped = num & 0b011111;\n    num >>>= 5;\n    if (num > 0) clamped |= 0b100000;\n    buf[pos++] = intToChar[clamped];\n  } while (num > 0);\n\n  return pos;\n}\n","// Matches the scheme of a URL, eg \"http://\"\nconst schemeRegex = /^[\\w+.-]+:\\/\\//;\n\n/**\n * Matches the parts of a URL:\n * 1. Scheme, including \":\", guaranteed.\n * 2. User/password, including \"@\", optional.\n * 3. Host, guaranteed.\n * 4. Port, including \":\", optional.\n * 5. Path, including \"/\", optional.\n * 6. Query, including \"?\", optional.\n * 7. Hash, including \"#\", optional.\n */\nconst urlRegex = /^([\\w+.-]+:)\\/\\/([^@/#?]*@)?([^:/#?]*)(:\\d+)?(\\/[^#?]*)?(\\?[^#]*)?(#.*)?/;\n\n/**\n * File URLs are weird. They dont' need the regular `//` in the scheme, they may or may not start\n * with a leading `/`, they can have a domain (but only if they don't start with a Windows drive).\n *\n * 1. Host, optional.\n * 2. Path, which may include \"/\", guaranteed.\n * 3. Query, including \"?\", optional.\n * 4. Hash, including \"#\", optional.\n */\nconst fileRegex = /^file:(?:\\/\\/((?![a-z]:)[^/#?]*)?)?(\\/?[^#?]*)(\\?[^#]*)?(#.*)?/i;\n\ntype Url = {\n  scheme: string;\n  user: string;\n  host: string;\n  port: string;\n  path: string;\n  query: string;\n  hash: string;\n  type: UrlType;\n};\n\nenum UrlType {\n  Empty = 1,\n  Hash = 2,\n  Query = 3,\n  RelativePath = 4,\n  AbsolutePath = 5,\n  SchemeRelative = 6,\n  Absolute = 7,\n}\n\nfunction isAbsoluteUrl(input: string): boolean {\n  return schemeRegex.test(input);\n}\n\nfunction isSchemeRelativeUrl(input: string): boolean {\n  return input.startsWith('//');\n}\n\nfunction isAbsolutePath(input: string): boolean {\n  return input.startsWith('/');\n}\n\nfunction isFileUrl(input: string): boolean {\n  return input.startsWith('file:');\n}\n\nfunction isRelative(input: string): boolean {\n  return /^[.?#]/.test(input);\n}\n\nfunction parseAbsoluteUrl(input: string): Url {\n  const match = urlRegex.exec(input)!;\n  return makeUrl(\n    match[1],\n    match[2] || '',\n    match[3],\n    match[4] || '',\n    match[5] || '/',\n    match[6] || '',\n    match[7] || '',\n  );\n}\n\nfunction parseFileUrl(input: string): Url {\n  const match = fileRegex.exec(input)!;\n  const path = match[2];\n  return makeUrl(\n    'file:',\n    '',\n    match[1] || '',\n    '',\n    isAbsolutePath(path) ? path : '/' + path,\n    match[3] || '',\n    match[4] || '',\n  );\n}\n\nfunction makeUrl(\n  scheme: string,\n  user: string,\n  host: string,\n  port: string,\n  path: string,\n  query: string,\n  hash: string,\n): Url {\n  return {\n    scheme,\n    user,\n    host,\n    port,\n    path,\n    query,\n    hash,\n    type: UrlType.Absolute,\n  };\n}\n\nfunction parseUrl(input: string): Url {\n  if (isSchemeRelativeUrl(input)) {\n    const url = parseAbsoluteUrl('http:' + input);\n    url.scheme = '';\n    url.type = UrlType.SchemeRelative;\n    return url;\n  }\n\n  if (isAbsolutePath(input)) {\n    const url = parseAbsoluteUrl('http://foo.com' + input);\n    url.scheme = '';\n    url.host = '';\n    url.type = UrlType.AbsolutePath;\n    return url;\n  }\n\n  if (isFileUrl(input)) return parseFileUrl(input);\n\n  if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);\n\n  const url = parseAbsoluteUrl('http://foo.com/' + input);\n  url.scheme = '';\n  url.host = '';\n  url.type = input\n    ? input.startsWith('?')\n      ? UrlType.Query\n      : input.startsWith('#')\n      ? UrlType.Hash\n      : UrlType.RelativePath\n    : UrlType.Empty;\n  return url;\n}\n\nfunction stripPathFilename(path: string): string {\n  // If a path ends with a parent directory \"..\", then it's a relative path with excess parent\n  // paths. It's not a file, so we can't strip it.\n  if (path.endsWith('/..')) return path;\n  const index = path.lastIndexOf('/');\n  return path.slice(0, index + 1);\n}\n\nfunction mergePaths(url: Url, base: Url) {\n  normalizePath(base, base.type);\n\n  // If the path is just a \"/\", then it was an empty path to begin with (remember, we're a relative\n  // path).\n  if (url.path === '/') {\n    url.path = base.path;\n  } else {\n    // Resolution happens relative to the base path's directory, not the file.\n    url.path = stripPathFilename(base.path) + url.path;\n  }\n}\n\n/**\n * The path can have empty directories \"//\", unneeded parents \"foo/..\", or current directory\n * \"foo/.\". We need to normalize to a standard representation.\n */\nfunction normalizePath(url: Url, type: UrlType) {\n  const rel = type <= UrlType.RelativePath;\n  const pieces = url.path.split('/');\n\n  // We need to preserve the first piece always, so that we output a leading slash. The item at\n  // pieces[0] is an empty string.\n  let pointer = 1;\n\n  // Positive is the number of real directories we've output, used for popping a parent directory.\n  // Eg, \"foo/bar/..\" will have a positive 2, and we can decrement to be left with just \"foo\".\n  let positive = 0;\n\n  // We need to keep a trailing slash if we encounter an empty directory (eg, splitting \"foo/\" will\n  // generate `[\"foo\", \"\"]` pieces). And, if we pop a parent directory. But once we encounter a\n  // real directory, we won't need to append, unless the other conditions happen again.\n  let addTrailingSlash = false;\n\n  for (let i = 1; i < pieces.length; i++) {\n    const piece = pieces[i];\n\n    // An empty directory, could be a trailing slash, or just a double \"//\" in the path.\n    if (!piece) {\n      addTrailingSlash = true;\n      continue;\n    }\n\n    // If we encounter a real directory, then we don't need to append anymore.\n    addTrailingSlash = false;\n\n    // A current directory, which we can always drop.\n    if (piece === '.') continue;\n\n    // A parent directory, we need to see if there are any real directories we can pop. Else, we\n    // have an excess of parents, and we'll need to keep the \"..\".\n    if (piece === '..') {\n      if (positive) {\n        addTrailingSlash = true;\n        positive--;\n        pointer--;\n      } else if (rel) {\n        // If we're in a relativePath, then we need to keep the excess parents. Else, in an absolute\n        // URL, protocol relative URL, or an absolute path, we don't need to keep excess.\n        pieces[pointer++] = piece;\n      }\n      continue;\n    }\n\n    // We've encountered a real directory. Move it to the next insertion pointer, which accounts for\n    // any popped or dropped directories.\n    pieces[pointer++] = piece;\n    positive++;\n  }\n\n  let path = '';\n  for (let i = 1; i < pointer; i++) {\n    path += '/' + pieces[i];\n  }\n  if (!path || (addTrailingSlash && !path.endsWith('/..'))) {\n    path += '/';\n  }\n  url.path = path;\n}\n\n/**\n * Attempts to resolve `input` URL/path relative to `base`.\n */\nexport default function resolve(input: string, base: string | undefined): string {\n  if (!input && !base) return '';\n\n  const url = parseUrl(input);\n  let inputType = url.type;\n\n  if (base && inputType !== UrlType.Absolute) {\n    const baseUrl = parseUrl(base);\n    const baseType = baseUrl.type;\n\n    switch (inputType) {\n      case UrlType.Empty:\n        url.hash = baseUrl.hash;\n      // fall through\n\n      case UrlType.Hash:\n        url.query = baseUrl.query;\n      // fall through\n\n      case UrlType.Query:\n      case UrlType.RelativePath:\n        mergePaths(url, baseUrl);\n      // fall through\n\n      case UrlType.AbsolutePath:\n        // The host, user, and port are joined, you can't copy one without the others.\n        url.user = baseUrl.user;\n        url.host = baseUrl.host;\n        url.port = baseUrl.port;\n      // fall through\n\n      case UrlType.SchemeRelative:\n        // The input doesn't have a schema at least, so we need to copy at least that over.\n        url.scheme = baseUrl.scheme;\n    }\n    if (baseType > inputType) inputType = baseType;\n  }\n\n  normalizePath(url, inputType);\n\n  const queryHash = url.query + url.hash;\n  switch (inputType) {\n    // This is impossible, because of the empty checks at the start of the function.\n    // case UrlType.Empty:\n\n    case UrlType.Hash:\n    case UrlType.Query:\n      return queryHash;\n\n    case UrlType.RelativePath: {\n      // The first char is always a \"/\", and we need it to be relative.\n      const path = url.path.slice(1);\n\n      if (!path) return queryHash || '.';\n\n      if (isRelative(base || input) && !isRelative(path)) {\n        // If base started with a leading \".\", or there is no base and input started with a \".\",\n        // then we need to ensure that the relative path starts with a \".\". We don't know if\n        // relative starts with a \"..\", though, so check before prepending.\n        return './' + path + queryHash;\n      }\n\n      return path + queryHash;\n    }\n\n    case UrlType.AbsolutePath:\n      return url.path + queryHash;\n\n    default:\n      return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;\n  }\n}\n","(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@jridgewell/sourcemap-codec'), require('@jridgewell/resolve-uri')) :\n    typeof define === 'function' && define.amd ? define(['exports', '@jridgewell/sourcemap-codec', '@jridgewell/resolve-uri'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.traceMapping = {}, global.sourcemapCodec, global.resolveURI));\n})(this, (function (exports, sourcemapCodec, resolveUri) { 'use strict';\n\n    function resolve(input, base) {\n        // The base is always treated as a directory, if it's not empty.\n        // https://github.com/mozilla/source-map/blob/8cb3ee57/lib/util.js#L327\n        // https://github.com/chromium/chromium/blob/da4adbb3/third_party/blink/renderer/devtools/front_end/sdk/SourceMap.js#L400-L401\n        if (base && !base.endsWith('/'))\n            base += '/';\n        return resolveUri(input, base);\n    }\n\n    /**\n     * Removes everything after the last \"/\", but leaves the slash.\n     */\n    function stripFilename(path) {\n        if (!path)\n            return '';\n        const index = path.lastIndexOf('/');\n        return path.slice(0, index + 1);\n    }\n\n    const COLUMN = 0;\n    const SOURCES_INDEX = 1;\n    const SOURCE_LINE = 2;\n    const SOURCE_COLUMN = 3;\n    const NAMES_INDEX = 4;\n    const REV_GENERATED_LINE = 1;\n    const REV_GENERATED_COLUMN = 2;\n\n    function maybeSort(mappings, owned) {\n        const unsortedIndex = nextUnsortedSegmentLine(mappings, 0);\n        if (unsortedIndex === mappings.length)\n            return mappings;\n        // If we own the array (meaning we parsed it from JSON), then we're free to directly mutate it. If\n        // not, we do not want to modify the consumer's input array.\n        if (!owned)\n            mappings = mappings.slice();\n        for (let i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {\n            mappings[i] = sortSegments(mappings[i], owned);\n        }\n        return mappings;\n    }\n    function nextUnsortedSegmentLine(mappings, start) {\n        for (let i = start; i < mappings.length; i++) {\n            if (!isSorted(mappings[i]))\n                return i;\n        }\n        return mappings.length;\n    }\n    function isSorted(line) {\n        for (let j = 1; j < line.length; j++) {\n            if (line[j][COLUMN] < line[j - 1][COLUMN]) {\n                return false;\n            }\n        }\n        return true;\n    }\n    function sortSegments(line, owned) {\n        if (!owned)\n            line = line.slice();\n        return line.sort(sortComparator);\n    }\n    function sortComparator(a, b) {\n        return a[COLUMN] - b[COLUMN];\n    }\n\n    let found = false;\n    /**\n     * A binary search implementation that returns the index if a match is found.\n     * If no match is found, then the left-index (the index associated with the item that comes just\n     * before the desired index) is returned. To maintain proper sort order, a splice would happen at\n     * the next index:\n     *\n     * ```js\n     * const array = [1, 3];\n     * const needle = 2;\n     * const index = binarySearch(array, needle, (item, needle) => item - needle);\n     *\n     * assert.equal(index, 0);\n     * array.splice(index + 1, 0, needle);\n     * assert.deepEqual(array, [1, 2, 3]);\n     * ```\n     */\n    function binarySearch(haystack, needle, low, high) {\n        while (low <= high) {\n            const mid = low + ((high - low) >> 1);\n            const cmp = haystack[mid][COLUMN] - needle;\n            if (cmp === 0) {\n                found = true;\n                return mid;\n            }\n            if (cmp < 0) {\n                low = mid + 1;\n            }\n            else {\n                high = mid - 1;\n            }\n        }\n        found = false;\n        return low - 1;\n    }\n    function upperBound(haystack, needle, index) {\n        for (let i = index + 1; i < haystack.length; index = i++) {\n            if (haystack[i][COLUMN] !== needle)\n                break;\n        }\n        return index;\n    }\n    function lowerBound(haystack, needle, index) {\n        for (let i = index - 1; i >= 0; index = i--) {\n            if (haystack[i][COLUMN] !== needle)\n                break;\n        }\n        return index;\n    }\n    function memoizedState() {\n        return {\n            lastKey: -1,\n            lastNeedle: -1,\n            lastIndex: -1,\n        };\n    }\n    /**\n     * This overly complicated beast is just to record the last tested line/column and the resulting\n     * index, allowing us to skip a few tests if mappings are monotonically increasing.\n     */\n    function memoizedBinarySearch(haystack, needle, state, key) {\n        const { lastKey, lastNeedle, lastIndex } = state;\n        let low = 0;\n        let high = haystack.length - 1;\n        if (key === lastKey) {\n            if (needle === lastNeedle) {\n                found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;\n                return lastIndex;\n            }\n            if (needle >= lastNeedle) {\n                // lastIndex may be -1 if the previous needle was not found.\n                low = lastIndex === -1 ? 0 : lastIndex;\n            }\n            else {\n                high = lastIndex;\n            }\n        }\n        state.lastKey = key;\n        state.lastNeedle = needle;\n        return (state.lastIndex = binarySearch(haystack, needle, low, high));\n    }\n\n    // Rebuilds the original source files, with mappings that are ordered by source line/column instead\n    // of generated line/column.\n    function buildBySources(decoded, memos) {\n        const sources = memos.map(buildNullArray);\n        for (let i = 0; i < decoded.length; i++) {\n            const line = decoded[i];\n            for (let j = 0; j < line.length; j++) {\n                const seg = line[j];\n                if (seg.length === 1)\n                    continue;\n                const sourceIndex = seg[SOURCES_INDEX];\n                const sourceLine = seg[SOURCE_LINE];\n                const sourceColumn = seg[SOURCE_COLUMN];\n                const originalSource = sources[sourceIndex];\n                const originalLine = (originalSource[sourceLine] || (originalSource[sourceLine] = []));\n                const memo = memos[sourceIndex];\n                // The binary search either found a match, or it found the left-index just before where the\n                // segment should go. Either way, we want to insert after that. And there may be multiple\n                // generated segments associated with an original location, so there may need to move several\n                // indexes before we find where we need to insert.\n                let index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));\n                memo.lastIndex = ++index;\n                insert(originalLine, index, [sourceColumn, i, seg[COLUMN]]);\n            }\n        }\n        return sources;\n    }\n    function insert(array, index, value) {\n        for (let i = array.length; i > index; i--) {\n            array[i] = array[i - 1];\n        }\n        array[index] = value;\n    }\n    // Null arrays allow us to use ordered index keys without actually allocating contiguous memory like\n    // a real array. We use a null-prototype object to avoid prototype pollution and deoptimizations.\n    // Numeric properties on objects are magically sorted in ascending order by the engine regardless of\n    // the insertion order. So, by setting any numeric keys, even out of order, we'll get ascending\n    // order when iterating with for-in.\n    function buildNullArray() {\n        return { __proto__: null };\n    }\n\n    const AnyMap = function (map, mapUrl) {\n        const parsed = parse(map);\n        if (!('sections' in parsed)) {\n            return new TraceMap(parsed, mapUrl);\n        }\n        const mappings = [];\n        const sources = [];\n        const sourcesContent = [];\n        const names = [];\n        const ignoreList = [];\n        recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, ignoreList, 0, 0, Infinity, Infinity);\n        const joined = {\n            version: 3,\n            file: parsed.file,\n            names,\n            sources,\n            sourcesContent,\n            mappings,\n            ignoreList,\n        };\n        return presortedDecodedMap(joined);\n    };\n    function parse(map) {\n        return typeof map === 'string' ? JSON.parse(map) : map;\n    }\n    function recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {\n        const { sections } = input;\n        for (let i = 0; i < sections.length; i++) {\n            const { map, offset } = sections[i];\n            let sl = stopLine;\n            let sc = stopColumn;\n            if (i + 1 < sections.length) {\n                const nextOffset = sections[i + 1].offset;\n                sl = Math.min(stopLine, lineOffset + nextOffset.line);\n                if (sl === stopLine) {\n                    sc = Math.min(stopColumn, columnOffset + nextOffset.column);\n                }\n                else if (sl < stopLine) {\n                    sc = columnOffset + nextOffset.column;\n                }\n            }\n            addSection(map, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset + offset.line, columnOffset + offset.column, sl, sc);\n        }\n    }\n    function addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {\n        const parsed = parse(input);\n        if ('sections' in parsed)\n            return recurse(...arguments);\n        const map = new TraceMap(parsed, mapUrl);\n        const sourcesOffset = sources.length;\n        const namesOffset = names.length;\n        const decoded = decodedMappings(map);\n        const { resolvedSources, sourcesContent: contents, ignoreList: ignores } = map;\n        append(sources, resolvedSources);\n        append(names, map.names);\n        if (contents)\n            append(sourcesContent, contents);\n        else\n            for (let i = 0; i < resolvedSources.length; i++)\n                sourcesContent.push(null);\n        if (ignores)\n            for (let i = 0; i < ignores.length; i++)\n                ignoreList.push(ignores[i] + sourcesOffset);\n        for (let i = 0; i < decoded.length; i++) {\n            const lineI = lineOffset + i;\n            // We can only add so many lines before we step into the range that the next section's map\n            // controls. When we get to the last line, then we'll start checking the segments to see if\n            // they've crossed into the column range. But it may not have any columns that overstep, so we\n            // still need to check that we don't overstep lines, too.\n            if (lineI > stopLine)\n                return;\n            // The out line may already exist in mappings (if we're continuing the line started by a\n            // previous section). Or, we may have jumped ahead several lines to start this section.\n            const out = getLine(mappings, lineI);\n            // On the 0th loop, the section's column offset shifts us forward. On all other lines (since the\n            // map can be multiple lines), it doesn't.\n            const cOffset = i === 0 ? columnOffset : 0;\n            const line = decoded[i];\n            for (let j = 0; j < line.length; j++) {\n                const seg = line[j];\n                const column = cOffset + seg[COLUMN];\n                // If this segment steps into the column range that the next section's map controls, we need\n                // to stop early.\n                if (lineI === stopLine && column >= stopColumn)\n                    return;\n                if (seg.length === 1) {\n                    out.push([column]);\n                    continue;\n                }\n                const sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];\n                const sourceLine = seg[SOURCE_LINE];\n                const sourceColumn = seg[SOURCE_COLUMN];\n                out.push(seg.length === 4\n                    ? [column, sourcesIndex, sourceLine, sourceColumn]\n                    : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);\n            }\n        }\n    }\n    function append(arr, other) {\n        for (let i = 0; i < other.length; i++)\n            arr.push(other[i]);\n    }\n    function getLine(arr, index) {\n        for (let i = arr.length; i <= index; i++)\n            arr[i] = [];\n        return arr[index];\n    }\n\n    const LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';\n    const COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';\n    const LEAST_UPPER_BOUND = -1;\n    const GREATEST_LOWER_BOUND = 1;\n    class TraceMap {\n        constructor(map, mapUrl) {\n            const isString = typeof map === 'string';\n            if (!isString && map._decodedMemo)\n                return map;\n            const parsed = (isString ? JSON.parse(map) : map);\n            const { version, file, names, sourceRoot, sources, sourcesContent } = parsed;\n            this.version = version;\n            this.file = file;\n            this.names = names || [];\n            this.sourceRoot = sourceRoot;\n            this.sources = sources;\n            this.sourcesContent = sourcesContent;\n            this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || undefined;\n            const from = resolve(sourceRoot || '', stripFilename(mapUrl));\n            this.resolvedSources = sources.map((s) => resolve(s || '', from));\n            const { mappings } = parsed;\n            if (typeof mappings === 'string') {\n                this._encoded = mappings;\n                this._decoded = undefined;\n            }\n            else {\n                this._encoded = undefined;\n                this._decoded = maybeSort(mappings, isString);\n            }\n            this._decodedMemo = memoizedState();\n            this._bySources = undefined;\n            this._bySourceMemos = undefined;\n        }\n    }\n    /**\n     * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n     * with public access modifiers.\n     */\n    function cast(map) {\n        return map;\n    }\n    /**\n     * Returns the encoded (VLQ string) form of the SourceMap's mappings field.\n     */\n    function encodedMappings(map) {\n        var _a;\n        var _b;\n        return ((_a = (_b = cast(map))._encoded) !== null && _a !== void 0 ? _a : (_b._encoded = sourcemapCodec.encode(cast(map)._decoded)));\n    }\n    /**\n     * Returns the decoded (array of lines of segments) form of the SourceMap's mappings field.\n     */\n    function decodedMappings(map) {\n        var _a;\n        return ((_a = cast(map))._decoded || (_a._decoded = sourcemapCodec.decode(cast(map)._encoded)));\n    }\n    /**\n     * A low-level API to find the segment associated with a generated line/column (think, from a\n     * stack trace). Line and column here are 0-based, unlike `originalPositionFor`.\n     */\n    function traceSegment(map, line, column) {\n        const decoded = decodedMappings(map);\n        // It's common for parent source maps to have pointers to lines that have no\n        // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n        if (line >= decoded.length)\n            return null;\n        const segments = decoded[line];\n        const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, GREATEST_LOWER_BOUND);\n        return index === -1 ? null : segments[index];\n    }\n    /**\n     * A higher-level API to find the source/line/column associated with a generated line/column\n     * (think, from a stack trace). Line is 1-based, but column is 0-based, due to legacy behavior in\n     * `source-map` library.\n     */\n    function originalPositionFor(map, needle) {\n        let { line, column, bias } = needle;\n        line--;\n        if (line < 0)\n            throw new Error(LINE_GTR_ZERO);\n        if (column < 0)\n            throw new Error(COL_GTR_EQ_ZERO);\n        const decoded = decodedMappings(map);\n        // It's common for parent source maps to have pointers to lines that have no\n        // mapping (like a \"//# sourceMappingURL=\") at the end of the child file.\n        if (line >= decoded.length)\n            return OMapping(null, null, null, null);\n        const segments = decoded[line];\n        const index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);\n        if (index === -1)\n            return OMapping(null, null, null, null);\n        const segment = segments[index];\n        if (segment.length === 1)\n            return OMapping(null, null, null, null);\n        const { names, resolvedSources } = map;\n        return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);\n    }\n    /**\n     * Finds the generated line/column position of the provided source/line/column source position.\n     */\n    function generatedPositionFor(map, needle) {\n        const { source, line, column, bias } = needle;\n        return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);\n    }\n    /**\n     * Finds all generated line/column positions of the provided source/line/column source position.\n     */\n    function allGeneratedPositionsFor(map, needle) {\n        const { source, line, column, bias } = needle;\n        // SourceMapConsumer uses LEAST_UPPER_BOUND for some reason, so we follow suit.\n        return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);\n    }\n    /**\n     * Iterates each mapping in generated position order.\n     */\n    function eachMapping(map, cb) {\n        const decoded = decodedMappings(map);\n        const { names, resolvedSources } = map;\n        for (let i = 0; i < decoded.length; i++) {\n            const line = decoded[i];\n            for (let j = 0; j < line.length; j++) {\n                const seg = line[j];\n                const generatedLine = i + 1;\n                const generatedColumn = seg[0];\n                let source = null;\n                let originalLine = null;\n                let originalColumn = null;\n                let name = null;\n                if (seg.length !== 1) {\n                    source = resolvedSources[seg[1]];\n                    originalLine = seg[2] + 1;\n                    originalColumn = seg[3];\n                }\n                if (seg.length === 5)\n                    name = names[seg[4]];\n                cb({\n                    generatedLine,\n                    generatedColumn,\n                    source,\n                    originalLine,\n                    originalColumn,\n                    name,\n                });\n            }\n        }\n    }\n    function sourceIndex(map, source) {\n        const { sources, resolvedSources } = map;\n        let index = sources.indexOf(source);\n        if (index === -1)\n            index = resolvedSources.indexOf(source);\n        return index;\n    }\n    /**\n     * Retrieves the source content for a particular source, if its found. Returns null if not.\n     */\n    function sourceContentFor(map, source) {\n        const { sourcesContent } = map;\n        if (sourcesContent == null)\n            return null;\n        const index = sourceIndex(map, source);\n        return index === -1 ? null : sourcesContent[index];\n    }\n    /**\n     * Determines if the source is marked to ignore by the source map.\n     */\n    function isIgnored(map, source) {\n        const { ignoreList } = map;\n        if (ignoreList == null)\n            return false;\n        const index = sourceIndex(map, source);\n        return index === -1 ? false : ignoreList.includes(index);\n    }\n    /**\n     * A helper that skips sorting of the input map's mappings array, which can be expensive for larger\n     * maps.\n     */\n    function presortedDecodedMap(map, mapUrl) {\n        const tracer = new TraceMap(clone(map, []), mapUrl);\n        cast(tracer)._decoded = map.mappings;\n        return tracer;\n    }\n    /**\n     * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n     * a sourcemap, or to JSON.stringify.\n     */\n    function decodedMap(map) {\n        return clone(map, decodedMappings(map));\n    }\n    /**\n     * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n     * a sourcemap, or to JSON.stringify.\n     */\n    function encodedMap(map) {\n        return clone(map, encodedMappings(map));\n    }\n    function clone(map, mappings) {\n        return {\n            version: map.version,\n            file: map.file,\n            names: map.names,\n            sourceRoot: map.sourceRoot,\n            sources: map.sources,\n            sourcesContent: map.sourcesContent,\n            mappings,\n            ignoreList: map.ignoreList || map.x_google_ignoreList,\n        };\n    }\n    function OMapping(source, line, column, name) {\n        return { source, line, column, name };\n    }\n    function GMapping(line, column) {\n        return { line, column };\n    }\n    function traceSegmentInternal(segments, memo, line, column, bias) {\n        let index = memoizedBinarySearch(segments, column, memo, line);\n        if (found) {\n            index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);\n        }\n        else if (bias === LEAST_UPPER_BOUND)\n            index++;\n        if (index === -1 || index === segments.length)\n            return -1;\n        return index;\n    }\n    function sliceGeneratedPositions(segments, memo, line, column, bias) {\n        let min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);\n        // We ignored the bias when tracing the segment so that we're guarnateed to find the first (in\n        // insertion order) segment that matched. Even if we did respect the bias when tracing, we would\n        // still need to call `lowerBound()` to find the first segment, which is slower than just looking\n        // for the GREATEST_LOWER_BOUND to begin with. The only difference that matters for us is when the\n        // binary search didn't match, in which case GREATEST_LOWER_BOUND just needs to increment to\n        // match LEAST_UPPER_BOUND.\n        if (!found && bias === LEAST_UPPER_BOUND)\n            min++;\n        if (min === -1 || min === segments.length)\n            return [];\n        // We may have found the segment that started at an earlier column. If this is the case, then we\n        // need to slice all generated segments that match _that_ column, because all such segments span\n        // to our desired column.\n        const matchedColumn = found ? column : segments[min][COLUMN];\n        // The binary search is not guaranteed to find the lower bound when a match wasn't found.\n        if (!found)\n            min = lowerBound(segments, matchedColumn, min);\n        const max = upperBound(segments, matchedColumn, min);\n        const result = [];\n        for (; min <= max; min++) {\n            const segment = segments[min];\n            result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));\n        }\n        return result;\n    }\n    function generatedPosition(map, source, line, column, bias, all) {\n        var _a;\n        line--;\n        if (line < 0)\n            throw new Error(LINE_GTR_ZERO);\n        if (column < 0)\n            throw new Error(COL_GTR_EQ_ZERO);\n        const { sources, resolvedSources } = map;\n        let sourceIndex = sources.indexOf(source);\n        if (sourceIndex === -1)\n            sourceIndex = resolvedSources.indexOf(source);\n        if (sourceIndex === -1)\n            return all ? [] : GMapping(null, null);\n        const generated = ((_a = cast(map))._bySources || (_a._bySources = buildBySources(decodedMappings(map), (cast(map)._bySourceMemos = sources.map(memoizedState)))));\n        const segments = generated[sourceIndex][line];\n        if (segments == null)\n            return all ? [] : GMapping(null, null);\n        const memo = cast(map)._bySourceMemos[sourceIndex];\n        if (all)\n            return sliceGeneratedPositions(segments, memo, line, column, bias);\n        const index = traceSegmentInternal(segments, memo, line, column, bias);\n        if (index === -1)\n            return GMapping(null, null);\n        const segment = segments[index];\n        return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);\n    }\n\n    exports.AnyMap = AnyMap;\n    exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND;\n    exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND;\n    exports.TraceMap = TraceMap;\n    exports.allGeneratedPositionsFor = allGeneratedPositionsFor;\n    exports.decodedMap = decodedMap;\n    exports.decodedMappings = decodedMappings;\n    exports.eachMapping = eachMapping;\n    exports.encodedMap = encodedMap;\n    exports.encodedMappings = encodedMappings;\n    exports.generatedPositionFor = generatedPositionFor;\n    exports.isIgnored = isIgnored;\n    exports.originalPositionFor = originalPositionFor;\n    exports.presortedDecodedMap = presortedDecodedMap;\n    exports.sourceContentFor = sourceContentFor;\n    exports.traceSegment = traceSegment;\n\n}));\n//# sourceMappingURL=trace-mapping.umd.js.map\n","type GeneratedColumn = number;\ntype SourcesIndex = number;\ntype SourceLine = number;\ntype SourceColumn = number;\ntype NamesIndex = number;\n\nexport type SourceMapSegment =\n  | [GeneratedColumn]\n  | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn]\n  | [GeneratedColumn, SourcesIndex, SourceLine, SourceColumn, NamesIndex];\n\nexport const COLUMN = 0;\nexport const SOURCES_INDEX = 1;\nexport const SOURCE_LINE = 2;\nexport const SOURCE_COLUMN = 3;\nexport const NAMES_INDEX = 4;\n","import { SetArray, put, remove } from '@jridgewell/set-array';\nimport { encode } from '@jridgewell/sourcemap-codec';\nimport { TraceMap, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport {\n  COLUMN,\n  SOURCES_INDEX,\n  SOURCE_LINE,\n  SOURCE_COLUMN,\n  NAMES_INDEX,\n} from './sourcemap-segment';\n\nimport type { SourceMapInput } from '@jridgewell/trace-mapping';\nimport type { SourceMapSegment } from './sourcemap-segment';\nimport type { DecodedSourceMap, EncodedSourceMap, Pos, Mapping } from './types';\n\nexport type { DecodedSourceMap, EncodedSourceMap, Mapping };\n\nexport type Options = {\n  file?: string | null;\n  sourceRoot?: string | null;\n};\n\nconst NO_NAME = -1;\n\n/**\n * Provides the state to generate a sourcemap.\n */\nexport class GenMapping {\n  private declare _names: SetArray<string>;\n  private declare _sources: SetArray<string>;\n  private declare _sourcesContent: (string | null)[];\n  private declare _mappings: SourceMapSegment[][];\n  private declare _ignoreList: SetArray<number>;\n  declare file: string | null | undefined;\n  declare sourceRoot: string | null | undefined;\n\n  constructor({ file, sourceRoot }: Options = {}) {\n    this._names = new SetArray();\n    this._sources = new SetArray();\n    this._sourcesContent = [];\n    this._mappings = [];\n    this.file = file;\n    this.sourceRoot = sourceRoot;\n    this._ignoreList = new SetArray();\n  }\n}\n\ninterface PublicMap {\n  _names: GenMapping['_names'];\n  _sources: GenMapping['_sources'];\n  _sourcesContent: GenMapping['_sourcesContent'];\n  _mappings: GenMapping['_mappings'];\n  _ignoreList: GenMapping['_ignoreList'];\n}\n\n/**\n * Typescript doesn't allow friend access to private fields, so this just casts the map into a type\n * with public access modifiers.\n */\nfunction cast(map: unknown): PublicMap {\n  return map as any;\n}\n\n/**\n * A low-level API to associate a generated position with an original source position. Line and\n * column here are 0-based, unlike `addMapping`.\n */\nexport function addSegment(\n  map: GenMapping,\n  genLine: number,\n  genColumn: number,\n  source?: null,\n  sourceLine?: null,\n  sourceColumn?: null,\n  name?: null,\n  content?: null,\n): void;\nexport function addSegment(\n  map: GenMapping,\n  genLine: number,\n  genColumn: number,\n  source: string,\n  sourceLine: number,\n  sourceColumn: number,\n  name?: null,\n  content?: string | null,\n): void;\nexport function addSegment(\n  map: GenMapping,\n  genLine: number,\n  genColumn: number,\n  source: string,\n  sourceLine: number,\n  sourceColumn: number,\n  name: string,\n  content?: string | null,\n): void;\nexport function addSegment(\n  map: GenMapping,\n  genLine: number,\n  genColumn: number,\n  source?: string | null,\n  sourceLine?: number | null,\n  sourceColumn?: number | null,\n  name?: string | null,\n  content?: string | null,\n): void {\n  return addSegmentInternal(\n    false,\n    map,\n    genLine,\n    genColumn,\n    source,\n    sourceLine,\n    sourceColumn,\n    name,\n    content,\n  );\n}\n\n/**\n * A high-level API to associate a generated position with an original source position. Line is\n * 1-based, but column is 0-based, due to legacy behavior in `source-map` library.\n */\nexport function addMapping(\n  map: GenMapping,\n  mapping: {\n    generated: Pos;\n    source?: null;\n    original?: null;\n    name?: null;\n    content?: null;\n  },\n): void;\nexport function addMapping(\n  map: GenMapping,\n  mapping: {\n    generated: Pos;\n    source: string;\n    original: Pos;\n    name?: null;\n    content?: string | null;\n  },\n): void;\nexport function addMapping(\n  map: GenMapping,\n  mapping: {\n    generated: Pos;\n    source: string;\n    original: Pos;\n    name: string;\n    content?: string | null;\n  },\n): void;\nexport function addMapping(\n  map: GenMapping,\n  mapping: {\n    generated: Pos;\n    source?: string | null;\n    original?: Pos | null;\n    name?: string | null;\n    content?: string | null;\n  },\n): void {\n  return addMappingInternal(false, map, mapping as Parameters<typeof addMappingInternal>[2]);\n}\n\n/**\n * Same as `addSegment`, but will only add the segment if it generates useful information in the\n * resulting map. This only works correctly if segments are added **in order**, meaning you should\n * not add a segment with a lower generated line/column than one that came before.\n */\nexport const maybeAddSegment: typeof addSegment = (\n  map,\n  genLine,\n  genColumn,\n  source,\n  sourceLine,\n  sourceColumn,\n  name,\n  content,\n) => {\n  return addSegmentInternal(\n    true,\n    map,\n    genLine,\n    genColumn,\n    source,\n    sourceLine,\n    sourceColumn,\n    name,\n    content,\n  );\n};\n\n/**\n * Same as `addMapping`, but will only add the mapping if it generates useful information in the\n * resulting map. This only works correctly if mappings are added **in order**, meaning you should\n * not add a mapping with a lower generated line/column than one that came before.\n */\nexport const maybeAddMapping: typeof addMapping = (map, mapping) => {\n  return addMappingInternal(true, map, mapping as Parameters<typeof addMappingInternal>[2]);\n};\n\n/**\n * Adds/removes the content of the source file to the source map.\n */\nexport function setSourceContent(map: GenMapping, source: string, content: string | null): void {\n  const { _sources: sources, _sourcesContent: sourcesContent } = cast(map);\n  const index = put(sources, source);\n  sourcesContent[index] = content;\n}\n\nexport function setIgnore(map: GenMapping, source: string, ignore = true) {\n  const { _sources: sources, _sourcesContent: sourcesContent, _ignoreList: ignoreList } = cast(map);\n  const index = put(sources, source);\n  if (index === sourcesContent.length) sourcesContent[index] = null;\n  if (ignore) put(ignoreList, index);\n  else remove(ignoreList, index);\n}\n\n/**\n * Returns a sourcemap object (with decoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toDecodedMap(map: GenMapping): DecodedSourceMap {\n  const {\n    _mappings: mappings,\n    _sources: sources,\n    _sourcesContent: sourcesContent,\n    _names: names,\n    _ignoreList: ignoreList,\n  } = cast(map);\n  removeEmptyFinalLines(mappings);\n\n  return {\n    version: 3,\n    file: map.file || undefined,\n    names: names.array,\n    sourceRoot: map.sourceRoot || undefined,\n    sources: sources.array,\n    sourcesContent,\n    mappings,\n    ignoreList: ignoreList.array,\n  };\n}\n\n/**\n * Returns a sourcemap object (with encoded mappings) suitable for passing to a library that expects\n * a sourcemap, or to JSON.stringify.\n */\nexport function toEncodedMap(map: GenMapping): EncodedSourceMap {\n  const decoded = toDecodedMap(map);\n  return {\n    ...decoded,\n    mappings: encode(decoded.mappings as SourceMapSegment[][]),\n  };\n}\n\n/**\n * Constructs a new GenMapping, using the already present mappings of the input.\n */\nexport function fromMap(input: SourceMapInput): GenMapping {\n  const map = new TraceMap(input);\n  const gen = new GenMapping({ file: map.file, sourceRoot: map.sourceRoot });\n\n  putAll(cast(gen)._names, map.names);\n  putAll(cast(gen)._sources, map.sources as string[]);\n  cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(() => null);\n  cast(gen)._mappings = decodedMappings(map) as GenMapping['_mappings'];\n  if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList);\n\n  return gen;\n}\n\n/**\n * Returns an array of high-level mapping objects for every recorded segment, which could then be\n * passed to the `source-map` library.\n */\nexport function allMappings(map: GenMapping): Mapping[] {\n  const out: Mapping[] = [];\n  const { _mappings: mappings, _sources: sources, _names: names } = cast(map);\n\n  for (let i = 0; i < mappings.length; i++) {\n    const line = mappings[i];\n    for (let j = 0; j < line.length; j++) {\n      const seg = line[j];\n\n      const generated = { line: i + 1, column: seg[COLUMN] };\n      let source: string | undefined = undefined;\n      let original: Pos | undefined = undefined;\n      let name: string | undefined = undefined;\n\n      if (seg.length !== 1) {\n        source = sources.array[seg[SOURCES_INDEX]];\n        original = { line: seg[SOURCE_LINE] + 1, column: seg[SOURCE_COLUMN] };\n\n        if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];\n      }\n\n      out.push({ generated, source, original, name } as Mapping);\n    }\n  }\n\n  return out;\n}\n\n// This split declaration is only so that terser can elminiate the static initialization block.\nfunction addSegmentInternal<S extends string | null | undefined>(\n  skipable: boolean,\n  map: GenMapping,\n  genLine: number,\n  genColumn: number,\n  source: S,\n  sourceLine: S extends string ? number : null | undefined,\n  sourceColumn: S extends string ? number : null | undefined,\n  name: S extends string ? string | null | undefined : null | undefined,\n  content: S extends string ? string | null | undefined : null | undefined,\n): void {\n  const {\n    _mappings: mappings,\n    _sources: sources,\n    _sourcesContent: sourcesContent,\n    _names: names,\n  } = cast(map);\n  const line = getLine(mappings, genLine);\n  const index = getColumnIndex(line, genColumn);\n\n  if (!source) {\n    if (skipable && skipSourceless(line, index)) return;\n    return insert(line, index, [genColumn]);\n  }\n\n  // Sigh, TypeScript can't figure out sourceLine and sourceColumn aren't nullish if source\n  // isn't nullish.\n  assert<number>(sourceLine);\n  assert<number>(sourceColumn);\n\n  const sourcesIndex = put(sources, source);\n  const namesIndex = name ? put(names, name) : NO_NAME;\n  if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content ?? null;\n\n  if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {\n    return;\n  }\n\n  return insert(\n    line,\n    index,\n    name\n      ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex]\n      : [genColumn, sourcesIndex, sourceLine, sourceColumn],\n  );\n}\n\nfunction assert<T>(_val: unknown): asserts _val is T {\n  // noop.\n}\n\nfunction getLine(mappings: SourceMapSegment[][], index: number): SourceMapSegment[] {\n  for (let i = mappings.length; i <= index; i++) {\n    mappings[i] = [];\n  }\n  return mappings[index];\n}\n\nfunction getColumnIndex(line: SourceMapSegment[], genColumn: number): number {\n  let index = line.length;\n  for (let i = index - 1; i >= 0; index = i--) {\n    const current = line[i];\n    if (genColumn >= current[COLUMN]) break;\n  }\n  return index;\n}\n\nfunction insert<T>(array: T[], index: number, value: T) {\n  for (let i = array.length; i > index; i--) {\n    array[i] = array[i - 1];\n  }\n  array[index] = value;\n}\n\nfunction removeEmptyFinalLines(mappings: SourceMapSegment[][]) {\n  const { length } = mappings;\n  let len = length;\n  for (let i = len - 1; i >= 0; len = i, i--) {\n    if (mappings[i].length > 0) break;\n  }\n  if (len < length) mappings.length = len;\n}\n\nfunction putAll<T extends string | number>(setarr: SetArray<T>, array: T[]) {\n  for (let i = 0; i < array.length; i++) put(setarr, array[i]);\n}\n\nfunction skipSourceless(line: SourceMapSegment[], index: number): boolean {\n  // The start of a line is already sourceless, so adding a sourceless segment to the beginning\n  // doesn't generate any useful information.\n  if (index === 0) return true;\n\n  const prev = line[index - 1];\n  // If the previous segment is also sourceless, then adding another sourceless segment doesn't\n  // genrate any new information. Else, this segment will end the source/named segment and point to\n  // a sourceless position, which is useful.\n  return prev.length === 1;\n}\n\nfunction skipSource(\n  line: SourceMapSegment[],\n  index: number,\n  sourcesIndex: number,\n  sourceLine: number,\n  sourceColumn: number,\n  namesIndex: number,\n): boolean {\n  // A source/named segment at the start of a line gives position at that genColumn\n  if (index === 0) return false;\n\n  const prev = line[index - 1];\n\n  // If the previous segment is sourceless, then we're transitioning to a source.\n  if (prev.length === 1) return false;\n\n  // If the previous segment maps to the exact same source position, then this segment doesn't\n  // provide any new position information.\n  return (\n    sourcesIndex === prev[SOURCES_INDEX] &&\n    sourceLine === prev[SOURCE_LINE] &&\n    sourceColumn === prev[SOURCE_COLUMN] &&\n    namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME)\n  );\n}\n\nfunction addMappingInternal<S extends string | null | undefined>(\n  skipable: boolean,\n  map: GenMapping,\n  mapping: {\n    generated: Pos;\n    source: S;\n    original: S extends string ? Pos : null | undefined;\n    name: S extends string ? string | null | undefined : null | undefined;\n    content: S extends string ? string | null | undefined : null | undefined;\n  },\n) {\n  const { generated, source, original, name, content } = mapping;\n  if (!source) {\n    return addSegmentInternal(\n      skipable,\n      map,\n      generated.line - 1,\n      generated.column,\n      null,\n      null,\n      null,\n      null,\n      null,\n    );\n  }\n  assert<Pos>(original);\n  return addSegmentInternal(\n    skipable,\n    map,\n    generated.line - 1,\n    generated.column,\n    source as string,\n    original.line - 1,\n    original.column,\n    name,\n    content,\n  );\n}\n","import {\n  GenMapping,\n  maybeAddMapping,\n  setSourceContent,\n  allMappings,\n  toEncodedMap,\n  toDecodedMap,\n} from \"@jridgewell/gen-mapping\";\n\nimport type {\n  EncodedSourceMap,\n  DecodedSourceMap,\n  Mapping,\n} from \"@jridgewell/gen-mapping\";\n\nimport {\n  type SourceMapInput,\n  originalPositionFor,\n  TraceMap,\n} from \"@jridgewell/trace-mapping\";\n\n/**\n * Build a sourcemap.\n */\n\nexport default class SourceMap {\n  private _map: GenMapping;\n  private _rawMappings: Mapping[] | undefined;\n  private _sourceFileName: string | undefined;\n\n  // Any real line is > 0, so init to 0 is fine.\n  private _lastGenLine = 0;\n  private _lastSourceLine = 0;\n\n  // Source columns can be 0, but we only check in unison with sourceLine, which\n  // inits to an impossible value. So init to 0 is fine.\n  private _lastSourceColumn = 0;\n\n  public _inputMap: TraceMap;\n\n  constructor(\n    opts: {\n      sourceFileName?: string;\n      sourceRoot?: string;\n      inputSourceMap?: SourceMapInput;\n    },\n    code: string | { [sourceFileName: string]: string },\n  ) {\n    const map = (this._map = new GenMapping({ sourceRoot: opts.sourceRoot }));\n    this._sourceFileName = opts.sourceFileName?.replace(/\\\\/g, \"/\");\n    this._rawMappings = undefined;\n\n    if (opts.inputSourceMap) {\n      this._inputMap = new TraceMap(opts.inputSourceMap);\n      const resolvedSources = this._inputMap.resolvedSources;\n      if (resolvedSources.length) {\n        for (let i = 0; i < resolvedSources.length; i++) {\n          setSourceContent(\n            map,\n            resolvedSources[i],\n            this._inputMap.sourcesContent?.[i],\n          );\n        }\n      }\n    }\n\n    if (typeof code === \"string\" && !opts.inputSourceMap) {\n      setSourceContent(map, this._sourceFileName, code);\n    } else if (typeof code === \"object\") {\n      for (const sourceFileName of Object.keys(code)) {\n        setSourceContent(\n          map,\n          sourceFileName.replace(/\\\\/g, \"/\"),\n          code[sourceFileName],\n        );\n      }\n    }\n  }\n\n  /**\n   * Get the sourcemap.\n   */\n  get(): EncodedSourceMap {\n    return toEncodedMap(this._map);\n  }\n\n  getDecoded(): DecodedSourceMap {\n    return toDecodedMap(this._map);\n  }\n\n  getRawMappings(): Mapping[] {\n    return (this._rawMappings ||= allMappings(this._map));\n  }\n\n  /**\n   * Mark the current generated position with a source position. May also be passed null line/column\n   * values to insert a mapping to nothing.\n   */\n\n  mark(\n    generated: { line: number; column: number },\n    line: number,\n    column: number,\n    identifierName?: string | null,\n    identifierNamePos?: { line: number; column: number },\n    filename?: string | null,\n  ) {\n    this._rawMappings = undefined;\n\n    let originalMapping: {\n      source: string | null;\n      name?: string | null;\n      line: number | null;\n      column: number | null;\n    };\n\n    if (line != null) {\n      if (this._inputMap) {\n        // This is the lookup for this mark\n        originalMapping = originalPositionFor(this._inputMap, {\n          line,\n          column,\n        });\n\n        // If the we found a name, nothing else needs to be done\n        // Maybe we're marking a `(` and the input map already had a name attached there,\n        // or we're marking a `(` and the sourcemap spanned a `foo(`,\n        // or we're marking an identifier, etc.\n        if (!originalMapping.name && identifierNamePos) {\n          // We're trying to mark a `(` (as that's the only thing that provides\n          // an identifierNamePos currently), and we the AST had an identifier attached.\n          // Lookup it's original name.\n          const originalIdentifierMapping = originalPositionFor(\n            this._inputMap,\n            identifierNamePos,\n          );\n          if (originalIdentifierMapping.name) {\n            identifierName = originalIdentifierMapping.name;\n          }\n        }\n      } else {\n        originalMapping = {\n          source: filename?.replace(/\\\\/g, \"/\") || this._sourceFileName,\n          line: line,\n          column: column,\n        };\n      }\n    }\n\n    maybeAddMapping(this._map, {\n      name: identifierName,\n      generated,\n      source: originalMapping?.source,\n      original: originalMapping,\n    });\n  }\n}\n","import type SourceMap from \"./source-map.ts\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charcodes from \"charcodes\";\n\nexport type Pos = {\n  line: number;\n  column: number;\n  index: number;\n};\nexport type Loc = {\n  start?: Pos;\n  end?: Pos;\n  filename?: string;\n};\ntype SourcePos = {\n  line: number | undefined;\n  column: number | undefined;\n  identifierName: string | undefined;\n  filename: string | undefined;\n};\ntype InternalSourcePos = SourcePos & { identifierNamePos: Pos };\n\ntype QueueItem = {\n  char: number;\n  repeat: number;\n  line: number | undefined;\n  column: number | undefined;\n  identifierName: undefined; // Not used, it always undefined.\n  identifierNamePos: undefined; // Not used, it always undefined.\n  filename: string | undefined;\n};\n\nexport default class Buffer {\n  constructor(map: SourceMap | null, indentChar: string) {\n    this._map = map;\n    this._indentChar = indentChar;\n\n    for (let i = 0; i < 64; i++) {\n      this._fastIndentations.push(indentChar.repeat(i));\n    }\n\n    this._allocQueue();\n  }\n\n  _map: SourceMap = null;\n  _buf = \"\";\n  _str = \"\";\n  _appendCount = 0;\n  _last = 0;\n  _queue: QueueItem[] = [];\n  _queueCursor = 0;\n  _canMarkIdName = true;\n  _indentChar = \"\";\n  _fastIndentations: string[] = [];\n\n  _position = {\n    line: 1,\n    column: 0,\n  };\n  _sourcePosition: InternalSourcePos = {\n    identifierName: undefined,\n    identifierNamePos: undefined,\n    line: undefined,\n    column: undefined,\n    filename: undefined,\n  };\n\n  _allocQueue() {\n    const queue = this._queue;\n\n    for (let i = 0; i < 16; i++) {\n      queue.push({\n        char: 0,\n        repeat: 1,\n        line: undefined,\n        column: undefined,\n        identifierName: undefined,\n        identifierNamePos: undefined,\n        filename: \"\",\n      });\n    }\n  }\n\n  _pushQueue(\n    char: number,\n    repeat: number,\n    line: number | undefined,\n    column: number | undefined,\n    filename: string | undefined,\n  ) {\n    const cursor = this._queueCursor;\n    if (cursor === this._queue.length) {\n      this._allocQueue();\n    }\n    const item = this._queue[cursor];\n    item.char = char;\n    item.repeat = repeat;\n    item.line = line;\n    item.column = column;\n    item.filename = filename;\n\n    this._queueCursor++;\n  }\n\n  _popQueue(): QueueItem {\n    if (this._queueCursor === 0) {\n      throw new Error(\"Cannot pop from empty queue\");\n    }\n    return this._queue[--this._queueCursor];\n  }\n\n  /**\n   * Get the final string output from the buffer, along with the sourcemap if one exists.\n   */\n\n  get() {\n    this._flush();\n\n    const map = this._map;\n    const result = {\n      // Whatever trim is used here should not execute a regex against the\n      // source string since it may be arbitrarily large after all transformations\n      code: (this._buf + this._str).trimRight(),\n      // Decoded sourcemap is free to generate.\n      decodedMap: map?.getDecoded(),\n      // Used as a marker for backwards compatibility. We moved input map merging\n      // into the generator. We cannot merge the input map a second time, so the\n      // presence of this field tells us we've already done the work.\n      get __mergedMap() {\n        return this.map;\n      },\n      // Encoding the sourcemap is moderately CPU expensive.\n      get map() {\n        const resultMap = map ? map.get() : null;\n        result.map = resultMap;\n        return resultMap;\n      },\n      set map(value) {\n        Object.defineProperty(result, \"map\", { value, writable: true });\n      },\n      // Retrieving the raw mappings is very memory intensive.\n      get rawMappings() {\n        const mappings = map?.getRawMappings();\n        result.rawMappings = mappings;\n        return mappings;\n      },\n      set rawMappings(value) {\n        Object.defineProperty(result, \"rawMappings\", { value, writable: true });\n      },\n    };\n\n    return result;\n  }\n\n  /**\n   * Add a string to the buffer that cannot be reverted.\n   */\n\n  append(str: string, maybeNewline: boolean): void {\n    this._flush();\n\n    this._append(str, this._sourcePosition, maybeNewline);\n  }\n\n  appendChar(char: number): void {\n    this._flush();\n    this._appendChar(char, 1, this._sourcePosition);\n  }\n\n  /**\n   * Add a string to the buffer than can be reverted.\n   */\n  queue(char: number): void {\n    // Drop trailing spaces when a newline is inserted.\n    if (char === charcodes.lineFeed) {\n      while (this._queueCursor !== 0) {\n        const char = this._queue[this._queueCursor - 1].char;\n        if (char !== charcodes.space && char !== charcodes.tab) {\n          break;\n        }\n\n        this._queueCursor--;\n      }\n    }\n\n    const sourcePosition = this._sourcePosition;\n    this._pushQueue(\n      char,\n      1,\n      sourcePosition.line,\n      sourcePosition.column,\n      sourcePosition.filename,\n    );\n  }\n\n  /**\n   * Same as queue, but this indentation will never have a sourcemap marker.\n   */\n  queueIndentation(repeat: number): void {\n    if (repeat === 0) return;\n    this._pushQueue(-1, repeat, undefined, undefined, undefined);\n  }\n\n  _flush(): void {\n    const queueCursor = this._queueCursor;\n    const queue = this._queue;\n    for (let i = 0; i < queueCursor; i++) {\n      const item: QueueItem = queue[i];\n      this._appendChar(item.char, item.repeat, item);\n    }\n    this._queueCursor = 0;\n  }\n\n  _appendChar(\n    char: number,\n    repeat: number,\n    sourcePos: InternalSourcePos,\n  ): void {\n    this._last = char;\n\n    if (char === -1) {\n      const fastIndentation = this._fastIndentations[repeat];\n      if (fastIndentation !== undefined) {\n        this._str += fastIndentation;\n      } else {\n        this._str +=\n          repeat > 1 ? this._indentChar.repeat(repeat) : this._indentChar;\n      }\n    } else {\n      this._str +=\n        repeat > 1\n          ? String.fromCharCode(char).repeat(repeat)\n          : String.fromCharCode(char);\n    }\n\n    if (char !== charcodes.lineFeed) {\n      this._mark(\n        sourcePos.line,\n        sourcePos.column,\n        sourcePos.identifierName,\n        sourcePos.identifierNamePos,\n        sourcePos.filename,\n      );\n      this._position.column += repeat;\n    } else {\n      this._position.line++;\n      this._position.column = 0;\n    }\n\n    if (this._canMarkIdName) {\n      sourcePos.identifierName = undefined;\n      sourcePos.identifierNamePos = undefined;\n    }\n  }\n\n  _append(\n    str: string,\n    sourcePos: InternalSourcePos,\n    maybeNewline: boolean,\n  ): void {\n    const len = str.length;\n    const position = this._position;\n\n    this._last = str.charCodeAt(len - 1);\n\n    if (++this._appendCount > 4096) {\n      // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n      +this._str; // Unexplainable huge performance boost. Ref: https://github.com/davidmarkclements/flatstr License: MIT\n      this._buf += this._str;\n      this._str = str;\n      this._appendCount = 0;\n    } else {\n      this._str += str;\n    }\n\n    if (!maybeNewline && !this._map) {\n      position.column += len;\n      return;\n    }\n\n    const { column, identifierName, identifierNamePos, filename } = sourcePos;\n    let line = sourcePos.line;\n\n    if (\n      (identifierName != null || identifierNamePos != null) &&\n      this._canMarkIdName\n    ) {\n      sourcePos.identifierName = undefined;\n      sourcePos.identifierNamePos = undefined;\n    }\n\n    // Search for newline chars. We search only for `\\n`, since both `\\r` and\n    // `\\r\\n` are normalized to `\\n` during parse. We exclude `\\u2028` and\n    // `\\u2029` for performance reasons, they're so uncommon that it's probably\n    // ok. It's also unclear how other sourcemap utilities handle them...\n    let i = str.indexOf(\"\\n\");\n    let last = 0;\n\n    // If the string starts with a newline char, then adding a mark is redundant.\n    // This catches both \"no newlines\" and \"newline after several chars\".\n    if (i !== 0) {\n      this._mark(line, column, identifierName, identifierNamePos, filename);\n    }\n\n    // Now, find each remaining newline char in the string.\n    while (i !== -1) {\n      position.line++;\n      position.column = 0;\n      last = i + 1;\n\n      // We mark the start of each line, which happens directly after this newline char\n      // unless this is the last char.\n      // When manually adding multi-line content (such as a comment), `line` will be `undefined`.\n      if (last < len && line !== undefined) {\n        this._mark(++line, 0, null, null, filename);\n      }\n      i = str.indexOf(\"\\n\", last);\n    }\n    position.column += len - last;\n  }\n\n  _mark(\n    line: number | undefined,\n    column: number | undefined,\n    identifierName: string | undefined,\n    identifierNamePos: Pos | undefined,\n    filename: string | undefined,\n  ): void {\n    this._map?.mark(\n      this._position,\n      line,\n      column,\n      identifierName,\n      identifierNamePos,\n      filename,\n    );\n  }\n\n  removeTrailingNewline(): void {\n    const queueCursor = this._queueCursor;\n    if (\n      queueCursor !== 0 &&\n      this._queue[queueCursor - 1].char === charcodes.lineFeed\n    ) {\n      this._queueCursor--;\n    }\n  }\n\n  removeLastSemicolon(): void {\n    const queueCursor = this._queueCursor;\n    if (\n      queueCursor !== 0 &&\n      this._queue[queueCursor - 1].char === charcodes.semicolon\n    ) {\n      this._queueCursor--;\n    }\n  }\n\n  getLastChar(): number {\n    const queueCursor = this._queueCursor;\n    return queueCursor !== 0 ? this._queue[queueCursor - 1].char : this._last;\n  }\n\n  /**\n   * This will only detect at most 1 newline after a call to `flush()`,\n   * but this has not been found so far, and an accurate count can be achieved if needed later.\n   */\n  getNewlineCount(): number {\n    const queueCursor = this._queueCursor;\n    let count = 0;\n    if (queueCursor === 0) return this._last === charcodes.lineFeed ? 1 : 0;\n    for (let i = queueCursor - 1; i >= 0; i--) {\n      if (this._queue[i].char !== charcodes.lineFeed) {\n        break;\n      }\n      count++;\n    }\n    return count === queueCursor && this._last === charcodes.lineFeed\n      ? count + 1\n      : count;\n  }\n\n  /**\n   * check if current _last + queue ends with newline, return the character before newline\n   */\n  endsWithCharAndNewline(): number {\n    const queue = this._queue;\n    const queueCursor = this._queueCursor;\n    if (queueCursor !== 0) {\n      // every element in queue is one-length whitespace string\n      const lastCp = queue[queueCursor - 1].char;\n      if (lastCp !== charcodes.lineFeed) return;\n      if (queueCursor > 1) {\n        return queue[queueCursor - 2].char;\n      } else {\n        return this._last;\n      }\n    }\n    // We assume that everything being matched is at most a single token plus some whitespace,\n    // which everything currently is, but otherwise we'd have to expand _last or check _buf.\n  }\n\n  hasContent(): boolean {\n    return this._queueCursor !== 0 || !!this._last;\n  }\n\n  /**\n   * Certain sourcemap usecases expect mappings to be more accurate than\n   * Babel's generic sourcemap handling allows. For now, we special-case\n   * identifiers to allow for the primary cases to work.\n   * The goal of this line is to ensure that the map output from Babel will\n   * have an exact range on identifiers in the output code. Without this\n   * line, Babel would potentially include some number of trailing tokens\n   * that are printed after the identifier, but before another location has\n   * been assigned.\n   * This allows tooling like Rollup and Webpack to more accurately perform\n   * their own transformations. Most importantly, this allows the import/export\n   * transformations performed by those tools to loose less information when\n   * applying their own transformations on top of the code and map results\n   * generated by Babel itself.\n   *\n   * The primary example of this is the snippet:\n   *\n   *   import mod from \"mod\";\n   *   mod();\n   *\n   * With this line, there will be one mapping range over \"mod\" and another\n   * over \"();\", where previously it would have been a single mapping.\n   */\n  exactSource(loc: Loc | undefined, cb: () => void) {\n    if (!this._map) {\n      cb();\n      return;\n    }\n\n    this.source(\"start\", loc);\n    // @ts-expect-error identifierName is not defined\n    const identifierName = loc.identifierName;\n    const sourcePos = this._sourcePosition;\n    if (identifierName) {\n      this._canMarkIdName = false;\n      sourcePos.identifierName = identifierName;\n    }\n    cb();\n\n    if (identifierName) {\n      this._canMarkIdName = true;\n      sourcePos.identifierName = undefined;\n      sourcePos.identifierNamePos = undefined;\n    }\n    this.source(\"end\", loc);\n  }\n\n  /**\n   * Sets a given position as the current source location so generated code after this call\n   * will be given this position in the sourcemap.\n   */\n\n  source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n    if (!this._map) return;\n\n    // Since this is called extremely often, we reuse the same _sourcePosition\n    // object for the whole lifetime of the buffer.\n    this._normalizePosition(prop, loc, 0);\n  }\n\n  sourceWithOffset(\n    prop: \"start\" | \"end\",\n    loc: Loc | undefined,\n    columnOffset: number,\n  ): void {\n    if (!this._map) return;\n\n    this._normalizePosition(prop, loc, columnOffset);\n  }\n\n  _normalizePosition(prop: \"start\" | \"end\", loc: Loc, columnOffset: number) {\n    const pos = loc[prop];\n    const target = this._sourcePosition;\n\n    if (pos) {\n      target.line = pos.line;\n      // TODO: Fix https://github.com/babel/babel/issues/15712 in downstream\n      target.column = Math.max(pos.column + columnOffset, 0);\n      target.filename = loc.filename;\n    }\n  }\n\n  getCurrentColumn(): number {\n    const queue = this._queue;\n    const queueCursor = this._queueCursor;\n\n    let lastIndex = -1;\n    let len = 0;\n    for (let i = 0; i < queueCursor; i++) {\n      const item = queue[i];\n      if (item.char === charcodes.lineFeed) {\n        lastIndex = len;\n      }\n      len += item.repeat;\n    }\n\n    return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex;\n  }\n\n  getCurrentLine(): number {\n    let count = 0;\n\n    const queue = this._queue;\n    for (let i = 0; i < this._queueCursor; i++) {\n      if (queue[i].char === charcodes.lineFeed) {\n        count++;\n      }\n    }\n\n    return this._position.line + count;\n  }\n}\n","import {\n  FLIPPED_ALIAS_KEYS,\n  isArrayExpression,\n  isAssignmentExpression,\n  isBinary,\n  isBlockStatement,\n  isCallExpression,\n  isFunction,\n  isIdentifier,\n  isLiteral,\n  isMemberExpression,\n  isObjectExpression,\n  isOptionalCallExpression,\n  isOptionalMemberExpression,\n  isStringLiteral,\n} from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nimport type { NodeHandlers } from \"./index.ts\";\n\nimport type * as t from \"@babel/types\";\n\nconst enum WhitespaceFlag {\n  before = 1 << 0,\n  after = 1 << 1,\n}\n\nexport type { WhitespaceFlag };\n\nfunction crawlInternal(\n  node: t.Node,\n  state: { hasCall: boolean; hasFunction: boolean; hasHelper: boolean },\n) {\n  if (!node) return state;\n\n  if (isMemberExpression(node) || isOptionalMemberExpression(node)) {\n    crawlInternal(node.object, state);\n    if (node.computed) crawlInternal(node.property, state);\n  } else if (isBinary(node) || isAssignmentExpression(node)) {\n    crawlInternal(node.left, state);\n    crawlInternal(node.right, state);\n  } else if (isCallExpression(node) || isOptionalCallExpression(node)) {\n    state.hasCall = true;\n    crawlInternal(node.callee, state);\n  } else if (isFunction(node)) {\n    state.hasFunction = true;\n  } else if (isIdentifier(node)) {\n    state.hasHelper =\n      // @ts-expect-error todo(flow->ts): node.callee is not really expected here…\n      state.hasHelper || (node.callee && isHelper(node.callee));\n  }\n\n  return state;\n}\n\n/**\n * Crawl a node to test if it contains a CallExpression, a Function, or a Helper.\n *\n * @example\n * crawl(node)\n * // { hasCall: false, hasFunction: true, hasHelper: false }\n */\n\nfunction crawl(node: t.Node) {\n  return crawlInternal(node, {\n    hasCall: false,\n    hasFunction: false,\n    hasHelper: false,\n  });\n}\n\n/**\n * Test if a node is or has a helper.\n */\n\nfunction isHelper(node: t.Node): boolean {\n  if (!node) return false;\n\n  if (isMemberExpression(node)) {\n    return isHelper(node.object) || isHelper(node.property);\n  } else if (isIdentifier(node)) {\n    return (\n      node.name === \"require\" ||\n      node.name.charCodeAt(0) === charCodes.underscore\n    );\n  } else if (isCallExpression(node)) {\n    return isHelper(node.callee);\n  } else if (isBinary(node) || isAssignmentExpression(node)) {\n    return (\n      (isIdentifier(node.left) && isHelper(node.left)) || isHelper(node.right)\n    );\n  } else {\n    return false;\n  }\n}\n\nfunction isType(node: t.Node) {\n  return (\n    isLiteral(node) ||\n    isObjectExpression(node) ||\n    isArrayExpression(node) ||\n    isIdentifier(node) ||\n    isMemberExpression(node)\n  );\n}\n\n/**\n * Tests for node types that need whitespace.\n */\n\nexport const nodes: NodeHandlers<WhitespaceFlag> = {\n  /**\n   * Test if AssignmentExpression needs whitespace.\n   */\n\n  AssignmentExpression(node: t.AssignmentExpression): WhitespaceFlag {\n    const state = crawl(node.right);\n    if ((state.hasCall && state.hasHelper) || state.hasFunction) {\n      return state.hasFunction\n        ? WhitespaceFlag.before | WhitespaceFlag.after\n        : WhitespaceFlag.after;\n    }\n  },\n\n  /**\n   * Test if SwitchCase needs whitespace.\n   */\n\n  SwitchCase(node: t.SwitchCase, parent: t.SwitchStatement): WhitespaceFlag {\n    return (\n      (!!node.consequent.length || parent.cases[0] === node\n        ? WhitespaceFlag.before\n        : 0) |\n      (!node.consequent.length && parent.cases[parent.cases.length - 1] === node\n        ? WhitespaceFlag.after\n        : 0)\n    );\n  },\n\n  /**\n   * Test if LogicalExpression needs whitespace.\n   */\n\n  LogicalExpression(node: t.LogicalExpression): WhitespaceFlag {\n    if (isFunction(node.left) || isFunction(node.right)) {\n      return WhitespaceFlag.after;\n    }\n  },\n\n  /**\n   * Test if Literal needs whitespace.\n   */\n\n  Literal(node: t.Literal): WhitespaceFlag {\n    if (isStringLiteral(node) && node.value === \"use strict\") {\n      return WhitespaceFlag.after;\n    }\n  },\n\n  /**\n   * Test if CallExpressionish needs whitespace.\n   */\n\n  CallExpression(node: t.CallExpression): WhitespaceFlag {\n    if (isFunction(node.callee) || isHelper(node)) {\n      return WhitespaceFlag.before | WhitespaceFlag.after;\n    }\n  },\n\n  OptionalCallExpression(node: t.OptionalCallExpression): WhitespaceFlag {\n    if (isFunction(node.callee)) {\n      return WhitespaceFlag.before | WhitespaceFlag.after;\n    }\n  },\n\n  /**\n   * Test if VariableDeclaration needs whitespace.\n   */\n\n  VariableDeclaration(node: t.VariableDeclaration): WhitespaceFlag {\n    for (let i = 0; i < node.declarations.length; i++) {\n      const declar = node.declarations[i];\n\n      let enabled = isHelper(declar.id) && !isType(declar.init);\n      if (!enabled && declar.init) {\n        const state = crawl(declar.init);\n        enabled = (isHelper(declar.init) && state.hasCall) || state.hasFunction;\n      }\n\n      if (enabled) {\n        return WhitespaceFlag.before | WhitespaceFlag.after;\n      }\n    }\n  },\n\n  /**\n   * Test if IfStatement needs whitespace.\n   */\n\n  IfStatement(node: t.IfStatement): WhitespaceFlag {\n    if (isBlockStatement(node.consequent)) {\n      return WhitespaceFlag.before | WhitespaceFlag.after;\n    }\n  },\n};\n\n/**\n * Test if Property needs whitespace.\n */\n\nnodes.ObjectProperty =\n  nodes.ObjectTypeProperty =\n  nodes.ObjectMethod =\n    function (\n      node: t.ObjectProperty | t.ObjectTypeProperty | t.ObjectMethod,\n      parent: t.ObjectExpression,\n    ): WhitespaceFlag {\n      if (parent.properties[0] === node) {\n        return WhitespaceFlag.before;\n      }\n    };\n\nnodes.ObjectTypeCallProperty = function (\n  node: t.ObjectTypeCallProperty,\n  parent: t.ObjectTypeAnnotation,\n): WhitespaceFlag {\n  if (parent.callProperties[0] === node && !parent.properties?.length) {\n    return WhitespaceFlag.before;\n  }\n};\n\nnodes.ObjectTypeIndexer = function (\n  node: t.ObjectTypeIndexer,\n  parent: t.ObjectTypeAnnotation,\n): WhitespaceFlag {\n  if (\n    parent.indexers[0] === node &&\n    !parent.properties?.length &&\n    !parent.callProperties?.length\n  ) {\n    return WhitespaceFlag.before;\n  }\n};\n\nnodes.ObjectTypeInternalSlot = function (\n  node: t.ObjectTypeInternalSlot,\n  parent: t.ObjectTypeAnnotation,\n): WhitespaceFlag {\n  if (\n    parent.internalSlots[0] === node &&\n    !parent.properties?.length &&\n    !parent.callProperties?.length &&\n    !parent.indexers?.length\n  ) {\n    return WhitespaceFlag.before;\n  }\n};\n\n/**\n * Add whitespace tests for nodes and their aliases.\n */\n\n(\n  [\n    [\"Function\", true],\n    [\"Class\", true],\n    [\"Loop\", true],\n    [\"LabeledStatement\", true],\n    [\"SwitchStatement\", true],\n    [\"TryStatement\", true],\n  ] as const\n).forEach(function ([type, amounts]) {\n  [type as string]\n    .concat(FLIPPED_ALIAS_KEYS[type] || [])\n    .forEach(function (type) {\n      const ret = amounts ? WhitespaceFlag.before | WhitespaceFlag.after : 0;\n      nodes[type] = () => ret;\n    });\n});\n","import {\n  isArrayTypeAnnotation,\n  isBinaryExpression,\n  isCallExpression,\n  isForOfStatement,\n  isIndexedAccessType,\n  isMemberExpression,\n  isObjectPattern,\n  isOptionalMemberExpression,\n  isYieldExpression,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport { TokenContext } from \"./index.ts\";\n\nconst PRECEDENCE = new Map([\n  [\"||\", 0],\n  [\"??\", 0],\n  [\"|>\", 0],\n  [\"&&\", 1],\n  [\"|\", 2],\n  [\"^\", 3],\n  [\"&\", 4],\n  [\"==\", 5],\n  [\"===\", 5],\n  [\"!=\", 5],\n  [\"!==\", 5],\n  [\"<\", 6],\n  [\">\", 6],\n  [\"<=\", 6],\n  [\">=\", 6],\n  [\"in\", 6],\n  [\"instanceof\", 6],\n  [\">>\", 7],\n  [\"<<\", 7],\n  [\">>>\", 7],\n  [\"+\", 8],\n  [\"-\", 8],\n  [\"*\", 9],\n  [\"/\", 9],\n  [\"%\", 9],\n  [\"**\", 10],\n]);\n\nfunction getBinaryPrecedence(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  nodeType: string,\n): number;\nfunction getBinaryPrecedence(\n  node: t.Node,\n  nodeType: string,\n): number | undefined;\nfunction getBinaryPrecedence(node: t.Node, nodeType: string) {\n  if (nodeType === \"BinaryExpression\" || nodeType === \"LogicalExpression\") {\n    return PRECEDENCE.get((node as t.Binary).operator);\n  }\n  if (nodeType === \"TSAsExpression\" || nodeType === \"TSSatisfiesExpression\") {\n    return PRECEDENCE.get(\"in\");\n  }\n}\n\nfunction isTSTypeExpression(nodeType: string) {\n  return (\n    nodeType === \"TSAsExpression\" ||\n    nodeType === \"TSSatisfiesExpression\" ||\n    nodeType === \"TSTypeAssertion\"\n  );\n}\n\nconst isClassExtendsClause = (\n  node: t.Node,\n  parent: t.Node,\n): parent is t.Class => {\n  const parentType = parent.type;\n  return (\n    (parentType === \"ClassDeclaration\" || parentType === \"ClassExpression\") &&\n    parent.superClass === node\n  );\n};\n\nconst hasPostfixPart = (node: t.Node, parent: t.Node) => {\n  const parentType = parent.type;\n  return (\n    ((parentType === \"MemberExpression\" ||\n      parentType === \"OptionalMemberExpression\") &&\n      parent.object === node) ||\n    ((parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\") &&\n      parent.callee === node) ||\n    (parentType === \"TaggedTemplateExpression\" && parent.tag === node) ||\n    parentType === \"TSNonNullExpression\"\n  );\n};\n\nexport function NullableTypeAnnotation(\n  node: t.NullableTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  return isArrayTypeAnnotation(parent);\n}\n\nexport function FunctionTypeAnnotation(\n  node: t.FunctionTypeAnnotation,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  const parentType = parent.type;\n  return (\n    // (() => A) | (() => B)\n    parentType === \"UnionTypeAnnotation\" ||\n    // (() => A) & (() => B)\n    parentType === \"IntersectionTypeAnnotation\" ||\n    // (() => A)[]\n    parentType === \"ArrayTypeAnnotation\" ||\n    Boolean(tokenContext & TokenContext.arrowFlowReturnType)\n  );\n}\n\nexport function UpdateExpression(\n  node: t.UpdateExpression,\n  parent: t.Node,\n): boolean {\n  return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);\n}\n\nfunction needsParenBeforeExpressionBrace(tokenContext: number) {\n  return Boolean(\n    tokenContext & (TokenContext.expressionStatement | TokenContext.arrowBody),\n  );\n}\n\nexport function ObjectExpression(\n  node: t.ObjectExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return needsParenBeforeExpressionBrace(tokenContext);\n}\n\nexport function DoExpression(\n  node: t.DoExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  // `async do` can start an expression statement\n  return (\n    !node.async && Boolean(tokenContext & TokenContext.expressionStatement)\n  );\n}\n\nexport function Binary(\n  node: t.Binary | t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean | undefined {\n  const parentType = parent.type;\n  if (\n    node.type === \"BinaryExpression\" &&\n    node.operator === \"**\" &&\n    parentType === \"BinaryExpression\" &&\n    parent.operator === \"**\"\n  ) {\n    return parent.left === node;\n  }\n\n  if (isClassExtendsClause(node, parent)) {\n    return true;\n  }\n\n  if (\n    hasPostfixPart(node, parent) ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"AwaitExpression\"\n  ) {\n    return true;\n  }\n\n  const parentPos = getBinaryPrecedence(parent, parentType);\n  if (parentPos != null) {\n    const nodePos = getBinaryPrecedence(node, node.type);\n    if (\n      // Logical expressions with the same precedence don't need parens.\n      (parentPos === nodePos &&\n        parentType === \"BinaryExpression\" &&\n        parent.right === node) ||\n      parentPos > nodePos\n    ) {\n      return true;\n    }\n  }\n\n  return undefined;\n}\n\nexport function UnionTypeAnnotation(\n  node: t.UnionTypeAnnotation,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"ArrayTypeAnnotation\" ||\n    parentType === \"NullableTypeAnnotation\" ||\n    parentType === \"IntersectionTypeAnnotation\" ||\n    parentType === \"UnionTypeAnnotation\"\n  );\n}\n\nexport { UnionTypeAnnotation as IntersectionTypeAnnotation };\n\nexport function OptionalIndexedAccessType(\n  node: t.OptionalIndexedAccessType,\n  parent: t.Node,\n): boolean {\n  return isIndexedAccessType(parent) && parent.objectType === node;\n}\n\nexport function TSAsExpression(\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n  parent: t.Node,\n): boolean {\n  if (\n    (parent.type === \"AssignmentExpression\" ||\n      parent.type === \"AssignmentPattern\") &&\n    parent.left === node\n  ) {\n    return true;\n  }\n  if (\n    parent.type === \"BinaryExpression\" &&\n    (parent.operator === \"|\" || parent.operator === \"&\") &&\n    node === parent.left\n  ) {\n    return true;\n  }\n  return Binary(node, parent);\n}\n\nexport { TSAsExpression as TSSatisfiesExpression };\n\nexport { UnaryLike as TSTypeAssertion };\n\nexport function TSConditionalType(\n  node: t.TSConditionalType,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    parentType === \"TSOptionalType\" ||\n    parentType === \"TSTypeOperator\" ||\n    // for `infer K extends (L extends M ? M : ...)`\n    parentType === \"TSTypeParameter\"\n  ) {\n    return true;\n  }\n  if (\n    (parentType === \"TSIntersectionType\" || parentType === \"TSUnionType\") &&\n    parent.types[0] === node\n  ) {\n    return true;\n  }\n  if (\n    parentType === \"TSConditionalType\" &&\n    (parent.checkType === node || parent.extendsType === node)\n  ) {\n    return true;\n  }\n  return false;\n}\n\nexport function TSUnionType(node: t.TSUnionType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSIntersectionType\" ||\n    parentType === \"TSTypeOperator\" ||\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    parentType === \"TSOptionalType\"\n  );\n}\n\nexport function TSIntersectionType(\n  node: t.TSUnionType,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSTypeOperator\" ||\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    parentType === \"TSOptionalType\"\n  );\n}\n\nexport function TSInferType(node: t.TSInferType, parent: t.Node): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    parentType === \"TSOptionalType\"\n  ) {\n    return true;\n  }\n  if (node.typeParameter.constraint) {\n    if (\n      (parentType === \"TSIntersectionType\" || parentType === \"TSUnionType\") &&\n      parent.types[0] === node\n    ) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function TSTypeOperator(\n  node: t.TSTypeOperator,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    parentType === \"TSOptionalType\"\n  );\n}\n\nexport function TSInstantiationExpression(\n  node: t.TSInstantiationExpression,\n  parent: t.Node,\n) {\n  const parentType = parent.type;\n  return (\n    (parentType === \"CallExpression\" ||\n      parentType === \"OptionalCallExpression\" ||\n      parentType === \"NewExpression\" ||\n      parentType === \"TSInstantiationExpression\") &&\n    !!(process.env.BABEL_8_BREAKING\n      ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n        parent.typeArguments\n      : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        parent.typeParameters)\n  );\n}\n\nexport function TSFunctionType(\n  node: t.TSFunctionType,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"TSIntersectionType\" ||\n    parentType === \"TSUnionType\" ||\n    parentType === \"TSTypeOperator\" ||\n    parentType === \"TSOptionalType\" ||\n    parentType === \"TSArrayType\" ||\n    (parentType === \"TSIndexedAccessType\" && parent.objectType === node) ||\n    (parentType === \"TSConditionalType\" &&\n      (parent.checkType === node || parent.extendsType === node))\n  );\n}\n\nexport { TSFunctionType as TSConstructorType };\n\nexport function BinaryExpression(\n  node: t.BinaryExpression,\n  parent: t.Node,\n  tokenContext: unknown,\n  inForStatementInit: boolean,\n): boolean {\n  // for ((1 in []);;);\n  // for (var x = (1 in []) in 2);\n  return node.operator === \"in\" && inForStatementInit;\n}\n\nexport function SequenceExpression(\n  node: t.SequenceExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"SequenceExpression\" ||\n    parentType === \"ParenthesizedExpression\" ||\n    (parentType === \"MemberExpression\" && parent.property === node) ||\n    (parentType === \"OptionalMemberExpression\" && parent.property === node) ||\n    parentType === \"TemplateLiteral\"\n  ) {\n    return false;\n  }\n  if (parentType === \"ClassDeclaration\") {\n    return true;\n  }\n  if (parentType === \"ForOfStatement\") {\n    return parent.right === node;\n  }\n  if (parentType === \"ExportDefaultDeclaration\") {\n    return true;\n  }\n\n  return !isStatement(parent);\n}\n\nexport function YieldExpression(\n  node: t.YieldExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  return (\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    hasPostfixPart(node, parent) ||\n    (parentType === \"AwaitExpression\" && isYieldExpression(node)) ||\n    (parentType === \"ConditionalExpression\" && node === parent.test) ||\n    isClassExtendsClause(node, parent) ||\n    isTSTypeExpression(parentType)\n  );\n}\n\nexport { YieldExpression as AwaitExpression };\n\nexport function ClassExpression(\n  node: t.ClassExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function UnaryLike(\n  node:\n    | t.UnaryLike\n    | t.TSTypeAssertion\n    | t.ArrowFunctionExpression\n    | t.ConditionalExpression\n    | t.AssignmentExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    hasPostfixPart(node, parent) ||\n    (isBinaryExpression(parent) &&\n      parent.operator === \"**\" &&\n      parent.left === node) ||\n    isClassExtendsClause(node, parent)\n  );\n}\n\nexport function FunctionExpression(\n  node: t.FunctionExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  return Boolean(\n    tokenContext &\n      (TokenContext.expressionStatement | TokenContext.exportDefault),\n  );\n}\n\nexport function ConditionalExpression(\n  node:\n    | t.ConditionalExpression\n    | t.ArrowFunctionExpression\n    | t.AssignmentExpression,\n  parent?: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (\n    parentType === \"UnaryExpression\" ||\n    parentType === \"SpreadElement\" ||\n    parentType === \"BinaryExpression\" ||\n    parentType === \"LogicalExpression\" ||\n    (parentType === \"ConditionalExpression\" && parent.test === node) ||\n    parentType === \"AwaitExpression\" ||\n    isTSTypeExpression(parentType)\n  ) {\n    return true;\n  }\n\n  return UnaryLike(node, parent);\n}\n\nexport { ConditionalExpression as ArrowFunctionExpression };\n\nexport function OptionalMemberExpression(\n  node: t.OptionalMemberExpression,\n  parent: t.Node,\n): boolean {\n  return (\n    (isCallExpression(parent) && parent.callee === node) ||\n    (isMemberExpression(parent) && parent.object === node)\n  );\n}\n\nexport { OptionalMemberExpression as OptionalCallExpression };\n\nexport function AssignmentExpression(\n  node: t.AssignmentExpression,\n  parent: t.Node,\n  tokenContext: number,\n): boolean {\n  if (\n    needsParenBeforeExpressionBrace(tokenContext) &&\n    isObjectPattern(node.left)\n  ) {\n    return true;\n  } else {\n    return ConditionalExpression(node, parent);\n  }\n}\n\nexport function LogicalExpression(\n  node: t.LogicalExpression,\n  parent: t.Node,\n): boolean {\n  const parentType = parent.type;\n  if (isTSTypeExpression(parentType)) return true;\n  if (parentType !== \"LogicalExpression\") return false;\n  switch (node.operator) {\n    case \"||\":\n      return parent.operator === \"??\" || parent.operator === \"&&\";\n    case \"&&\":\n      return parent.operator === \"??\";\n    case \"??\":\n      return parent.operator !== \"??\";\n  }\n}\n\nexport function Identifier(\n  node: t.Identifier,\n  parent: t.Node,\n  tokenContext: number,\n  _inForInit: boolean,\n  getRawIdentifier: (node: t.Identifier) => string,\n): boolean {\n  const parentType = parent.type;\n  // 13.15.2 AssignmentExpression RS: Evaluation\n  // (fn) = function () {};\n  if (\n    node.extra?.parenthesized &&\n    parentType === \"AssignmentExpression\" &&\n    parent.left === node\n  ) {\n    const rightType = parent.right.type;\n    if (\n      (rightType === \"FunctionExpression\" || rightType === \"ClassExpression\") &&\n      parent.right.id == null\n    ) {\n      return true;\n    }\n  }\n\n  if (getRawIdentifier && getRawIdentifier(node) !== node.name) {\n    return false;\n  }\n\n  // Non-strict code allows the identifier `let`, but it cannot occur as-is in\n  // certain contexts to avoid ambiguity with contextual keyword `let`.\n  if (node.name === \"let\") {\n    // Some contexts only forbid `let [`, so check if the next token would\n    // be the left bracket of a computed member expression.\n    const isFollowedByBracket =\n      isMemberExpression(parent, {\n        object: node,\n        computed: true,\n      }) ||\n      isOptionalMemberExpression(parent, {\n        object: node,\n        computed: true,\n        optional: false,\n      });\n    if (\n      isFollowedByBracket &&\n      tokenContext &\n        (TokenContext.expressionStatement |\n          TokenContext.forHead |\n          TokenContext.forInHead)\n    ) {\n      return true;\n    }\n    return Boolean(tokenContext & TokenContext.forOfHead);\n  }\n\n  // ECMAScript specifically forbids a for-of loop from starting with the\n  // token sequence `for (async of`, because it would be ambiguous with\n  // `for (async of => {};;)`, so we need to add extra parentheses.\n  return (\n    node.name === \"async\" &&\n    isForOfStatement(parent, { left: node, await: false })\n  );\n}\n","import * as whitespace from \"./whitespace.ts\";\nimport * as parens from \"./parentheses.ts\";\nimport {\n  FLIPPED_ALIAS_KEYS,\n  VISITOR_KEYS,\n  isCallExpression,\n  isDecorator,\n  isExpressionStatement,\n  isMemberExpression,\n  isNewExpression,\n  isParenthesizedExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nimport type { WhitespaceFlag } from \"./whitespace.ts\";\n\nexport const enum TokenContext {\n  expressionStatement = 1 << 0,\n  arrowBody = 1 << 1,\n  exportDefault = 1 << 2,\n  forHead = 1 << 3,\n  forInHead = 1 << 4,\n  forOfHead = 1 << 5,\n  arrowFlowReturnType = 1 << 6,\n}\n\ntype NodeHandler<R> = (\n  node: t.Node,\n  // todo:\n  // node: K extends keyof typeof t\n  //   ? Extract<typeof t[K], { type: \"string\" }>\n  //   : t.Node,\n  parent: t.Node,\n  tokenContext?: number,\n  inForStatementInit?: boolean,\n  getRawIdentifier?: (node: t.Identifier) => string,\n) => R;\n\nexport type NodeHandlers<R> = {\n  [K in string]?: NodeHandler<R>;\n};\n\nfunction expandAliases<R>(obj: NodeHandlers<R>) {\n  const map = new Map<string, NodeHandler<R>>();\n\n  function add(type: string, func: NodeHandler<R>) {\n    const fn = map.get(type);\n    map.set(\n      type,\n      fn\n        ? function (node, parent, stack, inForInit, getRawIdentifier) {\n            return (\n              fn(node, parent, stack, inForInit, getRawIdentifier) ??\n              func(node, parent, stack, inForInit, getRawIdentifier)\n            );\n          }\n        : func,\n    );\n  }\n\n  for (const type of Object.keys(obj)) {\n    const aliases = FLIPPED_ALIAS_KEYS[type];\n    if (aliases) {\n      for (const alias of aliases) {\n        add(alias, obj[type]);\n      }\n    } else {\n      add(type, obj[type]);\n    }\n  }\n\n  return map;\n}\n\n// Rather than using `t.is` on each object property, we pre-expand any type aliases\n// into concrete types so that the 'find' call below can be as fast as possible.\nconst expandedParens = expandAliases(parens);\nconst expandedWhitespaceNodes = expandAliases(whitespace.nodes);\n\nfunction isOrHasCallExpression(node: t.Node): boolean {\n  if (isCallExpression(node)) {\n    return true;\n  }\n\n  return isMemberExpression(node) && isOrHasCallExpression(node.object);\n}\n\nexport function needsWhitespace(\n  node: t.Node,\n  parent: t.Node,\n  type: WhitespaceFlag,\n): boolean {\n  if (!node) return false;\n\n  if (isExpressionStatement(node)) {\n    node = node.expression;\n  }\n\n  const flag = expandedWhitespaceNodes.get(node.type)?.(node, parent);\n\n  if (typeof flag === \"number\") {\n    return (flag & type) !== 0;\n  }\n\n  return false;\n}\n\nexport function needsWhitespaceBefore(node: t.Node, parent: t.Node) {\n  return needsWhitespace(node, parent, 1);\n}\n\nexport function needsWhitespaceAfter(node: t.Node, parent: t.Node) {\n  return needsWhitespace(node, parent, 2);\n}\n\nexport function needsParens(\n  node: t.Node,\n  parent: t.Node,\n  tokenContext?: number,\n  inForInit?: boolean,\n  getRawIdentifier?: (node: t.Identifier) => string,\n) {\n  if (!parent) return false;\n\n  if (isNewExpression(parent) && parent.callee === node) {\n    if (isOrHasCallExpression(node)) return true;\n  }\n\n  if (isDecorator(parent)) {\n    return (\n      !isDecoratorMemberExpression(node) &&\n      !(isCallExpression(node) && isDecoratorMemberExpression(node.callee)) &&\n      !isParenthesizedExpression(node)\n    );\n  }\n\n  return expandedParens.get(node.type)?.(\n    node,\n    parent,\n    tokenContext,\n    inForInit,\n    getRawIdentifier,\n  );\n}\n\nfunction isDecoratorMemberExpression(node: t.Node): boolean {\n  switch (node.type) {\n    case \"Identifier\":\n      return true;\n    case \"MemberExpression\":\n      return (\n        !node.computed &&\n        node.property.type === \"Identifier\" &&\n        isDecoratorMemberExpression(node.object)\n      );\n    default:\n      return false;\n  }\n}\n\nexport function isLastChild(parent: t.Node, child: t.Node) {\n  const visitorKeys = VISITOR_KEYS[parent.type];\n  for (let i = visitorKeys.length - 1; i >= 0; i--) {\n    const val = (parent as any)[visitorKeys[i]] as t.Node | t.Node[] | null;\n    if (val === child) {\n      return true;\n    } else if (Array.isArray(val)) {\n      let j = val.length - 1;\n      while (j >= 0 && val[j] === null) j--;\n      return j >= 0 && val[j] === child;\n    } else if (val) {\n      return false;\n    }\n  }\n  return false;\n}\n","import type * as t from \"@babel/types\";\nimport type { Token } from \"@babel/parser\";\n\nimport { traverseFast, VISITOR_KEYS } from \"@babel/types\";\n\nexport class TokenMap {\n  _tokens: Token[];\n  _source: string;\n\n  _nodesToTokenIndexes: Map<t.Node, number[]> = new Map();\n  _nodesOccurrencesCountCache: Map<\n    t.Node,\n    { test: string; count: number; i: number }\n  > = new Map();\n\n  _tokensCache = new Map<t.Node, { first: number; last: number }>();\n\n  constructor(ast: t.Node, tokens: Token[], source: string) {\n    this._tokens = tokens;\n    this._source = source;\n\n    traverseFast(ast, node => {\n      const indexes = this._getTokensIndexesOfNode(node);\n      if (indexes.length > 0) this._nodesToTokenIndexes.set(node, indexes);\n    });\n\n    this._tokensCache = null;\n  }\n\n  has(node: t.Node): boolean {\n    return this._nodesToTokenIndexes.has(node);\n  }\n\n  getIndexes(node: t.Node): readonly number[] | undefined {\n    return this._nodesToTokenIndexes.get(node);\n  }\n\n  find(\n    node: t.Node,\n    condition: (token: Token, index: number) => boolean,\n  ): Token | null {\n    const indexes = this._nodesToTokenIndexes.get(node);\n    if (indexes) {\n      for (let k = 0; k < indexes.length; k++) {\n        const index = indexes[k];\n        const tok = this._tokens[index];\n        if (condition(tok, index)) return tok;\n      }\n    }\n    return null;\n  }\n\n  findLastIndex(\n    node: t.Node,\n    condition: (token: Token, index: number) => boolean,\n  ): number {\n    const indexes = this._nodesToTokenIndexes.get(node);\n    if (indexes) {\n      for (let k = indexes.length - 1; k >= 0; k--) {\n        const index = indexes[k];\n        const tok = this._tokens[index];\n        if (condition(tok, index)) return index;\n      }\n    }\n    return -1;\n  }\n\n  findMatching(\n    node: t.Node,\n    test: string,\n    occurrenceCount: number = 0,\n  ): Token | null {\n    const indexes = this._nodesToTokenIndexes.get(node);\n    if (indexes) {\n      let i = 0;\n      const count = occurrenceCount;\n\n      // To avoid O(n^2) search when printing lists (such as arrays), we\n      // cache the last index of a given token for a given occurrence count.\n      // If then we are asked to find the next occurrence of the same token,\n      // we start from the index of the previously found token.\n      // This cache only kicks in after 2 tokens of the same type, to avoid\n      // overhead in the simple case of having unique tokens per node.\n      if (count > 1) {\n        const cache = this._nodesOccurrencesCountCache.get(node);\n        if (cache && cache.test === test && cache.count < count) {\n          i = cache.i + 1;\n          occurrenceCount -= cache.count + 1;\n        }\n      }\n\n      for (; i < indexes.length; i++) {\n        const tok = this._tokens[indexes[i]];\n        if (this.matchesOriginal(tok, test)) {\n          if (occurrenceCount === 0) {\n            if (count > 0) {\n              this._nodesOccurrencesCountCache.set(node, { test, count, i });\n            }\n            return tok;\n          }\n          occurrenceCount--;\n        }\n      }\n    }\n    return null;\n  }\n\n  matchesOriginal(token: Token, test: string) {\n    if (token.end - token.start !== test.length) return false;\n    if (token.value != null) return token.value === test;\n    return this._source.startsWith(test, token.start);\n  }\n\n  startMatches(node: t.Node, test: string): boolean {\n    const indexes = this._nodesToTokenIndexes.get(node);\n    if (!indexes) return false;\n    const tok = this._tokens[indexes[0]];\n    if (tok.start !== node.start) return false;\n    return this.matchesOriginal(tok, test);\n  }\n\n  endMatches(node: t.Node, test: string): boolean {\n    const indexes = this._nodesToTokenIndexes.get(node);\n    if (!indexes) return false;\n    const tok = this._tokens[indexes[indexes.length - 1]];\n    if (tok.end !== node.end) return false;\n    return this.matchesOriginal(tok, test);\n  }\n\n  _getTokensIndexesOfNode(node: t.Node): number[] {\n    if (node.start == null || node.end == null) return [];\n\n    const { first, last } = this._findTokensOfNode(\n      node,\n      0,\n      this._tokens.length - 1,\n    );\n\n    let low = first;\n\n    const children = childrenIterator(node);\n\n    if (\n      (node.type === \"ExportNamedDeclaration\" ||\n        node.type === \"ExportDefaultDeclaration\") &&\n      node.declaration &&\n      node.declaration.type === \"ClassDeclaration\"\n    ) {\n      // Exported class declarations can be not properly nested inside\n      // the export declaration that contains them. For example, in\n      // `@dec export class Foo {}` the `export` is covered by the\n      // ClassDeclaration range. Skip the class declaration from the list\n      // of children to skip, so that when looking for `export` we also\n      // traverse its tokens.\n      children.next();\n    }\n\n    const indexes = [];\n\n    for (const child of children) {\n      if (child == null) continue;\n      if (child.start == null || child.end == null) continue;\n\n      const childTok = this._findTokensOfNode(child, low, last);\n\n      const high = childTok.first;\n      for (let k = low; k < high; k++) indexes.push(k);\n\n      low = childTok.last + 1;\n    }\n\n    for (let k = low; k <= last; k++) indexes.push(k);\n\n    return indexes;\n  }\n\n  _findTokensOfNode(node: t.Node, low: number, high: number) {\n    const cached = this._tokensCache.get(node);\n    if (cached) return cached;\n\n    const first = this._findFirstTokenOfNode(node.start, low, high);\n    const last = this._findLastTokenOfNode(node.end, first, high);\n\n    this._tokensCache.set(node, { first, last });\n    return { first, last };\n  }\n\n  _findFirstTokenOfNode(start: number, low: number, high: number): number {\n    while (low <= high) {\n      const mid = (high + low) >> 1;\n      if (start < this._tokens[mid].start) {\n        high = mid - 1;\n      } else if (start > this._tokens[mid].start) {\n        low = mid + 1;\n      } else {\n        return mid;\n      }\n    }\n    return low;\n  }\n\n  _findLastTokenOfNode(end: number, low: number, high: number): number {\n    while (low <= high) {\n      const mid = (high + low) >> 1;\n      if (end < this._tokens[mid].end) {\n        high = mid - 1;\n      } else if (end > this._tokens[mid].end) {\n        low = mid + 1;\n      } else {\n        return mid;\n      }\n    }\n    return high;\n  }\n}\n\nfunction* childrenIterator(node: t.Node) {\n  // We need special handling to iterate TemplateLiteral\n  // children in order, since the two lists are interleaved.\n  if (node.type === \"TemplateLiteral\") {\n    yield node.quasis[0];\n    for (let i = 1; i < node.quasis.length; i++) {\n      yield node.expressions[i - 1];\n      yield node.quasis[i];\n    }\n    return;\n  }\n\n  const keys = VISITOR_KEYS[node.type];\n  for (const key of keys) {\n    const child = (node as any)[key];\n    if (!child) continue;\n    if (Array.isArray(child)) {\n      yield* child;\n    } else {\n      yield child;\n    }\n  }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TaggedTemplateExpression(\n  this: Printer,\n  node: t.TaggedTemplateExpression,\n) {\n  this.print(node.tag);\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n    this.print(node.typeParameters);\n  }\n  this.print(node.quasi);\n}\n\nexport function TemplateElement(this: Printer) {\n  throw new Error(\"TemplateElement printing is handled in TemplateLiteral\");\n}\n\nexport type TemplateLiteralBase = t.Node & {\n  quasis: t.TemplateElement[];\n};\n\nexport function _printTemplate<T extends t.Node>(\n  this: Printer,\n  node: TemplateLiteralBase,\n  substitutions: T[],\n) {\n  const quasis = node.quasis;\n  let partRaw = \"`\";\n  for (let i = 0; i < quasis.length - 1; i++) {\n    partRaw += quasis[i].value.raw;\n    this.token(partRaw + \"${\", true);\n    this.print(substitutions[i]);\n    partRaw = \"}\";\n\n    // In Babel 7 we have individual tokens for ${ and }, so the automatic\n    // catchup logic does not work. Manually look for those tokens.\n    if (!process.env.BABEL_8_BREAKING && this.tokenMap) {\n      const token = this.tokenMap.findMatching(node, \"}\", i);\n      if (token) this._catchUpTo(token.loc.start);\n    }\n  }\n  partRaw += quasis[quasis.length - 1].value.raw;\n  this.token(partRaw + \"`\", true);\n}\n\nexport function TemplateLiteral(this: Printer, node: t.TemplateLiteral) {\n  this._printTemplate(node, node.expressions);\n}\n","import type Printer from \"../printer.ts\";\nimport {\n  isCallExpression,\n  isLiteral,\n  isMemberExpression,\n  isNewExpression,\n  isPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function UnaryExpression(this: Printer, node: t.UnaryExpression) {\n  const { operator } = node;\n  if (\n    operator === \"void\" ||\n    operator === \"delete\" ||\n    operator === \"typeof\" ||\n    // throwExpressions\n    operator === \"throw\"\n  ) {\n    this.word(operator);\n    this.space();\n  } else {\n    this.token(operator);\n  }\n\n  this.print(node.argument);\n}\n\nexport function DoExpression(this: Printer, node: t.DoExpression) {\n  if (node.async) {\n    this.word(\"async\", true);\n    this.space();\n  }\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function ParenthesizedExpression(\n  this: Printer,\n  node: t.ParenthesizedExpression,\n) {\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.print(node.expression);\n  exit();\n  this.rightParens(node);\n}\n\nexport function UpdateExpression(this: Printer, node: t.UpdateExpression) {\n  if (node.prefix) {\n    this.token(node.operator);\n    this.print(node.argument);\n  } else {\n    this.print(node.argument, true);\n    this.token(node.operator);\n  }\n}\n\nexport function ConditionalExpression(\n  this: Printer,\n  node: t.ConditionalExpression,\n) {\n  this.print(node.test);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.consequent);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.alternate);\n}\n\nexport function NewExpression(\n  this: Printer,\n  node: t.NewExpression,\n  parent: t.Node,\n) {\n  this.word(\"new\");\n  this.space();\n  this.print(node.callee);\n  if (\n    this.format.minified &&\n    node.arguments.length === 0 &&\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    !node.optional &&\n    !isCallExpression(parent, { callee: node }) &&\n    !isMemberExpression(parent) &&\n    !isNewExpression(parent)\n  ) {\n    return;\n  }\n\n  this.print(node.typeArguments);\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // Legacy TS AST\n  }\n\n  // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n  if (node.optional) {\n    // TODO: This can never happen\n    this.token(\"?.\");\n  }\n\n  if (\n    node.arguments.length === 0 &&\n    this.tokenMap &&\n    !this.tokenMap.endMatches(node, \")\")\n  ) {\n    return;\n  }\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, this.shouldPrintTrailingComma(\")\"));\n  exit();\n  this.rightParens(node);\n}\n\nexport function SequenceExpression(this: Printer, node: t.SequenceExpression) {\n  this.printList(node.expressions);\n}\n\nexport function ThisExpression(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function Super(this: Printer) {\n  this.word(\"super\");\n}\n\nexport function _shouldPrintDecoratorsBeforeExport(\n  this: Printer,\n  node: t.ExportDeclaration & { declaration: t.ClassDeclaration },\n) {\n  if (typeof this.format.decoratorsBeforeExport === \"boolean\") {\n    return this.format.decoratorsBeforeExport;\n  }\n  return (\n    typeof node.start === \"number\" && node.start === node.declaration.start\n  );\n}\n\nexport function Decorator(this: Printer, node: t.Decorator) {\n  this.token(\"@\");\n  this.print(node.expression);\n  this.newline();\n}\n\nexport function OptionalMemberExpression(\n  this: Printer,\n  node: t.OptionalMemberExpression,\n) {\n  let { computed } = node;\n  const { optional, property } = node;\n\n  this.print(node.object);\n\n  if (!computed && isMemberExpression(property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  // @ts-expect-error todo(flow->ts) maybe instead of typeof check specific literal types?\n  if (isLiteral(property) && typeof property.value === \"number\") {\n    computed = true;\n  }\n  if (optional) {\n    this.token(\"?.\");\n  }\n\n  if (computed) {\n    this.token(\"[\");\n    this.print(property);\n    this.token(\"]\");\n  } else {\n    if (!optional) {\n      this.token(\".\");\n    }\n    this.print(property);\n  }\n}\n\nexport function OptionalCallExpression(\n  this: Printer,\n  node: t.OptionalCallExpression,\n) {\n  this.print(node.callee);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // legacy TS AST\n  }\n\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n\n  this.print(node.typeArguments);\n\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments);\n  exit();\n  this.rightParens(node);\n}\n\nexport function CallExpression(this: Printer, node: t.CallExpression) {\n  this.print(node.callee);\n\n  this.print(node.typeArguments);\n  if (!process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // legacy TS AST\n  }\n  this.token(\"(\");\n  const exit = this.enterDelimited();\n  this.printList(node.arguments, this.shouldPrintTrailingComma(\")\"));\n  exit();\n  this.rightParens(node);\n}\n\nexport function Import(this: Printer) {\n  this.word(\"import\");\n}\n\nexport function AwaitExpression(this: Printer, node: t.AwaitExpression) {\n  this.word(\"await\");\n\n  if (node.argument) {\n    this.space();\n    this.printTerminatorless(node.argument);\n  }\n}\n\nexport function YieldExpression(this: Printer, node: t.YieldExpression) {\n  this.word(\"yield\", true);\n\n  if (node.delegate) {\n    this.token(\"*\");\n    if (node.argument) {\n      this.space();\n      // line terminators are allowed after yield*\n      this.print(node.argument);\n    }\n  } else {\n    if (node.argument) {\n      this.space();\n      this.printTerminatorless(node.argument);\n    }\n  }\n}\n\nexport function EmptyStatement(this: Printer) {\n  this.semicolon(true /* force */);\n}\n\nexport function ExpressionStatement(\n  this: Printer,\n  node: t.ExpressionStatement,\n) {\n  this.tokenContext |= TokenContext.expressionStatement;\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function AssignmentPattern(this: Printer, node: t.AssignmentPattern) {\n  this.print(node.left);\n  if (node.left.type === \"Identifier\" || isPattern(node.left)) {\n    if (node.left.optional) this.token(\"?\");\n    this.print(node.left.typeAnnotation);\n  }\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n}\n\nexport function AssignmentExpression(\n  this: Printer,\n  node: t.AssignmentExpression | t.BinaryExpression | t.LogicalExpression,\n) {\n  this.print(node.left);\n\n  this.space();\n  if (node.operator === \"in\" || node.operator === \"instanceof\") {\n    this.word(node.operator);\n  } else {\n    this.token(node.operator);\n    this._endsWithDiv = node.operator === \"/\";\n  }\n  this.space();\n\n  this.print(node.right);\n}\n\nexport function BindExpression(this: Printer, node: t.BindExpression) {\n  this.print(node.object);\n  this.token(\"::\");\n  this.print(node.callee);\n}\n\nexport {\n  AssignmentExpression as BinaryExpression,\n  AssignmentExpression as LogicalExpression,\n};\n\nexport function MemberExpression(this: Printer, node: t.MemberExpression) {\n  this.print(node.object);\n\n  if (!node.computed && isMemberExpression(node.property)) {\n    throw new TypeError(\"Got a MemberExpression for MemberExpression property\");\n  }\n\n  let computed = node.computed;\n  // @ts-expect-error todo(flow->ts) maybe use specific literal types\n  if (isLiteral(node.property) && typeof node.property.value === \"number\") {\n    computed = true;\n  }\n\n  if (computed) {\n    const exit = this.enterDelimited();\n    this.token(\"[\");\n    this.print(node.property);\n    this.token(\"]\");\n    exit();\n  } else {\n    this.token(\".\");\n    this.print(node.property);\n  }\n}\n\nexport function MetaProperty(this: Printer, node: t.MetaProperty) {\n  this.print(node.meta);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function PrivateName(this: Printer, node: t.PrivateName) {\n  this.token(\"#\");\n  this.print(node.id);\n}\n\nexport function V8IntrinsicIdentifier(\n  this: Printer,\n  node: t.V8IntrinsicIdentifier,\n) {\n  this.token(\"%\");\n  this.word(node.name);\n}\n\nexport function ModuleExpression(this: Printer, node: t.ModuleExpression) {\n  this.word(\"module\", true);\n  this.space();\n  this.token(\"{\");\n  this.indent();\n  const { body } = node;\n  if (body.body.length || body.directives.length) {\n    this.newline();\n  }\n  this.print(body);\n  this.dedent();\n  this.rightBrace(node);\n}\n","import type Printer from \"../printer.ts\";\nimport {\n  isFor,\n  isForStatement,\n  isIfStatement,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function WithStatement(this: Printer, node: t.WithStatement) {\n  this.word(\"with\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.object);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function IfStatement(this: Printer, node: t.IfStatement) {\n  this.word(\"if\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.space();\n\n  const needsBlock =\n    node.alternate && isIfStatement(getLastStatement(node.consequent));\n  if (needsBlock) {\n    this.token(\"{\");\n    this.newline();\n    this.indent();\n  }\n\n  this.printAndIndentOnComments(node.consequent);\n\n  if (needsBlock) {\n    this.dedent();\n    this.newline();\n    this.token(\"}\");\n  }\n\n  if (node.alternate) {\n    if (this.endsWith(charCodes.rightCurlyBrace)) this.space();\n    this.word(\"else\");\n    this.space();\n    this.printAndIndentOnComments(node.alternate);\n  }\n}\n\n// Recursively get the last statement.\nfunction getLastStatement(statement: t.Statement): t.Statement {\n  // @ts-expect-error: If statement.body is empty or not a Node, isStatement will return false\n  const { body } = statement;\n  if (isStatement(body) === false) {\n    return statement;\n  }\n\n  return getLastStatement(body);\n}\n\nexport function ForStatement(this: Printer, node: t.ForStatement) {\n  this.word(\"for\");\n  this.space();\n  this.token(\"(\");\n\n  {\n    const exit = this.enterForStatementInit();\n    this.tokenContext |= TokenContext.forHead;\n    this.print(node.init);\n    exit();\n  }\n\n  this.token(\";\");\n\n  if (node.test) {\n    this.space();\n    this.print(node.test);\n  }\n  this.token(\";\", false, 1);\n\n  if (node.update) {\n    this.space();\n    this.print(node.update);\n  }\n\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport function WhileStatement(this: Printer, node: t.WhileStatement) {\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nfunction ForXStatement(this: Printer, node: t.ForXStatement) {\n  this.word(\"for\");\n  this.space();\n  const isForOf = node.type === \"ForOfStatement\";\n  if (isForOf && node.await) {\n    this.word(\"await\");\n    this.space();\n  }\n  this.noIndentInnerCommentsHere();\n  this.token(\"(\");\n  {\n    const exit = isForOf ? null : this.enterForStatementInit();\n    this.tokenContext |= isForOf\n      ? TokenContext.forOfHead\n      : TokenContext.forInHead;\n    this.print(node.left);\n    exit?.();\n  }\n  this.space();\n  this.word(isForOf ? \"of\" : \"in\");\n  this.space();\n  this.print(node.right);\n  this.token(\")\");\n  this.printBlock(node);\n}\n\nexport const ForInStatement = ForXStatement;\nexport const ForOfStatement = ForXStatement;\n\nexport function DoWhileStatement(this: Printer, node: t.DoWhileStatement) {\n  this.word(\"do\");\n  this.space();\n  this.print(node.body);\n  this.space();\n  this.word(\"while\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.test);\n  this.token(\")\");\n  this.semicolon();\n}\n\nfunction printStatementAfterKeyword(printer: Printer, node: t.Node) {\n  if (node) {\n    printer.space();\n    printer.printTerminatorless(node);\n  }\n\n  printer.semicolon();\n}\n\nexport function BreakStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"break\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ContinueStatement(this: Printer, node: t.ContinueStatement) {\n  this.word(\"continue\");\n  printStatementAfterKeyword(this, node.label);\n}\n\nexport function ReturnStatement(this: Printer, node: t.ReturnStatement) {\n  this.word(\"return\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function ThrowStatement(this: Printer, node: t.ThrowStatement) {\n  this.word(\"throw\");\n  printStatementAfterKeyword(this, node.argument);\n}\n\nexport function LabeledStatement(this: Printer, node: t.LabeledStatement) {\n  this.print(node.label);\n  this.token(\":\");\n  this.space();\n  this.print(node.body);\n}\n\nexport function TryStatement(this: Printer, node: t.TryStatement) {\n  this.word(\"try\");\n  this.space();\n  this.print(node.block);\n  this.space();\n\n  // Esprima bug puts the catch clause in a `handlers` array.\n  // see https://code.google.com/p/esprima/issues/detail?id=433\n  // We run into this from regenerator generated ast.\n  // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n  if (node.handlers) {\n    // @ts-expect-error todo(flow->ts) should ast node type be updated to support this?\n    this.print(node.handlers[0]);\n  } else {\n    this.print(node.handler);\n  }\n\n  if (node.finalizer) {\n    this.space();\n    this.word(\"finally\");\n    this.space();\n    this.print(node.finalizer);\n  }\n}\n\nexport function CatchClause(this: Printer, node: t.CatchClause) {\n  this.word(\"catch\");\n  this.space();\n  if (node.param) {\n    this.token(\"(\");\n    this.print(node.param);\n    this.print(node.param.typeAnnotation);\n    this.token(\")\");\n    this.space();\n  }\n  this.print(node.body);\n}\n\nexport function SwitchStatement(this: Printer, node: t.SwitchStatement) {\n  this.word(\"switch\");\n  this.space();\n  this.token(\"(\");\n  this.print(node.discriminant);\n  this.token(\")\");\n  this.space();\n  this.token(\"{\");\n\n  this.printSequence(\n    node.cases,\n    true,\n    undefined,\n    function addNewlines(leading, cas) {\n      if (!leading && node.cases[node.cases.length - 1] === cas) return -1;\n    },\n  );\n\n  this.rightBrace(node);\n}\n\nexport function SwitchCase(this: Printer, node: t.SwitchCase) {\n  if (node.test) {\n    this.word(\"case\");\n    this.space();\n    this.print(node.test);\n    this.token(\":\");\n  } else {\n    this.word(\"default\");\n    this.token(\":\");\n  }\n\n  if (node.consequent.length) {\n    this.newline();\n    this.printSequence(node.consequent, true);\n  }\n}\n\nexport function DebuggerStatement(this: Printer) {\n  this.word(\"debugger\");\n  this.semicolon();\n}\n\nexport function VariableDeclaration(\n  this: Printer,\n  node: t.VariableDeclaration,\n  parent: t.Node,\n) {\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  const { kind } = node;\n  if (kind === \"await using\") {\n    this.word(\"await\");\n    this.space();\n    this.word(\"using\", true);\n  } else {\n    this.word(kind, kind === \"using\");\n  }\n  this.space();\n\n  let hasInits = false;\n  // don't add whitespace to loop heads\n  if (!isFor(parent)) {\n    for (const declar of node.declarations) {\n      if (declar.init) {\n        // has an init so let's split it up over multiple lines\n        hasInits = true;\n      }\n    }\n  }\n\n  //\n  // use a pretty separator when we aren't in compact mode, have initializers and don't have retainLines on\n  // this will format declarations like:\n  //\n  //   let foo = \"bar\", bar = \"foo\";\n  //\n  // into\n  //\n  //   let foo = \"bar\",\n  //       bar = \"foo\";\n  //\n\n  this.printList(\n    node.declarations,\n    undefined,\n    undefined,\n    node.declarations.length > 1,\n    hasInits\n      ? function (this: Printer, occurrenceCount: number) {\n          this.token(\",\", false, occurrenceCount);\n          this.newline();\n        }\n      : undefined,\n  );\n\n  if (isFor(parent)) {\n    // don't give semicolons to these nodes since they'll be inserted in the parent generator\n    if (isForStatement(parent)) {\n      if (parent.init === node) return;\n    } else {\n      if (parent.left === node) return;\n    }\n  }\n\n  this.semicolon();\n}\n\nexport function VariableDeclarator(this: Printer, node: t.VariableDeclarator) {\n  this.print(node.id);\n  if (node.definite) this.token(\"!\"); // TS\n  // @ts-ignore(Babel 7 vs Babel 8) Property 'typeAnnotation' does not exist on type 'MemberExpression'.\n  this.print(node.id.typeAnnotation);\n  if (node.init) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.init);\n  }\n}\n","import type Printer from \"../printer.ts\";\nimport {\n  isExportDefaultDeclaration,\n  isExportNamedDeclaration,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nexport function ClassDeclaration(\n  this: Printer,\n  node: t.ClassDeclaration,\n  parent: t.Node,\n) {\n  const inExport =\n    isExportDefaultDeclaration(parent) || isExportNamedDeclaration(parent);\n\n  if (\n    !inExport ||\n    !this._shouldPrintDecoratorsBeforeExport(\n      parent as t.ExportDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    this.printJoin(node.decorators);\n  }\n\n  if (node.declare) {\n    // TS\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (node.abstract) {\n    // TS\n    this.word(\"abstract\");\n    this.space();\n  }\n\n  this.word(\"class\");\n\n  if (node.id) {\n    this.space();\n    this.print(node.id);\n  }\n\n  this.print(node.typeParameters);\n\n  if (node.superClass) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.superClass);\n    this.print(\n      process.env.BABEL_8_BREAKING\n        ? // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          node.superTypeArguments\n        : // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          node.superTypeParameters,\n    );\n  }\n\n  if (node.implements) {\n    this.space();\n    this.word(\"implements\");\n    this.space();\n    this.printList(node.implements);\n  }\n\n  this.space();\n  this.print(node.body);\n}\n\nexport { ClassDeclaration as ClassExpression };\n\nexport function ClassBody(this: Printer, node: t.ClassBody) {\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n\n    const separator = classBodyEmptySemicolonsPrinter(this, node);\n    separator?.(-1); // print leading semicolons in preserveFormat mode\n\n    const exit = this.enterDelimited();\n    this.printJoin(node.body, true, true, separator, true);\n    exit();\n\n    if (!this.endsWith(charCodes.lineFeed)) this.newline();\n\n    this.rightBrace(node);\n  }\n}\n\nfunction classBodyEmptySemicolonsPrinter(printer: Printer, node: t.ClassBody) {\n  if (!printer.tokenMap || node.start == null || node.end == null) {\n    return null;\n  }\n\n  // \"empty statements\" in class bodies are not represented in the AST.\n  // Print them by checking if there are any ; tokens between the current AST\n  // member and the next one.\n\n  const indexes = printer.tokenMap.getIndexes(node);\n  if (!indexes) return null;\n\n  let k = 1; // start from 1 to skip '{'\n\n  let occurrenceCount = 0;\n\n  let nextLocIndex = 0;\n  const advanceNextLocIndex = () => {\n    while (\n      nextLocIndex < node.body.length &&\n      node.body[nextLocIndex].start == null\n    ) {\n      nextLocIndex++;\n    }\n  };\n  advanceNextLocIndex();\n\n  return (i: number) => {\n    if (nextLocIndex <= i) {\n      nextLocIndex = i + 1;\n      advanceNextLocIndex();\n    }\n\n    const end =\n      nextLocIndex === node.body.length\n        ? node.end\n        : node.body[nextLocIndex].start;\n\n    let tok;\n    while (\n      k < indexes.length &&\n      printer.tokenMap.matchesOriginal(\n        (tok = printer._tokens[indexes[k]]),\n        \";\",\n      ) &&\n      tok.start < end\n    ) {\n      printer.token(\";\", undefined, occurrenceCount++);\n      k++;\n    }\n  };\n}\n\nexport function ClassProperty(this: Printer, node: t.ClassProperty) {\n  this.printJoin(node.decorators);\n\n  if (!node.static && !this.format.preserveFormat) {\n    // catch up to property key, avoid line break\n    // between member TS modifiers and the property key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassAccessorProperty(\n  this: Printer,\n  node: t.ClassAccessorProperty,\n) {\n  this.printJoin(node.decorators);\n\n  // catch up to property key, avoid line break\n  // between member modifiers and the property key.\n  const endLine = node.key.loc?.end?.line;\n  if (endLine) this.catchUp(endLine);\n\n  // TS does not support class accessor property yet\n  this.tsPrintClassMemberModifiers(node);\n\n  this.word(\"accessor\", true);\n  this.space();\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // Todo: Flow does not support class accessor property yet.\n    this._variance(node);\n    this.print(node.key);\n  }\n\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassPrivateProperty(\n  this: Printer,\n  node: t.ClassPrivateProperty,\n) {\n  this.printJoin(node.decorators);\n  this.tsPrintClassMemberModifiers(node);\n  this.print(node.key);\n  // TS\n  if (node.optional) {\n    this.token(\"?\");\n  }\n  if (node.definite) {\n    this.token(\"!\");\n  }\n  this.print(node.typeAnnotation);\n  if (node.value) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.value);\n  }\n  this.semicolon();\n}\n\nexport function ClassMethod(this: Printer, node: t.ClassMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ClassPrivateMethod(this: Printer, node: t.ClassPrivateMethod) {\n  this._classMethodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function _classMethodHead(\n  this: Printer,\n  node: t.ClassMethod | t.ClassPrivateMethod | t.TSDeclareMethod,\n) {\n  this.printJoin(node.decorators);\n\n  if (!this.format.preserveFormat) {\n    // catch up to method key, avoid line break\n    // between member modifiers/method heads and the method key.\n    const endLine = node.key.loc?.end?.line;\n    if (endLine) this.catchUp(endLine);\n  }\n\n  this.tsPrintClassMemberModifiers(node);\n  this._methodHead(node);\n}\n\nexport function StaticBlock(this: Printer, node: t.StaticBlock) {\n  this.word(\"static\");\n  this.space();\n  this.token(\"{\");\n  if (node.body.length === 0) {\n    this.token(\"}\");\n  } else {\n    this.newline();\n    this.printSequence(node.body, true);\n    this.rightBrace(node);\n  }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\nimport { isIdentifier, type ParentMaps } from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\ntype ParentsOf<T extends t.Node> = ParentMaps[T[\"type\"]];\n\nexport function _params(\n  this: Printer,\n  node: t.Function | t.TSDeclareMethod | t.TSDeclareFunction,\n  idNode: t.Expression | t.PrivateName,\n  parentNode: ParentsOf<typeof node>,\n) {\n  this.print(node.typeParameters);\n\n  const nameInfo = _getFuncIdName.call(this, idNode, parentNode);\n  if (nameInfo) {\n    this.sourceIdentifierName(nameInfo.name, nameInfo.pos);\n  }\n\n  this.token(\"(\");\n  this._parameters(node.params, \")\");\n\n  const noLineTerminator = node.type === \"ArrowFunctionExpression\";\n  this.print(node.returnType, noLineTerminator);\n\n  this._noLineTerminator = noLineTerminator;\n}\n\nexport function _parameters(\n  this: Printer,\n  parameters: t.Function[\"params\"],\n  endToken: string,\n) {\n  const exit = this.enterDelimited();\n\n  const trailingComma = this.shouldPrintTrailingComma(endToken);\n\n  const paramLength = parameters.length;\n  for (let i = 0; i < paramLength; i++) {\n    this._param(parameters[i]);\n\n    if (trailingComma || i < paramLength - 1) {\n      this.token(\",\", null, i);\n      this.space();\n    }\n  }\n\n  this.token(endToken);\n  exit();\n}\n\nexport function _param(\n  this: Printer,\n  parameter: t.Identifier | t.RestElement | t.Pattern | t.TSParameterProperty,\n) {\n  this.printJoin(parameter.decorators);\n  this.print(parameter);\n  if (\n    // @ts-expect-error optional is not in TSParameterProperty\n    parameter.optional\n  ) {\n    this.token(\"?\"); // TS / flow\n  }\n\n  this.print(\n    // @ts-expect-error typeAnnotation is not in TSParameterProperty\n    parameter.typeAnnotation,\n  ); // TS / flow\n}\n\nexport function _methodHead(this: Printer, node: t.Method | t.TSDeclareMethod) {\n  const kind = node.kind;\n  const key = node.key;\n\n  if (kind === \"get\" || kind === \"set\") {\n    this.word(kind);\n    this.space();\n  }\n\n  if (node.async) {\n    this.word(\"async\", true);\n    this.space();\n  }\n\n  if (\n    kind === \"method\" ||\n    // @ts-expect-error Fixme: kind: \"init\" is not defined\n    kind === \"init\"\n  ) {\n    if (node.generator) {\n      this.token(\"*\");\n    }\n  }\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(key);\n    this.token(\"]\");\n  } else {\n    this.print(key);\n  }\n\n  if (\n    // @ts-expect-error optional is not in ObjectMethod\n    node.optional\n  ) {\n    // TS\n    this.token(\"?\");\n  }\n\n  this._params(\n    node,\n    node.computed && node.key.type !== \"StringLiteral\" ? undefined : node.key,\n    undefined,\n  );\n}\n\nexport function _predicate(\n  this: Printer,\n  node:\n    | t.FunctionDeclaration\n    | t.FunctionExpression\n    | t.ArrowFunctionExpression,\n  noLineTerminatorAfter?: boolean,\n) {\n  if (node.predicate) {\n    if (!node.returnType) {\n      this.token(\":\");\n    }\n    this.space();\n    this.print(node.predicate, noLineTerminatorAfter);\n  }\n}\n\nexport function _functionHead(\n  this: Printer,\n  node: t.FunctionDeclaration | t.FunctionExpression | t.TSDeclareFunction,\n  parent: ParentsOf<typeof node>,\n) {\n  if (node.async) {\n    this.word(\"async\");\n    if (!this.format.preserveFormat) {\n      // We prevent inner comments from being printed here,\n      // so that they are always consistently printed in the\n      // same place regardless of the function type.\n      this._endsWithInnerRaw = false;\n    }\n    this.space();\n  }\n  this.word(\"function\");\n  if (node.generator) {\n    if (!this.format.preserveFormat) {\n      // We prevent inner comments from being printed here,\n      // so that they are always consistently printed in the\n      // same place regardless of the function type.\n      this._endsWithInnerRaw = false;\n    }\n    this.token(\"*\");\n  }\n\n  this.space();\n  if (node.id) {\n    this.print(node.id);\n  }\n\n  this._params(node, node.id, parent);\n  if (node.type !== \"TSDeclareFunction\") {\n    this._predicate(node);\n  }\n}\n\nexport function FunctionExpression(\n  this: Printer,\n  node: t.FunctionExpression,\n  parent: ParentsOf<typeof node>,\n) {\n  this._functionHead(node, parent);\n  this.space();\n  this.print(node.body);\n}\n\nexport { FunctionExpression as FunctionDeclaration };\n\nexport function ArrowFunctionExpression(\n  this: Printer,\n  node: t.ArrowFunctionExpression,\n  parent: ParentsOf<typeof node>,\n) {\n  if (node.async) {\n    this.word(\"async\", true);\n    this.space();\n  }\n\n  if (this._shouldPrintArrowParamsParens(node)) {\n    this._params(node, undefined, parent);\n  } else {\n    this.print(node.params[0], true);\n  }\n\n  this._predicate(node, true);\n  this.space();\n  // When printing (x)/*1*/=>{}, we remove the parentheses\n  // and thus there aren't two contiguous inner tokens.\n  // We forcefully print inner comments here.\n  this.printInnerComments();\n  this.token(\"=>\");\n\n  this.space();\n\n  this.tokenContext |= TokenContext.arrowBody;\n  this.print(node.body);\n}\n\n// Try to avoid printing parens in simple cases, but only if we're pretty\n// sure that they aren't needed by type annotations or potential newlines.\nexport function _shouldPrintArrowParamsParens(\n  this: Printer,\n  node: t.ArrowFunctionExpression,\n): boolean {\n  if (node.params.length !== 1) return true;\n\n  if (node.typeParameters || node.returnType || node.predicate) {\n    return true;\n  }\n\n  const firstParam = node.params[0];\n  if (\n    !isIdentifier(firstParam) ||\n    firstParam.typeAnnotation ||\n    firstParam.optional ||\n    // Flow does not support `foo /*: string*/ => {};`\n    firstParam.leadingComments?.length ||\n    firstParam.trailingComments?.length\n  ) {\n    return true;\n  }\n\n  if (this.tokenMap) {\n    if (node.loc == null) return true;\n    if (this.tokenMap.findMatching(node, \"(\") !== null) return true;\n    const arrowToken = this.tokenMap.findMatching(node, \"=>\");\n    if (arrowToken?.loc == null) return true;\n    return arrowToken.loc.start.line !== node.loc.start.line;\n  }\n\n  if (this.format.retainLines) return true;\n\n  return false;\n}\n\nfunction _getFuncIdName(\n  this: Printer,\n  idNode: t.Expression | t.PrivateName,\n  parent: ParentsOf<t.Function | t.TSDeclareMethod | t.TSDeclareFunction>,\n) {\n  let id: t.Expression | t.PrivateName | t.LVal = idNode;\n\n  if (!id && parent) {\n    const parentType = parent.type;\n\n    if (parentType === \"VariableDeclarator\") {\n      id = parent.id;\n    } else if (\n      parentType === \"AssignmentExpression\" ||\n      parentType === \"AssignmentPattern\"\n    ) {\n      id = parent.left;\n    } else if (\n      parentType === \"ObjectProperty\" ||\n      parentType === \"ClassProperty\"\n    ) {\n      if (!parent.computed || parent.key.type === \"StringLiteral\") {\n        id = parent.key;\n      }\n    } else if (\n      parentType === \"ClassPrivateProperty\" ||\n      parentType === \"ClassAccessorProperty\"\n    ) {\n      id = parent.key;\n    }\n  }\n\n  if (!id) return;\n\n  let nameInfo;\n\n  if (id.type === \"Identifier\") {\n    nameInfo = {\n      pos: id.loc?.start,\n      name: id.loc?.identifierName || id.name,\n    };\n  } else if (id.type === \"PrivateName\") {\n    nameInfo = {\n      pos: id.loc?.start,\n      name: \"#\" + id.id.name,\n    };\n  } else if (id.type === \"StringLiteral\") {\n    nameInfo = {\n      pos: id.loc?.start,\n      name: id.value,\n    };\n  }\n\n  return nameInfo;\n}\n","import type Printer from \"../printer.ts\";\nimport {\n  isClassDeclaration,\n  isExportDefaultSpecifier,\n  isExportNamespaceSpecifier,\n  isImportDefaultSpecifier,\n  isImportNamespaceSpecifier,\n  isStatement,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function ImportSpecifier(this: Printer, node: t.ImportSpecifier) {\n  if (node.importKind === \"type\" || node.importKind === \"typeof\") {\n    this.word(node.importKind);\n    this.space();\n  }\n\n  this.print(node.imported);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.local && node.local.name !== node.imported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.local);\n  }\n}\n\nexport function ImportDefaultSpecifier(\n  this: Printer,\n  node: t.ImportDefaultSpecifier,\n) {\n  this.print(node.local);\n}\n\nexport function ExportDefaultSpecifier(\n  this: Printer,\n  node: t.ExportDefaultSpecifier,\n) {\n  this.print(node.exported);\n}\n\nexport function ExportSpecifier(this: Printer, node: t.ExportSpecifier) {\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n\n  this.print(node.local);\n  // @ts-expect-error todo(flow-ts) maybe check node type instead of relying on name to be undefined on t.StringLiteral\n  if (node.exported && node.local.name !== node.exported.name) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(node.exported);\n  }\n}\n\nexport function ExportNamespaceSpecifier(\n  this: Printer,\n  node: t.ExportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.exported);\n}\n\nlet warningShown = false;\n\nexport function _printAttributes(\n  this: Printer,\n  node: Extract<t.Node, { attributes?: t.ImportAttribute[] }>,\n  hasPreviousBrace: boolean,\n) {\n  const { importAttributesKeyword } = this.format;\n  const { attributes, assertions } = node;\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    attributes &&\n    !importAttributesKeyword &&\n    // In the production build only show the warning once.\n    // We want to show it per-usage locally for tests.\n    (!process.env.IS_PUBLISH || !warningShown)\n  ) {\n    warningShown = true;\n    console.warn(`\\\nYou are using import attributes, without specifying the desired output syntax.\nPlease specify the \"importAttributesKeyword\" generator option, whose value can be one of:\n - \"with\"        : \\`import { a } from \"b\" with { type: \"json\" };\\`\n - \"assert\"      : \\`import { a } from \"b\" assert { type: \"json\" };\\`\n - \"with-legacy\" : \\`import { a } from \"b\" with type: \"json\";\\`\n`);\n  }\n\n  const useAssertKeyword =\n    importAttributesKeyword === \"assert\" ||\n    (!importAttributesKeyword && assertions);\n\n  this.word(useAssertKeyword ? \"assert\" : \"with\");\n  this.space();\n\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !useAssertKeyword &&\n    importAttributesKeyword !== \"with\"\n  ) {\n    // with-legacy\n    this.printList(attributes || assertions);\n    return;\n  }\n\n  const occurrenceCount = hasPreviousBrace ? 1 : 0;\n\n  this.token(\"{\", null, occurrenceCount);\n  this.space();\n  this.printList(attributes || assertions, this.shouldPrintTrailingComma(\"}\"));\n  this.space();\n  this.token(\"}\", null, occurrenceCount);\n}\n\nexport function ExportAllDeclaration(\n  this: Printer,\n  node: t.ExportAllDeclaration | t.DeclareExportAllDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  if (node.exportKind === \"type\") {\n    this.word(\"type\");\n    this.space();\n  }\n  this.token(\"*\");\n  this.space();\n  this.word(\"from\");\n  this.space();\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, false);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nfunction maybePrintDecoratorsBeforeExport(\n  printer: Printer,\n  node: t.ExportNamedDeclaration | t.ExportDefaultDeclaration,\n) {\n  if (\n    isClassDeclaration(node.declaration) &&\n    printer._shouldPrintDecoratorsBeforeExport(\n      node as t.ExportNamedDeclaration & { declaration: t.ClassDeclaration },\n    )\n  ) {\n    printer.printJoin(node.declaration.decorators);\n  }\n}\n\nexport function ExportNamedDeclaration(\n  this: Printer,\n  node: t.ExportNamedDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.space();\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    if (node.exportKind === \"type\") {\n      this.word(\"type\");\n      this.space();\n    }\n\n    const specifiers = node.specifiers.slice(0);\n\n    // print \"special\" specifiers first\n    let hasSpecial = false;\n    for (;;) {\n      const first = specifiers[0];\n      if (\n        isExportDefaultSpecifier(first) ||\n        isExportNamespaceSpecifier(first)\n      ) {\n        hasSpecial = true;\n        this.print(specifiers.shift());\n        if (specifiers.length) {\n          this.token(\",\");\n          this.space();\n        }\n      } else {\n        break;\n      }\n    }\n\n    let hasBrace = false;\n    if (specifiers.length || (!specifiers.length && !hasSpecial)) {\n      hasBrace = true;\n      this.token(\"{\");\n      if (specifiers.length) {\n        this.space();\n        this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n        this.space();\n      }\n      this.token(\"}\");\n    }\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      if (node.attributes?.length || node.assertions?.length) {\n        this.print(node.source, true);\n        this.space();\n        this._printAttributes(node, hasBrace);\n      } else {\n        this.print(node.source);\n      }\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExportDefaultDeclaration(\n  this: Printer,\n  node: t.ExportDefaultDeclaration,\n) {\n  maybePrintDecoratorsBeforeExport(this, node);\n\n  this.word(\"export\");\n  this.noIndentInnerCommentsHere();\n  this.space();\n  this.word(\"default\");\n  this.space();\n  this.tokenContext |= TokenContext.exportDefault;\n  const declar = node.declaration;\n  this.print(declar);\n  if (!isStatement(declar)) this.semicolon();\n}\n\nexport function ImportDeclaration(this: Printer, node: t.ImportDeclaration) {\n  this.word(\"import\");\n  this.space();\n\n  const isTypeKind = node.importKind === \"type\" || node.importKind === \"typeof\";\n  if (isTypeKind) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.importKind);\n    this.space();\n  } else if (node.module) {\n    this.noIndentInnerCommentsHere();\n    this.word(\"module\");\n    this.space();\n  } else if (node.phase) {\n    this.noIndentInnerCommentsHere();\n    this.word(node.phase);\n    this.space();\n  }\n\n  const specifiers = node.specifiers.slice(0);\n  const hasSpecifiers = !!specifiers.length;\n  // print \"special\" specifiers first. The loop condition is constant,\n  // but there is a \"break\" in the body.\n  while (hasSpecifiers) {\n    const first = specifiers[0];\n    if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {\n      this.print(specifiers.shift());\n      if (specifiers.length) {\n        this.token(\",\");\n        this.space();\n      }\n    } else {\n      break;\n    }\n  }\n\n  let hasBrace = false;\n  if (specifiers.length) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.space();\n    this.printList(specifiers, this.shouldPrintTrailingComma(\"}\"));\n    this.space();\n    this.token(\"}\");\n  } else if (isTypeKind && !hasSpecifiers) {\n    hasBrace = true;\n    this.token(\"{\");\n    this.token(\"}\");\n  }\n\n  if (hasSpecifiers || isTypeKind) {\n    this.space();\n    this.word(\"from\");\n    this.space();\n  }\n\n  if (node.attributes?.length || node.assertions?.length) {\n    this.print(node.source, true);\n    this.space();\n    this._printAttributes(node, hasBrace);\n  } else {\n    this.print(node.source);\n  }\n\n  this.semicolon();\n}\n\nexport function ImportAttribute(this: Printer, node: t.ImportAttribute) {\n  this.print(node.key);\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ImportNamespaceSpecifier(\n  this: Printer,\n  node: t.ImportNamespaceSpecifier,\n) {\n  this.token(\"*\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.print(node.local);\n}\n\nexport function ImportExpression(this: Printer, node: t.ImportExpression) {\n  this.word(\"import\");\n  if (node.phase) {\n    this.token(\".\");\n    this.word(node.phase);\n  }\n  this.token(\"(\");\n  this.print(node.source);\n  if (node.options != null) {\n    this.token(\",\");\n    this.space();\n    this.print(node.options);\n  }\n  this.token(\")\");\n}\n","'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst forOwn = (object, callback) => {\n\tfor (const key in object) {\n\t\tif (hasOwnProperty.call(object, key)) {\n\t\t\tcallback(key, object[key]);\n\t\t}\n\t}\n};\n\nconst extend = (destination, source) => {\n\tif (!source) {\n\t\treturn destination;\n\t}\n\tforOwn(source, (key, value) => {\n\t\tdestination[key] = value;\n\t});\n\treturn destination;\n};\n\nconst forEach = (array, callback) => {\n\tconst length = array.length;\n\tlet index = -1;\n\twhile (++index < length) {\n\t\tcallback(array[index]);\n\t}\n};\n\nconst fourHexEscape = (hex) => {\n\treturn '\\\\u' + ('0000' + hex).slice(-4);\n}\n\nconst hexadecimal = (code, lowercase) => {\n\tlet hexadecimal = code.toString(16);\n\tif (lowercase) return hexadecimal;\n\treturn hexadecimal.toUpperCase();\n};\n\nconst toString = object.toString;\nconst isArray = Array.isArray;\nconst isBuffer = (value) => {\n\treturn typeof Buffer === 'function' && Buffer.isBuffer(value);\n};\nconst isObject = (value) => {\n\t// This is a very simple check, but it’s good enough for what we need.\n\treturn toString.call(value) == '[object Object]';\n};\nconst isString = (value) => {\n\treturn typeof value == 'string' ||\n\t\ttoString.call(value) == '[object String]';\n};\nconst isNumber = (value) => {\n\treturn typeof value == 'number' ||\n\t\ttoString.call(value) == '[object Number]';\n};\nconst isBigInt = (value) => {\n  return typeof value == 'bigint';\n};\nconst isFunction = (value) => {\n\treturn typeof value == 'function';\n};\nconst isMap = (value) => {\n\treturn toString.call(value) == '[object Map]';\n};\nconst isSet = (value) => {\n\treturn toString.call(value) == '[object Set]';\n};\n\n/*--------------------------------------------------------------------------*/\n\n// https://mathiasbynens.be/notes/javascript-escapes#single\nconst singleEscapes = {\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t'\n\t// `\\v` is omitted intentionally, because in IE < 9, '\\v' == 'v'.\n\t// '\\v': '\\\\x0B'\n};\nconst regexSingleEscape = /[\\\\\\b\\f\\n\\r\\t]/;\n\nconst regexDigit = /[0-9]/;\nconst regexWhitespace = /[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nconst escapeEverythingRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^]/g;\nconst escapeNonAsciiRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^ !#-&\\(-\\[\\]-_a-~]/g;\n\nconst jsesc = (argument, options) => {\n\tconst increaseIndentation = () => {\n\t\toldIndent = indent;\n\t\t++options.indentLevel;\n\t\tindent = options.indent.repeat(options.indentLevel)\n\t};\n\t// Handle options\n\tconst defaults = {\n\t\t'escapeEverything': false,\n\t\t'minimal': false,\n\t\t'isScriptContext': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false,\n\t\t'es6': false,\n\t\t'json': false,\n\t\t'compact': true,\n\t\t'lowercaseHex': false,\n\t\t'numbers': 'decimal',\n\t\t'indent': '\\t',\n\t\t'indentLevel': 0,\n\t\t'__inline1__': false,\n\t\t'__inline2__': false\n\t};\n\tconst json = options && options.json;\n\tif (json) {\n\t\tdefaults.quotes = 'double';\n\t\tdefaults.wrap = true;\n\t}\n\toptions = extend(defaults, options);\n\tif (\n\t\toptions.quotes != 'single' &&\n\t\toptions.quotes != 'double' &&\n\t\toptions.quotes != 'backtick'\n\t) {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ?\n\t\t'\"' :\n\t\t(options.quotes == 'backtick' ?\n\t\t\t'`' :\n\t\t\t'\\''\n\t\t);\n\tconst compact = options.compact;\n\tconst lowercaseHex = options.lowercaseHex;\n\tlet indent = options.indent.repeat(options.indentLevel);\n\tlet oldIndent = '';\n\tconst inline1 = options.__inline1__;\n\tconst inline2 = options.__inline2__;\n\tconst newLine = compact ? '' : '\\n';\n\tlet result;\n\tlet isEmpty = true;\n\tconst useBinNumbers = options.numbers == 'binary';\n\tconst useOctNumbers = options.numbers == 'octal';\n\tconst useDecNumbers = options.numbers == 'decimal';\n\tconst useHexNumbers = options.numbers == 'hexadecimal';\n\n\tif (json && argument && isFunction(argument.toJSON)) {\n\t\targument = argument.toJSON();\n\t}\n\n\tif (!isString(argument)) {\n\t\tif (isMap(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Map()';\n\t\t\t}\n\t\t\tif (!compact) {\n\t\t\t\toptions.__inline1__ = true;\n\t\t\t\toptions.__inline2__ = false;\n\t\t\t}\n\t\t\treturn 'new Map(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isSet(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Set()';\n\t\t\t}\n\t\t\treturn 'new Set(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isBuffer(argument)) {\n\t\t\tif (argument.length == 0) {\n\t\t\t\treturn 'Buffer.from([])';\n\t\t\t}\n\t\t\treturn 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isArray(argument)) {\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tif (inline1) {\n\t\t\t\toptions.__inline1__ = false;\n\t\t\t\toptions.__inline2__ = true;\n\t\t\t}\n\t\t\tif (!inline2) {\n\t\t\t\tincreaseIndentation();\n\t\t\t}\n\t\t\tforEach(argument, (value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tif (inline2) {\n\t\t\t\t\toptions.__inline2__ = false;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact || inline2 ? '' : indent) +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\tif (inline2) {\n\t\t\t\treturn '[' + result.join(', ') + ']';\n\t\t\t}\n\t\t\treturn '[' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + ']';\n\t\t} else if (isNumber(argument) || isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// Some number values (e.g. `Infinity`) cannot be represented in JSON.\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n        // `Number.MAX_VALUE` cannot be represented in JSON so they will become\n        // `-Infinity` or `Infinity`, respectively, and then become `null` when\n        // stringified.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n\n      let result;\n\t\t\tif (useDecNumbers) {\n\t\t\t\tresult = String(argument);\n\t\t\t} else if (useHexNumbers) {\n\t\t\t\tlet hexadecimal = argument.toString(16);\n\t\t\t\tif (!lowercaseHex) {\n\t\t\t\t\thexadecimal = hexadecimal.toUpperCase();\n\t\t\t\t}\n\t\t\t\tresult = '0x' + hexadecimal;\n\t\t\t} else if (useBinNumbers) {\n\t\t\t\tresult = '0b' + argument.toString(2);\n\t\t\t} else if (useOctNumbers) {\n\t\t\t\tresult = '0o' + argument.toString(8);\n\t\t\t}\n\n      if (isBigInt(argument)) {\n        return result + 'n';\n      }\n      return result;\n\t\t} else if (isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n        // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`,\n        // respectively, and cannot be represented in JSON.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n      return argument + 'n';\n    } else if (!isObject(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// For some values (e.g. `undefined`, `function` objects),\n\t\t\t\t// `JSON.stringify(value)` returns `undefined` (which isn’t valid\n\t\t\t\t// JSON) instead of `'null'`.\n\t\t\t\treturn JSON.stringify(argument) || 'null';\n\t\t\t}\n\t\t\treturn String(argument);\n\t\t} else { // it’s an object\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tincreaseIndentation();\n\t\t\tforOwn(argument, (key, value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact ? '' : indent) +\n\t\t\t\t\tjsesc(key, options) + ':' +\n\t\t\t\t\t(compact ? '' : ' ') +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\t\t\treturn '{' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + '}';\n\t\t}\n\t}\n\n\tconst regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;\n\tresult = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => {\n\t\tif (pair) {\n\t\t\tif (options.minimal) return pair;\n\t\t\tconst first = pair.charCodeAt(0);\n\t\t\tconst second = pair.charCodeAt(1);\n\t\t\tif (options.es6) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tconst codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\tconst hex = hexadecimal(codePoint, lowercaseHex);\n\t\t\t\treturn '\\\\u{' + hex + '}';\n\t\t\t}\n\t\t\treturn fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));\n\t\t}\n\n\t\tif (lone) {\n\t\t\treturn fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));\n\t\t}\n\n\t\tif (\n\t\t\tchar == '\\0' &&\n\t\t\t!json &&\n\t\t\t!regexDigit.test(string.charAt(index + 1))\n\t\t) {\n\t\t\treturn '\\\\0';\n\t\t}\n\n\t\tif (quoteChar) {\n\t\t\tif (quoteChar == quote || options.escapeEverything) {\n\t\t\t\treturn '\\\\' + quoteChar;\n\t\t\t}\n\t\t\treturn quoteChar;\n\t\t}\n\n\t\tif (regexSingleEscape.test(char)) {\n\t\t\t// no need for a `hasOwnProperty` check here\n\t\t\treturn singleEscapes[char];\n\t\t}\n\n\t\tif (options.minimal && !regexWhitespace.test(char)) {\n\t\t\treturn char;\n\t\t}\n\n\t\tconst hex = hexadecimal(char.charCodeAt(0), lowercaseHex);\n\t\tif (json || hex.length > 2) {\n\t\t\treturn fourHexEscape(hex);\n\t\t}\n\n\t\treturn '\\\\x' + ('00' + hex).slice(-2);\n\t});\n\n\tif (quote == '`') {\n\t\tresult = result.replace(/\\$\\{/g, '\\\\${');\n\t}\n\tif (options.isScriptContext) {\n\t\t// https://mathiasbynens.be/notes/etago\n\t\tresult = result\n\t\t\t.replace(/<\\/(script|style)/gi, '<\\\\/$1')\n\t\t\t.replace(/<!--/g, json ? '\\\\u003C!--' : '\\\\x3C!--');\n\t}\n\tif (options.wrap) {\n\t\tresult = quote + result + quote;\n\t}\n\treturn result;\n};\n\njsesc.version = '3.0.2';\n\nmodule.exports = jsesc;\n","import type Printer from \"../printer.ts\";\nimport { isAssignmentPattern, isIdentifier } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport jsesc from \"jsesc\";\n\nlet lastRawIdentNode: t.Identifier | null = null;\nlet lastRawIdentResult: string = \"\";\nexport function _getRawIdentifier(this: Printer, node: t.Identifier) {\n  if (node === lastRawIdentNode) return lastRawIdentResult;\n  lastRawIdentNode = node;\n\n  const { name } = node;\n  const token = this.tokenMap.find(node, tok => tok.value === name);\n  if (token) {\n    lastRawIdentResult = this._originalCode.slice(token.start, token.end);\n    return lastRawIdentResult;\n  }\n  return (lastRawIdentResult = node.name);\n}\n\nexport function Identifier(this: Printer, node: t.Identifier) {\n  this.sourceIdentifierName(node.loc?.identifierName || node.name);\n\n  this.word(this.tokenMap ? this._getRawIdentifier(node) : node.name);\n}\n\nexport function ArgumentPlaceholder(this: Printer) {\n  this.token(\"?\");\n}\n\nexport function RestElement(this: Printer, node: t.RestElement) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport { RestElement as SpreadElement };\n\nexport function ObjectExpression(this: Printer, node: t.ObjectExpression) {\n  const props = node.properties;\n\n  this.token(\"{\");\n\n  if (props.length) {\n    const exit = this.enterDelimited();\n    this.space();\n    this.printList(props, this.shouldPrintTrailingComma(\"}\"), true, true);\n    this.space();\n    exit();\n  }\n\n  this.sourceWithOffset(\"end\", node.loc, -1);\n\n  this.token(\"}\");\n}\n\nexport { ObjectExpression as ObjectPattern };\n\nexport function ObjectMethod(this: Printer, node: t.ObjectMethod) {\n  this.printJoin(node.decorators);\n  this._methodHead(node);\n  this.space();\n  this.print(node.body);\n}\n\nexport function ObjectProperty(this: Printer, node: t.ObjectProperty) {\n  this.printJoin(node.decorators);\n\n  if (node.computed) {\n    this.token(\"[\");\n    this.print(node.key);\n    this.token(\"]\");\n  } else {\n    // print `({ foo: foo = 5 } = {})` as `({ foo = 5 } = {});`\n    if (\n      isAssignmentPattern(node.value) &&\n      isIdentifier(node.key) &&\n      // @ts-expect-error todo(flow->ts) `.name` does not exist on some types in union\n      node.key.name === node.value.left.name\n    ) {\n      this.print(node.value);\n      return;\n    }\n\n    this.print(node.key);\n\n    // shorthand!\n    if (\n      node.shorthand &&\n      isIdentifier(node.key) &&\n      isIdentifier(node.value) &&\n      node.key.name === node.value.name\n    ) {\n      return;\n    }\n  }\n\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ArrayExpression(this: Printer, node: t.ArrayExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  this.token(\"[\");\n\n  const exit = this.enterDelimited();\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(\"]\")) {\n        this.token(\",\", false, i);\n      }\n    } else {\n      // If the array expression ends with a hole, that hole\n      // will be ignored by the interpreter, but if it ends with\n      // two (or more) holes, we need to write out two (or more)\n      // commas so that the resulting code is interpreted with\n      // both (all) of the holes.\n      this.token(\",\", false, i);\n    }\n  }\n\n  exit();\n\n  this.token(\"]\");\n}\n\nexport { ArrayExpression as ArrayPattern };\n\nexport function RecordExpression(this: Printer, node: t.RecordExpression) {\n  const props = node.properties;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#{\";\n    endToken = \"}\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"{|\";\n      endToken = \"|}\";\n    } else if (\n      this.format.recordAndTupleSyntaxType !== \"hash\" &&\n      this.format.recordAndTupleSyntaxType != null\n    ) {\n      throw new Error(\n        `The \"recordAndTupleSyntaxType\" generator option must be \"bar\" or \"hash\" (${JSON.stringify(\n          this.format.recordAndTupleSyntaxType,\n        )} received).`,\n      );\n    } else {\n      startToken = \"#{\";\n      endToken = \"}\";\n    }\n  }\n\n  this.token(startToken);\n\n  if (props.length) {\n    this.space();\n    this.printList(props, this.shouldPrintTrailingComma(endToken), true, true);\n    this.space();\n  }\n  this.token(endToken);\n}\n\nexport function TupleExpression(this: Printer, node: t.TupleExpression) {\n  const elems = node.elements;\n  const len = elems.length;\n\n  let startToken;\n  let endToken;\n  if (process.env.BABEL_8_BREAKING) {\n    startToken = \"#[\";\n    endToken = \"]\";\n  } else {\n    if (this.format.recordAndTupleSyntaxType === \"bar\") {\n      startToken = \"[|\";\n      endToken = \"|]\";\n    } else if (this.format.recordAndTupleSyntaxType === \"hash\") {\n      startToken = \"#[\";\n      endToken = \"]\";\n    } else {\n      throw new Error(\n        `${this.format.recordAndTupleSyntaxType} is not a valid recordAndTuple syntax type`,\n      );\n    }\n  }\n\n  this.token(startToken);\n\n  for (let i = 0; i < elems.length; i++) {\n    const elem = elems[i];\n    if (elem) {\n      if (i > 0) this.space();\n      this.print(elem);\n      if (i < len - 1 || this.shouldPrintTrailingComma(endToken)) {\n        this.token(\",\", false, i);\n      }\n    }\n  }\n\n  this.token(endToken);\n}\n\nexport function RegExpLiteral(this: Printer, node: t.RegExpLiteral) {\n  this.word(`/${node.pattern}/${node.flags}`);\n}\n\nexport function BooleanLiteral(this: Printer, node: t.BooleanLiteral) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteral(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function NumericLiteral(this: Printer, node: t.NumericLiteral) {\n  const raw = this.getPossibleRaw(node);\n  const opts = this.format.jsescOption;\n  const value = node.value;\n  const str = value + \"\";\n  if (opts.numbers) {\n    this.number(jsesc(value, opts), value);\n  } else if (raw == null) {\n    this.number(str, value); // normalize\n  } else if (this.format.minified) {\n    this.number(raw.length < str.length ? raw : str, value);\n  } else {\n    this.number(raw, value);\n  }\n}\n\nexport function StringLiteral(this: Printer, node: t.StringLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const val = jsesc(node.value, this.format.jsescOption);\n\n  this.token(val);\n}\n\nexport function BigIntLiteral(this: Printer, node: t.BigIntLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.word(raw);\n    return;\n  }\n  this.word(node.value + \"n\");\n}\n\n// Hack pipe operator\nconst validTopicTokenSet = new Set([\"^^\", \"@@\", \"^\", \"%\", \"#\"]);\nexport function TopicReference(this: Printer) {\n  const { topicToken } = this.format;\n\n  if (validTopicTokenSet.has(topicToken)) {\n    this.token(topicToken);\n  } else {\n    const givenTopicTokenJSON = JSON.stringify(topicToken);\n    const validTopics = Array.from(validTopicTokenSet, v => JSON.stringify(v));\n    throw new Error(\n      `The \"topicToken\" generator option must be one of ` +\n        `${validTopics.join(\", \")} (${givenTopicTokenJSON} received instead).`,\n    );\n  }\n}\n\n// Smart-mix pipe operator\nexport function PipelineTopicExpression(\n  this: Printer,\n  node: t.PipelineTopicExpression,\n) {\n  this.print(node.expression);\n}\n\nexport function PipelineBareFunction(\n  this: Printer,\n  node: t.PipelineBareFunction,\n) {\n  this.print(node.callee);\n}\n\nexport function PipelinePrimaryTopicReference(this: Printer) {\n  this.token(\"#\");\n}\n","import type Printer from \"../printer.ts\";\nimport { isDeclareExportDeclaration, isStatement } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { ExportAllDeclaration } from \"./modules.ts\";\nimport { TokenContext } from \"../node/index.ts\";\n\nexport function AnyTypeAnnotation(this: Printer) {\n  this.word(\"any\");\n}\n\nexport function ArrayTypeAnnotation(\n  this: Printer,\n  node: t.ArrayTypeAnnotation,\n) {\n  this.print(node.elementType, true);\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function BooleanTypeAnnotation(this: Printer) {\n  this.word(\"boolean\");\n}\n\nexport function BooleanLiteralTypeAnnotation(\n  this: Printer,\n  node: t.BooleanLiteralTypeAnnotation,\n) {\n  this.word(node.value ? \"true\" : \"false\");\n}\n\nexport function NullLiteralTypeAnnotation(this: Printer) {\n  this.word(\"null\");\n}\n\nexport function DeclareClass(\n  this: Printer,\n  node: t.DeclareClass,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"class\");\n  this.space();\n  this._interfaceish(node);\n}\n\nexport function DeclareFunction(\n  this: Printer,\n  node: t.DeclareFunction,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"function\");\n  this.space();\n  this.print(node.id);\n  // @ts-ignore(Babel 7 vs Babel 8) TODO(Babel 8) Remove this comment, since we'll remove the Noop node\n  this.print(node.id.typeAnnotation.typeAnnotation);\n\n  if (node.predicate) {\n    this.space();\n    this.print(node.predicate);\n  }\n\n  this.semicolon();\n}\n\nexport function InferredPredicate(this: Printer) {\n  this.token(\"%\");\n  this.word(\"checks\");\n}\n\nexport function DeclaredPredicate(this: Printer, node: t.DeclaredPredicate) {\n  this.token(\"%\");\n  this.word(\"checks\");\n  this.token(\"(\");\n  this.print(node.value);\n  this.token(\")\");\n}\n\nexport function DeclareInterface(this: Printer, node: t.DeclareInterface) {\n  this.word(\"declare\");\n  this.space();\n  this.InterfaceDeclaration(node);\n}\n\nexport function DeclareModule(this: Printer, node: t.DeclareModule) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.space();\n  this.print(node.id);\n  this.space();\n  this.print(node.body);\n}\n\nexport function DeclareModuleExports(\n  this: Printer,\n  node: t.DeclareModuleExports,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"module\");\n  this.token(\".\");\n  this.word(\"exports\");\n  this.print(node.typeAnnotation);\n}\n\nexport function DeclareTypeAlias(this: Printer, node: t.DeclareTypeAlias) {\n  this.word(\"declare\");\n  this.space();\n  this.TypeAlias(node);\n}\n\nexport function DeclareOpaqueType(\n  this: Printer,\n  node: t.DeclareOpaqueType,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.OpaqueType(node);\n}\n\nexport function DeclareVariable(\n  this: Printer,\n  node: t.DeclareVariable,\n  parent: t.Node,\n) {\n  if (!isDeclareExportDeclaration(parent)) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"var\");\n  this.space();\n  this.print(node.id);\n  this.print(node.id.typeAnnotation);\n  this.semicolon();\n}\n\nexport function DeclareExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  this.word(\"export\");\n  this.space();\n  if (node.default) {\n    this.word(\"default\");\n    this.space();\n  }\n\n  FlowExportDeclaration.call(this, node);\n}\n\nexport function DeclareExportAllDeclaration(\n  this: Printer,\n  node: t.DeclareExportAllDeclaration,\n) {\n  this.word(\"declare\");\n  this.space();\n  ExportAllDeclaration.call(this, node);\n}\n\nexport function EnumDeclaration(this: Printer, node: t.EnumDeclaration) {\n  const { id, body } = node;\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.print(body);\n}\n\nfunction enumExplicitType(\n  context: Printer,\n  name: string,\n  hasExplicitType: boolean,\n) {\n  if (hasExplicitType) {\n    context.space();\n    context.word(\"of\");\n    context.space();\n    context.word(name);\n  }\n  context.space();\n}\n\nfunction enumBody(context: Printer, node: t.EnumBody) {\n  const { members } = node;\n  context.token(\"{\");\n  context.indent();\n  context.newline();\n  for (const member of members) {\n    context.print(member);\n    context.newline();\n  }\n  if (node.hasUnknownMembers) {\n    context.token(\"...\");\n    context.newline();\n  }\n  context.dedent();\n  context.token(\"}\");\n}\n\nexport function EnumBooleanBody(this: Printer, node: t.EnumBooleanBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"boolean\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumNumberBody(this: Printer, node: t.EnumNumberBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"number\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumStringBody(this: Printer, node: t.EnumStringBody) {\n  const { explicitType } = node;\n  enumExplicitType(this, \"string\", explicitType);\n  enumBody(this, node);\n}\n\nexport function EnumSymbolBody(this: Printer, node: t.EnumSymbolBody) {\n  enumExplicitType(this, \"symbol\", true);\n  enumBody(this, node);\n}\n\nexport function EnumDefaultedMember(\n  this: Printer,\n  node: t.EnumDefaultedMember,\n) {\n  const { id } = node;\n  this.print(id);\n  this.token(\",\");\n}\n\nfunction enumInitializedMember(\n  context: Printer,\n  node: t.EnumBooleanMember | t.EnumNumberMember | t.EnumStringMember,\n) {\n  context.print(node.id);\n  context.space();\n  context.token(\"=\");\n  context.space();\n  context.print(node.init);\n  context.token(\",\");\n}\n\nexport function EnumBooleanMember(this: Printer, node: t.EnumBooleanMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumNumberMember(this: Printer, node: t.EnumNumberMember) {\n  enumInitializedMember(this, node);\n}\n\nexport function EnumStringMember(this: Printer, node: t.EnumStringMember) {\n  enumInitializedMember(this, node);\n}\n\nfunction FlowExportDeclaration(\n  this: Printer,\n  node: t.DeclareExportDeclaration,\n) {\n  if (node.declaration) {\n    const declar = node.declaration;\n    this.print(declar);\n    if (!isStatement(declar)) this.semicolon();\n  } else {\n    this.token(\"{\");\n    if (node.specifiers.length) {\n      this.space();\n      this.printList(node.specifiers);\n      this.space();\n    }\n    this.token(\"}\");\n\n    if (node.source) {\n      this.space();\n      this.word(\"from\");\n      this.space();\n      this.print(node.source);\n    }\n\n    this.semicolon();\n  }\n}\n\nexport function ExistsTypeAnnotation(this: Printer) {\n  this.token(\"*\");\n}\n\nexport function FunctionTypeAnnotation(\n  this: Printer,\n  node: t.FunctionTypeAnnotation,\n  parent?: t.Node,\n) {\n  this.print(node.typeParameters);\n  this.token(\"(\");\n\n  if (node.this) {\n    this.word(\"this\");\n    this.token(\":\");\n    this.space();\n    this.print(node.this.typeAnnotation);\n    if (node.params.length || node.rest) {\n      this.token(\",\");\n      this.space();\n    }\n  }\n\n  this.printList(node.params);\n\n  if (node.rest) {\n    if (node.params.length) {\n      this.token(\",\");\n      this.space();\n    }\n    this.token(\"...\");\n    this.print(node.rest);\n  }\n\n  this.token(\")\");\n\n  // this node type is overloaded, not sure why but it makes it EXTREMELY annoying\n\n  const type = parent?.type;\n  if (\n    type != null &&\n    (type === \"ObjectTypeCallProperty\" ||\n      type === \"ObjectTypeInternalSlot\" ||\n      type === \"DeclareFunction\" ||\n      (type === \"ObjectTypeProperty\" && parent.method))\n  ) {\n    this.token(\":\");\n  } else {\n    this.space();\n    this.token(\"=>\");\n  }\n\n  this.space();\n  this.print(node.returnType);\n}\n\nexport function FunctionTypeParam(this: Printer, node: t.FunctionTypeParam) {\n  this.print(node.name);\n  if (node.optional) this.token(\"?\");\n  if (node.name) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function InterfaceExtends(this: Printer, node: t.InterfaceExtends) {\n  this.print(node.id);\n  this.print(node.typeParameters, true);\n}\n\nexport {\n  InterfaceExtends as ClassImplements,\n  InterfaceExtends as GenericTypeAnnotation,\n};\n\nexport function _interfaceish(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface | t.DeclareClass,\n) {\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  if (node.type === \"DeclareClass\") {\n    if (node.mixins?.length) {\n      this.space();\n      this.word(\"mixins\");\n      this.space();\n      this.printList(node.mixins);\n    }\n    if (node.implements?.length) {\n      this.space();\n      this.word(\"implements\");\n      this.space();\n      this.printList(node.implements);\n    }\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function _variance(\n  this: Printer,\n  node:\n    | t.TypeParameter\n    | t.ObjectTypeIndexer\n    | t.ObjectTypeProperty\n    | t.ClassProperty\n    | t.ClassPrivateProperty\n    | t.ClassAccessorProperty,\n) {\n  const kind = node.variance?.kind;\n  if (kind != null) {\n    if (kind === \"plus\") {\n      this.token(\"+\");\n    } else if (kind === \"minus\") {\n      this.token(\"-\");\n    }\n  }\n}\n\nexport function InterfaceDeclaration(\n  this: Printer,\n  node: t.InterfaceDeclaration | t.DeclareInterface,\n) {\n  this.word(\"interface\");\n  this.space();\n  this._interfaceish(node);\n}\n\nfunction andSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"&\", false, occurrenceCount);\n  this.space();\n}\n\nexport function InterfaceTypeAnnotation(\n  this: Printer,\n  node: t.InterfaceTypeAnnotation,\n) {\n  this.word(\"interface\");\n  if (node.extends?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(node.extends);\n  }\n  this.space();\n  this.print(node.body);\n}\n\nexport function IntersectionTypeAnnotation(\n  this: Printer,\n  node: t.IntersectionTypeAnnotation,\n) {\n  this.printJoin(node.types, undefined, undefined, andSeparator);\n}\n\nexport function MixedTypeAnnotation(this: Printer) {\n  this.word(\"mixed\");\n}\n\nexport function EmptyTypeAnnotation(this: Printer) {\n  this.word(\"empty\");\n}\n\nexport function NullableTypeAnnotation(\n  this: Printer,\n  node: t.NullableTypeAnnotation,\n) {\n  this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport {\n  NumericLiteral as NumberLiteralTypeAnnotation,\n  StringLiteral as StringLiteralTypeAnnotation,\n} from \"./types.ts\";\n\nexport function NumberTypeAnnotation(this: Printer) {\n  this.word(\"number\");\n}\n\nexport function StringTypeAnnotation(this: Printer) {\n  this.word(\"string\");\n}\n\nexport function ThisTypeAnnotation(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TupleTypeAnnotation(\n  this: Printer,\n  node: t.TupleTypeAnnotation,\n) {\n  this.token(\"[\");\n  this.printList(node.types);\n  this.token(\"]\");\n}\n\nexport function TypeofTypeAnnotation(\n  this: Printer,\n  node: t.TypeofTypeAnnotation,\n) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.argument);\n}\n\nexport function TypeAlias(\n  this: Printer,\n  node: t.TypeAlias | t.DeclareTypeAlias,\n) {\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.right);\n  this.semicolon();\n}\n\nexport function TypeAnnotation(\n  this: Printer,\n  node: t.TypeAnnotation,\n  parent: t.Node,\n) {\n  this.token(\":\");\n  this.space();\n  if (parent.type === \"ArrowFunctionExpression\") {\n    this.tokenContext |= TokenContext.arrowFlowReturnType;\n  } else if (\n    // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n    node.optional\n  ) {\n    this.token(\"?\");\n  }\n  this.print(node.typeAnnotation);\n}\n\nexport function TypeParameterInstantiation(\n  this: Printer,\n  node: t.TypeParameterInstantiation,\n): void {\n  this.token(\"<\");\n  this.printList(node.params);\n  this.token(\">\");\n}\n\nexport { TypeParameterInstantiation as TypeParameterDeclaration };\n\nexport function TypeParameter(this: Printer, node: t.TypeParameter) {\n  this._variance(node);\n\n  this.word(node.name);\n\n  if (node.bound) {\n    this.print(node.bound);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function OpaqueType(\n  this: Printer,\n  node: t.OpaqueType | t.DeclareOpaqueType,\n) {\n  this.word(\"opaque\");\n  this.space();\n  this.word(\"type\");\n  this.space();\n  this.print(node.id);\n  this.print(node.typeParameters);\n  if (node.supertype) {\n    this.token(\":\");\n    this.space();\n    this.print(node.supertype);\n  }\n\n  if (node.impltype) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.impltype);\n  }\n  this.semicolon();\n}\n\nexport function ObjectTypeAnnotation(\n  this: Printer,\n  node: t.ObjectTypeAnnotation,\n) {\n  if (node.exact) {\n    this.token(\"{|\");\n  } else {\n    this.token(\"{\");\n  }\n\n  // TODO: remove the array fallbacks and instead enforce the types to require an array\n  const props = [\n    ...node.properties,\n    ...(node.callProperties || []),\n    ...(node.indexers || []),\n    ...(node.internalSlots || []),\n  ];\n\n  if (props.length) {\n    this.newline();\n\n    this.space();\n\n    this.printJoin(\n      props,\n      true,\n      true,\n      undefined,\n      undefined,\n      function addNewlines(leading) {\n        if (leading && !props[0]) return 1;\n      },\n      () => {\n        if (props.length !== 1 || node.inexact) {\n          this.token(\",\");\n          this.space();\n        }\n      },\n    );\n\n    this.space();\n  }\n\n  if (node.inexact) {\n    this.indent();\n    this.token(\"...\");\n    if (props.length) {\n      this.newline();\n    }\n    this.dedent();\n  }\n\n  if (node.exact) {\n    this.token(\"|}\");\n  } else {\n    this.token(\"}\");\n  }\n}\n\nexport function ObjectTypeInternalSlot(\n  this: Printer,\n  node: t.ObjectTypeInternalSlot,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.token(\"[\");\n  this.token(\"[\");\n  this.print(node.id);\n  this.token(\"]\");\n  this.token(\"]\");\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeCallProperty(\n  this: Printer,\n  node: t.ObjectTypeCallProperty,\n) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeIndexer(this: Printer, node: t.ObjectTypeIndexer) {\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  this._variance(node);\n  this.token(\"[\");\n  if (node.id) {\n    this.print(node.id);\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.key);\n  this.token(\"]\");\n  this.token(\":\");\n  this.space();\n  this.print(node.value);\n}\n\nexport function ObjectTypeProperty(this: Printer, node: t.ObjectTypeProperty) {\n  if (node.proto) {\n    this.word(\"proto\");\n    this.space();\n  }\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (node.kind === \"get\" || node.kind === \"set\") {\n    this.word(node.kind);\n    this.space();\n  }\n  this._variance(node);\n  this.print(node.key);\n  if (node.optional) this.token(\"?\");\n  if (!node.method) {\n    this.token(\":\");\n    this.space();\n  }\n  this.print(node.value);\n}\n\nexport function ObjectTypeSpreadProperty(\n  this: Printer,\n  node: t.ObjectTypeSpreadProperty,\n) {\n  this.token(\"...\");\n  this.print(node.argument);\n}\n\nexport function QualifiedTypeIdentifier(\n  this: Printer,\n  node: t.QualifiedTypeIdentifier,\n) {\n  this.print(node.qualification);\n  this.token(\".\");\n  this.print(node.id);\n}\n\nexport function SymbolTypeAnnotation(this: Printer) {\n  this.word(\"symbol\");\n}\n\nfunction orSeparator(this: Printer, occurrenceCount: number) {\n  this.space();\n  this.token(\"|\", false, occurrenceCount);\n  this.space();\n}\n\nexport function UnionTypeAnnotation(\n  this: Printer,\n  node: t.UnionTypeAnnotation,\n) {\n  this.printJoin(node.types, undefined, undefined, orSeparator);\n}\n\nexport function TypeCastExpression(this: Printer, node: t.TypeCastExpression) {\n  this.token(\"(\");\n  this.print(node.expression);\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function Variance(this: Printer, node: t.Variance) {\n  if (node.kind === \"plus\") {\n    this.token(\"+\");\n  } else {\n    this.token(\"-\");\n  }\n}\n\nexport function VoidTypeAnnotation(this: Printer) {\n  this.word(\"void\");\n}\n\nexport function IndexedAccessType(this: Printer, node: t.IndexedAccessType) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function OptionalIndexedAccessType(\n  this: Printer,\n  node: t.OptionalIndexedAccessType,\n) {\n  this.print(node.objectType);\n  if (node.optional) {\n    this.token(\"?.\");\n  }\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function File(this: Printer, node: t.File) {\n  if (node.program) {\n    // Print this here to ensure that Program node 'leadingComments' still\n    // get printed after the hashbang.\n    this.print(node.program.interpreter);\n  }\n\n  this.print(node.program);\n}\n\nexport function Program(this: Printer, node: t.Program) {\n  // An empty Program doesn't have any inner tokens, so\n  // we must explicitly print its inner comments.\n  this.noIndentInnerCommentsHere();\n  this.printInnerComments();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, undefined, newline);\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body);\n}\n\nexport function BlockStatement(this: Printer, node: t.BlockStatement) {\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n\n  const directivesLen = node.directives?.length;\n  if (directivesLen) {\n    const newline = node.body.length ? 2 : 1;\n    this.printSequence(node.directives, true, newline);\n    if (!node.directives[directivesLen - 1].trailingComments?.length) {\n      this.newline(newline);\n    }\n  }\n\n  this.printSequence(node.body, true);\n\n  exit();\n  this.rightBrace(node);\n}\n\nexport function Directive(this: Printer, node: t.Directive) {\n  this.print(node.value);\n  this.semicolon();\n}\n\n// These regexes match an even number of \\ followed by a quote\nconst unescapedSingleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*'/;\nconst unescapedDoubleQuoteRE = /(?:^|[^\\\\])(?:\\\\\\\\)*\"/;\n\nexport function DirectiveLiteral(this: Printer, node: t.DirectiveLiteral) {\n  const raw = this.getPossibleRaw(node);\n  if (!this.format.minified && raw !== undefined) {\n    this.token(raw);\n    return;\n  }\n\n  const { value } = node;\n\n  // NOTE: In directives we can't change escapings,\n  // because they change the behavior.\n  // e.g. \"us\\x65 strict\" (\\x65 is e) is not a \"use strict\" directive.\n\n  if (!unescapedDoubleQuoteRE.test(value)) {\n    this.token(`\"${value}\"`);\n  } else if (!unescapedSingleQuoteRE.test(value)) {\n    this.token(`'${value}'`);\n  } else {\n    throw new Error(\n      \"Malformed AST: it is not possible to print a directive containing\" +\n        \" both unescaped single and double quotes.\",\n    );\n  }\n}\n\nexport function InterpreterDirective(\n  this: Printer,\n  node: t.InterpreterDirective,\n) {\n  this.token(`#!${node.value}`);\n  this.newline(1, true);\n}\n\nexport function Placeholder(this: Printer, node: t.Placeholder) {\n  this.token(\"%%\");\n  this.print(node.name);\n  this.token(\"%%\");\n\n  if (node.expectedNode === \"Statement\") {\n    this.semicolon();\n  }\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function JSXAttribute(this: Printer, node: t.JSXAttribute) {\n  this.print(node.name);\n  if (node.value) {\n    this.token(\"=\");\n    this.print(node.value);\n  }\n}\n\nexport function JSXIdentifier(this: Printer, node: t.JSXIdentifier) {\n  this.word(node.name);\n}\n\nexport function JSXNamespacedName(this: Printer, node: t.JSXNamespacedName) {\n  this.print(node.namespace);\n  this.token(\":\");\n  this.print(node.name);\n}\n\nexport function JSXMemberExpression(\n  this: Printer,\n  node: t.JSXMemberExpression,\n) {\n  this.print(node.object);\n  this.token(\".\");\n  this.print(node.property);\n}\n\nexport function JSXSpreadAttribute(this: Printer, node: t.JSXSpreadAttribute) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.argument);\n  this.rightBrace(node);\n}\n\nexport function JSXExpressionContainer(\n  this: Printer,\n  node: t.JSXExpressionContainer,\n) {\n  this.token(\"{\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXSpreadChild(this: Printer, node: t.JSXSpreadChild) {\n  this.token(\"{\");\n  this.token(\"...\");\n  this.print(node.expression);\n  this.rightBrace(node);\n}\n\nexport function JSXText(this: Printer, node: t.JSXText) {\n  const raw = this.getPossibleRaw(node);\n\n  if (raw !== undefined) {\n    this.token(raw, true);\n  } else {\n    this.token(node.value, true);\n  }\n}\n\nexport function JSXElement(this: Printer, node: t.JSXElement) {\n  const open = node.openingElement;\n  this.print(open);\n  if (open.selfClosing) return;\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingElement);\n}\n\nfunction spaceSeparator(this: Printer) {\n  this.space();\n}\n\nexport function JSXOpeningElement(this: Printer, node: t.JSXOpeningElement) {\n  this.token(\"<\");\n  this.print(node.name);\n  if (process.env.BABEL_8_BREAKING) {\n    //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    if (node.typeArguments) {\n      this.print(node.typeArguments); // Flow AST\n    }\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters); // Legacy TS AST\n  }\n\n  if (node.attributes.length > 0) {\n    this.space();\n    this.printJoin(node.attributes, undefined, undefined, spaceSeparator);\n  }\n  if (node.selfClosing) {\n    this.space();\n    this.token(\"/\");\n  }\n  this.token(\">\");\n}\n\nexport function JSXClosingElement(this: Printer, node: t.JSXClosingElement) {\n  this.token(\"<\");\n  this.token(\"/\");\n  this.print(node.name);\n  this.token(\">\");\n}\n\nexport function JSXEmptyExpression(this: Printer) {\n  // This node is empty, so forcefully print its inner comments.\n  this.printInnerComments();\n}\n\nexport function JSXFragment(this: Printer, node: t.JSXFragment) {\n  this.print(node.openingFragment);\n\n  this.indent();\n  for (const child of node.children) {\n    this.print(child);\n  }\n  this.dedent();\n\n  this.print(node.closingFragment);\n}\n\nexport function JSXOpeningFragment(this: Printer) {\n  this.token(\"<\");\n  this.token(\">\");\n}\n\nexport function JSXClosingFragment(this: Printer) {\n  this.token(\"</\");\n  this.token(\">\");\n}\n","import type Printer from \"../printer.ts\";\nimport type * as t from \"@babel/types\";\n\nexport function TSTypeAnnotation(\n  this: Printer,\n  node: t.TSTypeAnnotation,\n  parent: t.Node,\n) {\n  // TODO(@nicolo-ribaudo): investigate not including => in the range\n  // of the return type of an arrow function type\n  this.token(\n    (parent.type === \"TSFunctionType\" || parent.type === \"TSConstructorType\") &&\n      (process.env.BABEL_8_BREAKING\n        ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n          parent.returnType\n        : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n          parent.typeAnnotation) === node\n      ? \"=>\"\n      : \":\",\n  );\n  this.space();\n  // @ts-expect-error todo(flow->ts) can this be removed? `.optional` looks to be not existing property\n  if (node.optional) this.token(\"?\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSTypeParameterInstantiation(\n  this: Printer,\n  node: t.TSTypeParameterInstantiation,\n  parent: t.Node,\n): void {\n  this.token(\"<\");\n\n  let printTrailingSeparator =\n    parent.type === \"ArrowFunctionExpression\" && node.params.length === 1;\n  if (this.tokenMap && node.start != null && node.end != null) {\n    // Only force the trailing comma for pre-existing nodes if they\n    // already had a comma (either because they were multi-param, or\n    // because they had a trailing comma)\n    printTrailingSeparator &&= !!this.tokenMap.find(node, t =>\n      this.tokenMap.matchesOriginal(t, \",\"),\n    );\n    // Preseve the trailing comma if it was there before\n    printTrailingSeparator ||= this.shouldPrintTrailingComma(\">\");\n  }\n\n  this.printList(node.params, printTrailingSeparator);\n  this.token(\">\");\n}\n\nexport { TSTypeParameterInstantiation as TSTypeParameterDeclaration };\n\nexport function TSTypeParameter(this: Printer, node: t.TSTypeParameter) {\n  if (node.in) {\n    this.word(\"in\");\n    this.space();\n  }\n\n  if (node.out) {\n    this.word(\"out\");\n    this.space();\n  }\n\n  this.word(\n    !process.env.BABEL_8_BREAKING\n      ? (node.name as unknown as string)\n      : (node.name as unknown as t.Identifier).name,\n  );\n\n  if (node.constraint) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.print(node.constraint);\n  }\n\n  if (node.default) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(node.default);\n  }\n}\n\nexport function TSParameterProperty(\n  this: Printer,\n  node: t.TSParameterProperty,\n) {\n  if (node.accessibility) {\n    this.word(node.accessibility);\n    this.space();\n  }\n\n  if (node.readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this._param(node.parameter);\n}\n\nexport function TSDeclareFunction(\n  this: Printer,\n  node: t.TSDeclareFunction,\n  parent: t.ParentMaps[\"TSDeclareFunction\"],\n) {\n  if (node.declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this._functionHead(node, parent);\n  this.semicolon();\n}\n\nexport function TSDeclareMethod(this: Printer, node: t.TSDeclareMethod) {\n  this._classMethodHead(node);\n  this.semicolon();\n}\n\nexport function TSQualifiedName(this: Printer, node: t.TSQualifiedName) {\n  this.print(node.left);\n  this.token(\".\");\n  this.print(node.right);\n}\n\nexport function TSCallSignatureDeclaration(\n  this: Printer,\n  node: t.TSCallSignatureDeclaration,\n) {\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nfunction maybePrintTrailingCommaOrSemicolon(printer: Printer, node: t.Node) {\n  if (!printer.tokenMap || !node.start || !node.end) {\n    printer.semicolon();\n    return;\n  }\n\n  if (printer.tokenMap.endMatches(node, \",\")) {\n    printer.token(\",\");\n  } else if (printer.tokenMap.endMatches(node, \";\")) {\n    printer.semicolon();\n  }\n}\n\nexport function TSConstructSignatureDeclaration(\n  this: Printer,\n  node: t.TSConstructSignatureDeclaration,\n) {\n  this.word(\"new\");\n  this.space();\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSPropertySignature(\n  this: Printer,\n  node: t.TSPropertySignature,\n) {\n  const { readonly } = node;\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function tsPrintPropertyOrMethodName(\n  this: Printer,\n  node: t.TSPropertySignature | t.TSMethodSignature,\n) {\n  if (node.computed) {\n    this.token(\"[\");\n  }\n  this.print(node.key);\n  if (node.computed) {\n    this.token(\"]\");\n  }\n  if (node.optional) {\n    this.token(\"?\");\n  }\n}\n\nexport function TSMethodSignature(this: Printer, node: t.TSMethodSignature) {\n  const { kind } = node;\n  if (kind === \"set\" || kind === \"get\") {\n    this.word(kind);\n    this.space();\n  }\n  this.tsPrintPropertyOrMethodName(node);\n  this.tsPrintSignatureDeclarationBase(node);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSIndexSignature(this: Printer, node: t.TSIndexSignature) {\n  const { readonly, static: isStatic } = node;\n  if (isStatic) {\n    this.word(\"static\");\n    this.space();\n  }\n  if (readonly) {\n    this.word(\"readonly\");\n    this.space();\n  }\n  this.token(\"[\");\n  this._parameters(node.parameters, \"]\");\n  this.print(node.typeAnnotation);\n  maybePrintTrailingCommaOrSemicolon(this, node);\n}\n\nexport function TSAnyKeyword(this: Printer) {\n  this.word(\"any\");\n}\nexport function TSBigIntKeyword(this: Printer) {\n  this.word(\"bigint\");\n}\nexport function TSUnknownKeyword(this: Printer) {\n  this.word(\"unknown\");\n}\nexport function TSNumberKeyword(this: Printer) {\n  this.word(\"number\");\n}\nexport function TSObjectKeyword(this: Printer) {\n  this.word(\"object\");\n}\nexport function TSBooleanKeyword(this: Printer) {\n  this.word(\"boolean\");\n}\nexport function TSStringKeyword(this: Printer) {\n  this.word(\"string\");\n}\nexport function TSSymbolKeyword(this: Printer) {\n  this.word(\"symbol\");\n}\nexport function TSVoidKeyword(this: Printer) {\n  this.word(\"void\");\n}\nexport function TSUndefinedKeyword(this: Printer) {\n  this.word(\"undefined\");\n}\nexport function TSNullKeyword(this: Printer) {\n  this.word(\"null\");\n}\nexport function TSNeverKeyword(this: Printer) {\n  this.word(\"never\");\n}\nexport function TSIntrinsicKeyword(this: Printer) {\n  this.word(\"intrinsic\");\n}\n\nexport function TSThisType(this: Printer) {\n  this.word(\"this\");\n}\n\nexport function TSFunctionType(this: Printer, node: t.TSFunctionType) {\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function TSConstructorType(this: Printer, node: t.TSConstructorType) {\n  if (node.abstract) {\n    this.word(\"abstract\");\n    this.space();\n  }\n  this.word(\"new\");\n  this.space();\n  this.tsPrintFunctionOrConstructorType(node);\n}\n\nexport function tsPrintFunctionOrConstructorType(\n  this: Printer,\n  node: t.TSFunctionType | t.TSConstructorType,\n) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.params\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  this.space();\n  const returnType = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.returnType\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function TSTypeReference(this: Printer, node: t.TSTypeReference) {\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      node.typeArguments\n    : // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      node.typeParameters;\n  this.print(node.typeName, !!typeArguments);\n  this.print(typeArguments);\n}\n\nexport function TSTypePredicate(this: Printer, node: t.TSTypePredicate) {\n  if (node.asserts) {\n    this.word(\"asserts\");\n    this.space();\n  }\n  this.print(node.parameterName);\n  if (node.typeAnnotation) {\n    this.space();\n    this.word(\"is\");\n    this.space();\n    this.print(node.typeAnnotation.typeAnnotation);\n  }\n}\n\nexport function TSTypeQuery(this: Printer, node: t.TSTypeQuery) {\n  this.word(\"typeof\");\n  this.space();\n  this.print(node.exprName);\n\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      node.typeArguments\n    : //@ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n      node.typeParameters;\n  if (typeArguments) {\n    this.print(typeArguments);\n  }\n}\n\nexport function TSTypeLiteral(this: Printer, node: t.TSTypeLiteral) {\n  printBraced(this, node, () => this.printJoin(node.members, true, true));\n}\n\nexport function TSArrayType(this: Printer, node: t.TSArrayType) {\n  this.print(node.elementType, true);\n\n  this.token(\"[\");\n  this.token(\"]\");\n}\n\nexport function TSTupleType(this: Printer, node: t.TSTupleType) {\n  this.token(\"[\");\n  this.printList(node.elementTypes, this.shouldPrintTrailingComma(\"]\"));\n  this.token(\"]\");\n}\n\nexport function TSOptionalType(this: Printer, node: t.TSOptionalType) {\n  this.print(node.typeAnnotation);\n  this.token(\"?\");\n}\n\nexport function TSRestType(this: Printer, node: t.TSRestType) {\n  this.token(\"...\");\n  this.print(node.typeAnnotation);\n}\n\nexport function TSNamedTupleMember(this: Printer, node: t.TSNamedTupleMember) {\n  this.print(node.label);\n  if (node.optional) this.token(\"?\");\n  this.token(\":\");\n  this.space();\n  this.print(node.elementType);\n}\n\nexport function TSUnionType(this: Printer, node: t.TSUnionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"|\");\n}\n\nexport function TSIntersectionType(this: Printer, node: t.TSIntersectionType) {\n  tsPrintUnionOrIntersectionType(this, node, \"&\");\n}\n\nfunction tsPrintUnionOrIntersectionType(\n  printer: Printer,\n  node: t.TSUnionType | t.TSIntersectionType,\n  sep: \"|\" | \"&\",\n) {\n  let hasLeadingToken = 0;\n  if (printer.tokenMap?.startMatches(node, sep)) {\n    hasLeadingToken = 1;\n    printer.token(sep);\n  }\n\n  printer.printJoin(node.types, undefined, undefined, function (i) {\n    this.space();\n    this.token(sep, null, i + hasLeadingToken);\n    this.space();\n  });\n}\n\nexport function TSConditionalType(this: Printer, node: t.TSConditionalType) {\n  this.print(node.checkType);\n  this.space();\n  this.word(\"extends\");\n  this.space();\n  this.print(node.extendsType);\n  this.space();\n  this.token(\"?\");\n  this.space();\n  this.print(node.trueType);\n  this.space();\n  this.token(\":\");\n  this.space();\n  this.print(node.falseType);\n}\n\nexport function TSInferType(this: Printer, node: t.TSInferType) {\n  this.word(\"infer\");\n  this.print(node.typeParameter);\n}\n\nexport function TSParenthesizedType(\n  this: Printer,\n  node: t.TSParenthesizedType,\n) {\n  this.token(\"(\");\n  this.print(node.typeAnnotation);\n  this.token(\")\");\n}\n\nexport function TSTypeOperator(this: Printer, node: t.TSTypeOperator) {\n  this.word(node.operator);\n  this.space();\n  this.print(node.typeAnnotation);\n}\n\nexport function TSIndexedAccessType(\n  this: Printer,\n  node: t.TSIndexedAccessType,\n) {\n  this.print(node.objectType, true);\n  this.token(\"[\");\n  this.print(node.indexType);\n  this.token(\"]\");\n}\n\nexport function TSMappedType(this: Printer, node: t.TSMappedType) {\n  const { nameType, optional, readonly, typeAnnotation } = node;\n  this.token(\"{\");\n  const exit = this.enterDelimited();\n  this.space();\n  if (readonly) {\n    tokenIfPlusMinus(this, readonly);\n    this.word(\"readonly\");\n    this.space();\n  }\n\n  this.token(\"[\");\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.word(node.key.name);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.word(node.typeParameter.name);\n  }\n\n  this.space();\n  this.word(\"in\");\n  this.space();\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n    this.print(node.constraint);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    this.print(node.typeParameter.constraint);\n  }\n\n  if (nameType) {\n    this.space();\n    this.word(\"as\");\n    this.space();\n    this.print(nameType);\n  }\n\n  this.token(\"]\");\n\n  if (optional) {\n    tokenIfPlusMinus(this, optional);\n    this.token(\"?\");\n  }\n\n  if (typeAnnotation) {\n    this.token(\":\");\n    this.space();\n    this.print(typeAnnotation);\n  }\n  this.space();\n  exit();\n  this.token(\"}\");\n}\n\nfunction tokenIfPlusMinus(self: Printer, tok: true | \"+\" | \"-\") {\n  if (tok !== true) {\n    self.token(tok);\n  }\n}\n\nexport function TSTemplateLiteralType(\n  this: Printer,\n  node: t.TSTemplateLiteralType,\n) {\n  this._printTemplate(node, node.types);\n}\n\nexport function TSLiteralType(this: Printer, node: t.TSLiteralType) {\n  this.print(node.literal);\n}\n\nexport function TSClassImplements(\n  this: Printer,\n  // TODO(Babel 8): Just use t.TSClassImplements\n  node: t.Node & {\n    expression: t.TSEntityName;\n    typeArguments?: t.TSTypeParameterInstantiation;\n  },\n) {\n  this.print(node.expression);\n  this.print(node.typeArguments);\n}\n\nexport { TSClassImplements as TSInterfaceHeritage };\n\nexport function TSInterfaceDeclaration(\n  this: Printer,\n  node: t.TSInterfaceDeclaration,\n) {\n  const { declare, id, typeParameters, extends: extendz, body } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"interface\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  if (extendz?.length) {\n    this.space();\n    this.word(\"extends\");\n    this.space();\n    this.printList(extendz);\n  }\n  this.space();\n  this.print(body);\n}\n\nexport function TSInterfaceBody(this: Printer, node: t.TSInterfaceBody) {\n  printBraced(this, node, () => this.printJoin(node.body, true, true));\n}\n\nexport function TSTypeAliasDeclaration(\n  this: Printer,\n  node: t.TSTypeAliasDeclaration,\n) {\n  const { declare, id, typeParameters, typeAnnotation } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  this.word(\"type\");\n  this.space();\n  this.print(id);\n  this.print(typeParameters);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(typeAnnotation);\n  this.semicolon();\n}\n\nfunction TSTypeExpression(\n  this: Printer,\n  node: t.TSAsExpression | t.TSSatisfiesExpression,\n) {\n  const { type, expression, typeAnnotation } = node;\n  this.print(expression, true);\n  this.space();\n  this.word(type === \"TSAsExpression\" ? \"as\" : \"satisfies\");\n  this.space();\n  this.print(typeAnnotation);\n}\n\nexport {\n  TSTypeExpression as TSAsExpression,\n  TSTypeExpression as TSSatisfiesExpression,\n};\n\nexport function TSTypeAssertion(this: Printer, node: t.TSTypeAssertion) {\n  const { typeAnnotation, expression } = node;\n  this.token(\"<\");\n  this.print(typeAnnotation);\n  this.token(\">\");\n  this.space();\n  this.print(expression);\n}\n\nexport function TSInstantiationExpression(\n  this: Printer,\n  node: t.TSInstantiationExpression,\n) {\n  this.print(node.expression);\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.typeArguments);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n    this.print(node.typeParameters);\n  }\n}\n\nexport function TSEnumDeclaration(this: Printer, node: t.TSEnumDeclaration) {\n  const { declare, const: isConst, id } = node;\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n  if (isConst) {\n    this.word(\"const\");\n    this.space();\n  }\n  this.word(\"enum\");\n  this.space();\n  this.print(id);\n  this.space();\n\n  if (process.env.BABEL_8_BREAKING) {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n    this.print(node.body);\n  } else {\n    // cast to TSEnumBody for Babel 7 AST\n    TSEnumBody.call(this, node as unknown as t.TSEnumBody);\n  }\n}\n\nexport function TSEnumBody(this: Printer, node: t.TSEnumBody) {\n  printBraced(this, node, () =>\n    this.printList(\n      node.members,\n      this.shouldPrintTrailingComma(\"}\") ??\n        (process.env.BABEL_8_BREAKING ? false : true),\n      true,\n      true,\n    ),\n  );\n}\n\nexport function TSEnumMember(this: Printer, node: t.TSEnumMember) {\n  const { id, initializer } = node;\n  this.print(id);\n  if (initializer) {\n    this.space();\n    this.token(\"=\");\n    this.space();\n    this.print(initializer);\n  }\n}\n\nexport function TSModuleDeclaration(\n  this: Printer,\n  node: t.TSModuleDeclaration,\n) {\n  const { declare, id, kind } = node;\n\n  if (declare) {\n    this.word(\"declare\");\n    this.space();\n  }\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (kind !== \"global\") {\n      this.word(kind);\n      this.space();\n    }\n\n    this.print(node.id);\n    if (!node.body) {\n      this.semicolon();\n      return;\n    }\n    this.space();\n    this.print(node.body);\n  } else {\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    if (!node.global) {\n      this.word(kind ?? (id.type === \"Identifier\" ? \"namespace\" : \"module\"));\n      this.space();\n    }\n\n    this.print(id);\n\n    if (!node.body) {\n      this.semicolon();\n      return;\n    }\n\n    let body = node.body;\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n    while (body.type === \"TSModuleDeclaration\") {\n      this.token(\".\");\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      this.print(body.id);\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST shape\n      body = body.body;\n    }\n\n    this.space();\n    this.print(body);\n  }\n}\n\nexport function TSModuleBlock(this: Printer, node: t.TSModuleBlock) {\n  printBraced(this, node, () => this.printSequence(node.body, true));\n}\n\nexport function TSImportType(this: Printer, node: t.TSImportType) {\n  const { argument, qualifier, options } = node;\n  this.word(\"import\");\n  this.token(\"(\");\n  this.print(argument);\n  if (options) {\n    this.token(\",\");\n    this.print(options);\n  }\n  this.token(\")\");\n  if (qualifier) {\n    this.token(\".\");\n    this.print(qualifier);\n  }\n  const typeArguments = process.env.BABEL_8_BREAKING\n    ? //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      node.typeArguments\n    : //@ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n      node.typeParameters;\n  if (typeArguments) {\n    this.print(typeArguments);\n  }\n}\n\nexport function TSImportEqualsDeclaration(\n  this: Printer,\n  node: t.TSImportEqualsDeclaration,\n) {\n  const { id, moduleReference } = node;\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n    node.isExport\n  ) {\n    this.word(\"export\");\n    this.space();\n  }\n  this.word(\"import\");\n  this.space();\n  this.print(id);\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(moduleReference);\n  this.semicolon();\n}\n\nexport function TSExternalModuleReference(\n  this: Printer,\n  node: t.TSExternalModuleReference,\n) {\n  this.token(\"require(\");\n  this.print(node.expression);\n  this.token(\")\");\n}\n\nexport function TSNonNullExpression(\n  this: Printer,\n  node: t.TSNonNullExpression,\n) {\n  this.print(node.expression);\n  this.token(\"!\");\n}\n\nexport function TSExportAssignment(this: Printer, node: t.TSExportAssignment) {\n  this.word(\"export\");\n  this.space();\n  this.token(\"=\");\n  this.space();\n  this.print(node.expression);\n  this.semicolon();\n}\n\nexport function TSNamespaceExportDeclaration(\n  this: Printer,\n  node: t.TSNamespaceExportDeclaration,\n) {\n  this.word(\"export\");\n  this.space();\n  this.word(\"as\");\n  this.space();\n  this.word(\"namespace\");\n  this.space();\n  this.print(node.id);\n  this.semicolon();\n}\n\nexport function tsPrintSignatureDeclarationBase(this: Printer, node: any) {\n  const { typeParameters } = node;\n  const parameters = process.env.BABEL_8_BREAKING\n    ? node.params\n    : node.parameters;\n  this.print(typeParameters);\n  this.token(\"(\");\n  this._parameters(parameters, \")\");\n  const returnType = process.env.BABEL_8_BREAKING\n    ? node.returnType\n    : node.typeAnnotation;\n  this.print(returnType);\n}\n\nexport function tsPrintClassMemberModifiers(\n  this: Printer,\n  node:\n    | t.ClassProperty\n    | t.ClassAccessorProperty\n    | t.ClassPrivateProperty\n    | t.ClassMethod\n    | t.ClassPrivateMethod\n    | t.TSDeclareMethod,\n) {\n  const isPrivateField = node.type === \"ClassPrivateProperty\";\n  const isPublicField =\n    node.type === \"ClassAccessorProperty\" || node.type === \"ClassProperty\";\n  printModifiersList(this, node, [\n    isPublicField && node.declare && \"declare\",\n    !isPrivateField && node.accessibility,\n  ]);\n  if (node.static) {\n    this.word(\"static\");\n    this.space();\n  }\n  printModifiersList(this, node, [\n    !isPrivateField && node.abstract && \"abstract\",\n    !isPrivateField && node.override && \"override\",\n    (isPublicField || isPrivateField) && node.readonly && \"readonly\",\n  ]);\n}\n\nfunction printBraced(printer: Printer, node: t.Node, cb: () => void) {\n  printer.token(\"{\");\n  const exit = printer.enterDelimited();\n  cb();\n  exit();\n  printer.rightBrace(node);\n}\n\nfunction printModifiersList(\n  printer: Printer,\n  node: t.Node,\n  modifiers: (string | false | null)[],\n) {\n  const modifiersSet = new Set<string>();\n  for (const modifier of modifiers) {\n    if (modifier) modifiersSet.add(modifier);\n  }\n\n  printer.tokenMap?.find(node, tok => {\n    if (modifiersSet.has(tok.value)) {\n      printer.token(tok.value);\n      printer.space();\n      modifiersSet.delete(tok.value);\n      return modifiersSet.size === 0;\n    }\n  });\n\n  for (const modifier of modifiersSet) {\n    printer.word(modifier);\n    printer.space();\n  }\n}\n","export * from \"./template-literals.ts\";\nexport * from \"./expressions.ts\";\nexport * from \"./statements.ts\";\nexport * from \"./classes.ts\";\nexport * from \"./methods.ts\";\nexport * from \"./modules.ts\";\nexport * from \"./types.ts\";\nexport * from \"./flow.ts\";\nexport * from \"./base.ts\";\nexport * from \"./jsx.ts\";\nexport * from \"./typescript.ts\";\n","import type Printer from \"../printer\";\nimport type * as t from \"@babel/types\";\n\nexport type DeprecatedBabel7ASTTypes =\n  | \"Noop\"\n  | \"TSExpressionWithTypeArguments\"\n  | \"DecimalLiteral\";\n\nexport function addDeprecatedGenerators(PrinterClass: typeof Printer) {\n  // Add Babel 7 generator methods that is removed in Babel 8\n  if (!process.env.BABEL_8_BREAKING) {\n    const deprecatedBabel7Generators = {\n      Noop(this: Printer) {},\n\n      TSExpressionWithTypeArguments(\n        this: Printer,\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n        node: t.TSExpressionWithTypeArguments,\n      ) {\n        this.print(node.expression);\n        this.print(node.typeParameters);\n      },\n\n      DecimalLiteral(this: Printer, node: any) {\n        const raw = this.getPossibleRaw(node);\n        if (!this.format.minified && raw !== undefined) {\n          this.word(raw);\n          return;\n        }\n        this.word(node.value + \"m\");\n      },\n    } satisfies Record<\n      DeprecatedBabel7ASTTypes,\n      (this: Printer, node: any) => void\n    >;\n    Object.assign(PrinterClass.prototype, deprecatedBabel7Generators);\n  }\n}\n","import Buffer, { type Pos } from \"./buffer.ts\";\nimport type { Loc } from \"./buffer.ts\";\nimport * as n from \"./node/index.ts\";\nimport type * as t from \"@babel/types\";\nimport {\n  isExpression,\n  isFunction,\n  isStatement,\n  isClassBody,\n  isTSInterfaceBody,\n  isTSEnumMember,\n} from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\n\nimport { TokenMap } from \"./token-map.ts\";\nimport type { GeneratorOptions } from \"./index.ts\";\nimport * as generatorFunctions from \"./generators/index.ts\";\nimport {\n  addDeprecatedGenerators,\n  type DeprecatedBabel7ASTTypes,\n} from \"./generators/deprecated.ts\";\nimport type SourceMap from \"./source-map.ts\";\nimport type { TraceMap } from \"@jridgewell/trace-mapping\";\nimport type { Token } from \"@babel/parser\";\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\n\nconst SCIENTIFIC_NOTATION = /e/i;\nconst ZERO_DECIMAL_INTEGER = /\\.0+$/;\nconst HAS_NEWLINE = /[\\n\\r\\u2028\\u2029]/;\nconst HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\\n\\r\\u2028\\u2029]|\\*\\//;\n\nfunction commentIsNewline(c: t.Comment) {\n  return c.type === \"CommentLine\" || HAS_NEWLINE.test(c.value);\n}\n\nconst { needsParens } = n;\n\nconst enum COMMENT_TYPE {\n  LEADING,\n  INNER,\n  TRAILING,\n}\n\nconst enum COMMENT_SKIP_NEWLINE {\n  DEFAULT,\n  ALL,\n  LEADING,\n  TRAILING,\n}\n\nconst enum PRINT_COMMENT_HINT {\n  SKIP,\n  ALLOW,\n  DEFER,\n}\n\nexport type Format = {\n  shouldPrintComment: (comment: string) => boolean;\n  preserveFormat: boolean;\n  retainLines: boolean;\n  retainFunctionParens: boolean;\n  comments: boolean;\n  auxiliaryCommentBefore: string;\n  auxiliaryCommentAfter: string;\n  compact: boolean | \"auto\";\n  minified: boolean;\n  concise: boolean;\n  indent: {\n    adjustMultilineComment: boolean;\n    style: string;\n  };\n  /**\n   * @deprecated Removed in Babel 8, syntax type is always 'hash'\n   */\n  recordAndTupleSyntaxType?: GeneratorOptions[\"recordAndTupleSyntaxType\"];\n  jsescOption: jsescOptions;\n  /**\n   * @deprecated Removed in Babel 8, use `jsescOption` instead\n   */\n  jsonCompatibleStrings?: boolean;\n  /**\n   * For use with the Hack-style pipe operator.\n   * Changes what token is used for pipe bodies’ topic references.\n   */\n  topicToken?: GeneratorOptions[\"topicToken\"];\n  /**\n   * @deprecated Removed in Babel 8\n   */\n  decoratorsBeforeExport?: boolean;\n  /**\n   * The import attributes syntax style:\n   * - \"with\"        : `import { a } from \"b\" with { type: \"json\" };`\n   * - \"assert\"      : `import { a } from \"b\" assert { type: \"json\" };`\n   * - \"with-legacy\" : `import { a } from \"b\" with type: \"json\";`\n   */\n  importAttributesKeyword?: \"with\" | \"assert\" | \"with-legacy\";\n};\n\ninterface AddNewlinesOptions {\n  addNewlines(leading: boolean, node: t.Node): number;\n  nextNodeStartLine: number;\n}\n\ninterface PrintSequenceOptions extends Partial<AddNewlinesOptions> {\n  statement?: boolean;\n  indent?: boolean;\n  trailingCommentsLineOffset?: number;\n}\n\ninterface PrintListOptions {\n  separator?: (this: Printer, occurrenceCount: number, last: boolean) => void;\n  iterator?: (node: t.Node, index: number) => void;\n  statement?: boolean;\n  indent?: boolean;\n  printTrailingSeparator?: boolean;\n}\n\nexport type PrintJoinOptions = PrintListOptions & PrintSequenceOptions;\nclass Printer {\n  constructor(\n    format: Format,\n    map: SourceMap,\n    tokens?: Token[],\n    originalCode?: string,\n  ) {\n    this.format = format;\n\n    this._tokens = tokens;\n    this._originalCode = originalCode;\n\n    this._indentRepeat = format.indent.style.length;\n\n    this._inputMap = map?._inputMap;\n\n    this._buf = new Buffer(map, format.indent.style[0]);\n  }\n  declare _inputMap: TraceMap;\n\n  declare format: Format;\n\n  inForStatementInit: boolean = false;\n  enterForStatementInit() {\n    if (this.inForStatementInit) return () => {};\n    this.inForStatementInit = true;\n    return () => {\n      this.inForStatementInit = false;\n    };\n  }\n\n  enterDelimited() {\n    const oldInForStatementInit = this.inForStatementInit;\n    const oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n    if (\n      oldInForStatementInit === false &&\n      oldNoLineTerminatorAfterNode === null\n    ) {\n      return () => {};\n    }\n    this.inForStatementInit = false;\n    this._noLineTerminatorAfterNode = null;\n    return () => {\n      this.inForStatementInit = oldInForStatementInit;\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    };\n  }\n\n  tokenContext: number = 0;\n\n  _tokens: Token[] = null;\n  _originalCode: string | null = null;\n\n  declare _buf: Buffer;\n  _currentNode: t.Node = null;\n  _indent: number = 0;\n  _indentRepeat: number = 0;\n  _insideAux: boolean = false;\n  _noLineTerminator: boolean = false;\n  _noLineTerminatorAfterNode: t.Node | null = null;\n  _printAuxAfterOnNextUserNode: boolean = false;\n  _printedComments = new Set<t.Comment>();\n  _endsWithInteger = false;\n  _endsWithWord = false;\n  _endsWithDiv = false;\n  _lastCommentLine = 0;\n  _endsWithInnerRaw: boolean = false;\n  _indentInnerComments: boolean = true;\n  tokenMap: TokenMap = null;\n\n  _boundGetRawIdentifier = this._getRawIdentifier.bind(this);\n\n  generate(ast: t.Node) {\n    if (this.format.preserveFormat) {\n      this.tokenMap = new TokenMap(ast, this._tokens, this._originalCode);\n    }\n    this.print(ast);\n    this._maybeAddAuxComment();\n\n    return this._buf.get();\n  }\n\n  /**\n   * Increment indent size.\n   */\n\n  indent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent++;\n  }\n\n  /**\n   * Decrement indent size.\n   */\n\n  dedent(): void {\n    const { format } = this;\n    if (format.preserveFormat || format.compact || format.concise) {\n      return;\n    }\n\n    this._indent--;\n  }\n\n  /**\n   * If the next token is on the same line, we must first print a semicolon.\n   * This option is only used in `preserveFormat` node, for semicolons that\n   * might have omitted due to them being absent in the original code (thanks\n   * to ASI).\n   *\n   * We need both *NextToken and *NextNode because we only want to insert the\n   * semicolon when the next token starts a new node, and not in cases like\n   * foo} (where } is not starting a new node). So we first set *NextNode, and\n   * then the print() method will move it to *NextToken.\n   */\n  _printSemicolonBeforeNextNode: number = -1;\n  _printSemicolonBeforeNextToken: number = -1;\n\n  /**\n   * Add a semicolon to the buffer.\n   */\n  semicolon(force: boolean = false): void {\n    this._maybeAddAuxComment();\n    if (force) {\n      this._appendChar(charCodes.semicolon);\n      this._noLineTerminator = false;\n      return;\n    }\n    if (this.tokenMap) {\n      const node = this._currentNode;\n      if (node.start != null && node.end != null) {\n        if (!this.tokenMap.endMatches(node, \";\")) {\n          // no semicolon\n          this._printSemicolonBeforeNextNode = this._buf.getCurrentLine();\n          return;\n        }\n        const indexes = this.tokenMap.getIndexes(this._currentNode);\n        this._catchUpTo(this._tokens[indexes[indexes.length - 1]].loc.start);\n      }\n    }\n    this._queue(charCodes.semicolon);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a right brace to the buffer.\n   */\n\n  rightBrace(node: t.Node): void {\n    if (this.format.minified) {\n      this._buf.removeLastSemicolon();\n    }\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\"}\");\n  }\n\n  rightParens(node: t.Node): void {\n    this.sourceWithOffset(\"end\", node.loc, -1);\n    this.token(\")\");\n  }\n\n  /**\n   * Add a space to the buffer unless it is compact.\n   */\n\n  space(force: boolean = false): void {\n    const { format } = this;\n    if (format.compact || format.preserveFormat) return;\n\n    if (force) {\n      this._space();\n    } else if (this._buf.hasContent()) {\n      const lastCp = this.getLastChar();\n      if (lastCp !== charCodes.space && lastCp !== charCodes.lineFeed) {\n        this._space();\n      }\n    }\n  }\n\n  /**\n   * Writes a token that can't be safely parsed without taking whitespace into account.\n   */\n\n  word(str: string, noLineTerminatorAfter: boolean = false): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str);\n\n    // prevent concatenating words and creating // comment out of division and regex\n    if (\n      this._endsWithWord ||\n      (this._endsWithDiv && str.charCodeAt(0) === charCodes.slash)\n    ) {\n      this._space();\n    }\n    this._append(str, false);\n\n    this._endsWithWord = true;\n    this._noLineTerminator = noLineTerminatorAfter;\n  }\n\n  /**\n   * Writes a number token so that we can validate if it is an integer.\n   */\n\n  number(str: string, number?: number): void {\n    // const NON_DECIMAL_LITERAL = /^0[box]/;\n    function isNonDecimalLiteral(str: string) {\n      if (str.length > 2 && str.charCodeAt(0) === charCodes.digit0) {\n        const secondChar = str.charCodeAt(1);\n        return (\n          secondChar === charCodes.lowercaseB ||\n          secondChar === charCodes.lowercaseO ||\n          secondChar === charCodes.lowercaseX\n        );\n      }\n      return false;\n    }\n    this.word(str);\n\n    // Integer tokens need special handling because they cannot have '.'s inserted\n    // immediately after them.\n    this._endsWithInteger =\n      Number.isInteger(number) &&\n      !isNonDecimalLiteral(str) &&\n      !SCIENTIFIC_NOTATION.test(str) &&\n      !ZERO_DECIMAL_INTEGER.test(str) &&\n      str.charCodeAt(str.length - 1) !== charCodes.dot;\n  }\n\n  /**\n   * Writes a simple token.\n   *\n   * @param {string} str The string to append.\n   * @param {boolean} [maybeNewline=false] Wether `str` might potentially\n   *    contain a line terminator or not.\n   * @param {number} [occurrenceCount=0] The occurrence count of this token in\n   *    the current node. This is used when printing in `preserveFormat` mode,\n   *    to know which token we should map to (for example, to disambiguate the\n   *    commas in an array literal).\n   */\n  token(str: string, maybeNewline = false, occurrenceCount = 0): void {\n    this.tokenContext = 0;\n\n    this._maybePrintInnerComments(str, occurrenceCount);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str, occurrenceCount);\n\n    const lastChar = this.getLastChar();\n    const strFirst = str.charCodeAt(0);\n    if (\n      (lastChar === charCodes.exclamationMark &&\n        // space is mandatory to avoid outputting <!--\n        // http://javascript.spec.whatwg.org/#comment-syntax\n        (str === \"--\" ||\n          // Needs spaces to avoid changing a! == 0 to a!== 0\n          strFirst === charCodes.equalsTo)) ||\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (strFirst === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (strFirst === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (strFirst === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n    this._append(str, maybeNewline);\n    this._noLineTerminator = false;\n  }\n\n  tokenChar(char: number): void {\n    this.tokenContext = 0;\n\n    const str = String.fromCharCode(char);\n    this._maybePrintInnerComments(str);\n\n    this._maybeAddAuxComment();\n\n    if (this.tokenMap) this._catchUpToCurrentToken(str);\n\n    const lastChar = this.getLastChar();\n    if (\n      // Need spaces for operators of the same kind to avoid: `a+++b`\n      (char === charCodes.plusSign && lastChar === charCodes.plusSign) ||\n      (char === charCodes.dash && lastChar === charCodes.dash) ||\n      // Needs spaces to avoid changing '34' to '34.', which would still be a valid number.\n      (char === charCodes.dot && this._endsWithInteger)\n    ) {\n      this._space();\n    }\n    this._appendChar(char);\n    this._noLineTerminator = false;\n  }\n\n  /**\n   * Add a newline (or many newlines), maintaining formatting.\n   * This function checks the number of newlines in the queue and subtracts them.\n   * It currently has some limitations.\n   * @see {Buffer#getNewlineCount}\n   */\n  newline(i: number = 1, force?: boolean): void {\n    if (i <= 0) return;\n\n    if (!force) {\n      if (this.format.retainLines || this.format.compact) return;\n\n      if (this.format.concise) {\n        this.space();\n        return;\n      }\n    }\n\n    if (i > 2) i = 2; // Max two lines\n\n    i -= this._buf.getNewlineCount();\n\n    for (let j = 0; j < i; j++) {\n      this._newline();\n    }\n\n    return;\n  }\n\n  endsWith(char: number): boolean {\n    return this.getLastChar() === char;\n  }\n\n  getLastChar(): number {\n    return this._buf.getLastChar();\n  }\n\n  endsWithCharAndNewline(): number {\n    return this._buf.endsWithCharAndNewline();\n  }\n\n  removeTrailingNewline(): void {\n    this._buf.removeTrailingNewline();\n  }\n\n  exactSource(loc: Loc | undefined, cb: () => void) {\n    if (!loc) {\n      cb();\n      return;\n    }\n\n    this._catchUp(\"start\", loc);\n\n    this._buf.exactSource(loc, cb);\n  }\n\n  source(prop: \"start\" | \"end\", loc: Loc | undefined): void {\n    if (!loc) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.source(prop, loc);\n  }\n\n  sourceWithOffset(\n    prop: \"start\" | \"end\",\n    loc: Loc | undefined,\n    columnOffset: number,\n  ): void {\n    if (!loc || this.format.preserveFormat) return;\n\n    this._catchUp(prop, loc);\n\n    this._buf.sourceWithOffset(prop, loc, columnOffset);\n  }\n\n  sourceIdentifierName(identifierName: string, pos?: Pos): void {\n    if (!this._buf._canMarkIdName) return;\n\n    const sourcePosition = this._buf._sourcePosition;\n    sourcePosition.identifierNamePos = pos;\n    sourcePosition.identifierName = identifierName;\n  }\n\n  _space(): void {\n    this._queue(charCodes.space);\n  }\n\n  _newline(): void {\n    this._queue(charCodes.lineFeed);\n  }\n\n  _catchUpToCurrentToken(str: string, occurrenceCount: number = 0): void {\n    // Assert: this.tokenMap\n\n    const token = this.tokenMap.findMatching(\n      this._currentNode,\n      str,\n      occurrenceCount,\n    );\n    if (token) this._catchUpTo(token.loc.start);\n\n    if (\n      this._printSemicolonBeforeNextToken !== -1 &&\n      this._printSemicolonBeforeNextToken === this._buf.getCurrentLine()\n    ) {\n      this._buf.appendChar(charCodes.semicolon);\n      this._endsWithWord = false;\n      this._endsWithInteger = false;\n      this._endsWithDiv = false;\n    }\n    this._printSemicolonBeforeNextToken = -1;\n    this._printSemicolonBeforeNextNode = -1;\n  }\n\n  _append(str: string, maybeNewline: boolean): void {\n    this._maybeIndent(str.charCodeAt(0));\n\n    this._buf.append(str, maybeNewline);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _appendChar(char: number): void {\n    this._maybeIndent(char);\n\n    this._buf.appendChar(char);\n\n    // callers are expected to then set these to `true` when needed\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n    this._endsWithDiv = false;\n  }\n\n  _queue(char: number) {\n    this._maybeIndent(char);\n\n    this._buf.queue(char);\n\n    this._endsWithWord = false;\n    this._endsWithInteger = false;\n  }\n\n  _maybeIndent(firstChar: number): void {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      this._buf.queueIndentation(this._getIndent());\n    }\n  }\n\n  _shouldIndent(firstChar: number) {\n    // we've got a newline before us so prepend on the indentation\n    if (\n      this._indent &&\n      firstChar !== charCodes.lineFeed &&\n      this.endsWith(charCodes.lineFeed)\n    ) {\n      return true;\n    }\n  }\n\n  catchUp(line: number) {\n    if (!this.format.retainLines) return;\n\n    // catch up to this nodes newline if we're behind\n    const count = line - this._buf.getCurrentLine();\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n  }\n\n  _catchUp(prop: \"start\" | \"end\", loc?: Loc) {\n    const { format } = this;\n    if (!format.preserveFormat) {\n      if (format.retainLines && loc?.[prop]) {\n        this.catchUp(loc[prop].line);\n      }\n      return;\n    }\n\n    // catch up to this nodes newline if we're behind\n    const pos = loc?.[prop];\n    if (pos != null) this._catchUpTo(pos);\n  }\n\n  _catchUpTo({ line, column, index }: Pos) {\n    const count = line - this._buf.getCurrentLine();\n    if (count > 0 && this._noLineTerminator) {\n      // We cannot inject new lines when _noLineTemrinator is set\n      // to `true`, or we would generate invalid code.\n      return;\n    }\n\n    for (let i = 0; i < count; i++) {\n      this._newline();\n    }\n\n    const spacesCount =\n      count > 0 ? column : column - this._buf.getCurrentColumn();\n    if (spacesCount > 0) {\n      const spaces = this._originalCode\n        ? this._originalCode\n            .slice(index - spacesCount, index)\n            // https://tc39.es/ecma262/#sec-white-space\n            .replace(/[^\\t\\v\\f\\uFEFF\\p{Space_Separator}]/gu, \" \")\n        : \" \".repeat(spacesCount);\n      this._append(spaces, false);\n    }\n  }\n\n  /**\n   * Get the current indent.\n   */\n\n  _getIndent(): number {\n    return this._indentRepeat * this._indent;\n  }\n\n  printTerminatorless(node: t.Node) {\n    /**\n     * Set some state that will be modified if a newline has been inserted before any\n     * non-space characters.\n     *\n     * This is to prevent breaking semantics for terminatorless separator nodes. eg:\n     *\n     *   return foo;\n     *\n     * returns `foo`. But if we do:\n     *\n     *   return\n     *   foo;\n     *\n     *  `undefined` will be returned and not `foo` due to the terminator.\n     */\n    this._noLineTerminator = true;\n    this.print(node);\n  }\n\n  print(\n    node: t.Node | null,\n    noLineTerminatorAfter?: boolean,\n    // trailingCommentsLineOffset also used to check if called from printJoin\n    // it will be ignored if `noLineTerminatorAfter||this._noLineTerminator`\n    trailingCommentsLineOffset?: number,\n  ) {\n    if (!node) return;\n\n    this._endsWithInnerRaw = false;\n\n    const nodeType = node.type;\n    const format = this.format;\n\n    const oldConcise = format.concise;\n    if (\n      // @ts-expect-error document _compact AST properties\n      node._compact\n    ) {\n      format.concise = true;\n    }\n\n    const printMethod =\n      this[\n        nodeType as Exclude<\n          t.Node[\"type\"],\n          | DeprecatedBabel7ASTTypes\n          // renamed\n          | t.DeprecatedAliases[\"type\"]\n        >\n      ];\n    if (printMethod === undefined) {\n      throw new ReferenceError(\n        `unknown node of type ${JSON.stringify(\n          nodeType,\n        )} with constructor ${JSON.stringify(node.constructor.name)}`,\n      );\n    }\n\n    const parent = this._currentNode;\n    this._currentNode = node;\n\n    if (this.tokenMap) {\n      this._printSemicolonBeforeNextToken = this._printSemicolonBeforeNextNode;\n    }\n\n    const oldInAux = this._insideAux;\n    this._insideAux = node.loc == null;\n    this._maybeAddAuxComment(this._insideAux && !oldInAux);\n\n    const parenthesized = node.extra?.parenthesized as boolean | undefined;\n    let shouldPrintParens =\n      (parenthesized && format.preserveFormat) ||\n      (parenthesized &&\n        format.retainFunctionParens &&\n        nodeType === \"FunctionExpression\") ||\n      needsParens(\n        node,\n        parent,\n        this.tokenContext,\n        this.inForStatementInit,\n        format.preserveFormat ? this._boundGetRawIdentifier : undefined,\n      );\n\n    if (\n      !shouldPrintParens &&\n      parenthesized &&\n      node.leadingComments?.length &&\n      node.leadingComments[0].type === \"CommentBlock\"\n    ) {\n      const parentType = parent?.type;\n      switch (parentType) {\n        case \"ExpressionStatement\":\n        case \"VariableDeclarator\":\n        case \"AssignmentExpression\":\n        case \"ReturnStatement\":\n          break;\n        case \"CallExpression\":\n        case \"OptionalCallExpression\":\n        case \"NewExpression\":\n          if (parent.callee !== node) break;\n        // falls through\n        default:\n          shouldPrintParens = true;\n      }\n    }\n\n    let indentParenthesized = false;\n    if (\n      !shouldPrintParens &&\n      this._noLineTerminator &&\n      (node.leadingComments?.some(commentIsNewline) ||\n        (this.format.retainLines &&\n          node.loc &&\n          node.loc.start.line > this._buf.getCurrentLine()))\n    ) {\n      shouldPrintParens = true;\n      indentParenthesized = true;\n    }\n\n    let oldNoLineTerminatorAfterNode;\n    let oldInForStatementInitWasTrue;\n    if (!shouldPrintParens) {\n      noLineTerminatorAfter ||=\n        parent &&\n        this._noLineTerminatorAfterNode === parent &&\n        n.isLastChild(parent, node);\n      if (noLineTerminatorAfter) {\n        if (node.trailingComments?.some(commentIsNewline)) {\n          if (isExpression(node)) shouldPrintParens = true;\n        } else {\n          oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n          this._noLineTerminatorAfterNode = node;\n        }\n      }\n    }\n\n    if (shouldPrintParens) {\n      this.token(\"(\");\n      if (indentParenthesized) this.indent();\n      this._endsWithInnerRaw = false;\n      if (this.inForStatementInit) {\n        oldInForStatementInitWasTrue = true;\n        this.inForStatementInit = false;\n      }\n      oldNoLineTerminatorAfterNode = this._noLineTerminatorAfterNode;\n      this._noLineTerminatorAfterNode = null;\n    }\n\n    this._lastCommentLine = 0;\n\n    this._printLeadingComments(node, parent);\n\n    const loc = nodeType === \"Program\" || nodeType === \"File\" ? null : node.loc;\n\n    this.exactSource(\n      loc,\n      // @ts-expect-error Expected 1 arguments, but got 3.\n      printMethod.bind(this, node, parent),\n    );\n\n    if (shouldPrintParens) {\n      this._printTrailingComments(node, parent);\n      if (indentParenthesized) {\n        this.dedent();\n        this.newline();\n      }\n      this.token(\")\");\n      this._noLineTerminator = noLineTerminatorAfter;\n      if (oldInForStatementInitWasTrue) this.inForStatementInit = true;\n    } else if (noLineTerminatorAfter && !this._noLineTerminator) {\n      this._noLineTerminator = true;\n      this._printTrailingComments(node, parent);\n    } else {\n      this._printTrailingComments(node, parent, trailingCommentsLineOffset);\n    }\n\n    // end\n    this._currentNode = parent;\n    format.concise = oldConcise;\n    this._insideAux = oldInAux;\n\n    if (oldNoLineTerminatorAfterNode !== undefined) {\n      this._noLineTerminatorAfterNode = oldNoLineTerminatorAfterNode;\n    }\n\n    this._endsWithInnerRaw = false;\n  }\n\n  _maybeAddAuxComment(enteredPositionlessNode?: boolean) {\n    if (enteredPositionlessNode) this._printAuxBeforeComment();\n    if (!this._insideAux) this._printAuxAfterComment();\n  }\n\n  _printAuxBeforeComment() {\n    if (this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = true;\n\n    const comment = this.format.auxiliaryCommentBefore;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  _printAuxAfterComment() {\n    if (!this._printAuxAfterOnNextUserNode) return;\n    this._printAuxAfterOnNextUserNode = false;\n\n    const comment = this.format.auxiliaryCommentAfter;\n    if (comment) {\n      this._printComment(\n        {\n          type: \"CommentBlock\",\n          value: comment,\n        },\n        COMMENT_SKIP_NEWLINE.DEFAULT,\n      );\n    }\n  }\n\n  getPossibleRaw(\n    node:\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral\n      | t.DirectiveLiteral\n      | t.JSXText,\n  ): string | undefined {\n    const extra = node.extra;\n    if (\n      extra?.raw != null &&\n      extra.rawValue != null &&\n      node.value === extra.rawValue\n    ) {\n      // @ts-expect-error: The extra.raw of these AST node types must be a string\n      return extra.raw;\n    }\n  }\n\n  printJoin(\n    nodes: Array<t.Node> | undefined | null,\n    statement?: boolean,\n    indent?: boolean,\n    separator?: PrintJoinOptions[\"separator\"],\n    printTrailingSeparator?: boolean,\n    addNewlines?: PrintJoinOptions[\"addNewlines\"],\n    iterator?: PrintJoinOptions[\"iterator\"],\n    trailingCommentsLineOffset?: number,\n  ) {\n    if (!nodes?.length) return;\n\n    if (indent == null && this.format.retainLines) {\n      const startLine = nodes[0].loc?.start.line;\n      if (startLine != null && startLine !== this._buf.getCurrentLine()) {\n        indent = true;\n      }\n    }\n\n    if (indent) this.indent();\n\n    const newlineOpts: AddNewlinesOptions = {\n      addNewlines: addNewlines,\n      nextNodeStartLine: 0,\n    };\n\n    const boundSeparator = separator?.bind(this);\n\n    const len = nodes.length;\n    for (let i = 0; i < len; i++) {\n      const node = nodes[i];\n      if (!node) continue;\n\n      if (statement) this._printNewline(i === 0, newlineOpts);\n\n      this.print(node, undefined, trailingCommentsLineOffset || 0);\n\n      iterator?.(node, i);\n\n      if (boundSeparator != null) {\n        if (i < len - 1) boundSeparator(i, false);\n        else if (printTrailingSeparator) boundSeparator(i, true);\n      }\n\n      if (statement) {\n        if (!node.trailingComments?.length) {\n          this._lastCommentLine = 0;\n        }\n\n        if (i + 1 === len) {\n          this.newline(1);\n        } else {\n          const nextNode = nodes[i + 1];\n          newlineOpts.nextNodeStartLine = nextNode.loc?.start.line || 0;\n\n          this._printNewline(true, newlineOpts);\n        }\n      }\n    }\n\n    if (indent) this.dedent();\n  }\n\n  printAndIndentOnComments(node: t.Node) {\n    const indent = node.leadingComments && node.leadingComments.length > 0;\n    if (indent) this.indent();\n    this.print(node);\n    if (indent) this.dedent();\n  }\n\n  printBlock(parent: Extract<t.Node, { body: t.Statement }>) {\n    const node = parent.body;\n\n    if (node.type !== \"EmptyStatement\") {\n      this.space();\n    }\n\n    this.print(node);\n  }\n\n  _printTrailingComments(node: t.Node, parent?: t.Node, lineOffset?: number) {\n    const { innerComments, trailingComments } = node;\n    // We print inner comments here, so that if for some reason they couldn't\n    // be printed in earlier locations they are still printed *somewhere*,\n    // even if at the end of the node.\n    if (innerComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        innerComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n    if (trailingComments?.length) {\n      this._printComments(\n        COMMENT_TYPE.TRAILING,\n        trailingComments,\n        node,\n        parent,\n        lineOffset,\n      );\n    }\n  }\n\n  _printLeadingComments(node: t.Node, parent: t.Node) {\n    const comments = node.leadingComments;\n    if (!comments?.length) return;\n    this._printComments(COMMENT_TYPE.LEADING, comments, node, parent);\n  }\n\n  _maybePrintInnerComments(\n    nextTokenStr: string,\n    nextTokenOccurrenceCount?: number,\n  ) {\n    if (this._endsWithInnerRaw) {\n      this.printInnerComments(\n        this.tokenMap?.findMatching(\n          this._currentNode,\n          nextTokenStr,\n          nextTokenOccurrenceCount,\n        ),\n      );\n    }\n    this._endsWithInnerRaw = true;\n    this._indentInnerComments = true;\n  }\n\n  printInnerComments(nextToken?: Token) {\n    const node = this._currentNode;\n    const comments = node.innerComments;\n    if (!comments?.length) return;\n\n    const hasSpace = this.endsWith(charCodes.space);\n    const indent = this._indentInnerComments;\n    const printedCommentsCount = this._printedComments.size;\n    if (indent) this.indent();\n    this._printComments(\n      COMMENT_TYPE.INNER,\n      comments,\n      node,\n      undefined,\n      undefined,\n      nextToken,\n    );\n    if (hasSpace && printedCommentsCount !== this._printedComments.size) {\n      this.space();\n    }\n    if (indent) this.dedent();\n  }\n\n  noIndentInnerCommentsHere() {\n    this._indentInnerComments = false;\n  }\n\n  printSequence(\n    nodes: t.Node[],\n    indent?: boolean,\n    trailingCommentsLineOffset?: number,\n    addNewlines?: PrintSequenceOptions[\"addNewlines\"],\n  ) {\n    this.printJoin(\n      nodes,\n      true,\n      indent ?? false,\n      undefined,\n      undefined,\n      addNewlines,\n      undefined,\n      trailingCommentsLineOffset,\n    );\n  }\n\n  printList(\n    items: t.Node[],\n    printTrailingSeparator?: boolean,\n    statement?: boolean,\n    indent?: boolean,\n    separator?: PrintListOptions[\"separator\"],\n    iterator?: PrintListOptions[\"iterator\"],\n  ) {\n    this.printJoin(\n      items,\n      statement,\n      indent,\n      separator ?? commaSeparator,\n      printTrailingSeparator,\n      undefined,\n      iterator,\n    );\n  }\n\n  shouldPrintTrailingComma(listEnd: string): boolean | null {\n    if (!this.tokenMap) return null;\n\n    const listEndIndex = this.tokenMap.findLastIndex(this._currentNode, token =>\n      this.tokenMap.matchesOriginal(token, listEnd),\n    );\n    if (listEndIndex <= 0) return null;\n    return this.tokenMap.matchesOriginal(this._tokens[listEndIndex - 1], \",\");\n  }\n\n  _printNewline(newLine: boolean, opts: AddNewlinesOptions) {\n    const format = this.format;\n\n    // Fast path since 'this.newline' does nothing when not tracking lines.\n    if (format.retainLines || format.compact) return;\n\n    // Fast path for concise since 'this.newline' just inserts a space when\n    // concise formatting is in use.\n    if (format.concise) {\n      this.space();\n      return;\n    }\n\n    if (!newLine) {\n      return;\n    }\n\n    const startLine = opts.nextNodeStartLine;\n    const lastCommentLine = this._lastCommentLine;\n    if (startLine > 0 && lastCommentLine > 0) {\n      const offset = startLine - lastCommentLine;\n      if (offset >= 0) {\n        this.newline(offset || 1);\n        return;\n      }\n    }\n\n    // don't add newlines at the beginning of the file\n    if (this._buf.hasContent()) {\n      // Here is the logic of the original line wrapping according to the node layout, we are not using it now.\n      // We currently add at most one newline to each node in the list, ignoring `opts.addNewlines`.\n\n      // let lines = 0;\n      // if (!leading) lines++; // always include at least a single line after\n      // if (opts.addNewlines) lines += opts.addNewlines(leading, node) || 0;\n\n      // const needs = leading ? needsWhitespaceBefore : needsWhitespaceAfter;\n      // if (needs(node, parent)) lines++;\n\n      // this.newline(Math.min(2, lines));\n\n      this.newline(1);\n    }\n  }\n\n  // Returns `PRINT_COMMENT_HINT.DEFER` if the comment cannot be printed in this position due to\n  // line terminators, signaling that the print comments loop can stop and\n  // resume printing comments at the next possible position. This happens when\n  // printing inner comments, since if we have an inner comment with a multiline\n  // there is at least one inner position where line terminators are allowed.\n  _shouldPrintComment(\n    comment: t.Comment,\n    nextToken?: Token,\n  ): PRINT_COMMENT_HINT {\n    // Some plugins (such as flow-strip-types) use this to mark comments as removed using the AST-root 'comments' property,\n    // where they can't manually mutate the AST node comment lists.\n    if (comment.ignore) return PRINT_COMMENT_HINT.SKIP;\n\n    if (this._printedComments.has(comment)) return PRINT_COMMENT_HINT.SKIP;\n\n    if (\n      this._noLineTerminator &&\n      HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)\n    ) {\n      return PRINT_COMMENT_HINT.DEFER;\n    }\n\n    if (nextToken && this.tokenMap) {\n      const commentTok = this.tokenMap.find(\n        this._currentNode,\n        token => token.value === comment.value,\n      );\n      if (commentTok && commentTok.start > nextToken.start) {\n        return PRINT_COMMENT_HINT.DEFER;\n      }\n    }\n\n    this._printedComments.add(comment);\n\n    if (!this.format.shouldPrintComment(comment.value)) {\n      return PRINT_COMMENT_HINT.SKIP;\n    }\n\n    return PRINT_COMMENT_HINT.ALLOW;\n  }\n\n  _printComment(comment: t.Comment, skipNewLines: COMMENT_SKIP_NEWLINE) {\n    const noLineTerminator = this._noLineTerminator;\n    const isBlockComment = comment.type === \"CommentBlock\";\n\n    // Add a newline before and after a block comment, unless explicitly\n    // disallowed\n    const printNewLines =\n      isBlockComment &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.ALL &&\n      !this._noLineTerminator;\n\n    if (\n      printNewLines &&\n      this._buf.hasContent() &&\n      skipNewLines !== COMMENT_SKIP_NEWLINE.LEADING\n    ) {\n      this.newline(1);\n    }\n\n    const lastCharCode = this.getLastChar();\n    if (\n      lastCharCode !== charCodes.leftSquareBracket &&\n      lastCharCode !== charCodes.leftCurlyBrace &&\n      lastCharCode !== charCodes.leftParenthesis\n    ) {\n      this.space();\n    }\n\n    let val;\n    if (isBlockComment) {\n      val = `/*${comment.value}*/`;\n      if (this.format.indent.adjustMultilineComment) {\n        const offset = comment.loc?.start.column;\n        if (offset) {\n          const newlineRegex = new RegExp(\"\\\\n\\\\s{1,\" + offset + \"}\", \"g\");\n          val = val.replace(newlineRegex, \"\\n\");\n        }\n        if (this.format.concise) {\n          val = val.replace(/\\n(?!$)/g, `\\n`);\n        } else {\n          let indentSize = this.format.retainLines\n            ? 0\n            : this._buf.getCurrentColumn();\n\n          if (this._shouldIndent(charCodes.slash) || this.format.retainLines) {\n            indentSize += this._getIndent();\n          }\n\n          val = val.replace(/\\n(?!$)/g, `\\n${\" \".repeat(indentSize)}`);\n        }\n      }\n    } else if (!noLineTerminator) {\n      val = `//${comment.value}`;\n    } else {\n      // It was a single-line comment, so it's guaranteed to not\n      // contain newlines and it can be safely printed as a block\n      // comment.\n      val = `/*${comment.value}*/`;\n    }\n\n    // Avoid converting a / operator into a line comment by appending /* to it\n    if (this._endsWithDiv) this._space();\n\n    if (this.tokenMap) {\n      const { _printSemicolonBeforeNextToken, _printSemicolonBeforeNextNode } =\n        this;\n      this._printSemicolonBeforeNextToken = -1;\n      this._printSemicolonBeforeNextNode = -1;\n      this.source(\"start\", comment.loc);\n      this._append(val, isBlockComment);\n      this._printSemicolonBeforeNextNode = _printSemicolonBeforeNextNode;\n      this._printSemicolonBeforeNextToken = _printSemicolonBeforeNextToken;\n    } else {\n      this.source(\"start\", comment.loc);\n      this._append(val, isBlockComment);\n    }\n\n    if (!isBlockComment && !noLineTerminator) {\n      this.newline(1, true);\n    }\n\n    if (printNewLines && skipNewLines !== COMMENT_SKIP_NEWLINE.TRAILING) {\n      this.newline(1);\n    }\n  }\n\n  _printComments(\n    type: COMMENT_TYPE,\n    comments: readonly t.Comment[],\n    node: t.Node,\n    parent?: t.Node,\n    lineOffset: number = 0,\n    nextToken?: Token,\n  ) {\n    const nodeLoc = node.loc;\n    const len = comments.length;\n    let hasLoc = !!nodeLoc;\n    const nodeStartLine = hasLoc ? nodeLoc.start.line : 0;\n    const nodeEndLine = hasLoc ? nodeLoc.end.line : 0;\n    let lastLine = 0;\n    let leadingCommentNewline = 0;\n\n    const maybeNewline = this._noLineTerminator\n      ? function () {}\n      : this.newline.bind(this);\n\n    for (let i = 0; i < len; i++) {\n      const comment = comments[i];\n\n      const shouldPrint = this._shouldPrintComment(comment, nextToken);\n      if (shouldPrint === PRINT_COMMENT_HINT.DEFER) {\n        hasLoc = false;\n        break;\n      }\n      if (hasLoc && comment.loc && shouldPrint === PRINT_COMMENT_HINT.ALLOW) {\n        const commentStartLine = comment.loc.start.line;\n        const commentEndLine = comment.loc.end.line;\n        if (type === COMMENT_TYPE.LEADING) {\n          let offset = 0;\n          if (i === 0) {\n            // Because currently we cannot handle blank lines before leading comments,\n            // we always wrap before and after multi-line comments.\n            if (\n              this._buf.hasContent() &&\n              (comment.type === \"CommentLine\" ||\n                commentStartLine !== commentEndLine)\n            ) {\n              offset = leadingCommentNewline = 1;\n            }\n          } else {\n            offset = commentStartLine - lastLine;\n          }\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(\n              Math.max(nodeStartLine - lastLine, leadingCommentNewline),\n            );\n            lastLine = nodeStartLine;\n          }\n        } else if (type === COMMENT_TYPE.INNER) {\n          const offset =\n            commentStartLine - (i === 0 ? nodeStartLine : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n\n          if (i + 1 === len) {\n            maybeNewline(Math.min(1, nodeEndLine - lastLine)); // TODO: Improve here when inner comments processing is stronger\n            lastLine = nodeEndLine;\n          }\n        } else {\n          const offset =\n            commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);\n          lastLine = commentEndLine;\n\n          maybeNewline(offset);\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n        }\n      } else {\n        hasLoc = false;\n        if (shouldPrint !== PRINT_COMMENT_HINT.ALLOW) {\n          continue;\n        }\n\n        if (len === 1) {\n          const singleLine = comment.loc\n            ? comment.loc.start.line === comment.loc.end.line\n            : !HAS_NEWLINE.test(comment.value);\n\n          const shouldSkipNewline =\n            singleLine &&\n            !isStatement(node) &&\n            !isClassBody(parent) &&\n            !isTSInterfaceBody(parent) &&\n            !isTSEnumMember(node);\n\n          if (type === COMMENT_TYPE.LEADING) {\n            this._printComment(\n              comment,\n              (shouldSkipNewline && node.type !== \"ObjectExpression\") ||\n                (singleLine && isFunction(parent, { body: node }))\n                ? COMMENT_SKIP_NEWLINE.ALL\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n            );\n          } else if (shouldSkipNewline && type === COMMENT_TYPE.TRAILING) {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.ALL);\n          } else {\n            this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n          }\n        } else if (\n          type === COMMENT_TYPE.INNER &&\n          !(node.type === \"ObjectExpression\" && node.properties.length > 1) &&\n          node.type !== \"ClassBody\" &&\n          node.type !== \"TSInterfaceBody\"\n        ) {\n          // class X {\n          //   /*:: a: number*/\n          //   /*:: b: ?string*/\n          // }\n\n          this._printComment(\n            comment,\n            i === 0\n              ? COMMENT_SKIP_NEWLINE.LEADING\n              : i === len - 1\n                ? COMMENT_SKIP_NEWLINE.TRAILING\n                : COMMENT_SKIP_NEWLINE.DEFAULT,\n          );\n        } else {\n          this._printComment(comment, COMMENT_SKIP_NEWLINE.DEFAULT);\n        }\n      }\n    }\n\n    if (type === COMMENT_TYPE.TRAILING && hasLoc && lastLine) {\n      this._lastCommentLine = lastLine;\n    }\n  }\n}\n\n// Expose the node type functions and helpers on the prototype for easy usage.\nObject.assign(Printer.prototype, generatorFunctions);\n\nif (!process.env.BABEL_8_BREAKING) {\n  addDeprecatedGenerators(Printer);\n}\n\ntype GeneratorFunctions = typeof generatorFunctions;\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\ninterface Printer extends GeneratorFunctions {}\nexport default Printer;\n\nfunction commaSeparator(this: Printer, occurrenceCount: number, last: boolean) {\n  this.token(\",\", false, occurrenceCount);\n  if (!last) this.space();\n}\n","import SourceMap from \"./source-map.ts\";\nimport Printer from \"./printer.ts\";\nimport type * as t from \"@babel/types\";\nimport type { Opts as jsescOptions } from \"jsesc\";\nimport type { Format } from \"./printer.ts\";\nimport type {\n  EncodedSourceMap,\n  DecodedSourceMap,\n  Mapping,\n} from \"@jridgewell/gen-mapping\";\n\n/**\n * Normalize generator options, setting defaults.\n *\n * - Detects code indentation.\n * - If `opts.compact = \"auto\"` and the code is over 500KB, `compact` will be set to `true`.\n */\n\nfunction normalizeOptions(\n  code: string | { [filename: string]: string },\n  opts: GeneratorOptions,\n  ast: t.Node,\n): Format {\n  if (opts.experimental_preserveFormat) {\n    if (typeof code !== \"string\") {\n      throw new Error(\n        \"`experimental_preserveFormat` requires the original `code` to be passed to @babel/generator as a string\",\n      );\n    }\n    if (!opts.retainLines) {\n      throw new Error(\n        \"`experimental_preserveFormat` requires `retainLines` to be set to `true`\",\n      );\n    }\n    if (opts.compact && opts.compact !== \"auto\") {\n      throw new Error(\n        \"`experimental_preserveFormat` is not compatible with the `compact` option\",\n      );\n    }\n    if (opts.minified) {\n      throw new Error(\n        \"`experimental_preserveFormat` is not compatible with the `minified` option\",\n      );\n    }\n    if (opts.jsescOption) {\n      throw new Error(\n        \"`experimental_preserveFormat` is not compatible with the `jsescOption` option\",\n      );\n    }\n    if (!Array.isArray((ast as any).tokens)) {\n      throw new Error(\n        \"`experimental_preserveFormat` requires the AST to have attatched the token of the input code. Make sure to enable the `tokens: true` parser option.\",\n      );\n    }\n  }\n\n  const format: Format = {\n    auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n    auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n    shouldPrintComment: opts.shouldPrintComment,\n    preserveFormat: opts.experimental_preserveFormat,\n    retainLines: opts.retainLines,\n    retainFunctionParens: opts.retainFunctionParens,\n    comments: opts.comments == null || opts.comments,\n    compact: opts.compact,\n    minified: opts.minified,\n    concise: opts.concise,\n    indent: {\n      adjustMultilineComment: true,\n      style: \"  \",\n    },\n    jsescOption: {\n      quotes: \"double\",\n      wrap: true,\n      minimal: process.env.BABEL_8_BREAKING ? true : false,\n      ...opts.jsescOption,\n    },\n    topicToken: opts.topicToken,\n    importAttributesKeyword: opts.importAttributesKeyword,\n  };\n\n  if (!process.env.BABEL_8_BREAKING) {\n    format.decoratorsBeforeExport = opts.decoratorsBeforeExport;\n    format.jsescOption.json = opts.jsonCompatibleStrings;\n    format.recordAndTupleSyntaxType = opts.recordAndTupleSyntaxType ?? \"hash\";\n  }\n\n  if (format.minified) {\n    format.compact = true;\n\n    format.shouldPrintComment =\n      format.shouldPrintComment || (() => format.comments);\n  } else {\n    format.shouldPrintComment =\n      format.shouldPrintComment ||\n      (value =>\n        format.comments ||\n        value.includes(\"@license\") ||\n        value.includes(\"@preserve\"));\n  }\n\n  if (format.compact === \"auto\") {\n    format.compact = typeof code === \"string\" && code.length > 500_000; // 500KB\n\n    if (format.compact) {\n      console.error(\n        \"[BABEL] Note: The code generator has deoptimised the styling of \" +\n          `${opts.filename} as it exceeds the max of ${\"500KB\"}.`,\n      );\n    }\n  }\n\n  if (format.compact || format.preserveFormat) {\n    format.indent.adjustMultilineComment = false;\n  }\n\n  const { auxiliaryCommentBefore, auxiliaryCommentAfter, shouldPrintComment } =\n    format;\n\n  if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {\n    format.auxiliaryCommentBefore = undefined;\n  }\n  if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {\n    format.auxiliaryCommentAfter = undefined;\n  }\n\n  return format;\n}\n\nexport interface GeneratorOptions {\n  /**\n   * Optional string to add as a block comment at the start of the output file.\n   */\n  auxiliaryCommentBefore?: string;\n\n  /**\n   * Optional string to add as a block comment at the end of the output file.\n   */\n  auxiliaryCommentAfter?: string;\n\n  /**\n   * Function that takes a comment (as a string) and returns true if the comment should be included in the output.\n   * By default, comments are included if `opts.comments` is `true` or if `opts.minified` is `false` and the comment\n   * contains `@preserve` or `@license`.\n   */\n  shouldPrintComment?(comment: string): boolean;\n\n  /**\n   * Preserve the input code format while printing the transformed code.\n   * This is experimental, and may have breaking changes in future\n   * patch releases. It will be removed in a future minor release,\n   * when it will graduate to stable.\n   */\n  experimental_preserveFormat?: boolean;\n\n  /**\n   * Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces).\n   * Defaults to `false`.\n   */\n  retainLines?: boolean;\n\n  /**\n   * Retain parens around function expressions (could be used to change engine parsing behavior)\n   * Defaults to `false`.\n   */\n  retainFunctionParens?: boolean;\n\n  /**\n   * Should comments be included in output? Defaults to `true`.\n   */\n  comments?: boolean;\n\n  /**\n   * Set to true to avoid adding whitespace for formatting. Defaults to the value of `opts.minified`.\n   */\n  compact?: boolean | \"auto\";\n\n  /**\n   * Should the output be minified. Defaults to `false`.\n   */\n  minified?: boolean;\n\n  /**\n   * Set to true to reduce whitespace (but not as much as opts.compact). Defaults to `false`.\n   */\n  concise?: boolean;\n\n  /**\n   * Used in warning messages\n   */\n  filename?: string;\n\n  /**\n   * Enable generating source maps. Defaults to `false`.\n   */\n  sourceMaps?: boolean;\n\n  inputSourceMap?: any;\n\n  /**\n   * A root for all relative URLs in the source map.\n   */\n  sourceRoot?: string;\n\n  /**\n   * The filename for the source code (i.e. the code in the `code` argument).\n   * This will only be used if `code` is a string.\n   */\n  sourceFileName?: string;\n\n  /**\n   * Set to true to run jsesc with \"json\": true to print \"\\u00A9\" vs. \"©\";\n   * @deprecated use `jsescOptions: { json: true }` instead\n   */\n  jsonCompatibleStrings?: boolean;\n\n  /**\n   * Set to true to enable support for experimental decorators syntax before\n   * module exports. If not specified, decorators will be printed in the same\n   * position as they were in the input source code.\n   * @deprecated Removed in Babel 8\n   */\n  decoratorsBeforeExport?: boolean;\n\n  /**\n   * Options for outputting jsesc representation.\n   */\n  jsescOption?: jsescOptions;\n\n  /**\n   * For use with the recordAndTuple token.\n   * @deprecated It will be removed in Babel 8.\n   */\n  recordAndTupleSyntaxType?: \"bar\" | \"hash\";\n\n  /**\n   * For use with the Hack-style pipe operator.\n   * Changes what token is used for pipe bodies’ topic references.\n   */\n  topicToken?: \"%\" | \"#\" | \"@@\" | \"^^\" | \"^\";\n\n  /**\n   * The import attributes syntax style:\n   * - \"with\"        : `import { a } from \"b\" with { type: \"json\" };`\n   * - \"assert\"      : `import { a } from \"b\" assert { type: \"json\" };`\n   * - \"with-legacy\" : `import { a } from \"b\" with type: \"json\";`\n   */\n  importAttributesKeyword?: \"with\" | \"assert\" | \"with-legacy\";\n}\n\nexport interface GeneratorResult {\n  code: string;\n  map: EncodedSourceMap | null;\n  decodedMap: DecodedSourceMap | undefined;\n  rawMappings: Mapping[] | undefined;\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /**\n   * We originally exported the Generator class above, but to make it extra clear that it is a private API,\n   * we have moved that to an internal class instance and simplified the interface to the two public methods\n   * that we wish to support.\n   */\n\n  // eslint-disable-next-line no-restricted-globals\n  exports.CodeGenerator = class CodeGenerator {\n    private _ast: t.Node;\n    private _format: Format | undefined;\n    private _map: SourceMap | null;\n    constructor(ast: t.Node, opts: GeneratorOptions = {}, code?: string) {\n      this._ast = ast;\n      this._format = normalizeOptions(code, opts, ast);\n      this._map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n    }\n    generate(): GeneratorResult {\n      const printer = new Printer(this._format, this._map);\n\n      return printer.generate(this._ast);\n    }\n  };\n}\n\n/**\n * Turns an AST into code, maintaining sourcemaps, user preferences, and valid output.\n * @param ast - the abstract syntax tree from which to generate output code.\n * @param opts - used for specifying options for code generation.\n * @param code - the original source code, used for source maps.\n * @returns - an object containing the output code and source map.\n */\nexport default function generate(\n  ast: t.Node,\n  opts: GeneratorOptions = {},\n  code?: string | { [filename: string]: string },\n): GeneratorResult {\n  const format = normalizeOptions(code, opts, ast);\n  const map = opts.sourceMaps ? new SourceMap(opts, code) : null;\n\n  const printer = new Printer(\n    format,\n    map,\n    (ast as any).tokens,\n    typeof code === \"string\" ? code : null,\n  );\n\n  return printer.generate(ast);\n}\n","// This file contains that retrieve or validate anything related to the current paths ancestry.\n\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\n\n/**\n * Starting at the parent path of the current `NodePath` and going up the\n * tree, return the first `NodePath` that causes the provided `callback`\n * to return a truthy value, or `null` if the `callback` never returns a\n * truthy value.\n */\n\nexport function findParent(\n  this: NodePath,\n  callback: (path: NodePath) => boolean,\n): NodePath | null {\n  let path = this;\n  while ((path = path.parentPath)) {\n    if (callback(path)) return path;\n  }\n  return null;\n}\n\n/**\n * Starting at current `NodePath` and going up the tree, return the first\n * `NodePath` that causes the provided `callback` to return a truthy value,\n * or `null` if the `callback` never returns a truthy value.\n */\n\nexport function find(\n  this: NodePath,\n  callback: (path: NodePath) => boolean,\n): NodePath | null {\n  let path = this;\n  do {\n    if (callback(path)) return path;\n  } while ((path = path.parentPath));\n  return null;\n}\n\n/**\n * Get the parent function of the current path.\n */\n\nexport function getFunctionParent(this: NodePath): NodePath<t.Function> | null {\n  return this.findParent(p => p.isFunction()) as NodePath<t.Function> | null;\n}\n\n/**\n * Walk up the tree until we hit a parent node path in a list.\n */\n\nexport function getStatementParent(this: NodePath): NodePath<t.Statement> {\n  let path = this;\n\n  do {\n    if (\n      !path.parentPath ||\n      (Array.isArray(path.container) && path.isStatement())\n    ) {\n      break;\n    } else {\n      path = path.parentPath;\n    }\n  } while (path);\n\n  if (path && (path.isProgram() || path.isFile())) {\n    throw new Error(\n      \"File/Program node, we can't possibly find a statement parent to this\",\n    );\n  }\n\n  return path as NodePath<t.Statement>;\n}\n\n/**\n * Get the deepest common ancestor and then from it, get the earliest relationship path\n * to that ancestor.\n *\n * Earliest is defined as being \"before\" all the other nodes in terms of list container\n * position and visiting key.\n */\n\nexport function getEarliestCommonAncestorFrom(\n  this: NodePath,\n  paths: Array<NodePath>,\n): NodePath {\n  return this.getDeepestCommonAncestorFrom(\n    paths,\n    function (deepest, i, ancestries) {\n      let earliest;\n      const keys = VISITOR_KEYS[deepest.type];\n\n      for (const ancestry of ancestries) {\n        const path = ancestry[i + 1];\n\n        // first path\n        if (!earliest) {\n          earliest = path;\n          continue;\n        }\n\n        // handle containers\n        if (path.listKey && earliest.listKey === path.listKey) {\n          // we're in the same container so check if we're earlier\n          if (path.key < earliest.key) {\n            earliest = path;\n            continue;\n          }\n        }\n\n        // handle keys\n        const earliestKeyIndex = keys.indexOf(earliest.parentKey);\n        const currentKeyIndex = keys.indexOf(path.parentKey);\n        if (earliestKeyIndex > currentKeyIndex) {\n          // key appears before so it's earlier\n          earliest = path;\n        }\n      }\n\n      return earliest;\n    },\n  );\n}\n\n/**\n * Get the earliest path in the tree where the provided `paths` intersect.\n *\n * TODO: Possible optimisation target.\n */\n\nexport function getDeepestCommonAncestorFrom(\n  this: NodePath,\n  paths: Array<NodePath>,\n  filter?: (deepest: NodePath, i: number, ancestries: NodePath[][]) => NodePath,\n): NodePath {\n  if (!paths.length) {\n    return this;\n  }\n\n  if (paths.length === 1) {\n    return paths[0];\n  }\n\n  // minimum depth of the tree so we know the highest node\n  let minDepth = Infinity;\n\n  // last common ancestor\n  let lastCommonIndex, lastCommon;\n\n  // get the ancestors of the path, breaking when the parent exceeds ourselves\n  const ancestries = paths.map(path => {\n    const ancestry: NodePath[] = [];\n\n    do {\n      ancestry.unshift(path);\n    } while ((path = path.parentPath) && path !== this);\n\n    // save min depth to avoid going too far in\n    if (ancestry.length < minDepth) {\n      minDepth = ancestry.length;\n    }\n\n    return ancestry;\n  });\n\n  // get the first ancestry so we have a seed to assess all other ancestries with\n  const first = ancestries[0];\n\n  // check ancestor equality\n  depthLoop: for (let i = 0; i < minDepth; i++) {\n    const shouldMatch = first[i];\n\n    for (const ancestry of ancestries) {\n      if (ancestry[i] !== shouldMatch) {\n        // we've hit a snag\n        break depthLoop;\n      }\n    }\n\n    // next iteration may break so store these so they can be returned\n    lastCommonIndex = i;\n    lastCommon = shouldMatch;\n  }\n\n  if (lastCommon) {\n    if (filter) {\n      return filter(lastCommon, lastCommonIndex, ancestries);\n    } else {\n      return lastCommon;\n    }\n  } else {\n    throw new Error(\"Couldn't find intersection\");\n  }\n}\n\n/**\n * Build an array of node paths containing the entire ancestry of the current node path.\n *\n * NOTE: The current node path is included in this.\n */\n\nexport function getAncestry(this: NodePath): Array<NodePath> {\n  let path = this;\n  const paths = [];\n  do {\n    paths.push(path);\n  } while ((path = path.parentPath));\n  return paths;\n}\n\n/**\n * A helper to find if `this` path is an ancestor of @param maybeDescendant\n */\nexport function isAncestor(this: NodePath, maybeDescendant: NodePath): boolean {\n  return maybeDescendant.isDescendant(this);\n}\n\n/**\n * A helper to find if `this` path is a descendant of @param maybeAncestor\n */\nexport function isDescendant(this: NodePath, maybeAncestor: NodePath): boolean {\n  return !!this.findParent(parent => parent === maybeAncestor);\n}\n\nexport function inType(this: NodePath, ...candidateTypes: string[]): boolean {\n  let path = this;\n  while (path) {\n    for (const type of candidateTypes) {\n      if (path.node.type === type) return true;\n    }\n    path = path.parentPath;\n  }\n\n  return false;\n}\n","import {\n  createFlowUnionType,\n  createTSUnionType,\n  createUnionTypeAnnotation,\n  isFlowType,\n  isTSType,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport function createUnionType(\n  types: (t.FlowType | t.TSType)[],\n): t.FlowType | t.TSType | undefined {\n  if (process.env.BABEL_8_BREAKING) {\n    if (types.every(v => isFlowType(v))) {\n      return createFlowUnionType(types);\n    }\n    if (types.every(v => isTSType(v))) {\n      return createTSUnionType(types);\n    }\n  } else {\n    if (types.every(v => isFlowType(v))) {\n      if (createFlowUnionType) {\n        return createFlowUnionType(types);\n      }\n\n      return createUnionTypeAnnotation(types);\n    } else if (types.every(v => isTSType(v))) {\n      if (createTSUnionType) {\n        return createTSUnionType(types);\n      }\n    }\n  }\n}\n","import type NodePath from \"../index.ts\";\nimport {\n  BOOLEAN_NUMBER_BINARY_OPERATORS,\n  createTypeAnnotationBasedOnTypeof,\n  numberTypeAnnotation,\n  voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Binding from \"../../scope/binding.ts\";\n\nimport { createUnionType } from \"./util.ts\";\n\nexport default function (this: NodePath<t.Identifier>, node: t.Identifier) {\n  if (!this.isReferenced()) return;\n\n  // check if a binding exists of this value and if so then return a union type of all\n  // possible types that the binding could be\n  const binding = this.scope.getBinding(node.name);\n  if (binding) {\n    if (binding.identifier.typeAnnotation) {\n      return binding.identifier.typeAnnotation;\n    } else {\n      return getTypeAnnotationBindingConstantViolations(\n        binding,\n        this,\n        node.name,\n      );\n    }\n  }\n\n  // built-in values\n  if (node.name === \"undefined\") {\n    return voidTypeAnnotation();\n  } else if (node.name === \"NaN\" || node.name === \"Infinity\") {\n    return numberTypeAnnotation();\n  } else if (node.name === \"arguments\") {\n    // todo\n  }\n}\n\nfunction getTypeAnnotationBindingConstantViolations(\n  binding: Binding,\n  path: NodePath<t.Identifier>,\n  name: string,\n) {\n  const types = [];\n\n  const functionConstantViolations: NodePath[] = [];\n  let constantViolations = getConstantViolationsBefore(\n    binding,\n    path,\n    functionConstantViolations,\n  );\n\n  const testType = getConditionalAnnotation(binding, path, name);\n  if (testType) {\n    const testConstantViolations = getConstantViolationsBefore(\n      binding,\n      testType.ifStatement,\n    );\n\n    // remove constant violations observed before the IfStatement\n    constantViolations = constantViolations.filter(\n      path => !testConstantViolations.includes(path),\n    );\n\n    // clear current types and add in observed test type\n    types.push(testType.typeAnnotation);\n  }\n\n  if (constantViolations.length) {\n    // pick one constant from each scope which will represent the last possible\n    // control flow path that it could've taken/been\n    /* This code is broken for the following problems:\n     * It thinks that assignments can only happen in scopes.\n     * What about conditionals, if statements without block,\n     * or guarded assignments.\n     * It also checks to see if one of the assignments is in the\n     * same scope and uses that as the only \"violation\". However,\n     * the binding is returned by `getConstantViolationsBefore` so we for\n     * sure always going to return that as the only \"violation\".\n    let rawConstantViolations = constantViolations.reverse();\n    let visitedScopes = [];\n    constantViolations = [];\n    for (let violation of (rawConstantViolations: Array<NodePath>)) {\n      let violationScope = violation.scope;\n      if (visitedScopes.indexOf(violationScope) >= 0) continue;\n\n      visitedScopes.push(violationScope);\n      constantViolations.push(violation);\n\n      if (violationScope === path.scope) {\n        constantViolations = [violation];\n        break;\n      }\n    }*/\n\n    // add back on function constant violations since we can't track calls\n    constantViolations.push(...functionConstantViolations);\n\n    // push on inferred types of violated paths\n    for (const violation of constantViolations) {\n      types.push(violation.getTypeAnnotation());\n    }\n  }\n\n  if (!types.length) {\n    return;\n  }\n\n  return createUnionType(types);\n}\n\nfunction getConstantViolationsBefore(\n  binding: Binding,\n  path: NodePath,\n  functions?: NodePath[],\n) {\n  const violations = binding.constantViolations.slice();\n  violations.unshift(binding.path);\n  return violations.filter(violation => {\n    violation = violation.resolve();\n    const status = violation._guessExecutionStatusRelativeTo(path);\n    if (functions && status === \"unknown\") functions.push(violation);\n    return status === \"before\";\n  });\n}\n\nfunction inferAnnotationFromBinaryExpression(\n  name: string,\n  path: NodePath<t.BinaryExpression>,\n) {\n  const operator = path.node.operator;\n\n  const right = path.get(\"right\").resolve();\n  const left = path.get(\"left\").resolve();\n\n  let target;\n  if (left.isIdentifier({ name })) {\n    target = right;\n  } else if (right.isIdentifier({ name })) {\n    target = left;\n  }\n\n  if (target) {\n    if (operator === \"===\") {\n      return target.getTypeAnnotation();\n    }\n    if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {\n      return numberTypeAnnotation();\n    }\n\n    return;\n  }\n\n  if (operator !== \"===\" && operator !== \"==\") return;\n\n  let typeofPath: NodePath<t.UnaryExpression>;\n  let typePath: NodePath<t.Expression>;\n  if (left.isUnaryExpression({ operator: \"typeof\" })) {\n    typeofPath = left;\n    typePath = right as NodePath<t.Expression>;\n  } else if (right.isUnaryExpression({ operator: \"typeof\" })) {\n    typeofPath = right;\n    typePath = left as NodePath<t.Expression>;\n  }\n\n  if (!typeofPath) return;\n  // and that the argument of the typeof path references us!\n  if (!typeofPath.get(\"argument\").isIdentifier({ name })) return;\n\n  // ensure that the type path is a Literal\n  typePath = typePath.resolve() as NodePath<t.Expression>;\n  if (!typePath.isLiteral()) return;\n\n  // and that it's a string so we can infer it\n  // @ts-expect-error todo(flow->ts): value is not defined for NullLiteral and some other\n  const typeValue = typePath.node.value;\n  if (typeof typeValue !== \"string\") return;\n\n  // turn type value into a type annotation\n  // @ts-expect-error todo(flow->ts): move validation from helper or relax type constraint to just a string\n  return createTypeAnnotationBasedOnTypeof(typeValue);\n}\n\nfunction getParentConditionalPath(\n  binding: Binding,\n  path: NodePath,\n  name: string,\n) {\n  let parentPath;\n  while ((parentPath = path.parentPath)) {\n    if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {\n      if (path.key === \"test\") {\n        return;\n      }\n\n      return parentPath as NodePath<t.IfStatement | t.ConditionalExpression>;\n    }\n    if (parentPath.isFunction()) {\n      if (parentPath.parentPath.scope.getBinding(name) !== binding) return;\n    }\n\n    path = parentPath;\n  }\n}\n\nfunction getConditionalAnnotation<T extends t.Node>(\n  binding: Binding,\n  path: NodePath<T>,\n  name?: string,\n): {\n  typeAnnotation: t.FlowType | t.TSType;\n  ifStatement: NodePath<t.IfStatement | t.ConditionalExpression>;\n} {\n  const ifStatement = getParentConditionalPath(binding, path, name);\n  if (!ifStatement) return;\n\n  const test = ifStatement.get(\"test\");\n  const paths = [test];\n  const types = [];\n\n  for (let i = 0; i < paths.length; i++) {\n    const path = paths[i];\n\n    if (path.isLogicalExpression()) {\n      if (path.node.operator === \"&&\") {\n        paths.push(path.get(\"left\"));\n        paths.push(path.get(\"right\"));\n      }\n    } else if (path.isBinaryExpression()) {\n      const type = inferAnnotationFromBinaryExpression(name, path);\n      if (type) types.push(type);\n    }\n  }\n\n  if (types.length) {\n    return {\n      typeAnnotation: createUnionType(types),\n      ifStatement,\n    };\n  }\n\n  return getConditionalAnnotation(binding, ifStatement, name);\n}\n","import {\n  BOOLEAN_BINARY_OPERATORS,\n  BOOLEAN_UNARY_OPERATORS,\n  NUMBER_BINARY_OPERATORS,\n  NUMBER_UNARY_OPERATORS,\n  STRING_UNARY_OPERATORS,\n  anyTypeAnnotation,\n  arrayTypeAnnotation,\n  booleanTypeAnnotation,\n  buildMatchMemberExpression,\n  genericTypeAnnotation,\n  identifier,\n  nullLiteralTypeAnnotation,\n  numberTypeAnnotation,\n  stringTypeAnnotation,\n  tupleTypeAnnotation,\n  unionTypeAnnotation,\n  voidTypeAnnotation,\n  isIdentifier,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nexport { default as Identifier } from \"./inferer-reference.ts\";\n\nimport { createUnionType } from \"./util.ts\";\nimport type NodePath from \"../index.ts\";\n\nexport function VariableDeclarator(this: NodePath<t.VariableDeclarator>) {\n  if (!this.get(\"id\").isIdentifier()) return;\n  return this.get(\"init\").getTypeAnnotation();\n}\n\nexport function TypeCastExpression(node: t.TypeCastExpression) {\n  return node.typeAnnotation;\n}\n\nTypeCastExpression.validParent = true;\n\nexport function TSAsExpression(node: t.TSAsExpression) {\n  return node.typeAnnotation;\n}\n\nTSAsExpression.validParent = true;\n\nexport function TSNonNullExpression(this: NodePath<t.TSNonNullExpression>) {\n  return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function NewExpression(\n  this: NodePath<t.NewExpression>,\n  node: t.NewExpression,\n) {\n  if (node.callee.type === \"Identifier\") {\n    // only resolve identifier callee\n    return genericTypeAnnotation(node.callee);\n  }\n}\n\nexport function TemplateLiteral() {\n  return stringTypeAnnotation();\n}\n\nexport function UnaryExpression(node: t.UnaryExpression) {\n  const operator = node.operator;\n\n  if (operator === \"void\") {\n    return voidTypeAnnotation();\n  } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {\n    return numberTypeAnnotation();\n  } else if (STRING_UNARY_OPERATORS.includes(operator)) {\n    return stringTypeAnnotation();\n  } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {\n    return booleanTypeAnnotation();\n  }\n}\n\nexport function BinaryExpression(\n  this: NodePath<t.BinaryExpression>,\n  node: t.BinaryExpression,\n) {\n  const operator = node.operator;\n\n  if (NUMBER_BINARY_OPERATORS.includes(operator)) {\n    return numberTypeAnnotation();\n  } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {\n    return booleanTypeAnnotation();\n  } else if (operator === \"+\") {\n    const right = this.get(\"right\");\n    const left = this.get(\"left\");\n\n    if (left.isBaseType(\"number\") && right.isBaseType(\"number\")) {\n      // both numbers so this will be a number\n      return numberTypeAnnotation();\n    } else if (left.isBaseType(\"string\") || right.isBaseType(\"string\")) {\n      // one is a string so the result will be a string\n      return stringTypeAnnotation();\n    }\n\n    // unsure if left and right are strings or numbers so stay on the safe side\n    return unionTypeAnnotation([\n      stringTypeAnnotation(),\n      numberTypeAnnotation(),\n    ]);\n  }\n}\n\nexport function LogicalExpression(this: NodePath<t.LogicalExpression>) {\n  const argumentTypes = [\n    this.get(\"left\").getTypeAnnotation(),\n    this.get(\"right\").getTypeAnnotation(),\n  ];\n\n  return createUnionType(argumentTypes);\n}\n\nexport function ConditionalExpression(this: NodePath<t.ConditionalExpression>) {\n  const argumentTypes = [\n    this.get(\"consequent\").getTypeAnnotation(),\n    this.get(\"alternate\").getTypeAnnotation(),\n  ];\n\n  return createUnionType(argumentTypes);\n}\n\nexport function SequenceExpression(this: NodePath<t.SequenceExpression>) {\n  return this.get(\"expressions\").pop().getTypeAnnotation();\n}\n\nexport function ParenthesizedExpression(\n  this: NodePath<t.ParenthesizedExpression>,\n) {\n  return this.get(\"expression\").getTypeAnnotation();\n}\n\nexport function AssignmentExpression(this: NodePath<t.AssignmentExpression>) {\n  return this.get(\"right\").getTypeAnnotation();\n}\n\nexport function UpdateExpression(\n  this: NodePath<t.UpdateExpression>,\n  node: t.UpdateExpression,\n) {\n  const operator = node.operator;\n  if (operator === \"++\" || operator === \"--\") {\n    return numberTypeAnnotation();\n  }\n}\n\nexport function StringLiteral() {\n  return stringTypeAnnotation();\n}\n\nexport function NumericLiteral() {\n  return numberTypeAnnotation();\n}\n\nexport function BooleanLiteral() {\n  return booleanTypeAnnotation();\n}\n\nexport function NullLiteral() {\n  return nullLiteralTypeAnnotation();\n}\n\nexport function RegExpLiteral() {\n  return genericTypeAnnotation(identifier(\"RegExp\"));\n}\n\nexport function ObjectExpression() {\n  return genericTypeAnnotation(identifier(\"Object\"));\n}\n\nexport function ArrayExpression() {\n  return genericTypeAnnotation(identifier(\"Array\"));\n}\n\nexport function RestElement() {\n  return ArrayExpression();\n}\n\nRestElement.validParent = true;\n\nfunction Func() {\n  return genericTypeAnnotation(identifier(\"Function\"));\n}\n\nexport {\n  Func as FunctionExpression,\n  Func as ArrowFunctionExpression,\n  Func as FunctionDeclaration,\n  Func as ClassExpression,\n  Func as ClassDeclaration,\n};\n\nconst isArrayFrom = buildMatchMemberExpression(\"Array.from\");\nconst isObjectKeys = buildMatchMemberExpression(\"Object.keys\");\nconst isObjectValues = buildMatchMemberExpression(\"Object.values\");\nconst isObjectEntries = buildMatchMemberExpression(\"Object.entries\");\nexport function CallExpression(this: NodePath<t.CallExpression>) {\n  const { callee } = this.node;\n  if (isObjectKeys(callee)) {\n    return arrayTypeAnnotation(stringTypeAnnotation());\n  } else if (\n    isArrayFrom(callee) ||\n    isObjectValues(callee) ||\n    // Detect \"var foo = Array()\" calls so we can optimize for arrays vs iterables.\n    isIdentifier(callee, { name: \"Array\" })\n  ) {\n    return arrayTypeAnnotation(anyTypeAnnotation());\n  } else if (isObjectEntries(callee)) {\n    return arrayTypeAnnotation(\n      tupleTypeAnnotation([stringTypeAnnotation(), anyTypeAnnotation()]),\n    );\n  }\n\n  return resolveCall(this.get(\"callee\"));\n}\n\nexport function TaggedTemplateExpression(\n  this: NodePath<t.TaggedTemplateExpression>,\n) {\n  return resolveCall(this.get(\"tag\"));\n}\n\nfunction resolveCall(callee: NodePath) {\n  callee = callee.resolve();\n\n  if (callee.isFunction()) {\n    const { node } = callee;\n    if (node.async) {\n      if (node.generator) {\n        return genericTypeAnnotation(identifier(\"AsyncIterator\"));\n      } else {\n        return genericTypeAnnotation(identifier(\"Promise\"));\n      }\n    } else {\n      if (node.generator) {\n        return genericTypeAnnotation(identifier(\"Iterator\"));\n      } else if (callee.node.returnType) {\n        return callee.node.returnType;\n      } else {\n        // todo: get union type of all return arguments\n      }\n    }\n  }\n}\n","import type NodePath from \"../index.ts\";\nimport * as inferers from \"./inferers.ts\";\nimport {\n  anyTypeAnnotation,\n  isAnyTypeAnnotation,\n  isArrayTypeAnnotation,\n  isBooleanTypeAnnotation,\n  isEmptyTypeAnnotation,\n  isFlowBaseAnnotation,\n  isGenericTypeAnnotation,\n  isIdentifier,\n  isMixedTypeAnnotation,\n  isNumberTypeAnnotation,\n  isStringTypeAnnotation,\n  isTSArrayType,\n  isTSTypeAnnotation,\n  isTSTypeReference,\n  isTupleTypeAnnotation,\n  isTypeAnnotation,\n  isUnionTypeAnnotation,\n  isVoidTypeAnnotation,\n  stringTypeAnnotation,\n  voidTypeAnnotation,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Infer the type of the current `NodePath`.\n */\n\nexport function getTypeAnnotation(this: NodePath): t.FlowType | t.TSType {\n  let type = this.getData(\"typeAnnotation\");\n  if (type != null) {\n    return type;\n  }\n  type = _getTypeAnnotation.call(this) || anyTypeAnnotation();\n  if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {\n    type = type.typeAnnotation;\n  }\n  this.setData(\"typeAnnotation\", type);\n  return type;\n}\n\n// Used to avoid infinite recursion in cases like\n//   var b, c; if (0) { c = 1; b = c; } c = b;\n// It also works with indirect recursion.\nconst typeAnnotationInferringNodes = new WeakSet();\n\n/**\n * todo: split up this method\n */\n\nexport function _getTypeAnnotation(this: NodePath): any {\n  const node = this.node;\n\n  if (!node) {\n    // handle initializerless variables, add in checks for loop initializers too\n    if (this.key === \"init\" && this.parentPath.isVariableDeclarator()) {\n      const declar = this.parentPath.parentPath;\n      const declarParent = declar.parentPath;\n\n      // for (let NODE in bar) {}\n      if (declar.key === \"left\" && declarParent.isForInStatement()) {\n        return stringTypeAnnotation();\n      }\n\n      // for (let NODE of bar) {}\n      if (declar.key === \"left\" && declarParent.isForOfStatement()) {\n        return anyTypeAnnotation();\n      }\n\n      return voidTypeAnnotation();\n    } else {\n      return;\n    }\n  }\n\n  // @ts-expect-error typeAnnotation may not index node\n  if (node.typeAnnotation) {\n    // @ts-expect-error typeAnnotation may not index node\n    return node.typeAnnotation;\n  }\n\n  if (typeAnnotationInferringNodes.has(node)) {\n    // Bail out from type inference to avoid infinite loops\n    return;\n  }\n  typeAnnotationInferringNodes.add(node);\n\n  try {\n    let inferer =\n      // @ts-expect-error inferers do not cover all AST types\n      inferers[node.type];\n    if (inferer) {\n      return inferer.call(this, node);\n    }\n\n    // @ts-expect-error inferers do not cover all AST types\n    inferer = inferers[this.parentPath.type];\n    if (inferer?.validParent) {\n      return this.parentPath.getTypeAnnotation();\n    }\n  } finally {\n    typeAnnotationInferringNodes.delete(node);\n  }\n}\n\nexport function isBaseType(\n  this: NodePath,\n  baseName: string,\n  soft?: boolean,\n): boolean {\n  return _isBaseType(baseName, this.getTypeAnnotation(), soft);\n}\n\nfunction _isBaseType(\n  baseName: string,\n  type?: t.FlowType | t.TSType,\n  soft?: boolean,\n): boolean {\n  if (baseName === \"string\") {\n    return isStringTypeAnnotation(type);\n  } else if (baseName === \"number\") {\n    return isNumberTypeAnnotation(type);\n  } else if (baseName === \"boolean\") {\n    return isBooleanTypeAnnotation(type);\n  } else if (baseName === \"any\") {\n    return isAnyTypeAnnotation(type);\n  } else if (baseName === \"mixed\") {\n    return isMixedTypeAnnotation(type);\n  } else if (baseName === \"empty\") {\n    return isEmptyTypeAnnotation(type);\n  } else if (baseName === \"void\") {\n    return isVoidTypeAnnotation(type);\n  } else {\n    if (soft) {\n      return false;\n    } else {\n      throw new Error(`Unknown base type ${baseName}`);\n    }\n  }\n}\n\nexport function couldBeBaseType(this: NodePath, name: string): boolean {\n  const type = this.getTypeAnnotation();\n  if (isAnyTypeAnnotation(type)) return true;\n\n  if (isUnionTypeAnnotation(type)) {\n    for (const type2 of type.types) {\n      if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {\n        return true;\n      }\n    }\n    return false;\n  } else {\n    return _isBaseType(name, type, true);\n  }\n}\n\nexport function baseTypeStrictlyMatches(\n  this: NodePath,\n  rightArg: NodePath,\n): boolean {\n  const left = this.getTypeAnnotation();\n  const right = rightArg.getTypeAnnotation();\n\n  if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {\n    return right.type === left.type;\n  }\n  return false;\n}\n\nexport function isGenericType(this: NodePath, genericName: string): boolean {\n  const type = this.getTypeAnnotation();\n  if (genericName === \"Array\") {\n    // T[]\n    if (\n      isTSArrayType(type) ||\n      isArrayTypeAnnotation(type) ||\n      isTupleTypeAnnotation(type)\n    ) {\n      return true;\n    }\n  }\n  return (\n    (isGenericTypeAnnotation(type) &&\n      isIdentifier(type.id, {\n        name: genericName,\n      })) ||\n    (isTSTypeReference(type) &&\n      isIdentifier(type.typeName, {\n        name: genericName,\n      }))\n  );\n}\n","// this file contains hooks that handle ancestry cleanup of parent nodes when removing children\n\nimport type NodePath from \"../index.ts\";\nimport type * as t from \"@babel/types\";\n/**\n * Pre hooks should be used for either rejecting removal or delegating removal\n */\n\nexport const hooks = [\n  function (self: NodePath, parent: NodePath) {\n    const removeParent =\n      // while (NODE);\n      // removing the test of a while/switch, we can either just remove it entirely *or* turn the\n      // `test` into `true` unlikely that the latter will ever be what's wanted so we just remove\n      // the loop to avoid infinite recursion\n      (self.key === \"test\" && (parent.isWhile() || parent.isSwitchCase())) ||\n      // export NODE;\n      // just remove a declaration for an export as this is no longer valid\n      (self.key === \"declaration\" && parent.isExportDeclaration()) ||\n      // label: NODE\n      // stray labeled statement with no body\n      (self.key === \"body\" && parent.isLabeledStatement()) ||\n      // let NODE;\n      // remove an entire declaration if there are no declarators left\n      (self.listKey === \"declarations\" &&\n        parent.isVariableDeclaration() &&\n        parent.node.declarations.length === 1) ||\n      // NODE;\n      // remove the entire expression statement if there's no expression\n      (self.key === \"expression\" && parent.isExpressionStatement());\n\n    if (removeParent) {\n      parent.remove();\n      return true;\n    }\n  },\n\n  function (self: NodePath, parent: NodePath) {\n    if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {\n      // (node, NODE);\n      // we've just removed the second element of a sequence expression so let's turn that sequence\n      // expression into a regular expression\n      parent.replaceWith(parent.node.expressions[0]);\n      return true;\n    }\n  },\n\n  function (self: NodePath, parent: NodePath) {\n    if (parent.isBinary()) {\n      // left + NODE;\n      // NODE + right;\n      // we're in a binary expression, better remove it and replace it with the last expression\n      if (self.key === \"left\") {\n        parent.replaceWith(parent.node.right);\n      } else {\n        // key === \"right\"\n        parent.replaceWith(parent.node.left);\n      }\n      return true;\n    }\n  },\n\n  function (self: NodePath, parent: NodePath) {\n    if (\n      (parent.isIfStatement() && self.key === \"consequent\") ||\n      (self.key === \"body\" &&\n        (parent.isLoop() || parent.isArrowFunctionExpression()))\n    ) {\n      self.replaceWith({\n        type: \"BlockStatement\",\n        body: [],\n      } as t.BlockStatement);\n      return true;\n    }\n  },\n];\n","// This file contains methods responsible for removing a node.\n\nimport { hooks } from \"./lib/removal-hooks.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _replaceWith } from \"./replacement.ts\";\nimport type NodePath from \"./index.ts\";\nimport { REMOVED, SHOULD_SKIP } from \"./index.ts\";\nimport { getBindingIdentifiers } from \"@babel/types\";\nimport { updateSiblingKeys } from \"./modification.ts\";\nimport { resync } from \"./context.ts\";\n\nexport function remove(this: NodePath) {\n  _assertUnremoved.call(this);\n\n  resync.call(this);\n\n  if (_callRemovalHooks.call(this)) {\n    _markRemoved.call(this);\n    return;\n  }\n\n  if (!this.opts?.noScope) {\n    _removeFromScope.call(this);\n  }\n\n  this.shareCommentsWithSiblings();\n  _remove.call(this);\n  _markRemoved.call(this);\n}\n\nexport function _removeFromScope(this: NodePath) {\n  const bindings = getBindingIdentifiers(this.node, false, false, true);\n  Object.keys(bindings).forEach(name => this.scope.removeBinding(name));\n}\n\nexport function _callRemovalHooks(this: NodePath) {\n  if (this.parentPath) {\n    for (const fn of hooks) {\n      if (fn(this, this.parentPath)) return true;\n    }\n  }\n}\n\nexport function _remove(this: NodePath) {\n  if (Array.isArray(this.container)) {\n    this.container.splice(this.key as number, 1);\n    updateSiblingKeys.call(this, this.key as number, -1);\n  } else {\n    _replaceWith.call(this, null);\n  }\n}\n\nexport function _markRemoved(this: NodePath) {\n  // this.shouldSkip = true; this.removed = true;\n  this._traverseFlags |= SHOULD_SKIP | REMOVED;\n  if (this.parent) {\n    getCachedPaths(this.hub, this.parent).delete(this.node);\n  }\n  this.node = null;\n}\n\nexport function _assertUnremoved(this: NodePath) {\n  if (this.removed) {\n    throw this.buildCodeFrameError(\n      \"NodePath has been removed so is read-only.\",\n    );\n  }\n}\n","// TODO: Remove this file in Babel 8\n\nimport { react } from \"@babel/types\";\nimport {\n  cloneNode,\n  jsxExpressionContainer,\n  variableDeclaration,\n  variableDeclarator,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"../../scope/index.ts\";\nimport type NodePath from \"../index.ts\";\nimport type Binding from \"../../scope/binding.ts\";\nimport type { Visitor } from \"../../types.ts\";\n\nconst referenceVisitor: Visitor<PathHoister> = {\n  // This visitor looks for bindings to establish a topmost scope for hoisting.\n  ReferencedIdentifier(path, state) {\n    // Don't hoist regular JSX identifiers ('div', 'span', etc).\n    // We do have to consider member expressions for hoisting (e.g. `this.component`)\n    if (\n      path.isJSXIdentifier() &&\n      react.isCompatTag(path.node.name) &&\n      !path.parentPath.isJSXMemberExpression()\n    ) {\n      return;\n    }\n\n    // If the identifier refers to `this`, we need to break on the closest non-arrow scope.\n    if (path.node.name === \"this\") {\n      let scope = path.scope;\n      do {\n        if (\n          scope.path.isFunction() &&\n          !scope.path.isArrowFunctionExpression()\n        ) {\n          break;\n        }\n      } while ((scope = scope.parent));\n      if (scope) state.breakOnScopePaths.push(scope.path);\n    }\n\n    // direct references that we need to track to hoist this to the highest scope we can\n    const binding = path.scope.getBinding(path.node.name);\n    if (!binding) return;\n\n    // we can handle reassignments only if they happen in the same scope as the declaration\n    for (const violation of binding.constantViolations) {\n      if (violation.scope !== binding.path.scope) {\n        state.mutableBinding = true;\n        path.stop();\n        return;\n      }\n    }\n\n    // this binding isn't accessible from the parent scope so we can safely ignore it\n    // eg. it's in a closure etc\n    if (binding !== state.scope.getBinding(path.node.name)) return;\n\n    state.bindings[path.node.name] = binding;\n  },\n};\n\nexport default class PathHoister<T extends t.Node = t.Node> {\n  breakOnScopePaths: NodePath[];\n  bindings: { [k: string]: Binding };\n  mutableBinding: boolean;\n  private scopes: Scope[];\n  scope: Scope;\n  private path: NodePath<T>;\n  private attachAfter: boolean;\n\n  constructor(path: NodePath<T>, scope: Scope) {\n    // Storage for scopes we can't hoist above.\n    this.breakOnScopePaths = [];\n    // Storage for bindings that may affect what path we can hoist to.\n    this.bindings = {};\n    // \"true\" if the current path contains a reference to a binding whose\n    // value can change and thus can't be safely hoisted.\n    this.mutableBinding = false;\n    // Storage for eligible scopes.\n    this.scopes = [];\n    // Our original scope and path.\n    this.scope = scope;\n    this.path = path;\n    // By default, we attach as far up as we can; but if we're trying\n    // to avoid referencing a binding, we may have to go after.\n    this.attachAfter = false;\n  }\n\n  // A scope is compatible if all required bindings are reachable.\n  isCompatibleScope(scope: Scope) {\n    for (const key of Object.keys(this.bindings)) {\n      const binding = this.bindings[key];\n      if (!scope.bindingIdentifierEquals(key, binding.identifier)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  // Look through all scopes and push compatible ones.\n  getCompatibleScopes() {\n    let scope = this.path.scope;\n    do {\n      if (this.isCompatibleScope(scope)) {\n        this.scopes.push(scope);\n      } else {\n        break;\n      }\n\n      // deopt: These scopes are set in the visitor on const violations\n      if (this.breakOnScopePaths.includes(scope.path)) {\n        break;\n      }\n    } while ((scope = scope.parent));\n  }\n\n  getAttachmentPath() {\n    let path = this._getAttachmentPath();\n    if (!path) return;\n\n    let targetScope = path.scope;\n\n    // don't allow paths that have their own lexical environments to pollute\n    if (targetScope.path === path) {\n      targetScope = path.scope.parent;\n    }\n\n    // avoid hoisting to a scope that contains bindings that are executed after our attachment path\n    if (targetScope.path.isProgram() || targetScope.path.isFunction()) {\n      for (const name of Object.keys(this.bindings)) {\n        // check binding is a direct child of this paths scope\n        if (!targetScope.hasOwnBinding(name)) continue;\n\n        const binding = this.bindings[name];\n\n        // allow parameter references and expressions in params (like destructuring rest)\n        if (binding.kind === \"param\" || binding.path.parentKey === \"params\") {\n          continue;\n        }\n\n        // For each binding, get its attachment parent. This gives us an idea of where we might\n        // introduce conflicts.\n        const bindingParentPath = this.getAttachmentParentForPath(binding.path);\n\n        // If the binding's attachment appears at or after our attachment point, then we move after it.\n        if (bindingParentPath.key >= path.key) {\n          this.attachAfter = true;\n          path = binding.path;\n\n          // We also move past any constant violations.\n          for (const violationPath of binding.constantViolations) {\n            if (this.getAttachmentParentForPath(violationPath).key > path.key) {\n              path = violationPath;\n            }\n          }\n        }\n      }\n    }\n\n    return path;\n  }\n\n  _getAttachmentPath() {\n    const scopes = this.scopes;\n\n    const scope = scopes.pop();\n    // deopt: no compatible scopes\n    if (!scope) return;\n\n    if (scope.path.isFunction()) {\n      if (this.hasOwnParamBindings(scope)) {\n        // deopt: should ignore this scope since it's ourselves\n        if (this.scope === scope) return;\n\n        // needs to be attached to the body\n        const bodies = scope.path.get(\"body\").get(\"body\") as NodePath[];\n        for (let i = 0; i < bodies.length; i++) {\n          // Don't attach to something that's going to get hoisted,\n          // like a default parameter\n          // @ts-expect-error todo(flow->ts): avoid mutating the node, introducing new fields\n          if (bodies[i].node._blockHoist) continue;\n          return bodies[i];\n        }\n        // deopt: If here, no attachment path found\n      } else {\n        // doesn't need to be be attached to this scope\n        return this.getNextScopeAttachmentParent();\n      }\n    } else if (scope.path.isProgram()) {\n      return this.getNextScopeAttachmentParent();\n    }\n  }\n\n  getNextScopeAttachmentParent() {\n    const scope = this.scopes.pop();\n    if (scope) return this.getAttachmentParentForPath(scope.path);\n  }\n\n  // Find an attachment for this path.\n  getAttachmentParentForPath(path: NodePath) {\n    do {\n      if (\n        // Beginning of the scope\n        !path.parentPath ||\n        // Has siblings and is a statement\n        (Array.isArray(path.container) && path.isStatement())\n      ) {\n        return path;\n      }\n    } while ((path = path.parentPath));\n  }\n\n  // Returns true if a scope has param bindings.\n  hasOwnParamBindings(scope: Scope) {\n    for (const name of Object.keys(this.bindings)) {\n      if (!scope.hasOwnBinding(name)) continue;\n\n      const binding = this.bindings[name];\n      // Ensure constant; without it we could place behind a reassignment\n      if (binding.kind === \"param\" && binding.constant) return true;\n    }\n    return false;\n  }\n\n  run(): NodePath<t.Expression> | undefined {\n    this.path.traverse(referenceVisitor, this);\n\n    if (this.mutableBinding) return;\n\n    this.getCompatibleScopes();\n\n    const attachTo = this.getAttachmentPath();\n    if (!attachTo) return;\n\n    // don't bother hoisting to the same function as this will cause multiple branches to be\n    // evaluated more than once leading to a bad optimisation\n    if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return;\n\n    // generate declaration and insert it to our point\n    let uid: t.Identifier | t.JSXExpressionContainer =\n      attachTo.scope.generateUidIdentifier(\"ref\");\n\n    // @ts-expect-error todo(flow->ts): more specific type for this.path\n    const declarator = variableDeclarator(uid, this.path.node);\n\n    const insertFn = this.attachAfter ? \"insertAfter\" : \"insertBefore\";\n    const [attached] = attachTo[insertFn]([\n      attachTo.isVariableDeclarator()\n        ? declarator\n        : variableDeclaration(\"var\", [declarator]),\n    ]);\n\n    const parent = this.path.parentPath;\n    if (parent.isJSXElement() && this.path.container === parent.node.children) {\n      // turning the `span` in `<div><span /></div>` to an expression so we need to wrap it with\n      // an expression container\n      uid = jsxExpressionContainer(uid);\n    }\n\n    this.path.replaceWith(cloneNode(uid));\n\n    // @ts-expect-error TS cannot refine the type of `attached`\n    // TODO: Should we use `attached.isVariableDeclaration()`?\n    return attachTo.isVariableDeclarator()\n      ? attached.get(\"init\")\n      : attached.get(\"declarations.0.init\");\n  }\n}\n","// This file contains methods that modify the path/node in some ways.\n\nimport { getCachedPaths } from \"../cache.ts\";\nimport NodePath from \"./index.ts\";\nimport { _getQueueContexts, pushContext, setScope } from \"./context.ts\";\nimport { _assertUnremoved } from \"./removal.ts\";\nimport {\n  arrowFunctionExpression,\n  assertExpression,\n  assignmentExpression,\n  blockStatement,\n  callExpression,\n  cloneNode,\n  expressionStatement,\n  isAssignmentExpression,\n  isCallExpression,\n  isExportNamedDeclaration,\n  isExpression,\n  isIdentifier,\n  isSequenceExpression,\n  isSuper,\n  thisExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type Scope from \"../scope/index.ts\";\n\n/**\n * Insert the provided nodes before the current one.\n */\n\nexport function insertBefore(\n  this: NodePath,\n  nodes_: t.Node | t.Node[],\n): NodePath[] {\n  _assertUnremoved.call(this);\n\n  const nodes = _verifyNodeList.call(this, nodes_);\n\n  const { parentPath, parent } = this;\n\n  if (\n    parentPath.isExpressionStatement() ||\n    parentPath.isLabeledStatement() ||\n    // https://github.com/babel/babel/issues/15293\n    // When Babel transforms `export class String { field }`, the class properties plugin will inject the defineProperty\n    // helper, which depends on the builtins e.g. String, Number, Symbol, etc. To prevent them from being shadowed by local\n    // exports, the helper injector replaces the named export into `class _String { field }; export { _String as String }`,\n    // with `parentPath` here changed to the moved ClassDeclaration, causing rare inconsistency between `parent` and `parentPath`.\n    // Here we retrieve the parent type from the `parent` property. This is a temporary fix and we should revisit when\n    // helpers should get injected.\n    isExportNamedDeclaration(parent) ||\n    (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n  ) {\n    return parentPath.insertBefore(nodes);\n  } else if (\n    (this.isNodeType(\"Expression\") && !this.isJSXElement()) ||\n    (parentPath.isForStatement() && this.key === \"init\")\n  ) {\n    if (this.node) nodes.push(this.node);\n    // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n    return this.replaceExpressionWithStatements(nodes);\n  } else if (Array.isArray(this.container)) {\n    return _containerInsertBefore.call(this, nodes);\n  } else if (this.isStatementOrBlock()) {\n    const node = this.node as t.Statement;\n    const shouldInsertCurrentNode =\n      node &&\n      (!this.isExpressionStatement() ||\n        (node as t.ExpressionStatement).expression != null);\n\n    this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n    return (this as NodePath<t.BlockStatement>).unshiftContainer(\n      \"body\",\n      // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n      nodes,\n    );\n  } else {\n    throw new Error(\n      \"We don't know what to do with this node type. \" +\n        \"We were previously a Statement but we can't fit in here?\",\n    );\n  }\n}\n\nexport function _containerInsert<N extends t.Node>(\n  this: NodePath,\n  from: number,\n  nodes: N[],\n): NodePath<N>[] {\n  updateSiblingKeys.call(this, from, nodes.length);\n\n  const paths: NodePath<N>[] = [];\n\n  // @ts-expect-error todo(flow->ts): this.container could be a NodePath\n  this.container.splice(from, 0, ...nodes);\n  for (let i = 0; i < nodes.length; i++) {\n    const to = from + i;\n    const path = this.getSibling(to) as NodePath<N>;\n    paths.push(path);\n\n    if (this.context?.queue) {\n      pushContext.call(path, this.context);\n    }\n  }\n\n  const contexts = _getQueueContexts.call(this);\n\n  for (const path of paths) {\n    setScope.call(path);\n    path.debug(\"Inserted.\");\n\n    for (const context of contexts) {\n      context.maybeQueue(path, true);\n    }\n  }\n\n  return paths;\n}\n\nexport function _containerInsertBefore<N extends t.Node>(\n  this: NodePath,\n  nodes: N[],\n) {\n  return _containerInsert.call(this, this.key as number, nodes);\n}\n\nexport function _containerInsertAfter<N extends t.Node>(\n  this: NodePath,\n  nodes: N[],\n) {\n  return _containerInsert.call(this, (this.key as number) + 1, nodes);\n}\n\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isHiddenInSequenceExpression(path: NodePath): boolean {\n  return (\n    isSequenceExpression(path.parent) &&\n    (last(path.parent.expressions) !== path.node ||\n      isHiddenInSequenceExpression(path.parentPath))\n  );\n}\n\nfunction isAlmostConstantAssignment(\n  node: t.Node,\n  scope: Scope,\n): node is t.AssignmentExpression & { left: t.Identifier } {\n  if (!isAssignmentExpression(node) || !isIdentifier(node.left)) {\n    return false;\n  }\n\n  // Not every scope can contain variables. For example, we might be in\n  // a ClassScope either in the ClassHeritage or in a computed key.\n  const blockScope = scope.getBlockParent();\n\n  // If the variable is defined in the current scope and only assigned here,\n  // we can be sure that its value won't change.\n  return (\n    blockScope.hasOwnBinding(node.left.name) &&\n    blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1\n  );\n}\n\n/**\n * Insert the provided nodes after the current one. When inserting nodes after an\n * expression, ensure that the completion record is correct by pushing the current node.\n */\n\nexport function insertAfter(\n  this: NodePath,\n  nodes_: t.Node | t.Node[],\n): NodePath[] {\n  _assertUnremoved.call(this);\n\n  if (this.isSequenceExpression()) {\n    return last(this.get(\"expressions\")).insertAfter(nodes_);\n  }\n\n  const nodes = _verifyNodeList.call(this, nodes_);\n\n  const { parentPath, parent } = this;\n  if (\n    parentPath.isExpressionStatement() ||\n    parentPath.isLabeledStatement() ||\n    // see insertBefore\n    isExportNamedDeclaration(parent) ||\n    (parentPath.isExportDefaultDeclaration() && this.isDeclaration())\n  ) {\n    return parentPath.insertAfter(\n      nodes.map(node => {\n        // Usually after an expression we can safely insert another expression:\n        //   A.insertAfter(B)\n        //     foo = A;  -> foo = (A, B);\n        // If A is an expression statement, it isn't safe anymore so we need to\n        // convert B to an expression statement\n        //     A;        -> A; B // No semicolon! It could break if followed by [!\n        return isExpression(node) ? expressionStatement(node) : node;\n      }),\n    );\n  } else if (\n    (this.isNodeType(\"Expression\") &&\n      !this.isJSXElement() &&\n      !parentPath.isJSXElement()) ||\n    (parentPath.isForStatement() && this.key === \"init\")\n  ) {\n    const self = this as NodePath<t.Expression | t.VariableDeclaration>;\n    if (self.node) {\n      const node = self.node;\n      let { scope } = this;\n\n      if (scope.path.isPattern()) {\n        assertExpression(node);\n\n        self.replaceWith(callExpression(arrowFunctionExpression([], node), []));\n        (self.get(\"callee.body\") as NodePath<t.Expression>).insertAfter(nodes);\n        return [self];\n      }\n\n      if (isHiddenInSequenceExpression(self)) {\n        nodes.unshift(node);\n      }\n      // We need to preserve the value of this expression.\n      else if (isCallExpression(node) && isSuper(node.callee)) {\n        nodes.unshift(node);\n        // `super(...)` always evaluates to `this`.\n        nodes.push(thisExpression());\n      } else if (isAlmostConstantAssignment(node, scope)) {\n        nodes.unshift(node);\n        nodes.push(cloneNode(node.left));\n      } else if (scope.isPure(node, true)) {\n        // Insert the nodes before rather than after; it's not observable.\n        nodes.push(node);\n      } else {\n        // Inserting after the computed key of a method should insert the\n        // temporary binding in the method's parent's scope.\n        if (parentPath.isMethod({ computed: true, key: node })) {\n          scope = scope.parent;\n        }\n        const temp = scope.generateDeclaredUidIdentifier();\n        nodes.unshift(\n          expressionStatement(\n            // @ts-expect-error todo(flow->ts): This can be a variable\n            // declaration in the \"init\" of a for statement, but that's\n            // invalid here.\n            assignmentExpression(\"=\", cloneNode(temp), node),\n          ),\n        );\n        nodes.push(expressionStatement(cloneNode(temp)));\n      }\n    }\n    // @ts-expect-error todo(flow->ts): check that nodes is an array of statements\n    return this.replaceExpressionWithStatements(nodes);\n  } else if (Array.isArray(this.container)) {\n    return _containerInsertAfter.call(this, nodes);\n  } else if (this.isStatementOrBlock()) {\n    const node = this.node as t.Statement;\n    const shouldInsertCurrentNode =\n      node &&\n      (!this.isExpressionStatement() ||\n        (node as t.ExpressionStatement).expression != null);\n\n    this.replaceWith(blockStatement(shouldInsertCurrentNode ? [node] : []));\n    // @ts-expect-error Fixme: refine nodes to t.BlockStatement[\"body\"] when this is a BlockStatement path\n    return this.pushContainer(\"body\", nodes);\n  } else {\n    throw new Error(\n      \"We don't know what to do with this node type. \" +\n        \"We were previously a Statement but we can't fit in here?\",\n    );\n  }\n}\n\n/**\n * Update all sibling node paths after `fromIndex` by `incrementBy`.\n */\n\nexport function updateSiblingKeys(\n  this: NodePath,\n  fromIndex: number,\n  incrementBy: number,\n) {\n  if (!this.parent) return;\n\n  const paths = getCachedPaths(this.hub, this.parent) || ([] as never[]);\n\n  for (const [, path] of paths) {\n    if (\n      typeof path.key === \"number\" &&\n      path.container === this.container &&\n      path.key >= fromIndex\n    ) {\n      path.key += incrementBy;\n    }\n  }\n}\n\nexport function _verifyNodeList<N extends t.Node>(\n  this: NodePath,\n  nodes: N | N[],\n): N[] {\n  if (!nodes) {\n    return [];\n  }\n\n  if (!Array.isArray(nodes)) {\n    nodes = [nodes];\n  }\n\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    let msg;\n\n    if (!node) {\n      msg = \"has falsy node\";\n    } else if (typeof node !== \"object\") {\n      msg = \"contains a non-object node\";\n    } else if (!node.type) {\n      msg = \"without a type\";\n    } else if (node instanceof NodePath) {\n      msg = \"has a NodePath when it expected a raw object\";\n    }\n\n    if (msg) {\n      const type = Array.isArray(node) ? \"array\" : typeof node;\n      throw new Error(\n        `Node list ${msg} with the index of ${i} and type of ${type}`,\n      );\n    }\n  }\n\n  return nodes;\n}\n\nexport function unshiftContainer<N extends t.Node, K extends keyof N & string>(\n  this: NodePath<N>,\n  listKey: K,\n  nodes: N[K] extends (infer E)[]\n    ? E | E[]\n    : // todo: refine to t.Node[]\n      //  ? E extends t.Node\n      //    ? E | E[]\n      //    : never\n      never,\n) {\n  // todo: NodePaths<Nodes>\n  _assertUnremoved.call(this);\n\n  // @ts-expect-error fixme\n  nodes = _verifyNodeList.call(this, nodes);\n\n  // get the first path and insert our nodes before it, if it doesn't exist then it\n  // doesn't matter, our nodes will be inserted anyway\n  const path = NodePath.get({\n    parentPath: this,\n    parent: this.node,\n    container: (this.node as N)[listKey] as unknown as t.Node | t.Node[],\n    listKey,\n    key: 0,\n  }).setContext(this.context);\n\n  return _containerInsertBefore.call(\n    path,\n    // @ts-expect-error typings needed to narrow down nodes as t.Node[]\n    nodes,\n  );\n}\n\nexport function pushContainer<\n  P extends NodePath,\n  K extends string & keyof P[\"node\"],\n>(\n  this: P,\n  listKey: K,\n  nodes: P[\"node\"][K] extends (infer E)[]\n    ? E | E[]\n    : // todo: refine to t.Node[]\n      //  ? E extends t.Node\n      //    ? E | E[]\n      //    : never\n      never,\n) {\n  _assertUnremoved.call(this);\n\n  const verifiedNodes = _verifyNodeList.call(\n    this,\n    // @ts-expect-error refine typings\n    nodes,\n  );\n\n  // get an invisible path that represents the last node + 1 and replace it with our\n  // nodes, effectively inlining it\n\n  const container = (this.node as P[\"node\"])[listKey] as t.Node[];\n  const path = NodePath.get({\n    parentPath: this,\n    parent: this.node,\n    container: container as unknown as t.Node | t.Node[],\n    listKey,\n    key: container.length,\n  }).setContext(this.context);\n\n  return path.replaceWithMultiple(verifiedNodes);\n}\n\nimport PathHoister from \"./lib/hoister.ts\" with { if: \"!process.env.BABEL_8_BREAKING && !USE_ESM\" };\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /**\n   * Hoist the current node to the highest scope possible and return a UID\n   * referencing it.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.hoist = function hoist<T extends t.Node>(\n    this: NodePath<T>,\n    scope: Scope = this.scope,\n  ) {\n    const hoister = new PathHoister<T>(this, scope);\n    return hoister.run();\n  };\n}\n","// This file contains methods responsible for replacing a node with another.\n\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport traverse from \"../index.ts\";\nimport NodePath from \"./index.ts\";\nimport { getCachedPaths } from \"../cache.ts\";\nimport { _verifyNodeList, _containerInsertAfter } from \"./modification.ts\";\nimport { parse } from \"@babel/parser\";\nimport {\n  FUNCTION_TYPES,\n  arrowFunctionExpression,\n  assignmentExpression,\n  awaitExpression,\n  blockStatement,\n  buildUndefinedNode,\n  callExpression,\n  cloneNode,\n  conditionalExpression,\n  expressionStatement,\n  getBindingIdentifiers,\n  identifier,\n  inheritLeadingComments,\n  inheritTrailingComments,\n  inheritsComments,\n  isBlockStatement,\n  isEmptyStatement,\n  isExpression,\n  isExpressionStatement,\n  isIfStatement,\n  isProgram,\n  isStatement,\n  isVariableDeclaration,\n  removeComments,\n  returnStatement,\n  sequenceExpression,\n  validate,\n  yieldExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { resync, setScope } from \"./context.ts\";\n\n/**\n * Replace a node with an array of multiple. This method performs the following steps:\n *\n *  - Inherit the comments of first provided node with that of the current node.\n *  - Insert the provided nodes after the current node.\n *  - Remove the current node.\n */\n\nexport function replaceWithMultiple(\n  this: NodePath,\n  nodes: t.Node | t.Node[],\n): NodePath[] {\n  resync.call(this);\n\n  nodes = _verifyNodeList.call(this, nodes);\n  inheritLeadingComments(nodes[0], this.node);\n  inheritTrailingComments(nodes[nodes.length - 1], this.node);\n  getCachedPaths(this.hub, this.parent)?.delete(this.node);\n  this.node =\n    // @ts-expect-error this.key must present in this.container\n    this.container[this.key] = null;\n  const paths = this.insertAfter(nodes);\n\n  if (this.node) {\n    this.requeue();\n  } else {\n    this.remove();\n  }\n  return paths;\n}\n\n/**\n * Parse a string as an expression and replace the current node with the result.\n *\n * NOTE: This is typically not a good idea to use. Building source strings when\n * transforming ASTs is an antipattern and SHOULD NOT be encouraged. Even if it's\n * easier to use, your transforms will be extremely brittle.\n */\n\nexport function replaceWithSourceString(this: NodePath, replacement: string) {\n  resync.call(this);\n  let ast: t.File;\n\n  try {\n    replacement = `(${replacement})`;\n    ast = parse(replacement);\n  } catch (err) {\n    const loc = err.loc;\n    if (loc) {\n      err.message +=\n        \" - make sure this is an expression.\\n\" +\n        codeFrameColumns(replacement, {\n          start: {\n            line: loc.line,\n            column: loc.column + 1,\n          },\n        });\n      err.code = \"BABEL_REPLACE_SOURCE_ERROR\";\n    }\n    throw err;\n  }\n\n  const expressionAST = (ast.program.body[0] as t.ExpressionStatement)\n    .expression;\n  traverse.removeProperties(expressionAST);\n  return this.replaceWith(expressionAST);\n}\n\n/**\n * Replace the current node with another.\n */\nexport function replaceWith<R extends t.Node>(\n  this: NodePath,\n  replacementPath: R,\n): [NodePath<R>];\nexport function replaceWith<R extends NodePath>(\n  this: NodePath,\n  replacementPath: R,\n): [R];\nexport function replaceWith(\n  this: NodePath,\n  replacementPath: t.Node | NodePath,\n): [NodePath] {\n  resync.call(this);\n\n  if (this.removed) {\n    throw new Error(\"You can't replace this node, we've already removed it\");\n  }\n\n  let replacement: t.Node =\n    replacementPath instanceof NodePath\n      ? replacementPath.node\n      : replacementPath;\n\n  if (!replacement) {\n    throw new Error(\n      \"You passed `path.replaceWith()` a falsy node, use `path.remove()` instead\",\n    );\n  }\n\n  if (this.node === replacement) {\n    return [this];\n  }\n\n  if (this.isProgram() && !isProgram(replacement)) {\n    throw new Error(\n      \"You can only replace a Program root node with another Program node\",\n    );\n  }\n\n  if (Array.isArray(replacement)) {\n    throw new Error(\n      \"Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`\",\n    );\n  }\n\n  if (typeof replacement === \"string\") {\n    throw new Error(\n      \"Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`\",\n    );\n  }\n\n  let nodePath = \"\";\n\n  if (this.isNodeType(\"Statement\") && isExpression(replacement)) {\n    if (\n      !this.canHaveVariableDeclarationOrExpression() &&\n      !this.canSwapBetweenExpressionAndStatement(replacement) &&\n      !this.parentPath.isExportDefaultDeclaration()\n    ) {\n      // replacing a statement with an expression so wrap it in an expression statement\n      replacement = expressionStatement(replacement);\n      nodePath = \"expression\";\n    }\n  }\n\n  if (this.isNodeType(\"Expression\") && isStatement(replacement)) {\n    if (\n      !this.canHaveVariableDeclarationOrExpression() &&\n      !this.canSwapBetweenExpressionAndStatement(replacement)\n    ) {\n      // replacing an expression with a statement so let's explode it\n      return this.replaceExpressionWithStatements([replacement]) as [NodePath];\n    }\n  }\n\n  const oldNode = this.node;\n  if (oldNode) {\n    inheritsComments(replacement, oldNode);\n    removeComments(oldNode);\n  }\n\n  // replace the node\n  _replaceWith.call(this, replacement);\n  this.type = replacement.type;\n\n  // potentially create new scope\n  setScope.call(this);\n\n  // requeue for visiting\n  this.requeue();\n\n  return [nodePath ? this.get(nodePath) : this];\n}\n\nexport function _replaceWith(this: NodePath, node: t.Node) {\n  if (!this.container) {\n    throw new ReferenceError(\"Container is falsy\");\n  }\n\n  if (this.inList) {\n    // @ts-expect-error todo(flow->ts): check if validate accepts a numeric key\n    validate(this.parent, this.key, [node]);\n  } else {\n    validate(this.parent, this.key as string, node);\n  }\n\n  this.debug(`Replace with ${node?.type}`);\n  getCachedPaths(this.hub, this.parent)?.set(node, this).delete(this.node);\n\n  this.node =\n    // @ts-expect-error this.key must present in this.container\n    this.container[this.key] = node;\n}\n\n/**\n * This method takes an array of statements nodes and then explodes it\n * into expressions. This method retains completion records which is\n * extremely important to retain original semantics.\n */\n\nexport function replaceExpressionWithStatements(\n  this: NodePath,\n  nodes: Array<t.Statement>,\n) {\n  resync.call(this);\n\n  const declars: t.Identifier[] = [];\n  const nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);\n  if (nodesAsSingleExpression) {\n    for (const id of declars) this.scope.push({ id });\n    return this.replaceWith(nodesAsSingleExpression)[0].get(\"expressions\");\n  }\n\n  const functionParent = this.getFunctionParent();\n  const isParentAsync = functionParent?.node.async;\n  const isParentGenerator = functionParent?.node.generator;\n\n  const container = arrowFunctionExpression([], blockStatement(nodes));\n\n  this.replaceWith(callExpression(container, []));\n  // replaceWith changes the type of \"this\", but it isn't trackable by TS\n  type ThisType = NodePath<\n    t.CallExpression & {\n      callee: t.ArrowFunctionExpression & { body: t.BlockStatement };\n    }\n  >;\n\n  // hoist variable declaration in do block\n  // `(do { var x = 1; x;})` -> `var x; (() => { x = 1; return x; })()`\n  const callee = (this as ThisType).get(\"callee\");\n  callee.get(\"body\").scope.hoistVariables(id => this.scope.push({ id }));\n\n  // add implicit returns to all ending expression statements\n  const completionRecords: Array<NodePath> = callee.getCompletionRecords();\n  for (const path of completionRecords) {\n    if (!path.isExpressionStatement()) continue;\n\n    const loop = path.findParent(path => path.isLoop());\n    if (loop) {\n      let uid = loop.getData(\"expressionReplacementReturnUid\");\n\n      if (!uid) {\n        uid = callee.scope.generateDeclaredUidIdentifier(\"ret\");\n        callee\n          .get(\"body\")\n          .pushContainer(\"body\", returnStatement(cloneNode(uid)));\n        loop.setData(\"expressionReplacementReturnUid\", uid);\n      } else {\n        uid = identifier(uid.name);\n      }\n\n      path\n        .get(\"expression\")\n        .replaceWith(\n          assignmentExpression(\"=\", cloneNode(uid), path.node.expression),\n        );\n    } else {\n      path.replaceWith(returnStatement(path.node.expression));\n    }\n  }\n\n  // This is an IIFE, so we don't need to worry about the noNewArrows assumption\n  callee.arrowFunctionToExpression();\n  // Fixme: we can not `assert this is NodePath<t.FunctionExpression>` in `arrowFunctionToExpression`\n  // because it is not a class method known at compile time.\n  const newCallee = callee as unknown as NodePath<t.FunctionExpression>;\n\n  // (() => await xxx)() -> await (async () => await xxx)();\n  const needToAwaitFunction =\n    isParentAsync &&\n    traverse.hasType(\n      (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n      \"AwaitExpression\",\n      FUNCTION_TYPES,\n    );\n  const needToYieldFunction =\n    isParentGenerator &&\n    traverse.hasType(\n      (this.get(\"callee.body\") as NodePath<t.BlockStatement>).node,\n      \"YieldExpression\",\n      FUNCTION_TYPES,\n    );\n  if (needToAwaitFunction) {\n    newCallee.set(\"async\", true);\n    // yield* will await the generator return result\n    if (!needToYieldFunction) {\n      this.replaceWith(awaitExpression((this as ThisType).node));\n    }\n  }\n  if (needToYieldFunction) {\n    newCallee.set(\"generator\", true);\n    this.replaceWith(yieldExpression((this as ThisType).node, true));\n  }\n\n  return newCallee.get(\"body.body\");\n}\n\nfunction gatherSequenceExpressions(\n  nodes: ReadonlyArray<t.Node>,\n  declars: Array<t.Identifier>,\n) {\n  const exprs: t.Expression[] = [];\n  let ensureLastUndefined = true;\n\n  for (const node of nodes) {\n    // if we encounter emptyStatement before a non-emptyStatement\n    // we want to disregard that\n    if (!isEmptyStatement(node)) {\n      ensureLastUndefined = false;\n    }\n\n    if (isExpression(node)) {\n      exprs.push(node);\n    } else if (isExpressionStatement(node)) {\n      exprs.push(node.expression);\n    } else if (isVariableDeclaration(node)) {\n      if (node.kind !== \"var\") return; // bailed\n\n      for (const declar of node.declarations) {\n        const bindings = getBindingIdentifiers(declar);\n        for (const key of Object.keys(bindings)) {\n          declars.push(cloneNode(bindings[key]));\n        }\n\n        if (declar.init) {\n          exprs.push(assignmentExpression(\"=\", declar.id, declar.init));\n        }\n      }\n\n      ensureLastUndefined = true;\n    } else if (isIfStatement(node)) {\n      const consequent = node.consequent\n        ? gatherSequenceExpressions([node.consequent], declars)\n        : buildUndefinedNode();\n      const alternate = node.alternate\n        ? gatherSequenceExpressions([node.alternate], declars)\n        : buildUndefinedNode();\n      if (!consequent || !alternate) return; // bailed\n\n      exprs.push(conditionalExpression(node.test, consequent, alternate));\n    } else if (isBlockStatement(node)) {\n      const body = gatherSequenceExpressions(node.body, declars);\n      if (!body) return; // bailed\n\n      exprs.push(body);\n    } else if (isEmptyStatement(node)) {\n      // empty statement so ensure the last item is undefined if we're last\n      // checks if emptyStatement is first\n      if (nodes.indexOf(node) === 0) {\n        ensureLastUndefined = true;\n      }\n    } else {\n      // bailed, we can't turn this statement into an expression\n      return;\n    }\n  }\n\n  if (ensureLastUndefined) exprs.push(buildUndefinedNode());\n\n  if (exprs.length === 1) {\n    return exprs[0];\n  } else {\n    return sequenceExpression(exprs);\n  }\n}\n\nexport function replaceInline(this: NodePath, nodes: t.Node | Array<t.Node>) {\n  resync.call(this);\n\n  if (Array.isArray(nodes)) {\n    if (Array.isArray(this.container)) {\n      nodes = _verifyNodeList.call(this, nodes);\n      const paths = _containerInsertAfter.call(this, nodes);\n      this.remove();\n      return paths;\n    } else {\n      return this.replaceWithMultiple(nodes);\n    }\n  } else {\n    return this.replaceWith(nodes);\n  }\n}\n","import type NodePath from \"./index.ts\";\nimport type * as t from \"@babel/types\";\n\n// This file contains Babels metainterpreter that can evaluate static code.\n\nconst VALID_OBJECT_CALLEES = [\"Number\", \"String\", \"Math\"] as const;\nconst VALID_IDENTIFIER_CALLEES = [\n  \"isFinite\",\n  \"isNaN\",\n  \"parseFloat\",\n  \"parseInt\",\n  \"decodeURI\",\n  \"decodeURIComponent\",\n  \"encodeURI\",\n  \"encodeURIComponent\",\n  process.env.BABEL_8_BREAKING ? \"btoa\" : null,\n  process.env.BABEL_8_BREAKING ? \"atob\" : null,\n] as const;\n\nconst INVALID_METHODS = [\"random\"] as const;\n\nfunction isValidObjectCallee(\n  val: string,\n): val is (typeof VALID_OBJECT_CALLEES)[number] {\n  return VALID_OBJECT_CALLEES.includes(\n    // @ts-expect-error val is a string\n    val,\n  );\n}\n\nfunction isValidIdentifierCallee(\n  val: string,\n): val is (typeof VALID_IDENTIFIER_CALLEES)[number] {\n  return VALID_IDENTIFIER_CALLEES.includes(\n    // @ts-expect-error val is a string\n    val,\n  );\n}\n\nfunction isInvalidMethod(val: string): val is (typeof INVALID_METHODS)[number] {\n  return INVALID_METHODS.includes(\n    // @ts-expect-error val is a string\n    val,\n  );\n}\n\n/**\n * Walk the input `node` and statically evaluate if it's truthy.\n *\n * Returning `true` when we're sure that the expression will evaluate to a\n * truthy value, `false` if we're sure that it will evaluate to a falsy\n * value and `undefined` if we aren't sure. Because of this please do not\n * rely on coercion when using this method and check with === if it's false.\n *\n * For example do:\n *\n *   if (t.evaluateTruthy(node) === false) falsyLogic();\n *\n * **AND NOT**\n *\n *   if (!t.evaluateTruthy(node)) falsyLogic();\n *\n */\n\nexport function evaluateTruthy(this: NodePath): boolean {\n  const res = this.evaluate();\n  if (res.confident) return !!res.value;\n}\n\ntype State = {\n  confident: boolean;\n  deoptPath: NodePath | null;\n  seen: Map<t.Node, Result>;\n};\n\ntype Result = {\n  resolved: boolean;\n  value?: any;\n};\n/**\n * Deopts the evaluation\n */\nfunction deopt(path: NodePath, state: State) {\n  if (!state.confident) return;\n  state.deoptPath = path;\n  state.confident = false;\n}\n\nconst Globals = new Map([\n  [\"undefined\", undefined],\n  [\"Infinity\", Infinity],\n  [\"NaN\", NaN],\n]);\n\n/**\n * We wrap the _evaluate method so we can track `seen` nodes, we push an item\n * to the map before we actually evaluate it so we can deopt on self recursive\n * nodes such as:\n *\n *   var g = a ? 1 : 2,\n *       a = g * this.foo\n */\nfunction evaluateCached(path: NodePath, state: State): any {\n  const { node } = path;\n  const { seen } = state;\n\n  if (seen.has(node)) {\n    const existing = seen.get(node);\n    if (existing.resolved) {\n      return existing.value;\n    } else {\n      deopt(path, state);\n      return;\n    }\n  } else {\n    const item: Result = { resolved: false };\n    seen.set(node, item);\n\n    const val = _evaluate(path, state);\n    if (state.confident) {\n      item.resolved = true;\n      item.value = val;\n    }\n    return val;\n  }\n}\n\nfunction _evaluate(path: NodePath, state: State): any {\n  if (!state.confident) return;\n\n  if (path.isSequenceExpression()) {\n    const exprs = path.get(\"expressions\");\n    return evaluateCached(exprs[exprs.length - 1], state);\n  }\n\n  if (\n    path.isStringLiteral() ||\n    path.isNumericLiteral() ||\n    path.isBooleanLiteral()\n  ) {\n    return path.node.value;\n  }\n\n  if (path.isNullLiteral()) {\n    return null;\n  }\n\n  if (path.isTemplateLiteral()) {\n    return evaluateQuasis(path, path.node.quasis, state);\n  }\n\n  if (\n    path.isTaggedTemplateExpression() &&\n    path.get(\"tag\").isMemberExpression()\n  ) {\n    const object = path.get(\"tag.object\") as NodePath;\n    const {\n      // @ts-expect-error todo(flow->ts): possible bug, object is can be any expression and so name might be undefined\n      node: { name },\n    } = object;\n    const property = path.get(\"tag.property\") as NodePath;\n\n    if (\n      object.isIdentifier() &&\n      name === \"String\" &&\n      // todo(flow->ts): was changed from getBinding(name, true)\n      //  should this be hasBinding(name, true) as the binding is never used later?\n      !path.scope.getBinding(name) &&\n      property.isIdentifier() &&\n      property.node.name === \"raw\"\n    ) {\n      return evaluateQuasis(path, path.node.quasi.quasis, state, true);\n    }\n  }\n\n  if (path.isConditionalExpression()) {\n    const testResult = evaluateCached(path.get(\"test\"), state);\n    if (!state.confident) return;\n    if (testResult) {\n      return evaluateCached(path.get(\"consequent\"), state);\n    } else {\n      return evaluateCached(path.get(\"alternate\"), state);\n    }\n  }\n\n  if (path.isExpressionWrapper()) {\n    // TypeCastExpression, ExpressionStatement etc\n    return evaluateCached(path.get(\"expression\"), state);\n  }\n\n  // \"foo\".length, \"foo\"[0]\n  if (\n    path.isMemberExpression() &&\n    !path.parentPath.isCallExpression({ callee: path.node })\n  ) {\n    const property = path.get(\"property\");\n    const object = path.get(\"object\");\n\n    if (object.isLiteral()) {\n      // @ts-expect-error todo(flow->ts): instead of typeof - would it be better to check type of ast node?\n      const value = object.node.value;\n      const type = typeof value;\n\n      let key = null;\n      if (path.node.computed) {\n        key = evaluateCached(property, state);\n        if (!state.confident) return;\n      } else if (property.isIdentifier()) {\n        key = property.node.name;\n      }\n      if (\n        (type === \"number\" || type === \"string\") &&\n        key != null &&\n        (typeof key === \"number\" || typeof key === \"string\")\n      ) {\n        return value[key];\n      }\n    }\n  }\n\n  if (path.isReferencedIdentifier()) {\n    const binding = path.scope.getBinding(path.node.name);\n\n    if (binding) {\n      if (\n        binding.constantViolations.length > 0 ||\n        path.node.start < binding.path.node.end\n      ) {\n        deopt(binding.path, state);\n        return;\n      }\n      const bindingPathScope = binding.path.scope;\n      if (binding.kind === \"var\" && bindingPathScope !== binding.scope) {\n        let hasUnsafeBlock =\n          !bindingPathScope.path.parentPath.isBlockStatement();\n        for (let scope = bindingPathScope.parent; scope; scope = scope.parent) {\n          if (scope === path.scope) {\n            if (hasUnsafeBlock) {\n              deopt(binding.path, state);\n              return;\n            }\n            break;\n          }\n          if (scope.path.parentPath?.isBlockStatement()) {\n            hasUnsafeBlock = true;\n          }\n        }\n      }\n      if (binding.hasValue) {\n        return binding.value;\n      }\n    }\n\n    const name = path.node.name;\n    if (Globals.has(name)) {\n      if (!binding) {\n        return Globals.get(name);\n      }\n      deopt(binding.path, state);\n      return;\n    }\n\n    const resolved = path.resolve();\n    if (resolved === path) {\n      deopt(path, state);\n      return;\n    } else {\n      return evaluateCached(resolved, state);\n    }\n  }\n\n  if (path.isUnaryExpression({ prefix: true })) {\n    if (path.node.operator === \"void\") {\n      // we don't need to evaluate the argument to know what this will return\n      return undefined;\n    }\n\n    const argument = path.get(\"argument\");\n    if (\n      path.node.operator === \"typeof\" &&\n      (argument.isFunction() || argument.isClass())\n    ) {\n      return \"function\";\n    }\n\n    const arg = evaluateCached(argument, state);\n    if (!state.confident) return;\n    switch (path.node.operator) {\n      case \"!\":\n        return !arg;\n      case \"+\":\n        return +arg;\n      case \"-\":\n        return -arg;\n      case \"~\":\n        return ~arg;\n      case \"typeof\":\n        return typeof arg;\n    }\n  }\n\n  if (path.isArrayExpression()) {\n    const arr = [];\n    const elems: Array<NodePath> = path.get(\"elements\");\n    for (const elem of elems) {\n      const elemValue = elem.evaluate();\n\n      if (elemValue.confident) {\n        arr.push(elemValue.value);\n      } else {\n        deopt(elemValue.deopt, state);\n        return;\n      }\n    }\n    return arr;\n  }\n\n  if (path.isObjectExpression()) {\n    const obj = {};\n    const props = path.get(\"properties\");\n    for (const prop of props) {\n      if (prop.isObjectMethod() || prop.isSpreadElement()) {\n        deopt(prop, state);\n        return;\n      }\n      const keyPath = prop.get(\"key\");\n      let key;\n      if (prop.node.computed) {\n        key = keyPath.evaluate();\n        if (!key.confident) {\n          deopt(key.deopt, state);\n          return;\n        }\n        key = key.value;\n      } else if (keyPath.isIdentifier()) {\n        key = keyPath.node.name;\n      } else {\n        key = (\n          keyPath.node as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral\n        ).value;\n      }\n      const valuePath = prop.get(\"value\");\n      let value = valuePath.evaluate();\n      if (!value.confident) {\n        deopt(value.deopt, state);\n        return;\n      }\n      value = value.value;\n      // @ts-expect-error key is any type\n      obj[key] = value;\n    }\n    return obj;\n  }\n\n  if (path.isLogicalExpression()) {\n    // If we are confident that the left side of an && is false, or the left\n    // side of an || is true, we can be confident about the entire expression\n    const wasConfident = state.confident;\n    const left = evaluateCached(path.get(\"left\"), state);\n    const leftConfident = state.confident;\n    state.confident = wasConfident;\n    const right = evaluateCached(path.get(\"right\"), state);\n    const rightConfident = state.confident;\n\n    switch (path.node.operator) {\n      case \"||\":\n        // TODO consider having a \"truthy type\" that doesn't bail on\n        // left uncertainty but can still evaluate to truthy.\n        state.confident = leftConfident && (!!left || rightConfident);\n        if (!state.confident) return;\n\n        return left || right;\n      case \"&&\":\n        state.confident = leftConfident && (!left || rightConfident);\n        if (!state.confident) return;\n\n        return left && right;\n      case \"??\":\n        state.confident = leftConfident && (left != null || rightConfident);\n        if (!state.confident) return;\n\n        return left ?? right;\n    }\n  }\n\n  if (path.isBinaryExpression()) {\n    const left = evaluateCached(path.get(\"left\"), state);\n    if (!state.confident) return;\n    const right = evaluateCached(path.get(\"right\"), state);\n    if (!state.confident) return;\n\n    switch (path.node.operator) {\n      case \"-\":\n        return left - right;\n      case \"+\":\n        return left + right;\n      case \"/\":\n        return left / right;\n      case \"*\":\n        return left * right;\n      case \"%\":\n        return left % right;\n      case \"**\":\n        return left ** right;\n      case \"<\":\n        return left < right;\n      case \">\":\n        return left > right;\n      case \"<=\":\n        return left <= right;\n      case \">=\":\n        return left >= right;\n      case \"==\":\n        return left == right; // eslint-disable-line eqeqeq\n      case \"!=\":\n        return left != right; // eslint-disable-line eqeqeq\n      case \"===\":\n        return left === right;\n      case \"!==\":\n        return left !== right;\n      case \"|\":\n        return left | right;\n      case \"&\":\n        return left & right;\n      case \"^\":\n        return left ^ right;\n      case \"<<\":\n        return left << right;\n      case \">>\":\n        return left >> right;\n      case \">>>\":\n        return left >>> right;\n    }\n  }\n\n  if (path.isCallExpression()) {\n    const callee = path.get(\"callee\");\n    let context;\n    let func;\n\n    // Number(1);\n    if (\n      callee.isIdentifier() &&\n      !path.scope.getBinding(callee.node.name) &&\n      (isValidObjectCallee(callee.node.name) ||\n        isValidIdentifierCallee(callee.node.name))\n    ) {\n      func = global[callee.node.name];\n    }\n\n    if (callee.isMemberExpression()) {\n      const object = callee.get(\"object\");\n      const property = callee.get(\"property\");\n\n      // Math.min(1, 2)\n      if (\n        object.isIdentifier() &&\n        property.isIdentifier() &&\n        isValidObjectCallee(object.node.name) &&\n        !isInvalidMethod(property.node.name)\n      ) {\n        context = global[object.node.name];\n        const key = property.node.name;\n        if (Object.hasOwn(context, key)) {\n          func = context[key as keyof typeof context];\n        }\n      }\n\n      // \"abc\".charCodeAt(4)\n      if (object.isLiteral() && property.isIdentifier()) {\n        // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type (StringLiteral and NumberLiteral)\n        const type = typeof object.node.value;\n        if (type === \"string\" || type === \"number\") {\n          // @ts-expect-error todo(flow->ts): consider checking ast node type instead of value type\n          context = object.node.value;\n          func = context[property.node.name];\n        }\n      }\n    }\n\n    if (func) {\n      const args = path.get(\"arguments\").map(arg => evaluateCached(arg, state));\n      if (!state.confident) return;\n\n      return func.apply(context, args);\n    }\n  }\n\n  deopt(path, state);\n}\n\nfunction evaluateQuasis(\n  path: NodePath<t.TaggedTemplateExpression | t.TemplateLiteral>,\n  quasis: Array<any>,\n  state: State,\n  raw = false,\n) {\n  let str = \"\";\n\n  let i = 0;\n  const exprs: Array<NodePath<t.Node>> = path.isTemplateLiteral()\n    ? path.get(\"expressions\")\n    : path.get(\"quasi.expressions\");\n\n  for (const elem of quasis) {\n    // not confident, evaluated an expression we don't like\n    if (!state.confident) break;\n\n    // add on element\n    str += raw ? elem.value.raw : elem.value.cooked;\n\n    // add on interpolated expression if it's present\n    const expr = exprs[i++];\n    if (expr) str += String(evaluateCached(expr, state));\n  }\n\n  if (!state.confident) return;\n  return str;\n}\n\n/**\n * Walk the input `node` and statically evaluate it.\n *\n * Returns an object in the form `{ confident, value, deopt }`. `confident`\n * indicates whether or not we had to drop out of evaluating the expression\n * because of hitting an unknown node that we couldn't confidently find the\n * value of, in which case `deopt` is the path of said node.\n *\n * Example:\n *\n *   t.evaluate(parse(\"5 + 5\")) // { confident: true, value: 10 }\n *   t.evaluate(parse(\"!true\")) // { confident: true, value: false }\n *   t.evaluate(parse(\"foo + foo\")) // { confident: false, value: undefined, deopt: NodePath }\n *\n */\n\nexport function evaluate(this: NodePath): {\n  confident: boolean;\n  value: any;\n  deopt?: NodePath;\n} {\n  const state: State = {\n    confident: true,\n    deoptPath: null,\n    seen: new Map(),\n  };\n  let value = evaluateCached(this, state);\n  if (!state.confident) value = undefined;\n\n  return {\n    confident: state.confident,\n    deopt: state.deoptPath,\n    value: value,\n  };\n}\n","// This file contains methods that convert the path node into another node or some other type of data.\n\nimport {\n  arrowFunctionExpression,\n  assignmentExpression,\n  binaryExpression,\n  blockStatement,\n  callExpression,\n  conditionalExpression,\n  expressionStatement,\n  identifier,\n  isIdentifier,\n  jsxIdentifier,\n  logicalExpression,\n  LOGICAL_OPERATORS,\n  memberExpression,\n  metaProperty,\n  numericLiteral,\n  objectExpression,\n  restElement,\n  returnStatement,\n  sequenceExpression,\n  spreadElement,\n  stringLiteral,\n  super as _super,\n  thisExpression,\n  toExpression,\n  unaryExpression,\n  toBindingIdentifierName,\n  isFunction,\n  isAssignmentPattern,\n  isRestElement,\n  getFunctionName,\n  cloneNode,\n  variableDeclaration,\n  variableDeclarator,\n  exportNamedDeclaration,\n  exportSpecifier,\n  inherits,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport template from \"@babel/template\";\nimport { environmentVisitor } from \"../visitors.ts\";\nimport type NodePath from \"./index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport { setup } from \"./context.ts\";\n\nexport function toComputedKey(this: NodePath) {\n  let key;\n  if (this.isMemberExpression()) {\n    key = this.node.property;\n  } else if (this.isProperty() || this.isMethod()) {\n    key = this.node.key;\n  } else {\n    throw new ReferenceError(\"todo\");\n  }\n\n  // @ts-expect-error todo(flow->ts) computed does not exist in ClassPrivateProperty\n  if (!this.node.computed) {\n    if (isIdentifier(key)) key = stringLiteral(key.name);\n  }\n\n  return key;\n}\n\nexport function ensureBlock(\n  this: NodePath<\n    t.Loop | t.WithStatement | t.Function | t.LabeledStatement | t.CatchClause\n  >,\n): void {\n  const body = this.get(\"body\");\n  const bodyNode = body.node;\n\n  if (Array.isArray(body)) {\n    throw new Error(\"Can't convert array path to a block statement\");\n  }\n  if (!bodyNode) {\n    throw new Error(\"Can't convert node without a body\");\n  }\n\n  if (body.isBlockStatement()) {\n    // @ts-expect-error TS throws because ensureBlock returns the body node path\n    // however, we don't use the return value and treat it as a transform and\n    // assertion utilities. For better type inference we annotate it as an\n    // assertion method\n    // TODO: Unify the implementation with the type definition\n    return bodyNode;\n  }\n\n  const statements: Array<t.Statement> = [];\n\n  let stringPath = \"body\";\n  let key;\n  let listKey;\n  if (body.isStatement()) {\n    listKey = \"body\";\n    key = 0;\n    statements.push(body.node);\n  } else {\n    stringPath += \".body.0\";\n    if (this.isFunction()) {\n      key = \"argument\";\n      statements.push(returnStatement(body.node as t.Expression));\n    } else {\n      key = \"expression\";\n      statements.push(expressionStatement(body.node as t.Expression));\n    }\n  }\n\n  this.node.body = blockStatement(statements);\n  const parentPath = this.get(stringPath) as NodePath;\n  setup.call(\n    body,\n    parentPath,\n    listKey\n      ? // @ts-expect-error listKey must present in parent path\n        parentPath.node[listKey]\n      : parentPath.node,\n    listKey,\n    key,\n  );\n\n  // @ts-expect-error TS throws because ensureBlock returns the body node path\n  // however, we don't use the return value and treat it as a transform and\n  // assertion utilities. For better type inference we annotate it as an\n  // assertion method\n  // TODO: Unify the implementation with the type definition\n  return this.node;\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /**\n   * Keeping this for backward-compatibility. You should use arrowFunctionToExpression() for >=7.x.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.arrowFunctionToShadowed = function (this: NodePath) {\n    if (!this.isArrowFunctionExpression()) return;\n\n    this.arrowFunctionToExpression();\n  };\n}\n\n/**\n * Given an arbitrary function, process its content as if it were an arrow function, moving references\n * to \"this\", \"arguments\", \"super\", and such into the function's parent scope. This method is useful if\n * you have wrapped some set of items in an IIFE or other function, but want \"this\", \"arguments\", and super\"\n * to continue behaving as expected.\n */\nexport function unwrapFunctionEnvironment(this: NodePath) {\n  if (\n    !this.isArrowFunctionExpression() &&\n    !this.isFunctionExpression() &&\n    !this.isFunctionDeclaration()\n  ) {\n    throw this.buildCodeFrameError(\n      \"Can only unwrap the environment of a function.\",\n    );\n  }\n\n  hoistFunctionEnvironment(this);\n}\n\nfunction setType<N extends t.Node, T extends N[\"type\"]>(\n  path: NodePath<N>,\n  type: T,\n): asserts path is NodePath<Extract<N, { type: T }>> {\n  path.node.type = type;\n}\n\n/**\n * Convert a given arrow function into a normal ES5 function expression.\n */\nexport function arrowFunctionToExpression(\n  this: NodePath<t.ArrowFunctionExpression>,\n  {\n    allowInsertArrow = true,\n    allowInsertArrowWithRest = allowInsertArrow,\n    noNewArrows = process.env.BABEL_8_BREAKING\n      ? // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n        true\n      : !arguments[0]?.specCompliant,\n  }: {\n    allowInsertArrow?: boolean | void;\n    allowInsertArrowWithRest?: boolean | void;\n    noNewArrows?: boolean;\n  } = {},\n): NodePath<\n  Exclude<t.Function, t.Method | t.ArrowFunctionExpression> | t.CallExpression\n> {\n  if (!this.isArrowFunctionExpression()) {\n    throw (this as NodePath).buildCodeFrameError(\n      \"Cannot convert non-arrow function to a function expression.\",\n    );\n  }\n\n  let self = this;\n  if (!noNewArrows) {\n    // @ts-expect-error This is technicallynot valid on arrow functions\n    // because it adds an .id property, but we are going to convert it\n    // to a function expression anyway\n    self = self.ensureFunctionName(false) ?? self;\n  }\n\n  const { thisBinding, fnPath: fn } = hoistFunctionEnvironment(\n    self,\n    noNewArrows,\n    allowInsertArrow,\n    allowInsertArrowWithRest,\n  );\n\n  fn.ensureBlock();\n  setType(fn, \"FunctionExpression\");\n\n  if (!noNewArrows) {\n    const checkBinding = thisBinding\n      ? null\n      : fn.scope.generateUidIdentifier(\"arrowCheckId\");\n    if (checkBinding) {\n      fn.parentPath.scope.push({\n        id: checkBinding,\n        init: objectExpression([]),\n      });\n    }\n\n    fn.get(\"body\").unshiftContainer(\n      \"body\",\n      expressionStatement(\n        callExpression(this.hub.addHelper(\"newArrowCheck\"), [\n          thisExpression(),\n          checkBinding\n            ? identifier(checkBinding.name)\n            : identifier(thisBinding),\n        ]),\n      ),\n    );\n\n    fn.replaceWith(\n      callExpression(memberExpression(fn.node, identifier(\"bind\")), [\n        checkBinding ? identifier(checkBinding.name) : thisExpression(),\n      ]),\n    );\n\n    return fn.get(\"callee.object\");\n  }\n\n  return fn;\n}\n\nconst getSuperCallsVisitor = environmentVisitor<{\n  allSuperCalls: NodePath<t.CallExpression>[];\n}>({\n  CallExpression(child, { allSuperCalls }) {\n    if (!child.get(\"callee\").isSuper()) return;\n    allSuperCalls.push(child);\n  },\n});\n\n/**\n * Given a function, traverse its contents, and if there are references to \"this\", \"arguments\", \"super\",\n * or \"new.target\", ensure that these references reference the parent environment around this function.\n *\n * @returns `thisBinding`: the name of the injected reference to `this`; for example \"_this\"\n * @returns `fnPath`: the new path to the function node. This is different from the fnPath\n *                    parameter when the function node is wrapped in another node.\n */\nfunction hoistFunctionEnvironment(\n  fnPath: NodePath<t.Function>,\n  // TODO(Babel 8): Consider defaulting to `false` for spec compliance\n  noNewArrows: boolean | void = true,\n  allowInsertArrow: boolean | void = true,\n  allowInsertArrowWithRest: boolean | void = true,\n): { thisBinding: string; fnPath: NodePath<t.Function> } {\n  let arrowParent;\n  let thisEnvFn: NodePath<t.Function> = fnPath.findParent(p => {\n    if (p.isArrowFunctionExpression()) {\n      arrowParent ??= p;\n      return false;\n    }\n    return (\n      p.isFunction() ||\n      p.isProgram() ||\n      p.isClassProperty({ static: false }) ||\n      p.isClassPrivateProperty({ static: false })\n    );\n  }) as NodePath<t.Function>;\n  const inConstructor = thisEnvFn.isClassMethod({ kind: \"constructor\" });\n\n  if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {\n    if (arrowParent) {\n      thisEnvFn = arrowParent;\n    } else if (allowInsertArrow) {\n      // It's safe to wrap this function in another and not hoist to the\n      // top level because the 'this' binding is constant in class\n      // properties (since 'super()' has already been called), so we don't\n      // need to capture/reassign it at the top level.\n      fnPath.replaceWith(\n        callExpression(\n          arrowFunctionExpression([], toExpression(fnPath.node)),\n          [],\n        ),\n      );\n      thisEnvFn = fnPath.get(\"callee\") as NodePath<t.ArrowFunctionExpression>;\n      fnPath = thisEnvFn.get(\"body\") as NodePath<t.FunctionExpression>;\n    } else {\n      throw fnPath.buildCodeFrameError(\n        \"Unable to transform arrow inside class property\",\n      );\n    }\n  }\n\n  const { thisPaths, argumentsPaths, newTargetPaths, superProps, superCalls } =\n    getScopeInformation(fnPath);\n\n  // Convert all super() calls in the constructor, if super is used in an arrow.\n  if (inConstructor && superCalls.length > 0) {\n    if (!allowInsertArrow) {\n      throw superCalls[0].buildCodeFrameError(\n        \"When using '@babel/plugin-transform-arrow-functions', \" +\n          \"it's not possible to compile `super()` in an arrow function without compiling classes.\\n\" +\n          \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n      );\n    }\n    if (!allowInsertArrowWithRest) {\n      // preset-env with target `since 2017` enables `transform-parameters` without `transform-classes`.\n      throw superCalls[0].buildCodeFrameError(\n        \"When using '@babel/plugin-transform-parameters', \" +\n          \"it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\\n\" +\n          \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n      );\n    }\n    const allSuperCalls: NodePath<t.CallExpression>[] = [];\n    thisEnvFn.traverse(getSuperCallsVisitor, { allSuperCalls });\n    const superBinding = getSuperBinding(thisEnvFn);\n    allSuperCalls.forEach(superCall => {\n      const callee = identifier(superBinding);\n      callee.loc = superCall.node.callee.loc;\n\n      superCall.get(\"callee\").replaceWith(callee);\n    });\n  }\n\n  // Convert all \"arguments\" references in the arrow to point at the alias.\n  if (argumentsPaths.length > 0) {\n    const argumentsBinding = getBinding(thisEnvFn, \"arguments\", () => {\n      const args = () => identifier(\"arguments\");\n      if (thisEnvFn.scope.path.isProgram()) {\n        return conditionalExpression(\n          binaryExpression(\n            \"===\",\n            unaryExpression(\"typeof\", args()),\n            stringLiteral(\"undefined\"),\n          ),\n          thisEnvFn.scope.buildUndefinedNode(),\n          args(),\n        );\n      } else {\n        return args();\n      }\n    });\n\n    argumentsPaths.forEach(argumentsChild => {\n      const argsRef = identifier(argumentsBinding);\n      argsRef.loc = argumentsChild.node.loc;\n\n      argumentsChild.replaceWith(argsRef);\n    });\n  }\n\n  // Convert all \"new.target\" references in the arrow to point at the alias.\n  if (newTargetPaths.length > 0) {\n    const newTargetBinding = getBinding(thisEnvFn, \"newtarget\", () =>\n      metaProperty(identifier(\"new\"), identifier(\"target\")),\n    );\n\n    newTargetPaths.forEach(targetChild => {\n      const targetRef = identifier(newTargetBinding);\n      targetRef.loc = targetChild.node.loc;\n\n      targetChild.replaceWith(targetRef);\n    });\n  }\n\n  // Convert all \"super.prop\" references to point at aliases.\n  if (superProps.length > 0) {\n    if (!allowInsertArrow) {\n      throw superProps[0].buildCodeFrameError(\n        \"When using '@babel/plugin-transform-arrow-functions', \" +\n          \"it's not possible to compile `super.prop` in an arrow function without compiling classes.\\n\" +\n          \"Please add '@babel/plugin-transform-classes' to your Babel configuration.\",\n      );\n    }\n\n    const flatSuperProps: NodePath<t.MemberExpression>[] = superProps.reduce(\n      (acc, superProp) => acc.concat(standardizeSuperProperty(superProp)),\n      [],\n    );\n\n    flatSuperProps.forEach(superProp => {\n      const key = superProp.node.computed\n        ? \"\"\n        : // @ts-expect-error super property must not contain private name\n          superProp.get(\"property\").node.name;\n\n      const superParentPath = superProp.parentPath;\n\n      const isAssignment = superParentPath.isAssignmentExpression({\n        left: superProp.node,\n      });\n      const isCall = superParentPath.isCallExpression({\n        callee: superProp.node,\n      });\n      const isTaggedTemplate = superParentPath.isTaggedTemplateExpression({\n        tag: superProp.node,\n      });\n      const superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);\n\n      const args: t.Expression[] = [];\n      if (superProp.node.computed) {\n        // SuperProperty must not be a private name\n        args.push(superProp.get(\"property\").node as t.Expression);\n      }\n\n      if (isAssignment) {\n        const value = superParentPath.node.right;\n        args.push(value);\n      }\n\n      const call = callExpression(identifier(superBinding), args);\n\n      if (isCall) {\n        superParentPath.unshiftContainer(\"arguments\", thisExpression());\n        superProp.replaceWith(memberExpression(call, identifier(\"call\")));\n\n        thisPaths.push(\n          superParentPath.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n        );\n      } else if (isAssignment) {\n        // Replace not only the super.prop, but the whole assignment\n        superParentPath.replaceWith(call);\n      } else if (isTaggedTemplate) {\n        superProp.replaceWith(\n          callExpression(memberExpression(call, identifier(\"bind\"), false), [\n            thisExpression(),\n          ]),\n        );\n\n        thisPaths.push(\n          superProp.get(\"arguments.0\") as NodePath<t.ThisExpression>,\n        );\n      } else {\n        superProp.replaceWith(call);\n      }\n    });\n  }\n\n  // Convert all \"this\" references in the arrow to point at the alias.\n  let thisBinding: string | null;\n  if (thisPaths.length > 0 || !noNewArrows) {\n    thisBinding = getThisBinding(thisEnvFn, inConstructor);\n\n    if (\n      noNewArrows ||\n      // In subclass constructors, still need to rewrite because \"this\" can't be bound in spec mode\n      // because it might not have been initialized yet.\n      (inConstructor && hasSuperClass(thisEnvFn))\n    ) {\n      thisPaths.forEach(thisChild => {\n        const thisRef = thisChild.isJSX()\n          ? jsxIdentifier(thisBinding)\n          : identifier(thisBinding);\n\n        thisRef.loc = thisChild.node.loc;\n        thisChild.replaceWith(thisRef);\n      });\n\n      if (!noNewArrows) thisBinding = null;\n    }\n  }\n\n  return { thisBinding, fnPath };\n}\n\ntype LogicalOp = Parameters<typeof logicalExpression>[0];\ntype BinaryOp = Parameters<typeof binaryExpression>[0];\n\nfunction isLogicalOp(op: string): op is LogicalOp {\n  return LOGICAL_OPERATORS.includes(op);\n}\n\nfunction standardizeSuperProperty(\n  superProp: NodePath<t.MemberExpression>,\n):\n  | [NodePath<t.MemberExpression>]\n  | [NodePath<t.MemberExpression>, NodePath<t.MemberExpression>] {\n  if (\n    superProp.parentPath.isAssignmentExpression() &&\n    superProp.parentPath.node.operator !== \"=\"\n  ) {\n    const assignmentPath = superProp.parentPath;\n\n    const op = assignmentPath.node.operator.slice(0, -1) as\n      | LogicalOp\n      | BinaryOp;\n\n    const value = assignmentPath.node.right;\n\n    const isLogicalAssignment = isLogicalOp(op);\n\n    if (superProp.node.computed) {\n      // from: super[foo] **= 4;\n      // to:   super[tmp = foo] = super[tmp] ** 4;\n\n      // from: super[foo] ??= 4;\n      // to:   super[tmp = foo] ?? super[tmp] = 4;\n\n      const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n\n      const object = superProp.node.object;\n      const property = superProp.node.property as t.Expression;\n\n      assignmentPath\n        .get(\"left\")\n        .replaceWith(\n          memberExpression(\n            object,\n            assignmentExpression(\"=\", tmp, property),\n            true /* computed */,\n          ),\n        );\n\n      assignmentPath\n        .get(\"right\")\n        .replaceWith(\n          rightExpression(\n            isLogicalAssignment ? \"=\" : op,\n            memberExpression(object, identifier(tmp.name), true /* computed */),\n            value,\n          ),\n        );\n    } else {\n      // from: super.foo **= 4;\n      // to:   super.foo = super.foo ** 4;\n\n      // from: super.foo ??= 4;\n      // to:   super.foo ?? super.foo = 4;\n\n      const object = superProp.node.object;\n      const property = superProp.node.property as t.Identifier;\n\n      assignmentPath\n        .get(\"left\")\n        .replaceWith(memberExpression(object, property));\n\n      assignmentPath\n        .get(\"right\")\n        .replaceWith(\n          rightExpression(\n            isLogicalAssignment ? \"=\" : op,\n            memberExpression(object, identifier(property.name)),\n            value,\n          ),\n        );\n    }\n\n    if (isLogicalAssignment) {\n      assignmentPath.replaceWith(\n        logicalExpression(\n          op,\n          assignmentPath.node.left as t.MemberExpression,\n          assignmentPath.node.right,\n        ),\n      );\n    } else {\n      assignmentPath.node.operator = \"=\";\n    }\n\n    return [\n      assignmentPath.get(\"left\") as NodePath<t.MemberExpression>,\n      assignmentPath.get(\"right\").get(\"left\") as NodePath<t.MemberExpression>,\n    ];\n  } else if (superProp.parentPath.isUpdateExpression()) {\n    const updateExpr = superProp.parentPath;\n\n    const tmp = superProp.scope.generateDeclaredUidIdentifier(\"tmp\");\n    const computedKey = superProp.node.computed\n      ? superProp.scope.generateDeclaredUidIdentifier(\"prop\")\n      : null;\n\n    const parts: t.Expression[] = [\n      assignmentExpression(\n        \"=\",\n        tmp,\n        memberExpression(\n          superProp.node.object,\n          computedKey\n            ? assignmentExpression(\n                \"=\",\n                computedKey,\n                superProp.node.property as t.Expression,\n              )\n            : superProp.node.property,\n          superProp.node.computed,\n        ),\n      ),\n      assignmentExpression(\n        \"=\",\n        memberExpression(\n          superProp.node.object,\n          computedKey ? identifier(computedKey.name) : superProp.node.property,\n          superProp.node.computed,\n        ),\n        binaryExpression(\n          // map `++` to `+`, and `--` to `-`\n          superProp.parentPath.node.operator[0] as \"+\" | \"-\",\n          identifier(tmp.name),\n          numericLiteral(1),\n        ),\n      ),\n    ];\n\n    if (!superProp.parentPath.node.prefix) {\n      parts.push(identifier(tmp.name));\n    }\n\n    updateExpr.replaceWith(sequenceExpression(parts));\n\n    const left = updateExpr.get(\n      \"expressions.0.right\",\n    ) as NodePath<t.MemberExpression>;\n    const right = updateExpr.get(\n      \"expressions.1.left\",\n    ) as NodePath<t.MemberExpression>;\n    return [left, right];\n  }\n\n  return [superProp];\n\n  function rightExpression(\n    op: BinaryOp | \"=\",\n    left: t.MemberExpression,\n    right: t.Expression,\n  ) {\n    if (op === \"=\") {\n      return assignmentExpression(\"=\", left, right);\n    } else {\n      return binaryExpression(op, left, right);\n    }\n  }\n}\n\nfunction hasSuperClass(thisEnvFn: NodePath<t.Function>) {\n  return (\n    thisEnvFn.isClassMethod() &&\n    !!(thisEnvFn.parentPath.parentPath.node as t.Class).superClass\n  );\n}\n\nconst assignSuperThisVisitor = environmentVisitor<{\n  supers: WeakSet<t.CallExpression>;\n  thisBinding: string;\n}>({\n  CallExpression(child, { supers, thisBinding }) {\n    if (!child.get(\"callee\").isSuper()) return;\n    if (supers.has(child.node)) return;\n    supers.add(child.node);\n\n    child.replaceWithMultiple([\n      child.node,\n      assignmentExpression(\"=\", identifier(thisBinding), identifier(\"this\")),\n    ]);\n  },\n});\n\n// Create a binding that evaluates to the \"this\" of the given function.\nfunction getThisBinding(\n  thisEnvFn: NodePath<t.Function>,\n  inConstructor: boolean,\n) {\n  return getBinding(thisEnvFn, \"this\", thisBinding => {\n    if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression();\n\n    thisEnvFn.traverse(assignSuperThisVisitor, {\n      supers: new WeakSet(),\n      thisBinding,\n    });\n  });\n}\n\n// Create a binding for a function that will call \"super()\" with arguments passed through.\nfunction getSuperBinding(thisEnvFn: NodePath<t.Function>) {\n  return getBinding(thisEnvFn, \"supercall\", () => {\n    const argsBinding = thisEnvFn.scope.generateUidIdentifier(\"args\");\n    return arrowFunctionExpression(\n      [restElement(argsBinding)],\n      callExpression(_super(), [spreadElement(identifier(argsBinding.name))]),\n    );\n  });\n}\n\n// Create a binding for a function that will call \"super.foo\" or \"super[foo]\".\nfunction getSuperPropBinding(\n  thisEnvFn: NodePath<t.Function>,\n  isAssignment: boolean,\n  propName: string,\n) {\n  const op = isAssignment ? \"set\" : \"get\";\n\n  return getBinding(thisEnvFn, `superprop_${op}:${propName || \"\"}`, () => {\n    const argsList = [];\n\n    let fnBody;\n    if (propName) {\n      // () => super.foo\n      fnBody = memberExpression(_super(), identifier(propName));\n    } else {\n      const method = thisEnvFn.scope.generateUidIdentifier(\"prop\");\n      // (method) => super[method]\n      argsList.unshift(method);\n      fnBody = memberExpression(\n        _super(),\n        identifier(method.name),\n        true /* computed */,\n      );\n    }\n\n    if (isAssignment) {\n      const valueIdent = thisEnvFn.scope.generateUidIdentifier(\"value\");\n      argsList.push(valueIdent);\n\n      fnBody = assignmentExpression(\"=\", fnBody, identifier(valueIdent.name));\n    }\n\n    return arrowFunctionExpression(argsList, fnBody);\n  });\n}\n\nfunction getBinding(\n  thisEnvFn: NodePath,\n  key: string,\n  init: (name: string) => t.Expression,\n) {\n  const cacheKey = \"binding:\" + key;\n  let data: string | undefined = thisEnvFn.getData(cacheKey);\n  if (!data) {\n    const id = thisEnvFn.scope.generateUidIdentifier(key);\n    data = id.name;\n    thisEnvFn.setData(cacheKey, data);\n\n    thisEnvFn.scope.push({\n      id: id,\n      init: init(data),\n    });\n  }\n\n  return data;\n}\n\ntype ScopeInfo = {\n  thisPaths: NodePath<t.ThisExpression | t.JSXIdentifier>[];\n  superCalls: NodePath<t.CallExpression>[];\n  superProps: NodePath<t.MemberExpression>[];\n  argumentsPaths: NodePath<t.Identifier | t.JSXIdentifier>[];\n  newTargetPaths: NodePath<t.MetaProperty>[];\n};\n\nconst getScopeInformationVisitor = environmentVisitor<ScopeInfo>({\n  ThisExpression(child, { thisPaths }) {\n    thisPaths.push(child);\n  },\n  JSXIdentifier(child, { thisPaths }) {\n    if (child.node.name !== \"this\") return;\n    if (\n      !child.parentPath.isJSXMemberExpression({ object: child.node }) &&\n      !child.parentPath.isJSXOpeningElement({ name: child.node })\n    ) {\n      return;\n    }\n\n    thisPaths.push(child);\n  },\n  CallExpression(child, { superCalls }) {\n    if (child.get(\"callee\").isSuper()) superCalls.push(child);\n  },\n  MemberExpression(child, { superProps }) {\n    if (child.get(\"object\").isSuper()) superProps.push(child);\n  },\n  Identifier(child, { argumentsPaths }) {\n    if (!child.isReferencedIdentifier({ name: \"arguments\" })) return;\n\n    let curr = child.scope;\n    do {\n      if (curr.hasOwnBinding(\"arguments\")) {\n        curr.rename(\"arguments\");\n        return;\n      }\n      if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {\n        break;\n      }\n    } while ((curr = curr.parent));\n\n    argumentsPaths.push(child);\n  },\n  MetaProperty(child, { newTargetPaths }) {\n    if (!child.get(\"meta\").isIdentifier({ name: \"new\" })) return;\n    if (!child.get(\"property\").isIdentifier({ name: \"target\" })) return;\n\n    newTargetPaths.push(child);\n  },\n});\n\nfunction getScopeInformation(fnPath: NodePath) {\n  const thisPaths: ScopeInfo[\"thisPaths\"] = [];\n  const argumentsPaths: ScopeInfo[\"argumentsPaths\"] = [];\n  const newTargetPaths: ScopeInfo[\"newTargetPaths\"] = [];\n  const superProps: ScopeInfo[\"superProps\"] = [];\n  const superCalls: ScopeInfo[\"superCalls\"] = [];\n\n  fnPath.traverse(getScopeInformationVisitor, {\n    thisPaths,\n    argumentsPaths,\n    newTargetPaths,\n    superProps,\n    superCalls,\n  });\n\n  return {\n    thisPaths,\n    argumentsPaths,\n    newTargetPaths,\n    superProps,\n    superCalls,\n  };\n}\n\nexport function splitExportDeclaration(\n  this: NodePath<t.ExportDefaultDeclaration | t.ExportNamedDeclaration>,\n): NodePath<t.Declaration> {\n  if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {\n    throw new Error(\"Only default and named export declarations can be split.\");\n  }\n  if (this.isExportNamedDeclaration() && this.get(\"specifiers\").length > 0) {\n    throw new Error(\"It doesn't make sense to split exported specifiers.\");\n  }\n\n  const declaration = this.get(\"declaration\");\n\n  if (this.isExportDefaultDeclaration()) {\n    const standaloneDeclaration =\n      declaration.isFunctionDeclaration() || declaration.isClassDeclaration();\n    const exportExpr =\n      declaration.isFunctionExpression() || declaration.isClassExpression();\n\n    const scope = declaration.isScope()\n      ? declaration.scope.parent\n      : declaration.scope;\n\n    // @ts-expect-error id is not defined in expressions other than function/class\n    let id = declaration.node.id;\n    let needBindingRegistration = false;\n\n    if (!id) {\n      needBindingRegistration = true;\n\n      id = scope.generateUidIdentifier(\"default\");\n\n      if (standaloneDeclaration || exportExpr) {\n        declaration.node.id = cloneNode(id);\n      }\n    } else if (exportExpr && scope.hasBinding(id.name)) {\n      needBindingRegistration = true;\n\n      id = scope.generateUidIdentifier(id.name);\n    }\n\n    const updatedDeclaration = standaloneDeclaration\n      ? declaration.node\n      : variableDeclaration(\"var\", [\n          variableDeclarator(\n            cloneNode(id),\n            // @ts-expect-error When `standaloneDeclaration` is false, declaration must not be a Function/ClassDeclaration\n            declaration.node,\n          ),\n        ]);\n\n    const updatedExportDeclaration = exportNamedDeclaration(null, [\n      exportSpecifier(cloneNode(id), identifier(\"default\")),\n    ]);\n\n    this.insertAfter(updatedExportDeclaration);\n    this.replaceWith(updatedDeclaration);\n\n    if (needBindingRegistration) {\n      scope.registerDeclaration(this);\n    }\n\n    return this;\n  } else if (this.get(\"specifiers\").length > 0) {\n    throw new Error(\"It doesn't make sense to split exported specifiers.\");\n  }\n\n  const bindingIdentifiers = declaration.getOuterBindingIdentifiers();\n\n  const specifiers = Object.keys(bindingIdentifiers).map(name => {\n    return exportSpecifier(identifier(name), identifier(name));\n  });\n\n  const aliasDeclar = exportNamedDeclaration(null, specifiers);\n\n  this.insertAfter(aliasDeclar);\n  this.replaceWith(declaration.node);\n  return this;\n}\n\nconst refersOuterBindingVisitor: Visitor<{\n  needsRename: boolean;\n  name: string;\n}> = {\n  \"ReferencedIdentifier|BindingIdentifier\"(\n    path: NodePath<t.Identifier>,\n    state,\n  ) {\n    // check if this node matches our function id\n    if (path.node.name !== state.name) return;\n    state.needsRename = true;\n    path.stop();\n  },\n  Scope(path, state) {\n    if (path.scope.hasOwnBinding(state.name)) {\n      path.skip();\n    }\n  },\n};\n\nexport function ensureFunctionName<\n  N extends t.FunctionExpression | t.ClassExpression,\n>(this: NodePath<N>, supportUnicodeId: boolean): null | NodePath<N> {\n  if (this.node.id) return this;\n\n  const res = getFunctionName(this.node, this.parent);\n  if (res == null) return this;\n  let { name } = res;\n\n  if (!supportUnicodeId && /[\\uD800-\\uDFFF]/.test(name)) {\n    return null;\n  }\n\n  if (name.startsWith(\"get \") || name.startsWith(\"set \")) {\n    // TODO: Remove this to support naming getters and setters\n    return null;\n  }\n\n  name = toBindingIdentifierName(name.replace(/[/ ]/g, \"_\"));\n  const id = identifier(name);\n  inherits(id, res.originalNode);\n\n  const state = { needsRename: false, name };\n\n  // check to see if we have a local binding of the id we're setting inside of\n  // the function, this is important as there are caveats associated\n\n  const { scope } = this;\n  const binding = scope.getOwnBinding(name);\n  if (binding) {\n    if (binding.kind === \"param\") {\n      // safari will blow up in strict mode with code like:\n      //\n      //   let t = function t(t) {};\n      //\n      // with the error:\n      //\n      //   Cannot declare a parameter named 't' as it shadows the name of a\n      //   strict mode function.\n      //\n      // this isn't to the spec and they've invented this behaviour which is\n      // **extremely** annoying so we avoid setting the name if it has a param\n      // with the same id\n      state.needsRename = true;\n    } else {\n      // otherwise it's defined somewhere in scope like:\n      //\n      //   let t = function () {\n      //     let t = 2;\n      //   };\n      //\n      // so we can safely just set the id and move along as it shadows the\n      // bound function id\n    }\n  } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) {\n    this.traverse(refersOuterBindingVisitor, state);\n  }\n\n  if (!state.needsRename) {\n    this.node.id = id;\n    scope.getProgramParent().references[id.name] = true;\n    return this;\n  }\n\n  if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {\n    // we can just munge the local binding\n    scope.rename(id.name);\n    this.node.id = id;\n    scope.getProgramParent().references[id.name] = true;\n    return this;\n  }\n\n  // TODO: we don't currently support wrapping class expressions\n  if (!isFunction(this.node)) return null;\n\n  // need to add a wrapper since we can't change the references\n\n  const key = scope.generateUidIdentifier(id.name);\n  // shim in dummy params to retain function arity, if you try to read the\n  // source then you'll get the original since it's proxied so it's all good\n  const params = [];\n  for (let i = 0, len = getFunctionArity(this.node); i < len; i++) {\n    params.push(scope.generateUidIdentifier(\"x\"));\n  }\n  const call = template.expression.ast`\n    (function (${key}) {\n      function ${id}(${params}) {\n        return ${cloneNode(key)}.apply(this, arguments);\n      }\n\n      ${cloneNode(id)}.toString = function () {\n        return ${cloneNode(key)}.toString();\n      }\n\n      return ${cloneNode(id)};\n    })(${toExpression(this.node)})\n  ` as t.CallExpression;\n\n  return this.replaceWith(call)[0].get(\"arguments.0\") as NodePath<N>;\n}\n\nfunction getFunctionArity(node: t.Function): number {\n  const count = node.params.findIndex(\n    param => isAssignmentPattern(param) || isRestElement(param),\n  );\n  return count === -1 ? node.params.length : count;\n}\n","// This file contains methods responsible for introspecting the current path for certain values.\n\nimport type NodePath from \"./index.ts\";\nimport {\n  STATEMENT_OR_BLOCK_KEYS,\n  VISITOR_KEYS,\n  isBlockStatement,\n  isExpression,\n  isIdentifier,\n  isLiteral,\n  isStringLiteral,\n  isType,\n  matchesPattern as _matchesPattern,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\n/**\n * Match the current node if it matches the provided `pattern`.\n *\n * For example, given the match `React.createClass` it would match the\n * parsed nodes of `React.createClass` and `React[\"createClass\"]`.\n */\n\nexport function matchesPattern(\n  this: NodePath,\n  pattern: string,\n  allowPartial?: boolean,\n): boolean {\n  return _matchesPattern(this.node, pattern, allowPartial);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /**\n   * Check whether we have the input `key`. If the `key` references an array then we check\n   * if the array has any items, otherwise we just check if it's falsy.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.has = function has<N extends t.Node>(\n    this: NodePath<N>,\n    key: keyof N,\n  ): boolean {\n    const val = (this.node as N)?.[key];\n    if (val && Array.isArray(val)) {\n      return !!val.length;\n    } else {\n      return !!val;\n    }\n  };\n}\n\nexport function isStatic(this: NodePath): boolean {\n  return this.scope.isStatic(this.node);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  /**\n   * Alias of `has`.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.is = exports.has;\n\n  /**\n   * Opposite of `has`.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.isnt = function isnt<N extends t.Node>(\n    this: NodePath<N>,\n    key: keyof N,\n  ): boolean {\n    // @ts-expect-error Babel 7\n    return !this.has(key);\n  };\n\n  /**\n   * Check whether the path node `key` strict equals `value`.\n   */\n  // eslint-disable-next-line no-restricted-globals\n  exports.equals = function equals<N extends t.Node>(\n    this: NodePath<N>,\n    key: keyof N,\n    value: any,\n  ): boolean {\n    return (this.node as N)[key] === value;\n  };\n}\n\n/**\n * Check the type against our stored internal type of the node. This is handy when a node has\n * been removed yet we still internally know the type and need it to calculate node replacement.\n */\n\nexport function isNodeType(this: NodePath, type: string): boolean {\n  return isType(this.type, type);\n}\n\n/**\n * This checks whether or not we're in one of the following positions:\n *\n *   for (KEY in right);\n *   for (KEY;;);\n *\n * This is because these spots allow VariableDeclarations AND normal expressions so we need\n * to tell the path replacement that it's ok to replace this with an expression.\n */\n\nexport function canHaveVariableDeclarationOrExpression(this: NodePath) {\n  return (\n    (this.key === \"init\" || this.key === \"left\") && this.parentPath.isFor()\n  );\n}\n\n/**\n * This checks whether we are swapping an arrow function's body between an\n * expression and a block statement (or vice versa).\n *\n * This is because arrow functions may implicitly return an expression, which\n * is the same as containing a block statement.\n */\n\nexport function canSwapBetweenExpressionAndStatement(\n  this: NodePath,\n  replacement: t.Node,\n): boolean {\n  if (this.key !== \"body\" || !this.parentPath.isArrowFunctionExpression()) {\n    return false;\n  }\n\n  if (this.isExpression()) {\n    return isBlockStatement(replacement);\n  } else if (this.isBlockStatement()) {\n    return isExpression(replacement);\n  }\n\n  return false;\n}\n\n/**\n * Check whether the current path references a completion record\n */\n\nexport function isCompletionRecord(\n  this: NodePath,\n  allowInsideFunction?: boolean,\n): boolean {\n  let path = this;\n  let first = true;\n\n  do {\n    const { type, container } = path;\n\n    // we're in a function so can't be a completion record\n    if (!first && (path.isFunction() || type === \"StaticBlock\")) {\n      return !!allowInsideFunction;\n    }\n\n    first = false;\n\n    // check to see if we're the last item in the container and if we are\n    // we're a completion record!\n    if (Array.isArray(container) && path.key !== container.length - 1) {\n      return false;\n    }\n  } while (\n    (path = path.parentPath) &&\n    !path.isProgram() &&\n    !path.isDoExpression()\n  );\n\n  return true;\n}\n\n/**\n * Check whether or not the current `key` allows either a single statement or block statement\n * so we can explode it if necessary.\n */\n\nexport function isStatementOrBlock(this: NodePath): boolean {\n  if (\n    this.parentPath.isLabeledStatement() ||\n    isBlockStatement(this.container as t.Node)\n  ) {\n    return false;\n  } else {\n    return STATEMENT_OR_BLOCK_KEYS.includes(this.key as string);\n  }\n}\n\n/**\n * Check if the currently assigned path references the `importName` of `moduleSource`.\n */\n\nexport function referencesImport(\n  this: NodePath,\n  moduleSource: string,\n  importName: string,\n): boolean {\n  if (!this.isReferencedIdentifier()) {\n    if (\n      (this.isJSXMemberExpression() &&\n        this.node.property.name === importName) ||\n      ((this.isMemberExpression() || this.isOptionalMemberExpression()) &&\n        (this.node.computed\n          ? isStringLiteral(this.node.property, { value: importName })\n          : (this.node.property as t.Identifier).name === importName))\n    ) {\n      const object = (\n        this as NodePath<t.MemberExpression | t.OptionalMemberExpression>\n      ).get(\"object\");\n      return (\n        object.isReferencedIdentifier() &&\n        object.referencesImport(moduleSource, \"*\")\n      );\n    }\n\n    return false;\n  }\n\n  const binding = this.scope.getBinding((this.node as t.Identifier).name);\n  if (!binding || binding.kind !== \"module\") return false;\n\n  const path = binding.path;\n  const parent = path.parentPath;\n  if (!parent.isImportDeclaration()) return false;\n\n  // check moduleSource\n  if (parent.node.source.value === moduleSource) {\n    if (!importName) return true;\n  } else {\n    return false;\n  }\n\n  if (path.isImportDefaultSpecifier() && importName === \"default\") {\n    return true;\n  }\n\n  if (path.isImportNamespaceSpecifier() && importName === \"*\") {\n    return true;\n  }\n\n  if (\n    path.isImportSpecifier() &&\n    isIdentifier(path.node.imported, { name: importName })\n  ) {\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Get the source code associated with this node.\n */\n\nexport function getSource(this: NodePath): string {\n  const node = this.node;\n  if (node.end) {\n    const code = this.hub.getCode();\n    if (code) return code.slice(node.start, node.end);\n  }\n  return \"\";\n}\n\nexport function willIMaybeExecuteBefore(\n  this: NodePath,\n  target: NodePath,\n): boolean {\n  return this._guessExecutionStatusRelativeTo(target) !== \"after\";\n}\n\nfunction getOuterFunction(path: NodePath) {\n  return path.isProgram()\n    ? path\n    : (\n        path.parentPath.scope.getFunctionParent() ||\n        path.parentPath.scope.getProgramParent()\n      ).path;\n}\n\nfunction isExecutionUncertain(type: t.Node[\"type\"], key: string) {\n  switch (type) {\n    // a && FOO\n    // a || FOO\n    case \"LogicalExpression\":\n      return key === \"right\";\n\n    // a ? FOO : FOO\n    // if (a) FOO; else FOO;\n    case \"ConditionalExpression\":\n    case \"IfStatement\":\n      return key === \"consequent\" || key === \"alternate\";\n\n    // while (a) FOO;\n    case \"WhileStatement\":\n    case \"DoWhileStatement\":\n    case \"ForInStatement\":\n    case \"ForOfStatement\":\n      return key === \"body\";\n\n    // for (a; b; FOO) FOO;\n    case \"ForStatement\":\n      return key === \"body\" || key === \"update\";\n\n    // switch (a) { FOO }\n    case \"SwitchStatement\":\n      return key === \"cases\";\n\n    // try { a } catch FOO finally { b }\n    case \"TryStatement\":\n      return key === \"handler\";\n\n    // var [ x = FOO ]\n    case \"AssignmentPattern\":\n      return key === \"right\";\n\n    // a?.[FOO]\n    case \"OptionalMemberExpression\":\n      return key === \"property\";\n\n    // a?.(FOO)\n    case \"OptionalCallExpression\":\n      return key === \"arguments\";\n\n    default:\n      return false;\n  }\n}\n\nfunction isExecutionUncertainInList(paths: NodePath[], maxIndex: number) {\n  for (let i = 0; i < maxIndex; i++) {\n    const path = paths[i];\n    if (isExecutionUncertain(path.parent.type, path.parentKey)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// TODO(Babel 8)\n// This can be { before: boolean, after: boolean, unknown: boolean }.\n// This allows transforms like the tdz one to treat cases when the status\n// is both before and unknown/after like if it were before.\ntype RelativeExecutionStatus = \"before\" | \"after\" | \"unknown\";\n\n// Used to avoid infinite recursion in cases like\n//   function f() { if (false) f(); }\n//   f();\n// It also works with indirect recursion.\nconst SYMBOL_CHECKING = Symbol();\n\ntype ExecutionStatusCache = Map<\n  t.Node,\n  Map<t.Node, RelativeExecutionStatus | typeof SYMBOL_CHECKING>\n>;\n\n/**\n * Given a `target` check the execution status of it relative to the current path.\n *\n * \"Execution status\" simply refers to where or not we **think** this will execute\n * before or after the input `target` element.\n */\n\nexport function _guessExecutionStatusRelativeTo(\n  this: NodePath,\n  target: NodePath,\n): RelativeExecutionStatus {\n  return _guessExecutionStatusRelativeToCached(this, target, new Map());\n}\n\nfunction _guessExecutionStatusRelativeToCached(\n  base: NodePath,\n  target: NodePath,\n  cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n  // check if the two paths are in different functions, we can't track execution of these\n  const funcParent = {\n    this: getOuterFunction(base),\n    target: getOuterFunction(target),\n  };\n\n  // here we check the `node` equality as sometimes we may have different paths for the\n  // same node due to path thrashing\n  if (funcParent.target.node !== funcParent.this.node) {\n    return _guessExecutionStatusRelativeToDifferentFunctionsCached(\n      base,\n      funcParent.target,\n      cache,\n    );\n  }\n\n  const paths = {\n    target: target.getAncestry(),\n    this: base.getAncestry(),\n  };\n\n  // If this is an ancestor of the target path,\n  // e.g. f(g); where this is f and target is g.\n  if (paths.target.includes(base)) return \"after\";\n  if (paths.this.includes(target)) return \"before\";\n\n  // get ancestor where the branches intersect\n  let commonPath;\n  const commonIndex = { target: 0, this: 0 };\n\n  while (!commonPath && commonIndex.this < paths.this.length) {\n    const path = paths.this[commonIndex.this];\n    commonIndex.target = paths.target.indexOf(path);\n    if (commonIndex.target >= 0) {\n      commonPath = path;\n    } else {\n      commonIndex.this++;\n    }\n  }\n\n  if (!commonPath) {\n    throw new Error(\n      \"Internal Babel error - The two compared nodes\" +\n        \" don't appear to belong to the same program.\",\n    );\n  }\n\n  if (\n    isExecutionUncertainInList(paths.this, commonIndex.this - 1) ||\n    isExecutionUncertainInList(paths.target, commonIndex.target - 1)\n  ) {\n    return \"unknown\";\n  }\n\n  const divergence = {\n    this: paths.this[commonIndex.this - 1],\n    target: paths.target[commonIndex.target - 1],\n  };\n\n  // container list so let's see which one is after the other\n  // e.g. [ THIS, TARGET ]\n  if (\n    divergence.target.listKey &&\n    divergence.this.listKey &&\n    divergence.target.container === divergence.this.container\n  ) {\n    return divergence.target.key > divergence.this.key ? \"before\" : \"after\";\n  }\n\n  // otherwise we're associated by a parent node, check which key comes before the other\n  const keys = VISITOR_KEYS[commonPath.type];\n  const keyPosition = {\n    this: keys.indexOf(divergence.this.parentKey),\n    target: keys.indexOf(divergence.target.parentKey),\n  };\n  return keyPosition.target > keyPosition.this ? \"before\" : \"after\";\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n  base: NodePath,\n  target: NodePath,\n  cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n  if (!target.isFunctionDeclaration()) {\n    if (\n      _guessExecutionStatusRelativeToCached(base, target, cache) === \"before\"\n    ) {\n      return \"before\";\n    }\n    return \"unknown\";\n  } else if (target.parentPath.isExportDeclaration()) {\n    return \"unknown\";\n  }\n\n  // so we're in a completely different function, if this is a function declaration\n  // then we can be a bit smarter and handle cases where the function is either\n  // a. not called at all (part of an export)\n  // b. called directly\n  const binding = target.scope.getBinding(target.node.id.name);\n\n  // no references!\n  if (!binding.references) return \"before\";\n\n  const referencePaths: Array<NodePath> = binding.referencePaths;\n\n  let allStatus;\n\n  // verify that all the calls have the same execution status\n  for (const path of referencePaths) {\n    // if a reference is a child of the function we're checking against then we can\n    // safely ignore it\n    const childOfFunction = !!path.find(path => path.node === target.node);\n    if (childOfFunction) continue;\n\n    if (path.key !== \"callee\" || !path.parentPath.isCallExpression()) {\n      // This function is passed as a reference, so we don't\n      // know when it will be called.\n      return \"unknown\";\n    }\n\n    const status = _guessExecutionStatusRelativeToCached(base, path, cache);\n\n    if (allStatus && allStatus !== status) {\n      return \"unknown\";\n    } else {\n      allStatus = status;\n    }\n  }\n\n  return allStatus;\n}\n\nfunction _guessExecutionStatusRelativeToDifferentFunctionsCached(\n  base: NodePath,\n  target: NodePath,\n  cache: ExecutionStatusCache,\n): RelativeExecutionStatus {\n  let nodeMap = cache.get(base.node);\n  let cached;\n\n  if (!nodeMap) {\n    cache.set(base.node, (nodeMap = new Map()));\n  } else if ((cached = nodeMap.get(target.node))) {\n    if (cached === SYMBOL_CHECKING) {\n      return \"unknown\";\n    }\n    return cached;\n  }\n\n  nodeMap.set(target.node, SYMBOL_CHECKING);\n\n  const result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(\n    base,\n    target,\n    cache,\n  );\n\n  nodeMap.set(target.node, result);\n  return result;\n}\n\n/**\n * Resolve a \"pointer\" `NodePath` to it's absolute path.\n */\nexport function resolve(\n  this: NodePath,\n  dangerous?: boolean,\n  resolved?: NodePath[],\n) {\n  return _resolve.call(this, dangerous, resolved) || this;\n}\n\nexport function _resolve(\n  this: NodePath,\n  dangerous?: boolean,\n  resolved?: NodePath[],\n): NodePath | undefined | null {\n  // detect infinite recursion\n  // todo: possibly have a max length on this just to be safe\n  if (resolved?.includes(this)) return;\n\n  // we store all the paths we've \"resolved\" in this array to prevent infinite recursion\n  resolved = resolved || [];\n  resolved.push(this);\n\n  if (this.isVariableDeclarator()) {\n    if (this.get(\"id\").isIdentifier()) {\n      return this.get(\"init\").resolve(dangerous, resolved);\n    } else {\n      // otherwise it's a request for a pattern and that's a bit more tricky\n    }\n  } else if (this.isReferencedIdentifier()) {\n    const binding = this.scope.getBinding(this.node.name);\n    if (!binding) return;\n\n    // reassigned so we can't really resolve it\n    if (!binding.constant) return;\n\n    // todo - lookup module in dependency graph\n    if (binding.kind === \"module\") return;\n\n    if (binding.path !== this) {\n      const ret = binding.path.resolve(dangerous, resolved);\n      // If the identifier resolves to parent node then we can't really resolve it.\n      if (this.find(parent => parent.node === ret.node)) return;\n      return ret;\n    }\n  } else if (this.isTypeCastExpression()) {\n    // @ ts-ignore todo: babel-types\n    return this.get(\"expression\").resolve(dangerous, resolved);\n  } else if (dangerous && this.isMemberExpression()) {\n    // this is dangerous, as non-direct target assignments will mutate it's state\n    // making this resolution inaccurate\n\n    const targetKey = this.toComputedKey();\n    if (!isLiteral(targetKey)) return;\n\n    // @ts-expect-error todo(flow->ts): NullLiteral\n    const targetName = targetKey.value;\n\n    const target = this.get(\"object\").resolve(dangerous, resolved);\n\n    if (target.isObjectExpression()) {\n      const props = target.get(\"properties\");\n      for (const prop of props as any[]) {\n        if (!prop.isProperty()) continue;\n\n        const key = prop.get(\"key\");\n\n        // { foo: obj }\n        let match =\n          prop.isnt(\"computed\") && key.isIdentifier({ name: targetName });\n\n        // { \"foo\": \"obj\" } or { [\"foo\"]: \"obj\" }\n        match = match || key.isLiteral({ value: targetName });\n\n        if (match) return prop.get(\"value\").resolve(dangerous, resolved);\n      }\n    } else if (target.isArrayExpression() && !isNaN(+targetName)) {\n      const elems = target.get(\"elements\");\n      const elem = elems[targetName];\n      if (elem) return elem.resolve(dangerous, resolved);\n    }\n  }\n}\n\nexport function isConstantExpression(this: NodePath): boolean {\n  if (this.isIdentifier()) {\n    const binding = this.scope.getBinding(this.node.name);\n    if (!binding) return false;\n    return binding.constant;\n  }\n\n  if (this.isLiteral()) {\n    if (this.isRegExpLiteral()) {\n      return false;\n    }\n\n    if (this.isTemplateLiteral()) {\n      return this.get(\"expressions\").every(expression =>\n        expression.isConstantExpression(),\n      );\n    }\n\n    return true;\n  }\n\n  if (this.isUnaryExpression()) {\n    if (this.node.operator !== \"void\") {\n      return false;\n    }\n\n    return this.get(\"argument\").isConstantExpression();\n  }\n\n  if (this.isBinaryExpression()) {\n    const { operator } = this.node;\n    return (\n      operator !== \"in\" &&\n      operator !== \"instanceof\" &&\n      this.get(\"left\").isConstantExpression() &&\n      this.get(\"right\").isConstantExpression()\n    );\n  }\n\n  if (this.isMemberExpression()) {\n    return (\n      !this.node.computed &&\n      this.get(\"object\").isIdentifier({ name: \"Symbol\" }) &&\n      !this.scope.hasBinding(\"Symbol\", { noGlobals: true })\n    );\n  }\n\n  if (this.isCallExpression()) {\n    return (\n      this.node.arguments.length === 1 &&\n      this.get(\"callee\").matchesPattern(\"Symbol.for\") &&\n      !this.scope.hasBinding(\"Symbol\", { noGlobals: true }) &&\n      this.get(\"arguments\")[0].isStringLiteral()\n    );\n  }\n\n  return false;\n}\n\nexport function isInStrictMode(this: NodePath) {\n  const start = this.isProgram() ? this : this.parentPath;\n\n  const strictParent = start.find(path => {\n    if (path.isProgram({ sourceType: \"module\" })) return true;\n\n    if (path.isClass()) return true;\n\n    if (\n      path.isArrowFunctionExpression() &&\n      !path.get(\"body\").isBlockStatement()\n    ) {\n      return false;\n    }\n\n    let body: t.BlockStatement | t.Program;\n    if (path.isFunction()) {\n      body = path.node.body as t.BlockStatement;\n    } else if (path.isProgram()) {\n      // @ts-expect-error TODO: TS thinks that `path` here cannot be\n      // Program due to the `isProgram()` check at the beginning of\n      // the function\n      body = path.node;\n    } else {\n      return false;\n    }\n\n    for (const directive of body.directives) {\n      if (directive.value.value === \"use strict\") {\n        return true;\n      }\n    }\n  });\n\n  return !!strictParent;\n}\n","// This file contains methods responsible for dealing with/retrieving children or siblings.\n\nimport type TraversalContext from \"../context.ts\";\nimport NodePath from \"./index.ts\";\nimport {\n  getAssignmentIdentifiers as _getAssignmentIdentifiers,\n  getBindingIdentifiers as _getBindingIdentifiers,\n  getOuterBindingIdentifiers as _getOuterBindingIdentifiers,\n  numericLiteral,\n  unaryExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\n\nconst NORMAL_COMPLETION = 0;\nconst BREAK_COMPLETION = 1;\n\ntype Completion = {\n  path: NodePath;\n  type: 0 | 1;\n};\n\ntype CompletionContext = {\n  // whether the current context allows `break` statement. When it allows, we have\n  // to search all the statements for potential `break`\n  canHaveBreak: boolean;\n  // whether the statement is an immediate descendant of a switch case clause\n  inCaseClause: boolean;\n  // whether the `break` statement record should be populated to upper level\n  // when a `break` statement is an immediate descendant of a block statement, e.g.\n  // `{ break }`, it can influence the control flow in the upper levels.\n  shouldPopulateBreak: boolean;\n};\n\nfunction NormalCompletion(path: NodePath): Completion {\n  return { type: NORMAL_COMPLETION, path };\n}\n\nfunction BreakCompletion(path: NodePath): Completion {\n  return { type: BREAK_COMPLETION, path };\n}\n\nexport function getOpposite(this: NodePath): NodePath | null {\n  if (this.key === \"left\") {\n    return this.getSibling(\"right\");\n  } else if (this.key === \"right\") {\n    return this.getSibling(\"left\");\n  }\n  return null;\n}\n\nfunction addCompletionRecords(\n  path: NodePath | null | undefined,\n  records: Completion[],\n  context: CompletionContext,\n): Completion[] {\n  if (path) {\n    records.push(..._getCompletionRecords(path, context));\n  }\n  return records;\n}\n\nfunction completionRecordForSwitch(\n  cases: NodePath<t.SwitchCase>[],\n  records: Completion[],\n  context: CompletionContext,\n): Completion[] {\n  // https://tc39.es/ecma262/#sec-runtime-semantics-caseblockevaluation\n  let lastNormalCompletions: Completion[] = [];\n  for (let i = 0; i < cases.length; i++) {\n    const casePath = cases[i];\n    const caseCompletions = _getCompletionRecords(casePath, context);\n    const normalCompletions = [];\n    const breakCompletions = [];\n    for (const c of caseCompletions) {\n      if (c.type === NORMAL_COMPLETION) {\n        normalCompletions.push(c);\n      }\n      if (c.type === BREAK_COMPLETION) {\n        breakCompletions.push(c);\n      }\n    }\n    if (normalCompletions.length) {\n      lastNormalCompletions = normalCompletions;\n    }\n    records.push(...breakCompletions);\n  }\n  records.push(...lastNormalCompletions);\n  return records;\n}\n\nfunction normalCompletionToBreak(completions: Completion[]) {\n  completions.forEach(c => {\n    c.type = BREAK_COMPLETION;\n  });\n}\n\n/**\n * Determine how we should handle the break statement for break completions\n *\n * @param {Completion[]} completions\n * @param {boolean} reachable Whether the break statement is reachable after\n   we mark the normal completions _before_ the given break completions as the final\n   completions. For example,\n   `{ 0 }; break;` is transformed to `{ return 0 }; break;`, the `break` here is unreachable\n   and thus can be removed without consequences. We may in the future reserve them instead since\n   we do not consistently remove unreachable statements _after_ break\n   `{ var x = 0 }; break;` is transformed to `{ var x = 0 }; return void 0;`, the `break` is reachable\n   because we can not wrap variable declaration under a return statement\n */\nfunction replaceBreakStatementInBreakCompletion(\n  completions: Completion[],\n  reachable: boolean,\n) {\n  completions.forEach(c => {\n    if (c.path.isBreakStatement({ label: null })) {\n      if (reachable) {\n        c.path.replaceWith(unaryExpression(\"void\", numericLiteral(0)));\n      } else {\n        c.path.remove();\n      }\n    }\n  });\n}\n\nfunction getStatementListCompletion(\n  paths: NodePath[],\n  context: CompletionContext,\n): Completion[] {\n  const completions = [];\n  if (context.canHaveBreak) {\n    let lastNormalCompletions = [];\n    for (let i = 0; i < paths.length; i++) {\n      const path = paths[i];\n      const newContext = { ...context, inCaseClause: false };\n      if (\n        path.isBlockStatement() &&\n        (context.inCaseClause || // case test: { break }\n          context.shouldPopulateBreak) // case test: { { break } }\n      ) {\n        newContext.shouldPopulateBreak = true;\n      } else {\n        newContext.shouldPopulateBreak = false;\n      }\n      const statementCompletions = _getCompletionRecords(path, newContext);\n      if (\n        statementCompletions.length > 0 &&\n        // we can stop search `paths` when we have seen a `path` that is\n        // effectively a `break` statement. Examples are\n        // - `break`\n        // - `if (true) { 1; break } else { 2; break }`\n        // - `{ break }```\n        // In other words, the paths after this `path` are unreachable\n        statementCompletions.every(c => c.type === BREAK_COMPLETION)\n      ) {\n        if (\n          lastNormalCompletions.length > 0 &&\n          statementCompletions.every(c =>\n            c.path.isBreakStatement({ label: null }),\n          )\n        ) {\n          // when a break completion has a path as BreakStatement, it must be `{ break }`\n          // whose completion value we can not determine, otherwise it would have been\n          // replaced by `replaceBreakStatementInBreakCompletion`\n          // When we have seen normal completions from the last statement\n          // it is safe to stop populating break and mark normal completions as break\n          normalCompletionToBreak(lastNormalCompletions);\n          completions.push(...lastNormalCompletions);\n          // Declarations have empty completion record, however they can not be nested\n          // directly in return statement, i.e. `return (var a = 1)` is invalid.\n          if (lastNormalCompletions.some(c => c.path.isDeclaration())) {\n            completions.push(...statementCompletions);\n            replaceBreakStatementInBreakCompletion(\n              statementCompletions,\n              /* reachable */ true,\n            );\n          }\n          replaceBreakStatementInBreakCompletion(\n            statementCompletions,\n            /* reachable */ false,\n          );\n        } else {\n          completions.push(...statementCompletions);\n          if (!context.shouldPopulateBreak) {\n            replaceBreakStatementInBreakCompletion(\n              statementCompletions,\n              /* reachable */ true,\n            );\n          }\n        }\n        break;\n      }\n      if (i === paths.length - 1) {\n        completions.push(...statementCompletions);\n      } else {\n        lastNormalCompletions = [];\n        for (let i = 0; i < statementCompletions.length; i++) {\n          const c = statementCompletions[i];\n          if (c.type === BREAK_COMPLETION) {\n            completions.push(c);\n          }\n          if (c.type === NORMAL_COMPLETION) {\n            lastNormalCompletions.push(c);\n          }\n        }\n      }\n    }\n  } else if (paths.length) {\n    // When we are in a context where `break` must not exist, we can skip linear\n    // search on statement lists and assume that the last\n    // non-variable-declaration statement determines the completion.\n    for (let i = paths.length - 1; i >= 0; i--) {\n      const pathCompletions = _getCompletionRecords(paths[i], context);\n      if (\n        pathCompletions.length > 1 ||\n        (pathCompletions.length === 1 &&\n          !pathCompletions[0].path.isVariableDeclaration())\n      ) {\n        completions.push(...pathCompletions);\n        break;\n      }\n    }\n  }\n  return completions;\n}\n\nfunction _getCompletionRecords(\n  path: NodePath,\n  context: CompletionContext,\n): Completion[] {\n  let records: Completion[] = [];\n  if (path.isIfStatement()) {\n    records = addCompletionRecords(path.get(\"consequent\"), records, context);\n    records = addCompletionRecords(path.get(\"alternate\"), records, context);\n  } else if (\n    path.isDoExpression() ||\n    path.isFor() ||\n    path.isWhile() ||\n    path.isLabeledStatement()\n  ) {\n    return addCompletionRecords(path.get(\"body\"), records, context);\n  } else if (path.isProgram() || path.isBlockStatement()) {\n    return getStatementListCompletion(path.get(\"body\"), context);\n  } else if (path.isFunction()) {\n    return _getCompletionRecords(path.get(\"body\"), context);\n  } else if (path.isTryStatement()) {\n    records = addCompletionRecords(path.get(\"block\"), records, context);\n    records = addCompletionRecords(path.get(\"handler\"), records, context);\n  } else if (path.isCatchClause()) {\n    return addCompletionRecords(path.get(\"body\"), records, context);\n  } else if (path.isSwitchStatement()) {\n    return completionRecordForSwitch(path.get(\"cases\"), records, context);\n  } else if (path.isSwitchCase()) {\n    return getStatementListCompletion(path.get(\"consequent\"), {\n      canHaveBreak: true,\n      shouldPopulateBreak: false,\n      inCaseClause: true,\n    });\n  } else if (path.isBreakStatement()) {\n    records.push(BreakCompletion(path));\n  } else {\n    records.push(NormalCompletion(path));\n  }\n\n  return records;\n}\n\n/**\n * Retrieve the completion records of a given path.\n * Note: to ensure proper support on `break` statement, this method\n * will manipulate the AST around the break statement. Do not call the method\n * twice for the same path.\n *\n * @export\n * @param {NodePath} this\n * @returns {NodePath[]} Completion records\n */\nexport function getCompletionRecords(this: NodePath): NodePath[] {\n  const records = _getCompletionRecords(this, {\n    canHaveBreak: false,\n    shouldPopulateBreak: false,\n    inCaseClause: false,\n  });\n  return records.map(r => r.path);\n}\n\nexport function getSibling(this: NodePath, key: string | number): NodePath {\n  return NodePath.get({\n    parentPath: this.parentPath,\n    parent: this.parent,\n    container: this.container,\n    listKey: this.listKey,\n    key: key,\n  }).setContext(this.context);\n}\n\nexport function getPrevSibling(this: NodePath): NodePath {\n  // @ts-expect-error todo(flow->ts) this.key could be a string\n  return this.getSibling(this.key - 1);\n}\n\nexport function getNextSibling(this: NodePath): NodePath {\n  // @ts-expect-error todo(flow->ts) this.key could be a string\n  return this.getSibling(this.key + 1);\n}\n\nexport function getAllNextSiblings(this: NodePath): NodePath[] {\n  // @ts-expect-error todo(flow->ts) this.key could be a string\n  let _key: number = this.key;\n  let sibling = this.getSibling(++_key);\n  const siblings = [];\n  while (sibling.node) {\n    siblings.push(sibling);\n    sibling = this.getSibling(++_key);\n  }\n  return siblings;\n}\n\nexport function getAllPrevSiblings(this: NodePath): NodePath[] {\n  // @ts-expect-error todo(flow->ts) this.key could be a string\n  let _key: number = this.key;\n  let sibling = this.getSibling(--_key);\n  const siblings = [];\n  while (sibling.node) {\n    siblings.push(sibling);\n    sibling = this.getSibling(--_key);\n  }\n  return siblings;\n}\n\n// convert \"1\" to 1 (string index to number index)\ntype MaybeToIndex<T extends string> = T extends `${bigint}` ? number : T;\n\ntype Pattern<Obj extends string, Prop extends string> = `${Obj}.${Prop}`;\n\n// split \"body.body.1\" to [\"body\", \"body\", 1]\ntype Split<P extends string> =\n  P extends Pattern<infer O, infer U>\n    ? [MaybeToIndex<O>, ...Split<U>]\n    : [MaybeToIndex<P>];\n\n// traverse the Node with tuple path [\"body\", \"body\", 1]\n// Path should be created with Split\ntype Trav<\n  Node extends t.Node | t.Node[],\n  Path extends unknown[],\n> = Path extends [infer K, ...infer R]\n  ? K extends keyof Node\n    ? Node[K] extends t.Node | t.Node[]\n      ? R extends []\n        ? Node[K]\n        : Trav<Node[K], R>\n      : never\n    : never\n  : never;\n\ntype ToNodePath<T> =\n  T extends Array<t.Node | null | undefined>\n    ? Array<NodePath<T[number]>>\n    : T extends t.Node | null | undefined\n      ? NodePath<T>\n      : never;\n\nfunction get<T extends NodePath, K extends keyof T[\"node\"]>(\n  this: T,\n  key: K,\n  context?: boolean | TraversalContext,\n): T extends any\n  ? T[\"node\"][K] extends Array<t.Node | null | undefined>\n    ? Array<NodePath<T[\"node\"][K][number]>>\n    : T[\"node\"][K] extends t.Node | null | undefined\n      ? NodePath<T[\"node\"][K]>\n      : never\n  : never;\n\nfunction get<T extends NodePath, K extends string>(\n  this: T,\n  key: K,\n  context?: boolean | TraversalContext,\n): T extends any ? ToNodePath<Trav<T[\"node\"], Split<K>>> : never;\n\nfunction get(\n  this: NodePath,\n  key: string,\n  context?: true | TraversalContext,\n): NodePath | NodePath[];\n\nfunction get(\n  this: NodePath,\n  key: string,\n  context: true | TraversalContext = true,\n): NodePath | NodePath[] {\n  if (context === true) context = this.context;\n  const parts = key.split(\".\");\n  if (parts.length === 1) {\n    // \"foo\"\n    // @ts-expect-error key may not index T\n    return _getKey.call(this, key, context);\n  } else {\n    // \"foo.bar\"\n    return _getPattern.call(this, parts, context);\n  }\n}\n\nexport { get };\n\nexport function _getKey<T extends t.Node>(\n  this: NodePath<T>,\n  key: keyof T & string,\n  context?: TraversalContext,\n): NodePath | NodePath[] {\n  const node = this.node as T;\n  const container = node[key];\n\n  if (Array.isArray(container)) {\n    // requested a container so give them all the paths\n    return container.map((_, i) => {\n      return NodePath.get({\n        listKey: key,\n        parentPath: this,\n        parent: node,\n        container: container,\n        key: i,\n      }).setContext(context);\n    });\n  } else {\n    return NodePath.get({\n      parentPath: this,\n      parent: node,\n      container: node,\n      key: key,\n    }).setContext(context);\n  }\n}\n\nexport function _getPattern(\n  this: NodePath,\n  parts: string[],\n  context?: TraversalContext,\n): NodePath | NodePath[] {\n  let path: NodePath | NodePath[] = this;\n  for (const part of parts) {\n    if (part === \".\") {\n      // @ts-expect-error todo(flow-ts): Can path be an array here?\n      path = path.parentPath;\n    } else {\n      if (Array.isArray(path)) {\n        // @ts-expect-error part may not index path\n        path = path[part];\n      } else {\n        path = path.get(part, context);\n      }\n    }\n  }\n  return path;\n}\n\nexport function getAssignmentIdentifiers(this: NodePath) {\n  return _getAssignmentIdentifiers(this.node);\n}\n\nfunction getBindingIdentifiers(\n  duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getBindingIdentifiers(\n  duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getBindingIdentifiers(\n  duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getBindingIdentifiers(\n  this: NodePath,\n  duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n  return _getBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getBindingIdentifiers };\n\nfunction getOuterBindingIdentifiers(\n  duplicates: true,\n): Record<string, t.Identifier[]>;\nfunction getOuterBindingIdentifiers(\n  duplicates?: false,\n): Record<string, t.Identifier>;\nfunction getOuterBindingIdentifiers(\n  duplicates: boolean,\n): Record<string, t.Identifier[] | t.Identifier>;\n\nfunction getOuterBindingIdentifiers(\n  this: NodePath,\n  duplicates?: boolean,\n): Record<string, t.Identifier[] | t.Identifier> {\n  return _getOuterBindingIdentifiers(this.node, duplicates);\n}\n\nexport { getOuterBindingIdentifiers };\n\nfunction getBindingIdentifierPaths(\n  duplicates: true,\n  outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getBindingIdentifierPaths(\n  duplicates: false,\n  outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier>>;\nfunction getBindingIdentifierPaths(\n  duplicates?: boolean,\n  outerOnly?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\n// original source - https://github.com/babel/babel/blob/main/packages/babel-types/src/retrievers/getBindingIdentifiers.js\n// path.getBindingIdentifiers returns nodes where the following re-implementation returns paths\nfunction getBindingIdentifierPaths(\n  this: NodePath,\n  duplicates: boolean = false,\n  outerOnly: boolean = false,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]> {\n  const path = this;\n  const search = [path];\n  const ids = Object.create(null);\n\n  while (search.length) {\n    const id = search.shift();\n    if (!id) continue;\n    if (!id.node) continue;\n\n    const keys = _getBindingIdentifiers.keys[id.node.type];\n\n    if (id.isIdentifier()) {\n      if (duplicates) {\n        const _ids = (ids[id.node.name] = ids[id.node.name] || []);\n        _ids.push(id);\n      } else {\n        ids[id.node.name] = id;\n      }\n      continue;\n    }\n\n    if (id.isExportDeclaration()) {\n      const declaration = id.get(\"declaration\");\n      if (declaration.isDeclaration()) {\n        search.push(declaration);\n      }\n      continue;\n    }\n\n    if (outerOnly) {\n      if (id.isFunctionDeclaration()) {\n        search.push(id.get(\"id\"));\n        continue;\n      }\n      if (id.isFunctionExpression()) {\n        continue;\n      }\n    }\n\n    if (keys) {\n      for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        const child = id.get(key);\n        if (Array.isArray(child)) {\n          search.push(...child);\n        } else if (child.node) {\n          search.push(child);\n        }\n      }\n    }\n  }\n\n  return ids;\n}\n\nexport { getBindingIdentifierPaths };\n\nfunction getOuterBindingIdentifierPaths(\n  duplicates: true,\n): Record<string, NodePath<t.Identifier>[]>;\nfunction getOuterBindingIdentifierPaths(\n  duplicates?: false,\n): Record<string, NodePath<t.Identifier>>;\nfunction getOuterBindingIdentifierPaths(\n  duplicates?: boolean,\n): Record<string, NodePath<t.Identifier> | NodePath<t.Identifier>[]>;\n\nfunction getOuterBindingIdentifierPaths(\n  this: NodePath,\n  duplicates: boolean = false,\n) {\n  return this.getBindingIdentifierPaths(duplicates, true);\n}\n\nexport { getOuterBindingIdentifierPaths };\n","// This file contains methods responsible for dealing with comments.\nimport type * as t from \"@babel/types\";\nimport type NodePath from \"./index.ts\";\nimport {\n  addComment as _addComment,\n  addComments as _addComments,\n} from \"@babel/types\";\n\n/**\n * Share comments amongst siblings.\n */\n\nexport function shareCommentsWithSiblings(this: NodePath) {\n  // NOTE: this assumes numbered keys\n  if (typeof this.key === \"string\") return;\n\n  const node = this.node;\n  if (!node) return;\n\n  const trailing = node.trailingComments;\n  const leading = node.leadingComments;\n  if (!trailing && !leading) return;\n\n  const prev = this.getSibling(this.key - 1);\n  const next = this.getSibling(this.key + 1);\n  const hasPrev = Boolean(prev.node);\n  const hasNext = Boolean(next.node);\n\n  if (hasPrev) {\n    if (leading) {\n      prev.addComments(\n        \"trailing\",\n        removeIfExisting(leading, prev.node.trailingComments),\n      );\n    }\n    if (trailing && !hasNext) prev.addComments(\"trailing\", trailing);\n  }\n  if (hasNext) {\n    if (trailing) {\n      next.addComments(\n        \"leading\",\n        removeIfExisting(trailing, next.node.leadingComments),\n      );\n    }\n    if (leading && !hasPrev) next.addComments(\"leading\", leading);\n  }\n}\n\nfunction removeIfExisting<T>(list: T[], toRemove?: T[]): T[] {\n  if (!toRemove?.length) return list;\n  const set = new Set(toRemove);\n  return list.filter(el => {\n    return !set.has(el);\n  });\n}\n\nexport function addComment(\n  this: NodePath,\n  type: t.CommentTypeShorthand,\n  content: string,\n  line?: boolean,\n) {\n  _addComment(this.node, type, content, line);\n}\n\n/**\n * Give node `comments` of the specified `type`.\n */\n\nexport function addComments(\n  this: NodePath,\n  type: t.CommentTypeShorthand,\n  comments: t.Comment[],\n) {\n  _addComments(this.node, type, comments);\n}\n","import type { HubInterface } from \"../hub.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { ExplodedTraverseOptions } from \"../index.ts\";\nimport * as virtualTypes from \"./lib/virtual-types.ts\";\nimport buildDebug from \"debug\";\nimport traverse from \"../index.ts\";\nimport type { Visitor } from \"../types.ts\";\nimport Scope from \"../scope/index.ts\";\nimport { validate } from \"@babel/types\";\nimport * as t from \"@babel/types\";\nimport * as cache from \"../cache.ts\";\nimport generator from \"@babel/generator\";\n\n// NodePath is split across many files.\nimport * as NodePath_ancestry from \"./ancestry.ts\";\nimport * as NodePath_inference from \"./inference/index.ts\";\nimport * as NodePath_replacement from \"./replacement.ts\";\nimport * as NodePath_evaluation from \"./evaluation.ts\";\nimport * as NodePath_conversion from \"./conversion.ts\";\nimport * as NodePath_introspection from \"./introspection.ts\";\nimport * as NodePath_context from \"./context.ts\";\nimport * as NodePath_removal from \"./removal.ts\";\nimport * as NodePath_modification from \"./modification.ts\";\nimport * as NodePath_family from \"./family.ts\";\nimport * as NodePath_comments from \"./comments.ts\";\nimport * as NodePath_virtual_types_validator from \"./lib/virtual-types-validator.ts\";\nimport type { NodePathAssertions } from \"./generated/asserts.ts\";\nimport type { NodePathValidators } from \"./generated/validators.ts\";\nimport { setup } from \"./context.ts\";\n\nconst debug = buildDebug(\"babel\");\n\nexport const REMOVED = 1 << 0;\nexport const SHOULD_STOP = 1 << 1;\nexport const SHOULD_SKIP = 1 << 2;\n\ndeclare const bit: import(\"../../../../scripts/babel-plugin-bit-decorator/types.d.ts\").BitDecorator<any>;\n\nconst NodePath_Final = class NodePath {\n  constructor(hub: HubInterface, parent: t.Node | null) {\n    this.parent = parent;\n    this.hub = hub;\n    this.data = null;\n\n    this.context = null;\n    this.scope = null;\n  }\n\n  declare parent: t.Node;\n  declare hub: HubInterface;\n  declare data: Record<string | symbol, unknown>;\n  // TraversalContext is configured by setContext\n  declare context: TraversalContext;\n  declare scope: Scope;\n\n  contexts: Array<TraversalContext> = [];\n  state: any = null;\n  opts: ExplodedTraverseOptions | null = null;\n\n  @bit.storage _traverseFlags: number;\n  @bit(REMOVED) accessor removed = false;\n  @bit(SHOULD_STOP) accessor shouldStop = false;\n  @bit(SHOULD_SKIP) accessor shouldSkip = false;\n\n  skipKeys: Record<string, boolean> | null = null;\n  parentPath: NodePath_Final | null = null;\n  container: t.Node | Array<t.Node> | null = null;\n  listKey: string | null = null;\n  key: string | number | null = null;\n  node: t.Node | null = null;\n  type: t.Node[\"type\"] | null = null;\n\n  static get({\n    hub,\n    parentPath,\n    parent,\n    container,\n    listKey,\n    key,\n  }: {\n    hub?: HubInterface;\n    parentPath: NodePath_Final | null;\n    parent: t.Node;\n    container: t.Node | t.Node[];\n    listKey?: string;\n    key: string | number;\n  }): NodePath_Final {\n    if (!hub && parentPath) {\n      hub = parentPath.hub;\n    }\n\n    if (!parent) {\n      throw new Error(\"To get a node path the parent needs to exist\");\n    }\n\n    const targetNode =\n      // @ts-expect-error key must present in container\n      container[key];\n\n    const paths = cache.getOrCreateCachedPaths(hub, parent);\n\n    let path = paths.get(targetNode);\n    if (!path) {\n      path = new NodePath(hub, parent) as NodePath_Final;\n      if (targetNode) paths.set(targetNode, path);\n    }\n\n    setup.call(path, parentPath, container, listKey, key);\n\n    return path;\n  }\n\n  getScope(this: NodePath_Final, scope: Scope): Scope {\n    return this.isScope() ? new Scope(this) : scope;\n  }\n\n  setData(key: string | symbol, val: any): any {\n    if (this.data == null) {\n      this.data = Object.create(null);\n    }\n    return (this.data[key] = val);\n  }\n\n  getData(key: string | symbol, def?: any): any {\n    if (this.data == null) {\n      this.data = Object.create(null);\n    }\n    let val = this.data[key];\n    if (val === undefined && def !== undefined) val = this.data[key] = def;\n    return val;\n  }\n\n  hasNode(): boolean {\n    return this.node != null;\n  }\n\n  buildCodeFrameError(\n    msg: string,\n    Error: new () => Error = SyntaxError,\n  ): Error {\n    return this.hub.buildError(this.node, msg, Error);\n  }\n\n  traverse<T>(this: NodePath_Final, visitor: Visitor<T>, state: T): void;\n  traverse(this: NodePath_Final, visitor: Visitor): void;\n  traverse(this: NodePath_Final, visitor: any, state?: any) {\n    traverse(this.node, visitor, this.scope, state, this);\n  }\n\n  set(key: string, node: any) {\n    validate(this.node, key, node);\n    // @ts-expect-error key must present in this.node\n    this.node[key] = node;\n  }\n\n  getPathLocation(this: NodePath_Final): string {\n    const parts = [];\n    let path: NodePath_Final = this;\n    do {\n      let key = path.key;\n      if (path.inList) key = `${path.listKey}[${key}]`;\n      parts.unshift(key);\n    } while ((path = path.parentPath));\n    return parts.join(\".\");\n  }\n\n  debug(this: NodePath_Final, message: string) {\n    if (!debug.enabled) return;\n    debug(`${this.getPathLocation()} ${this.type}: ${message}`);\n  }\n\n  toString() {\n    return generator(this.node).code;\n  }\n\n  get inList() {\n    return !!this.listKey;\n  }\n\n  set inList(inList) {\n    if (!inList) {\n      this.listKey = null;\n    }\n    // ignore inList = true as it should depend on `listKey`\n  }\n\n  get parentKey(): string {\n    return (this.listKey || this.key) as string;\n  }\n};\n\nconst methods = {\n  // NodePath_ancestry\n  findParent: NodePath_ancestry.findParent,\n  find: NodePath_ancestry.find,\n  getFunctionParent: NodePath_ancestry.getFunctionParent,\n  getStatementParent: NodePath_ancestry.getStatementParent,\n  getEarliestCommonAncestorFrom:\n    NodePath_ancestry.getEarliestCommonAncestorFrom,\n  getDeepestCommonAncestorFrom: NodePath_ancestry.getDeepestCommonAncestorFrom,\n  getAncestry: NodePath_ancestry.getAncestry,\n  isAncestor: NodePath_ancestry.isAncestor,\n  isDescendant: NodePath_ancestry.isDescendant,\n  inType: NodePath_ancestry.inType,\n\n  // NodePath_inference\n  getTypeAnnotation: NodePath_inference.getTypeAnnotation,\n  isBaseType: NodePath_inference.isBaseType,\n  couldBeBaseType: NodePath_inference.couldBeBaseType,\n  baseTypeStrictlyMatches: NodePath_inference.baseTypeStrictlyMatches,\n  isGenericType: NodePath_inference.isGenericType,\n\n  // NodePath_replacement\n  replaceWithMultiple: NodePath_replacement.replaceWithMultiple,\n  replaceWithSourceString: NodePath_replacement.replaceWithSourceString,\n  replaceWith: NodePath_replacement.replaceWith,\n  replaceExpressionWithStatements:\n    NodePath_replacement.replaceExpressionWithStatements,\n  replaceInline: NodePath_replacement.replaceInline,\n\n  // NodePath_evaluation\n  evaluateTruthy: NodePath_evaluation.evaluateTruthy,\n  evaluate: NodePath_evaluation.evaluate,\n\n  // NodePath_conversion\n  toComputedKey: NodePath_conversion.toComputedKey,\n  ensureBlock: NodePath_conversion.ensureBlock,\n  unwrapFunctionEnvironment: NodePath_conversion.unwrapFunctionEnvironment,\n  arrowFunctionToExpression: NodePath_conversion.arrowFunctionToExpression,\n  splitExportDeclaration: NodePath_conversion.splitExportDeclaration,\n  ensureFunctionName: NodePath_conversion.ensureFunctionName,\n\n  // NodePath_introspection\n  matchesPattern: NodePath_introspection.matchesPattern,\n  isStatic: NodePath_introspection.isStatic,\n  isNodeType: NodePath_introspection.isNodeType,\n  canHaveVariableDeclarationOrExpression:\n    NodePath_introspection.canHaveVariableDeclarationOrExpression,\n  canSwapBetweenExpressionAndStatement:\n    NodePath_introspection.canSwapBetweenExpressionAndStatement,\n  isCompletionRecord: NodePath_introspection.isCompletionRecord,\n  isStatementOrBlock: NodePath_introspection.isStatementOrBlock,\n  referencesImport: NodePath_introspection.referencesImport,\n  getSource: NodePath_introspection.getSource,\n  willIMaybeExecuteBefore: NodePath_introspection.willIMaybeExecuteBefore,\n  _guessExecutionStatusRelativeTo:\n    NodePath_introspection._guessExecutionStatusRelativeTo,\n  resolve: NodePath_introspection.resolve,\n  isConstantExpression: NodePath_introspection.isConstantExpression,\n  isInStrictMode: NodePath_introspection.isInStrictMode,\n\n  // NodePath_context\n  isDenylisted: NodePath_context.isDenylisted,\n  visit: NodePath_context.visit,\n  skip: NodePath_context.skip,\n  skipKey: NodePath_context.skipKey,\n  stop: NodePath_context.stop,\n  setContext: NodePath_context.setContext,\n  requeue: NodePath_context.requeue,\n  requeueComputedKeyAndDecorators:\n    NodePath_context.requeueComputedKeyAndDecorators,\n\n  // NodePath_removal\n  remove: NodePath_removal.remove,\n\n  // NodePath_modification\n  insertBefore: NodePath_modification.insertBefore,\n  insertAfter: NodePath_modification.insertAfter,\n  unshiftContainer: NodePath_modification.unshiftContainer,\n  pushContainer: NodePath_modification.pushContainer,\n\n  // NodePath_family\n  getOpposite: NodePath_family.getOpposite,\n  getCompletionRecords: NodePath_family.getCompletionRecords,\n  getSibling: NodePath_family.getSibling,\n  getPrevSibling: NodePath_family.getPrevSibling,\n  getNextSibling: NodePath_family.getNextSibling,\n  getAllNextSiblings: NodePath_family.getAllNextSiblings,\n  getAllPrevSiblings: NodePath_family.getAllPrevSiblings,\n  get: NodePath_family.get,\n  getAssignmentIdentifiers: NodePath_family.getAssignmentIdentifiers,\n  getBindingIdentifiers: NodePath_family.getBindingIdentifiers,\n  getOuterBindingIdentifiers: NodePath_family.getOuterBindingIdentifiers,\n  getBindingIdentifierPaths: NodePath_family.getBindingIdentifierPaths,\n  getOuterBindingIdentifierPaths:\n    NodePath_family.getOuterBindingIdentifierPaths,\n\n  // NodePath_comments\n  shareCommentsWithSiblings: NodePath_comments.shareCommentsWithSiblings,\n  addComment: NodePath_comments.addComment,\n  addComments: NodePath_comments.addComments,\n};\n\nObject.assign(NodePath_Final.prototype, methods);\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // String(x) is workaround for rollup\n\n  // @ts-expect-error babel 7 only\n  NodePath_Final.prototype.arrowFunctionToShadowed =\n    // @ts-expect-error babel 7 only\n    NodePath_conversion[String(\"arrowFunctionToShadowed\")];\n\n  Object.assign(NodePath_Final.prototype, {\n    // @ts-expect-error Babel 7 only\n    has: NodePath_introspection[String(\"has\")],\n    // @ts-expect-error Babel 7 only\n    is: NodePath_introspection[String(\"is\")],\n    // @ts-expect-error Babel 7 only\n    isnt: NodePath_introspection[String(\"isnt\")],\n    // @ts-expect-error Babel 7 only\n    equals: NodePath_introspection[String(\"equals\")],\n    // @ts-expect-error Babel 7 only\n    hoist: NodePath_modification[String(\"hoist\")],\n    updateSiblingKeys: NodePath_modification.updateSiblingKeys,\n    call: NodePath_context.call,\n    // @ts-expect-error Babel 7 only\n    isBlacklisted: NodePath_context[String(\"isBlacklisted\")],\n    setScope: NodePath_context.setScope,\n    resync: NodePath_context.resync,\n    popContext: NodePath_context.popContext,\n    pushContext: NodePath_context.pushContext,\n    setup: NodePath_context.setup,\n    setKey: NodePath_context.setKey,\n  });\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n  // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n  NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n    NodePath_introspection._guessExecutionStatusRelativeTo;\n\n  // @ts-expect-error The original _guessExecutionStatusRelativeToDifferentFunctions only worked for paths in\n  // different functions, but _guessExecutionStatusRelativeTo works as a replacement in those cases.\n  NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions =\n    NodePath_introspection._guessExecutionStatusRelativeTo;\n\n  Object.assign(NodePath_Final.prototype, {\n    // NodePath_inference\n    _getTypeAnnotation: NodePath_inference._getTypeAnnotation,\n\n    // NodePath_replacement\n    _replaceWith: NodePath_replacement._replaceWith,\n\n    // NodePath_introspection\n    _resolve: NodePath_introspection._resolve,\n\n    // NodePath_context\n    _call: NodePath_context._call,\n    _resyncParent: NodePath_context._resyncParent,\n    _resyncKey: NodePath_context._resyncKey,\n    _resyncList: NodePath_context._resyncList,\n    _resyncRemoved: NodePath_context._resyncRemoved,\n    _getQueueContexts: NodePath_context._getQueueContexts,\n\n    // NodePath_removal\n    _removeFromScope: NodePath_removal._removeFromScope,\n    _callRemovalHooks: NodePath_removal._callRemovalHooks,\n    _remove: NodePath_removal._remove,\n    _markRemoved: NodePath_removal._markRemoved,\n    _assertUnremoved: NodePath_removal._assertUnremoved,\n\n    // NodePath_modification\n    _containerInsert: NodePath_modification._containerInsert,\n    _containerInsertBefore: NodePath_modification._containerInsertBefore,\n    _containerInsertAfter: NodePath_modification._containerInsertAfter,\n    _verifyNodeList: NodePath_modification._verifyNodeList,\n\n    // NodePath_family\n    _getKey: NodePath_family._getKey,\n    _getPattern: NodePath_family._getPattern,\n  });\n}\n\n// we can not use `import { TYPES } from \"@babel/types\"` here\n// because the transformNamedBabelTypesImportToDestructuring plugin in babel.config.js\n// does not offer live bindings for `TYPES`\n// we can change to `import { TYPES }` when we are publishing ES modules only\nfor (const type of t.TYPES) {\n  const typeKey = `is${type}`;\n  // @ts-expect-error typeKey must present in t\n  const fn = t[typeKey];\n  // @ts-expect-error augmenting NodePath prototype\n  NodePath_Final.prototype[typeKey] = function (opts: any) {\n    return fn(this.node, opts);\n  };\n\n  // @ts-expect-error augmenting NodePath prototype\n  NodePath_Final.prototype[`assert${type}`] = function (opts: any) {\n    if (!fn(this.node, opts)) {\n      throw new TypeError(`Expected node path of type ${type}`);\n    }\n  };\n}\n\n// Register virtual types validators after base types validators\nObject.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);\n\nfor (const type of Object.keys(virtualTypes) as (keyof typeof virtualTypes)[]) {\n  if (type[0] === \"_\") continue;\n  if (!t.TYPES.includes(type)) t.TYPES.push(type);\n}\n\ninterface NodePathOverwrites {\n  // We need to re-define these predicate and assertion\n  // methods here, because we cannot refine `this` in\n  // a function declaration.\n  // See https://github.com/microsoft/TypeScript/issues/38150\n\n  /**\n   * NOTE: This assertion doesn't narrow the type on unions of\n   * NodePaths, due to https://github.com/microsoft/TypeScript/issues/44212\n   *\n   * @see ./conversion.ts for implementation.\n   */\n  ensureBlock(\n    this: NodePath_Final,\n  ): asserts this is NodePath_Final<\n    (\n      | t.Loop\n      | t.WithStatement\n      | t.Function\n      | t.LabeledStatement\n      | t.CatchClause\n    ) & { body: t.BlockStatement }\n  >;\n  /**\n   * @see ./introspection.ts for implementation.\n   */\n  isStatementOrBlock(\n    this: NodePath_Final,\n  ): this is NodePath_Final<t.Statement | t.Block>;\n}\n\ntype NodePathMixins = Omit<typeof methods, keyof NodePathOverwrites>;\n\ninterface NodePath<T extends t.Node>\n  extends InstanceType<typeof NodePath_Final>,\n    NodePathAssertions,\n    NodePathValidators,\n    NodePathMixins,\n    NodePathOverwrites {\n  type: T[\"type\"] | null;\n  node: T;\n  parent: t.ParentMaps[T[\"type\"]];\n  parentPath: t.ParentMaps[T[\"type\"]] extends null\n    ? null\n    : NodePath_Final<t.ParentMaps[T[\"type\"]]> | null;\n}\n\n// This trick is necessary so that\n// NodePath_Final<A | B> is the same as NodePath_Final<A> | NodePath_Final<B>\ntype NodePath_Final<T extends t.Node = t.Node> = T extends any\n  ? NodePath<T>\n  : never;\n\nexport { NodePath_Final as default, type NodePath as NodePath_Internal };\n","import NodePath from \"./path/index.ts\";\nimport { VISITOR_KEYS } from \"@babel/types\";\nimport type Scope from \"./scope/index.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type * as t from \"@babel/types\";\nimport type { Visitor } from \"./types.ts\";\nimport { popContext, pushContext, resync } from \"./path/context.ts\";\n\nexport default class TraversalContext<S = unknown> {\n  constructor(\n    scope: Scope,\n    opts: ExplodedTraverseOptions<S>,\n    state: S,\n    parentPath: NodePath,\n  ) {\n    this.parentPath = parentPath;\n    this.scope = scope;\n    this.state = state;\n    this.opts = opts;\n  }\n\n  declare parentPath: NodePath;\n  declare scope: Scope;\n  declare state: S;\n  declare opts: ExplodedTraverseOptions<S>;\n  queue: Array<NodePath> | null = null;\n  priorityQueue: Array<NodePath> | null = null;\n\n  /**\n   * This method does a simple check to determine whether or not we really need to attempt\n   * visit a node. This will prevent us from constructing a NodePath.\n   */\n\n  shouldVisit(node: t.Node): boolean {\n    const opts = this.opts as Visitor;\n    if (opts.enter || opts.exit) return true;\n\n    // check if we have a visitor for this node\n    if (opts[node.type]) return true;\n\n    // check if we're going to traverse into this node\n    const keys: Array<string> | undefined = VISITOR_KEYS[node.type];\n    if (!keys?.length) return false;\n\n    // we need to traverse into this node so ensure that it has children to traverse into!\n    for (const key of keys) {\n      if (\n        // @ts-expect-error key is from visitor keys\n        node[key]\n      ) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  create(\n    node: t.Node,\n    container: t.Node | t.Node[],\n    key: string | number,\n    listKey?: string,\n  ): NodePath {\n    // We don't need to `.setContext()` here, since `.visitQueue()` already\n    // calls `.pushContext`.\n    return NodePath.get({\n      parentPath: this.parentPath,\n      parent: node,\n      container,\n      key: key,\n      listKey,\n    });\n  }\n\n  maybeQueue(path: NodePath, notPriority?: boolean) {\n    if (this.queue) {\n      if (notPriority) {\n        this.queue.push(path);\n      } else {\n        this.priorityQueue.push(path);\n      }\n    }\n  }\n\n  visitMultiple(container: t.Node[], parent: t.Node, listKey: string) {\n    // nothing to traverse!\n    if (container.length === 0) return false;\n\n    const queue = [];\n\n    // build up initial queue\n    for (let key = 0; key < container.length; key++) {\n      const node = container[key];\n      if (node && this.shouldVisit(node)) {\n        queue.push(this.create(parent, container, key, listKey));\n      }\n    }\n\n    return this.visitQueue(queue);\n  }\n\n  visitSingle(node: t.Node, key: string): boolean {\n    if (\n      this.shouldVisit(\n        // @ts-expect-error key may not index node\n        node[key],\n      )\n    ) {\n      return this.visitQueue([this.create(node, node, key)]);\n    } else {\n      return false;\n    }\n  }\n\n  visitQueue(queue: Array<NodePath>): boolean {\n    // set queue\n    this.queue = queue;\n    this.priorityQueue = [];\n\n    const visited = new WeakSet();\n    let stop = false;\n    let visitIndex = 0;\n\n    // visit the queue\n    for (; visitIndex < queue.length; ) {\n      const path = queue[visitIndex];\n      visitIndex++;\n      resync.call(path);\n\n      if (\n        path.contexts.length === 0 ||\n        path.contexts[path.contexts.length - 1] !== this\n      ) {\n        // The context might already have been pushed when this path was inserted and queued.\n        // If we always re-pushed here, we could get duplicates and risk leaving contexts\n        // on the stack after the traversal has completed, which could break things.\n        pushContext.call(path, this);\n      }\n\n      // this path no longer belongs to the tree\n      if (path.key === null) continue;\n\n      // ensure we don't visit the same node twice\n      const { node } = path;\n      if (visited.has(node)) continue;\n      if (node) visited.add(node);\n\n      if (path.visit()) {\n        stop = true;\n        break;\n      }\n\n      if (this.priorityQueue.length) {\n        stop = this.visitQueue(this.priorityQueue);\n        this.priorityQueue = [];\n        this.queue = queue;\n        if (stop) break;\n      }\n    }\n\n    // pop contexts\n    for (let i = 0; i < visitIndex; i++) {\n      popContext.call(queue[i]);\n    }\n\n    // clear queue\n    this.queue = null;\n\n    return stop;\n  }\n\n  visit(node: t.Node, key: string) {\n    // @ts-expect-error key may not index node\n    const nodes = node[key] as t.Node | t.Node[] | null;\n    if (!nodes) return false;\n\n    if (Array.isArray(nodes)) {\n      return this.visitMultiple(nodes, node, key);\n    } else {\n      return this.visitSingle(node, key);\n    }\n  }\n}\n","import TraversalContext from \"./context.ts\";\nimport type { ExplodedTraverseOptions } from \"./index.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type Scope from \"./scope/index.ts\";\nimport type * as t from \"@babel/types\";\nimport { VISITOR_KEYS } from \"@babel/types\";\n\n/**\n * Traverse the children of given node\n * @param {Node} node\n * @param {TraverseOptions} opts The traverse options used to create a new traversal context\n * @param {scope} scope A traversal scope used to create a new traversal context. When opts.noScope is true, scope should not be provided\n * @param {any} state A user data storage provided as the second callback argument for traversal visitors\n * @param {NodePath} path A NodePath of given node\n * @param {Record<string, boolean>} skipKeys A map from key names to whether that should be skipped during traversal. The skipKeys are applied to every descendants\n * @returns {boolean} Whether the traversal stops early\n\n * @note This function does not visit the given `node`.\n */\nexport function traverseNode<S = unknown>(\n  node: t.Node,\n  opts: ExplodedTraverseOptions<S>,\n  scope?: Scope,\n  state?: S,\n  path?: NodePath,\n  skipKeys?: Record<string, boolean>,\n  visitSelf?: boolean,\n): boolean {\n  const keys = VISITOR_KEYS[node.type];\n  if (!keys) return false;\n\n  const context = new TraversalContext<S>(scope, opts, state, path);\n  if (visitSelf) {\n    if (skipKeys?.[path.parentKey]) return false;\n    return context.visitQueue([path]);\n  }\n\n  for (const key of keys) {\n    if (skipKeys?.[key]) continue;\n    if (context.visit(node, key)) {\n      return true;\n    }\n  }\n\n  return false;\n}\n","// This file contains methods responsible for maintaining a TraversalContext.\n\nimport { traverseNode } from \"../traverse-node.ts\";\nimport { SHOULD_SKIP, SHOULD_STOP } from \"./index.ts\";\nimport { _markRemoved } from \"./removal.ts\";\nimport type TraversalContext from \"../context.ts\";\nimport type { VisitPhase } from \"../types.ts\";\nimport type NodePath from \"./index.ts\";\nimport * as t from \"@babel/types\";\n\nexport function call(this: NodePath, key: VisitPhase): boolean {\n  const opts = this.opts;\n\n  this.debug(key);\n\n  if (this.node) {\n    if (_call.call(this, opts[key])) return true;\n  }\n\n  if (this.node) {\n    return _call.call(this, opts[this.node.type]?.[key]);\n  }\n\n  return false;\n}\n\nexport function _call(this: NodePath, fns?: Array<Function>): boolean {\n  if (!fns) return false;\n\n  for (const fn of fns) {\n    if (!fn) continue;\n\n    const node = this.node;\n    if (!node) return true;\n\n    const ret = fn.call(this.state, this, this.state);\n    if (ret && typeof ret === \"object\" && typeof ret.then === \"function\") {\n      throw new Error(\n        `You appear to be using a plugin with an async traversal visitor, ` +\n          `which your current version of Babel does not support. ` +\n          `If you're using a published plugin, you may need to upgrade ` +\n          `your @babel/core version.`,\n      );\n    }\n    if (ret) {\n      throw new Error(`Unexpected return value from visitor method ${fn}`);\n    }\n\n    // node has been replaced, it will have been requeued\n    if (this.node !== node) return true;\n\n    // this.shouldSkip || this.shouldStop || this.removed\n    if (this._traverseFlags > 0) return true;\n  }\n\n  return false;\n}\n\nexport function isDenylisted(this: NodePath): boolean {\n  // @ts-expect-error TODO(Babel 8): Remove blacklist\n  const denylist = this.opts.denylist ?? this.opts.blacklist;\n  return denylist?.includes(this.node.type);\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.isBlacklisted = isDenylisted;\n}\n\nfunction restoreContext(path: NodePath, context: TraversalContext) {\n  if (path.context !== context) {\n    path.context = context;\n    path.state = context.state;\n    path.opts = context.opts;\n  }\n}\n\nexport function visit(this: NodePath): boolean {\n  if (!this.node) {\n    return false;\n  }\n\n  if (this.isDenylisted()) {\n    return false;\n  }\n\n  if (this.opts.shouldSkip?.(this)) {\n    return false;\n  }\n\n  const currentContext = this.context;\n  // Note: We need to check \"this.shouldSkip\" first because\n  // another visitor can set it to true. Usually .shouldSkip is false\n  // before calling the enter visitor, but it can be true in case of\n  // a requeued node (e.g. by .replaceWith()) that is then marked\n  // with .skip().\n  if (this.shouldSkip || call.call(this, \"enter\")) {\n    this.debug(\"Skip...\");\n    return this.shouldStop;\n  }\n  restoreContext(this, currentContext);\n\n  this.debug(\"Recursing into...\");\n  this.shouldStop = traverseNode(\n    this.node,\n    this.opts,\n    this.scope,\n    this.state,\n    this,\n    this.skipKeys,\n  );\n\n  restoreContext(this, currentContext);\n\n  call.call(this, \"exit\");\n\n  return this.shouldStop;\n}\n\nexport function skip(this: NodePath) {\n  this.shouldSkip = true;\n}\n\nexport function skipKey(this: NodePath, key: string) {\n  if (this.skipKeys == null) {\n    this.skipKeys = {};\n  }\n  this.skipKeys[key] = true;\n}\n\nexport function stop(this: NodePath) {\n  // this.shouldSkip = true; this.shouldStop = true;\n  this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;\n}\n\nexport function setScope(this: NodePath) {\n  if (this.opts?.noScope) return;\n\n  let path = this.parentPath;\n\n  if (\n    // Skip method scope if is computed method key or decorator expression\n    ((this.key === \"key\" || this.listKey === \"decorators\") &&\n      path.isMethod()) ||\n    // Skip switch scope if for discriminant (`x` in `switch (x) {}`).\n    (this.key === \"discriminant\" && path.isSwitchStatement())\n  ) {\n    path = path.parentPath;\n  }\n\n  let target;\n  while (path && !target) {\n    if (path.opts?.noScope) return;\n\n    target = path.scope;\n    path = path.parentPath;\n  }\n\n  this.scope = this.getScope(target);\n  this.scope?.init();\n}\n\nexport function setContext<S = unknown>(\n  this: NodePath,\n  context?: TraversalContext<S>,\n) {\n  if (this.skipKeys != null) {\n    this.skipKeys = {};\n  }\n  // this.shouldSkip = false; this.shouldStop = false; this.removed = false;\n  this._traverseFlags = 0;\n\n  if (context) {\n    this.context = context;\n    this.state = context.state;\n    // Discard the S type parameter from context.opts\n    this.opts = context.opts as typeof this.opts;\n  }\n\n  setScope.call(this);\n\n  return this;\n}\n\n/**\n * Here we resync the node paths `key` and `container`. If they've changed according\n * to what we have stored internally then we attempt to resync by crawling and looking\n * for the new values.\n */\n\nexport function resync(this: NodePath) {\n  if (this.removed) return;\n\n  _resyncParent.call(this);\n  _resyncList.call(this);\n  _resyncKey.call(this);\n  //this._resyncRemoved();\n}\n\nexport function _resyncParent(this: NodePath) {\n  if (this.parentPath) {\n    this.parent = this.parentPath.node;\n  }\n}\n\nexport function _resyncKey(this: NodePath) {\n  if (!this.container) return;\n\n  if (\n    this.node ===\n    // @ts-expect-error this.key should present in this.container\n    this.container[this.key]\n  ) {\n    return;\n  }\n\n  // grrr, path key is out of sync. this is likely due to a modification to the AST\n  // not done through our path APIs\n\n  if (Array.isArray(this.container)) {\n    for (let i = 0; i < this.container.length; i++) {\n      if (this.container[i] === this.node) {\n        setKey.call(this, i);\n        return;\n      }\n    }\n  } else {\n    for (const key of Object.keys(this.container)) {\n      // @ts-expect-error this.key should present in this.container\n      if (this.container[key] === this.node) {\n        setKey.call(this, key);\n        return;\n      }\n    }\n  }\n\n  // ¯\\_(ツ)_/¯ who knows where it's gone lol\n  this.key = null;\n}\n\nexport function _resyncList(this: NodePath) {\n  if (!this.parent || !this.inList) return;\n\n  const newContainer =\n    // @ts-expect-error this.listKey should present in this.parent\n    this.parent[this.listKey];\n  if (this.container === newContainer) return;\n\n  // container is out of sync. this is likely the result of it being reassigned\n  this.container = newContainer || null;\n}\n\nexport function _resyncRemoved(this: NodePath) {\n  if (\n    this.key == null ||\n    !this.container ||\n    // @ts-expect-error this.key should present in this.container\n    this.container[this.key] !== this.node\n  ) {\n    _markRemoved.call(this);\n  }\n}\n\nexport function popContext(this: NodePath) {\n  this.contexts.pop();\n  if (this.contexts.length > 0) {\n    this.setContext(this.contexts[this.contexts.length - 1]);\n  } else {\n    this.setContext(undefined);\n  }\n}\n\nexport function pushContext(this: NodePath, context: TraversalContext) {\n  this.contexts.push(context);\n  this.setContext(context);\n}\n\nexport function setup(\n  this: NodePath,\n  parentPath: NodePath | undefined,\n  container: t.Node | t.Node[],\n  listKey: string,\n  key: string | number,\n) {\n  this.listKey = listKey;\n  this.container = container;\n\n  this.parentPath = parentPath || this.parentPath;\n  setKey.call(this, key);\n}\n\nexport function setKey(this: NodePath, key: string | number) {\n  this.key = key;\n  this.node =\n    // @ts-expect-error this.key must present in this.container\n    this.container[this.key];\n  this.type = this.node?.type;\n}\n\nexport function requeue(this: NodePath, pathToQueue = this) {\n  if (pathToQueue.removed) return;\n\n  // If a path is skipped, and then replaced with a\n  // new one, the new one shouldn't probably be skipped.\n  if (process.env.BABEL_8_BREAKING) {\n    pathToQueue.shouldSkip = false;\n  }\n\n  // TODO(loganfsmyth): This should be switched back to queue in parent contexts\n  // automatically once #2892 and #4135 have been resolved. See #4140.\n  // let contexts = this._getQueueContexts();\n  const contexts = this.contexts;\n\n  for (const context of contexts) {\n    context.maybeQueue(pathToQueue);\n  }\n}\n\nexport function requeueComputedKeyAndDecorators(\n  this: NodePath<t.Method | t.Property>,\n) {\n  const { context, node } = this;\n  if (!t.isPrivate(node) && node.computed) {\n    context.maybeQueue(this.get(\"key\"));\n  }\n  if (node.decorators) {\n    for (const decorator of this.get(\"decorators\")) {\n      context.maybeQueue(decorator);\n    }\n  }\n}\n\nexport function _getQueueContexts(this: NodePath) {\n  let path = this;\n  let contexts = this.contexts;\n  while (!contexts.length) {\n    path = path.parentPath;\n    if (!path) break;\n    contexts = path.contexts;\n  }\n  return contexts;\n}\n","import type Scope from \"./scope/index.ts\";\nimport type { Node } from \"@babel/types\";\n\nexport interface HubInterface {\n  getCode(): string | void;\n  getScope(): Scope | void;\n  addHelper(name: string): any;\n  buildError(node: Node, msg: string, Error: new () => Error): Error;\n}\n\nexport default class Hub implements HubInterface {\n  getCode() {}\n\n  getScope() {}\n\n  addHelper() {\n    throw new Error(\"Helpers are not supported by the default hub.\");\n  }\n\n  buildError(node: Node, msg: string, Error = TypeError): Error {\n    return new Error(msg);\n  }\n}\n","import \"./path/context.ts\"; // We have some cycles, this ensures correct order to avoid TDZ\nimport * as visitors from \"./visitors.ts\";\nimport {\n  VISITOR_KEYS,\n  removeProperties,\n  type RemovePropertiesOptions,\n  traverseFast,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport * as cache from \"./cache.ts\";\nimport type NodePath from \"./path/index.ts\";\nimport type { default as Scope, Binding } from \"./scope/index.ts\";\nimport type { ExplodedVisitor, Visitor, VisitorBase } from \"./types.ts\";\nimport { traverseNode } from \"./traverse-node.ts\";\n\nexport type { ExplodedVisitor, Visitor, VisitorBase, Binding };\nexport { default as NodePath } from \"./path/index.ts\";\nexport { default as Scope } from \"./scope/index.ts\";\nexport { default as Hub } from \"./hub.ts\";\nexport type { HubInterface } from \"./hub.ts\";\n\nexport { visitors };\n\nexport type TraverseOptions<S = t.Node> = {\n  scope?: Scope;\n  noScope?: boolean;\n  denylist?: string[];\n  shouldSkip?: (node: NodePath) => boolean;\n} & Visitor<S>;\n\nexport type ExplodedTraverseOptions<S = t.Node> = TraverseOptions<S> &\n  ExplodedVisitor<S>;\n\nfunction traverse<S>(\n  parent: t.Node,\n  opts: TraverseOptions<S>,\n  scope: Scope | undefined,\n  state: S,\n  parentPath?: NodePath,\n  visitSelf?: boolean,\n): void;\n\nfunction traverse(\n  parent: t.Node,\n  opts: TraverseOptions,\n  scope?: Scope,\n  state?: any,\n  parentPath?: NodePath,\n  visitSelf?: boolean,\n): void;\n\nfunction traverse<Options extends TraverseOptions>(\n  parent: t.Node,\n  // @ts-expect-error provide {} as default value for Options\n  opts: Options = {},\n  scope?: Scope,\n  state?: any,\n  parentPath?: NodePath,\n  visitSelf?: boolean,\n) {\n  if (!parent) return;\n\n  if (!opts.noScope && !scope) {\n    if (parent.type !== \"Program\" && parent.type !== \"File\") {\n      throw new Error(\n        \"You must pass a scope and parentPath unless traversing a Program/File. \" +\n          `Instead of that you tried to traverse a ${parent.type} node without ` +\n          \"passing scope and parentPath.\",\n      );\n    }\n  }\n\n  if (!parentPath && visitSelf) {\n    throw new Error(\"visitSelf can only be used when providing a NodePath.\");\n  }\n\n  if (!VISITOR_KEYS[parent.type]) {\n    return;\n  }\n\n  visitors.explode(opts as Visitor);\n\n  traverseNode(\n    parent,\n    opts as ExplodedVisitor,\n    scope,\n    state,\n    parentPath,\n    /* skipKeys */ null,\n    visitSelf,\n  );\n}\n\nexport default traverse;\n\ntraverse.visitors = visitors;\ntraverse.verify = visitors.verify;\ntraverse.explode = visitors.explode;\n\ntraverse.cheap = function (node: t.Node, enter: (node: t.Node) => void) {\n  traverseFast(node, enter);\n  return;\n};\n\ntraverse.node = function (\n  node: t.Node,\n  opts: ExplodedTraverseOptions,\n  scope?: Scope,\n  state?: any,\n  path?: NodePath,\n  skipKeys?: Record<string, boolean>,\n) {\n  traverseNode(node, opts, scope, state, path, skipKeys);\n  // traverse.node always returns undefined\n};\n\ntraverse.clearNode = function (node: t.Node, opts?: RemovePropertiesOptions) {\n  removeProperties(node, opts);\n};\n\ntraverse.removeProperties = function (\n  tree: t.Node,\n  opts?: RemovePropertiesOptions,\n) {\n  traverseFast(tree, traverse.clearNode, opts);\n  return tree;\n};\n\ntype HasDenylistedTypeState = {\n  has: boolean;\n  type: t.Node[\"type\"];\n};\nfunction hasDenylistedType(path: NodePath, state: HasDenylistedTypeState) {\n  if (path.node.type === state.type) {\n    state.has = true;\n    path.stop();\n  }\n}\n\ntraverse.hasType = function (\n  tree: t.Node,\n  type: t.Node[\"type\"],\n  denylistTypes?: Array<string>,\n): boolean {\n  // the node we're searching in is denylisted\n  if (denylistTypes?.includes(tree.type)) return false;\n\n  // the type we're looking for is the same as the passed node\n  if (tree.type === type) return true;\n\n  const state: HasDenylistedTypeState = {\n    has: false,\n    type: type,\n  };\n\n  traverse(\n    tree,\n    {\n      noScope: true,\n      denylist: denylistTypes,\n      enter: hasDenylistedType,\n    },\n    null,\n    state,\n  );\n\n  return state.has;\n};\n\ntraverse.cache = cache;\n","exports = module.exports = SemVer\n\nvar debug\n/* istanbul ignore next */\nif (typeof process === 'object' &&\n    process.env &&\n    process.env.NODE_DEBUG &&\n    /\\bsemver\\b/i.test(process.env.NODE_DEBUG)) {\n  debug = function () {\n    var args = Array.prototype.slice.call(arguments, 0)\n    args.unshift('SEMVER')\n    console.log.apply(console, args)\n  }\n} else {\n  debug = function () {}\n}\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nexports.SEMVER_SPEC_VERSION = '2.0.0'\n\nvar MAX_LENGTH = 256\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n  /* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nvar MAX_SAFE_COMPONENT_LENGTH = 16\n\nvar MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\n// The actual regexps go on exports.re\nvar re = exports.re = []\nvar safeRe = exports.safeRe = []\nvar src = exports.src = []\nvar t = exports.tokens = {}\nvar R = 0\n\nfunction tok (n) {\n  t[n] = R++\n}\n\nvar LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nvar safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nfunction makeSafeRe (value) {\n  for (var i = 0; i < safeRegexReplacements.length; i++) {\n    var token = safeRegexReplacements[i][0]\n    var max = safeRegexReplacements[i][1]\n    value = value\n      .split(token + '*').join(token + '{0,' + max + '}')\n      .split(token + '+').join(token + '{1,' + max + '}')\n  }\n  return value\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ntok('NUMERICIDENTIFIER')\nsrc[t.NUMERICIDENTIFIER] = '0|[1-9]\\\\d*'\ntok('NUMERICIDENTIFIERLOOSE')\nsrc[t.NUMERICIDENTIFIERLOOSE] = '\\\\d+'\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ntok('NONNUMERICIDENTIFIER')\nsrc[t.NONNUMERICIDENTIFIER] = '\\\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*'\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ntok('MAINVERSION')\nsrc[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n                   '(' + src[t.NUMERICIDENTIFIER] + ')\\\\.' +\n                   '(' + src[t.NUMERICIDENTIFIER] + ')'\n\ntok('MAINVERSIONLOOSE')\nsrc[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\\\.' +\n                        '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')'\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ntok('PRERELEASEIDENTIFIER')\nsrc[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] +\n                            '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\ntok('PRERELEASEIDENTIFIERLOOSE')\nsrc[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] +\n                                 '|' + src[t.NONNUMERICIDENTIFIER] + ')'\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ntok('PRERELEASE')\nsrc[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] +\n                  '(?:\\\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))'\n\ntok('PRERELEASELOOSE')\nsrc[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] +\n                       '(?:\\\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))'\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ntok('BUILDIDENTIFIER')\nsrc[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+'\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ntok('BUILD')\nsrc[t.BUILD] = '(?:\\\\+(' + src[t.BUILDIDENTIFIER] +\n             '(?:\\\\.' + src[t.BUILDIDENTIFIER] + ')*))'\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ntok('FULL')\ntok('FULLPLAIN')\nsrc[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] +\n                  src[t.PRERELEASE] + '?' +\n                  src[t.BUILD] + '?'\n\nsrc[t.FULL] = '^' + src[t.FULLPLAIN] + '$'\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ntok('LOOSEPLAIN')\nsrc[t.LOOSEPLAIN] = '[v=\\\\s]*' + src[t.MAINVERSIONLOOSE] +\n                  src[t.PRERELEASELOOSE] + '?' +\n                  src[t.BUILD] + '?'\n\ntok('LOOSE')\nsrc[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$'\n\ntok('GTLT')\nsrc[t.GTLT] = '((?:<|>)?=?)'\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ntok('XRANGEIDENTIFIERLOOSE')\nsrc[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\\\*'\ntok('XRANGEIDENTIFIER')\nsrc[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\\\*'\n\ntok('XRANGEPLAIN')\nsrc[t.XRANGEPLAIN] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' +\n                   '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n                   '(?:\\\\.(' + src[t.XRANGEIDENTIFIER] + ')' +\n                   '(?:' + src[t.PRERELEASE] + ')?' +\n                   src[t.BUILD] + '?' +\n                   ')?)?'\n\ntok('XRANGEPLAINLOOSE')\nsrc[t.XRANGEPLAINLOOSE] = '[v=\\\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:\\\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' +\n                        '(?:' + src[t.PRERELEASELOOSE] + ')?' +\n                        src[t.BUILD] + '?' +\n                        ')?)?'\n\ntok('XRANGE')\nsrc[t.XRANGE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAIN] + '$'\ntok('XRANGELOOSE')\nsrc[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\\\s*' + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ntok('COERCE')\nsrc[t.COERCE] = '(^|[^\\\\d])' +\n              '(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' +\n              '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n              '(?:\\\\.(\\\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' +\n              '(?:$|[^\\\\d])'\ntok('COERCERTL')\nre[t.COERCERTL] = new RegExp(src[t.COERCE], 'g')\nsafeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g')\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ntok('LONETILDE')\nsrc[t.LONETILDE] = '(?:~>?)'\n\ntok('TILDETRIM')\nsrc[t.TILDETRIM] = '(\\\\s*)' + src[t.LONETILDE] + '\\\\s+'\nre[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g')\nsafeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g')\nvar tildeTrimReplace = '$1~'\n\ntok('TILDE')\nsrc[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$'\ntok('TILDELOOSE')\nsrc[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ntok('LONECARET')\nsrc[t.LONECARET] = '(?:\\\\^)'\n\ntok('CARETTRIM')\nsrc[t.CARETTRIM] = '(\\\\s*)' + src[t.LONECARET] + '\\\\s+'\nre[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g')\nsafeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g')\nvar caretTrimReplace = '$1^'\n\ntok('CARET')\nsrc[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$'\ntok('CARETLOOSE')\nsrc[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$'\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ntok('COMPARATORLOOSE')\nsrc[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.LOOSEPLAIN] + ')$|^$'\ntok('COMPARATOR')\nsrc[t.COMPARATOR] = '^' + src[t.GTLT] + '\\\\s*(' + src[t.FULLPLAIN] + ')$|^$'\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ntok('COMPARATORTRIM')\nsrc[t.COMPARATORTRIM] = '(\\\\s*)' + src[t.GTLT] +\n                      '\\\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')'\n\n// this one has to use the /g flag\nre[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g')\nsafeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g')\nvar comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ntok('HYPHENRANGE')\nsrc[t.HYPHENRANGE] = '^\\\\s*(' + src[t.XRANGEPLAIN] + ')' +\n                   '\\\\s+-\\\\s+' +\n                   '(' + src[t.XRANGEPLAIN] + ')' +\n                   '\\\\s*$'\n\ntok('HYPHENRANGELOOSE')\nsrc[t.HYPHENRANGELOOSE] = '^\\\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' +\n                        '\\\\s+-\\\\s+' +\n                        '(' + src[t.XRANGEPLAINLOOSE] + ')' +\n                        '\\\\s*$'\n\n// Star ranges basically just allow anything at all.\ntok('STAR')\nsrc[t.STAR] = '(<|>)?=?\\\\s*\\\\*'\n\n// Compile to actual regexp objects.\n// All are flag-free, unless they were created above with a flag.\nfor (var i = 0; i < R; i++) {\n  debug(i, src[i])\n  if (!re[i]) {\n    re[i] = new RegExp(src[i])\n\n    // Replace all greedy whitespace to prevent regex dos issues. These regex are\n    // used internally via the safeRe object since all inputs in this library get\n    // normalized first to trim and collapse all extra whitespace. The original\n    // regexes are exported for userland consumption and lower level usage. A\n    // future breaking change could export the safer regex only with a note that\n    // all input should have extra whitespace removed.\n    safeRe[i] = new RegExp(makeSafeRe(src[i]))\n  }\n}\n\nexports.parse = parse\nfunction parse (version, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  if (version.length > MAX_LENGTH) {\n    return null\n  }\n\n  var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]\n  if (!r.test(version)) {\n    return null\n  }\n\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    return null\n  }\n}\n\nexports.valid = valid\nfunction valid (version, options) {\n  var v = parse(version, options)\n  return v ? v.version : null\n}\n\nexports.clean = clean\nfunction clean (version, options) {\n  var s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\n\nexports.SemVer = SemVer\n\nfunction SemVer (version, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n  if (version instanceof SemVer) {\n    if (version.loose === options.loose) {\n      return version\n    } else {\n      version = version.version\n    }\n  } else if (typeof version !== 'string') {\n    throw new TypeError('Invalid Version: ' + version)\n  }\n\n  if (version.length > MAX_LENGTH) {\n    throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters')\n  }\n\n  if (!(this instanceof SemVer)) {\n    return new SemVer(version, options)\n  }\n\n  debug('SemVer', version, options)\n  this.options = options\n  this.loose = !!options.loose\n\n  var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL])\n\n  if (!m) {\n    throw new TypeError('Invalid Version: ' + version)\n  }\n\n  this.raw = version\n\n  // these are actually numbers\n  this.major = +m[1]\n  this.minor = +m[2]\n  this.patch = +m[3]\n\n  if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n    throw new TypeError('Invalid major version')\n  }\n\n  if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n    throw new TypeError('Invalid minor version')\n  }\n\n  if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n    throw new TypeError('Invalid patch version')\n  }\n\n  // numberify any prerelease numeric ids\n  if (!m[4]) {\n    this.prerelease = []\n  } else {\n    this.prerelease = m[4].split('.').map(function (id) {\n      if (/^[0-9]+$/.test(id)) {\n        var num = +id\n        if (num >= 0 && num < MAX_SAFE_INTEGER) {\n          return num\n        }\n      }\n      return id\n    })\n  }\n\n  this.build = m[5] ? m[5].split('.') : []\n  this.format()\n}\n\nSemVer.prototype.format = function () {\n  this.version = this.major + '.' + this.minor + '.' + this.patch\n  if (this.prerelease.length) {\n    this.version += '-' + this.prerelease.join('.')\n  }\n  return this.version\n}\n\nSemVer.prototype.toString = function () {\n  return this.version\n}\n\nSemVer.prototype.compare = function (other) {\n  debug('SemVer.compare', this.version, this.options, other)\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  return this.compareMain(other) || this.comparePre(other)\n}\n\nSemVer.prototype.compareMain = function (other) {\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  return compareIdentifiers(this.major, other.major) ||\n         compareIdentifiers(this.minor, other.minor) ||\n         compareIdentifiers(this.patch, other.patch)\n}\n\nSemVer.prototype.comparePre = function (other) {\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  // NOT having a prerelease is > having one\n  if (this.prerelease.length && !other.prerelease.length) {\n    return -1\n  } else if (!this.prerelease.length && other.prerelease.length) {\n    return 1\n  } else if (!this.prerelease.length && !other.prerelease.length) {\n    return 0\n  }\n\n  var i = 0\n  do {\n    var a = this.prerelease[i]\n    var b = other.prerelease[i]\n    debug('prerelease compare', i, a, b)\n    if (a === undefined && b === undefined) {\n      return 0\n    } else if (b === undefined) {\n      return 1\n    } else if (a === undefined) {\n      return -1\n    } else if (a === b) {\n      continue\n    } else {\n      return compareIdentifiers(a, b)\n    }\n  } while (++i)\n}\n\nSemVer.prototype.compareBuild = function (other) {\n  if (!(other instanceof SemVer)) {\n    other = new SemVer(other, this.options)\n  }\n\n  var i = 0\n  do {\n    var a = this.build[i]\n    var b = other.build[i]\n    debug('prerelease compare', i, a, b)\n    if (a === undefined && b === undefined) {\n      return 0\n    } else if (b === undefined) {\n      return 1\n    } else if (a === undefined) {\n      return -1\n    } else if (a === b) {\n      continue\n    } else {\n      return compareIdentifiers(a, b)\n    }\n  } while (++i)\n}\n\n// preminor will bump the version up to the next minor release, and immediately\n// down to pre-release. premajor and prepatch work the same way.\nSemVer.prototype.inc = function (release, identifier) {\n  switch (release) {\n    case 'premajor':\n      this.prerelease.length = 0\n      this.patch = 0\n      this.minor = 0\n      this.major++\n      this.inc('pre', identifier)\n      break\n    case 'preminor':\n      this.prerelease.length = 0\n      this.patch = 0\n      this.minor++\n      this.inc('pre', identifier)\n      break\n    case 'prepatch':\n      // If this is already a prerelease, it will bump to the next version\n      // drop any prereleases that might already exist, since they are not\n      // relevant at this point.\n      this.prerelease.length = 0\n      this.inc('patch', identifier)\n      this.inc('pre', identifier)\n      break\n    // If the input is a non-prerelease version, this acts the same as\n    // prepatch.\n    case 'prerelease':\n      if (this.prerelease.length === 0) {\n        this.inc('patch', identifier)\n      }\n      this.inc('pre', identifier)\n      break\n\n    case 'major':\n      // If this is a pre-major version, bump up to the same major version.\n      // Otherwise increment major.\n      // 1.0.0-5 bumps to 1.0.0\n      // 1.1.0 bumps to 2.0.0\n      if (this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0) {\n        this.major++\n      }\n      this.minor = 0\n      this.patch = 0\n      this.prerelease = []\n      break\n    case 'minor':\n      // If this is a pre-minor version, bump up to the same minor version.\n      // Otherwise increment minor.\n      // 1.2.0-5 bumps to 1.2.0\n      // 1.2.1 bumps to 1.3.0\n      if (this.patch !== 0 || this.prerelease.length === 0) {\n        this.minor++\n      }\n      this.patch = 0\n      this.prerelease = []\n      break\n    case 'patch':\n      // If this is not a pre-release version, it will increment the patch.\n      // If it is a pre-release it will bump up to the same patch version.\n      // 1.2.0-5 patches to 1.2.0\n      // 1.2.0 patches to 1.2.1\n      if (this.prerelease.length === 0) {\n        this.patch++\n      }\n      this.prerelease = []\n      break\n    // This probably shouldn't be used publicly.\n    // 1.0.0 \"pre\" would become 1.0.0-0 which is the wrong direction.\n    case 'pre':\n      if (this.prerelease.length === 0) {\n        this.prerelease = [0]\n      } else {\n        var i = this.prerelease.length\n        while (--i >= 0) {\n          if (typeof this.prerelease[i] === 'number') {\n            this.prerelease[i]++\n            i = -2\n          }\n        }\n        if (i === -1) {\n          // didn't increment anything\n          this.prerelease.push(0)\n        }\n      }\n      if (identifier) {\n        // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n        // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n        if (this.prerelease[0] === identifier) {\n          if (isNaN(this.prerelease[1])) {\n            this.prerelease = [identifier, 0]\n          }\n        } else {\n          this.prerelease = [identifier, 0]\n        }\n      }\n      break\n\n    default:\n      throw new Error('invalid increment argument: ' + release)\n  }\n  this.format()\n  this.raw = this.version\n  return this\n}\n\nexports.inc = inc\nfunction inc (version, release, loose, identifier) {\n  if (typeof (loose) === 'string') {\n    identifier = loose\n    loose = undefined\n  }\n\n  try {\n    return new SemVer(version, loose).inc(release, identifier).version\n  } catch (er) {\n    return null\n  }\n}\n\nexports.diff = diff\nfunction diff (version1, version2) {\n  if (eq(version1, version2)) {\n    return null\n  } else {\n    var v1 = parse(version1)\n    var v2 = parse(version2)\n    var prefix = ''\n    if (v1.prerelease.length || v2.prerelease.length) {\n      prefix = 'pre'\n      var defaultResult = 'prerelease'\n    }\n    for (var key in v1) {\n      if (key === 'major' || key === 'minor' || key === 'patch') {\n        if (v1[key] !== v2[key]) {\n          return prefix + key\n        }\n      }\n    }\n    return defaultResult // may be undefined\n  }\n}\n\nexports.compareIdentifiers = compareIdentifiers\n\nvar numeric = /^[0-9]+$/\nfunction compareIdentifiers (a, b) {\n  var anum = numeric.test(a)\n  var bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nexports.rcompareIdentifiers = rcompareIdentifiers\nfunction rcompareIdentifiers (a, b) {\n  return compareIdentifiers(b, a)\n}\n\nexports.major = major\nfunction major (a, loose) {\n  return new SemVer(a, loose).major\n}\n\nexports.minor = minor\nfunction minor (a, loose) {\n  return new SemVer(a, loose).minor\n}\n\nexports.patch = patch\nfunction patch (a, loose) {\n  return new SemVer(a, loose).patch\n}\n\nexports.compare = compare\nfunction compare (a, b, loose) {\n  return new SemVer(a, loose).compare(new SemVer(b, loose))\n}\n\nexports.compareLoose = compareLoose\nfunction compareLoose (a, b) {\n  return compare(a, b, true)\n}\n\nexports.compareBuild = compareBuild\nfunction compareBuild (a, b, loose) {\n  var versionA = new SemVer(a, loose)\n  var versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\n\nexports.rcompare = rcompare\nfunction rcompare (a, b, loose) {\n  return compare(b, a, loose)\n}\n\nexports.sort = sort\nfunction sort (list, loose) {\n  return list.sort(function (a, b) {\n    return exports.compareBuild(a, b, loose)\n  })\n}\n\nexports.rsort = rsort\nfunction rsort (list, loose) {\n  return list.sort(function (a, b) {\n    return exports.compareBuild(b, a, loose)\n  })\n}\n\nexports.gt = gt\nfunction gt (a, b, loose) {\n  return compare(a, b, loose) > 0\n}\n\nexports.lt = lt\nfunction lt (a, b, loose) {\n  return compare(a, b, loose) < 0\n}\n\nexports.eq = eq\nfunction eq (a, b, loose) {\n  return compare(a, b, loose) === 0\n}\n\nexports.neq = neq\nfunction neq (a, b, loose) {\n  return compare(a, b, loose) !== 0\n}\n\nexports.gte = gte\nfunction gte (a, b, loose) {\n  return compare(a, b, loose) >= 0\n}\n\nexports.lte = lte\nfunction lte (a, b, loose) {\n  return compare(a, b, loose) <= 0\n}\n\nexports.cmp = cmp\nfunction cmp (a, op, b, loose) {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object')\n        a = a.version\n      if (typeof b === 'object')\n        b = b.version\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError('Invalid operator: ' + op)\n  }\n}\n\nexports.Comparator = Comparator\nfunction Comparator (comp, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (comp instanceof Comparator) {\n    if (comp.loose === !!options.loose) {\n      return comp\n    } else {\n      comp = comp.value\n    }\n  }\n\n  if (!(this instanceof Comparator)) {\n    return new Comparator(comp, options)\n  }\n\n  comp = comp.trim().split(/\\s+/).join(' ')\n  debug('comparator', comp, options)\n  this.options = options\n  this.loose = !!options.loose\n  this.parse(comp)\n\n  if (this.semver === ANY) {\n    this.value = ''\n  } else {\n    this.value = this.operator + this.semver.version\n  }\n\n  debug('comp', this)\n}\n\nvar ANY = {}\nComparator.prototype.parse = function (comp) {\n  var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]\n  var m = comp.match(r)\n\n  if (!m) {\n    throw new TypeError('Invalid comparator: ' + comp)\n  }\n\n  this.operator = m[1] !== undefined ? m[1] : ''\n  if (this.operator === '=') {\n    this.operator = ''\n  }\n\n  // if it literally is just '>' or '' then allow anything.\n  if (!m[2]) {\n    this.semver = ANY\n  } else {\n    this.semver = new SemVer(m[2], this.options.loose)\n  }\n}\n\nComparator.prototype.toString = function () {\n  return this.value\n}\n\nComparator.prototype.test = function (version) {\n  debug('Comparator.test', version, this.options.loose)\n\n  if (this.semver === ANY || version === ANY) {\n    return true\n  }\n\n  if (typeof version === 'string') {\n    try {\n      version = new SemVer(version, this.options)\n    } catch (er) {\n      return false\n    }\n  }\n\n  return cmp(version, this.operator, this.semver, this.options)\n}\n\nComparator.prototype.intersects = function (comp, options) {\n  if (!(comp instanceof Comparator)) {\n    throw new TypeError('a Comparator is required')\n  }\n\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  var rangeTmp\n\n  if (this.operator === '') {\n    if (this.value === '') {\n      return true\n    }\n    rangeTmp = new Range(comp.value, options)\n    return satisfies(this.value, rangeTmp, options)\n  } else if (comp.operator === '') {\n    if (comp.value === '') {\n      return true\n    }\n    rangeTmp = new Range(this.value, options)\n    return satisfies(comp.semver, rangeTmp, options)\n  }\n\n  var sameDirectionIncreasing =\n    (this.operator === '>=' || this.operator === '>') &&\n    (comp.operator === '>=' || comp.operator === '>')\n  var sameDirectionDecreasing =\n    (this.operator === '<=' || this.operator === '<') &&\n    (comp.operator === '<=' || comp.operator === '<')\n  var sameSemVer = this.semver.version === comp.semver.version\n  var differentDirectionsInclusive =\n    (this.operator === '>=' || this.operator === '<=') &&\n    (comp.operator === '>=' || comp.operator === '<=')\n  var oppositeDirectionsLessThan =\n    cmp(this.semver, '<', comp.semver, options) &&\n    ((this.operator === '>=' || this.operator === '>') &&\n    (comp.operator === '<=' || comp.operator === '<'))\n  var oppositeDirectionsGreaterThan =\n    cmp(this.semver, '>', comp.semver, options) &&\n    ((this.operator === '<=' || this.operator === '<') &&\n    (comp.operator === '>=' || comp.operator === '>'))\n\n  return sameDirectionIncreasing || sameDirectionDecreasing ||\n    (sameSemVer && differentDirectionsInclusive) ||\n    oppositeDirectionsLessThan || oppositeDirectionsGreaterThan\n}\n\nexports.Range = Range\nfunction Range (range, options) {\n  if (!options || typeof options !== 'object') {\n    options = {\n      loose: !!options,\n      includePrerelease: false\n    }\n  }\n\n  if (range instanceof Range) {\n    if (range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease) {\n      return range\n    } else {\n      return new Range(range.raw, options)\n    }\n  }\n\n  if (range instanceof Comparator) {\n    return new Range(range.value, options)\n  }\n\n  if (!(this instanceof Range)) {\n    return new Range(range, options)\n  }\n\n  this.options = options\n  this.loose = !!options.loose\n  this.includePrerelease = !!options.includePrerelease\n\n  // First reduce all whitespace as much as possible so we do not have to rely\n  // on potentially slow regexes like \\s*. This is then stored and used for\n  // future error messages as well.\n  this.raw = range\n    .trim()\n    .split(/\\s+/)\n    .join(' ')\n\n  // First, split based on boolean or ||\n  this.set = this.raw.split('||').map(function (range) {\n    return this.parseRange(range.trim())\n  }, this).filter(function (c) {\n    // throw out any that are not relevant for whatever reason\n    return c.length\n  })\n\n  if (!this.set.length) {\n    throw new TypeError('Invalid SemVer Range: ' + this.raw)\n  }\n\n  this.format()\n}\n\nRange.prototype.format = function () {\n  this.range = this.set.map(function (comps) {\n    return comps.join(' ').trim()\n  }).join('||').trim()\n  return this.range\n}\n\nRange.prototype.toString = function () {\n  return this.range\n}\n\nRange.prototype.parseRange = function (range) {\n  var loose = this.options.loose\n  // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n  var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE]\n  range = range.replace(hr, hyphenReplace)\n  debug('hyphen replace', range)\n  // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n  range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace)\n  debug('comparator trim', range, safeRe[t.COMPARATORTRIM])\n\n  // `~ 1.2.3` => `~1.2.3`\n  range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace)\n\n  // `^ 1.2.3` => `^1.2.3`\n  range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace)\n\n  // normalize spaces\n  range = range.split(/\\s+/).join(' ')\n\n  // At this point, the range is completely trimmed and\n  // ready to be split into comparators.\n\n  var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR]\n  var set = range.split(' ').map(function (comp) {\n    return parseComparator(comp, this.options)\n  }, this).join(' ').split(/\\s+/)\n  if (this.options.loose) {\n    // in loose mode, throw out any that are not valid comparators\n    set = set.filter(function (comp) {\n      return !!comp.match(compRe)\n    })\n  }\n  set = set.map(function (comp) {\n    return new Comparator(comp, this.options)\n  }, this)\n\n  return set\n}\n\nRange.prototype.intersects = function (range, options) {\n  if (!(range instanceof Range)) {\n    throw new TypeError('a Range is required')\n  }\n\n  return this.set.some(function (thisComparators) {\n    return (\n      isSatisfiable(thisComparators, options) &&\n      range.set.some(function (rangeComparators) {\n        return (\n          isSatisfiable(rangeComparators, options) &&\n          thisComparators.every(function (thisComparator) {\n            return rangeComparators.every(function (rangeComparator) {\n              return thisComparator.intersects(rangeComparator, options)\n            })\n          })\n        )\n      })\n    )\n  })\n}\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nfunction isSatisfiable (comparators, options) {\n  var result = true\n  var remainingComparators = comparators.slice()\n  var testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every(function (otherComparator) {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// Mostly just for testing and legacy API reasons\nexports.toComparators = toComparators\nfunction toComparators (range, options) {\n  return new Range(range, options).set.map(function (comp) {\n    return comp.map(function (c) {\n      return c.value\n    }).join(' ').trim().split(' ')\n  })\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nfunction parseComparator (comp, options) {\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nfunction isX (id) {\n  return !id || id.toLowerCase() === 'x' || id === '*'\n}\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0\nfunction replaceTildes (comp, options) {\n  return comp.trim().split(/\\s+/).map(function (comp) {\n    return replaceTilde(comp, options)\n  }).join(' ')\n}\n\nfunction replaceTilde (comp, options) {\n  var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE]\n  return comp.replace(r, function (_, M, m, p, pr) {\n    debug('tilde', comp, _, M, m, p, pr)\n    var ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0\n      ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n            ' <' + M + '.' + (+m + 1) + '.0'\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0\n      ret = '>=' + M + '.' + m + '.' + p +\n            ' <' + M + '.' + (+m + 1) + '.0'\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0\n// ^1.2.3 --> >=1.2.3 <2.0.0\n// ^1.2.0 --> >=1.2.0 <2.0.0\nfunction replaceCarets (comp, options) {\n  return comp.trim().split(/\\s+/).map(function (comp) {\n    return replaceCaret(comp, options)\n  }).join(' ')\n}\n\nfunction replaceCaret (comp, options) {\n  debug('caret', comp, options)\n  var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET]\n  return comp.replace(r, function (_, M, m, p, pr) {\n    debug('caret', comp, _, M, m, p, pr)\n    var ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'\n      } else {\n        ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n                ' <' + M + '.' + m + '.' + (+p + 1)\n        } else {\n          ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n                ' <' + M + '.' + (+m + 1) + '.0'\n        }\n      } else {\n        ret = '>=' + M + '.' + m + '.' + p + '-' + pr +\n              ' <' + (+M + 1) + '.0.0'\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = '>=' + M + '.' + m + '.' + p +\n                ' <' + M + '.' + m + '.' + (+p + 1)\n        } else {\n          ret = '>=' + M + '.' + m + '.' + p +\n                ' <' + M + '.' + (+m + 1) + '.0'\n        }\n      } else {\n        ret = '>=' + M + '.' + m + '.' + p +\n              ' <' + (+M + 1) + '.0.0'\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nfunction replaceXRanges (comp, options) {\n  debug('replaceXRanges', comp, options)\n  return comp.split(/\\s+/).map(function (comp) {\n    return replaceXRange(comp, options)\n  }).join(' ')\n}\n\nfunction replaceXRange (comp, options) {\n  comp = comp.trim()\n  var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE]\n  return comp.replace(r, function (ret, gtlt, M, m, p, pr) {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    var xM = isX(M)\n    var xm = xM || isX(m)\n    var xp = xm || isX(p)\n    var anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        // >1.2.3 => >= 1.2.4\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      ret = gtlt + M + '.' + m + '.' + p + pr\n    } else if (xm) {\n      ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr\n    } else if (xp) {\n      ret = '>=' + M + '.' + m + '.0' + pr +\n        ' <' + M + '.' + (+m + 1) + '.0' + pr\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nfunction replaceStars (comp, options) {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp.trim().replace(safeRe[t.STAR], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0\nfunction hyphenReplace ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr, tb) {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = '>=' + fM + '.0.0'\n  } else if (isX(fp)) {\n    from = '>=' + fM + '.' + fm + '.0'\n  } else {\n    from = '>=' + from\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = '<' + (+tM + 1) + '.0.0'\n  } else if (isX(tp)) {\n    to = '<' + tM + '.' + (+tm + 1) + '.0'\n  } else if (tpr) {\n    to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr\n  } else {\n    to = '<=' + to\n  }\n\n  return (from + ' ' + to).trim()\n}\n\n// if ANY of the sets match ALL of its comparators, then pass\nRange.prototype.test = function (version) {\n  if (!version) {\n    return false\n  }\n\n  if (typeof version === 'string') {\n    try {\n      version = new SemVer(version, this.options)\n    } catch (er) {\n      return false\n    }\n  }\n\n  for (var i = 0; i < this.set.length; i++) {\n    if (testSet(this.set[i], version, this.options)) {\n      return true\n    }\n  }\n  return false\n}\n\nfunction testSet (set, version, options) {\n  for (var i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        var allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n\nexports.satisfies = satisfies\nfunction satisfies (version, range, options) {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\n\nexports.maxSatisfying = maxSatisfying\nfunction maxSatisfying (versions, range, options) {\n  var max = null\n  var maxSV = null\n  try {\n    var rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach(function (v) {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\n\nexports.minSatisfying = minSatisfying\nfunction minSatisfying (versions, range, options) {\n  var min = null\n  var minSV = null\n  try {\n    var rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach(function (v) {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\n\nexports.minVersion = minVersion\nfunction minVersion (range, loose) {\n  range = new Range(range, loose)\n\n  var minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (var i = 0; i < range.set.length; ++i) {\n    var comparators = range.set[i]\n\n    comparators.forEach(function (comparator) {\n      // Clone to avoid manipulating the comparator's semver object.\n      var compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!minver || gt(minver, compver)) {\n            minver = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error('Unexpected operation: ' + comparator.operator)\n      }\n    })\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\n\nexports.validRange = validRange\nfunction validRange (range, options) {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\n\n// Determine if version is less than all the versions possible in the range\nexports.ltr = ltr\nfunction ltr (version, range, options) {\n  return outside(version, range, '<', options)\n}\n\n// Determine if version is greater than all the versions possible in the range.\nexports.gtr = gtr\nfunction gtr (version, range, options) {\n  return outside(version, range, '>', options)\n}\n\nexports.outside = outside\nfunction outside (version, range, hilo, options) {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  var gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisifes the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (var i = 0; i < range.set.length; ++i) {\n    var comparators = range.set[i]\n\n    var high = null\n    var low = null\n\n    comparators.forEach(function (comparator) {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nexports.prerelease = prerelease\nfunction prerelease (version, options) {\n  var parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\n\nexports.intersects = intersects\nfunction intersects (r1, r2, options) {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2)\n}\n\nexports.coerce = coerce\nfunction coerce (version, options) {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  var match = null\n  if (!options.rtl) {\n    match = version.match(safeRe[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    var next\n    while ((next = safeRe[t.COERCERTL].exec(version)) &&\n      (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n          next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    safeRe[t.COERCERTL].lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  return parse(match[2] +\n    '.' + (match[3] || '0') +\n    '.' + (match[4] || '0'), options)\n}\n","import assert from \"assert\";\nimport {\n  callExpression,\n  cloneNode,\n  expressionStatement,\n  identifier,\n  importDeclaration,\n  importDefaultSpecifier,\n  importNamespaceSpecifier,\n  importSpecifier,\n  memberExpression,\n  stringLiteral,\n  variableDeclaration,\n  variableDeclarator,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { Scope, HubInterface } from \"@babel/traverse\";\n\n/**\n * A class to track and accumulate mutations to the AST that will eventually\n * output a new require/import statement list.\n */\nexport default class ImportBuilder {\n  private _statements: t.Statement[] = [];\n  private _resultName: t.Identifier | t.MemberExpression = null;\n\n  declare _scope: Scope;\n  declare _hub: HubInterface;\n  private _importedSource: string;\n\n  constructor(importedSource: string, scope: Scope, hub: HubInterface) {\n    this._scope = scope;\n    this._hub = hub;\n    this._importedSource = importedSource;\n  }\n\n  done() {\n    return {\n      statements: this._statements,\n      resultName: this._resultName,\n    };\n  }\n\n  import() {\n    this._statements.push(\n      importDeclaration([], stringLiteral(this._importedSource)),\n    );\n    return this;\n  }\n\n  require() {\n    this._statements.push(\n      expressionStatement(\n        callExpression(identifier(\"require\"), [\n          stringLiteral(this._importedSource),\n        ]),\n      ),\n    );\n    return this;\n  }\n\n  namespace(name = \"namespace\") {\n    const local = this._scope.generateUidIdentifier(name);\n\n    const statement = this._statements[this._statements.length - 1];\n    assert(statement.type === \"ImportDeclaration\");\n    assert(statement.specifiers.length === 0);\n    statement.specifiers = [importNamespaceSpecifier(local)];\n    this._resultName = cloneNode(local);\n    return this;\n  }\n  default(name: string) {\n    const id = this._scope.generateUidIdentifier(name);\n    const statement = this._statements[this._statements.length - 1];\n    assert(statement.type === \"ImportDeclaration\");\n    assert(statement.specifiers.length === 0);\n    statement.specifiers = [importDefaultSpecifier(id)];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n  named(name: string, importName: string) {\n    if (importName === \"default\") return this.default(name);\n\n    const id = this._scope.generateUidIdentifier(name);\n    const statement = this._statements[this._statements.length - 1];\n    assert(statement.type === \"ImportDeclaration\");\n    assert(statement.specifiers.length === 0);\n    statement.specifiers = [importSpecifier(id, identifier(importName))];\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  var(name: string) {\n    const id = this._scope.generateUidIdentifier(name);\n    let statement = this._statements[this._statements.length - 1];\n    if (statement.type !== \"ExpressionStatement\") {\n      assert(this._resultName);\n      statement = expressionStatement(this._resultName);\n      this._statements.push(statement);\n    }\n    this._statements[this._statements.length - 1] = variableDeclaration(\"var\", [\n      variableDeclarator(id, statement.expression),\n    ]);\n    this._resultName = cloneNode(id);\n    return this;\n  }\n\n  defaultInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireDefault\"));\n  }\n  wildcardInterop() {\n    return this._interop(this._hub.addHelper(\"interopRequireWildcard\"));\n  }\n\n  _interop(callee: t.Expression) {\n    const statement = this._statements[this._statements.length - 1];\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = callExpression(callee, [statement.expression]);\n    } else if (statement.type === \"VariableDeclaration\") {\n      assert(statement.declarations.length === 1);\n      statement.declarations[0].init = callExpression(callee, [\n        statement.declarations[0].init,\n      ]);\n    } else {\n      assert.fail(\"Unexpected type.\");\n    }\n    return this;\n  }\n\n  prop(name: string) {\n    const statement = this._statements[this._statements.length - 1];\n    if (statement.type === \"ExpressionStatement\") {\n      statement.expression = memberExpression(\n        statement.expression,\n        identifier(name),\n      );\n    } else if (statement.type === \"VariableDeclaration\") {\n      assert(statement.declarations.length === 1);\n      statement.declarations[0].init = memberExpression(\n        statement.declarations[0].init,\n        identifier(name),\n      );\n    } else {\n      assert.fail(\"Unexpected type:\" + statement.type);\n    }\n    return this;\n  }\n\n  read(name: string) {\n    this._resultName = memberExpression(this._resultName, identifier(name));\n  }\n}\n","import type { NodePath } from \"@babel/traverse\";\nimport type * as t from \"@babel/types\";\n\n/**\n * A small utility to check if a file qualifies as a module.\n */\nexport default function isModule(path: NodePath<t.Program>) {\n  return path.node.sourceType === \"module\";\n}\n","import assert from \"assert\";\nimport {\n  identifier,\n  importSpecifier,\n  numericLiteral,\n  sequenceExpression,\n  isImportDeclaration,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { NodePath, Scope, HubInterface } from \"@babel/traverse\";\n\nimport ImportBuilder from \"./import-builder.ts\";\nimport isModule from \"./is-module.ts\";\n\nexport type ImportOptions = {\n  /**\n   * The module being referenced.\n   */\n  importedSource: string | null;\n  /**\n   * The type of module being imported:\n   *\n   *  * 'es6'      - An ES6 module.\n   *  * 'commonjs' - A CommonJS module. (Default)\n   */\n  importedType: \"es6\" | \"commonjs\";\n  /**\n   * The type of interop behavior for namespace/default/named when loading\n   * CommonJS modules.\n   *\n   * ## 'babel' (Default)\n   *\n   * Load using Babel's interop.\n   *\n   * If '.__esModule' is true, treat as 'compiled', else:\n   *\n   * * Namespace: A copy of the module.exports with .default\n   *     populated by the module.exports object.\n   * * Default: The module.exports value.\n   * * Named: The .named property of module.exports.\n   *\n   * The 'ensureLiveReference' has no effect on the liveness of these.\n   *\n   * ## 'compiled'\n   *\n   * Assume the module is ES6 compiled to CommonJS. Useful to avoid injecting\n   * interop logic if you are confident that the module is a certain format.\n   *\n   * * Namespace: The root module.exports object.\n   * * Default: The .default property of the namespace.\n   * * Named: The .named property of the namespace.\n   *\n   * Will return erroneous results if the imported module is _not_ compiled\n   * from ES6 with Babel.\n   *\n   * ## 'uncompiled'\n   *\n   * Assume the module is _not_ ES6 compiled to CommonJS. Used a simplified\n   * access pattern that doesn't require additional function calls.\n   *\n   * Will return erroneous results if the imported module _is_ compiled\n   * from ES6 with Babel.\n   *\n   * * Namespace: The module.exports object.\n   * * Default: The module.exports object.\n   * * Named: The .named property of module.exports.\n   */\n  importedInterop: \"babel\" | \"node\" | \"compiled\" | \"uncompiled\";\n  /**\n   * The type of CommonJS interop included in the environment that will be\n   * loading the output code.\n   *\n   *  * 'babel' - CommonJS modules load with Babel's interop. (Default)\n   *  * 'node'  - CommonJS modules load with Node's interop.\n   *\n   * See descriptions in 'importedInterop' for more details.\n   */\n  importingInterop: \"babel\" | \"node\";\n  /**\n   * Define whether we explicitly care that the import be a live reference.\n   * Only applies when importing default and named imports, not the namespace.\n   *\n   *  * true  - Force imported values to be live references.\n   *  * false - No particular requirements. Keeps the code simplest. (Default)\n   */\n  ensureLiveReference: boolean;\n  /**\n   * Define if we explicitly care that the result not be a property reference.\n   *\n   *  * true  - Force calls to exclude context. Useful if the value is going to\n   *            be used as function callee.\n   *  * false - No particular requirements for context of the access. (Default)\n   */\n  ensureNoContext: boolean;\n  /**\n   * Define whether the import should be loaded before or after the existing imports.\n   * \"after\" is only allowed inside ECMAScript modules, since it's not possible to\n   * reliably pick the location _after_ require() calls but _before_ other code in CJS.\n   */\n  importPosition: \"before\" | \"after\";\n\n  nameHint?: string;\n  blockHoist?: number;\n};\n\n/**\n * A general helper classes add imports via transforms. See README for usage.\n */\nexport default class ImportInjector {\n  /**\n   * The path used for manipulation.\n   */\n  declare _programPath: NodePath<t.Program>;\n\n  /**\n   * The scope used to generate unique variable names.\n   */\n  declare _programScope: Scope;\n\n  /**\n   * The file used to inject helpers and resolve paths.\n   */\n  declare _hub: HubInterface;\n\n  /**\n   * The default options to use with this instance when imports are added.\n   */\n  _defaultOpts: ImportOptions = {\n    importedSource: null,\n    importedType: \"commonjs\",\n    importedInterop: \"babel\",\n    importingInterop: \"babel\",\n    ensureLiveReference: false,\n    ensureNoContext: false,\n    importPosition: \"before\",\n  };\n\n  constructor(\n    path: NodePath,\n    importedSource?: string,\n    opts?: Partial<ImportOptions>,\n  ) {\n    const programPath = path.find(p => p.isProgram()) as NodePath<t.Program>;\n\n    this._programPath = programPath;\n    this._programScope = programPath.scope;\n    this._hub = programPath.hub;\n\n    this._defaultOpts = this._applyDefaults(importedSource, opts, true);\n  }\n\n  addDefault(importedSourceIn: string, opts: Partial<ImportOptions>) {\n    return this.addNamed(\"default\", importedSourceIn, opts);\n  }\n\n  addNamed(\n    importName: string,\n    importedSourceIn: string,\n    opts: Partial<ImportOptions>,\n  ) {\n    assert(typeof importName === \"string\");\n\n    return this._generateImport(\n      this._applyDefaults(importedSourceIn, opts),\n      importName,\n    );\n  }\n\n  addNamespace(importedSourceIn: string, opts: Partial<ImportOptions>) {\n    return this._generateImport(\n      this._applyDefaults(importedSourceIn, opts),\n      null,\n    );\n  }\n\n  addSideEffect(importedSourceIn: string, opts: Partial<ImportOptions>) {\n    return this._generateImport(\n      this._applyDefaults(importedSourceIn, opts),\n      void 0,\n    );\n  }\n\n  _applyDefaults(\n    importedSource: string | Partial<ImportOptions>,\n    opts: Partial<ImportOptions> | undefined,\n    isInit = false,\n  ) {\n    let newOpts: ImportOptions;\n    if (typeof importedSource === \"string\") {\n      newOpts = { ...this._defaultOpts, importedSource, ...opts };\n    } else {\n      assert(!opts, \"Unexpected secondary arguments.\");\n      newOpts = { ...this._defaultOpts, ...importedSource };\n    }\n\n    if (!isInit && opts) {\n      if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;\n      if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;\n    }\n    return newOpts;\n  }\n\n  _generateImport(\n    opts: Partial<ImportOptions>,\n    importName: string | null | undefined,\n  ) {\n    const isDefault = importName === \"default\";\n    const isNamed = !!importName && !isDefault;\n    const isNamespace = importName === null;\n\n    const {\n      importedSource,\n      importedType,\n      importedInterop,\n      importingInterop,\n      ensureLiveReference,\n      ensureNoContext,\n      nameHint,\n      importPosition,\n\n      // Not meant for public usage. Allows code that absolutely must control\n      // ordering to set a specific hoist value on the import nodes.\n      // This is ignored when \"importPosition\" is \"after\".\n      blockHoist,\n    } = opts;\n\n    // Provide a hint for generateUidIdentifier for the local variable name\n    // to use for the import, if the code will generate a simple assignment\n    // to a variable.\n    let name = nameHint || importName;\n\n    const isMod = isModule(this._programPath);\n    const isModuleForNode = isMod && importingInterop === \"node\";\n    const isModuleForBabel = isMod && importingInterop === \"babel\";\n\n    if (importPosition === \"after\" && !isMod) {\n      throw new Error(`\"importPosition\": \"after\" is only supported in modules`);\n    }\n\n    const builder = new ImportBuilder(\n      importedSource,\n      this._programScope,\n      this._hub,\n    );\n\n    if (importedType === \"es6\") {\n      if (!isModuleForNode && !isModuleForBabel) {\n        throw new Error(\"Cannot import an ES6 module from CommonJS\");\n      }\n\n      // import * as namespace from ''; namespace\n      // import def from ''; def\n      // import { named } from ''; named\n      builder.import();\n      if (isNamespace) {\n        builder.namespace(nameHint || importedSource);\n      } else if (isDefault || isNamed) {\n        builder.named(name, importName);\n      }\n    } else if (importedType !== \"commonjs\") {\n      throw new Error(`Unexpected interopType \"${importedType}\"`);\n    } else if (importedInterop === \"babel\") {\n      if (isModuleForNode) {\n        // import _tmp from ''; var namespace = interopRequireWildcard(_tmp); namespace\n        // import _tmp from ''; var def = interopRequireDefault(_tmp).default; def\n        // import _tmp from ''; _tmp.named\n        name = name !== \"default\" ? name : importedSource;\n        const es6Default = `${importedSource}$es6Default`;\n\n        builder.import();\n        if (isNamespace) {\n          builder\n            .default(es6Default)\n            .var(name || importedSource)\n            .wildcardInterop();\n        } else if (isDefault) {\n          if (ensureLiveReference) {\n            builder\n              .default(es6Default)\n              .var(name || importedSource)\n              .defaultInterop()\n              .read(\"default\");\n          } else {\n            builder\n              .default(es6Default)\n              .var(name)\n              .defaultInterop()\n              .prop(importName);\n          }\n        } else if (isNamed) {\n          builder.default(es6Default).read(importName);\n        }\n      } else if (isModuleForBabel) {\n        // import * as namespace from ''; namespace\n        // import def from ''; def\n        // import { named } from ''; named\n        builder.import();\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        // var namespace = interopRequireWildcard(require(''));\n        // var def = interopRequireDefault(require('')).default; def\n        // var named = require('').named; named\n        builder.require();\n        if (isNamespace) {\n          builder.var(name || importedSource).wildcardInterop();\n        } else if ((isDefault || isNamed) && ensureLiveReference) {\n          if (isDefault) {\n            name = name !== \"default\" ? name : importedSource;\n            builder.var(name).read(importName);\n            builder.defaultInterop();\n          } else {\n            builder.var(importedSource).read(importName);\n          }\n        } else if (isDefault) {\n          builder.var(name).defaultInterop().prop(importName);\n        } else if (isNamed) {\n          builder.var(name).prop(importName);\n        }\n      }\n    } else if (importedInterop === \"compiled\") {\n      if (isModuleForNode) {\n        // import namespace from ''; namespace\n        // import namespace from ''; namespace.default\n        // import namespace from ''; namespace.named\n\n        builder.import();\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        // import * as namespace from ''; namespace\n        // import def from ''; def\n        // import { named } from ''; named\n        // Note: These lookups will break if the module has no __esModule set,\n        // hence the warning that 'compiled' will not work on standard CommonJS.\n\n        builder.import();\n        if (isNamespace) {\n          builder.namespace(name || importedSource);\n        } else if (isDefault || isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        // var namespace = require(''); namespace\n        // var namespace = require(''); namespace.default\n        // var namespace = require(''); namespace.named\n        // var named = require('').named;\n        builder.require();\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault || isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.prop(importName).var(name);\n          }\n        }\n      }\n    } else if (importedInterop === \"uncompiled\") {\n      if (isDefault && ensureLiveReference) {\n        throw new Error(\"No live reference for commonjs default\");\n      }\n\n      if (isModuleForNode) {\n        // import namespace from ''; namespace\n        // import def from ''; def;\n        // import namespace from ''; namespace.named\n        builder.import();\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.default(importedSource).read(name);\n        }\n      } else if (isModuleForBabel) {\n        // import namespace from '';\n        // import def from '';\n        // import { named } from ''; named;\n        // Note: These lookups will break if the module has __esModule set,\n        // hence the warning that 'uncompiled' will not work on ES6 transpiled\n        // to CommonJS.\n\n        builder.import();\n        if (isNamespace) {\n          builder.default(name || importedSource);\n        } else if (isDefault) {\n          builder.default(name);\n        } else if (isNamed) {\n          builder.named(name, importName);\n        }\n      } else {\n        // var namespace = require(''); namespace\n        // var def = require(''); def\n        // var namespace = require(''); namespace.named\n        // var named = require('').named;\n        builder.require();\n        if (isNamespace) {\n          builder.var(name || importedSource);\n        } else if (isDefault) {\n          builder.var(name);\n        } else if (isNamed) {\n          if (ensureLiveReference) {\n            builder.var(importedSource).read(name);\n          } else {\n            builder.var(name).prop(importName);\n          }\n        }\n      }\n    } else {\n      throw new Error(`Unknown importedInterop \"${importedInterop}\".`);\n    }\n\n    const { statements, resultName } = builder.done();\n\n    this._insertStatements(statements, importPosition, blockHoist);\n\n    if (\n      (isDefault || isNamed) &&\n      ensureNoContext &&\n      resultName.type !== \"Identifier\"\n    ) {\n      return sequenceExpression([numericLiteral(0), resultName]);\n    }\n    return resultName;\n  }\n\n  _insertStatements(\n    statements: t.Statement[],\n    importPosition = \"before\",\n    blockHoist = 3,\n  ) {\n    if (importPosition === \"after\") {\n      if (this._insertStatementsAfter(statements)) return;\n    } else {\n      if (this._insertStatementsBefore(statements, blockHoist)) return;\n    }\n\n    this._programPath.unshiftContainer(\"body\", statements);\n  }\n\n  _insertStatementsBefore(statements: t.Statement[], blockHoist: number) {\n    if (\n      statements.length === 1 &&\n      isImportDeclaration(statements[0]) &&\n      isValueImport(statements[0])\n    ) {\n      const firstImportDecl = this._programPath\n        .get(\"body\")\n        .find((p): p is NodePath<t.ImportDeclaration> => {\n          return p.isImportDeclaration() && isValueImport(p.node);\n        });\n\n      if (\n        firstImportDecl?.node.source.value === statements[0].source.value &&\n        maybeAppendImportSpecifiers(firstImportDecl.node, statements[0])\n      ) {\n        return true;\n      }\n    }\n\n    statements.forEach(node => {\n      // @ts-expect-error handle _blockHoist\n      node._blockHoist = blockHoist;\n    });\n\n    const targetPath = this._programPath.get(\"body\").find(p => {\n      // @ts-expect-error todo(flow->ts): avoid mutations\n      const val = p.node._blockHoist;\n      return Number.isFinite(val) && val < 4;\n    });\n\n    if (targetPath) {\n      targetPath.insertBefore(statements);\n      return true;\n    }\n\n    return false;\n  }\n\n  _insertStatementsAfter(statements: t.Statement[]): boolean {\n    const statementsSet = new Set(statements);\n    const importDeclarations: Map<string, t.ImportDeclaration[]> = new Map();\n\n    for (const statement of statements) {\n      if (isImportDeclaration(statement) && isValueImport(statement)) {\n        const source = statement.source.value;\n        if (!importDeclarations.has(source)) importDeclarations.set(source, []);\n        importDeclarations.get(source).push(statement);\n      }\n    }\n\n    let lastImportPath = null;\n    for (const bodyStmt of this._programPath.get(\"body\")) {\n      if (bodyStmt.isImportDeclaration() && isValueImport(bodyStmt.node)) {\n        lastImportPath = bodyStmt;\n\n        const source = bodyStmt.node.source.value;\n        const newImports = importDeclarations.get(source);\n        if (!newImports) continue;\n\n        for (const decl of newImports) {\n          if (!statementsSet.has(decl)) continue;\n          if (maybeAppendImportSpecifiers(bodyStmt.node, decl)) {\n            statementsSet.delete(decl);\n          }\n        }\n      }\n    }\n\n    if (statementsSet.size === 0) return true;\n\n    if (lastImportPath) lastImportPath.insertAfter(Array.from(statementsSet));\n\n    return !!lastImportPath;\n  }\n}\n\nfunction isValueImport(node: t.ImportDeclaration) {\n  return node.importKind !== \"type\" && node.importKind !== \"typeof\";\n}\n\nfunction hasNamespaceImport(node: t.ImportDeclaration) {\n  return (\n    (node.specifiers.length === 1 &&\n      node.specifiers[0].type === \"ImportNamespaceSpecifier\") ||\n    (node.specifiers.length === 2 &&\n      node.specifiers[1].type === \"ImportNamespaceSpecifier\")\n  );\n}\n\nfunction hasDefaultImport(node: t.ImportDeclaration) {\n  return (\n    node.specifiers.length > 0 &&\n    node.specifiers[0].type === \"ImportDefaultSpecifier\"\n  );\n}\n\nfunction maybeAppendImportSpecifiers(\n  target: t.ImportDeclaration,\n  source: t.ImportDeclaration,\n): boolean {\n  if (!target.specifiers.length) {\n    target.specifiers = source.specifiers;\n    return true;\n  }\n  if (!source.specifiers.length) return true;\n\n  if (hasNamespaceImport(target) || hasNamespaceImport(source)) return false;\n\n  if (hasDefaultImport(source)) {\n    if (hasDefaultImport(target)) {\n      source.specifiers[0] = importSpecifier(\n        source.specifiers[0].local,\n        identifier(\"default\"),\n      );\n    } else {\n      target.specifiers.unshift(source.specifiers.shift());\n    }\n  }\n\n  target.specifiers.push(...source.specifiers);\n\n  return true;\n}\n","import ImportInjector, { type ImportOptions } from \"./import-injector.ts\";\nimport type { NodePath } from \"@babel/traverse\";\nimport type * as t from \"@babel/types\";\n\nexport { ImportInjector };\n\nexport { default as isModule } from \"./is-module.ts\";\n\nexport function addDefault(\n  path: NodePath,\n  importedSource: string,\n  opts?: Partial<ImportOptions>,\n) {\n  return new ImportInjector(path).addDefault(importedSource, opts);\n}\n\nfunction addNamed(\n  path: NodePath,\n  name: string,\n  importedSource: string,\n  opts?: Omit<\n    Partial<ImportOptions>,\n    \"ensureLiveReference\" | \"ensureNoContext\"\n  >,\n): t.Identifier;\nfunction addNamed(\n  path: NodePath,\n  name: string,\n  importedSource: string,\n  opts?: Omit<Partial<ImportOptions>, \"ensureLiveReference\"> & {\n    ensureLiveReference: true;\n  },\n): t.MemberExpression;\nfunction addNamed(\n  path: NodePath,\n  name: string,\n  importedSource: string,\n  opts?: Omit<Partial<ImportOptions>, \"ensureNoContext\"> & {\n    ensureNoContext: true;\n  },\n): t.SequenceExpression;\n/**\n * add a named import to the program path of given path\n *\n * @export\n * @param {NodePath} path The starting path to find a program path\n * @param {string} name The name of the generated binding. Babel will prefix it with `_`\n * @param {string} importedSource The source of the import\n * @param {Partial<ImportOptions>} [opts]\n * @returns {t.Identifier | t.MemberExpression | t.SequenceExpression} If opts.ensureNoContext is true, returns a SequenceExpression,\n *   else if opts.ensureLiveReference is true, returns a MemberExpression, else returns an Identifier\n */\nfunction addNamed(\n  path: NodePath,\n  name: string,\n  importedSource: string,\n  opts?: Partial<ImportOptions>,\n) {\n  return new ImportInjector(path).addNamed(name, importedSource, opts);\n}\nexport { addNamed };\n\nexport function addNamespace(\n  path: NodePath,\n  importedSource: string,\n  opts?: Partial<ImportOptions>,\n) {\n  return new ImportInjector(path).addNamespace(importedSource, opts);\n}\n\nexport function addSideEffect(\n  path: NodePath,\n  importedSource: string,\n  opts?: Partial<ImportOptions>,\n) {\n  return new ImportInjector(path).addSideEffect(importedSource, opts);\n}\n","import { types as t } from \"@babel/core\";\nimport traverse, { visitors, type NodePath } from \"@babel/traverse\";\n\n/**\n * A lazily constructed visitor to walk the tree, rewriting all `this` references in the\n * top-level scope to be `void 0` (undefined).\n *\n */\nlet rewriteThisVisitor: Parameters<typeof traverse>[1];\n\nexport default function rewriteThis(programPath: NodePath) {\n  if (!rewriteThisVisitor) {\n    rewriteThisVisitor = visitors.environmentVisitor({\n      ThisExpression(path) {\n        path.replaceWith(t.unaryExpression(\"void\", t.numericLiteral(0), true));\n      },\n    });\n    rewriteThisVisitor.noScope = true;\n  }\n  // Rewrite \"this\" to be \"undefined\".\n  traverse(programPath.node, rewriteThisVisitor);\n}\n","import { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor, Scope } from \"@babel/core\";\n\nimport type { ModuleMetadata } from \"./normalize-and-load-metadata.ts\";\n\ninterface RewriteReferencesVisitorState {\n  exported: Map<any, any>;\n  metadata: ModuleMetadata;\n  requeueInParent: (path: NodePath) => void;\n  scope: Scope;\n  imported: Map<any, any>;\n  buildImportReference: (\n    [source, importName, localName]: readonly [string, string, string],\n    identNode: t.Identifier | t.CallExpression | t.JSXIdentifier,\n  ) => any;\n  seen: WeakSet<object>;\n}\n\ninterface RewriteBindingInitVisitorState {\n  exported: Map<any, any>;\n  metadata: ModuleMetadata;\n  requeueInParent: (path: NodePath) => void;\n  scope: Scope;\n}\n\nfunction isInType(path: NodePath) {\n  do {\n    switch (path.parent.type) {\n      case \"TSTypeAnnotation\":\n      case \"TSTypeAliasDeclaration\":\n      case \"TSTypeReference\":\n      case \"TypeAnnotation\":\n      case \"TypeAlias\":\n        return true;\n      case \"ExportSpecifier\":\n        return (\n          (\n            path.parentPath.parent as\n              | t.ExportDefaultDeclaration\n              | t.ExportNamedDeclaration\n          ).exportKind === \"type\"\n        );\n      default:\n        if (path.parentPath.isStatement() || path.parentPath.isExpression()) {\n          return false;\n        }\n    }\n  } while ((path = path.parentPath));\n}\n\nexport default function rewriteLiveReferences(\n  programPath: NodePath<t.Program>,\n  metadata: ModuleMetadata,\n  wrapReference: (ref: t.Expression, payload: unknown) => null | t.Expression,\n) {\n  const imported = new Map();\n  const exported = new Map();\n  const requeueInParent = (path: NodePath) => {\n    // Manually re-queue `exports.default =` expressions so that the ES3\n    // transform has an opportunity to convert them. Ideally this would\n    // happen automatically from the replaceWith above. See #4140 for\n    // more info.\n    programPath.requeue(path);\n  };\n\n  for (const [source, data] of metadata.source) {\n    for (const [localName, importName] of data.imports) {\n      imported.set(localName, [source, importName, null]);\n    }\n    for (const localName of data.importsNamespace) {\n      imported.set(localName, [source, null, localName]);\n    }\n  }\n\n  for (const [local, data] of metadata.local) {\n    let exportMeta = exported.get(local);\n    if (!exportMeta) {\n      exportMeta = [];\n      exported.set(local, exportMeta);\n    }\n\n    exportMeta.push(...data.names);\n  }\n\n  // Rewrite initialization of bindings to update exports.\n  const rewriteBindingInitVisitorState: RewriteBindingInitVisitorState = {\n    metadata,\n    requeueInParent,\n    scope: programPath.scope,\n    exported, // local name => exported name list\n  };\n  programPath.traverse(\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    rewriteBindingInitVisitor,\n    rewriteBindingInitVisitorState,\n  );\n\n  // Rewrite reads/writes from imports and exports to have the correct behavior.\n  const rewriteReferencesVisitorState: RewriteReferencesVisitorState = {\n    seen: new WeakSet(),\n    metadata,\n    requeueInParent,\n    scope: programPath.scope,\n    imported, // local / import\n    exported, // local name => exported name list\n    buildImportReference([source, importName, localName], identNode) {\n      const meta = metadata.source.get(source);\n      meta.referenced = true;\n\n      if (localName) {\n        if (meta.wrap) {\n          // @ts-expect-error Fixme: we should handle the case when identNode is a JSXIdentifier\n          identNode = wrapReference(identNode, meta.wrap) ?? identNode;\n        }\n        return identNode;\n      }\n\n      let namespace: t.Expression = t.identifier(meta.name);\n      if (meta.wrap) {\n        namespace = wrapReference(namespace, meta.wrap) ?? namespace;\n      }\n\n      if (importName === \"default\" && meta.interop === \"node-default\") {\n        return namespace;\n      }\n\n      const computed = metadata.stringSpecifiers.has(importName);\n\n      return t.memberExpression(\n        namespace,\n        computed ? t.stringLiteral(importName) : t.identifier(importName),\n        computed,\n      );\n    },\n  };\n  // eslint-disable-next-line @typescript-eslint/no-use-before-define\n  programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState);\n}\n\n/**\n * A visitor to inject export update statements during binding initialization.\n */\nconst rewriteBindingInitVisitor: Visitor<RewriteBindingInitVisitorState> = {\n  Scope(path) {\n    path.skip();\n  },\n  ClassDeclaration(path) {\n    const { requeueInParent, exported, metadata } = this;\n\n    const { id } = path.node;\n    if (!id) throw new Error(\"Expected class to have a name\");\n    const localName = id.name;\n\n    const exportNames = exported.get(localName) || [];\n    if (exportNames.length > 0) {\n      const statement = t.expressionStatement(\n        // eslint-disable-next-line @typescript-eslint/no-use-before-define\n        buildBindingExportAssignmentExpression(\n          metadata,\n          exportNames,\n          t.identifier(localName),\n          path.scope,\n        ),\n      );\n      // @ts-expect-error todo(flow->ts): avoid mutations\n      statement._blockHoist = path.node._blockHoist;\n\n      requeueInParent(path.insertAfter(statement)[0]);\n    }\n  },\n  VariableDeclaration(path) {\n    const { requeueInParent, exported, metadata } = this;\n\n    const isVar = path.node.kind === \"var\";\n\n    for (const decl of path.get(\"declarations\")) {\n      const { id } = decl.node;\n      let { init } = decl.node;\n      if (\n        t.isIdentifier(id) &&\n        exported.has(id.name) &&\n        !t.isArrowFunctionExpression(init) &&\n        (!t.isFunctionExpression(init) || init.id) &&\n        (!t.isClassExpression(init) || init.id)\n      ) {\n        if (!init) {\n          if (isVar) {\n            // This variable might have already been assigned to, and the\n            // uninitalized declaration doesn't set it to `undefined` and does\n            // not updated the exported value.\n            continue;\n          } else {\n            init = path.scope.buildUndefinedNode();\n          }\n        }\n        // eslint-disable-next-line @typescript-eslint/no-use-before-define\n        decl.node.init = buildBindingExportAssignmentExpression(\n          metadata,\n          exported.get(id.name),\n          init,\n          path.scope,\n        );\n        requeueInParent(decl.get(\"init\"));\n      } else {\n        for (const localName of Object.keys(\n          decl.getOuterBindingIdentifiers(),\n        )) {\n          if (exported.has(localName)) {\n            const statement = t.expressionStatement(\n              // eslint-disable-next-line @typescript-eslint/no-use-before-define\n              buildBindingExportAssignmentExpression(\n                metadata,\n                exported.get(localName),\n                t.identifier(localName),\n                path.scope,\n              ),\n            );\n            // @ts-expect-error todo(flow->ts): avoid mutations\n            statement._blockHoist = path.node._blockHoist;\n\n            requeueInParent(path.insertAfter(statement)[0]);\n          }\n        }\n      }\n    }\n  },\n};\n\nconst buildBindingExportAssignmentExpression = (\n  metadata: ModuleMetadata,\n  exportNames: string[],\n  localExpr: t.Expression,\n  scope: Scope,\n) => {\n  const exportsObjectName = metadata.exportName;\n  for (\n    let currentScope = scope;\n    currentScope != null;\n    currentScope = currentScope.parent\n  ) {\n    if (currentScope.hasOwnBinding(exportsObjectName)) {\n      currentScope.rename(exportsObjectName);\n    }\n  }\n  return (exportNames || []).reduce((expr, exportName) => {\n    // class Foo {} export { Foo, Foo as Bar };\n    // as\n    // class Foo {} exports.Foo = exports.Bar = Foo;\n    const { stringSpecifiers } = metadata;\n    const computed = stringSpecifiers.has(exportName);\n    return t.assignmentExpression(\n      \"=\",\n      t.memberExpression(\n        t.identifier(exportsObjectName),\n        computed ? t.stringLiteral(exportName) : t.identifier(exportName),\n        /* computed */ computed,\n      ),\n      expr,\n    );\n  }, localExpr);\n};\n\nconst buildImportThrow = (localName: string) => {\n  return template.expression.ast`\n    (function() {\n      throw new Error('\"' + '${localName}' + '\" is read-only.');\n    })()\n  `;\n};\n\nconst rewriteReferencesVisitor: Visitor<RewriteReferencesVisitorState> = {\n  ReferencedIdentifier(path) {\n    const { seen, buildImportReference, scope, imported, requeueInParent } =\n      this;\n    if (seen.has(path.node)) return;\n    seen.add(path.node);\n\n    const localName = path.node.name;\n\n    const importData = imported.get(localName);\n    if (importData) {\n      if (isInType(path)) {\n        throw path.buildCodeFrameError(\n          `Cannot transform the imported binding \"${localName}\" since it's also used in a type annotation. ` +\n            `Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.`,\n        );\n      }\n\n      const localBinding = path.scope.getBinding(localName);\n      const rootBinding = scope.getBinding(localName);\n\n      // redeclared in this scope\n      if (rootBinding !== localBinding) return;\n\n      const ref = buildImportReference(importData, path.node);\n\n      // Preserve the binding location so that sourcemaps are nicer.\n      ref.loc = path.node.loc;\n\n      if (\n        (path.parentPath.isCallExpression({ callee: path.node }) ||\n          path.parentPath.isOptionalCallExpression({ callee: path.node }) ||\n          path.parentPath.isTaggedTemplateExpression({ tag: path.node })) &&\n        t.isMemberExpression(ref)\n      ) {\n        path.replaceWith(t.sequenceExpression([t.numericLiteral(0), ref]));\n      } else if (path.isJSXIdentifier() && t.isMemberExpression(ref)) {\n        const { object, property } = ref;\n        path.replaceWith(\n          t.jsxMemberExpression(\n            // @ts-expect-error todo(flow->ts): possible bug `object` might not have a name\n            t.jsxIdentifier(object.name),\n            // @ts-expect-error todo(flow->ts): possible bug `property` might not have a name\n            t.jsxIdentifier(property.name),\n          ),\n        );\n      } else {\n        path.replaceWith(ref);\n      }\n\n      requeueInParent(path);\n\n      // The path could have been replaced with an identifier that would\n      // otherwise be re-visited, so we skip processing its children.\n      path.skip();\n    }\n  },\n\n  UpdateExpression(path) {\n    const {\n      scope,\n      seen,\n      imported,\n      exported,\n      requeueInParent,\n      buildImportReference,\n    } = this;\n\n    if (seen.has(path.node)) return;\n\n    seen.add(path.node);\n\n    const arg = path.get(\"argument\");\n\n    // No change needed\n    if (arg.isMemberExpression()) return;\n\n    const update = path.node;\n\n    if (arg.isIdentifier()) {\n      const localName = arg.node.name;\n\n      // redeclared in this scope\n      if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {\n        return;\n      }\n\n      const exportedNames = exported.get(localName);\n      const importData = imported.get(localName);\n\n      if (exportedNames?.length > 0 || importData) {\n        if (importData) {\n          path.replaceWith(\n            t.assignmentExpression(\n              // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n              (update.operator[0] + \"=\") as t.AssignmentExpression[\"operator\"],\n              buildImportReference(importData, arg.node),\n              buildImportThrow(localName),\n            ),\n          );\n        } else if (update.prefix) {\n          // ++foo\n          // =>   exports.foo = ++foo\n          path.replaceWith(\n            buildBindingExportAssignmentExpression(\n              this.metadata,\n              exportedNames,\n              t.cloneNode(update),\n              path.scope,\n            ),\n          );\n        } else {\n          // foo++\n          // =>   (ref = i++, exports.i = i, ref)\n          const ref = scope.generateDeclaredUidIdentifier(localName);\n\n          path.replaceWith(\n            t.sequenceExpression([\n              t.assignmentExpression(\n                \"=\",\n                t.cloneNode(ref),\n                t.cloneNode(update),\n              ),\n              buildBindingExportAssignmentExpression(\n                this.metadata,\n                exportedNames,\n                t.identifier(localName),\n                path.scope,\n              ),\n              t.cloneNode(ref),\n            ]),\n          );\n        }\n      }\n    }\n\n    requeueInParent(path);\n    path.skip();\n  },\n\n  AssignmentExpression: {\n    exit(path) {\n      const {\n        scope,\n        seen,\n        imported,\n        exported,\n        requeueInParent,\n        buildImportReference,\n      } = this;\n\n      if (seen.has(path.node)) return;\n      seen.add(path.node);\n\n      const left = path.get(\"left\");\n\n      // No change needed\n      if (left.isMemberExpression()) return;\n\n      if (left.isIdentifier()) {\n        // Simple update-assign foo += 1; export { foo };\n        // =>   exports.foo =  (foo += 1);\n        const localName = left.node.name;\n\n        // redeclared in this scope\n        if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {\n          return;\n        }\n\n        const exportedNames = exported.get(localName);\n        const importData = imported.get(localName);\n        if (exportedNames?.length > 0 || importData) {\n          const assignment = path.node;\n\n          if (importData) {\n            assignment.left = buildImportReference(importData, left.node);\n\n            assignment.right = t.sequenceExpression([\n              assignment.right,\n              buildImportThrow(localName),\n            ]);\n          }\n\n          const { operator } = assignment;\n          let newExpr;\n          if (operator === \"=\") {\n            newExpr = assignment;\n          } else if (\n            operator === \"&&=\" ||\n            operator === \"||=\" ||\n            operator === \"??=\"\n          ) {\n            newExpr = t.assignmentExpression(\n              \"=\",\n              assignment.left,\n              t.logicalExpression(\n                operator.slice(0, -1) as t.LogicalExpression[\"operator\"],\n                t.cloneNode(assignment.left) as t.Expression,\n                assignment.right,\n              ),\n            );\n          } else {\n            newExpr = t.assignmentExpression(\n              \"=\",\n              assignment.left,\n              t.binaryExpression(\n                operator.slice(0, -1) as t.BinaryExpression[\"operator\"],\n                t.cloneNode(assignment.left) as t.Expression,\n                assignment.right,\n              ),\n            );\n          }\n\n          path.replaceWith(\n            buildBindingExportAssignmentExpression(\n              this.metadata,\n              exportedNames,\n              newExpr,\n              path.scope,\n            ),\n          );\n\n          requeueInParent(path);\n\n          path.skip();\n        }\n      } else {\n        const ids = left.getOuterBindingIdentifiers();\n        const programScopeIds = Object.keys(ids).filter(\n          localName =>\n            scope.getBinding(localName) === path.scope.getBinding(localName),\n        );\n        const id = programScopeIds.find(localName => imported.has(localName));\n\n        if (id) {\n          path.node.right = t.sequenceExpression([\n            path.node.right,\n            buildImportThrow(id),\n          ]);\n        }\n\n        // Complex ({a, b, c} = {}); export { a, c };\n        // =>   ({a, b, c} = {}), (exports.a = a, exports.c = c);\n        const items: t.Expression[] = [];\n        programScopeIds.forEach(localName => {\n          const exportedNames = exported.get(localName) || [];\n          if (exportedNames.length > 0) {\n            items.push(\n              buildBindingExportAssignmentExpression(\n                this.metadata,\n                exportedNames,\n                t.identifier(localName),\n                path.scope,\n              ),\n            );\n          }\n        });\n\n        if (items.length > 0) {\n          let node: t.Node = t.sequenceExpression(items);\n          if (path.parentPath.isExpressionStatement()) {\n            node = t.expressionStatement(node);\n            // @ts-expect-error todo(flow->ts): avoid mutations\n            node._blockHoist = path.parentPath.node._blockHoist;\n          }\n\n          const statement = path.insertAfter(node)[0];\n          requeueInParent(statement);\n        }\n      }\n    },\n  },\n  ForXStatement(path) {\n    const { scope, node } = path;\n    const { left } = node;\n    const { exported, imported, scope: programScope } = this;\n\n    if (!t.isVariableDeclaration(left)) {\n      let didTransformExport = false,\n        importConstViolationName;\n      const loopBodyScope = path.get(\"body\").scope;\n      for (const name of Object.keys(t.getOuterBindingIdentifiers(left))) {\n        if (programScope.getBinding(name) === scope.getBinding(name)) {\n          if (exported.has(name)) {\n            didTransformExport = true;\n            if (loopBodyScope.hasOwnBinding(name)) {\n              loopBodyScope.rename(name);\n            }\n          }\n          if (imported.has(name) && !importConstViolationName) {\n            importConstViolationName = name;\n          }\n        }\n      }\n      if (!didTransformExport && !importConstViolationName) {\n        return;\n      }\n\n      path.ensureBlock();\n      const bodyPath = path.get(\"body\") as NodePath<t.BlockStatement>;\n\n      const newLoopId = scope.generateUidIdentifierBasedOnNode(left);\n      path\n        .get(\"left\")\n        .replaceWith(\n          t.variableDeclaration(\"let\", [\n            t.variableDeclarator(t.cloneNode(newLoopId)),\n          ]),\n        );\n      scope.registerDeclaration(path.get(\"left\"));\n\n      if (didTransformExport) {\n        bodyPath.unshiftContainer(\n          \"body\",\n          t.expressionStatement(t.assignmentExpression(\"=\", left, newLoopId)),\n        );\n      }\n      if (importConstViolationName) {\n        bodyPath.unshiftContainer(\n          \"body\",\n          t.expressionStatement(buildImportThrow(importConstViolationName)),\n        );\n      }\n    }\n  },\n};\n","import { basename, extname } from \"path\";\nimport type { types as t, NodePath } from \"@babel/core\";\n\nimport { isIdentifierName } from \"@babel/helper-validator-identifier\";\n\nexport interface ModuleMetadata {\n  exportName: string;\n  // The name of the variable that will reference an object containing export names.\n  exportNameListName: null | string;\n  hasExports: boolean;\n  // Lookup from local binding to export information.\n  local: Map<string, LocalExportMetadata>;\n  // Lookup of source file to source file metadata.\n  source: Map<string, SourceModuleMetadata>;\n  // List of names that should only be printed as string literals.\n  // i.e. `import { \"any unicode\" as foo } from \"some-module\"`\n  // `stringSpecifiers` is Set(1) [\"any unicode\"]\n  // In most cases `stringSpecifiers` is an empty Set\n  stringSpecifiers: Set<string>;\n}\n\nexport type InteropType =\n  | \"default\" // Babel interop for default-only imports\n  | \"namespace\" // Babel interop for namespace or default+named imports\n  | \"node-default\" // Node.js interop for default-only imports\n  | \"node-namespace\" // Node.js interop for namespace or default+named imports\n  | \"none\"; // No interop, or named-only imports\n\nexport type ImportInterop =\n  | \"none\"\n  | \"babel\"\n  | \"node\"\n  | ((source: string, filename?: string) => \"none\" | \"babel\" | \"node\");\n\nexport interface SourceModuleMetadata {\n  // A unique variable name to use for this namespace object. Centralized for simplicity.\n  name: string;\n  loc: t.SourceLocation | undefined | null;\n  interop: InteropType;\n  // Local binding to reference from this source namespace. Key: Local name, value: Import name\n  imports: Map<string, string>;\n  // Local names that reference namespace object.\n  importsNamespace: Set<string>;\n  // Reexports to create for namespace. Key: Export name, value: Import name\n  reexports: Map<string, string>;\n  // List of names to re-export namespace as.\n  reexportNamespace: Set<string>;\n  // Tracks if the source should be re-exported.\n  reexportAll: null | {\n    loc: t.SourceLocation | undefined | null;\n  };\n  wrap?: unknown;\n  referenced: boolean;\n}\n\nexport interface LocalExportMetadata {\n  names: Array<string>; // names of exports,\n  kind: \"import\" | \"hoisted\" | \"block\" | \"var\";\n}\n\n/**\n * Check if the module has any exports that need handling.\n */\nexport function hasExports(metadata: ModuleMetadata) {\n  return metadata.hasExports;\n}\n\n/**\n * Check if a given source is an anonymous import, e.g. \"import 'foo';\"\n */\nexport function isSideEffectImport(source: SourceModuleMetadata) {\n  return (\n    source.imports.size === 0 &&\n    source.importsNamespace.size === 0 &&\n    source.reexports.size === 0 &&\n    source.reexportNamespace.size === 0 &&\n    !source.reexportAll\n  );\n}\n\nexport function validateImportInteropOption(\n  importInterop: any,\n): importInterop is ImportInterop {\n  if (\n    typeof importInterop !== \"function\" &&\n    importInterop !== \"none\" &&\n    importInterop !== \"babel\" &&\n    importInterop !== \"node\"\n  ) {\n    throw new Error(\n      `.importInterop must be one of \"none\", \"babel\", \"node\", or a function returning one of those values (received ${importInterop}).`,\n    );\n  }\n  return importInterop;\n}\n\nfunction resolveImportInterop(\n  importInterop: ImportInterop,\n  source: string,\n  filename: string | undefined,\n) {\n  if (typeof importInterop === \"function\") {\n    return validateImportInteropOption(importInterop(source, filename));\n  }\n  return importInterop;\n}\n\n/**\n * Remove all imports and exports from the file, and return all metadata\n * needed to reconstruct the module's behavior.\n */\nexport default function normalizeModuleAndLoadMetadata(\n  programPath: NodePath<t.Program>,\n  exportName: string,\n  {\n    importInterop,\n    initializeReexports = false,\n    getWrapperPayload,\n    esNamespaceOnly = false,\n    filename,\n  }: {\n    importInterop: ImportInterop;\n    initializeReexports: boolean | void;\n    getWrapperPayload?: (\n      source: string,\n      metadata: SourceModuleMetadata,\n      importNodes: t.Node[],\n    ) => unknown;\n    esNamespaceOnly: boolean;\n    filename: string;\n  },\n): ModuleMetadata {\n  if (!exportName) {\n    exportName = programPath.scope.generateUidIdentifier(\"exports\").name;\n  }\n  const stringSpecifiers = new Set<string>();\n\n  nameAnonymousExports(programPath);\n\n  const { local, sources, hasExports } = getModuleMetadata(\n    programPath,\n    { initializeReexports, getWrapperPayload },\n    stringSpecifiers,\n  );\n\n  removeImportExportDeclarations(programPath);\n\n  // Reuse the imported namespace name if there is one.\n  for (const [source, metadata] of sources) {\n    const { importsNamespace, imports } = metadata;\n    // If there is at least one namespace import and other imports, it may collipse with local ident, can be seen in issue 15879.\n    if (importsNamespace.size > 0 && imports.size === 0) {\n      const [nameOfnamespace] = importsNamespace;\n      metadata.name = nameOfnamespace;\n    }\n\n    const resolvedInterop = resolveImportInterop(\n      importInterop,\n      source,\n      filename,\n    );\n\n    if (resolvedInterop === \"none\") {\n      metadata.interop = \"none\";\n    } else if (resolvedInterop === \"node\" && metadata.interop === \"namespace\") {\n      metadata.interop = \"node-namespace\";\n    } else if (resolvedInterop === \"node\" && metadata.interop === \"default\") {\n      metadata.interop = \"node-default\";\n    } else if (esNamespaceOnly && metadata.interop === \"namespace\") {\n      // Both the default and namespace interops pass through __esModule\n      // objects, but the namespace interop is used to enable Babel's\n      // destructuring-like interop behavior for normal CommonJS.\n      // Since some tooling has started to remove that behavior, we expose\n      // it as the `esNamespace` option.\n      metadata.interop = \"default\";\n    }\n  }\n\n  return {\n    exportName,\n    exportNameListName: null,\n    hasExports,\n    local,\n    source: sources,\n    stringSpecifiers,\n  };\n}\n\nfunction getExportSpecifierName(\n  path: NodePath,\n  stringSpecifiers: Set<string>,\n): string {\n  if (path.isIdentifier()) {\n    return path.node.name;\n  } else if (path.isStringLiteral()) {\n    const stringValue = path.node.value;\n    // add specifier value to `stringSpecifiers` only when it can not be converted to an identifier name\n    // i.e In `import { \"foo\" as bar }`\n    // we do not consider `\"foo\"` to be a `stringSpecifier` because we can treat it as\n    // `import { foo as bar }`\n    // This helps minimize the size of `stringSpecifiers` and reduce overhead of checking valid identifier names\n    // when building transpiled code from metadata\n    if (!isIdentifierName(stringValue)) {\n      stringSpecifiers.add(stringValue);\n    }\n    return stringValue;\n  } else {\n    throw new Error(\n      `Expected export specifier to be either Identifier or StringLiteral, got ${path.node.type}`,\n    );\n  }\n}\n\nfunction assertExportSpecifier(\n  path: NodePath,\n): asserts path is NodePath<t.ExportSpecifier> {\n  if (path.isExportSpecifier()) {\n    return;\n  } else if (path.isExportNamespaceSpecifier()) {\n    throw path.buildCodeFrameError(\n      \"Export namespace should be first transformed by `@babel/plugin-transform-export-namespace-from`.\",\n    );\n  } else {\n    throw path.buildCodeFrameError(\"Unexpected export specifier type\");\n  }\n}\n\n/**\n * Get metadata about the imports and exports present in this module.\n */\nfunction getModuleMetadata(\n  programPath: NodePath<t.Program>,\n  {\n    getWrapperPayload,\n    initializeReexports,\n  }: {\n    getWrapperPayload?: (\n      source: string,\n      metadata: SourceModuleMetadata,\n      importNodes: t.Node[],\n    ) => unknown;\n    initializeReexports: boolean | void;\n  },\n  stringSpecifiers: Set<string>,\n) {\n  const localData = getLocalExportMetadata(\n    programPath,\n    initializeReexports,\n    stringSpecifiers,\n  );\n\n  const importNodes = new Map<string, t.Node[]>();\n  const sourceData = new Map<string, SourceModuleMetadata>();\n  const getData = (sourceNode: t.StringLiteral, node: t.Node) => {\n    const source = sourceNode.value;\n\n    let data = sourceData.get(source);\n    if (!data) {\n      data = {\n        name: programPath.scope.generateUidIdentifier(\n          basename(source, extname(source)),\n        ).name,\n\n        interop: \"none\",\n\n        loc: null,\n\n        // Data about the requested sources and names.\n        imports: new Map(),\n        importsNamespace: new Set(),\n\n        // Metadata about data that is passed directly from source to export.\n        reexports: new Map(),\n        reexportNamespace: new Set(),\n        reexportAll: null,\n\n        wrap: null,\n\n        // @ts-expect-error lazy is not listed in the type.\n        // This is needed for compatibility with older version of the commonjs\n        // plusing.\n        // TODO(Babel 8): Remove this\n        get lazy() {\n          return this.wrap === \"lazy\";\n        },\n\n        referenced: false,\n      };\n      sourceData.set(source, data);\n      importNodes.set(source, [node]);\n    } else {\n      importNodes.get(source).push(node);\n    }\n    return data;\n  };\n  let hasExports = false;\n  programPath.get(\"body\").forEach(child => {\n    if (child.isImportDeclaration()) {\n      const data = getData(child.node.source, child.node);\n      if (!data.loc) data.loc = child.node.loc;\n\n      child.get(\"specifiers\").forEach(spec => {\n        if (spec.isImportDefaultSpecifier()) {\n          const localName = spec.get(\"local\").node.name;\n\n          data.imports.set(localName, \"default\");\n\n          const reexport = localData.get(localName);\n          if (reexport) {\n            localData.delete(localName);\n\n            reexport.names.forEach(name => {\n              data.reexports.set(name, \"default\");\n            });\n            data.referenced = true;\n          }\n        } else if (spec.isImportNamespaceSpecifier()) {\n          const localName = spec.get(\"local\").node.name;\n\n          data.importsNamespace.add(localName);\n          const reexport = localData.get(localName);\n          if (reexport) {\n            localData.delete(localName);\n\n            reexport.names.forEach(name => {\n              data.reexportNamespace.add(name);\n            });\n            data.referenced = true;\n          }\n        } else if (spec.isImportSpecifier()) {\n          const importName = getExportSpecifierName(\n            spec.get(\"imported\"),\n            stringSpecifiers,\n          );\n          const localName = spec.get(\"local\").node.name;\n\n          data.imports.set(localName, importName);\n\n          const reexport = localData.get(localName);\n          if (reexport) {\n            localData.delete(localName);\n\n            reexport.names.forEach(name => {\n              data.reexports.set(name, importName);\n            });\n            data.referenced = true;\n          }\n        }\n      });\n    } else if (child.isExportAllDeclaration()) {\n      hasExports = true;\n      const data = getData(child.node.source, child.node);\n      if (!data.loc) data.loc = child.node.loc;\n\n      data.reexportAll = {\n        loc: child.node.loc,\n      };\n      data.referenced = true;\n    } else if (child.isExportNamedDeclaration() && child.node.source) {\n      hasExports = true;\n      const data = getData(child.node.source, child.node);\n      if (!data.loc) data.loc = child.node.loc;\n\n      child.get(\"specifiers\").forEach(spec => {\n        assertExportSpecifier(spec);\n        const importName = getExportSpecifierName(\n          spec.get(\"local\"),\n          stringSpecifiers,\n        );\n        const exportName = getExportSpecifierName(\n          spec.get(\"exported\"),\n          stringSpecifiers,\n        );\n\n        data.reexports.set(exportName, importName);\n        data.referenced = true;\n\n        if (exportName === \"__esModule\") {\n          throw spec\n            .get(\"exported\")\n            .buildCodeFrameError('Illegal export \"__esModule\".');\n        }\n      });\n    } else if (\n      child.isExportNamedDeclaration() ||\n      child.isExportDefaultDeclaration()\n    ) {\n      hasExports = true;\n    }\n  });\n\n  for (const metadata of sourceData.values()) {\n    let needsDefault = false;\n    let needsNamed = false;\n\n    if (metadata.importsNamespace.size > 0) {\n      needsDefault = true;\n      needsNamed = true;\n    }\n\n    if (metadata.reexportAll) {\n      needsNamed = true;\n    }\n\n    for (const importName of metadata.imports.values()) {\n      if (importName === \"default\") needsDefault = true;\n      else needsNamed = true;\n    }\n    for (const importName of metadata.reexports.values()) {\n      if (importName === \"default\") needsDefault = true;\n      else needsNamed = true;\n    }\n\n    if (needsDefault && needsNamed) {\n      // TODO(logan): Using the namespace interop here is unfortunate. Revisit.\n      metadata.interop = \"namespace\";\n    } else if (needsDefault) {\n      metadata.interop = \"default\";\n    }\n  }\n\n  if (getWrapperPayload) {\n    for (const [source, metadata] of sourceData) {\n      metadata.wrap = getWrapperPayload(\n        source,\n        metadata,\n        importNodes.get(source),\n      );\n    }\n  }\n\n  return {\n    hasExports,\n    local: localData,\n    sources: sourceData,\n  };\n}\n\ntype ModuleBindingKind = \"import\" | \"hoisted\" | \"block\" | \"var\";\n/**\n * Get metadata about local variables that are exported.\n */\nfunction getLocalExportMetadata(\n  programPath: NodePath<t.Program>,\n  initializeReexports: boolean | void,\n  stringSpecifiers: Set<string>,\n): Map<string, LocalExportMetadata> {\n  const bindingKindLookup = new Map();\n\n  programPath.get(\"body\").forEach((child: NodePath) => {\n    let kind: ModuleBindingKind;\n    if (child.isImportDeclaration()) {\n      kind = \"import\";\n    } else {\n      if (child.isExportDefaultDeclaration()) {\n        child = child.get(\"declaration\");\n      }\n      if (child.isExportNamedDeclaration()) {\n        if (child.node.declaration) {\n          child = child.get(\"declaration\");\n        } else if (\n          initializeReexports &&\n          child.node.source &&\n          child.get(\"source\").isStringLiteral()\n        ) {\n          child.get(\"specifiers\").forEach(spec => {\n            assertExportSpecifier(spec);\n            bindingKindLookup.set(spec.get(\"local\").node.name, \"block\");\n          });\n          return;\n        }\n      }\n\n      if (child.isFunctionDeclaration()) {\n        kind = \"hoisted\";\n      } else if (child.isClassDeclaration()) {\n        kind = \"block\";\n      } else if (child.isVariableDeclaration({ kind: \"var\" })) {\n        kind = \"var\";\n      } else if (child.isVariableDeclaration()) {\n        kind = \"block\";\n      } else {\n        return;\n      }\n    }\n\n    Object.keys(child.getOuterBindingIdentifiers()).forEach(name => {\n      bindingKindLookup.set(name, kind);\n    });\n  });\n\n  const localMetadata = new Map();\n  const getLocalMetadata = (idPath: NodePath<t.Identifier>) => {\n    const localName = idPath.node.name;\n    let metadata = localMetadata.get(localName);\n\n    if (!metadata) {\n      const kind = bindingKindLookup.get(localName);\n\n      if (kind === undefined) {\n        throw idPath.buildCodeFrameError(\n          `Exporting local \"${localName}\", which is not declared.`,\n        );\n      }\n\n      metadata = {\n        names: [],\n        kind,\n      };\n      localMetadata.set(localName, metadata);\n    }\n    return metadata;\n  };\n\n  programPath.get(\"body\").forEach(child => {\n    if (\n      child.isExportNamedDeclaration() &&\n      (initializeReexports || !child.node.source)\n    ) {\n      if (child.node.declaration) {\n        const declaration = child.get(\"declaration\");\n        const ids = declaration.getOuterBindingIdentifierPaths();\n        Object.keys(ids).forEach(name => {\n          if (name === \"__esModule\") {\n            throw declaration.buildCodeFrameError(\n              'Illegal export \"__esModule\".',\n            );\n          }\n          getLocalMetadata(ids[name]).names.push(name);\n        });\n      } else {\n        child.get(\"specifiers\").forEach(spec => {\n          const local = spec.get(\"local\");\n          const exported = spec.get(\"exported\");\n          const localMetadata = getLocalMetadata(local);\n          const exportName = getExportSpecifierName(exported, stringSpecifiers);\n\n          if (exportName === \"__esModule\") {\n            throw exported.buildCodeFrameError('Illegal export \"__esModule\".');\n          }\n          localMetadata.names.push(exportName);\n        });\n      }\n    } else if (child.isExportDefaultDeclaration()) {\n      const declaration = child.get(\"declaration\");\n      if (\n        declaration.isFunctionDeclaration() ||\n        declaration.isClassDeclaration()\n      ) {\n        getLocalMetadata(declaration.get(\"id\")).names.push(\"default\");\n      } else {\n        // These should have been removed by the nameAnonymousExports() call.\n        throw declaration.buildCodeFrameError(\n          \"Unexpected default expression export.\",\n        );\n      }\n    }\n  });\n  return localMetadata;\n}\n\n/**\n * Ensure that all exported values have local binding names.\n */\nfunction nameAnonymousExports(programPath: NodePath<t.Program>) {\n  // Name anonymous exported locals.\n  programPath.get(\"body\").forEach(child => {\n    if (!child.isExportDefaultDeclaration()) return;\n    if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n      // polyfill when being run by an older Babel version\n      child.splitExportDeclaration ??=\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n    }\n    child.splitExportDeclaration();\n  });\n}\n\nfunction removeImportExportDeclarations(programPath: NodePath<t.Program>) {\n  programPath.get(\"body\").forEach(child => {\n    if (child.isImportDeclaration()) {\n      child.remove();\n    } else if (child.isExportNamedDeclaration()) {\n      if (child.node.declaration) {\n        // @ts-expect-error todo(flow->ts): avoid mutations\n        child.node.declaration._blockHoist = child.node._blockHoist;\n        child.replaceWith(child.node.declaration);\n      } else {\n        child.remove();\n      }\n    } else if (child.isExportDefaultDeclaration()) {\n      // export default foo;\n      const declaration = child.get(\"declaration\");\n      if (\n        declaration.isFunctionDeclaration() ||\n        declaration.isClassDeclaration()\n      ) {\n        // @ts-expect-error todo(flow->ts): avoid mutations\n        declaration._blockHoist = child.node._blockHoist;\n        child.replaceWith(declaration);\n      } else {\n        // These should have been removed by the nameAnonymousExports() call.\n        throw declaration.buildCodeFrameError(\n          \"Unexpected default expression export.\",\n        );\n      }\n    } else if (child.isExportAllDeclaration()) {\n      child.remove();\n    }\n  });\n}\n","// TODO: Move `lazy` implementation logic into the CommonJS plugin, since other\n// modules systems do not support `lazy`.\n\nimport { types as t } from \"@babel/core\";\nimport {\n  type SourceModuleMetadata,\n  isSideEffectImport,\n} from \"./normalize-and-load-metadata.ts\";\n\nexport type Lazy = boolean | string[] | ((source: string) => boolean);\n\nexport function toGetWrapperPayload(lazy: Lazy) {\n  return (source: string, metadata: SourceModuleMetadata): null | \"lazy\" => {\n    if (lazy === false) return null;\n    if (isSideEffectImport(metadata) || metadata.reexportAll) return null;\n    if (lazy === true) {\n      // 'true' means that local relative files are eagerly loaded and\n      // dependency modules are loaded lazily.\n      return source.includes(\".\") ? null : \"lazy\";\n    }\n    if (Array.isArray(lazy)) {\n      return !lazy.includes(source) ? null : \"lazy\";\n    }\n    if (typeof lazy === \"function\") {\n      return lazy(source) ? \"lazy\" : null;\n    }\n    throw new Error(`.lazy must be a boolean, string array, or function`);\n  };\n}\n\nexport function wrapReference(\n  ref: t.Identifier,\n  payload: unknown,\n): t.Expression | null {\n  if (payload === \"lazy\") return t.callExpression(ref, []);\n  return null;\n}\n","// Heavily inspired by\n// https://github.com/airbnb/babel-plugin-dynamic-import-node/blob/master/src/utils.js\n\nimport { types as t, template } from \"@babel/core\";\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.getDynamicImportSource = function getDynamicImportSource(\n    node: t.CallExpression,\n  ): t.StringLiteral | t.TemplateLiteral {\n    const [source] = node.arguments;\n\n    return t.isStringLiteral(source) || t.isTemplateLiteral(source)\n      ? source\n      : (template.expression.ast`\\`\\${${source}}\\`` as t.TemplateLiteral);\n  };\n}\n\nexport function buildDynamicImport(\n  node: t.CallExpression | t.ImportExpression,\n  deferToThen: boolean,\n  wrapWithPromise: boolean,\n  builder: (specifier: t.Expression) => t.Expression,\n): t.Expression {\n  const specifier = t.isCallExpression(node) ? node.arguments[0] : node.source;\n\n  if (\n    t.isStringLiteral(specifier) ||\n    (t.isTemplateLiteral(specifier) && specifier.quasis.length === 0)\n  ) {\n    if (deferToThen) {\n      return template.expression.ast`\n        Promise.resolve().then(() => ${builder(specifier)})\n      `;\n    } else return builder(specifier);\n  }\n\n  const specifierToString = t.isTemplateLiteral(specifier)\n    ? t.identifier(\"specifier\")\n    : t.templateLiteral(\n        [t.templateElement({ raw: \"\" }), t.templateElement({ raw: \"\" })],\n        [t.identifier(\"specifier\")],\n      );\n\n  if (deferToThen) {\n    return template.expression.ast`\n      (specifier =>\n        new Promise(r => r(${specifierToString}))\n          .then(s => ${builder(t.identifier(\"s\"))})\n      )(${specifier})\n    `;\n  } else if (wrapWithPromise) {\n    return template.expression.ast`\n      (specifier =>\n        new Promise(r => r(${builder(specifierToString)}))\n      )(${specifier})\n    `;\n  } else {\n    return template.expression.ast`\n      (specifier => ${builder(specifierToString)})(${specifier})\n    `;\n  }\n}\n","type RootOptions = {\n  filename?: string;\n  filenameRelative?: string;\n  sourceRoot?: string;\n};\n\nexport type PluginOptions = {\n  moduleId?: string;\n  moduleIds?: boolean;\n  getModuleId?: (moduleName: string) => string | null | undefined;\n  moduleRoot?: string;\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  const originalGetModuleName = getModuleName;\n\n  // @ts-expect-error TS doesn't like reassigning a function.\n  getModuleName = function getModuleName(\n    rootOpts: RootOptions & PluginOptions,\n    pluginOpts: PluginOptions,\n  ): string | null {\n    return originalGetModuleName(rootOpts, {\n      moduleId: pluginOpts.moduleId ?? rootOpts.moduleId,\n      moduleIds: pluginOpts.moduleIds ?? rootOpts.moduleIds,\n      getModuleId: pluginOpts.getModuleId ?? rootOpts.getModuleId,\n      moduleRoot: pluginOpts.moduleRoot ?? rootOpts.moduleRoot,\n    });\n  };\n}\n\nexport default function getModuleName(\n  rootOpts: RootOptions,\n  pluginOpts: PluginOptions,\n): string | null {\n  const {\n    filename,\n    filenameRelative = filename,\n    sourceRoot = pluginOpts.moduleRoot,\n  } = rootOpts;\n\n  const {\n    moduleId,\n    moduleIds = !!moduleId,\n\n    getModuleId,\n\n    moduleRoot = sourceRoot,\n  } = pluginOpts;\n\n  if (!moduleIds) return null;\n\n  // moduleId is n/a if a `getModuleId()` is provided\n  if (moduleId != null && !getModuleId) {\n    return moduleId;\n  }\n\n  let moduleName = moduleRoot != null ? moduleRoot + \"/\" : \"\";\n\n  if (filenameRelative) {\n    const sourceRootReplacer =\n      sourceRoot != null ? new RegExp(\"^\" + sourceRoot + \"/?\") : \"\";\n\n    moduleName += filenameRelative\n      // remove sourceRoot from filename\n      .replace(sourceRootReplacer, \"\")\n      // remove extension\n      .replace(/\\.\\w*$/, \"\");\n  }\n\n  // normalize path separators\n  moduleName = moduleName.replace(/\\\\/g, \"/\");\n\n  if (getModuleId) {\n    // If return is falsy, assume they want us to use our generated default name\n    return getModuleId(moduleName) || moduleName;\n  } else {\n    return moduleName;\n  }\n}\n","import assert from \"assert\";\nimport { template, types as t } from \"@babel/core\";\n\nimport { isModule } from \"@babel/helper-module-imports\";\n\nimport rewriteThis from \"./rewrite-this.ts\";\nimport rewriteLiveReferences from \"./rewrite-live-references.ts\";\nimport normalizeModuleAndLoadMetadata, {\n  hasExports,\n  isSideEffectImport,\n  validateImportInteropOption,\n} from \"./normalize-and-load-metadata.ts\";\nimport type {\n  ImportInterop,\n  InteropType,\n  ModuleMetadata,\n  SourceModuleMetadata,\n} from \"./normalize-and-load-metadata.ts\";\nimport * as Lazy from \"./lazy-modules.ts\";\nimport type { NodePath } from \"@babel/core\";\n\nexport { buildDynamicImport } from \"./dynamic-import.ts\";\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.getDynamicImportSource =\n    // eslint-disable-next-line no-restricted-globals, import/extensions\n    require(\"./dynamic-import\").getDynamicImportSource;\n}\n\nexport { default as getModuleName } from \"./get-module-name.ts\";\nexport type { PluginOptions } from \"./get-module-name.ts\";\n\nexport { hasExports, isSideEffectImport, isModule, rewriteThis };\n\nexport interface RewriteModuleStatementsAndPrepareHeaderOptions {\n  exportName?: string;\n  strict: boolean;\n  allowTopLevelThis?: boolean;\n  strictMode: boolean;\n  loose?: boolean;\n  importInterop?: ImportInterop;\n  noInterop?: boolean;\n  lazy?: Lazy.Lazy;\n  getWrapperPayload?: (\n    source: string,\n    metadata: SourceModuleMetadata,\n    importNodes: t.Node[],\n  ) => unknown;\n  wrapReference?: (ref: t.Expression, payload: unknown) => t.Expression | null;\n  esNamespaceOnly?: boolean;\n  filename: string | undefined;\n  constantReexports?: boolean | void;\n  enumerableModuleMeta?: boolean | void;\n  noIncompleteNsImportDetection?: boolean | void;\n}\n\n/**\n * Perform all of the generic ES6 module rewriting needed to handle initial\n * module processing. This function will rewrite the majority of the given\n * program to reference the modules described by the returned metadata,\n * and returns a list of statements for use when initializing the module.\n */\nexport function rewriteModuleStatementsAndPrepareHeader(\n  path: NodePath<t.Program>,\n  {\n    exportName,\n    strict,\n    allowTopLevelThis,\n    strictMode,\n    noInterop,\n    importInterop = noInterop ? \"none\" : \"babel\",\n    // TODO(Babel 8): After that `lazy` implementation is moved to the CJS\n    // transform, remove this parameter.\n    lazy,\n    getWrapperPayload = Lazy.toGetWrapperPayload(lazy ?? false),\n    wrapReference = Lazy.wrapReference,\n    esNamespaceOnly,\n    filename,\n\n    constantReexports = process.env.BABEL_8_BREAKING\n      ? undefined\n      : arguments[1].loose,\n    enumerableModuleMeta = process.env.BABEL_8_BREAKING\n      ? undefined\n      : arguments[1].loose,\n    noIncompleteNsImportDetection,\n  }: RewriteModuleStatementsAndPrepareHeaderOptions,\n) {\n  validateImportInteropOption(importInterop);\n  assert(isModule(path), \"Cannot process module statements in a script\");\n  path.node.sourceType = \"script\";\n\n  const meta = normalizeModuleAndLoadMetadata(path, exportName, {\n    importInterop,\n    initializeReexports: constantReexports,\n    getWrapperPayload,\n    esNamespaceOnly,\n    filename,\n  });\n\n  if (!allowTopLevelThis) {\n    rewriteThis(path);\n  }\n\n  rewriteLiveReferences(path, meta, wrapReference);\n\n  if (strictMode !== false) {\n    const hasStrict = path.node.directives.some(directive => {\n      return directive.value.value === \"use strict\";\n    });\n    if (!hasStrict) {\n      path.unshiftContainer(\n        \"directives\",\n        t.directive(t.directiveLiteral(\"use strict\")),\n      );\n    }\n  }\n\n  const headers = [];\n  if (hasExports(meta) && !strict) {\n    headers.push(buildESModuleHeader(meta, enumerableModuleMeta));\n  }\n\n  const nameList = buildExportNameListDeclaration(path, meta);\n\n  if (nameList) {\n    meta.exportNameListName = nameList.name;\n    headers.push(nameList.statement);\n  }\n\n  // Create all of the statically known named exports.\n  headers.push(\n    ...buildExportInitializationStatements(\n      path,\n      meta,\n      wrapReference,\n      constantReexports,\n      noIncompleteNsImportDetection,\n    ),\n  );\n\n  return { meta, headers };\n}\n\n/**\n * Flag a set of statements as hoisted above all else so that module init\n * statements all run before user code.\n */\nexport function ensureStatementsHoisted(statements: t.Statement[]) {\n  // Force all of the header fields to be at the top of the file.\n  statements.forEach(header => {\n    // @ts-expect-error Fixme: handle _blockHoist property\n    header._blockHoist = 3;\n  });\n}\n\n/**\n * Given an expression for a standard import object, like \"require('foo')\",\n * wrap it in a call to the interop helpers based on the type.\n */\nexport function wrapInterop(\n  programPath: NodePath<t.Program>,\n  expr: t.Expression,\n  type: InteropType,\n): t.CallExpression {\n  if (type === \"none\") {\n    return null;\n  }\n\n  if (type === \"node-namespace\") {\n    return t.callExpression(\n      programPath.hub.addHelper(\"interopRequireWildcard\"),\n      [expr, t.booleanLiteral(true)],\n    );\n  } else if (type === \"node-default\") {\n    return null;\n  }\n\n  let helper;\n  if (type === \"default\") {\n    helper = \"interopRequireDefault\";\n  } else if (type === \"namespace\") {\n    helper = \"interopRequireWildcard\";\n  } else {\n    throw new Error(`Unknown interop: ${type}`);\n  }\n\n  return t.callExpression(programPath.hub.addHelper(helper), [expr]);\n}\n\n/**\n * Create the runtime initialization statements for a given requested source.\n * These will initialize all of the runtime import/export logic that\n * can't be handled statically by the statements created by\n * buildExportInitializationStatements().\n */\nexport function buildNamespaceInitStatements(\n  metadata: ModuleMetadata,\n  sourceMetadata: SourceModuleMetadata,\n  constantReexports: boolean | void = false,\n  wrapReference: (\n    ref: t.Identifier,\n    payload: unknown,\n  ) => t.Expression | null = Lazy.wrapReference,\n) {\n  const statements = [];\n\n  const srcNamespaceId = t.identifier(sourceMetadata.name);\n\n  for (const localName of sourceMetadata.importsNamespace) {\n    if (localName === sourceMetadata.name) continue;\n\n    // Create and assign binding to namespace object\n    statements.push(\n      template.statement`var NAME = SOURCE;`({\n        NAME: localName,\n        SOURCE: t.cloneNode(srcNamespaceId),\n      }),\n    );\n  }\n\n  const srcNamespace =\n    wrapReference(srcNamespaceId, sourceMetadata.wrap) ?? srcNamespaceId;\n\n  if (constantReexports) {\n    statements.push(\n      ...buildReexportsFromMeta(metadata, sourceMetadata, true, wrapReference),\n    );\n  }\n  for (const exportName of sourceMetadata.reexportNamespace) {\n    // Assign export to namespace object.\n    statements.push(\n      (!t.isIdentifier(srcNamespace)\n        ? template.statement`\n            Object.defineProperty(EXPORTS, \"NAME\", {\n              enumerable: true,\n              get: function() {\n                return NAMESPACE;\n              }\n            });\n          `\n        : template.statement`EXPORTS.NAME = NAMESPACE;`)({\n        EXPORTS: metadata.exportName,\n        NAME: exportName,\n        NAMESPACE: t.cloneNode(srcNamespace),\n      }),\n    );\n  }\n  if (sourceMetadata.reexportAll) {\n    const statement = buildNamespaceReexport(\n      metadata,\n      t.cloneNode(srcNamespace),\n      constantReexports,\n    );\n    statement.loc = sourceMetadata.reexportAll.loc;\n\n    // Iterate props creating getter for each prop.\n    statements.push(statement);\n  }\n  return statements;\n}\n\ninterface ReexportParts {\n  exports: string;\n  exportName: string;\n  namespaceImport: t.Expression;\n}\n\nconst ReexportTemplate = {\n  constant: ({ exports, exportName, namespaceImport }: ReexportParts) =>\n    template.statement.ast`\n      ${exports}.${exportName} = ${namespaceImport};\n    `,\n  constantComputed: ({ exports, exportName, namespaceImport }: ReexportParts) =>\n    template.statement.ast`\n      ${exports}[\"${exportName}\"] = ${namespaceImport};\n    `,\n  spec: ({ exports, exportName, namespaceImport }: ReexportParts) =>\n    template.statement.ast`\n      Object.defineProperty(${exports}, \"${exportName}\", {\n        enumerable: true,\n        get: function() {\n          return ${namespaceImport};\n        },\n      });\n    `,\n};\n\nfunction buildReexportsFromMeta(\n  meta: ModuleMetadata,\n  metadata: SourceModuleMetadata,\n  constantReexports: boolean,\n  wrapReference: (ref: t.Expression, payload: unknown) => t.Expression | null,\n): t.Statement[] {\n  let namespace: t.Expression = t.identifier(metadata.name);\n  namespace = wrapReference(namespace, metadata.wrap) ?? namespace;\n\n  const { stringSpecifiers } = meta;\n  return Array.from(metadata.reexports, ([exportName, importName]) => {\n    let namespaceImport: t.Expression = t.cloneNode(namespace);\n    if (importName === \"default\" && metadata.interop === \"node-default\") {\n      // Nothing, it's ok as-is\n    } else if (stringSpecifiers.has(importName)) {\n      namespaceImport = t.memberExpression(\n        namespaceImport,\n        t.stringLiteral(importName),\n        true,\n      );\n    } else {\n      namespaceImport = t.memberExpression(\n        namespaceImport,\n        t.identifier(importName),\n      );\n    }\n    const astNodes: ReexportParts = {\n      exports: meta.exportName,\n      exportName,\n      namespaceImport,\n    };\n    if (constantReexports || t.isIdentifier(namespaceImport)) {\n      if (stringSpecifiers.has(exportName)) {\n        return ReexportTemplate.constantComputed(astNodes);\n      } else {\n        return ReexportTemplate.constant(astNodes);\n      }\n    } else {\n      return ReexportTemplate.spec(astNodes);\n    }\n  });\n}\n\n/**\n * Build an \"__esModule\" header statement setting the property on a given object.\n */\nfunction buildESModuleHeader(\n  metadata: ModuleMetadata,\n  enumerableModuleMeta: boolean | void = false,\n) {\n  return (\n    enumerableModuleMeta\n      ? template.statement`\n        EXPORTS.__esModule = true;\n      `\n      : template.statement`\n        Object.defineProperty(EXPORTS, \"__esModule\", {\n          value: true,\n        });\n      `\n  )({ EXPORTS: metadata.exportName });\n}\n\n/**\n * Create a re-export initialization loop for a specific imported namespace.\n */\nfunction buildNamespaceReexport(\n  metadata: ModuleMetadata,\n  namespace: t.Expression,\n  constantReexports: boolean | void,\n) {\n  return (\n    constantReexports\n      ? template.statement`\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          EXPORTS[key] = NAMESPACE[key];\n        });\n      `\n      : // Also skip already assigned bindings if they are strictly equal\n        // to be somewhat more spec-compliant when a file has multiple\n        // namespace re-exports that would cause a binding to be exported\n        // multiple times. However, multiple bindings of the same name that\n        // export the same primitive value are silently skipped\n        // (the spec requires an \"ambiguous bindings\" early error here).\n        template.statement`\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          Object.defineProperty(EXPORTS, key, {\n            enumerable: true,\n            get: function() {\n              return NAMESPACE[key];\n            },\n          });\n        });\n    `\n  )({\n    NAMESPACE: namespace,\n    EXPORTS: metadata.exportName,\n    VERIFY_NAME_LIST: metadata.exportNameListName\n      ? template`\n            if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;\n          `({ EXPORTS_LIST: metadata.exportNameListName })\n      : null,\n  });\n}\n\n/**\n * Build a statement declaring a variable that contains all of the exported\n * variable names in an object so they can easily be referenced from an\n * export * from statement to check for conflicts.\n */\nfunction buildExportNameListDeclaration(\n  programPath: NodePath,\n  metadata: ModuleMetadata,\n) {\n  const exportedVars = Object.create(null);\n  for (const data of metadata.local.values()) {\n    for (const name of data.names) {\n      exportedVars[name] = true;\n    }\n  }\n\n  let hasReexport = false;\n  for (const data of metadata.source.values()) {\n    for (const exportName of data.reexports.keys()) {\n      exportedVars[exportName] = true;\n    }\n    for (const exportName of data.reexportNamespace) {\n      exportedVars[exportName] = true;\n    }\n\n    hasReexport = hasReexport || !!data.reexportAll;\n  }\n\n  if (!hasReexport || Object.keys(exportedVars).length === 0) return null;\n\n  const name = programPath.scope.generateUidIdentifier(\"exportNames\");\n\n  delete exportedVars.default;\n\n  return {\n    name: name.name,\n    statement: t.variableDeclaration(\"var\", [\n      t.variableDeclarator(name, t.valueToNode(exportedVars)),\n    ]),\n  };\n}\n\n/**\n * Create a set of statements that will initialize all of the statically-known\n * export names with their expected values.\n */\nfunction buildExportInitializationStatements(\n  programPath: NodePath,\n  metadata: ModuleMetadata,\n  wrapReference: (ref: t.Expression, payload: unknown) => t.Expression | null,\n  constantReexports: boolean | void = false,\n  noIncompleteNsImportDetection: boolean | void = false,\n) {\n  const initStatements: Array<[string, t.Statement | null]> = [];\n\n  for (const [localName, data] of metadata.local) {\n    if (data.kind === \"import\") {\n      // No-open since these are explicitly set with the \"reexports\" block.\n    } else if (data.kind === \"hoisted\") {\n      initStatements.push([\n        // data.names is always of length 1 because a hoisted export\n        // name must be id of a function declaration\n        data.names[0],\n        buildInitStatement(metadata, data.names, t.identifier(localName)),\n      ]);\n    } else if (!noIncompleteNsImportDetection) {\n      for (const exportName of data.names) {\n        initStatements.push([exportName, null]);\n      }\n    }\n  }\n\n  for (const data of metadata.source.values()) {\n    if (!constantReexports) {\n      const reexportsStatements = buildReexportsFromMeta(\n        metadata,\n        data,\n        false,\n        wrapReference,\n      );\n      const reexports = [...data.reexports.keys()];\n      for (let i = 0; i < reexportsStatements.length; i++) {\n        initStatements.push([reexports[i], reexportsStatements[i]]);\n      }\n    }\n    if (!noIncompleteNsImportDetection) {\n      for (const exportName of data.reexportNamespace) {\n        initStatements.push([exportName, null]);\n      }\n    }\n  }\n\n  // https://tc39.es/ecma262/#sec-module-namespace-exotic-objects\n  // The [Exports] list is ordered as if an Array of those String values\n  // had been sorted using %Array.prototype.sort% using undefined as comparefn\n  initStatements.sort(([a], [b]) => {\n    if (a < b) return -1;\n    if (b < a) return 1;\n    return 0;\n  });\n\n  const results = [];\n  if (noIncompleteNsImportDetection) {\n    for (const [, initStatement] of initStatements) {\n      results.push(initStatement);\n    }\n  } else {\n    // We generate init statements (`exports.a = exports.b = ... = void 0`)\n    // for every 100 exported names to avoid deeply-nested AST structures.\n    const chunkSize = 100;\n    for (let i = 0; i < initStatements.length; i += chunkSize) {\n      let uninitializedExportNames = [];\n      for (let j = 0; j < chunkSize && i + j < initStatements.length; j++) {\n        const [exportName, initStatement] = initStatements[i + j];\n        if (initStatement !== null) {\n          if (uninitializedExportNames.length > 0) {\n            results.push(\n              buildInitStatement(\n                metadata,\n                uninitializedExportNames,\n                programPath.scope.buildUndefinedNode(),\n              ),\n            );\n            // reset after uninitializedExportNames has been transformed\n            // to init statements\n            uninitializedExportNames = [];\n          }\n          results.push(initStatement);\n        } else {\n          uninitializedExportNames.push(exportName);\n        }\n      }\n      if (uninitializedExportNames.length > 0) {\n        results.push(\n          buildInitStatement(\n            metadata,\n            uninitializedExportNames,\n            programPath.scope.buildUndefinedNode(),\n          ),\n        );\n      }\n    }\n  }\n\n  return results;\n}\n\ninterface InitParts {\n  exports: string;\n  name: string;\n  value: t.Expression;\n}\n\n/**\n * Given a set of export names, create a set of nested assignments to\n * initialize them all to a given expression.\n */\nconst InitTemplate = {\n  computed: ({ exports, name, value }: InitParts) =>\n    template.expression.ast`${exports}[\"${name}\"] = ${value}`,\n  default: ({ exports, name, value }: InitParts) =>\n    template.expression.ast`${exports}.${name} = ${value}`,\n  define: ({ exports, name, value }: InitParts) =>\n    template.expression.ast`\n      Object.defineProperty(${exports}, \"${name}\", {\n        enumerable: true,\n        value: void 0,\n        writable: true\n      })[\"${name}\"] = ${value}`,\n};\n\nfunction buildInitStatement(\n  metadata: ModuleMetadata,\n  exportNames: string[],\n  initExpr: t.Expression,\n) {\n  const { stringSpecifiers, exportName: exports } = metadata;\n  return t.expressionStatement(\n    exportNames.reduce((value, name) => {\n      const params = {\n        exports,\n        name,\n        value,\n      };\n\n      if (name === \"__proto__\") {\n        return InitTemplate.define(params);\n      }\n\n      if (stringSpecifiers.has(name)) {\n        return InitTemplate.computed(params);\n      }\n\n      return InitTemplate.default(params);\n    }, initExpr),\n  );\n}\n","// TODO(Babel 8): Remove this file\n\nif (!process.env.BABEL_8_BREAKING) {\n  exports.getModuleName = () =>\n    require(\"@babel/helper-module-transforms\").getModuleName;\n} else if (process.env.IS_PUBLISH) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n","import * as helpers from \"@babel/helpers\";\nimport { NodePath } from \"@babel/traverse\";\nimport type { HubInterface, Visitor, Scope } from \"@babel/traverse\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport traverse from \"@babel/traverse\";\nimport { cloneNode, interpreterDirective } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport semver from \"semver\";\n\nimport type { NormalizedFile } from \"../normalize-file.ts\";\n\n// @ts-expect-error This file is `any`\nimport babel7 from \"./babel-7-helpers.cjs\" with { if: \"!process.env.BABEL_8_BREAKING && (!USE_ESM || IS_STANDALONE)\" };\n\nconst errorVisitor: Visitor<{ loc: t.SourceLocation | null }> = {\n  enter(path, state) {\n    const loc = path.node.loc;\n    if (loc) {\n      state.loc = loc;\n      path.stop();\n    }\n  },\n};\n\nexport default class File {\n  _map: Map<unknown, unknown> = new Map();\n  opts: { [key: string]: any };\n  declarations: { [key: string]: t.Identifier } = {};\n  path: NodePath<t.Program>;\n  ast: t.File;\n  scope: Scope;\n  metadata: { [key: string]: any } = {};\n  code: string = \"\";\n  inputMap: any;\n\n  hub: HubInterface & { file: File } = {\n    // keep it for the usage in babel-core, ex: path.hub.file.opts.filename\n    file: this,\n    getCode: () => this.code,\n    getScope: () => this.scope,\n    addHelper: this.addHelper.bind(this),\n    buildError: this.buildCodeFrameError.bind(this),\n  };\n\n  constructor(options: any, { code, ast, inputMap }: NormalizedFile) {\n    this.opts = options;\n    this.code = code;\n    this.ast = ast;\n    this.inputMap = inputMap;\n\n    this.path = NodePath.get({\n      hub: this.hub,\n      parentPath: null,\n      parent: this.ast,\n      container: this.ast,\n      key: \"program\",\n    }).setContext() as NodePath<t.Program>;\n    this.scope = this.path.scope;\n  }\n\n  /**\n   * Provide backward-compatible access to the interpreter directive handling\n   * in Babel 6.x. If you are writing a plugin for Babel 7.x, it would be\n   * best to use 'program.interpreter' directly.\n   */\n  get shebang(): string {\n    const { interpreter } = this.path.node;\n    return interpreter ? interpreter.value : \"\";\n  }\n  set shebang(value: string) {\n    if (value) {\n      this.path.get(\"interpreter\").replaceWith(interpreterDirective(value));\n    } else {\n      this.path.get(\"interpreter\").remove();\n    }\n  }\n\n  set(key: unknown, val: unknown) {\n    if (!process.env.BABEL_8_BREAKING) {\n      if (key === \"helpersNamespace\") {\n        throw new Error(\n          \"Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility.\" +\n            \"If you are using @babel/plugin-external-helpers you will need to use a newer \" +\n            \"version than the one you currently have installed. \" +\n            \"If you have your own implementation, you'll want to explore using 'helperGenerator' \" +\n            \"alongside 'file.availableHelper()'.\",\n        );\n      }\n    }\n\n    this._map.set(key, val);\n  }\n\n  get(key: unknown): any {\n    return this._map.get(key);\n  }\n\n  has(key: unknown): boolean {\n    return this._map.has(key);\n  }\n\n  /**\n   * Check if a given helper is available in @babel/core's helper list.\n   *\n   * This _also_ allows you to pass a Babel version specifically. If the\n   * helper exists, but was not available for the full given range, it will be\n   * considered unavailable.\n   */\n  availableHelper(name: string, versionRange?: string | null): boolean {\n    let minVersion;\n    try {\n      minVersion = helpers.minVersion(name);\n    } catch (err) {\n      if (err.code !== \"BABEL_HELPER_UNKNOWN\") throw err;\n\n      return false;\n    }\n\n    if (typeof versionRange !== \"string\") return true;\n\n    // semver.intersects() has some surprising behavior with comparing ranges\n    // with pre-release versions. We add '^' to ensure that we are always\n    // comparing ranges with ranges, which sidesteps this logic.\n    // For example:\n    //\n    //   semver.intersects(`<7.0.1`, \"7.0.0-beta.0\") // false - surprising\n    //   semver.intersects(`<7.0.1`, \"^7.0.0-beta.0\") // true - expected\n    //\n    // This is because the first falls back to\n    //\n    //   semver.satisfies(\"7.0.0-beta.0\", `<7.0.1`) // false - surprising\n    //\n    // and this fails because a prerelease version can only satisfy a range\n    // if it is a prerelease within the same major/minor/patch range.\n    //\n    // Note: If this is found to have issues, please also revisit the logic in\n    // transform-runtime's definitions.js file.\n    if (semver.valid(versionRange)) versionRange = `^${versionRange}`;\n\n    if (process.env.BABEL_8_BREAKING) {\n      return (\n        !semver.intersects(`<${minVersion}`, versionRange) &&\n        !semver.intersects(`>=9.0.0`, versionRange)\n      );\n    } else {\n      return (\n        !semver.intersects(`<${minVersion}`, versionRange) &&\n        !semver.intersects(`>=8.0.0`, versionRange)\n      );\n    }\n  }\n\n  addHelper(name: string): t.Identifier {\n    const declar = this.declarations[name];\n    if (declar) return cloneNode(declar);\n\n    const generator = this.get(\"helperGenerator\");\n    if (generator) {\n      const res = generator(name);\n      if (res) return res;\n    }\n\n    // make sure that the helper exists\n    helpers.minVersion(name);\n\n    const uid = (this.declarations[name] =\n      this.scope.generateUidIdentifier(name));\n\n    const dependencies: { [key: string]: t.Identifier } = {};\n    for (const dep of helpers.getDependencies(name)) {\n      dependencies[dep] = this.addHelper(dep);\n    }\n\n    const { nodes, globals } = helpers.get(\n      name,\n      dep => dependencies[dep],\n      uid.name,\n      Object.keys(this.scope.getAllBindings()),\n    );\n\n    globals.forEach(name => {\n      if (this.path.scope.hasBinding(name, true /* noGlobals */)) {\n        this.path.scope.rename(name);\n      }\n    });\n\n    nodes.forEach(node => {\n      // @ts-expect-error Fixme: document _compact node property\n      node._compact = true;\n    });\n\n    const added = this.path.unshiftContainer(\"body\", nodes);\n    // TODO: NodePath#unshiftContainer should automatically register new\n    // bindings.\n    for (const path of added) {\n      if (path.isVariableDeclaration()) this.scope.registerDeclaration(path);\n    }\n\n    return uid;\n  }\n\n  buildCodeFrameError(\n    node: t.Node | undefined | null,\n    msg: string,\n    _Error: typeof Error = SyntaxError,\n  ): Error {\n    let loc = node?.loc;\n\n    if (!loc && node) {\n      const state: { loc?: t.SourceLocation | null } = {\n        loc: null,\n      };\n      traverse(node, errorVisitor, this.scope, state);\n      loc = state.loc;\n\n      let txt =\n        \"This is an error on an internal node. Probably an internal error.\";\n      if (loc) txt += \" Location has been estimated.\";\n\n      msg += ` (${txt})`;\n    }\n\n    if (loc) {\n      const { highlightCode = true } = this.opts;\n\n      msg +=\n        \"\\n\" +\n        codeFrameColumns(\n          this.code,\n          {\n            start: {\n              line: loc.start.line,\n              column: loc.start.column + 1,\n            },\n            end:\n              loc.end && loc.start.line === loc.end.line\n                ? {\n                    line: loc.end.line,\n                    column: loc.end.column + 1,\n                  }\n                : undefined,\n          },\n          { highlightCode },\n        );\n    }\n\n    return new _Error(msg);\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // @ts-expect-error Babel 7\n  File.prototype.addImport = function addImport() {\n    throw new Error(\n      \"This API has been removed. If you're looking for this \" +\n        \"functionality in Babel 7, you should import the \" +\n        \"'@babel/helper-module-imports' module and use the functions exposed \" +\n        \" from that module, such as 'addNamed' or 'addDefault'.\",\n    );\n  };\n  // @ts-expect-error Babel 7\n  File.prototype.addTemplateObject = function addTemplateObject() {\n    throw new Error(\n      \"This function has been moved into the template literal transform itself.\",\n    );\n  };\n\n  if (!USE_ESM || IS_STANDALONE) {\n    // @ts-expect-error Babel 7\n    File.prototype.getModuleName = function getModuleName() {\n      return babel7.getModuleName()(this.opts, this.opts);\n    };\n  }\n}\n","import * as helpers from \"@babel/helpers\";\nimport generator from \"@babel/generator\";\nimport template from \"@babel/template\";\nimport {\n  arrayExpression,\n  assignmentExpression,\n  binaryExpression,\n  blockStatement,\n  callExpression,\n  cloneNode,\n  conditionalExpression,\n  exportNamedDeclaration,\n  exportSpecifier,\n  expressionStatement,\n  functionExpression,\n  identifier,\n  memberExpression,\n  objectExpression,\n  program,\n  stringLiteral,\n  unaryExpression,\n  variableDeclaration,\n  variableDeclarator,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { Replacements } from \"@babel/template\";\n\n// Wrapped to avoid wasting time parsing this when almost no-one uses\n// build-external-helpers.\nconst buildUmdWrapper = (replacements: Replacements) =>\n  template.statement`\n    (function (root, factory) {\n      if (typeof define === \"function\" && define.amd) {\n        define(AMD_ARGUMENTS, factory);\n      } else if (typeof exports === \"object\") {\n        factory(COMMON_ARGUMENTS);\n      } else {\n        factory(BROWSER_ARGUMENTS);\n      }\n    })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n      FACTORY_BODY\n    });\n  `(replacements);\n\nfunction buildGlobal(allowlist?: Array<string>) {\n  const namespace = identifier(\"babelHelpers\");\n\n  const body: t.Statement[] = [];\n  const container = functionExpression(\n    null,\n    [identifier(\"global\")],\n    blockStatement(body),\n  );\n  const tree = program([\n    expressionStatement(\n      callExpression(container, [\n        // typeof global === \"undefined\" ? self : global\n        conditionalExpression(\n          binaryExpression(\n            \"===\",\n            unaryExpression(\"typeof\", identifier(\"global\")),\n            stringLiteral(\"undefined\"),\n          ),\n          identifier(\"self\"),\n          identifier(\"global\"),\n        ),\n      ]),\n    ),\n  ]);\n\n  body.push(\n    variableDeclaration(\"var\", [\n      variableDeclarator(\n        namespace,\n        assignmentExpression(\n          \"=\",\n          memberExpression(identifier(\"global\"), namespace),\n          objectExpression([]),\n        ),\n      ),\n    ]),\n  );\n\n  buildHelpers(body, namespace, allowlist);\n\n  return tree;\n}\n\nfunction buildModule(allowlist?: Array<string>) {\n  const body: t.Statement[] = [];\n  const refs = buildHelpers(body, null, allowlist);\n\n  body.unshift(\n    exportNamedDeclaration(\n      null,\n      Object.keys(refs).map(name => {\n        return exportSpecifier(cloneNode(refs[name]), identifier(name));\n      }),\n    ),\n  );\n\n  return program(body, [], \"module\");\n}\n\nfunction buildUmd(allowlist?: Array<string>) {\n  const namespace = identifier(\"babelHelpers\");\n\n  const body: t.Statement[] = [];\n  body.push(\n    variableDeclaration(\"var\", [\n      variableDeclarator(namespace, identifier(\"global\")),\n    ]),\n  );\n\n  buildHelpers(body, namespace, allowlist);\n\n  return program([\n    buildUmdWrapper({\n      FACTORY_PARAMETERS: identifier(\"global\"),\n      BROWSER_ARGUMENTS: assignmentExpression(\n        \"=\",\n        memberExpression(identifier(\"root\"), namespace),\n        objectExpression([]),\n      ),\n      COMMON_ARGUMENTS: identifier(\"exports\"),\n      AMD_ARGUMENTS: arrayExpression([stringLiteral(\"exports\")]),\n      FACTORY_BODY: body,\n      UMD_ROOT: identifier(\"this\"),\n    }),\n  ]);\n}\n\nfunction buildVar(allowlist?: Array<string>) {\n  const namespace = identifier(\"babelHelpers\");\n\n  const body: t.Statement[] = [];\n  body.push(\n    variableDeclaration(\"var\", [\n      variableDeclarator(namespace, objectExpression([])),\n    ]),\n  );\n  const tree = program(body);\n  buildHelpers(body, namespace, allowlist);\n  body.push(expressionStatement(namespace));\n  return tree;\n}\n\nfunction buildHelpers(\n  body: t.Statement[],\n  namespace: t.Expression,\n  allowlist?: Array<string>,\n): Record<string, t.MemberExpression>;\nfunction buildHelpers(\n  body: t.Statement[],\n  namespace: null,\n  allowlist?: Array<string>,\n): Record<string, t.Identifier>;\n\nfunction buildHelpers(\n  body: t.Statement[],\n  namespace: t.Expression | null,\n  allowlist?: Array<string>,\n) {\n  const getHelperReference = (name: string) => {\n    return namespace\n      ? memberExpression(namespace, identifier(name))\n      : identifier(`_${name}`);\n  };\n\n  const refs: { [key: string]: t.Identifier | t.MemberExpression } = {};\n  helpers.list.forEach(function (name) {\n    if (allowlist && !allowlist.includes(name)) return;\n\n    const ref = (refs[name] = getHelperReference(name));\n\n    const { nodes } = helpers.get(\n      name,\n      getHelperReference,\n      namespace ? null : `_${name}`,\n      [],\n      namespace\n        ? (ast, exportName, mapExportBindingAssignments) => {\n            mapExportBindingAssignments(node =>\n              assignmentExpression(\"=\", ref, node),\n            );\n            ast.body.push(\n              expressionStatement(\n                assignmentExpression(\"=\", ref, identifier(exportName)),\n              ),\n            );\n          }\n        : null,\n    );\n\n    body.push(...nodes);\n  });\n  return refs;\n}\nexport default function (\n  allowlist?: Array<string>,\n  outputType: \"global\" | \"module\" | \"umd\" | \"var\" = \"global\",\n) {\n  let tree: t.Program;\n\n  const build = {\n    global: buildGlobal,\n    module: buildModule,\n    umd: buildUmd,\n    var: buildVar,\n  }[outputType];\n\n  if (build) {\n    tree = build(allowlist);\n  } else {\n    throw new Error(`Unsupported output type ${outputType}`);\n  }\n\n  return generator(tree).code;\n}\n","import type { Handler } from \"gensync\";\n\nimport type {\n  ConfigFile,\n  IgnoreFile,\n  RelativeConfig,\n  FilePackageData,\n} from \"./types.ts\";\n\nimport type { CallerMetadata } from \"../validation/options.ts\";\n\nexport type { ConfigFile, IgnoreFile, RelativeConfig, FilePackageData };\n\nexport function findConfigUpwards(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  rootDir: string,\n): string | null {\n  return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* findPackageData(filepath: string): Handler<FilePackageData> {\n  return {\n    filepath,\n    directories: [],\n    pkg: null,\n    isPackage: false,\n  };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRelativeConfig(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  pkgData: FilePackageData,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  envName: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  caller: CallerMetadata | undefined,\n): Handler<RelativeConfig> {\n  return { config: null, ignore: null };\n}\n\n// eslint-disable-next-line require-yield\nexport function* findRootConfig(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dirname: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  envName: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  caller: CallerMetadata | undefined,\n): Handler<ConfigFile | null> {\n  return null;\n}\n\n// eslint-disable-next-line require-yield\nexport function* loadConfig(\n  name: string,\n  dirname: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  envName: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  caller: CallerMetadata | undefined,\n): Handler<ConfigFile> {\n  throw new Error(`Cannot load ${name} relative to ${dirname} in a browser`);\n}\n\n// eslint-disable-next-line require-yield\nexport function* resolveShowConfigPath(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  dirname: string,\n): Handler<string | null> {\n  return null;\n}\n\nexport const ROOT_CONFIG_FILENAMES: string[] = [];\n\ntype Resolved =\n  | { loader: \"require\"; filepath: string }\n  | { loader: \"import\"; filepath: string };\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePlugin(name: string, dirname: string): Resolved | null {\n  return null;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport function resolvePreset(name: string, dirname: string): Resolved | null {\n  return null;\n}\n\nexport function loadPlugin(\n  name: string,\n  dirname: string,\n): Handler<{\n  filepath: string;\n  value: unknown;\n}> {\n  throw new Error(\n    `Cannot load plugin ${name} relative to ${dirname} in a browser`,\n  );\n}\n\nexport function loadPreset(\n  name: string,\n  dirname: string,\n): Handler<{\n  filepath: string;\n  value: unknown;\n}> {\n  throw new Error(\n    `Cannot load preset ${name} relative to ${dirname} in a browser`,\n  );\n}\n","export function getEnv(defaultValue: string = \"development\"): string {\n  return process.env.BABEL_ENV || process.env.NODE_ENV || defaultValue;\n}\n","\"use strict\";\n\n// These use the global symbol registry so that multiple copies of this\n// library can work together in case they are not deduped.\nconst GENSYNC_START = Symbol.for(\"gensync:v1:start\");\nconst GENSYNC_SUSPEND = Symbol.for(\"gensync:v1:suspend\");\n\nconst GENSYNC_EXPECTED_START = \"GENSYNC_EXPECTED_START\";\nconst GENSYNC_EXPECTED_SUSPEND = \"GENSYNC_EXPECTED_SUSPEND\";\nconst GENSYNC_OPTIONS_ERROR = \"GENSYNC_OPTIONS_ERROR\";\nconst GENSYNC_RACE_NONEMPTY = \"GENSYNC_RACE_NONEMPTY\";\nconst GENSYNC_ERRBACK_NO_CALLBACK = \"GENSYNC_ERRBACK_NO_CALLBACK\";\n\nmodule.exports = Object.assign(\n  function gensync(optsOrFn) {\n    let genFn = optsOrFn;\n    if (typeof optsOrFn !== \"function\") {\n      genFn = newGenerator(optsOrFn);\n    } else {\n      genFn = wrapGenerator(optsOrFn);\n    }\n\n    return Object.assign(genFn, makeFunctionAPI(genFn));\n  },\n  {\n    all: buildOperation({\n      name: \"all\",\n      arity: 1,\n      sync: function(args) {\n        const items = Array.from(args[0]);\n        return items.map(item => evaluateSync(item));\n      },\n      async: function(args, resolve, reject) {\n        const items = Array.from(args[0]);\n\n        if (items.length === 0) {\n          Promise.resolve().then(() => resolve([]));\n          return;\n        }\n\n        let count = 0;\n        const results = items.map(() => undefined);\n        items.forEach((item, i) => {\n          evaluateAsync(\n            item,\n            val => {\n              results[i] = val;\n              count += 1;\n\n              if (count === results.length) resolve(results);\n            },\n            reject\n          );\n        });\n      },\n    }),\n    race: buildOperation({\n      name: \"race\",\n      arity: 1,\n      sync: function(args) {\n        const items = Array.from(args[0]);\n        if (items.length === 0) {\n          throw makeError(\"Must race at least 1 item\", GENSYNC_RACE_NONEMPTY);\n        }\n\n        return evaluateSync(items[0]);\n      },\n      async: function(args, resolve, reject) {\n        const items = Array.from(args[0]);\n        if (items.length === 0) {\n          throw makeError(\"Must race at least 1 item\", GENSYNC_RACE_NONEMPTY);\n        }\n\n        for (const item of items) {\n          evaluateAsync(item, resolve, reject);\n        }\n      },\n    }),\n  }\n);\n\n/**\n * Given a generator function, return the standard API object that executes\n * the generator and calls the callbacks.\n */\nfunction makeFunctionAPI(genFn) {\n  const fns = {\n    sync: function(...args) {\n      return evaluateSync(genFn.apply(this, args));\n    },\n    async: function(...args) {\n      return new Promise((resolve, reject) => {\n        evaluateAsync(genFn.apply(this, args), resolve, reject);\n      });\n    },\n    errback: function(...args) {\n      const cb = args.pop();\n      if (typeof cb !== \"function\") {\n        throw makeError(\n          \"Asynchronous function called without callback\",\n          GENSYNC_ERRBACK_NO_CALLBACK\n        );\n      }\n\n      let gen;\n      try {\n        gen = genFn.apply(this, args);\n      } catch (err) {\n        cb(err);\n        return;\n      }\n\n      evaluateAsync(gen, val => cb(undefined, val), err => cb(err));\n    },\n  };\n  return fns;\n}\n\nfunction assertTypeof(type, name, value, allowUndefined) {\n  if (\n    typeof value === type ||\n    (allowUndefined && typeof value === \"undefined\")\n  ) {\n    return;\n  }\n\n  let msg;\n  if (allowUndefined) {\n    msg = `Expected opts.${name} to be either a ${type}, or undefined.`;\n  } else {\n    msg = `Expected opts.${name} to be a ${type}.`;\n  }\n\n  throw makeError(msg, GENSYNC_OPTIONS_ERROR);\n}\nfunction makeError(msg, code) {\n  return Object.assign(new Error(msg), { code });\n}\n\n/**\n * Given an options object, return a new generator that dispatches the\n * correct handler based on sync or async execution.\n */\nfunction newGenerator({ name, arity, sync, async, errback }) {\n  assertTypeof(\"string\", \"name\", name, true /* allowUndefined */);\n  assertTypeof(\"number\", \"arity\", arity, true /* allowUndefined */);\n  assertTypeof(\"function\", \"sync\", sync);\n  assertTypeof(\"function\", \"async\", async, true /* allowUndefined */);\n  assertTypeof(\"function\", \"errback\", errback, true /* allowUndefined */);\n  if (async && errback) {\n    throw makeError(\n      \"Expected one of either opts.async or opts.errback, but got _both_.\",\n      GENSYNC_OPTIONS_ERROR\n    );\n  }\n\n  if (typeof name !== \"string\") {\n    let fnName;\n    if (errback && errback.name && errback.name !== \"errback\") {\n      fnName = errback.name;\n    }\n    if (async && async.name && async.name !== \"async\") {\n      fnName = async.name.replace(/Async$/, \"\");\n    }\n    if (sync && sync.name && sync.name !== \"sync\") {\n      fnName = sync.name.replace(/Sync$/, \"\");\n    }\n\n    if (typeof fnName === \"string\") {\n      name = fnName;\n    }\n  }\n\n  if (typeof arity !== \"number\") {\n    arity = sync.length;\n  }\n\n  return buildOperation({\n    name,\n    arity,\n    sync: function(args) {\n      return sync.apply(this, args);\n    },\n    async: function(args, resolve, reject) {\n      if (async) {\n        async.apply(this, args).then(resolve, reject);\n      } else if (errback) {\n        errback.call(this, ...args, (err, value) => {\n          if (err == null) resolve(value);\n          else reject(err);\n        });\n      } else {\n        resolve(sync.apply(this, args));\n      }\n    },\n  });\n}\n\nfunction wrapGenerator(genFn) {\n  return setFunctionMetadata(genFn.name, genFn.length, function(...args) {\n    return genFn.apply(this, args);\n  });\n}\n\nfunction buildOperation({ name, arity, sync, async }) {\n  return setFunctionMetadata(name, arity, function*(...args) {\n    const resume = yield GENSYNC_START;\n    if (!resume) {\n      // Break the tail call to avoid a bug in V8 v6.X with --harmony enabled.\n      const res = sync.call(this, args);\n      return res;\n    }\n\n    let result;\n    try {\n      async.call(\n        this,\n        args,\n        value => {\n          if (result) return;\n\n          result = { value };\n          resume();\n        },\n        err => {\n          if (result) return;\n\n          result = { err };\n          resume();\n        }\n      );\n    } catch (err) {\n      result = { err };\n      resume();\n    }\n\n    // Suspend until the callbacks run. Will resume synchronously if the\n    // callback was already called.\n    yield GENSYNC_SUSPEND;\n\n    if (result.hasOwnProperty(\"err\")) {\n      throw result.err;\n    }\n\n    return result.value;\n  });\n}\n\nfunction evaluateSync(gen) {\n  let value;\n  while (!({ value } = gen.next()).done) {\n    assertStart(value, gen);\n  }\n  return value;\n}\n\nfunction evaluateAsync(gen, resolve, reject) {\n  (function step() {\n    try {\n      let value;\n      while (!({ value } = gen.next()).done) {\n        assertStart(value, gen);\n\n        // If this throws, it is considered to have broken the contract\n        // established for async handlers. If these handlers are called\n        // synchronously, it is also considered bad behavior.\n        let sync = true;\n        let didSyncResume = false;\n        const out = gen.next(() => {\n          if (sync) {\n            didSyncResume = true;\n          } else {\n            step();\n          }\n        });\n        sync = false;\n\n        assertSuspend(out, gen);\n\n        if (!didSyncResume) {\n          // Callback wasn't called synchronously, so break out of the loop\n          // and let it call 'step' later.\n          return;\n        }\n      }\n\n      return resolve(value);\n    } catch (err) {\n      return reject(err);\n    }\n  })();\n}\n\nfunction assertStart(value, gen) {\n  if (value === GENSYNC_START) return;\n\n  throwError(\n    gen,\n    makeError(\n      `Got unexpected yielded value in gensync generator: ${JSON.stringify(\n        value\n      )}. Did you perhaps mean to use 'yield*' instead of 'yield'?`,\n      GENSYNC_EXPECTED_START\n    )\n  );\n}\nfunction assertSuspend({ value, done }, gen) {\n  if (!done && value === GENSYNC_SUSPEND) return;\n\n  throwError(\n    gen,\n    makeError(\n      done\n        ? \"Unexpected generator completion. If you get this, it is probably a gensync bug.\"\n        : `Expected GENSYNC_SUSPEND, got ${JSON.stringify(\n            value\n          )}. If you get this, it is probably a gensync bug.`,\n      GENSYNC_EXPECTED_SUSPEND\n    )\n  );\n}\n\nfunction throwError(gen, err) {\n  // Call `.throw` so that users can step in a debugger to easily see which\n  // 'yield' passed an unexpected value. If the `.throw` call didn't throw\n  // back to the generator, we explicitly do it to stop the error\n  // from being swallowed by user code try/catches.\n  if (gen.throw) gen.throw(err);\n  throw err;\n}\n\nfunction isIterable(value) {\n  return (\n    !!value &&\n    (typeof value === \"object\" || typeof value === \"function\") &&\n    !value[Symbol.iterator]\n  );\n}\n\nfunction setFunctionMetadata(name, arity, fn) {\n  if (typeof name === \"string\") {\n    // This should always work on the supported Node versions, but for the\n    // sake of users that are compiling to older versions, we check for\n    // configurability so we don't throw.\n    const nameDesc = Object.getOwnPropertyDescriptor(fn, \"name\");\n    if (!nameDesc || nameDesc.configurable) {\n      Object.defineProperty(\n        fn,\n        \"name\",\n        Object.assign(nameDesc || {}, {\n          configurable: true,\n          value: name,\n        })\n      );\n    }\n  }\n\n  if (typeof arity === \"number\") {\n    const lengthDesc = Object.getOwnPropertyDescriptor(fn, \"length\");\n    if (!lengthDesc || lengthDesc.configurable) {\n      Object.defineProperty(\n        fn,\n        \"length\",\n        Object.assign(lengthDesc || {}, {\n          configurable: true,\n          value: arity,\n        })\n      );\n    }\n  }\n\n  return fn;\n}\n","import gensync, { type Gensync, type Handler, type Callback } from \"gensync\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nconst runGenerator: {\n  sync<Return>(gen: Handler<Return>): Return;\n  async<Return>(gen: Handler<Return>): Promise<Return>;\n  errback<Return>(gen: Handler<Return>, cb: Callback<Return>): void;\n} = gensync(function* (item: Handler<any>): Handler<any> {\n  return yield* item;\n});\n\n// This Gensync returns true if the current execution context is\n// asynchronous, otherwise it returns false.\nexport const isAsync = gensync({\n  sync: () => false,\n  errback: cb => cb(null, true),\n});\n\n// This function wraps any functions (which could be either synchronous or\n// asynchronous) with a Gensync. If the wrapped function returns a promise\n// but the current execution context is synchronous, it will throw the\n// provided error.\n// This is used to handle user-provided functions which could be asynchronous.\nexport function maybeAsync<Args extends unknown[], Return>(\n  fn: (...args: Args) => Return,\n  message: string,\n): Gensync<Args, Return> {\n  return gensync({\n    sync(...args) {\n      const result = fn.apply(this, args);\n      if (isThenable(result)) throw new Error(message);\n      return result;\n    },\n    async(...args) {\n      return Promise.resolve(fn.apply(this, args));\n    },\n  });\n}\n\nconst withKind = gensync({\n  sync: cb => cb(\"sync\"),\n  async: async cb => cb(\"async\"),\n}) as <T>(cb: (kind: \"sync\" | \"async\") => MaybePromise<T>) => Handler<T>;\n\n// This function wraps a generator (or a Gensync) into another function which,\n// when called, will run the provided generator in a sync or async way, depending\n// on the execution context where this forwardAsync function is called.\n// This is useful, for example, when passing a callback to a function which isn't\n// aware of gensync, but it only knows about synchronous and asynchronous functions.\n// An example is cache.using, which being exposed to the user must be as simple as\n// possible:\n//     yield* forwardAsync(gensyncFn, wrappedFn =>\n//       cache.using(x => {\n//         // Here we don't know about gensync. wrappedFn is a\n//         // normal sync or async function\n//         return wrappedFn(x);\n//       })\n//     )\nexport function forwardAsync<Args extends unknown[], Return>(\n  action: (...args: Args) => Handler<Return>,\n  cb: (\n    adapted: (...args: Args) => MaybePromise<Return>,\n  ) => MaybePromise<Return>,\n): Handler<Return> {\n  const g = gensync(action);\n  return withKind(kind => {\n    const adapted = g[kind];\n    return cb(adapted);\n  });\n}\n\n// If the given generator is executed asynchronously, the first time that it\n// is paused (i.e. When it yields a gensync generator which can't be run\n// synchronously), call the \"firstPause\" callback.\nexport const onFirstPause = gensync<\n  [gen: Handler<unknown>, firstPause: () => void],\n  unknown\n>({\n  name: \"onFirstPause\",\n  arity: 2,\n  sync: function (item) {\n    return runGenerator.sync(item);\n  },\n  errback: function (item, firstPause, cb) {\n    let completed = false;\n\n    runGenerator.errback(item, (err, value) => {\n      completed = true;\n      cb(err, value);\n    });\n\n    if (!completed) {\n      firstPause();\n    }\n  },\n}) as <T>(gen: Handler<T>, firstPause: () => void) => Handler<T>;\n\n// Wait for the given promise to be resolved\nexport const waitFor = gensync({\n  sync: x => x,\n  async: async x => x,\n}) as <T>(p: T | Promise<T>) => Handler<T>;\n\nexport function isThenable<T = any>(val: any): val is PromiseLike<T> {\n  return (\n    !!val &&\n    (typeof val === \"object\" || typeof val === \"function\") &&\n    !!val.then &&\n    typeof val.then === \"function\"\n  );\n}\n","import type {\n  ValidatedOptions,\n  NormalizedOptions,\n} from \"./validation/options.ts\";\n\nexport function mergeOptions(\n  target: ValidatedOptions,\n  source: ValidatedOptions | NormalizedOptions,\n): void {\n  for (const k of Object.keys(source)) {\n    if (\n      (k === \"parserOpts\" || k === \"generatorOpts\" || k === \"assumptions\") &&\n      source[k]\n    ) {\n      const parserOpts = source[k];\n      const targetObj = target[k] || (target[k] = {});\n      mergeDefaultFields(targetObj, parserOpts);\n    } else {\n      //@ts-expect-error k must index source\n      const val = source[k];\n      //@ts-expect-error assigning source to target\n      if (val !== undefined) target[k] = val as any;\n    }\n  }\n}\n\nfunction mergeDefaultFields<T extends object>(target: T, source: T) {\n  for (const k of Object.keys(source) as (keyof T)[]) {\n    const val = source[k];\n    if (val !== undefined) target[k] = val;\n  }\n}\n\nexport function isIterableIterator(value: any): value is IterableIterator<any> {\n  return (\n    !!value &&\n    typeof value.next === \"function\" &&\n    typeof value[Symbol.iterator] === \"function\"\n  );\n}\n","export type DeepArray<T> = Array<T | ReadonlyDeepArray<T>>;\n\n// Just to make sure that DeepArray<T> is not assignable to ReadonlyDeepArray<T>\ndeclare const __marker: unique symbol;\nexport type ReadonlyDeepArray<T> = ReadonlyArray<T | ReadonlyDeepArray<T>> & {\n  [__marker]: true;\n};\n\nexport function finalize<T>(deepArr: DeepArray<T>): ReadonlyDeepArray<T> {\n  return Object.freeze(deepArr) as ReadonlyDeepArray<T>;\n}\n\nexport function flattenToSet<T extends string>(\n  arr: ReadonlyDeepArray<T>,\n): Set<T> {\n  const result = new Set<T>();\n  const stack = [arr];\n  while (stack.length > 0) {\n    for (const el of stack.pop()) {\n      if (Array.isArray(el)) stack.push(el as ReadonlyDeepArray<T>);\n      else result.add(el as T);\n    }\n  }\n  return result;\n}\n","import { finalize } from \"./helpers/deep-array.ts\";\nimport type { ReadonlyDeepArray } from \"./helpers/deep-array.ts\";\nimport type { PluginObject } from \"./validation/plugins.ts\";\n\nexport default class Plugin {\n  key: string | undefined | null;\n  manipulateOptions?: (options: unknown, parserOpts: unknown) => void;\n  post?: PluginObject[\"post\"];\n  pre?: PluginObject[\"pre\"];\n  visitor: PluginObject[\"visitor\"];\n\n  parserOverride?: Function;\n  generatorOverride?: Function;\n\n  options: object;\n\n  externalDependencies: ReadonlyDeepArray<string>;\n\n  constructor(\n    plugin: PluginObject,\n    options: object,\n    key?: string,\n    externalDependencies: ReadonlyDeepArray<string> = finalize([]),\n  ) {\n    this.key = plugin.name || key;\n\n    this.manipulateOptions = plugin.manipulateOptions;\n    this.post = plugin.post;\n    this.pre = plugin.pre;\n    this.visitor = plugin.visitor || {};\n    this.parserOverride = plugin.parserOverride;\n    this.generatorOverride = plugin.generatorOverride;\n\n    this.options = options;\n    this.externalDependencies = externalDependencies;\n  }\n}\n","import type { Handler } from \"gensync\";\n\nimport { isAsync, waitFor } from \"./async.ts\";\n\nexport function once<R>(fn: () => Handler<R>): () => Handler<R> {\n  let result: { ok: true; value: R } | { ok: false; value: unknown };\n  let resultP: Promise<R>;\n  let promiseReferenced = false;\n  return function* () {\n    if (!result) {\n      if (resultP) {\n        promiseReferenced = true;\n        return yield* waitFor(resultP);\n      }\n\n      if (!(yield* isAsync())) {\n        try {\n          result = { ok: true, value: yield* fn() };\n        } catch (error) {\n          result = { ok: false, value: error };\n        }\n      } else {\n        let resolve: (result: R) => void, reject: (error: unknown) => void;\n        resultP = new Promise((res, rej) => {\n          resolve = res;\n          reject = rej;\n        });\n\n        try {\n          result = { ok: true, value: yield* fn() };\n          // Avoid keeping the promise around\n          // now that we have the result.\n          resultP = null;\n          // We only resolve/reject the promise if it has been actually\n          // referenced. If there are no listeners we can forget about it.\n          // In the reject case, this avoid uncatchable unhandledRejection\n          // events.\n          if (promiseReferenced) resolve(result.value);\n        } catch (error) {\n          result = { ok: false, value: error };\n          resultP = null;\n          if (promiseReferenced) reject(error);\n        }\n      }\n    }\n\n    if (result.ok) return result.value;\n    else throw result.value;\n  };\n}\n","import gensync from \"gensync\";\nimport type { Handler } from \"gensync\";\nimport {\n  maybeAsync,\n  isAsync,\n  onFirstPause,\n  waitFor,\n  isThenable,\n} from \"../gensync-utils/async.ts\";\nimport { isIterableIterator } from \"./util.ts\";\n\nexport type { CacheConfigurator };\n\nexport type SimpleCacheConfigurator = {\n  (forever: boolean): void;\n  <T>(handler: () => T): T;\n\n  forever: () => void;\n  never: () => void;\n  using: <T>(handler: () => T) => T;\n  invalidate: <T>(handler: () => T) => T;\n};\n\nexport type CacheEntry<ResultT, SideChannel> = Array<{\n  value: ResultT;\n  valid: (channel: SideChannel) => Handler<boolean>;\n}>;\n\nconst synchronize = <ArgsT extends unknown[], ResultT>(\n  gen: (...args: ArgsT) => Handler<ResultT>,\n): ((...args: ArgsT) => ResultT) => {\n  return gensync(gen).sync;\n};\n\n// eslint-disable-next-line require-yield\nfunction* genTrue() {\n  return true;\n}\n\nexport function makeWeakCache<ArgT extends object, ResultT, SideChannel>(\n  handler: (\n    arg: ArgT,\n    cache: CacheConfigurator<SideChannel>,\n  ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n  return makeCachedFunction<ArgT, ResultT, SideChannel>(WeakMap, handler);\n}\n\nexport function makeWeakCacheSync<ArgT extends object, ResultT, SideChannel>(\n  handler: (arg: ArgT, cache?: CacheConfigurator<SideChannel>) => ResultT,\n): (arg: ArgT, data?: SideChannel) => ResultT {\n  return synchronize<[ArgT, SideChannel], ResultT>(\n    makeWeakCache<ArgT, ResultT, SideChannel>(handler),\n  );\n}\n\nexport function makeStrongCache<ArgT, ResultT, SideChannel>(\n  handler: (\n    arg: ArgT,\n    cache: CacheConfigurator<SideChannel>,\n  ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n  return makeCachedFunction<ArgT, ResultT, SideChannel>(Map, handler);\n}\n\nexport function makeStrongCacheSync<ArgT, ResultT, SideChannel>(\n  handler: (arg: ArgT, cache?: CacheConfigurator<SideChannel>) => ResultT,\n): (arg: ArgT, data?: SideChannel) => ResultT {\n  return synchronize<[ArgT, SideChannel], ResultT>(\n    makeStrongCache<ArgT, ResultT, SideChannel>(handler),\n  );\n}\n\n/* NOTE: Part of the logic explained in this comment is explained in the\n *       getCachedValueOrWait and setupAsyncLocks functions.\n *\n * > There are only two hard things in Computer Science: cache invalidation and naming things.\n * > -- Phil Karlton\n *\n * I don't know if Phil was also thinking about handling a cache whose invalidation function is\n * defined asynchronously is considered, but it is REALLY hard to do correctly.\n *\n * The implemented logic (only when gensync is run asynchronously) is the following:\n *   1. If there is a valid cache associated to the current \"arg\" parameter,\n *       a. RETURN the cached value\n *   3. If there is a FinishLock associated to the current \"arg\" parameter representing a valid cache,\n *       a. Wait for that lock to be released\n *       b. RETURN the value associated with that lock\n *   5. Start executing the function to be cached\n *       a. If it pauses on a promise, then\n *           i. Let FinishLock be a new lock\n *          ii. Store FinishLock as associated to the current \"arg\" parameter\n *         iii. Wait for the function to finish executing\n *          iv. Release FinishLock\n *           v. Send the function result to anyone waiting on FinishLock\n *   6. Store the result in the cache\n *   7. RETURN the result\n */\nfunction makeCachedFunction<ArgT, ResultT, SideChannel>(\n  CallCache: new <Cached>() => CacheMap<ArgT, Cached, SideChannel>,\n  handler: (\n    arg: ArgT,\n    cache: CacheConfigurator<SideChannel>,\n  ) => Handler<ResultT> | ResultT,\n): (arg: ArgT, data: SideChannel) => Handler<ResultT> {\n  const callCacheSync = new CallCache<ResultT>();\n  const callCacheAsync = new CallCache<ResultT>();\n  const futureCache = new CallCache<Lock<ResultT>>();\n\n  return function* cachedFunction(arg: ArgT, data: SideChannel) {\n    const asyncContext = yield* isAsync();\n    const callCache = asyncContext ? callCacheAsync : callCacheSync;\n\n    const cached = yield* getCachedValueOrWait<ArgT, ResultT, SideChannel>(\n      asyncContext,\n      callCache,\n      futureCache,\n      arg,\n      data,\n    );\n    if (cached.valid) return cached.value;\n\n    const cache = new CacheConfigurator(data);\n\n    const handlerResult: Handler<ResultT> | ResultT = handler(arg, cache);\n\n    let finishLock: Lock<ResultT>;\n    let value: ResultT;\n\n    if (isIterableIterator(handlerResult)) {\n      value = yield* onFirstPause(handlerResult, () => {\n        finishLock = setupAsyncLocks(cache, futureCache, arg);\n      });\n    } else {\n      value = handlerResult;\n    }\n\n    updateFunctionCache(callCache, cache, arg, value);\n\n    if (finishLock) {\n      futureCache.delete(arg);\n      finishLock.release(value);\n    }\n\n    return value;\n  };\n}\n\ntype CacheMap<ArgT, ResultT, SideChannel> =\n  | Map<ArgT, CacheEntry<ResultT, SideChannel>>\n  // @ts-expect-error todo(flow->ts): add `extends object` constraint to ArgT\n  | WeakMap<ArgT, CacheEntry<ResultT, SideChannel>>;\n\nfunction* getCachedValue<ArgT, ResultT, SideChannel>(\n  cache: CacheMap<ArgT, ResultT, SideChannel>,\n  arg: ArgT,\n  data: SideChannel,\n): Handler<{ valid: true; value: ResultT } | { valid: false; value: null }> {\n  const cachedValue: CacheEntry<ResultT, SideChannel> | void = cache.get(arg);\n\n  if (cachedValue) {\n    for (const { value, valid } of cachedValue) {\n      if (yield* valid(data)) return { valid: true, value };\n    }\n  }\n\n  return { valid: false, value: null };\n}\n\nfunction* getCachedValueOrWait<ArgT, ResultT, SideChannel>(\n  asyncContext: boolean,\n  callCache: CacheMap<ArgT, ResultT, SideChannel>,\n  futureCache: CacheMap<ArgT, Lock<ResultT>, SideChannel>,\n  arg: ArgT,\n  data: SideChannel,\n): Handler<{ valid: true; value: ResultT } | { valid: false; value: null }> {\n  const cached = yield* getCachedValue(callCache, arg, data);\n  if (cached.valid) {\n    return cached;\n  }\n\n  if (asyncContext) {\n    const cached = yield* getCachedValue(futureCache, arg, data);\n    if (cached.valid) {\n      const value = yield* waitFor<ResultT>(cached.value.promise);\n      return { valid: true, value };\n    }\n  }\n\n  return { valid: false, value: null };\n}\n\nfunction setupAsyncLocks<ArgT, ResultT, SideChannel>(\n  config: CacheConfigurator<SideChannel>,\n  futureCache: CacheMap<ArgT, Lock<ResultT>, SideChannel>,\n  arg: ArgT,\n): Lock<ResultT> {\n  const finishLock = new Lock<ResultT>();\n\n  updateFunctionCache(futureCache, config, arg, finishLock);\n\n  return finishLock;\n}\n\nfunction updateFunctionCache<\n  ArgT,\n  ResultT,\n  SideChannel,\n  Cache extends CacheMap<ArgT, ResultT, SideChannel>,\n>(\n  cache: Cache,\n  config: CacheConfigurator<SideChannel>,\n  arg: ArgT,\n  value: ResultT,\n) {\n  if (!config.configured()) config.forever();\n\n  let cachedValue: CacheEntry<ResultT, SideChannel> | void = cache.get(arg);\n\n  config.deactivate();\n\n  switch (config.mode()) {\n    case \"forever\":\n      cachedValue = [{ value, valid: genTrue }];\n      cache.set(arg, cachedValue);\n      break;\n    case \"invalidate\":\n      cachedValue = [{ value, valid: config.validator() }];\n      cache.set(arg, cachedValue);\n      break;\n    case \"valid\":\n      if (cachedValue) {\n        cachedValue.push({ value, valid: config.validator() });\n      } else {\n        cachedValue = [{ value, valid: config.validator() }];\n        cache.set(arg, cachedValue);\n      }\n  }\n}\n\nclass CacheConfigurator<SideChannel = void> {\n  _active: boolean = true;\n  _never: boolean = false;\n  _forever: boolean = false;\n  _invalidate: boolean = false;\n\n  _configured: boolean = false;\n\n  _pairs: Array<\n    [cachedValue: unknown, handler: (data: SideChannel) => Handler<unknown>]\n  > = [];\n\n  _data: SideChannel;\n\n  constructor(data: SideChannel) {\n    this._data = data;\n  }\n\n  simple() {\n    return makeSimpleConfigurator(this);\n  }\n\n  mode() {\n    if (this._never) return \"never\";\n    if (this._forever) return \"forever\";\n    if (this._invalidate) return \"invalidate\";\n    return \"valid\";\n  }\n\n  forever() {\n    if (!this._active) {\n      throw new Error(\"Cannot change caching after evaluation has completed.\");\n    }\n    if (this._never) {\n      throw new Error(\"Caching has already been configured with .never()\");\n    }\n    this._forever = true;\n    this._configured = true;\n  }\n\n  never() {\n    if (!this._active) {\n      throw new Error(\"Cannot change caching after evaluation has completed.\");\n    }\n    if (this._forever) {\n      throw new Error(\"Caching has already been configured with .forever()\");\n    }\n    this._never = true;\n    this._configured = true;\n  }\n\n  using<T>(handler: (data: SideChannel) => T): T {\n    if (!this._active) {\n      throw new Error(\"Cannot change caching after evaluation has completed.\");\n    }\n    if (this._never || this._forever) {\n      throw new Error(\n        \"Caching has already been configured with .never or .forever()\",\n      );\n    }\n    this._configured = true;\n\n    const key = handler(this._data);\n\n    const fn = maybeAsync(\n      handler,\n      `You appear to be using an async cache handler, but Babel has been called synchronously`,\n    );\n\n    if (isThenable(key)) {\n      // @ts-expect-error todo(flow->ts): improve function return type annotation\n      return key.then((key: unknown) => {\n        this._pairs.push([key, fn]);\n        return key;\n      });\n    }\n\n    this._pairs.push([key, fn]);\n    return key;\n  }\n\n  invalidate<T>(handler: (data: SideChannel) => T): T {\n    this._invalidate = true;\n    return this.using(handler);\n  }\n\n  validator(): (data: SideChannel) => Handler<boolean> {\n    const pairs = this._pairs;\n    return function* (data: SideChannel) {\n      for (const [key, fn] of pairs) {\n        if (key !== (yield* fn(data))) return false;\n      }\n      return true;\n    };\n  }\n\n  deactivate() {\n    this._active = false;\n  }\n\n  configured() {\n    return this._configured;\n  }\n}\n\nfunction makeSimpleConfigurator(\n  cache: CacheConfigurator<any>,\n): SimpleCacheConfigurator {\n  function cacheFn(val: any) {\n    if (typeof val === \"boolean\") {\n      if (val) cache.forever();\n      else cache.never();\n      return;\n    }\n\n    return cache.using(() => assertSimpleType(val()));\n  }\n  cacheFn.forever = () => cache.forever();\n  cacheFn.never = () => cache.never();\n  cacheFn.using = (cb: () => SimpleType) =>\n    cache.using(() => assertSimpleType(cb()));\n  cacheFn.invalidate = (cb: () => SimpleType) =>\n    cache.invalidate(() => assertSimpleType(cb()));\n\n  return cacheFn as any;\n}\n\n// Types are limited here so that in the future these values can be used\n// as part of Babel's caching logic.\nexport type SimpleType =\n  | string\n  | boolean\n  | number\n  | null\n  | void\n  | Promise<SimpleType>;\nexport function assertSimpleType(value: unknown): SimpleType {\n  if (isThenable(value)) {\n    throw new Error(\n      `You appear to be using an async cache handler, ` +\n        `which your current version of Babel does not support. ` +\n        `We may add support for this in the future, ` +\n        `but if you're on the most recent version of @babel/core and still ` +\n        `seeing this error, then you'll need to synchronously handle your caching logic.`,\n    );\n  }\n\n  if (\n    value != null &&\n    typeof value !== \"string\" &&\n    typeof value !== \"boolean\" &&\n    typeof value !== \"number\"\n  ) {\n    throw new Error(\n      \"Cache keys must be either string, boolean, number, null, or undefined.\",\n    );\n  }\n  // @ts-expect-error Type 'unknown' is not assignable to type 'SimpleType'. This can be removed\n  // when strictNullCheck is enabled\n  return value;\n}\n\nclass Lock<T> {\n  released: boolean = false;\n  promise: Promise<T>;\n  _resolve: (value: T) => void;\n\n  constructor() {\n    this.promise = new Promise(resolve => {\n      this._resolve = resolve;\n    });\n  }\n\n  release(value: T) {\n    this.released = true;\n    this._resolve(value);\n  }\n}\n","module.exports={A:\"ie\",B:\"edge\",C:\"firefox\",D:\"chrome\",E:\"safari\",F:\"opera\",G:\"ios_saf\",H:\"op_mini\",I:\"android\",J:\"bb\",K:\"op_mob\",L:\"and_chr\",M:\"and_ff\",N:\"ie_mob\",O:\"and_uc\",P:\"samsung\",Q:\"and_qq\",R:\"baidu\",S:\"kaios\"};\n","module.exports.browsers = require('../../data/browsers')\n","module.exports={\"0\":\"22\",\"1\":\"23\",\"2\":\"24\",\"3\":\"25\",\"4\":\"26\",\"5\":\"27\",\"6\":\"115\",\"7\":\"116\",\"8\":\"117\",\"9\":\"118\",A:\"10\",B:\"11\",C:\"12\",D:\"7\",E:\"8\",F:\"9\",G:\"15\",H:\"80\",I:\"133\",J:\"4\",K:\"6\",L:\"13\",M:\"14\",N:\"16\",O:\"17\",P:\"18\",Q:\"79\",R:\"81\",S:\"83\",T:\"84\",U:\"85\",V:\"86\",W:\"87\",X:\"88\",Y:\"89\",Z:\"90\",a:\"91\",b:\"92\",c:\"93\",d:\"94\",e:\"95\",f:\"96\",g:\"97\",h:\"98\",i:\"99\",j:\"100\",k:\"101\",l:\"102\",m:\"103\",n:\"104\",o:\"105\",p:\"106\",q:\"107\",r:\"108\",s:\"109\",t:\"110\",u:\"111\",v:\"112\",w:\"113\",x:\"114\",y:\"20\",z:\"21\",AB:\"119\",BB:\"120\",CB:\"121\",DB:\"122\",EB:\"123\",FB:\"124\",GB:\"125\",HB:\"126\",IB:\"127\",JB:\"128\",KB:\"129\",LB:\"130\",MB:\"131\",NB:\"132\",OB:\"5\",PB:\"19\",QB:\"28\",RB:\"29\",SB:\"30\",TB:\"31\",UB:\"32\",VB:\"33\",WB:\"34\",XB:\"35\",YB:\"36\",ZB:\"37\",aB:\"38\",bB:\"39\",cB:\"40\",dB:\"41\",eB:\"42\",fB:\"43\",gB:\"44\",hB:\"45\",iB:\"46\",jB:\"47\",kB:\"48\",lB:\"49\",mB:\"50\",nB:\"51\",oB:\"52\",pB:\"53\",qB:\"54\",rB:\"55\",sB:\"56\",tB:\"57\",uB:\"58\",vB:\"60\",wB:\"62\",xB:\"63\",yB:\"64\",zB:\"65\",\"0B\":\"66\",\"1B\":\"67\",\"2B\":\"68\",\"3B\":\"69\",\"4B\":\"70\",\"5B\":\"71\",\"6B\":\"72\",\"7B\":\"73\",\"8B\":\"74\",\"9B\":\"75\",AC:\"76\",BC:\"77\",CC:\"78\",DC:\"135\",EC:\"11.1\",FC:\"12.1\",GC:\"15.5\",HC:\"16.0\",IC:\"17.0\",JC:\"18.0\",KC:\"3\",LC:\"59\",MC:\"61\",NC:\"82\",OC:\"134\",PC:\"136\",QC:\"3.2\",RC:\"10.1\",SC:\"15.2-15.3\",TC:\"15.4\",UC:\"16.1\",VC:\"16.2\",WC:\"16.3\",XC:\"16.4\",YC:\"16.5\",ZC:\"17.1\",aC:\"17.2\",bC:\"17.3\",cC:\"17.4\",dC:\"17.5\",eC:\"18.1\",fC:\"18.2\",gC:\"18.3\",hC:\"18.4\",iC:\"11.5\",jC:\"4.2-4.3\",kC:\"5.5\",lC:\"2\",mC:\"137\",nC:\"138\",oC:\"3.5\",pC:\"3.6\",qC:\"3.1\",rC:\"5.1\",sC:\"6.1\",tC:\"7.1\",uC:\"9.1\",vC:\"13.1\",wC:\"14.1\",xC:\"15.1\",yC:\"15.6\",zC:\"16.6\",\"0C\":\"17.6\",\"1C\":\"TP\",\"2C\":\"9.5-9.6\",\"3C\":\"10.0-10.1\",\"4C\":\"10.5\",\"5C\":\"10.6\",\"6C\":\"11.6\",\"7C\":\"4.0-4.1\",\"8C\":\"5.0-5.1\",\"9C\":\"6.0-6.1\",AD:\"7.0-7.1\",BD:\"8.1-8.4\",CD:\"9.0-9.2\",DD:\"9.3\",ED:\"10.0-10.2\",FD:\"10.3\",GD:\"11.0-11.2\",HD:\"11.3-11.4\",ID:\"12.0-12.1\",JD:\"12.2-12.5\",KD:\"13.0-13.1\",LD:\"13.2\",MD:\"13.3\",ND:\"13.4-13.7\",OD:\"14.0-14.4\",PD:\"14.5-14.8\",QD:\"15.0-15.1\",RD:\"15.6-15.8\",SD:\"16.6-16.7\",TD:\"17.6-17.7\",UD:\"all\",VD:\"2.1\",WD:\"2.2\",XD:\"2.3\",YD:\"4.1\",ZD:\"4.4\",aD:\"4.4.3-4.4.4\",bD:\"5.0-5.4\",cD:\"6.2-6.4\",dD:\"7.2-7.4\",eD:\"8.2\",fD:\"9.2\",gD:\"11.1-11.2\",hD:\"12.0\",iD:\"13.0\",jD:\"14.0\",kD:\"15.0\",lD:\"19.0\",mD:\"14.9\",nD:\"13.52\",oD:\"2.5\",pD:\"3.0-3.1\"};\n","module.exports.browserVersions = require('../../data/browserVersions')\n","module.exports={A:{A:{K:0,D:0,E:0,F:0.0321964,A:0,B:0.418554,kC:0},B:\"ms\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"kC\",\"K\",\"D\",\"E\",\"F\",\"A\",\"B\",\"\",\"\",\"\"],E:\"IE\",F:{kC:962323200,K:998870400,D:1161129600,E:1237420800,F:1300060800,A:1346716800,B:1381968000}},B:{A:{\"6\":0.007212,\"7\":0.003606,\"8\":0.003606,\"9\":0.003606,C:0,L:0,M:0,G:0,N:0,O:0,P:0.093756,Q:0,H:0,R:0,S:0,T:0,U:0,V:0,W:0,X:0,Y:0,Z:0,a:0,b:0.010818,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0.003606,s:0.050484,t:0,u:0,v:0,w:0.007212,x:0.010818,AB:0.003606,BB:0.025242,CB:0.007212,DB:0.014424,EB:0.007212,FB:0.007212,GB:0.007212,HB:0.021636,IB:0.01803,JB:0.014424,KB:0.01803,LB:0.043272,MB:0.151452,NB:1.92921,I:2.56747},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"C\",\"L\",\"M\",\"G\",\"N\",\"O\",\"P\",\"Q\",\"H\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"6\",\"7\",\"8\",\"9\",\"AB\",\"BB\",\"CB\",\"DB\",\"EB\",\"FB\",\"GB\",\"HB\",\"IB\",\"JB\",\"KB\",\"LB\",\"MB\",\"NB\",\"I\",\"\",\"\",\"\"],E:\"Edge\",F:{\"6\":1689897600,\"7\":1692576000,\"8\":1694649600,\"9\":1697155200,C:1438128000,L:1447286400,M:1470096000,G:1491868800,N:1508198400,O:1525046400,P:1542067200,Q:1579046400,H:1581033600,R:1586736000,S:1590019200,T:1594857600,U:1598486400,V:1602201600,W:1605830400,X:1611360000,Y:1614816000,Z:1618358400,a:1622073600,b:1626912000,c:1630627200,d:1632441600,e:1634774400,f:1637539200,g:1641427200,h:1643932800,i:1646265600,j:1649635200,k:1651190400,l:1653955200,m:1655942400,n:1659657600,o:1661990400,p:1664755200,q:1666915200,r:1670198400,s:1673481600,t:1675900800,u:1678665600,v:1680825600,w:1683158400,x:1685664000,AB:1698969600,BB:1701993600,CB:1706227200,DB:1708732800,EB:1711152000,FB:1713398400,GB:1715990400,HB:1718841600,IB:1721865600,JB:1724371200,KB:1726704000,LB:1729123200,MB:1731542400,NB:1737417600,I:1740614400},D:{C:\"ms\",L:\"ms\",M:\"ms\",G:\"ms\",N:\"ms\",O:\"ms\",P:\"ms\"}},C:{A:{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0.241602,\"7\":0,\"8\":0,\"9\":0.104574,lC:0,KC:0,J:0,OB:0,K:0,D:0,E:0,F:0,A:0,B:0.021636,C:0,L:0,M:0,G:0,N:0,O:0,P:0,PB:0,y:0,z:0,QB:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0,dB:0,eB:0,fB:0.003606,gB:0.003606,hB:0,iB:0,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0.028848,pB:0.007212,qB:0,rB:0.003606,sB:0.010818,tB:0,uB:0,LC:0.003606,vB:0,MC:0,wB:0,xB:0,yB:0,zB:0,\"0B\":0,\"1B\":0,\"2B\":0,\"3B\":0,\"4B\":0,\"5B\":0,\"6B\":0,\"7B\":0,\"8B\":0,\"9B\":0,AC:0,BC:0,CC:0.010818,Q:0,H:0,R:0,NC:0,S:0,T:0,U:0,V:0,W:0,X:0.003606,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0,f:0,g:0,h:0,i:0,j:0,k:0,l:0,m:0,n:0,o:0,p:0,q:0,r:0,s:0.003606,t:0,u:0,v:0,w:0.003606,x:0,AB:0,BB:0.003606,CB:0,DB:0,EB:0,FB:0,GB:0.021636,HB:0,IB:0.007212,JB:0.079332,KB:0.003606,LB:0.003606,MB:0.007212,NB:0.014424,I:0.028848,OC:0.385842,DC:1.17556,PC:0.007212,mC:0,nC:0,oC:0,pC:0},B:\"moz\",C:[\"lC\",\"KC\",\"oC\",\"pC\",\"J\",\"OB\",\"K\",\"D\",\"E\",\"F\",\"A\",\"B\",\"C\",\"L\",\"M\",\"G\",\"N\",\"O\",\"P\",\"PB\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"QB\",\"RB\",\"SB\",\"TB\",\"UB\",\"VB\",\"WB\",\"XB\",\"YB\",\"ZB\",\"aB\",\"bB\",\"cB\",\"dB\",\"eB\",\"fB\",\"gB\",\"hB\",\"iB\",\"jB\",\"kB\",\"lB\",\"mB\",\"nB\",\"oB\",\"pB\",\"qB\",\"rB\",\"sB\",\"tB\",\"uB\",\"LC\",\"vB\",\"MC\",\"wB\",\"xB\",\"yB\",\"zB\",\"0B\",\"1B\",\"2B\",\"3B\",\"4B\",\"5B\",\"6B\",\"7B\",\"8B\",\"9B\",\"AC\",\"BC\",\"CC\",\"Q\",\"H\",\"R\",\"NC\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"6\",\"7\",\"8\",\"9\",\"AB\",\"BB\",\"CB\",\"DB\",\"EB\",\"FB\",\"GB\",\"HB\",\"IB\",\"JB\",\"KB\",\"LB\",\"MB\",\"NB\",\"I\",\"OC\",\"DC\",\"PC\",\"mC\",\"nC\"],E:\"Firefox\",F:{\"0\":1368489600,\"1\":1372118400,\"2\":1375747200,\"3\":1379376000,\"4\":1386633600,\"5\":1391472000,\"6\":1688428800,\"7\":1690848000,\"8\":1693267200,\"9\":1695686400,lC:1161648000,KC:1213660800,oC:1246320000,pC:1264032000,J:1300752000,OB:1308614400,K:1313452800,D:1317081600,E:1317081600,F:1320710400,A:1324339200,B:1327968000,C:1331596800,L:1335225600,M:1338854400,G:1342483200,N:1346112000,O:1349740800,P:1353628800,PB:1357603200,y:1361232000,z:1364860800,QB:1395100800,RB:1398729600,SB:1402358400,TB:1405987200,UB:1409616000,VB:1413244800,WB:1417392000,XB:1421107200,YB:1424736000,ZB:1428278400,aB:1431475200,bB:1435881600,cB:1439251200,dB:1442880000,eB:1446508800,fB:1450137600,gB:1453852800,hB:1457395200,iB:1461628800,jB:1465257600,kB:1470096000,lB:1474329600,mB:1479168000,nB:1485216000,oB:1488844800,pB:1492560000,qB:1497312000,rB:1502150400,sB:1506556800,tB:1510617600,uB:1516665600,LC:1520985600,vB:1525824000,MC:1529971200,wB:1536105600,xB:1540252800,yB:1544486400,zB:1548720000,\"0B\":1552953600,\"1B\":1558396800,\"2B\":1562630400,\"3B\":1567468800,\"4B\":1571788800,\"5B\":1575331200,\"6B\":1578355200,\"7B\":1581379200,\"8B\":1583798400,\"9B\":1586304000,AC:1588636800,BC:1591056000,CC:1593475200,Q:1595894400,H:1598313600,R:1600732800,NC:1603152000,S:1605571200,T:1607990400,U:1611619200,V:1614038400,W:1616457600,X:1618790400,Y:1622505600,Z:1626134400,a:1628553600,b:1630972800,c:1633392000,d:1635811200,e:1638835200,f:1641859200,g:1644364800,h:1646697600,i:1649116800,j:1651536000,k:1653955200,l:1656374400,m:1658793600,n:1661212800,o:1663632000,p:1666051200,q:1668470400,r:1670889600,s:1673913600,t:1676332800,u:1678752000,v:1681171200,w:1683590400,x:1686009600,AB:1698105600,BB:1700524800,CB:1702944000,DB:1705968000,EB:1708387200,FB:1710806400,GB:1713225600,HB:1715644800,IB:1718064000,JB:1720483200,KB:1722902400,LB:1725321600,MB:1727740800,NB:1730160000,I:1732579200,OC:1736208000,DC:1738627200,PC:null,mC:null,nC:null}},D:{A:{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,\"6\":0.028848,\"7\":0.111786,\"8\":0.068514,\"9\":0.05409,J:0,OB:0,K:0,D:0,E:0,F:0,A:0,B:0,C:0,L:0,M:0,G:0,N:0,O:0,P:0,PB:0,y:0,z:0,QB:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0.007212,bB:0,cB:0,dB:0.003606,eB:0,fB:0,gB:0,hB:0.003606,iB:0,jB:0.003606,kB:0.014424,lB:0.014424,mB:0.01803,nB:0,oB:0.007212,pB:0.007212,qB:0,rB:0,sB:0.014424,tB:0.003606,uB:0.007212,LC:0,vB:0,MC:0,wB:0,xB:0,yB:0,zB:0,\"0B\":0.01803,\"1B\":0,\"2B\":0,\"3B\":0.007212,\"4B\":0.010818,\"5B\":0,\"6B\":0,\"7B\":0.007212,\"8B\":0.003606,\"9B\":0.003606,AC:0.003606,BC:0.014424,CC:0.010818,Q:0.079332,H:0.010818,R:0.025242,S:0.032454,T:0.003606,U:0.007212,V:0.01803,W:0.068514,X:0.014424,Y:0.003606,Z:0.007212,a:0.039666,b:0.007212,c:0.014424,d:0.028848,e:0.007212,f:0.007212,g:0.01803,h:0.03606,i:0.014424,j:0.007212,k:0.014424,l:0.010818,m:0.082938,n:0.082938,o:0.010818,p:0.021636,q:0.025242,r:0.039666,s:1.02771,t:0.01803,u:0.032454,v:0.046878,w:0.12621,x:0.082938,AB:0.039666,BB:0.061302,CB:0.10818,DB:0.075726,EB:0.086544,FB:0.133422,GB:0.494022,HB:0.436326,IB:0.155058,JB:0.140634,KB:0.115392,LB:0.16227,MB:1.38831,NB:7.9909,I:7.16873,OC:0.014424,DC:0.014424,PC:0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"J\",\"OB\",\"K\",\"D\",\"E\",\"F\",\"A\",\"B\",\"C\",\"L\",\"M\",\"G\",\"N\",\"O\",\"P\",\"PB\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"QB\",\"RB\",\"SB\",\"TB\",\"UB\",\"VB\",\"WB\",\"XB\",\"YB\",\"ZB\",\"aB\",\"bB\",\"cB\",\"dB\",\"eB\",\"fB\",\"gB\",\"hB\",\"iB\",\"jB\",\"kB\",\"lB\",\"mB\",\"nB\",\"oB\",\"pB\",\"qB\",\"rB\",\"sB\",\"tB\",\"uB\",\"LC\",\"vB\",\"MC\",\"wB\",\"xB\",\"yB\",\"zB\",\"0B\",\"1B\",\"2B\",\"3B\",\"4B\",\"5B\",\"6B\",\"7B\",\"8B\",\"9B\",\"AC\",\"BC\",\"CC\",\"Q\",\"H\",\"R\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"6\",\"7\",\"8\",\"9\",\"AB\",\"BB\",\"CB\",\"DB\",\"EB\",\"FB\",\"GB\",\"HB\",\"IB\",\"JB\",\"KB\",\"LB\",\"MB\",\"NB\",\"I\",\"OC\",\"DC\",\"PC\"],E:\"Chrome\",F:{\"0\":1343692800,\"1\":1348531200,\"2\":1352246400,\"3\":1357862400,\"4\":1361404800,\"5\":1364428800,\"6\":1689724800,\"7\":1692057600,\"8\":1694476800,\"9\":1696896000,J:1264377600,OB:1274745600,K:1283385600,D:1287619200,E:1291248000,F:1296777600,A:1299542400,B:1303862400,C:1307404800,L:1312243200,M:1316131200,G:1316131200,N:1319500800,O:1323734400,P:1328659200,PB:1332892800,y:1337040000,z:1340668800,QB:1369094400,RB:1374105600,SB:1376956800,TB:1384214400,UB:1389657600,VB:1392940800,WB:1397001600,XB:1400544000,YB:1405468800,ZB:1409011200,aB:1412640000,bB:1416268800,cB:1421798400,dB:1425513600,eB:1429401600,fB:1432080000,gB:1437523200,hB:1441152000,iB:1444780800,jB:1449014400,kB:1453248000,lB:1456963200,mB:1460592000,nB:1464134400,oB:1469059200,pB:1472601600,qB:1476230400,rB:1480550400,sB:1485302400,tB:1489017600,uB:1492560000,LC:1496707200,vB:1500940800,MC:1504569600,wB:1508198400,xB:1512518400,yB:1516752000,zB:1520294400,\"0B\":1523923200,\"1B\":1527552000,\"2B\":1532390400,\"3B\":1536019200,\"4B\":1539648000,\"5B\":1543968000,\"6B\":1548720000,\"7B\":1552348800,\"8B\":1555977600,\"9B\":1559606400,AC:1564444800,BC:1568073600,CC:1571702400,Q:1575936000,H:1580860800,R:1586304000,S:1589846400,T:1594684800,U:1598313600,V:1601942400,W:1605571200,X:1611014400,Y:1614556800,Z:1618272000,a:1621987200,b:1626739200,c:1630368000,d:1632268800,e:1634601600,f:1637020800,g:1641340800,h:1643673600,i:1646092800,j:1648512000,k:1650931200,l:1653350400,m:1655769600,n:1659398400,o:1661817600,p:1664236800,q:1666656000,r:1669680000,s:1673308800,t:1675728000,u:1678147200,v:1680566400,w:1682985600,x:1685404800,AB:1698710400,BB:1701993600,CB:1705968000,DB:1708387200,EB:1710806400,FB:1713225600,GB:1715644800,HB:1718064000,IB:1721174400,JB:1724112000,KB:1726531200,LB:1728950400,MB:1731369600,NB:1736812800,I:1738627200,OC:null,DC:null,PC:null}},E:{A:{J:0,OB:0,K:0,D:0,E:0.003606,F:0,A:0,B:0,C:0,L:0,M:0.01803,G:0.003606,qC:0,QC:0,rC:0,sC:0,tC:0,uC:0,RC:0,EC:0.003606,FC:0.007212,vC:0.03606,wC:0.050484,xC:0.010818,SC:0.007212,TC:0.014424,GC:0.01803,yC:0.16227,HC:0.028848,UC:0.025242,VC:0.01803,WC:0.046878,XC:0.01803,YC:0.028848,zC:0.219966,IC:0.010818,ZC:0.093756,aC:0.021636,bC:0.025242,cC:0.061302,dC:0.115392,\"0C\":0.338964,JC:0.05409,eC:0.454356,fC:0.176694,gC:0.858228,hC:0,\"1C\":0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"qC\",\"QC\",\"J\",\"OB\",\"rC\",\"K\",\"sC\",\"D\",\"tC\",\"E\",\"F\",\"uC\",\"A\",\"RC\",\"B\",\"EC\",\"C\",\"FC\",\"L\",\"vC\",\"M\",\"wC\",\"G\",\"xC\",\"SC\",\"TC\",\"GC\",\"yC\",\"HC\",\"UC\",\"VC\",\"WC\",\"XC\",\"YC\",\"zC\",\"IC\",\"ZC\",\"aC\",\"bC\",\"cC\",\"dC\",\"0C\",\"JC\",\"eC\",\"fC\",\"gC\",\"hC\",\"1C\",\"\"],E:\"Safari\",F:{qC:1205798400,QC:1226534400,J:1244419200,OB:1275868800,rC:1311120000,K:1343174400,sC:1382400000,D:1382400000,tC:1410998400,E:1413417600,F:1443657600,uC:1458518400,A:1474329600,RC:1490572800,B:1505779200,EC:1522281600,C:1537142400,FC:1553472000,L:1568851200,vC:1585008000,M:1600214400,wC:1619395200,G:1632096000,xC:1635292800,SC:1639353600,TC:1647216000,GC:1652745600,yC:1658275200,HC:1662940800,UC:1666569600,VC:1670889600,WC:1674432000,XC:1679875200,YC:1684368000,zC:1690156800,IC:1695686400,ZC:1698192000,aC:1702252800,bC:1705881600,cC:1709596800,dC:1715558400,\"0C\":1722211200,JC:1726444800,eC:1730073600,fC:1733875200,gC:1737936000,hC:null,\"1C\":null}},F:{A:{\"0\":0,\"1\":0,\"2\":0,\"3\":0,\"4\":0,\"5\":0,F:0,B:0,C:0,G:0,N:0,O:0,P:0,PB:0,y:0,z:0,QB:0,RB:0,SB:0,TB:0,UB:0,VB:0,WB:0,XB:0,YB:0,ZB:0,aB:0,bB:0,cB:0.003606,dB:0,eB:0,fB:0,gB:0,hB:0,iB:0.010818,jB:0,kB:0,lB:0,mB:0,nB:0,oB:0,pB:0,qB:0,rB:0,sB:0,tB:0,uB:0,vB:0,wB:0,xB:0,yB:0,zB:0,\"0B\":0,\"1B\":0,\"2B\":0,\"3B\":0,\"4B\":0,\"5B\":0,\"6B\":0,\"7B\":0,\"8B\":0,\"9B\":0,AC:0,BC:0,CC:0,Q:0,H:0,R:0,NC:0,S:0,T:0,U:0,V:0.003606,W:0.039666,X:0,Y:0,Z:0,a:0,b:0,c:0,d:0,e:0.03606,f:0,g:0,h:0,i:0,j:0,k:0,l:0.010818,m:0,n:0,o:0,p:0,q:0,r:0,s:0,t:0,u:0,v:0,w:0,x:0.068514,\"2C\":0,\"3C\":0,\"4C\":0,\"5C\":0,EC:0,iC:0,\"6C\":0,FC:0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"F\",\"2C\",\"3C\",\"4C\",\"5C\",\"B\",\"EC\",\"iC\",\"6C\",\"C\",\"FC\",\"G\",\"N\",\"O\",\"P\",\"PB\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"QB\",\"RB\",\"SB\",\"TB\",\"UB\",\"VB\",\"WB\",\"XB\",\"YB\",\"ZB\",\"aB\",\"bB\",\"cB\",\"dB\",\"eB\",\"fB\",\"gB\",\"hB\",\"iB\",\"jB\",\"kB\",\"lB\",\"mB\",\"nB\",\"oB\",\"pB\",\"qB\",\"rB\",\"sB\",\"tB\",\"uB\",\"vB\",\"wB\",\"xB\",\"yB\",\"zB\",\"0B\",\"1B\",\"2B\",\"3B\",\"4B\",\"5B\",\"6B\",\"7B\",\"8B\",\"9B\",\"AC\",\"BC\",\"CC\",\"Q\",\"H\",\"R\",\"NC\",\"S\",\"T\",\"U\",\"V\",\"W\",\"X\",\"Y\",\"Z\",\"a\",\"b\",\"c\",\"d\",\"e\",\"f\",\"g\",\"h\",\"i\",\"j\",\"k\",\"l\",\"m\",\"n\",\"o\",\"p\",\"q\",\"r\",\"s\",\"t\",\"u\",\"v\",\"w\",\"x\",\"\",\"\",\"\"],E:\"Opera\",F:{\"0\":1401753600,\"1\":1405987200,\"2\":1409616000,\"3\":1413331200,\"4\":1417132800,\"5\":1422316800,F:1150761600,\"2C\":1223424000,\"3C\":1251763200,\"4C\":1267488000,\"5C\":1277942400,B:1292457600,EC:1302566400,iC:1309219200,\"6C\":1323129600,C:1323129600,FC:1352073600,G:1372723200,N:1377561600,O:1381104000,P:1386288000,PB:1390867200,y:1393891200,z:1399334400,QB:1425945600,RB:1430179200,SB:1433808000,TB:1438646400,UB:1442448000,VB:1445904000,WB:1449100800,XB:1454371200,YB:1457308800,ZB:1462320000,aB:1465344000,bB:1470096000,cB:1474329600,dB:1477267200,eB:1481587200,fB:1486425600,gB:1490054400,hB:1494374400,iB:1498003200,jB:1502236800,kB:1506470400,lB:1510099200,mB:1515024000,nB:1517961600,oB:1521676800,pB:1525910400,qB:1530144000,rB:1534982400,sB:1537833600,tB:1543363200,uB:1548201600,vB:1554768000,wB:1561593600,xB:1566259200,yB:1570406400,zB:1573689600,\"0B\":1578441600,\"1B\":1583971200,\"2B\":1587513600,\"3B\":1592956800,\"4B\":1595894400,\"5B\":1600128000,\"6B\":1603238400,\"7B\":1613520000,\"8B\":1612224000,\"9B\":1616544000,AC:1619568000,BC:1623715200,CC:1627948800,Q:1631577600,H:1633392000,R:1635984000,NC:1638403200,S:1642550400,T:1644969600,U:1647993600,V:1650412800,W:1652745600,X:1654646400,Y:1657152000,Z:1660780800,a:1663113600,b:1668816000,c:1668643200,d:1671062400,e:1675209600,f:1677024000,g:1679529600,h:1681948800,i:1684195200,j:1687219200,k:1690329600,l:1692748800,m:1696204800,n:1699920000,o:1699920000,p:1702944000,q:1707264000,r:1710115200,s:1711497600,t:1716336000,u:1719273600,v:1721088000,w:1724284800,x:1727222400},D:{F:\"o\",B:\"o\",C:\"o\",\"2C\":\"o\",\"3C\":\"o\",\"4C\":\"o\",\"5C\":\"o\",EC:\"o\",iC:\"o\",\"6C\":\"o\",FC:\"o\"}},G:{A:{E:0,QC:0,\"7C\":0,jC:0.00294636,\"8C\":0.00147318,\"9C\":0.00883907,AD:0.00736589,BD:0,CD:0.00294636,DD:0.0220977,ED:0.00294636,FD:0.0324099,GD:0.117854,HD:0.0103122,ID:0.00589271,JD:0.156157,KD:0.00294636,LD:0.00589271,MD:0.00589271,ND:0.0220977,OD:0.122274,PD:0.066293,QD:0.0353563,SC:0.0353563,TC:0.0427222,GC:0.0486149,RD:0.599583,HC:0.0869175,UC:0.181201,VC:0.091337,WC:0.163523,XC:0.0353563,YC:0.0677662,SD:0.713018,IC:0.0441953,ZC:0.0780784,aC:0.0604003,bC:0.0869175,cC:0.179728,dC:0.425748,TD:1.39805,JC:0.411017,eC:3.78017,fC:1.21537,gC:4.33409,hC:0.00883907},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"QC\",\"7C\",\"jC\",\"8C\",\"9C\",\"AD\",\"E\",\"BD\",\"CD\",\"DD\",\"ED\",\"FD\",\"GD\",\"HD\",\"ID\",\"JD\",\"KD\",\"LD\",\"MD\",\"ND\",\"OD\",\"PD\",\"QD\",\"SC\",\"TC\",\"GC\",\"RD\",\"HC\",\"UC\",\"VC\",\"WC\",\"XC\",\"YC\",\"SD\",\"IC\",\"ZC\",\"aC\",\"bC\",\"cC\",\"dC\",\"TD\",\"JC\",\"eC\",\"fC\",\"gC\",\"hC\",\"\",\"\"],E:\"Safari on iOS\",F:{QC:1270252800,\"7C\":1283904000,jC:1299628800,\"8C\":1331078400,\"9C\":1359331200,AD:1394409600,E:1410912000,BD:1413763200,CD:1442361600,DD:1458518400,ED:1473724800,FD:1490572800,GD:1505779200,HD:1522281600,ID:1537142400,JD:1553472000,KD:1568851200,LD:1572220800,MD:1580169600,ND:1585008000,OD:1600214400,PD:1619395200,QD:1632096000,SC:1639353600,TC:1647216000,GC:1652659200,RD:1658275200,HC:1662940800,UC:1666569600,VC:1670889600,WC:1674432000,XC:1679875200,YC:1684368000,SD:1690156800,IC:1694995200,ZC:1698192000,aC:1702252800,bC:1705881600,cC:1709596800,dC:1715558400,TD:1722211200,JC:1726444800,eC:1730073600,fC:1733875200,gC:1737936000,hC:null}},H:{A:{UD:0.04},B:\"o\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"UD\",\"\",\"\",\"\"],E:\"Opera Mini\",F:{UD:1426464000}},I:{A:{KC:0,J:0,I:0.682721,VD:0,WD:0,XD:0,YD:0,jC:0.000136832,ZD:0,aD:0.00082099},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"VD\",\"WD\",\"XD\",\"KC\",\"J\",\"YD\",\"jC\",\"ZD\",\"aD\",\"I\",\"\",\"\",\"\"],E:\"Android Browser\",F:{VD:1256515200,WD:1274313600,XD:1291593600,KC:1298332800,J:1318896000,YD:1341792000,jC:1374624000,ZD:1386547200,aD:1401667200,I:1740441600}},J:{A:{D:0,A:0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"D\",\"A\",\"\",\"\",\"\"],E:\"Blackberry Browser\",F:{D:1325376000,A:1359504000}},K:{A:{A:0,B:0,C:0,H:1.00862,EC:0,iC:0,FC:0},B:\"o\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"A\",\"B\",\"EC\",\"iC\",\"C\",\"FC\",\"H\",\"\",\"\",\"\"],E:\"Opera Mobile\",F:{A:1287100800,B:1300752000,EC:1314835200,iC:1318291200,C:1330300800,FC:1349740800,H:1709769600},D:{H:\"webkit\"}},L:{A:{I:45.4281},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"I\",\"\",\"\",\"\"],E:\"Chrome for Android\",F:{I:1740441600}},M:{A:{DC:0.345276},B:\"moz\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"DC\",\"\",\"\",\"\"],E:\"Firefox for Android\",F:{DC:1738627200}},N:{A:{A:0,B:0},B:\"ms\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"A\",\"B\",\"\",\"\",\"\"],E:\"IE Mobile\",F:{A:1340150400,B:1353456000}},O:{A:{GC:0.844008},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"GC\",\"\",\"\",\"\"],E:\"UC Browser for Android\",F:{GC:1710115200},D:{GC:\"webkit\"}},P:{A:{\"0\":0.0329859,\"1\":0.0329859,\"2\":0.0439812,\"3\":0.0439812,\"4\":0.0989576,\"5\":1.97915,J:0.0659717,y:0,z:0.0219906,bD:0,cD:0,dD:0.0219906,eD:0,fD:0,RC:0,gD:0,hD:0,iD:0,jD:0,kD:0,HC:0,IC:0.0109953,JC:0,lD:0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"J\",\"bD\",\"cD\",\"dD\",\"eD\",\"fD\",\"RC\",\"gD\",\"hD\",\"iD\",\"jD\",\"kD\",\"HC\",\"IC\",\"JC\",\"lD\",\"y\",\"z\",\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"\",\"\",\"\"],E:\"Samsung Internet\",F:{\"0\":1689292800,\"1\":1697587200,\"2\":1711497600,\"3\":1715126400,\"4\":1717718400,\"5\":1725667200,J:1461024000,bD:1481846400,cD:1509408000,dD:1528329600,eD:1546128000,fD:1554163200,RC:1567900800,gD:1582588800,hD:1593475200,iD:1605657600,jD:1618531200,kD:1629072000,HC:1640736000,IC:1651708800,JC:1659657600,lD:1667260800,y:1677369600,z:1684454400}},Q:{A:{mD:0.204608},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"mD\",\"\",\"\",\"\"],E:\"QQ Browser\",F:{mD:1710288000}},R:{A:{nD:0},B:\"webkit\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"nD\",\"\",\"\",\"\"],E:\"Baidu Browser\",F:{nD:1710201600}},S:{A:{oD:0.019182,pD:0},B:\"moz\",C:[\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"\",\"oD\",\"pD\",\"\",\"\",\"\"],E:\"KaiOS Browser\",F:{oD:1527811200,pD:1631664000}}};\n","'use strict'\n\nconst browsers = require('./browsers').browsers\nconst versions = require('./browserVersions').browserVersions\nconst agentsData = require('../../data/agents')\n\nfunction unpackBrowserVersions(versionsData) {\n  return Object.keys(versionsData).reduce((usage, version) => {\n    usage[versions[version]] = versionsData[version]\n    return usage\n  }, {})\n}\n\nmodule.exports.agents = Object.keys(agentsData).reduce((map, key) => {\n  let versionsData = agentsData[key]\n  map[browsers[key]] = Object.keys(versionsData).reduce((data, entry) => {\n    if (entry === 'A') {\n      data.usage_global = unpackBrowserVersions(versionsData[entry])\n    } else if (entry === 'C') {\n      data.versions = versionsData[entry].reduce((list, version) => {\n        if (version === '') {\n          list.push(null)\n        } else {\n          list.push(versions[version])\n        }\n        return list\n      }, [])\n    } else if (entry === 'D') {\n      data.prefix_exceptions = unpackBrowserVersions(versionsData[entry])\n    } else if (entry === 'E') {\n      data.browser = versionsData[entry]\n    } else if (entry === 'F') {\n      data.release_date = Object.keys(versionsData[entry]).reduce(\n        (map2, key2) => {\n          map2[versions[key2]] = versionsData[entry][key2]\n          return map2\n        },\n        {}\n      )\n    } else {\n      // entry is B\n      data.prefix = versionsData[entry]\n    }\n    return data\n  }, {})\n  return map\n}, {})\n","module.exports = {\n\t\"0.20\": \"39\",\n\t\"0.21\": \"41\",\n\t\"0.22\": \"41\",\n\t\"0.23\": \"41\",\n\t\"0.24\": \"41\",\n\t\"0.25\": \"42\",\n\t\"0.26\": \"42\",\n\t\"0.27\": \"43\",\n\t\"0.28\": \"43\",\n\t\"0.29\": \"43\",\n\t\"0.30\": \"44\",\n\t\"0.31\": \"45\",\n\t\"0.32\": \"45\",\n\t\"0.33\": \"45\",\n\t\"0.34\": \"45\",\n\t\"0.35\": \"45\",\n\t\"0.36\": \"47\",\n\t\"0.37\": \"49\",\n\t\"1.0\": \"49\",\n\t\"1.1\": \"50\",\n\t\"1.2\": \"51\",\n\t\"1.3\": \"52\",\n\t\"1.4\": \"53\",\n\t\"1.5\": \"54\",\n\t\"1.6\": \"56\",\n\t\"1.7\": \"58\",\n\t\"1.8\": \"59\",\n\t\"2.0\": \"61\",\n\t\"2.1\": \"61\",\n\t\"3.0\": \"66\",\n\t\"3.1\": \"66\",\n\t\"4.0\": \"69\",\n\t\"4.1\": \"69\",\n\t\"4.2\": \"69\",\n\t\"5.0\": \"73\",\n\t\"6.0\": \"76\",\n\t\"6.1\": \"76\",\n\t\"7.0\": \"78\",\n\t\"7.1\": \"78\",\n\t\"7.2\": \"78\",\n\t\"7.3\": \"78\",\n\t\"8.0\": \"80\",\n\t\"8.1\": \"80\",\n\t\"8.2\": \"80\",\n\t\"8.3\": \"80\",\n\t\"8.4\": \"80\",\n\t\"8.5\": \"80\",\n\t\"9.0\": \"83\",\n\t\"9.1\": \"83\",\n\t\"9.2\": \"83\",\n\t\"9.3\": \"83\",\n\t\"9.4\": \"83\",\n\t\"10.0\": \"85\",\n\t\"10.1\": \"85\",\n\t\"10.2\": \"85\",\n\t\"10.3\": \"85\",\n\t\"10.4\": \"85\",\n\t\"11.0\": \"87\",\n\t\"11.1\": \"87\",\n\t\"11.2\": \"87\",\n\t\"11.3\": \"87\",\n\t\"11.4\": \"87\",\n\t\"11.5\": \"87\",\n\t\"12.0\": \"89\",\n\t\"12.1\": \"89\",\n\t\"12.2\": \"89\",\n\t\"13.0\": \"91\",\n\t\"13.1\": \"91\",\n\t\"13.2\": \"91\",\n\t\"13.3\": \"91\",\n\t\"13.4\": \"91\",\n\t\"13.5\": \"91\",\n\t\"13.6\": \"91\",\n\t\"14.0\": \"93\",\n\t\"14.1\": \"93\",\n\t\"14.2\": \"93\",\n\t\"15.0\": \"94\",\n\t\"15.1\": \"94\",\n\t\"15.2\": \"94\",\n\t\"15.3\": \"94\",\n\t\"15.4\": \"94\",\n\t\"15.5\": \"94\",\n\t\"16.0\": \"96\",\n\t\"16.1\": \"96\",\n\t\"16.2\": \"96\",\n\t\"17.0\": \"98\",\n\t\"17.1\": \"98\",\n\t\"17.2\": \"98\",\n\t\"17.3\": \"98\",\n\t\"17.4\": \"98\",\n\t\"18.0\": \"100\",\n\t\"18.1\": \"100\",\n\t\"18.2\": \"100\",\n\t\"18.3\": \"100\",\n\t\"19.0\": \"102\",\n\t\"19.1\": \"102\",\n\t\"20.0\": \"104\",\n\t\"20.1\": \"104\",\n\t\"20.2\": \"104\",\n\t\"20.3\": \"104\",\n\t\"21.0\": \"106\",\n\t\"21.1\": \"106\",\n\t\"21.2\": \"106\",\n\t\"21.3\": \"106\",\n\t\"21.4\": \"106\",\n\t\"22.0\": \"108\",\n\t\"22.1\": \"108\",\n\t\"22.2\": \"108\",\n\t\"22.3\": \"108\",\n\t\"23.0\": \"110\",\n\t\"23.1\": \"110\",\n\t\"23.2\": \"110\",\n\t\"23.3\": \"110\",\n\t\"24.0\": \"112\",\n\t\"24.1\": \"112\",\n\t\"24.2\": \"112\",\n\t\"24.3\": \"112\",\n\t\"24.4\": \"112\",\n\t\"24.5\": \"112\",\n\t\"24.6\": \"112\",\n\t\"24.7\": \"112\",\n\t\"24.8\": \"112\",\n\t\"25.0\": \"114\",\n\t\"25.1\": \"114\",\n\t\"25.2\": \"114\",\n\t\"25.3\": \"114\",\n\t\"25.4\": \"114\",\n\t\"25.5\": \"114\",\n\t\"25.6\": \"114\",\n\t\"25.7\": \"114\",\n\t\"25.8\": \"114\",\n\t\"25.9\": \"114\",\n\t\"26.0\": \"116\",\n\t\"26.1\": \"116\",\n\t\"26.2\": \"116\",\n\t\"26.3\": \"116\",\n\t\"26.4\": \"116\",\n\t\"26.5\": \"116\",\n\t\"26.6\": \"116\",\n\t\"27.0\": \"118\",\n\t\"27.1\": \"118\",\n\t\"27.2\": \"118\",\n\t\"27.3\": \"118\",\n\t\"28.0\": \"120\",\n\t\"28.1\": \"120\",\n\t\"28.2\": \"120\",\n\t\"28.3\": \"120\",\n\t\"29.0\": \"122\",\n\t\"29.1\": \"122\",\n\t\"29.2\": \"122\",\n\t\"29.3\": \"122\",\n\t\"29.4\": \"122\",\n\t\"30.0\": \"124\",\n\t\"30.1\": \"124\",\n\t\"30.2\": \"124\",\n\t\"30.3\": \"124\",\n\t\"30.4\": \"124\",\n\t\"30.5\": \"124\",\n\t\"31.0\": \"126\",\n\t\"31.1\": \"126\",\n\t\"31.2\": \"126\",\n\t\"31.3\": \"126\",\n\t\"31.4\": \"126\",\n\t\"31.5\": \"126\",\n\t\"31.6\": \"126\",\n\t\"31.7\": \"126\",\n\t\"32.0\": \"128\",\n\t\"32.1\": \"128\",\n\t\"32.2\": \"128\",\n\t\"32.3\": \"128\",\n\t\"33.0\": \"130\",\n\t\"33.1\": \"130\",\n\t\"33.2\": \"130\",\n\t\"33.3\": \"130\",\n\t\"33.4\": \"130\",\n\t\"34.0\": \"132\",\n\t\"34.1\": \"132\",\n\t\"34.2\": \"132\",\n\t\"34.3\": \"132\",\n\t\"35.0\": \"134\",\n\t\"36.0\": \"135\"\n};","function BrowserslistError(message) {\n  this.name = 'BrowserslistError'\n  this.message = message\n  this.browserslist = true\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, BrowserslistError)\n  }\n}\n\nBrowserslistError.prototype = Error.prototype\n\nmodule.exports = BrowserslistError\n","var BrowserslistError = require('./error')\n\nfunction noop() {}\n\nmodule.exports = {\n  loadQueries: function loadQueries() {\n    throw new BrowserslistError(\n      'Sharable configs are not supported in client-side build of Browserslist'\n    )\n  },\n\n  getStat: function getStat(opts) {\n    return opts.stats\n  },\n\n  loadConfig: function loadConfig(opts) {\n    if (opts.config) {\n      throw new BrowserslistError(\n        'Browserslist config are not supported in client-side build'\n      )\n    }\n  },\n\n  loadCountry: function loadCountry() {\n    throw new BrowserslistError(\n      'Country statistics are not supported ' +\n        'in client-side build of Browserslist'\n    )\n  },\n\n  loadFeature: function loadFeature() {\n    throw new BrowserslistError(\n      'Supports queries are not available in client-side build of Browserslist'\n    )\n  },\n\n  currentNode: function currentNode(resolve, context) {\n    return resolve(['maintained node versions'], context)[0]\n  },\n\n  parseConfig: noop,\n\n  readConfig: noop,\n\n  findConfig: noop,\n\n  findConfigFile: noop,\n\n  clearCaches: noop,\n\n  oldDataWarning: noop,\n\n  env: {}\n}\n","var AND_REGEXP = /^\\s+and\\s+(.*)/i\nvar OR_REGEXP = /^(?:,\\s*|\\s+or\\s+)(.*)/i\n\nfunction flatten(array) {\n  if (!Array.isArray(array)) return [array]\n  return array.reduce(function (a, b) {\n    return a.concat(flatten(b))\n  }, [])\n}\n\nfunction find(string, predicate) {\n  for (var max = string.length, n = 1; n <= max; n++) {\n    var parsed = string.substr(-n, n)\n    if (predicate(parsed, n, max)) {\n      return string.slice(0, -n)\n    }\n  }\n  return ''\n}\n\nfunction matchQuery(all, query) {\n  var node = { query: query }\n  if (query.indexOf('not ') === 0) {\n    node.not = true\n    query = query.slice(4)\n  }\n\n  for (var name in all) {\n    var type = all[name]\n    var match = query.match(type.regexp)\n    if (match) {\n      node.type = name\n      for (var i = 0; i < type.matches.length; i++) {\n        node[type.matches[i]] = match[i + 1]\n      }\n      return node\n    }\n  }\n\n  node.type = 'unknown'\n  return node\n}\n\nfunction matchBlock(all, string, qs) {\n  var node\n  return find(string, function (parsed, n, max) {\n    if (AND_REGEXP.test(parsed)) {\n      node = matchQuery(all, parsed.match(AND_REGEXP)[1])\n      node.compose = 'and'\n      qs.unshift(node)\n      return true\n    } else if (OR_REGEXP.test(parsed)) {\n      node = matchQuery(all, parsed.match(OR_REGEXP)[1])\n      node.compose = 'or'\n      qs.unshift(node)\n      return true\n    } else if (n === max) {\n      node = matchQuery(all, parsed.trim())\n      node.compose = 'or'\n      qs.unshift(node)\n      return true\n    }\n    return false\n  })\n}\n\nmodule.exports = function parse(all, queries) {\n  if (!Array.isArray(queries)) queries = [queries]\n  return flatten(\n    queries.map(function (block) {\n      var qs = []\n      do {\n        block = matchBlock(all, block, qs)\n      } while (block)\n      return qs\n    })\n  )\n}\n","var jsReleases = require('node-releases/data/processed/envs.json')\nvar agents = require('caniuse-lite/dist/unpacker/agents').agents\nvar e2c = require('electron-to-chromium/versions')\nvar jsEOL = require('node-releases/data/release-schedule/release-schedule.json')\nvar path = require('path')\n\nvar BrowserslistError = require('./error')\nvar env = require('./node')\nvar parseWithoutCache = require('./parse') // Will load browser.js in webpack\n\nvar YEAR = 365.259641 * 24 * 60 * 60 * 1000\nvar ANDROID_EVERGREEN_FIRST = '37'\nvar OP_MOB_BLINK_FIRST = 14\n\n// Helpers\n\nfunction isVersionsMatch(versionA, versionB) {\n  return (versionA + '.').indexOf(versionB + '.') === 0\n}\n\nfunction isEolReleased(name) {\n  var version = name.slice(1)\n  return browserslist.nodeVersions.some(function (i) {\n    return isVersionsMatch(i, version)\n  })\n}\n\nfunction normalize(versions) {\n  return versions.filter(function (version) {\n    return typeof version === 'string'\n  })\n}\n\nfunction normalizeElectron(version) {\n  var versionToUse = version\n  if (version.split('.').length === 3) {\n    versionToUse = version.split('.').slice(0, -1).join('.')\n  }\n  return versionToUse\n}\n\nfunction nameMapper(name) {\n  return function mapName(version) {\n    return name + ' ' + version\n  }\n}\n\nfunction getMajor(version) {\n  return parseInt(version.split('.')[0])\n}\n\nfunction getMajorVersions(released, number) {\n  if (released.length === 0) return []\n  var majorVersions = uniq(released.map(getMajor))\n  var minimum = majorVersions[majorVersions.length - number]\n  if (!minimum) {\n    return released\n  }\n  var selected = []\n  for (var i = released.length - 1; i >= 0; i--) {\n    if (minimum > getMajor(released[i])) break\n    selected.unshift(released[i])\n  }\n  return selected\n}\n\nfunction uniq(array) {\n  var filtered = []\n  for (var i = 0; i < array.length; i++) {\n    if (filtered.indexOf(array[i]) === -1) filtered.push(array[i])\n  }\n  return filtered\n}\n\nfunction fillUsage(result, name, data) {\n  for (var i in data) {\n    result[name + ' ' + i] = data[i]\n  }\n}\n\nfunction generateFilter(sign, version) {\n  version = parseFloat(version)\n  if (sign === '>') {\n    return function (v) {\n      return parseLatestFloat(v) > version\n    }\n  } else if (sign === '>=') {\n    return function (v) {\n      return parseLatestFloat(v) >= version\n    }\n  } else if (sign === '<') {\n    return function (v) {\n      return parseFloat(v) < version\n    }\n  } else {\n    return function (v) {\n      return parseFloat(v) <= version\n    }\n  }\n\n  function parseLatestFloat(v) {\n    return parseFloat(v.split('-')[1] || v)\n  }\n}\n\nfunction generateSemverFilter(sign, version) {\n  version = version.split('.').map(parseSimpleInt)\n  version[1] = version[1] || 0\n  version[2] = version[2] || 0\n  if (sign === '>') {\n    return function (v) {\n      v = v.split('.').map(parseSimpleInt)\n      return compareSemver(v, version) > 0\n    }\n  } else if (sign === '>=') {\n    return function (v) {\n      v = v.split('.').map(parseSimpleInt)\n      return compareSemver(v, version) >= 0\n    }\n  } else if (sign === '<') {\n    return function (v) {\n      v = v.split('.').map(parseSimpleInt)\n      return compareSemver(version, v) > 0\n    }\n  } else {\n    return function (v) {\n      v = v.split('.').map(parseSimpleInt)\n      return compareSemver(version, v) >= 0\n    }\n  }\n}\n\nfunction parseSimpleInt(x) {\n  return parseInt(x)\n}\n\nfunction compare(a, b) {\n  if (a < b) return -1\n  if (a > b) return +1\n  return 0\n}\n\nfunction compareSemver(a, b) {\n  return (\n    compare(parseInt(a[0]), parseInt(b[0])) ||\n    compare(parseInt(a[1] || '0'), parseInt(b[1] || '0')) ||\n    compare(parseInt(a[2] || '0'), parseInt(b[2] || '0'))\n  )\n}\n\n// this follows the npm-like semver behavior\nfunction semverFilterLoose(operator, range) {\n  range = range.split('.').map(parseSimpleInt)\n  if (typeof range[1] === 'undefined') {\n    range[1] = 'x'\n  }\n  // ignore any patch version because we only return minor versions\n  // range[2] = 'x'\n  switch (operator) {\n    case '<=':\n      return function (version) {\n        version = version.split('.').map(parseSimpleInt)\n        return compareSemverLoose(version, range) <= 0\n      }\n    case '>=':\n    default:\n      return function (version) {\n        version = version.split('.').map(parseSimpleInt)\n        return compareSemverLoose(version, range) >= 0\n      }\n  }\n}\n\n// this follows the npm-like semver behavior\nfunction compareSemverLoose(version, range) {\n  if (version[0] !== range[0]) {\n    return version[0] < range[0] ? -1 : +1\n  }\n  if (range[1] === 'x') {\n    return 0\n  }\n  if (version[1] !== range[1]) {\n    return version[1] < range[1] ? -1 : +1\n  }\n  return 0\n}\n\nfunction resolveVersion(data, version) {\n  if (data.versions.indexOf(version) !== -1) {\n    return version\n  } else if (browserslist.versionAliases[data.name][version]) {\n    return browserslist.versionAliases[data.name][version]\n  } else {\n    return false\n  }\n}\n\nfunction normalizeVersion(data, version) {\n  var resolved = resolveVersion(data, version)\n  if (resolved) {\n    return resolved\n  } else if (data.versions.length === 1) {\n    return data.versions[0]\n  } else {\n    return false\n  }\n}\n\nfunction filterByYear(since, context) {\n  since = since / 1000\n  return Object.keys(agents).reduce(function (selected, name) {\n    var data = byName(name, context)\n    if (!data) return selected\n    var versions = Object.keys(data.releaseDate).filter(function (v) {\n      var date = data.releaseDate[v]\n      return date !== null && date >= since\n    })\n    return selected.concat(versions.map(nameMapper(data.name)))\n  }, [])\n}\n\nfunction cloneData(data) {\n  return {\n    name: data.name,\n    versions: data.versions,\n    released: data.released,\n    releaseDate: data.releaseDate\n  }\n}\n\nfunction byName(name, context) {\n  name = name.toLowerCase()\n  name = browserslist.aliases[name] || name\n  if (context.mobileToDesktop && browserslist.desktopNames[name]) {\n    var desktop = browserslist.data[browserslist.desktopNames[name]]\n    if (name === 'android') {\n      return normalizeAndroidData(cloneData(browserslist.data[name]), desktop)\n    } else {\n      var cloned = cloneData(desktop)\n      cloned.name = name\n      return cloned\n    }\n  }\n  return browserslist.data[name]\n}\n\nfunction normalizeAndroidVersions(androidVersions, chromeVersions) {\n  var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST)\n  return androidVersions\n    .filter(function (version) {\n      return /^(?:[2-4]\\.|[34]$)/.test(version)\n    })\n    .concat(chromeVersions.slice(iFirstEvergreen))\n}\n\nfunction copyObject(obj) {\n  var copy = {}\n  for (var key in obj) {\n    copy[key] = obj[key]\n  }\n  return copy\n}\n\nfunction normalizeAndroidData(android, chrome) {\n  android.released = normalizeAndroidVersions(android.released, chrome.released)\n  android.versions = normalizeAndroidVersions(android.versions, chrome.versions)\n  android.releaseDate = copyObject(android.releaseDate)\n  android.released.forEach(function (v) {\n    if (android.releaseDate[v] === undefined) {\n      android.releaseDate[v] = chrome.releaseDate[v]\n    }\n  })\n  return android\n}\n\nfunction checkName(name, context) {\n  var data = byName(name, context)\n  if (!data) throw new BrowserslistError('Unknown browser ' + name)\n  return data\n}\n\nfunction unknownQuery(query) {\n  return new BrowserslistError(\n    'Unknown browser query `' +\n      query +\n      '`. ' +\n      'Maybe you are using old Browserslist or made typo in query.'\n  )\n}\n\n// Adjusts last X versions queries for some mobile browsers,\n// where caniuse data jumps from a legacy version to the latest\nfunction filterJumps(list, name, nVersions, context) {\n  var jump = 1\n  switch (name) {\n    case 'android':\n      if (context.mobileToDesktop) return list\n      var released = browserslist.data.chrome.released\n      jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST)\n      break\n    case 'op_mob':\n      var latest = browserslist.data.op_mob.released.slice(-1)[0]\n      jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1\n      break\n    default:\n      return list\n  }\n  if (nVersions <= jump) {\n    return list.slice(-1)\n  }\n  return list.slice(jump - 1 - nVersions)\n}\n\nfunction isSupported(flags, withPartial) {\n  return (\n    typeof flags === 'string' &&\n    (flags.indexOf('y') >= 0 || (withPartial && flags.indexOf('a') >= 0))\n  )\n}\n\nfunction resolve(queries, context) {\n  return parseQueries(queries).reduce(function (result, node, index) {\n    if (node.not && index === 0) {\n      throw new BrowserslistError(\n        'Write any browsers query (for instance, `defaults`) ' +\n          'before `' +\n          node.query +\n          '`'\n      )\n    }\n    var type = QUERIES[node.type]\n    var array = type.select.call(browserslist, context, node).map(function (j) {\n      var parts = j.split(' ')\n      if (parts[1] === '0') {\n        return parts[0] + ' ' + byName(parts[0], context).versions[0]\n      } else {\n        return j\n      }\n    })\n\n    if (node.compose === 'and') {\n      if (node.not) {\n        return result.filter(function (j) {\n          return array.indexOf(j) === -1\n        })\n      } else {\n        return result.filter(function (j) {\n          return array.indexOf(j) !== -1\n        })\n      }\n    } else {\n      if (node.not) {\n        var filter = {}\n        array.forEach(function (j) {\n          filter[j] = true\n        })\n        return result.filter(function (j) {\n          return !filter[j]\n        })\n      }\n      return result.concat(array)\n    }\n  }, [])\n}\n\nfunction prepareOpts(opts) {\n  if (typeof opts === 'undefined') opts = {}\n\n  if (typeof opts.path === 'undefined') {\n    opts.path = path.resolve ? path.resolve('.') : '.'\n  }\n\n  return opts\n}\n\nfunction prepareQueries(queries, opts) {\n  if (typeof queries === 'undefined' || queries === null) {\n    var config = browserslist.loadConfig(opts)\n    if (config) {\n      queries = config\n    } else {\n      queries = browserslist.defaults\n    }\n  }\n\n  return queries\n}\n\nfunction checkQueries(queries) {\n  if (!(typeof queries === 'string' || Array.isArray(queries))) {\n    throw new BrowserslistError(\n      'Browser queries must be an array or string. Got ' + typeof queries + '.'\n    )\n  }\n}\n\nvar cache = {}\nvar parseCache = {}\n\nfunction browserslist(queries, opts) {\n  opts = prepareOpts(opts)\n  queries = prepareQueries(queries, opts)\n  checkQueries(queries)\n\n  var needsPath = parseQueries(queries).some(function (node) {\n    return QUERIES[node.type].needsPath\n  })\n  var context = {\n    ignoreUnknownVersions: opts.ignoreUnknownVersions,\n    dangerousExtend: opts.dangerousExtend,\n    mobileToDesktop: opts.mobileToDesktop,\n    env: opts.env\n  }\n  // Removing to avoid using context.path without marking query as needsPath\n  if (needsPath) {\n    context.path = opts.path\n  }\n\n  env.oldDataWarning(browserslist.data)\n  var stats = env.getStat(opts, browserslist.data)\n  if (stats) {\n    context.customUsage = {}\n    for (var browser in stats) {\n      fillUsage(context.customUsage, browser, stats[browser])\n    }\n  }\n\n  var cacheKey = JSON.stringify([queries, context])\n  if (cache[cacheKey]) return cache[cacheKey]\n\n  var result = uniq(resolve(queries, context)).sort(function (name1, name2) {\n    name1 = name1.split(' ')\n    name2 = name2.split(' ')\n    if (name1[0] === name2[0]) {\n      // assumptions on caniuse data\n      // 1) version ranges never overlaps\n      // 2) if version is not a range, it never contains `-`\n      var version1 = name1[1].split('-')[0]\n      var version2 = name2[1].split('-')[0]\n      return compareSemver(version2.split('.'), version1.split('.'))\n    } else {\n      return compare(name1[0], name2[0])\n    }\n  })\n  if (!env.env.BROWSERSLIST_DISABLE_CACHE) {\n    cache[cacheKey] = result\n  }\n  return result\n}\n\nfunction parseQueries(queries) {\n  var cacheKey = JSON.stringify(queries)\n  if (cacheKey in parseCache) return parseCache[cacheKey]\n  var result = parseWithoutCache(QUERIES, queries)\n  if (!env.env.BROWSERSLIST_DISABLE_CACHE) {\n    parseCache[cacheKey] = result\n  }\n  return result\n}\n\nbrowserslist.parse = function (queries, opts) {\n  opts = prepareOpts(opts)\n  queries = prepareQueries(queries, opts)\n  checkQueries(queries)\n  return parseQueries(queries)\n}\n\n// Will be filled by Can I Use data below\nbrowserslist.cache = {}\nbrowserslist.data = {}\nbrowserslist.usage = {\n  global: {},\n  custom: null\n}\n\n// Default browsers query\nbrowserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead']\n\n// Browser names aliases\nbrowserslist.aliases = {\n  fx: 'firefox',\n  ff: 'firefox',\n  ios: 'ios_saf',\n  explorer: 'ie',\n  blackberry: 'bb',\n  explorermobile: 'ie_mob',\n  operamini: 'op_mini',\n  operamobile: 'op_mob',\n  chromeandroid: 'and_chr',\n  firefoxandroid: 'and_ff',\n  ucandroid: 'and_uc',\n  qqandroid: 'and_qq'\n}\n\n// Can I Use only provides a few versions for some browsers (e.g. and_chr).\n// Fallback to a similar browser for unknown versions\n// Note op_mob is not included as its chromium versions are not in sync with Opera desktop\nbrowserslist.desktopNames = {\n  and_chr: 'chrome',\n  and_ff: 'firefox',\n  ie_mob: 'ie',\n  android: 'chrome' // has extra processing logic\n}\n\n// Aliases to work with joined versions like `ios_saf 7.0-7.1`\nbrowserslist.versionAliases = {}\n\nbrowserslist.clearCaches = env.clearCaches\nbrowserslist.parseConfig = env.parseConfig\nbrowserslist.readConfig = env.readConfig\nbrowserslist.findConfigFile = env.findConfigFile\nbrowserslist.findConfig = env.findConfig\nbrowserslist.loadConfig = env.loadConfig\n\nbrowserslist.coverage = function (browsers, stats) {\n  var data\n  if (typeof stats === 'undefined') {\n    data = browserslist.usage.global\n  } else if (stats === 'my stats') {\n    var opts = {}\n    opts.path = path.resolve ? path.resolve('.') : '.'\n    var customStats = env.getStat(opts)\n    if (!customStats) {\n      throw new BrowserslistError('Custom usage statistics was not provided')\n    }\n    data = {}\n    for (var browser in customStats) {\n      fillUsage(data, browser, customStats[browser])\n    }\n  } else if (typeof stats === 'string') {\n    if (stats.length > 2) {\n      stats = stats.toLowerCase()\n    } else {\n      stats = stats.toUpperCase()\n    }\n    env.loadCountry(browserslist.usage, stats, browserslist.data)\n    data = browserslist.usage[stats]\n  } else {\n    if ('dataByBrowser' in stats) {\n      stats = stats.dataByBrowser\n    }\n    data = {}\n    for (var name in stats) {\n      for (var version in stats[name]) {\n        data[name + ' ' + version] = stats[name][version]\n      }\n    }\n  }\n\n  return browsers.reduce(function (all, i) {\n    var usage = data[i]\n    if (usage === undefined) {\n      usage = data[i.replace(/ \\S+$/, ' 0')]\n    }\n    return all + (usage || 0)\n  }, 0)\n}\n\nfunction nodeQuery(context, node) {\n  var matched = browserslist.nodeVersions.filter(function (i) {\n    return isVersionsMatch(i, node.version)\n  })\n  if (matched.length === 0) {\n    if (context.ignoreUnknownVersions) {\n      return []\n    } else {\n      throw new BrowserslistError(\n        'Unknown version ' + node.version + ' of Node.js'\n      )\n    }\n  }\n  return ['node ' + matched[matched.length - 1]]\n}\n\nfunction sinceQuery(context, node) {\n  var year = parseInt(node.year)\n  var month = parseInt(node.month || '01') - 1\n  var day = parseInt(node.day || '01')\n  return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context)\n}\n\nfunction coverQuery(context, node) {\n  var coverage = parseFloat(node.coverage)\n  var usage = browserslist.usage.global\n  if (node.place) {\n    if (node.place.match(/^my\\s+stats$/i)) {\n      if (!context.customUsage) {\n        throw new BrowserslistError('Custom usage statistics was not provided')\n      }\n      usage = context.customUsage\n    } else {\n      var place\n      if (node.place.length === 2) {\n        place = node.place.toUpperCase()\n      } else {\n        place = node.place.toLowerCase()\n      }\n      env.loadCountry(browserslist.usage, place, browserslist.data)\n      usage = browserslist.usage[place]\n    }\n  }\n  var versions = Object.keys(usage).sort(function (a, b) {\n    return usage[b] - usage[a]\n  })\n  var coveraged = 0\n  var result = []\n  var version\n  for (var i = 0; i < versions.length; i++) {\n    version = versions[i]\n    if (usage[version] === 0) break\n    coveraged += usage[version]\n    result.push(version)\n    if (coveraged >= coverage) break\n  }\n  return result\n}\n\nvar QUERIES = {\n  last_major_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+major\\s+versions?$/i,\n    select: function (context, node) {\n      return Object.keys(agents).reduce(function (selected, name) {\n        var data = byName(name, context)\n        if (!data) return selected\n        var list = getMajorVersions(data.released, node.versions)\n        list = list.map(nameMapper(data.name))\n        list = filterJumps(list, data.name, node.versions, context)\n        return selected.concat(list)\n      }, [])\n    }\n  },\n  last_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+versions?$/i,\n    select: function (context, node) {\n      return Object.keys(agents).reduce(function (selected, name) {\n        var data = byName(name, context)\n        if (!data) return selected\n        var list = data.released.slice(-node.versions)\n        list = list.map(nameMapper(data.name))\n        list = filterJumps(list, data.name, node.versions, context)\n        return selected.concat(list)\n      }, [])\n    }\n  },\n  last_electron_major_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+electron\\s+major\\s+versions?$/i,\n    select: function (context, node) {\n      var validVersions = getMajorVersions(Object.keys(e2c), node.versions)\n      return validVersions.map(function (i) {\n        return 'chrome ' + e2c[i]\n      })\n    }\n  },\n  last_node_major_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+node\\s+major\\s+versions?$/i,\n    select: function (context, node) {\n      return getMajorVersions(browserslist.nodeVersions, node.versions).map(\n        function (version) {\n          return 'node ' + version\n        }\n      )\n    }\n  },\n  last_browser_major_versions: {\n    matches: ['versions', 'browser'],\n    regexp: /^last\\s+(\\d+)\\s+(\\w+)\\s+major\\s+versions?$/i,\n    select: function (context, node) {\n      var data = checkName(node.browser, context)\n      var validVersions = getMajorVersions(data.released, node.versions)\n      var list = validVersions.map(nameMapper(data.name))\n      list = filterJumps(list, data.name, node.versions, context)\n      return list\n    }\n  },\n  last_electron_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+electron\\s+versions?$/i,\n    select: function (context, node) {\n      return Object.keys(e2c)\n        .slice(-node.versions)\n        .map(function (i) {\n          return 'chrome ' + e2c[i]\n        })\n    }\n  },\n  last_node_versions: {\n    matches: ['versions'],\n    regexp: /^last\\s+(\\d+)\\s+node\\s+versions?$/i,\n    select: function (context, node) {\n      return browserslist.nodeVersions\n        .slice(-node.versions)\n        .map(function (version) {\n          return 'node ' + version\n        })\n    }\n  },\n  last_browser_versions: {\n    matches: ['versions', 'browser'],\n    regexp: /^last\\s+(\\d+)\\s+(\\w+)\\s+versions?$/i,\n    select: function (context, node) {\n      var data = checkName(node.browser, context)\n      var list = data.released.slice(-node.versions).map(nameMapper(data.name))\n      list = filterJumps(list, data.name, node.versions, context)\n      return list\n    }\n  },\n  unreleased_versions: {\n    matches: [],\n    regexp: /^unreleased\\s+versions$/i,\n    select: function (context) {\n      return Object.keys(agents).reduce(function (selected, name) {\n        var data = byName(name, context)\n        if (!data) return selected\n        var list = data.versions.filter(function (v) {\n          return data.released.indexOf(v) === -1\n        })\n        list = list.map(nameMapper(data.name))\n        return selected.concat(list)\n      }, [])\n    }\n  },\n  unreleased_electron_versions: {\n    matches: [],\n    regexp: /^unreleased\\s+electron\\s+versions?$/i,\n    select: function () {\n      return []\n    }\n  },\n  unreleased_browser_versions: {\n    matches: ['browser'],\n    regexp: /^unreleased\\s+(\\w+)\\s+versions?$/i,\n    select: function (context, node) {\n      var data = checkName(node.browser, context)\n      return data.versions\n        .filter(function (v) {\n          return data.released.indexOf(v) === -1\n        })\n        .map(nameMapper(data.name))\n    }\n  },\n  last_years: {\n    matches: ['years'],\n    regexp: /^last\\s+(\\d*.?\\d+)\\s+years?$/i,\n    select: function (context, node) {\n      return filterByYear(Date.now() - YEAR * node.years, context)\n    }\n  },\n  since_y: {\n    matches: ['year'],\n    regexp: /^since (\\d+)$/i,\n    select: sinceQuery\n  },\n  since_y_m: {\n    matches: ['year', 'month'],\n    regexp: /^since (\\d+)-(\\d+)$/i,\n    select: sinceQuery\n  },\n  since_y_m_d: {\n    matches: ['year', 'month', 'day'],\n    regexp: /^since (\\d+)-(\\d+)-(\\d+)$/i,\n    select: sinceQuery\n  },\n  popularity: {\n    matches: ['sign', 'popularity'],\n    regexp: /^(>=?|<=?)\\s*(\\d+|\\d+\\.\\d+|\\.\\d+)%$/,\n    select: function (context, node) {\n      var popularity = parseFloat(node.popularity)\n      var usage = browserslist.usage.global\n      return Object.keys(usage).reduce(function (result, version) {\n        if (node.sign === '>') {\n          if (usage[version] > popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<') {\n          if (usage[version] < popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<=') {\n          if (usage[version] <= popularity) {\n            result.push(version)\n          }\n        } else if (usage[version] >= popularity) {\n          result.push(version)\n        }\n        return result\n      }, [])\n    }\n  },\n  popularity_in_my_stats: {\n    matches: ['sign', 'popularity'],\n    regexp: /^(>=?|<=?)\\s*(\\d+|\\d+\\.\\d+|\\.\\d+)%\\s+in\\s+my\\s+stats$/,\n    select: function (context, node) {\n      var popularity = parseFloat(node.popularity)\n      if (!context.customUsage) {\n        throw new BrowserslistError('Custom usage statistics was not provided')\n      }\n      var usage = context.customUsage\n      return Object.keys(usage).reduce(function (result, version) {\n        var percentage = usage[version]\n        if (percentage == null) {\n          return result\n        }\n\n        if (node.sign === '>') {\n          if (percentage > popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<') {\n          if (percentage < popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<=') {\n          if (percentage <= popularity) {\n            result.push(version)\n          }\n        } else if (percentage >= popularity) {\n          result.push(version)\n        }\n        return result\n      }, [])\n    }\n  },\n  popularity_in_config_stats: {\n    matches: ['sign', 'popularity', 'config'],\n    regexp: /^(>=?|<=?)\\s*(\\d+|\\d+\\.\\d+|\\.\\d+)%\\s+in\\s+(\\S+)\\s+stats$/,\n    select: function (context, node) {\n      var popularity = parseFloat(node.popularity)\n      var stats = env.loadStat(context, node.config, browserslist.data)\n      if (stats) {\n        context.customUsage = {}\n        for (var browser in stats) {\n          fillUsage(context.customUsage, browser, stats[browser])\n        }\n      }\n      if (!context.customUsage) {\n        throw new BrowserslistError('Custom usage statistics was not provided')\n      }\n      var usage = context.customUsage\n      return Object.keys(usage).reduce(function (result, version) {\n        var percentage = usage[version]\n        if (percentage == null) {\n          return result\n        }\n\n        if (node.sign === '>') {\n          if (percentage > popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<') {\n          if (percentage < popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<=') {\n          if (percentage <= popularity) {\n            result.push(version)\n          }\n        } else if (percentage >= popularity) {\n          result.push(version)\n        }\n        return result\n      }, [])\n    }\n  },\n  popularity_in_place: {\n    matches: ['sign', 'popularity', 'place'],\n    regexp: /^(>=?|<=?)\\s*(\\d+|\\d+\\.\\d+|\\.\\d+)%\\s+in\\s+((alt-)?\\w\\w)$/,\n    select: function (context, node) {\n      var popularity = parseFloat(node.popularity)\n      var place = node.place\n      if (place.length === 2) {\n        place = place.toUpperCase()\n      } else {\n        place = place.toLowerCase()\n      }\n      env.loadCountry(browserslist.usage, place, browserslist.data)\n      var usage = browserslist.usage[place]\n      return Object.keys(usage).reduce(function (result, version) {\n        var percentage = usage[version]\n        if (percentage == null) {\n          return result\n        }\n\n        if (node.sign === '>') {\n          if (percentage > popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<') {\n          if (percentage < popularity) {\n            result.push(version)\n          }\n        } else if (node.sign === '<=') {\n          if (percentage <= popularity) {\n            result.push(version)\n          }\n        } else if (percentage >= popularity) {\n          result.push(version)\n        }\n        return result\n      }, [])\n    }\n  },\n  cover: {\n    matches: ['coverage'],\n    regexp: /^cover\\s+(\\d+|\\d+\\.\\d+|\\.\\d+)%$/i,\n    select: coverQuery\n  },\n  cover_in: {\n    matches: ['coverage', 'place'],\n    regexp: /^cover\\s+(\\d+|\\d+\\.\\d+|\\.\\d+)%\\s+in\\s+(my\\s+stats|(alt-)?\\w\\w)$/i,\n    select: coverQuery\n  },\n  supports: {\n    matches: ['supportType', 'feature'],\n    regexp: /^(?:(fully|partially)\\s+)?supports\\s+([\\w-]+)$/,\n    select: function (context, node) {\n      env.loadFeature(browserslist.cache, node.feature)\n      var withPartial = node.supportType !== 'fully'\n      var features = browserslist.cache[node.feature]\n      var result = []\n      for (var name in features) {\n        var data = byName(name, context)\n        // Only check desktop when latest released mobile has support\n        var iMax = data.released.length - 1\n        while (iMax >= 0) {\n          if (data.released[iMax] in features[name]) break\n          iMax--\n        }\n        var checkDesktop =\n          context.mobileToDesktop &&\n          name in browserslist.desktopNames &&\n          isSupported(features[name][data.released[iMax]], withPartial)\n        data.versions.forEach(function (version) {\n          var flags = features[name][version]\n          if (flags === undefined && checkDesktop) {\n            flags = features[browserslist.desktopNames[name]][version]\n          }\n          if (isSupported(flags, withPartial)) {\n            result.push(name + ' ' + version)\n          }\n        })\n      }\n      return result\n    }\n  },\n  electron_range: {\n    matches: ['from', 'to'],\n    regexp: /^electron\\s+([\\d.]+)\\s*-\\s*([\\d.]+)$/i,\n    select: function (context, node) {\n      var fromToUse = normalizeElectron(node.from)\n      var toToUse = normalizeElectron(node.to)\n      var from = parseFloat(node.from)\n      var to = parseFloat(node.to)\n      if (!e2c[fromToUse]) {\n        throw new BrowserslistError('Unknown version ' + from + ' of electron')\n      }\n      if (!e2c[toToUse]) {\n        throw new BrowserslistError('Unknown version ' + to + ' of electron')\n      }\n      return Object.keys(e2c)\n        .filter(function (i) {\n          var parsed = parseFloat(i)\n          return parsed >= from && parsed <= to\n        })\n        .map(function (i) {\n          return 'chrome ' + e2c[i]\n        })\n    }\n  },\n  node_range: {\n    matches: ['from', 'to'],\n    regexp: /^node\\s+([\\d.]+)\\s*-\\s*([\\d.]+)$/i,\n    select: function (context, node) {\n      return browserslist.nodeVersions\n        .filter(semverFilterLoose('>=', node.from))\n        .filter(semverFilterLoose('<=', node.to))\n        .map(function (v) {\n          return 'node ' + v\n        })\n    }\n  },\n  browser_range: {\n    matches: ['browser', 'from', 'to'],\n    regexp: /^(\\w+)\\s+([\\d.]+)\\s*-\\s*([\\d.]+)$/i,\n    select: function (context, node) {\n      var data = checkName(node.browser, context)\n      var from = parseFloat(normalizeVersion(data, node.from) || node.from)\n      var to = parseFloat(normalizeVersion(data, node.to) || node.to)\n      function filter(v) {\n        var parsed = parseFloat(v)\n        return parsed >= from && parsed <= to\n      }\n      return data.released.filter(filter).map(nameMapper(data.name))\n    }\n  },\n  electron_ray: {\n    matches: ['sign', 'version'],\n    regexp: /^electron\\s*(>=?|<=?)\\s*([\\d.]+)$/i,\n    select: function (context, node) {\n      var versionToUse = normalizeElectron(node.version)\n      return Object.keys(e2c)\n        .filter(generateFilter(node.sign, versionToUse))\n        .map(function (i) {\n          return 'chrome ' + e2c[i]\n        })\n    }\n  },\n  node_ray: {\n    matches: ['sign', 'version'],\n    regexp: /^node\\s*(>=?|<=?)\\s*([\\d.]+)$/i,\n    select: function (context, node) {\n      return browserslist.nodeVersions\n        .filter(generateSemverFilter(node.sign, node.version))\n        .map(function (v) {\n          return 'node ' + v\n        })\n    }\n  },\n  browser_ray: {\n    matches: ['browser', 'sign', 'version'],\n    regexp: /^(\\w+)\\s*(>=?|<=?)\\s*([\\d.]+)$/,\n    select: function (context, node) {\n      var version = node.version\n      var data = checkName(node.browser, context)\n      var alias = browserslist.versionAliases[data.name][version]\n      if (alias) version = alias\n      return data.released\n        .filter(generateFilter(node.sign, version))\n        .map(function (v) {\n          return data.name + ' ' + v\n        })\n    }\n  },\n  firefox_esr: {\n    matches: [],\n    regexp: /^(firefox|ff|fx)\\s+esr$/i,\n    select: function () {\n      return ['firefox 128']\n    }\n  },\n  opera_mini_all: {\n    matches: [],\n    regexp: /(operamini|op_mini)\\s+all/i,\n    select: function () {\n      return ['op_mini all']\n    }\n  },\n  electron_version: {\n    matches: ['version'],\n    regexp: /^electron\\s+([\\d.]+)$/i,\n    select: function (context, node) {\n      var versionToUse = normalizeElectron(node.version)\n      var chrome = e2c[versionToUse]\n      if (!chrome) {\n        throw new BrowserslistError(\n          'Unknown version ' + node.version + ' of electron'\n        )\n      }\n      return ['chrome ' + chrome]\n    }\n  },\n  node_major_version: {\n    matches: ['version'],\n    regexp: /^node\\s+(\\d+)$/i,\n    select: nodeQuery\n  },\n  node_minor_version: {\n    matches: ['version'],\n    regexp: /^node\\s+(\\d+\\.\\d+)$/i,\n    select: nodeQuery\n  },\n  node_patch_version: {\n    matches: ['version'],\n    regexp: /^node\\s+(\\d+\\.\\d+\\.\\d+)$/i,\n    select: nodeQuery\n  },\n  current_node: {\n    matches: [],\n    regexp: /^current\\s+node$/i,\n    select: function (context) {\n      return [env.currentNode(resolve, context)]\n    }\n  },\n  maintained_node: {\n    matches: [],\n    regexp: /^maintained\\s+node\\s+versions$/i,\n    select: function (context) {\n      var now = Date.now()\n      var queries = Object.keys(jsEOL)\n        .filter(function (key) {\n          return (\n            now < Date.parse(jsEOL[key].end) &&\n            now > Date.parse(jsEOL[key].start) &&\n            isEolReleased(key)\n          )\n        })\n        .map(function (key) {\n          return 'node ' + key.slice(1)\n        })\n      return resolve(queries, context)\n    }\n  },\n  phantomjs_1_9: {\n    matches: [],\n    regexp: /^phantomjs\\s+1.9$/i,\n    select: function () {\n      return ['safari 5']\n    }\n  },\n  phantomjs_2_1: {\n    matches: [],\n    regexp: /^phantomjs\\s+2.1$/i,\n    select: function () {\n      return ['safari 6']\n    }\n  },\n  browser_version: {\n    matches: ['browser', 'version'],\n    regexp: /^(\\w+)\\s+(tp|[\\d.]+)$/i,\n    select: function (context, node) {\n      var version = node.version\n      if (/^tp$/i.test(version)) version = 'TP'\n      var data = checkName(node.browser, context)\n      var alias = normalizeVersion(data, version)\n      if (alias) {\n        version = alias\n      } else {\n        if (version.indexOf('.') === -1) {\n          alias = version + '.0'\n        } else {\n          alias = version.replace(/\\.0$/, '')\n        }\n        alias = normalizeVersion(data, alias)\n        if (alias) {\n          version = alias\n        } else if (context.ignoreUnknownVersions) {\n          return []\n        } else {\n          throw new BrowserslistError(\n            'Unknown version ' + version + ' of ' + node.browser\n          )\n        }\n      }\n      return [data.name + ' ' + version]\n    }\n  },\n  browserslist_config: {\n    matches: [],\n    regexp: /^browserslist config$/i,\n    needsPath: true,\n    select: function (context) {\n      return browserslist(undefined, context)\n    }\n  },\n  extends: {\n    matches: ['config'],\n    regexp: /^extends (.+)$/i,\n    needsPath: true,\n    select: function (context, node) {\n      return resolve(env.loadQueries(context, node.config), context)\n    }\n  },\n  defaults: {\n    matches: [],\n    regexp: /^defaults$/i,\n    select: function (context) {\n      return resolve(browserslist.defaults, context)\n    }\n  },\n  dead: {\n    matches: [],\n    regexp: /^dead$/i,\n    select: function (context) {\n      var dead = [\n        'Baidu >= 0',\n        'ie <= 11',\n        'ie_mob <= 11',\n        'bb <= 10',\n        'op_mob <= 12.1',\n        'samsung 4'\n      ]\n      return resolve(dead, context)\n    }\n  },\n  unknown: {\n    matches: [],\n    regexp: /^(\\w+)$/i,\n    select: function (context, node) {\n      if (byName(node.query, context)) {\n        throw new BrowserslistError(\n          'Specify versions in Browserslist query for browser ' + node.query\n        )\n      } else {\n        throw unknownQuery(node.query)\n      }\n    }\n  }\n}\n\n// Get and convert Can I Use data\n\n;(function () {\n  for (var name in agents) {\n    var browser = agents[name]\n    browserslist.data[name] = {\n      name: name,\n      versions: normalize(agents[name].versions),\n      released: normalize(agents[name].versions.slice(0, -3)),\n      releaseDate: agents[name].release_date\n    }\n    fillUsage(browserslist.usage.global, name, browser.usage_global)\n\n    browserslist.versionAliases[name] = {}\n    for (var i = 0; i < browser.versions.length; i++) {\n      var full = browser.versions[i]\n      if (!full) continue\n\n      if (full.indexOf('-') !== -1) {\n        var interval = full.split('-')\n        for (var j = 0; j < interval.length; j++) {\n          browserslist.versionAliases[name][interval[j]] = full\n        }\n      }\n    }\n  }\n\n  browserslist.nodeVersions = jsReleases.map(function (release) {\n    return release.version\n  })\n})()\n\nmodule.exports = browserslist\n","const { min } = Math;\n\n// a minimal leven distance implementation\n// balanced maintainability with code size\n// It is not blazingly fast but should be okay for Babel user case\n// where it will be run for at most tens of time on strings\n// that have less than 20 ASCII characters\n\n// https://rosettacode.org/wiki/Levenshtein_distance#ES5\nfunction levenshtein(a: string, b: string): number {\n  let t = [],\n    u: number[] = [],\n    i,\n    j;\n  const m = a.length,\n    n = b.length;\n  if (!m) {\n    return n;\n  }\n  if (!n) {\n    return m;\n  }\n  for (j = 0; j <= n; j++) {\n    t[j] = j;\n  }\n  for (i = 1; i <= m; i++) {\n    for (u = [i], j = 1; j <= n; j++) {\n      u[j] =\n        a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;\n    }\n    t = u;\n  }\n  return u[n];\n}\n\n/**\n * Given a string `str` and an array of candidates `arr`,\n * return the first of elements in candidates that has minimal\n * Levenshtein distance with `str`.\n * @export\n * @param {string} str\n * @param {string[]} arr\n * @returns {string}\n */\nexport function findSuggestion(str: string, arr: readonly string[]): string {\n  const distances = arr.map<number>(el => levenshtein(el, str));\n  return arr[distances.indexOf(min(...distances))];\n}\n","import { findSuggestion } from \"./find-suggestion.ts\";\n\nexport class OptionValidator {\n  declare descriptor: string;\n  constructor(descriptor: string) {\n    this.descriptor = descriptor;\n  }\n\n  /**\n   * Validate if the given `options` follow the name of keys defined in the `TopLevelOptionShape`\n   *\n   * @param {Object} options\n   * @param {Object} TopLevelOptionShape\n   *   An object with all the valid key names that `options` should be allowed to have\n   *   The property values of `TopLevelOptionShape` can be arbitrary\n   * @memberof OptionValidator\n   */\n  validateTopLevelOptions(options: object, TopLevelOptionShape: object): void {\n    const validOptionNames = Object.keys(TopLevelOptionShape);\n    for (const option of Object.keys(options)) {\n      if (!validOptionNames.includes(option)) {\n        throw new Error(\n          this.formatMessage(`'${option}' is not a valid top-level option.\n- Did you mean '${findSuggestion(option, validOptionNames)}'?`),\n        );\n      }\n    }\n  }\n\n  // note: we do not consider rewrite them to high order functions\n  // until we have to support `validateNumberOption`.\n  validateBooleanOption<T extends boolean>(\n    name: string,\n    value?: boolean,\n    defaultValue?: T,\n  ): boolean | T {\n    if (value === undefined) {\n      return defaultValue;\n    } else {\n      this.invariant(\n        typeof value === \"boolean\",\n        `'${name}' option must be a boolean.`,\n      );\n    }\n    return value;\n  }\n\n  validateStringOption<T extends string>(\n    name: string,\n    value?: string,\n    defaultValue?: T,\n  ): string | T {\n    if (value === undefined) {\n      return defaultValue;\n    } else {\n      this.invariant(\n        typeof value === \"string\",\n        `'${name}' option must be a string.`,\n      );\n    }\n    return value;\n  }\n  /**\n   * A helper interface copied from the `invariant` npm package.\n   * It throws given `message` when `condition` is not met\n   *\n   * @param {boolean} condition\n   * @param {string} message\n   * @memberof OptionValidator\n   */\n  invariant(condition: boolean, message: string): void {\n    if (!condition) {\n      throw new Error(this.formatMessage(message));\n    }\n  }\n\n  formatMessage(message: string): string {\n    return `${this.descriptor}: ${message}`;\n  }\n}\n","export { OptionValidator } from \"./validator.ts\";\nexport { findSuggestion } from \"./find-suggestion.ts\";\n","module.exports = require(\"./data/native-modules.json\");\n","'use strict'\nmodule.exports = function (Yallist) {\n  Yallist.prototype[Symbol.iterator] = function* () {\n    for (let walker = this.head; walker; walker = walker.next) {\n      yield walker.value\n    }\n  }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n  var self = this\n  if (!(self instanceof Yallist)) {\n    self = new Yallist()\n  }\n\n  self.tail = null\n  self.head = null\n  self.length = 0\n\n  if (list && typeof list.forEach === 'function') {\n    list.forEach(function (item) {\n      self.push(item)\n    })\n  } else if (arguments.length > 0) {\n    for (var i = 0, l = arguments.length; i < l; i++) {\n      self.push(arguments[i])\n    }\n  }\n\n  return self\n}\n\nYallist.prototype.removeNode = function (node) {\n  if (node.list !== this) {\n    throw new Error('removing node which does not belong to this list')\n  }\n\n  var next = node.next\n  var prev = node.prev\n\n  if (next) {\n    next.prev = prev\n  }\n\n  if (prev) {\n    prev.next = next\n  }\n\n  if (node === this.head) {\n    this.head = next\n  }\n  if (node === this.tail) {\n    this.tail = prev\n  }\n\n  node.list.length--\n  node.next = null\n  node.prev = null\n  node.list = null\n\n  return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n  if (node === this.head) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var head = this.head\n  node.list = this\n  node.next = head\n  if (head) {\n    head.prev = node\n  }\n\n  this.head = node\n  if (!this.tail) {\n    this.tail = node\n  }\n  this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n  if (node === this.tail) {\n    return\n  }\n\n  if (node.list) {\n    node.list.removeNode(node)\n  }\n\n  var tail = this.tail\n  node.list = this\n  node.prev = tail\n  if (tail) {\n    tail.next = node\n  }\n\n  this.tail = node\n  if (!this.head) {\n    this.head = node\n  }\n  this.length++\n}\n\nYallist.prototype.push = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    push(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.unshift = function () {\n  for (var i = 0, l = arguments.length; i < l; i++) {\n    unshift(this, arguments[i])\n  }\n  return this.length\n}\n\nYallist.prototype.pop = function () {\n  if (!this.tail) {\n    return undefined\n  }\n\n  var res = this.tail.value\n  this.tail = this.tail.prev\n  if (this.tail) {\n    this.tail.next = null\n  } else {\n    this.head = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.shift = function () {\n  if (!this.head) {\n    return undefined\n  }\n\n  var res = this.head.value\n  this.head = this.head.next\n  if (this.head) {\n    this.head.prev = null\n  } else {\n    this.tail = null\n  }\n  this.length--\n  return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.head, i = 0; walker !== null; i++) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.next\n  }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n  thisp = thisp || this\n  for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n    fn.call(thisp, walker.value, i, this)\n    walker = walker.prev\n  }\n}\n\nYallist.prototype.get = function (n) {\n  for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.next\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.getReverse = function (n) {\n  for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n    // abort out of the list early if we hit a cycle\n    walker = walker.prev\n  }\n  if (i === n && walker !== null) {\n    return walker.value\n  }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.head; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.next\n  }\n  return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n  thisp = thisp || this\n  var res = new Yallist()\n  for (var walker = this.tail; walker !== null;) {\n    res.push(fn.call(thisp, walker.value, this))\n    walker = walker.prev\n  }\n  return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n  var acc\n  var walker = this.head\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.head) {\n    walker = this.head.next\n    acc = this.head.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = 0; walker !== null; i++) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.next\n  }\n\n  return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n  var acc\n  var walker = this.tail\n  if (arguments.length > 1) {\n    acc = initial\n  } else if (this.tail) {\n    walker = this.tail.prev\n    acc = this.tail.value\n  } else {\n    throw new TypeError('Reduce of empty list with no initial value')\n  }\n\n  for (var i = this.length - 1; walker !== null; i--) {\n    acc = fn(acc, walker.value, i)\n    walker = walker.prev\n  }\n\n  return acc\n}\n\nYallist.prototype.toArray = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.head; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.next\n  }\n  return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n  var arr = new Array(this.length)\n  for (var i = 0, walker = this.tail; walker !== null; i++) {\n    arr[i] = walker.value\n    walker = walker.prev\n  }\n  return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n    walker = walker.next\n  }\n  for (; walker !== null && i < to; i++, walker = walker.next) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n  to = to || this.length\n  if (to < 0) {\n    to += this.length\n  }\n  from = from || 0\n  if (from < 0) {\n    from += this.length\n  }\n  var ret = new Yallist()\n  if (to < from || to < 0) {\n    return ret\n  }\n  if (from < 0) {\n    from = 0\n  }\n  if (to > this.length) {\n    to = this.length\n  }\n  for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n    walker = walker.prev\n  }\n  for (; walker !== null && i > from; i--, walker = walker.prev) {\n    ret.push(walker.value)\n  }\n  return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount /*, ...nodes */) {\n  if (start > this.length) {\n    start = this.length - 1\n  }\n  if (start < 0) {\n    start = this.length + start;\n  }\n\n  for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n    walker = walker.next\n  }\n\n  var ret = []\n  for (var i = 0; walker && i < deleteCount; i++) {\n    ret.push(walker.value)\n    walker = this.removeNode(walker)\n  }\n  if (walker === null) {\n    walker = this.tail\n  }\n\n  if (walker !== this.head && walker !== this.tail) {\n    walker = walker.prev\n  }\n\n  for (var i = 2; i < arguments.length; i++) {\n    walker = insert(this, walker, arguments[i])\n  }\n  return ret;\n}\n\nYallist.prototype.reverse = function () {\n  var head = this.head\n  var tail = this.tail\n  for (var walker = head; walker !== null; walker = walker.prev) {\n    var p = walker.prev\n    walker.prev = walker.next\n    walker.next = p\n  }\n  this.head = tail\n  this.tail = head\n  return this\n}\n\nfunction insert (self, node, value) {\n  var inserted = node === self.head ?\n    new Node(value, null, node, self) :\n    new Node(value, node, node.next, self)\n\n  if (inserted.next === null) {\n    self.tail = inserted\n  }\n  if (inserted.prev === null) {\n    self.head = inserted\n  }\n\n  self.length++\n\n  return inserted\n}\n\nfunction push (self, item) {\n  self.tail = new Node(item, self.tail, null, self)\n  if (!self.head) {\n    self.head = self.tail\n  }\n  self.length++\n}\n\nfunction unshift (self, item) {\n  self.head = new Node(item, null, self.head, self)\n  if (!self.tail) {\n    self.tail = self.head\n  }\n  self.length++\n}\n\nfunction Node (value, prev, next, list) {\n  if (!(this instanceof Node)) {\n    return new Node(value, prev, next, list)\n  }\n\n  this.list = list\n  this.value = value\n\n  if (prev) {\n    prev.next = this\n    this.prev = prev\n  } else {\n    this.prev = null\n  }\n\n  if (next) {\n    next.prev = this\n    this.next = next\n  } else {\n    this.next = null\n  }\n}\n\ntry {\n  // add if support for Symbol.iterator is present\n  require('./iterator.js')(Yallist)\n} catch (er) {}\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest.  the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node.  This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n  constructor (options) {\n    if (typeof options === 'number')\n      options = { max: options }\n\n    if (!options)\n      options = {}\n\n    if (options.max && (typeof options.max !== 'number' || options.max < 0))\n      throw new TypeError('max must be a non-negative number')\n    // Kind of weird to have a default max of Infinity, but oh well.\n    const max = this[MAX] = options.max || Infinity\n\n    const lc = options.length || naiveLength\n    this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n    this[ALLOW_STALE] = options.stale || false\n    if (options.maxAge && typeof options.maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n    this[MAX_AGE] = options.maxAge || 0\n    this[DISPOSE] = options.dispose\n    this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n    this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n    this.reset()\n  }\n\n  // resize the cache when the max changes.\n  set max (mL) {\n    if (typeof mL !== 'number' || mL < 0)\n      throw new TypeError('max must be a non-negative number')\n\n    this[MAX] = mL || Infinity\n    trim(this)\n  }\n  get max () {\n    return this[MAX]\n  }\n\n  set allowStale (allowStale) {\n    this[ALLOW_STALE] = !!allowStale\n  }\n  get allowStale () {\n    return this[ALLOW_STALE]\n  }\n\n  set maxAge (mA) {\n    if (typeof mA !== 'number')\n      throw new TypeError('maxAge must be a non-negative number')\n\n    this[MAX_AGE] = mA\n    trim(this)\n  }\n  get maxAge () {\n    return this[MAX_AGE]\n  }\n\n  // resize the cache when the lengthCalculator changes.\n  set lengthCalculator (lC) {\n    if (typeof lC !== 'function')\n      lC = naiveLength\n\n    if (lC !== this[LENGTH_CALCULATOR]) {\n      this[LENGTH_CALCULATOR] = lC\n      this[LENGTH] = 0\n      this[LRU_LIST].forEach(hit => {\n        hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n        this[LENGTH] += hit.length\n      })\n    }\n    trim(this)\n  }\n  get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n  get length () { return this[LENGTH] }\n  get itemCount () { return this[LRU_LIST].length }\n\n  rforEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].tail; walker !== null;) {\n      const prev = walker.prev\n      forEachStep(this, fn, walker, thisp)\n      walker = prev\n    }\n  }\n\n  forEach (fn, thisp) {\n    thisp = thisp || this\n    for (let walker = this[LRU_LIST].head; walker !== null;) {\n      const next = walker.next\n      forEachStep(this, fn, walker, thisp)\n      walker = next\n    }\n  }\n\n  keys () {\n    return this[LRU_LIST].toArray().map(k => k.key)\n  }\n\n  values () {\n    return this[LRU_LIST].toArray().map(k => k.value)\n  }\n\n  reset () {\n    if (this[DISPOSE] &&\n        this[LRU_LIST] &&\n        this[LRU_LIST].length) {\n      this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n    }\n\n    this[CACHE] = new Map() // hash of items by key\n    this[LRU_LIST] = new Yallist() // list of items in order of use recency\n    this[LENGTH] = 0 // length of items in the list\n  }\n\n  dump () {\n    return this[LRU_LIST].map(hit =>\n      isStale(this, hit) ? false : {\n        k: hit.key,\n        v: hit.value,\n        e: hit.now + (hit.maxAge || 0)\n      }).toArray().filter(h => h)\n  }\n\n  dumpLru () {\n    return this[LRU_LIST]\n  }\n\n  set (key, value, maxAge) {\n    maxAge = maxAge || this[MAX_AGE]\n\n    if (maxAge && typeof maxAge !== 'number')\n      throw new TypeError('maxAge must be a number')\n\n    const now = maxAge ? Date.now() : 0\n    const len = this[LENGTH_CALCULATOR](value, key)\n\n    if (this[CACHE].has(key)) {\n      if (len > this[MAX]) {\n        del(this, this[CACHE].get(key))\n        return false\n      }\n\n      const node = this[CACHE].get(key)\n      const item = node.value\n\n      // dispose of the old one before overwriting\n      // split out into 2 ifs for better coverage tracking\n      if (this[DISPOSE]) {\n        if (!this[NO_DISPOSE_ON_SET])\n          this[DISPOSE](key, item.value)\n      }\n\n      item.now = now\n      item.maxAge = maxAge\n      item.value = value\n      this[LENGTH] += len - item.length\n      item.length = len\n      this.get(key)\n      trim(this)\n      return true\n    }\n\n    const hit = new Entry(key, value, len, now, maxAge)\n\n    // oversized objects fall out of cache automatically.\n    if (hit.length > this[MAX]) {\n      if (this[DISPOSE])\n        this[DISPOSE](key, value)\n\n      return false\n    }\n\n    this[LENGTH] += hit.length\n    this[LRU_LIST].unshift(hit)\n    this[CACHE].set(key, this[LRU_LIST].head)\n    trim(this)\n    return true\n  }\n\n  has (key) {\n    if (!this[CACHE].has(key)) return false\n    const hit = this[CACHE].get(key).value\n    return !isStale(this, hit)\n  }\n\n  get (key) {\n    return get(this, key, true)\n  }\n\n  peek (key) {\n    return get(this, key, false)\n  }\n\n  pop () {\n    const node = this[LRU_LIST].tail\n    if (!node)\n      return null\n\n    del(this, node)\n    return node.value\n  }\n\n  del (key) {\n    del(this, this[CACHE].get(key))\n  }\n\n  load (arr) {\n    // reset the cache\n    this.reset()\n\n    const now = Date.now()\n    // A previous serialized cache has the most recent items first\n    for (let l = arr.length - 1; l >= 0; l--) {\n      const hit = arr[l]\n      const expiresAt = hit.e || 0\n      if (expiresAt === 0)\n        // the item was created without expiration in a non aged cache\n        this.set(hit.k, hit.v)\n      else {\n        const maxAge = expiresAt - now\n        // dont add already expired items\n        if (maxAge > 0) {\n          this.set(hit.k, hit.v, maxAge)\n        }\n      }\n    }\n  }\n\n  prune () {\n    this[CACHE].forEach((value, key) => get(this, key, false))\n  }\n}\n\nconst get = (self, key, doUse) => {\n  const node = self[CACHE].get(key)\n  if (node) {\n    const hit = node.value\n    if (isStale(self, hit)) {\n      del(self, node)\n      if (!self[ALLOW_STALE])\n        return undefined\n    } else {\n      if (doUse) {\n        if (self[UPDATE_AGE_ON_GET])\n          node.value.now = Date.now()\n        self[LRU_LIST].unshiftNode(node)\n      }\n    }\n    return hit.value\n  }\n}\n\nconst isStale = (self, hit) => {\n  if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n    return false\n\n  const diff = Date.now() - hit.now\n  return hit.maxAge ? diff > hit.maxAge\n    : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n  if (self[LENGTH] > self[MAX]) {\n    for (let walker = self[LRU_LIST].tail;\n      self[LENGTH] > self[MAX] && walker !== null;) {\n      // We know that we're about to delete this one, and also\n      // what the next least recently used key will be, so just\n      // go ahead and set it now.\n      const prev = walker.prev\n      del(self, walker)\n      walker = prev\n    }\n  }\n}\n\nconst del = (self, node) => {\n  if (node) {\n    const hit = node.value\n    if (self[DISPOSE])\n      self[DISPOSE](hit.key, hit.value)\n\n    self[LENGTH] -= hit.length\n    self[CACHE].delete(hit.key)\n    self[LRU_LIST].removeNode(node)\n  }\n}\n\nclass Entry {\n  constructor (key, value, length, now, maxAge) {\n    this.key = key\n    this.value = value\n    this.length = length\n    this.now = now\n    this.maxAge = maxAge || 0\n  }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n  let hit = node.value\n  if (isStale(self, hit)) {\n    del(self, node)\n    if (!self[ALLOW_STALE])\n      hit = undefined\n  }\n  if (hit)\n    fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","export const unreleasedLabels = {\n  safari: \"tp\",\n} as const;\n\n// Map from browserslist|@mdn/browser-compat-data browser names to @kangax/compat-table browser names\nexport const browserNameMap = {\n  and_chr: \"chrome\",\n  and_ff: \"firefox\",\n  android: \"android\",\n  chrome: \"chrome\",\n  edge: \"edge\",\n  firefox: \"firefox\",\n  ie: \"ie\",\n  ie_mob: \"ie\",\n  ios_saf: \"ios\",\n  node: \"node\",\n  deno: \"deno\",\n  op_mob: \"opera_mobile\",\n  opera: \"opera\",\n  safari: \"safari\",\n  samsung: \"samsung\",\n} as const;\n\nexport type BrowserslistBrowserName = keyof typeof browserNameMap;\n","import semver from \"semver\";\nimport { OptionValidator } from \"@babel/helper-validator-option\";\nimport { unreleasedLabels } from \"./targets.ts\";\nimport type { Target, Targets } from \"./types.ts\";\n\nconst versionRegExp =\n  /^(?:\\d+|\\d(?:\\d?[^\\d\\n\\r\\u2028\\u2029]\\d+|\\d{2,}(?:[^\\d\\n\\r\\u2028\\u2029]\\d+)?))$/;\n\nconst v = new OptionValidator(PACKAGE_JSON.name);\n\nexport function semverMin(\n  first: string | undefined | null,\n  second: string,\n): string {\n  return first && semver.lt(first, second) ? first : second;\n}\n\n// Convert version to a semver value.\n// 2.5 -> 2.5.0; 1 -> 1.0.0;\nexport function semverify(version: number | string): string {\n  if (typeof version === \"string\" && semver.valid(version)) {\n    return version;\n  }\n\n  v.invariant(\n    typeof version === \"number\" ||\n      (typeof version === \"string\" && versionRegExp.test(version)),\n    `'${version}' is not a valid version`,\n  );\n\n  version = version.toString();\n\n  let pos = 0;\n  let num = 0;\n  while ((pos = version.indexOf(\".\", pos + 1)) > 0) {\n    num++;\n  }\n  return version + \".0\".repeat(2 - num);\n}\n\nexport function isUnreleasedVersion(\n  version: string | number,\n  env: Target,\n): boolean {\n  const unreleasedLabel =\n    // @ts-expect-error unreleasedLabel will be guarded later\n    unreleasedLabels[env];\n  return (\n    !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase()\n  );\n}\n\nexport function getLowestUnreleased(a: string, b: string, env: Target): string {\n  const unreleasedLabel:\n    | (typeof unreleasedLabels)[keyof typeof unreleasedLabels]\n    | undefined =\n    // @ts-expect-error unreleasedLabel is undefined when env is not safari\n    unreleasedLabels[env];\n  if (a === unreleasedLabel) {\n    return b;\n  }\n  if (b === unreleasedLabel) {\n    return a;\n  }\n  return semverMin(a, b);\n}\n\nexport function getHighestUnreleased(\n  a: string,\n  b: string,\n  env: Target,\n): string {\n  return getLowestUnreleased(a, b, env) === a ? b : a;\n}\n\nexport function getLowestImplementedVersion(\n  plugin: Targets,\n  environment: Target,\n): string {\n  const result = plugin[environment];\n  // When Android support data is absent, use Chrome data as fallback\n  if (!result && environment === \"android\") {\n    return plugin.chrome;\n  }\n  return result;\n}\n","export const TargetNames = {\n  node: \"node\",\n  deno: \"deno\",\n  chrome: \"chrome\",\n  opera: \"opera\",\n  edge: \"edge\",\n  firefox: \"firefox\",\n  safari: \"safari\",\n  ie: \"ie\",\n  ios: \"ios\",\n  android: \"android\",\n  electron: \"electron\",\n  samsung: \"samsung\",\n  rhino: \"rhino\",\n  opera_mobile: \"opera_mobile\",\n};\n","import semver from \"semver\";\nimport { unreleasedLabels } from \"./targets.ts\";\nimport type { Targets, Target } from \"./types.ts\";\n\nexport function prettifyVersion(version: string) {\n  if (typeof version !== \"string\") {\n    return version;\n  }\n\n  const { major, minor, patch } = semver.parse(version);\n\n  const parts = [major];\n\n  if (minor || patch) {\n    parts.push(minor);\n  }\n\n  if (patch) {\n    parts.push(patch);\n  }\n\n  return parts.join(\".\");\n}\n\nexport function prettifyTargets(targets: Targets): Targets {\n  return Object.keys(targets).reduce((results, target: Target) => {\n    let value = targets[target];\n\n    const unreleasedLabel =\n      // @ts-expect-error undefined is strictly compared with string later\n      unreleasedLabels[target];\n    if (typeof value === \"string\" && unreleasedLabel !== value) {\n      value = prettifyVersion(value);\n    }\n\n    results[target] = value;\n    return results;\n  }, {} as Targets);\n}\n","import semver from \"semver\";\nimport { prettifyVersion } from \"./pretty.ts\";\nimport {\n  semverify,\n  isUnreleasedVersion,\n  getLowestImplementedVersion,\n} from \"./utils.ts\";\nimport type { Target, Targets } from \"./types.ts\";\n\nexport function getInclusionReasons(\n  item: string,\n  targetVersions: Targets,\n  list: { [key: string]: Targets },\n) {\n  const minVersions = list[item] || {};\n\n  return (Object.keys(targetVersions) as Target[]).reduce(\n    (result, env) => {\n      const minVersion = getLowestImplementedVersion(minVersions, env);\n      const targetVersion = targetVersions[env];\n\n      if (!minVersion) {\n        result[env] = prettifyVersion(targetVersion);\n      } else {\n        const minIsUnreleased = isUnreleasedVersion(minVersion, env);\n        const targetIsUnreleased = isUnreleasedVersion(targetVersion, env);\n\n        if (\n          !targetIsUnreleased &&\n          (minIsUnreleased ||\n            semver.lt(targetVersion.toString(), semverify(minVersion)))\n        ) {\n          result[env] = prettifyVersion(targetVersion);\n        }\n      }\n\n      return result;\n    },\n    {} as Partial<Record<Target, string>>,\n  );\n}\n","module.exports = require(\"./data/plugins.json\");\n","import semver from \"semver\";\n\nimport pluginsCompatData from \"@babel/compat-data/plugins\";\n\nimport type { Targets } from \"./types.ts\";\nimport {\n  getLowestImplementedVersion,\n  isUnreleasedVersion,\n  semverify,\n} from \"./utils.ts\";\n\nexport function targetsSupported(target: Targets, support: Targets) {\n  const targetEnvironments = Object.keys(target) as Array<keyof Targets>;\n\n  if (targetEnvironments.length === 0) {\n    return false;\n  }\n\n  const unsupportedEnvironments = targetEnvironments.filter(environment => {\n    const lowestImplementedVersion = getLowestImplementedVersion(\n      support,\n      environment,\n    );\n\n    // Feature is not implemented in that environment\n    if (!lowestImplementedVersion) {\n      return true;\n    }\n\n    const lowestTargetedVersion = target[environment];\n\n    // If targets has unreleased value as a lowest version, then don't require a plugin.\n    if (isUnreleasedVersion(lowestTargetedVersion, environment)) {\n      return false;\n    }\n\n    // Include plugin if it is supported in the unreleased environment, which wasn't specified in targets\n    if (isUnreleasedVersion(lowestImplementedVersion, environment)) {\n      return true;\n    }\n\n    if (!semver.valid(lowestTargetedVersion.toString())) {\n      throw new Error(\n        `Invalid version passed for target \"${environment}\": \"${lowestTargetedVersion}\". ` +\n          \"Versions must be in semver format (major.minor.patch)\",\n      );\n    }\n\n    return semver.gt(\n      semverify(lowestImplementedVersion),\n      lowestTargetedVersion.toString(),\n    );\n  });\n\n  return unsupportedEnvironments.length === 0;\n}\n\nexport function isRequired(\n  name: string,\n  targets: Targets,\n  {\n    compatData = pluginsCompatData,\n    includes,\n    excludes,\n  }: {\n    compatData?: { [feature: string]: Targets };\n    includes?: Set<string>;\n    excludes?: Set<string>;\n  } = {},\n) {\n  if (excludes?.has(name)) return false;\n  if (includes?.has(name)) return true;\n  return !targetsSupported(targets, compatData[name]);\n}\n\nexport default function filterItems(\n  list: { [feature: string]: Targets },\n  includes: Set<string>,\n  excludes: Set<string>,\n  targets: Targets,\n  defaultIncludes: Array<string> | null,\n  defaultExcludes?: Array<string> | null,\n  pluginSyntaxMap?: Map<string, string | null>,\n) {\n  const result = new Set<string>();\n  const options = { compatData: list, includes, excludes };\n\n  for (const item in list) {\n    if (isRequired(item, targets, options)) {\n      result.add(item);\n    } else if (pluginSyntaxMap) {\n      const shippedProposalsSyntax = pluginSyntaxMap.get(item);\n\n      if (shippedProposalsSyntax) {\n        result.add(shippedProposalsSyntax);\n      }\n    }\n  }\n\n  defaultIncludes?.forEach(item => !excludes.has(item) && result.add(item));\n  defaultExcludes?.forEach(item => !includes.has(item) && result.delete(item));\n\n  return result;\n}\n","import browserslist from \"browserslist\";\nimport { findSuggestion } from \"@babel/helper-validator-option\";\nimport browserModulesData from \"@babel/compat-data/native-modules\";\nimport LruCache from \"lru-cache\";\n\nimport {\n  semverify,\n  semverMin,\n  isUnreleasedVersion,\n  getLowestUnreleased,\n  getHighestUnreleased,\n} from \"./utils.ts\";\nimport { OptionValidator } from \"@babel/helper-validator-option\";\nimport { browserNameMap } from \"./targets.ts\";\nimport { TargetNames } from \"./options.ts\";\nimport type {\n  Target,\n  Targets,\n  InputTargets,\n  Browsers,\n  BrowserslistBrowserName,\n  TargetsTuple,\n} from \"./types.ts\";\n\nexport type { Target, Targets, InputTargets };\n\nexport { prettifyTargets } from \"./pretty.ts\";\nexport { getInclusionReasons } from \"./debug.ts\";\nexport { default as filterItems, isRequired } from \"./filter-items.ts\";\nexport { unreleasedLabels } from \"./targets.ts\";\nexport { TargetNames };\n\nconst ESM_SUPPORT = browserModulesData[\"es6.module\"];\n\nconst v = new OptionValidator(PACKAGE_JSON.name);\n\nfunction validateTargetNames(targets: Targets): TargetsTuple {\n  const validTargets = Object.keys(TargetNames);\n  for (const target of Object.keys(targets)) {\n    if (!(target in TargetNames)) {\n      throw new Error(\n        v.formatMessage(`'${target}' is not a valid target\n- Did you mean '${findSuggestion(target, validTargets)}'?`),\n      );\n    }\n  }\n\n  return targets;\n}\n\nexport function isBrowsersQueryValid(browsers: unknown): boolean {\n  return (\n    typeof browsers === \"string\" ||\n    (Array.isArray(browsers) && browsers.every(b => typeof b === \"string\"))\n  );\n}\n\nfunction validateBrowsers(browsers: Browsers | undefined) {\n  v.invariant(\n    browsers === undefined || isBrowsersQueryValid(browsers),\n    `'${String(browsers)}' is not a valid browserslist query`,\n  );\n\n  return browsers;\n}\n\nfunction getLowestVersions(browsers: Array<string>): Targets {\n  return browsers.reduce(\n    (all, browser) => {\n      const [browserName, browserVersion] = browser.split(\" \") as [\n        BrowserslistBrowserName,\n        string,\n      ];\n      const target = browserNameMap[browserName];\n\n      if (!target) {\n        return all;\n      }\n\n      try {\n        // Browser version can return as \"10.0-10.2\"\n        const splitVersion = browserVersion.split(\"-\")[0].toLowerCase();\n        const isSplitUnreleased = isUnreleasedVersion(splitVersion, target);\n\n        if (!all[target]) {\n          all[target] = isSplitUnreleased\n            ? splitVersion\n            : semverify(splitVersion);\n          return all;\n        }\n\n        const version = all[target];\n        const isUnreleased = isUnreleasedVersion(version, target);\n\n        if (isUnreleased && isSplitUnreleased) {\n          all[target] = getLowestUnreleased(version, splitVersion, target);\n        } else if (isUnreleased) {\n          all[target] = semverify(splitVersion);\n        } else if (!isUnreleased && !isSplitUnreleased) {\n          const parsedBrowserVersion = semverify(splitVersion);\n\n          all[target] = semverMin(version, parsedBrowserVersion);\n        }\n      } catch (_) {}\n\n      return all;\n    },\n    {} as Record<Target, string>,\n  );\n}\n\nfunction outputDecimalWarning(\n  decimalTargets: Array<{ target: string; value: number }>,\n) {\n  if (!decimalTargets.length) {\n    return;\n  }\n\n  console.warn(\"Warning, the following targets are using a decimal version:\\n\");\n  decimalTargets.forEach(({ target, value }) =>\n    console.warn(`  ${target}: ${value}`),\n  );\n  console.warn(`\nWe recommend using a string for minor/patch versions to avoid numbers like 6.10\ngetting parsed as 6.1, which can lead to unexpected behavior.\n`);\n}\n\nfunction semverifyTarget(target: Target, value: string) {\n  try {\n    return semverify(value);\n  } catch (_) {\n    throw new Error(\n      v.formatMessage(\n        `'${value}' is not a valid value for 'targets.${target}'.`,\n      ),\n    );\n  }\n}\n\n// Parse `node: true` and `node: \"current\"` to version\nfunction nodeTargetParser(value: true | string) {\n  const parsed =\n    value === true || value === \"current\"\n      ? // Align with `browserslist` and strip prerelease tag.\n        process.versions.node.split(\"-\")[0]\n      : semverifyTarget(\"node\", value);\n  return [\"node\", parsed] as const;\n}\n\nfunction defaultTargetParser(\n  target: Exclude<Target, \"node\">,\n  value: string,\n): readonly [Exclude<Target, \"node\">, string] {\n  const version = isUnreleasedVersion(value, target)\n    ? value.toLowerCase()\n    : semverifyTarget(target, value);\n  return [target, version] as const;\n}\n\nfunction generateTargets(inputTargets: InputTargets): Targets {\n  const input = { ...inputTargets };\n  delete input.esmodules;\n  delete input.browsers;\n  return input;\n}\n\nfunction resolveTargets(queries: Browsers, env?: string): Targets {\n  const resolved = browserslist(queries, {\n    mobileToDesktop: true,\n    env,\n  });\n  return getLowestVersions(resolved);\n}\n\nconst targetsCache = new LruCache({ max: 64 });\n\nfunction resolveTargetsCached(queries: Browsers, env?: string): Targets {\n  const cacheKey = typeof queries === \"string\" ? queries : queries.join() + env;\n  let cached = targetsCache.get(cacheKey) as Targets | undefined;\n  if (!cached) {\n    cached = resolveTargets(queries, env);\n    targetsCache.set(cacheKey, cached);\n  }\n  return { ...cached };\n}\n\ntype GetTargetsOption = {\n  // This is not the path of the config file, but the path where start searching it from\n  configPath?: string;\n  // The path of the config file\n  configFile?: string;\n  // The env to pass to browserslist\n  browserslistEnv?: string;\n  // true to disable config loading\n  ignoreBrowserslistConfig?: boolean;\n  // custom hook when browserslist config is found\n  onBrowserslistConfigFound?: (configFile: string) => void;\n};\n\nexport default function getTargets(\n  inputTargets: InputTargets = {},\n  options: GetTargetsOption = {},\n): Targets {\n  let { browsers, esmodules } = inputTargets;\n  const { configPath = \".\", onBrowserslistConfigFound } = options;\n\n  validateBrowsers(browsers);\n\n  const input = generateTargets(inputTargets);\n  let targets = validateTargetNames(input);\n\n  const shouldParseBrowsers = !!browsers;\n  const hasTargets = shouldParseBrowsers || Object.keys(targets).length > 0;\n  const shouldSearchForConfig =\n    !options.ignoreBrowserslistConfig && !hasTargets;\n\n  if (!browsers && shouldSearchForConfig) {\n    // https://github.com/browserslist/browserslist/blob/8ae85caa905d130f4ca86f7a998a5b63abbbe582/node.js#L243\n    browsers = process.env.BROWSERSLIST;\n    if (!browsers) {\n      const configFile =\n        options.configFile ||\n        process.env.BROWSERSLIST_CONFIG ||\n        browserslist.findConfigFile(configPath);\n      if (configFile != null) {\n        onBrowserslistConfigFound?.(configFile);\n        browsers = browserslist.loadConfig({\n          config: configFile,\n          env: options.browserslistEnv,\n        });\n      }\n    }\n\n    if (browsers == null) {\n      if (process.env.BABEL_8_BREAKING) {\n        // In Babel 8, if no targets are passed, we use browserslist's defaults.\n        browsers = [\"defaults\"];\n      } else {\n        // If no targets are passed, we need to overwrite browserslist's defaults\n        // so that we enable all transforms (acting like the now deprecated\n        // preset-latest).\n        browsers = [];\n      }\n    }\n  }\n\n  // `esmodules` as a target indicates the specific set of browsers supporting ES Modules.\n  // These values OVERRIDE the `browsers` field.\n  if (esmodules && (esmodules !== \"intersect\" || !browsers?.length)) {\n    browsers = Object.keys(ESM_SUPPORT)\n      .map(\n        (browser: keyof typeof ESM_SUPPORT) =>\n          `${browser} >= ${ESM_SUPPORT[browser]}`,\n      )\n      .join(\", \");\n    esmodules = false;\n  }\n\n  // If current value of `browsers` is undefined (`ignoreBrowserslistConfig` should be `false`)\n  // or an empty array (without any user config, use default config),\n  // we don't need to call `resolveTargets` to execute the related methods of `browserslist` library.\n  if (browsers?.length) {\n    const queryBrowsers = resolveTargetsCached(\n      browsers,\n      options.browserslistEnv,\n    );\n\n    if (esmodules === \"intersect\") {\n      for (const browser of Object.keys(queryBrowsers) as Target[]) {\n        if (browser !== \"deno\" && browser !== \"ie\") {\n          const esmSupportVersion =\n            ESM_SUPPORT[browser === \"opera_mobile\" ? \"op_mob\" : browser];\n\n          if (esmSupportVersion) {\n            const version = queryBrowsers[browser];\n            queryBrowsers[browser] = getHighestUnreleased(\n              version,\n              semverify(esmSupportVersion),\n              browser,\n            );\n          } else {\n            delete queryBrowsers[browser];\n          }\n        } else {\n          delete queryBrowsers[browser];\n        }\n      }\n    }\n\n    targets = Object.assign(queryBrowsers, targets);\n  }\n\n  // Parse remaining targets\n  const result: Targets = {};\n  const decimalWarnings = [];\n  for (const target of Object.keys(targets).sort() as Target[]) {\n    const value = targets[target];\n\n    // Warn when specifying minor/patch as a decimal\n    if (typeof value === \"number\" && value % 1 !== 0) {\n      decimalWarnings.push({ target, value });\n    }\n\n    const [parsedTarget, parsedValue] =\n      target === \"node\"\n        ? nodeTargetParser(value)\n        : defaultTargetParser(target, value as string);\n\n    if (parsedValue) {\n      // Merge (lowest wins)\n      result[parsedTarget] = parsedValue;\n    }\n  }\n\n  outputDecimalWarning(decimalWarnings);\n\n  return result;\n}\n","import type { ValidatedOptions } from \"./validation/options.ts\";\nimport getTargets, {\n  type InputTargets,\n} from \"@babel/helper-compilation-targets\";\n\nimport type { Targets } from \"@babel/helper-compilation-targets\";\n\nexport function resolveBrowserslistConfigFile(\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  browserslistConfigFile: string,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  configFilePath: string,\n): string | void {\n  return undefined;\n}\n\nexport function resolveTargets(\n  options: ValidatedOptions,\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  root: string,\n): Targets {\n  const optTargets = options.targets;\n  let targets: InputTargets;\n\n  if (typeof optTargets === \"string\" || Array.isArray(optTargets)) {\n    targets = { browsers: optTargets };\n  } else if (optTargets) {\n    if (\"esmodules\" in optTargets) {\n      targets = { ...optTargets, esmodules: \"intersect\" };\n    } else {\n      // https://github.com/microsoft/TypeScript/issues/17002\n      targets = optTargets as InputTargets;\n    }\n  }\n\n  return getTargets(targets, {\n    ignoreBrowserslistConfig: true,\n    browserslistEnv: options.browserslistEnv,\n  });\n}\n","import gensync, { type Handler } from \"gensync\";\nimport { once } from \"../gensync-utils/functional.ts\";\n\nimport { loadPlugin, loadPreset } from \"./files/index.ts\";\n\nimport { getItemDescriptor } from \"./item.ts\";\n\nimport {\n  makeWeakCacheSync,\n  makeStrongCacheSync,\n  makeStrongCache,\n} from \"./caching.ts\";\nimport type { CacheConfigurator } from \"./caching.ts\";\n\nimport type {\n  ValidatedOptions,\n  PluginList,\n  PluginItem,\n} from \"./validation/options.ts\";\n\nimport { resolveBrowserslistConfigFile } from \"./resolve-targets.ts\";\nimport type { PluginAPI, PresetAPI } from \"./helpers/config-api.ts\";\n\n// Represents a config object and functions to lazily load the descriptors\n// for the plugins and presets so we don't load the plugins/presets unless\n// the options object actually ends up being applicable.\nexport type OptionsAndDescriptors = {\n  options: ValidatedOptions;\n  plugins: () => Handler<Array<UnloadedDescriptor<PluginAPI>>>;\n  presets: () => Handler<Array<UnloadedDescriptor<PresetAPI>>>;\n};\n\n// Represents a plugin or presets at a given location in a config object.\n// At this point these have been resolved to a specific object or function,\n// but have not yet been executed to call functions with options.\nexport interface UnloadedDescriptor<API, Options = object | undefined | false> {\n  name: string | undefined;\n  value: object | ((api: API, options: Options, dirname: string) => unknown);\n  options: Options;\n  dirname: string;\n  alias: string;\n  ownPass?: boolean;\n  file?: {\n    request: string;\n    resolved: string;\n  };\n}\n\nfunction isEqualDescriptor<API>(\n  a: UnloadedDescriptor<API>,\n  b: UnloadedDescriptor<API>,\n): boolean {\n  return (\n    a.name === b.name &&\n    a.value === b.value &&\n    a.options === b.options &&\n    a.dirname === b.dirname &&\n    a.alias === b.alias &&\n    a.ownPass === b.ownPass &&\n    a.file?.request === b.file?.request &&\n    a.file?.resolved === b.file?.resolved\n  );\n}\n\nexport type ValidatedFile = {\n  filepath: string;\n  dirname: string;\n  options: ValidatedOptions;\n};\n\n// eslint-disable-next-line require-yield\nfunction* handlerOf<T>(value: T): Handler<T> {\n  return value;\n}\n\nfunction optionsWithResolvedBrowserslistConfigFile(\n  options: ValidatedOptions,\n  dirname: string,\n): ValidatedOptions {\n  if (typeof options.browserslistConfigFile === \"string\") {\n    options.browserslistConfigFile = resolveBrowserslistConfigFile(\n      options.browserslistConfigFile,\n      dirname,\n    );\n  }\n  return options;\n}\n\n/**\n * Create a set of descriptors from a given options object, preserving\n * descriptor identity based on the identity of the plugin/preset arrays\n * themselves, and potentially on the identity of the plugins/presets + options.\n */\nexport function createCachedDescriptors(\n  dirname: string,\n  options: ValidatedOptions,\n  alias: string,\n): OptionsAndDescriptors {\n  const { plugins, presets, passPerPreset } = options;\n  return {\n    options: optionsWithResolvedBrowserslistConfigFile(options, dirname),\n    plugins: plugins\n      ? () =>\n          // @ts-expect-error todo(flow->ts) ts complains about incorrect arguments\n          // eslint-disable-next-line @typescript-eslint/no-use-before-define\n          createCachedPluginDescriptors(plugins, dirname)(alias)\n      : () => handlerOf([]),\n    presets: presets\n      ? () =>\n          // @ts-expect-error todo(flow->ts) ts complains about incorrect arguments\n          // eslint-disable-next-line @typescript-eslint/no-use-before-define\n          createCachedPresetDescriptors(presets, dirname)(alias)(\n            !!passPerPreset,\n          )\n      : () => handlerOf([]),\n  };\n}\n\n/**\n * Create a set of descriptors from a given options object, with consistent\n * identity for the descriptors, but not caching based on any specific identity.\n */\nexport function createUncachedDescriptors(\n  dirname: string,\n  options: ValidatedOptions,\n  alias: string,\n): OptionsAndDescriptors {\n  return {\n    options: optionsWithResolvedBrowserslistConfigFile(options, dirname),\n    // The returned result here is cached to represent a config object in\n    // memory, so we build and memoize the descriptors to ensure the same\n    // values are returned consistently.\n    plugins: once(() =>\n      createPluginDescriptors(options.plugins || [], dirname, alias),\n    ),\n    presets: once(() =>\n      createPresetDescriptors(\n        options.presets || [],\n        dirname,\n        alias,\n        !!options.passPerPreset,\n      ),\n    ),\n  };\n}\n\nconst PRESET_DESCRIPTOR_CACHE = new WeakMap();\nconst createCachedPresetDescriptors = makeWeakCacheSync(\n  (items: PluginList, cache: CacheConfigurator<string>) => {\n    const dirname = cache.using(dir => dir);\n    return makeStrongCacheSync((alias: string) =>\n      makeStrongCache(function* (\n        passPerPreset: boolean,\n      ): Handler<Array<UnloadedDescriptor<PresetAPI>>> {\n        const descriptors = yield* createPresetDescriptors(\n          items,\n          dirname,\n          alias,\n          passPerPreset,\n        );\n        return descriptors.map(\n          // Items are cached using the overall preset array identity when\n          // possibly, but individual descriptors are also cached if a match\n          // can be found in the previously-used descriptor lists.\n          desc => loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc),\n        );\n      }),\n    );\n  },\n);\n\nconst PLUGIN_DESCRIPTOR_CACHE = new WeakMap();\nconst createCachedPluginDescriptors = makeWeakCacheSync(\n  (items: PluginList, cache: CacheConfigurator<string>) => {\n    const dirname = cache.using(dir => dir);\n    return makeStrongCache(function* (\n      alias: string,\n    ): Handler<Array<UnloadedDescriptor<PluginAPI>>> {\n      const descriptors = yield* createPluginDescriptors(items, dirname, alias);\n      return descriptors.map(\n        // Items are cached using the overall plugin array identity when\n        // possibly, but individual descriptors are also cached if a match\n        // can be found in the previously-used descriptor lists.\n        desc => loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc),\n      );\n    });\n  },\n);\n\n/**\n * When no options object is given in a descriptor, this object is used\n * as a WeakMap key in order to have consistent identity.\n */\nconst DEFAULT_OPTIONS = {};\n\n/**\n * Given the cache and a descriptor, returns a matching descriptor from the\n * cache, or else returns the input descriptor and adds it to the cache for\n * next time.\n */\nfunction loadCachedDescriptor<API>(\n  cache: WeakMap<\n    object | Function,\n    WeakMap<object, Array<UnloadedDescriptor<API>>>\n  >,\n  desc: UnloadedDescriptor<API>,\n) {\n  const { value, options = DEFAULT_OPTIONS } = desc;\n  if (options === false) return desc;\n\n  let cacheByOptions = cache.get(value);\n  if (!cacheByOptions) {\n    cacheByOptions = new WeakMap();\n    cache.set(value, cacheByOptions);\n  }\n\n  let possibilities = cacheByOptions.get(options);\n  if (!possibilities) {\n    possibilities = [];\n    cacheByOptions.set(options, possibilities);\n  }\n\n  if (!possibilities.includes(desc)) {\n    const matches = possibilities.filter(possibility =>\n      isEqualDescriptor(possibility, desc),\n    );\n    if (matches.length > 0) {\n      return matches[0];\n    }\n\n    possibilities.push(desc);\n  }\n\n  return desc;\n}\n\nfunction* createPresetDescriptors(\n  items: PluginList,\n  dirname: string,\n  alias: string,\n  passPerPreset: boolean,\n): Handler<Array<UnloadedDescriptor<PresetAPI>>> {\n  return yield* createDescriptors(\n    \"preset\",\n    items,\n    dirname,\n    alias,\n    passPerPreset,\n  );\n}\n\nfunction* createPluginDescriptors(\n  items: PluginList,\n  dirname: string,\n  alias: string,\n): Handler<Array<UnloadedDescriptor<PluginAPI>>> {\n  return yield* createDescriptors(\"plugin\", items, dirname, alias);\n}\n\nfunction* createDescriptors<API>(\n  type: \"plugin\" | \"preset\",\n  items: PluginList,\n  dirname: string,\n  alias: string,\n  ownPass?: boolean,\n): Handler<Array<UnloadedDescriptor<API>>> {\n  const descriptors = yield* gensync.all(\n    items.map((item, index) =>\n      createDescriptor(item, dirname, {\n        type,\n        alias: `${alias}$${index}`,\n        ownPass: !!ownPass,\n      }),\n    ),\n  );\n\n  assertNoDuplicates(descriptors);\n\n  return descriptors;\n}\n\n/**\n * Given a plugin/preset item, resolve it into a standard format.\n */\nexport function* createDescriptor<API>(\n  pair: PluginItem,\n  dirname: string,\n  {\n    type,\n    alias,\n    ownPass,\n  }: {\n    type?: \"plugin\" | \"preset\";\n    alias: string;\n    ownPass?: boolean;\n  },\n): Handler<UnloadedDescriptor<API>> {\n  const desc = getItemDescriptor(pair);\n  if (desc) {\n    return desc;\n  }\n\n  let name;\n  let options;\n  // todo(flow->ts) better type annotation\n  let value: any = pair;\n  if (Array.isArray(value)) {\n    if (value.length === 3) {\n      [value, options, name] = value;\n    } else {\n      [value, options] = value;\n    }\n  }\n\n  let file = undefined;\n  let filepath = null;\n  if (typeof value === \"string\") {\n    if (typeof type !== \"string\") {\n      throw new Error(\n        \"To resolve a string-based item, the type of item must be given\",\n      );\n    }\n    const resolver = type === \"plugin\" ? loadPlugin : loadPreset;\n    const request = value;\n\n    ({ filepath, value } = yield* resolver(value, dirname));\n\n    file = {\n      request,\n      resolved: filepath,\n    };\n  }\n\n  if (!value) {\n    throw new Error(`Unexpected falsy value: ${String(value)}`);\n  }\n\n  if (typeof value === \"object\" && value.__esModule) {\n    if (value.default) {\n      value = value.default;\n    } else {\n      throw new Error(\"Must export a default export when using ES6 modules.\");\n    }\n  }\n\n  if (typeof value !== \"object\" && typeof value !== \"function\") {\n    throw new Error(\n      `Unsupported format: ${typeof value}. Expected an object or a function.`,\n    );\n  }\n\n  if (filepath !== null && typeof value === \"object\" && value) {\n    // We allow object values for plugins/presets nested directly within a\n    // config object, because it can be useful to define them in nested\n    // configuration contexts.\n    throw new Error(\n      `Plugin/Preset files are not allowed to export objects, only functions. In ${filepath}`,\n    );\n  }\n\n  return {\n    name,\n    alias: filepath || alias,\n    value,\n    options,\n    dirname,\n    ownPass,\n    file,\n  };\n}\n\nfunction assertNoDuplicates<API>(items: Array<UnloadedDescriptor<API>>): void {\n  const map = new Map();\n\n  for (const item of items) {\n    if (typeof item.value !== \"function\") continue;\n\n    let nameMap = map.get(item.value);\n    if (!nameMap) {\n      nameMap = new Set();\n      map.set(item.value, nameMap);\n    }\n\n    if (nameMap.has(item.name)) {\n      const conflicts = items.filter(i => i.value === item.value);\n      throw new Error(\n        [\n          `Duplicate plugin/preset detected.`,\n          `If you'd like to use two separate instances of a plugin,`,\n          `they need separate names, e.g.`,\n          ``,\n          `  plugins: [`,\n          `    ['some-plugin', {}],`,\n          `    ['some-plugin', {}, 'some unique name'],`,\n          `  ]`,\n          ``,\n          `Duplicates detected are:`,\n          `${JSON.stringify(conflicts, null, 2)}`,\n        ].join(\"\\n\"),\n      );\n    }\n\n    nameMap.add(item.name);\n  }\n}\n","import type { Handler } from \"gensync\";\nimport type { PluginTarget, PluginOptions } from \"./validation/options.ts\";\n\nimport path from \"path\";\nimport { createDescriptor } from \"./config-descriptors.ts\";\n\nimport type { UnloadedDescriptor } from \"./config-descriptors.ts\";\n\nexport function createItemFromDescriptor<API>(\n  desc: UnloadedDescriptor<API>,\n): ConfigItem<API> {\n  return new ConfigItem(desc);\n}\n\n/**\n * Create a config item using the same value format used in Babel's config\n * files. Items returned from this function should be cached by the caller\n * ideally, as recreating the config item will mean re-resolving the item\n * and re-evaluating the plugin/preset function.\n */\nexport function* createConfigItem<API>(\n  value:\n    | PluginTarget\n    | [PluginTarget, PluginOptions]\n    | [PluginTarget, PluginOptions, string | void],\n  {\n    dirname = \".\",\n    type,\n  }: {\n    dirname?: string;\n    type?: \"preset\" | \"plugin\";\n  } = {},\n): Handler<ConfigItem<API>> {\n  const descriptor = yield* createDescriptor(value, path.resolve(dirname), {\n    type,\n    alias: \"programmatic item\",\n  });\n\n  return createItemFromDescriptor(descriptor);\n}\n\nconst CONFIG_ITEM_BRAND = Symbol.for(\"@babel/core@7 - ConfigItem\");\n\nexport function getItemDescriptor<API>(\n  item: unknown,\n): UnloadedDescriptor<API> | void {\n  if ((item as any)?.[CONFIG_ITEM_BRAND]) {\n    return (item as ConfigItem<API>)._descriptor;\n  }\n\n  return undefined;\n}\n\nexport type { ConfigItem };\n\n/**\n * A public representation of a plugin/preset that will _eventually_ be load.\n * Users can use this to interact with the results of a loaded Babel\n * configuration.\n *\n * Any changes to public properties of this class should be considered a\n * breaking change to Babel's API.\n */\nclass ConfigItem<API> {\n  /**\n   * The private underlying descriptor that Babel actually cares about.\n   * If you access this, you are a bad person.\n   */\n  _descriptor: UnloadedDescriptor<API>;\n\n  // TODO(Babel 9): Check if this symbol needs to be updated\n  /**\n   * Used to detect ConfigItem instances from other Babel instances.\n   */\n  [CONFIG_ITEM_BRAND] = true;\n\n  /**\n   * The resolved value of the item itself.\n   */\n  value: object | Function;\n\n  /**\n   * The options, if any, that were passed to the item.\n   * Mutating this will lead to undefined behavior.\n   *\n   * \"false\" means that this item has been disabled.\n   */\n  options: object | void | false;\n\n  /**\n   * The directory that the options for this item are relative to.\n   */\n  dirname: string;\n\n  /**\n   * Get the name of the plugin, if the user gave it one.\n   */\n  name: string | void;\n\n  /**\n   * Data about the file that the item was loaded from, if Babel knows it.\n   */\n  file: {\n    // The requested path, e.g. \"@babel/env\".\n    request: string;\n    // The resolved absolute path of the file.\n    resolved: string;\n  } | void;\n\n  constructor(descriptor: UnloadedDescriptor<API>) {\n    // Make people less likely to stumble onto this if they are exploring\n    // programmatically, and also make sure that if people happen to\n    // pass the item through JSON.stringify, it doesn't show up.\n    this._descriptor = descriptor;\n    Object.defineProperty(this, \"_descriptor\", { enumerable: false });\n\n    Object.defineProperty(this, CONFIG_ITEM_BRAND, { enumerable: false });\n\n    this.value = this._descriptor.value;\n    this.options = this._descriptor.options;\n    this.dirname = this._descriptor.dirname;\n    this.name = this._descriptor.name;\n    this.file = this._descriptor.file\n      ? {\n          request: this._descriptor.file.request,\n          resolved: this._descriptor.file.resolved,\n        }\n      : undefined;\n\n    // Freeze the object to make it clear that people shouldn't expect mutating\n    // this object to do anything. A new item should be created if they want\n    // to change something.\n    Object.freeze(this);\n  }\n}\n\nObject.freeze(ConfigItem.prototype);\n","export default {\n  auxiliaryComment: {\n    message: \"Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`\",\n  },\n  blacklist: {\n    message: \"Put the specific transforms you want in the `plugins` option\",\n  },\n  breakConfig: {\n    message: \"This is not a necessary option in Babel 6\",\n  },\n  experimental: {\n    message: \"Put the specific transforms you want in the `plugins` option\",\n  },\n  externalHelpers: {\n    message:\n      \"Use the `external-helpers` plugin instead. \" +\n      \"Check out http://babeljs.io/docs/plugins/external-helpers/\",\n  },\n  extra: {\n    message: \"\",\n  },\n  jsxPragma: {\n    message:\n      \"use the `pragma` option in the `react-jsx` plugin. \" +\n      \"Check out http://babeljs.io/docs/plugins/transform-react-jsx/\",\n  },\n  loose: {\n    message:\n      \"Specify the `loose` option for the relevant plugin you are using \" +\n      \"or use a preset that sets the option.\",\n  },\n  metadataUsedHelpers: {\n    message: \"Not required anymore as this is enabled by default\",\n  },\n  modules: {\n    message:\n      \"Use the corresponding module transform plugin in the `plugins` option. \" +\n      \"Check out http://babeljs.io/docs/plugins/#modules\",\n  },\n  nonStandard: {\n    message:\n      \"Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. \" +\n      \"Also check out the react preset http://babeljs.io/docs/plugins/preset-react/\",\n  },\n  optional: {\n    message: \"Put the specific transforms you want in the `plugins` option\",\n  },\n  sourceMapName: {\n    message:\n      \"The `sourceMapName` option has been removed because it makes more sense for the \" +\n      \"tooling that calls Babel to assign `map.file` themselves.\",\n  },\n  stage: {\n    message:\n      \"Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets\",\n  },\n  whitelist: {\n    message: \"Put the specific transforms you want in the `plugins` option\",\n  },\n\n  resolveModuleSource: {\n    version: 6,\n    message: \"Use `babel-plugin-module-resolver@3`'s 'resolvePath' options\",\n  },\n  metadata: {\n    version: 6,\n    message:\n      \"Generated plugin metadata is always included in the output result\",\n  },\n  sourceMapTarget: {\n    version: 6,\n    message:\n      \"The `sourceMapTarget` option has been removed because it makes more sense for the tooling \" +\n      \"that calls Babel to assign `map.file` themselves.\",\n  },\n} as { [name: string]: { version?: number; message: string } };\n","import {\n  isBrowsersQueryValid,\n  TargetNames,\n} from \"@babel/helper-compilation-targets\";\n\nimport type {\n  ConfigFileSearch,\n  BabelrcSearch,\n  IgnoreList,\n  IgnoreItem,\n  PluginList,\n  PluginItem,\n  PluginTarget,\n  ConfigApplicableTest,\n  SourceMapsOption,\n  SourceTypeOption,\n  CompactOption,\n  RootInputSourceMapOption,\n  NestingPath,\n  CallerMetadata,\n  RootMode,\n  TargetsListOrObject,\n  AssumptionName,\n} from \"./options.ts\";\n\nimport { assumptionsNames } from \"./options.ts\";\n\nexport type { RootPath } from \"./options.ts\";\n\nexport type ValidatorSet = {\n  [name: string]: Validator<any>;\n};\n\nexport type Validator<T> = (loc: OptionPath, value: unknown) => T;\n\nexport function msg(loc: NestingPath | GeneralPath): string {\n  switch (loc.type) {\n    case \"root\":\n      return ``;\n    case \"env\":\n      return `${msg(loc.parent)}.env[\"${loc.name}\"]`;\n    case \"overrides\":\n      return `${msg(loc.parent)}.overrides[${loc.index}]`;\n    case \"option\":\n      return `${msg(loc.parent)}.${loc.name}`;\n    case \"access\":\n      return `${msg(loc.parent)}[${JSON.stringify(loc.name)}]`;\n    default:\n      // @ts-expect-error should not happen when code is type checked\n      throw new Error(`Assertion failure: Unknown type ${loc.type}`);\n  }\n}\n\nexport function access(loc: GeneralPath, name: string | number): AccessPath {\n  return {\n    type: \"access\",\n    name,\n    parent: loc,\n  };\n}\n\nexport type OptionPath = Readonly<{\n  type: \"option\";\n  name: string;\n  parent: NestingPath;\n}>;\ntype AccessPath = Readonly<{\n  type: \"access\";\n  name: string | number;\n  parent: GeneralPath;\n}>;\ntype GeneralPath = OptionPath | AccessPath;\n\nexport function assertRootMode(\n  loc: OptionPath,\n  value: unknown,\n): RootMode | void {\n  if (\n    value !== undefined &&\n    value !== \"root\" &&\n    value !== \"upward\" &&\n    value !== \"upward-optional\"\n  ) {\n    throw new Error(\n      `${msg(loc)} must be a \"root\", \"upward\", \"upward-optional\" or undefined`,\n    );\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertSourceMaps(\n  loc: OptionPath,\n  value: unknown,\n): SourceMapsOption | void {\n  if (\n    value !== undefined &&\n    typeof value !== \"boolean\" &&\n    value !== \"inline\" &&\n    value !== \"both\"\n  ) {\n    throw new Error(\n      `${msg(loc)} must be a boolean, \"inline\", \"both\", or undefined`,\n    );\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertCompact(\n  loc: OptionPath,\n  value: unknown,\n): CompactOption | void {\n  if (value !== undefined && typeof value !== \"boolean\" && value !== \"auto\") {\n    throw new Error(`${msg(loc)} must be a boolean, \"auto\", or undefined`);\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertSourceType(\n  loc: OptionPath,\n  value: unknown,\n): SourceTypeOption | void {\n  if (\n    value !== undefined &&\n    value !== \"module\" &&\n    value !== \"script\" &&\n    value !== \"unambiguous\"\n  ) {\n    throw new Error(\n      `${msg(loc)} must be \"module\", \"script\", \"unambiguous\", or undefined`,\n    );\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertCallerMetadata(\n  loc: OptionPath,\n  value: unknown,\n): CallerMetadata | undefined {\n  const obj = assertObject(loc, value);\n  if (obj) {\n    if (typeof obj.name !== \"string\") {\n      throw new Error(\n        `${msg(loc)} set but does not contain \"name\" property string`,\n      );\n    }\n\n    for (const prop of Object.keys(obj)) {\n      const propLoc = access(loc, prop);\n      const value = obj[prop];\n      if (\n        value != null &&\n        typeof value !== \"boolean\" &&\n        typeof value !== \"string\" &&\n        typeof value !== \"number\"\n      ) {\n        // NOTE(logan): I'm limiting the type here so that we can guarantee that\n        // the \"caller\" value will serialize to JSON nicely. We can always\n        // allow more complex structures later though.\n        throw new Error(\n          `${msg(\n            propLoc,\n          )} must be null, undefined, a boolean, a string, or a number.`,\n        );\n      }\n    }\n  }\n  // @ts-expect-error todo(flow->ts)\n  return value;\n}\n\nexport function assertInputSourceMap(\n  loc: OptionPath,\n  value: unknown,\n): RootInputSourceMapOption {\n  if (\n    value !== undefined &&\n    typeof value !== \"boolean\" &&\n    (typeof value !== \"object\" || !value)\n  ) {\n    throw new Error(`${msg(loc)} must be a boolean, object, or undefined`);\n  }\n  return value as RootInputSourceMapOption;\n}\n\nexport function assertString(loc: GeneralPath, value: unknown): string | void {\n  if (value !== undefined && typeof value !== \"string\") {\n    throw new Error(`${msg(loc)} must be a string, or undefined`);\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertFunction(\n  loc: GeneralPath,\n  value: unknown,\n): Function | void {\n  if (value !== undefined && typeof value !== \"function\") {\n    throw new Error(`${msg(loc)} must be a function, or undefined`);\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertBoolean(\n  loc: GeneralPath,\n  value: unknown,\n): boolean | void {\n  if (value !== undefined && typeof value !== \"boolean\") {\n    throw new Error(`${msg(loc)} must be a boolean, or undefined`);\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertObject(\n  loc: GeneralPath,\n  value: unknown,\n): { readonly [key: string]: unknown } | void {\n  if (\n    value !== undefined &&\n    (typeof value !== \"object\" || Array.isArray(value) || !value)\n  ) {\n    throw new Error(`${msg(loc)} must be an object, or undefined`);\n  }\n  // @ts-expect-error todo(flow->ts) value is still typed as unknown, also assert function typically should not return a value\n  return value;\n}\n\nexport function assertArray<T>(\n  loc: GeneralPath,\n  value: Array<T> | undefined | null,\n): ReadonlyArray<T> | undefined | null {\n  if (value != null && !Array.isArray(value)) {\n    throw new Error(`${msg(loc)} must be an array, or undefined`);\n  }\n  return value;\n}\n\nexport function assertIgnoreList(\n  loc: OptionPath,\n  value: unknown[] | undefined,\n): IgnoreList | void {\n  const arr = assertArray(loc, value);\n  arr?.forEach((item, i) => assertIgnoreItem(access(loc, i), item));\n  // @ts-expect-error todo(flow->ts)\n  return arr;\n}\nfunction assertIgnoreItem(loc: GeneralPath, value: unknown): IgnoreItem {\n  if (\n    typeof value !== \"string\" &&\n    typeof value !== \"function\" &&\n    !(value instanceof RegExp)\n  ) {\n    throw new Error(\n      `${msg(\n        loc,\n      )} must be an array of string/Function/RegExp values, or undefined`,\n    );\n  }\n  return value as IgnoreItem;\n}\n\nexport function assertConfigApplicableTest(\n  loc: OptionPath,\n  value: unknown,\n): ConfigApplicableTest | void {\n  if (value === undefined) {\n    // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n    return value;\n  }\n\n  if (Array.isArray(value)) {\n    value.forEach((item, i) => {\n      if (!checkValidTest(item)) {\n        throw new Error(\n          `${msg(access(loc, i))} must be a string/Function/RegExp.`,\n        );\n      }\n    });\n  } else if (!checkValidTest(value)) {\n    throw new Error(\n      `${msg(loc)} must be a string/Function/RegExp, or an array of those`,\n    );\n  }\n  return value as ConfigApplicableTest;\n}\n\nfunction checkValidTest(value: unknown): value is string | Function | RegExp {\n  return (\n    typeof value === \"string\" ||\n    typeof value === \"function\" ||\n    value instanceof RegExp\n  );\n}\n\nexport function assertConfigFileSearch(\n  loc: OptionPath,\n  value: unknown,\n): ConfigFileSearch | void {\n  if (\n    value !== undefined &&\n    typeof value !== \"boolean\" &&\n    typeof value !== \"string\"\n  ) {\n    throw new Error(\n      `${msg(loc)} must be a undefined, a boolean, a string, ` +\n        `got ${JSON.stringify(value)}`,\n    );\n  }\n  // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n  return value;\n}\n\nexport function assertBabelrcSearch(\n  loc: OptionPath,\n  value: unknown,\n): BabelrcSearch | void {\n  if (value === undefined || typeof value === \"boolean\") {\n    // @ts-expect-error: TS can only narrow down the type when \"strictNullCheck\" is true\n    return value;\n  }\n\n  if (Array.isArray(value)) {\n    value.forEach((item, i) => {\n      if (!checkValidTest(item)) {\n        throw new Error(\n          `${msg(access(loc, i))} must be a string/Function/RegExp.`,\n        );\n      }\n    });\n  } else if (!checkValidTest(value)) {\n    throw new Error(\n      `${msg(loc)} must be a undefined, a boolean, a string/Function/RegExp ` +\n        `or an array of those, got ${JSON.stringify(value as any)}`,\n    );\n  }\n  return value as BabelrcSearch;\n}\n\nexport function assertPluginList(\n  loc: OptionPath,\n  value: unknown[] | null | undefined,\n): PluginList | void {\n  const arr = assertArray(loc, value);\n  if (arr) {\n    // Loop instead of using `.map` in order to preserve object identity\n    // for plugin array for use during config chain processing.\n    arr.forEach((item, i) => assertPluginItem(access(loc, i), item));\n  }\n  return arr as any;\n}\nfunction assertPluginItem(loc: GeneralPath, value: unknown): PluginItem {\n  if (Array.isArray(value)) {\n    if (value.length === 0) {\n      throw new Error(`${msg(loc)} must include an object`);\n    }\n\n    if (value.length > 3) {\n      throw new Error(`${msg(loc)} may only be a two-tuple or three-tuple`);\n    }\n\n    assertPluginTarget(access(loc, 0), value[0]);\n\n    if (value.length > 1) {\n      const opts = value[1];\n      if (\n        opts !== undefined &&\n        opts !== false &&\n        (typeof opts !== \"object\" || Array.isArray(opts) || opts === null)\n      ) {\n        throw new Error(\n          `${msg(access(loc, 1))} must be an object, false, or undefined`,\n        );\n      }\n    }\n    if (value.length === 3) {\n      const name = value[2];\n      if (name !== undefined && typeof name !== \"string\") {\n        throw new Error(\n          `${msg(access(loc, 2))} must be a string, or undefined`,\n        );\n      }\n    }\n  } else {\n    assertPluginTarget(loc, value);\n  }\n\n  // @ts-expect-error todo(flow->ts)\n  return value;\n}\nfunction assertPluginTarget(loc: GeneralPath, value: unknown): PluginTarget {\n  if (\n    (typeof value !== \"object\" || !value) &&\n    typeof value !== \"string\" &&\n    typeof value !== \"function\"\n  ) {\n    throw new Error(`${msg(loc)} must be a string, object, function`);\n  }\n  return value;\n}\n\nexport function assertTargets(\n  loc: GeneralPath,\n  value: any,\n): TargetsListOrObject {\n  if (isBrowsersQueryValid(value)) return value;\n\n  if (typeof value !== \"object\" || !value || Array.isArray(value)) {\n    throw new Error(\n      `${msg(loc)} must be a string, an array of strings or an object`,\n    );\n  }\n\n  const browsersLoc = access(loc, \"browsers\");\n  const esmodulesLoc = access(loc, \"esmodules\");\n\n  assertBrowsersList(browsersLoc, value.browsers);\n  assertBoolean(esmodulesLoc, value.esmodules);\n\n  for (const key of Object.keys(value)) {\n    const val = value[key];\n    const subLoc = access(loc, key);\n\n    if (key === \"esmodules\") assertBoolean(subLoc, val);\n    else if (key === \"browsers\") assertBrowsersList(subLoc, val);\n    else if (!Object.hasOwn(TargetNames, key)) {\n      const validTargets = Object.keys(TargetNames).join(\", \");\n      throw new Error(\n        `${msg(\n          subLoc,\n        )} is not a valid target. Supported targets are ${validTargets}`,\n      );\n    } else assertBrowserVersion(subLoc, val);\n  }\n\n  return value;\n}\n\nfunction assertBrowsersList(loc: GeneralPath, value: unknown) {\n  if (value !== undefined && !isBrowsersQueryValid(value)) {\n    throw new Error(\n      `${msg(loc)} must be undefined, a string or an array of strings`,\n    );\n  }\n}\n\nfunction assertBrowserVersion(loc: GeneralPath, value: unknown) {\n  if (typeof value === \"number\" && Math.round(value) === value) return;\n  if (typeof value === \"string\") return;\n\n  throw new Error(`${msg(loc)} must be a string or an integer number`);\n}\n\nexport function assertAssumptions(\n  loc: GeneralPath,\n  value: { [key: string]: unknown },\n): { [name: string]: boolean } | void {\n  if (value === undefined) return;\n\n  if (typeof value !== \"object\" || value === null) {\n    throw new Error(`${msg(loc)} must be an object or undefined.`);\n  }\n\n  // todo(flow->ts): remove any\n  let root: any = loc;\n  do {\n    root = root.parent;\n  } while (root.type !== \"root\");\n  const inPreset = root.source === \"preset\";\n\n  for (const name of Object.keys(value)) {\n    const subLoc = access(loc, name);\n    if (!assumptionsNames.has(name as AssumptionName)) {\n      throw new Error(`${msg(subLoc)} is not a supported assumption.`);\n    }\n    if (typeof value[name] !== \"boolean\") {\n      throw new Error(`${msg(subLoc)} must be a boolean.`);\n    }\n    if (inPreset && value[name] === false) {\n      throw new Error(\n        `${msg(subLoc)} cannot be set to 'false' inside presets.`,\n      );\n    }\n  }\n\n  // @ts-expect-error todo(flow->ts)\n  return value;\n}\n","/**\n * This file uses the internal V8 Stack Trace API (https://v8.dev/docs/stack-trace-api)\n * to provide utilities to rewrite the stack trace.\n * When this API is not present, all the functions in this file become noops.\n *\n * beginHiddenCallStack(fn) and endHiddenCallStack(fn) wrap their parameter to\n * mark an hidden portion of the stack trace. The function passed to\n * beginHiddenCallStack is the first hidden function, while the function passed\n * to endHiddenCallStack is the first shown function.\n *\n * When an error is thrown _outside_ of the hidden zone, everything between\n * beginHiddenCallStack and endHiddenCallStack will not be shown.\n * If an error is thrown _inside_ the hidden zone, then the whole stack trace\n * will be visible: this is to avoid hiding real bugs.\n * However, if an error inside the hidden zone is expected, it can be marked\n * with the expectedError(error) function to keep the hidden frames hidden.\n *\n * Consider this call stack (the outer function is the bottom one):\n *\n *   1. a()\n *   2. endHiddenCallStack(b)()\n *   3. c()\n *   4. beginHiddenCallStack(d)()\n *   5. e()\n *   6. f()\n *\n * - If a() throws an error, then its shown call stack will be \"a, b, e, f\"\n * - If b() throws an error, then its shown call stack will be \"b, e, f\"\n * - If c() throws an expected error, then its shown call stack will be \"e, f\"\n * - If c() throws an unexpected error, then its shown call stack will be \"c, d, e, f\"\n * - If d() throws an expected error, then its shown call stack will be \"e, f\"\n * - If d() throws an unexpected error, then its shown call stack will be \"d, e, f\"\n * - If e() throws an error, then its shown call stack will be \"e, f\"\n *\n * Additionally, an error can inject additional \"virtual\" stack frames using the\n * injectVirtualStackFrame(error, filename) function: those are injected as a\n * replacement of the hidden frames.\n * In the example above, if we called injectVirtualStackFrame(err, \"h\") and\n * injectVirtualStackFrame(err, \"i\") on the expected error thrown by c(), its\n * shown call stack would have been \"h, i, e, f\".\n * This can be useful, for example, to report config validation errors as if they\n * were directly thrown in the config file.\n */\n\nconst ErrorToString = Function.call.bind(Error.prototype.toString);\n\nconst SUPPORTED =\n  !!Error.captureStackTrace &&\n  Object.getOwnPropertyDescriptor(Error, \"stackTraceLimit\")?.writable === true;\n\nconst START_HIDING = \"startHiding - secret - don't use this - v1\";\nconst STOP_HIDING = \"stopHiding - secret - don't use this - v1\";\n\ntype CallSite = NodeJS.CallSite;\n\nconst expectedErrors = new WeakSet<Error>();\nconst virtualFrames = new WeakMap<Error, CallSite[]>();\n\nfunction CallSite(filename: string): CallSite {\n  // We need to use a prototype otherwise it breaks source-map-support's internals\n  return Object.create({\n    isNative: () => false,\n    isConstructor: () => false,\n    isToplevel: () => true,\n    getFileName: () => filename,\n    getLineNumber: () => undefined,\n    getColumnNumber: () => undefined,\n    getFunctionName: () => undefined,\n    getMethodName: () => undefined,\n    getTypeName: () => undefined,\n    toString: () => filename,\n  } as CallSite);\n}\n\nexport function injectVirtualStackFrame(error: Error, filename: string) {\n  if (!SUPPORTED) return;\n\n  let frames = virtualFrames.get(error);\n  if (!frames) virtualFrames.set(error, (frames = []));\n  frames.push(CallSite(filename));\n\n  return error;\n}\n\nexport function expectedError(error: Error) {\n  if (!SUPPORTED) return;\n  expectedErrors.add(error);\n  return error;\n}\n\nexport function beginHiddenCallStack<A extends unknown[], R>(\n  fn: (...args: A) => R,\n) {\n  if (!SUPPORTED) return fn;\n\n  return Object.defineProperty(\n    function (...args: A) {\n      setupPrepareStackTrace();\n      return fn(...args);\n    },\n    \"name\",\n    { value: STOP_HIDING },\n  );\n}\n\nexport function endHiddenCallStack<A extends unknown[], R>(\n  fn: (...args: A) => R,\n) {\n  if (!SUPPORTED) return fn;\n\n  return Object.defineProperty(\n    function (...args: A) {\n      return fn(...args);\n    },\n    \"name\",\n    { value: START_HIDING },\n  );\n}\n\nfunction setupPrepareStackTrace() {\n  // @ts-expect-error This function is a singleton\n  setupPrepareStackTrace = () => {};\n\n  const { prepareStackTrace = defaultPrepareStackTrace } = Error;\n\n  // We add some extra frames to Error.stackTraceLimit, so that we can\n  // always show some useful frames even after deleting ours.\n  // STACK_TRACE_LIMIT_DELTA should be around the maximum expected number\n  // of internal frames, and not too big because capturing the stack trace\n  // is slow (this is why Error.stackTraceLimit does not default to Infinity!).\n  // Increase it if needed.\n  // However, we only do it if the user did not explicitly set it to 0.\n  const MIN_STACK_TRACE_LIMIT = 50;\n  Error.stackTraceLimit &&= Math.max(\n    Error.stackTraceLimit,\n    MIN_STACK_TRACE_LIMIT,\n  );\n\n  Error.prepareStackTrace = function stackTraceRewriter(err, trace) {\n    let newTrace = [];\n\n    const isExpected = expectedErrors.has(err);\n    let status: \"showing\" | \"hiding\" | \"unknown\" = isExpected\n      ? \"hiding\"\n      : \"unknown\";\n    for (let i = 0; i < trace.length; i++) {\n      const name = trace[i].getFunctionName();\n      if (name === START_HIDING) {\n        status = \"hiding\";\n      } else if (name === STOP_HIDING) {\n        if (status === \"hiding\") {\n          status = \"showing\";\n          if (virtualFrames.has(err)) {\n            newTrace.unshift(...virtualFrames.get(err));\n          }\n        } else if (status === \"unknown\") {\n          // Unexpected internal error, show the full stack trace\n          newTrace = trace;\n          break;\n        }\n      } else if (status !== \"hiding\") {\n        newTrace.push(trace[i]);\n      }\n    }\n\n    return prepareStackTrace(err, newTrace);\n  };\n}\n\nfunction defaultPrepareStackTrace(err: Error, trace: CallSite[]) {\n  if (trace.length === 0) return ErrorToString(err);\n  return `${ErrorToString(err)}\\n    at ${trace.join(\"\\n    at \")}`;\n}\n","import {\n  injectVirtualStackFrame,\n  expectedError,\n} from \"./rewrite-stack-trace.ts\";\n\nexport default class ConfigError extends Error {\n  constructor(message: string, filename?: string) {\n    super(message);\n    expectedError(this);\n    if (filename) injectVirtualStackFrame(this, filename);\n  }\n}\n","import type { InputTargets, Targets } from \"@babel/helper-compilation-targets\";\n\nimport type { ConfigItem } from \"../item.ts\";\nimport type Plugin from \"../plugin.ts\";\n\nimport removed from \"./removed.ts\";\nimport {\n  msg,\n  access,\n  assertString,\n  assertBoolean,\n  assertObject,\n  assertArray,\n  assertCallerMetadata,\n  assertInputSourceMap,\n  assertIgnoreList,\n  assertPluginList,\n  assertConfigApplicableTest,\n  assertConfigFileSearch,\n  assertBabelrcSearch,\n  assertFunction,\n  assertRootMode,\n  assertSourceMaps,\n  assertCompact,\n  assertSourceType,\n  assertTargets,\n  assertAssumptions,\n} from \"./option-assertions.ts\";\nimport type {\n  ValidatorSet,\n  Validator,\n  OptionPath,\n} from \"./option-assertions.ts\";\nimport type { UnloadedDescriptor } from \"../config-descriptors.ts\";\nimport type { PluginAPI } from \"../helpers/config-api.ts\";\nimport type { ParserOptions } from \"@babel/parser\";\nimport type { GeneratorOptions } from \"@babel/generator\";\nimport ConfigError from \"../../errors/config-error.ts\";\n\nconst ROOT_VALIDATORS: ValidatorSet = {\n  cwd: assertString as Validator<ValidatedOptions[\"cwd\"]>,\n  root: assertString as Validator<ValidatedOptions[\"root\"]>,\n  rootMode: assertRootMode as Validator<ValidatedOptions[\"rootMode\"]>,\n  configFile: assertConfigFileSearch as Validator<\n    ValidatedOptions[\"configFile\"]\n  >,\n\n  caller: assertCallerMetadata as Validator<ValidatedOptions[\"caller\"]>,\n  filename: assertString as Validator<ValidatedOptions[\"filename\"]>,\n  filenameRelative: assertString as Validator<\n    ValidatedOptions[\"filenameRelative\"]\n  >,\n  code: assertBoolean as Validator<ValidatedOptions[\"code\"]>,\n  ast: assertBoolean as Validator<ValidatedOptions[\"ast\"]>,\n\n  cloneInputAst: assertBoolean as Validator<ValidatedOptions[\"cloneInputAst\"]>,\n\n  envName: assertString as Validator<ValidatedOptions[\"envName\"]>,\n};\n\nconst BABELRC_VALIDATORS: ValidatorSet = {\n  babelrc: assertBoolean as Validator<ValidatedOptions[\"babelrc\"]>,\n  babelrcRoots: assertBabelrcSearch as Validator<\n    ValidatedOptions[\"babelrcRoots\"]\n  >,\n};\n\nconst NONPRESET_VALIDATORS: ValidatorSet = {\n  extends: assertString as Validator<ValidatedOptions[\"extends\"]>,\n  ignore: assertIgnoreList as Validator<ValidatedOptions[\"ignore\"]>,\n  only: assertIgnoreList as Validator<ValidatedOptions[\"only\"]>,\n\n  targets: assertTargets as Validator<ValidatedOptions[\"targets\"]>,\n  browserslistConfigFile: assertConfigFileSearch as Validator<\n    ValidatedOptions[\"browserslistConfigFile\"]\n  >,\n  browserslistEnv: assertString as Validator<\n    ValidatedOptions[\"browserslistEnv\"]\n  >,\n};\n\nconst COMMON_VALIDATORS: ValidatorSet = {\n  // TODO: Should 'inputSourceMap' be moved to be a root-only option?\n  // We may want a boolean-only version to be a common option, with the\n  // object only allowed as a root config argument.\n  inputSourceMap: assertInputSourceMap as Validator<\n    ValidatedOptions[\"inputSourceMap\"]\n  >,\n  presets: assertPluginList as Validator<ValidatedOptions[\"presets\"]>,\n  plugins: assertPluginList as Validator<ValidatedOptions[\"plugins\"]>,\n  passPerPreset: assertBoolean as Validator<ValidatedOptions[\"passPerPreset\"]>,\n  assumptions: assertAssumptions as Validator<ValidatedOptions[\"assumptions\"]>,\n\n  env: assertEnvSet as Validator<ValidatedOptions[\"env\"]>,\n  overrides: assertOverridesList as Validator<ValidatedOptions[\"overrides\"]>,\n\n  // We could limit these to 'overrides' blocks, but it's not clear why we'd\n  // bother, when the ability to limit a config to a specific set of files\n  // is a fairly general useful feature.\n  test: assertConfigApplicableTest as Validator<ValidatedOptions[\"test\"]>,\n  include: assertConfigApplicableTest as Validator<ValidatedOptions[\"include\"]>,\n  exclude: assertConfigApplicableTest as Validator<ValidatedOptions[\"exclude\"]>,\n\n  retainLines: assertBoolean as Validator<ValidatedOptions[\"retainLines\"]>,\n  comments: assertBoolean as Validator<ValidatedOptions[\"comments\"]>,\n  shouldPrintComment: assertFunction as Validator<\n    ValidatedOptions[\"shouldPrintComment\"]\n  >,\n  compact: assertCompact as Validator<ValidatedOptions[\"compact\"]>,\n  minified: assertBoolean as Validator<ValidatedOptions[\"minified\"]>,\n  auxiliaryCommentBefore: assertString as Validator<\n    ValidatedOptions[\"auxiliaryCommentBefore\"]\n  >,\n  auxiliaryCommentAfter: assertString as Validator<\n    ValidatedOptions[\"auxiliaryCommentAfter\"]\n  >,\n  sourceType: assertSourceType as Validator<ValidatedOptions[\"sourceType\"]>,\n  wrapPluginVisitorMethod: assertFunction as Validator<\n    ValidatedOptions[\"wrapPluginVisitorMethod\"]\n  >,\n  highlightCode: assertBoolean as Validator<ValidatedOptions[\"highlightCode\"]>,\n  sourceMaps: assertSourceMaps as Validator<ValidatedOptions[\"sourceMaps\"]>,\n  sourceMap: assertSourceMaps as Validator<ValidatedOptions[\"sourceMap\"]>,\n  sourceFileName: assertString as Validator<ValidatedOptions[\"sourceFileName\"]>,\n  sourceRoot: assertString as Validator<ValidatedOptions[\"sourceRoot\"]>,\n  parserOpts: assertObject as Validator<ValidatedOptions[\"parserOpts\"]>,\n  generatorOpts: assertObject as Validator<ValidatedOptions[\"generatorOpts\"]>,\n};\nif (!process.env.BABEL_8_BREAKING) {\n  Object.assign(COMMON_VALIDATORS, {\n    getModuleId: assertFunction,\n    moduleRoot: assertString,\n    moduleIds: assertBoolean,\n    moduleId: assertString,\n  });\n}\n\nexport type InputOptions = ValidatedOptions;\n\nexport type ValidatedOptions = {\n  cwd?: string;\n  filename?: string;\n  filenameRelative?: string;\n  babelrc?: boolean;\n  babelrcRoots?: BabelrcSearch;\n  configFile?: ConfigFileSearch;\n  root?: string;\n  rootMode?: RootMode;\n  code?: boolean;\n  ast?: boolean;\n  cloneInputAst?: boolean;\n  inputSourceMap?: RootInputSourceMapOption;\n  envName?: string;\n  caller?: CallerMetadata;\n  extends?: string;\n  env?: EnvSet<ValidatedOptions>;\n  ignore?: IgnoreList;\n  only?: IgnoreList;\n  overrides?: OverridesList;\n  showIgnoredFiles?: boolean;\n  // Generally verify if a given config object should be applied to the given file.\n  test?: ConfigApplicableTest;\n  include?: ConfigApplicableTest;\n  exclude?: ConfigApplicableTest;\n  presets?: PluginList;\n  plugins?: PluginList;\n  passPerPreset?: boolean;\n  assumptions?: {\n    [name: string]: boolean;\n  };\n  // browserslists-related options\n  targets?: TargetsListOrObject;\n  browserslistConfigFile?: ConfigFileSearch;\n  browserslistEnv?: string;\n  // Options for @babel/generator\n  retainLines?: boolean;\n  comments?: boolean;\n  shouldPrintComment?: Function;\n  compact?: CompactOption;\n  minified?: boolean;\n  auxiliaryCommentBefore?: string;\n  auxiliaryCommentAfter?: string;\n  // Parser\n  sourceType?: SourceTypeOption;\n  wrapPluginVisitorMethod?: Function;\n  highlightCode?: boolean;\n  // Sourcemap generation options.\n  sourceMaps?: SourceMapsOption;\n  sourceMap?: SourceMapsOption;\n  sourceFileName?: string;\n  sourceRoot?: string;\n  // Deprecate top level parserOpts\n  parserOpts?: ParserOptions;\n  // Deprecate top level generatorOpts\n  generatorOpts?: GeneratorOptions;\n};\n\nexport type NormalizedOptions = {\n  readonly targets: Targets;\n} & Omit<ValidatedOptions, \"targets\">;\n\nexport type CallerMetadata = {\n  // If 'caller' is specified, require that the name is given for debugging\n  // messages.\n  name: string;\n};\nexport type EnvSet<T> = {\n  [x: string]: T;\n};\nexport type IgnoreItem =\n  | string\n  | RegExp\n  | ((\n      path: string | undefined,\n      context: { dirname: string; caller: CallerMetadata; envName: string },\n    ) => unknown);\nexport type IgnoreList = ReadonlyArray<IgnoreItem>;\n\nexport type PluginOptions = object | void | false;\nexport type PluginTarget = string | object | Function;\nexport type PluginItem =\n  | ConfigItem<PluginAPI>\n  | Plugin\n  | PluginTarget\n  | [PluginTarget, PluginOptions]\n  | [PluginTarget, PluginOptions, string | void];\nexport type PluginList = ReadonlyArray<PluginItem>;\n\nexport type OverridesList = Array<ValidatedOptions>;\nexport type ConfigApplicableTest = IgnoreItem | Array<IgnoreItem>;\n\nexport type ConfigFileSearch = string | boolean;\nexport type BabelrcSearch = boolean | IgnoreItem | IgnoreList;\nexport type SourceMapsOption = boolean | \"inline\" | \"both\";\nexport type SourceTypeOption = \"module\" | \"script\" | \"unambiguous\";\nexport type CompactOption = boolean | \"auto\";\nexport type RootInputSourceMapOption = object | boolean;\nexport type RootMode = \"root\" | \"upward\" | \"upward-optional\";\n\nexport type TargetsListOrObject =\n  | Targets\n  | InputTargets\n  | InputTargets[\"browsers\"];\n\nexport type OptionsSource =\n  | \"arguments\"\n  | \"configfile\"\n  | \"babelrcfile\"\n  | \"extendsfile\"\n  | \"preset\"\n  | \"plugin\";\n\nexport type RootPath = Readonly<{\n  type: \"root\";\n  source: OptionsSource;\n}>;\n\ntype OverridesPath = Readonly<{\n  type: \"overrides\";\n  index: number;\n  parent: RootPath;\n}>;\n\ntype EnvPath = Readonly<{\n  type: \"env\";\n  name: string;\n  parent: RootPath | OverridesPath;\n}>;\n\nexport type NestingPath = RootPath | OverridesPath | EnvPath;\n\nconst knownAssumptions = [\n  \"arrayLikeIsIterable\",\n  \"constantReexports\",\n  \"constantSuper\",\n  \"enumerableModuleMeta\",\n  \"ignoreFunctionLength\",\n  \"ignoreToPrimitiveHint\",\n  \"iterableIsArray\",\n  \"mutableTemplateObject\",\n  \"noClassCalls\",\n  \"noDocumentAll\",\n  \"noIncompleteNsImportDetection\",\n  \"noNewArrows\",\n  \"noUninitializedPrivateFieldAccess\",\n  \"objectRestNoSymbols\",\n  \"privateFieldsAsSymbols\",\n  \"privateFieldsAsProperties\",\n  \"pureGetters\",\n  \"setClassMethods\",\n  \"setComputedProperties\",\n  \"setPublicClassFields\",\n  \"setSpreadProperties\",\n  \"skipForOfIteratorClosing\",\n  \"superIsCallableConstructor\",\n] as const;\nexport type AssumptionName = (typeof knownAssumptions)[number];\nexport const assumptionsNames = new Set(knownAssumptions);\n\nfunction getSource(loc: NestingPath): OptionsSource {\n  return loc.type === \"root\" ? loc.source : getSource(loc.parent);\n}\n\nexport function validate(\n  type: OptionsSource,\n  opts: any,\n  filename?: string,\n): ValidatedOptions {\n  try {\n    return validateNested(\n      {\n        type: \"root\",\n        source: type,\n      },\n      opts,\n    );\n  } catch (error) {\n    const configError = new ConfigError(error.message, filename);\n    // @ts-expect-error TODO: .code is not defined on ConfigError or Error\n    if (error.code) configError.code = error.code;\n    throw configError;\n  }\n}\n\nfunction validateNested(loc: NestingPath, opts: { [key: string]: unknown }) {\n  const type = getSource(loc);\n\n  assertNoDuplicateSourcemap(opts);\n\n  Object.keys(opts).forEach((key: string) => {\n    const optLoc = {\n      type: \"option\",\n      name: key,\n      parent: loc,\n    } as const;\n\n    if (type === \"preset\" && NONPRESET_VALIDATORS[key]) {\n      throw new Error(`${msg(optLoc)} is not allowed in preset options`);\n    }\n    if (type !== \"arguments\" && ROOT_VALIDATORS[key]) {\n      throw new Error(\n        `${msg(optLoc)} is only allowed in root programmatic options`,\n      );\n    }\n    if (\n      type !== \"arguments\" &&\n      type !== \"configfile\" &&\n      BABELRC_VALIDATORS[key]\n    ) {\n      if (type === \"babelrcfile\" || type === \"extendsfile\") {\n        throw new Error(\n          `${msg(\n            optLoc,\n          )} is not allowed in .babelrc or \"extends\"ed files, only in root programmatic options, ` +\n            `or babel.config.js/config file options`,\n        );\n      }\n\n      throw new Error(\n        `${msg(\n          optLoc,\n        )} is only allowed in root programmatic options, or babel.config.js/config file options`,\n      );\n    }\n\n    const validator =\n      COMMON_VALIDATORS[key] ||\n      NONPRESET_VALIDATORS[key] ||\n      BABELRC_VALIDATORS[key] ||\n      ROOT_VALIDATORS[key] ||\n      (throwUnknownError as Validator<void>);\n\n    validator(optLoc, opts[key]);\n  });\n\n  return opts;\n}\n\nfunction throwUnknownError(loc: OptionPath) {\n  const key = loc.name;\n\n  if (removed[key]) {\n    const { message, version = 5 } = removed[key];\n\n    throw new Error(\n      `Using removed Babel ${version} option: ${msg(loc)} - ${message}`,\n    );\n  } else {\n    const unknownOptErr = new Error(\n      `Unknown option: ${msg(\n        loc,\n      )}. Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.`,\n    );\n    // @ts-expect-error todo(flow->ts): consider creating something like BabelConfigError with code field in it\n    unknownOptErr.code = \"BABEL_UNKNOWN_OPTION\";\n\n    throw unknownOptErr;\n  }\n}\n\nfunction assertNoDuplicateSourcemap(opts: any): void {\n  if (Object.hasOwn(opts, \"sourceMap\") && Object.hasOwn(opts, \"sourceMaps\")) {\n    throw new Error(\".sourceMap is an alias for .sourceMaps, cannot use both\");\n  }\n}\n\nfunction assertEnvSet(\n  loc: OptionPath,\n  value: unknown,\n): void | EnvSet<ValidatedOptions> {\n  if (loc.parent.type === \"env\") {\n    throw new Error(`${msg(loc)} is not allowed inside of another .env block`);\n  }\n  const parent: RootPath | OverridesPath = loc.parent;\n\n  const obj = assertObject(loc, value);\n  if (obj) {\n    // Validate but don't copy the .env object in order to preserve\n    // object identity for use during config chain processing.\n    for (const envName of Object.keys(obj)) {\n      const env = assertObject(access(loc, envName), obj[envName]);\n      if (!env) continue;\n\n      const envLoc = {\n        type: \"env\",\n        name: envName,\n        parent,\n      } as const;\n      validateNested(envLoc, env);\n    }\n  }\n  return obj;\n}\n\nfunction assertOverridesList(\n  loc: OptionPath,\n  value: unknown[],\n): undefined | OverridesList {\n  if (loc.parent.type === \"env\") {\n    throw new Error(`${msg(loc)} is not allowed inside an .env block`);\n  }\n  if (loc.parent.type === \"overrides\") {\n    throw new Error(`${msg(loc)} is not allowed inside an .overrides block`);\n  }\n  const parent: RootPath = loc.parent;\n\n  const arr = assertArray(loc, value);\n  if (arr) {\n    for (const [index, item] of arr.entries()) {\n      const objLoc = access(loc, index);\n      const env = assertObject(objLoc, item);\n      if (!env) throw new Error(`${msg(objLoc)} must be an object`);\n\n      const overridesLoc = {\n        type: \"overrides\",\n        index,\n        parent,\n      } as const;\n      validateNested(overridesLoc, env);\n    }\n  }\n  return arr as OverridesList;\n}\n\nexport function checkNoUnwrappedItemOptionPairs<API>(\n  items: Array<UnloadedDescriptor<API>>,\n  index: number,\n  type: \"plugin\" | \"preset\",\n  e: Error,\n): void {\n  if (index === 0) return;\n\n  const lastItem = items[index - 1];\n  const thisItem = items[index];\n\n  if (\n    lastItem.file &&\n    lastItem.options === undefined &&\n    typeof thisItem.value === \"object\"\n  ) {\n    e.message +=\n      `\\n- Maybe you meant to use\\n` +\n      `\"${type}s\": [\\n  [\"${lastItem.file.request}\", ${JSON.stringify(\n        thisItem.value,\n        undefined,\n        2,\n      )}]\\n]\\n` +\n      `To be a valid ${type}, its name and options should be wrapped in a pair of brackets`;\n  }\n}\n","import path from \"path\";\n\nconst sep = `\\\\${path.sep}`;\nconst endSep = `(?:${sep}|$)`;\n\nconst substitution = `[^${sep}]+`;\n\nconst starPat = `(?:${substitution}${sep})`;\nconst starPatLast = `(?:${substitution}${endSep})`;\n\nconst starStarPat = `${starPat}*?`;\nconst starStarPatLast = `${starPat}*?${starPatLast}?`;\n\nfunction escapeRegExp(string: string) {\n  return string.replace(/[|\\\\{}()[\\]^$+*?.]/g, \"\\\\$&\");\n}\n\n/**\n * Implement basic pattern matching that will allow users to do the simple\n * tests with * and **. If users want full complex pattern matching, then can\n * always use regex matching, or function validation.\n */\nexport default function pathToPattern(\n  pattern: string,\n  dirname: string,\n): RegExp {\n  const parts = path.resolve(dirname, pattern).split(path.sep);\n\n  return new RegExp(\n    [\n      \"^\",\n      ...parts.map((part, i) => {\n        const last = i === parts.length - 1;\n\n        // ** matches 0 or more path parts.\n        if (part === \"**\") return last ? starStarPatLast : starStarPat;\n\n        // * matches 1 path part.\n        if (part === \"*\") return last ? starPatLast : starPat;\n\n        // *.ext matches a wildcard with an extension.\n        if (part.indexOf(\"*.\") === 0) {\n          return (\n            substitution + escapeRegExp(part.slice(1)) + (last ? endSep : sep)\n          );\n        }\n\n        // Otherwise match the pattern text.\n        return escapeRegExp(part) + (last ? endSep : sep);\n      }),\n    ].join(\"\"),\n  );\n}\n","import gensync from \"gensync\";\n\nimport type { Handler } from \"gensync\";\n\nimport type {\n  OptionsAndDescriptors,\n  UnloadedDescriptor,\n} from \"./config-descriptors.ts\";\n\n// todo: Use flow enums when @babel/transform-flow-types supports it\nexport const ChainFormatter = {\n  Programmatic: 0,\n  Config: 1,\n};\n\ntype PrintableConfig = {\n  content: OptionsAndDescriptors;\n  type: (typeof ChainFormatter)[keyof typeof ChainFormatter];\n  callerName: string | undefined | null;\n  filepath: string | undefined | null;\n  index: number | undefined | null;\n  envName: string | undefined | null;\n};\n\nconst Formatter = {\n  title(\n    type: (typeof ChainFormatter)[keyof typeof ChainFormatter],\n    callerName?: string | null,\n    filepath?: string | null,\n  ): string {\n    let title = \"\";\n    if (type === ChainFormatter.Programmatic) {\n      title = \"programmatic options\";\n      if (callerName) {\n        title += \" from \" + callerName;\n      }\n    } else {\n      title = \"config \" + filepath;\n    }\n    return title;\n  },\n  loc(index?: number | null, envName?: string | null): string {\n    let loc = \"\";\n    if (index != null) {\n      loc += `.overrides[${index}]`;\n    }\n    if (envName != null) {\n      loc += `.env[\"${envName}\"]`;\n    }\n    return loc;\n  },\n\n  *optionsAndDescriptors(opt: OptionsAndDescriptors) {\n    const content = { ...opt.options };\n    // overrides and env will be printed as separated config items\n    delete content.overrides;\n    delete content.env;\n    // resolve to descriptors\n    const pluginDescriptors = [...(yield* opt.plugins())];\n    if (pluginDescriptors.length) {\n      content.plugins = pluginDescriptors.map(d => descriptorToConfig(d));\n    }\n    const presetDescriptors = [...(yield* opt.presets())];\n    if (presetDescriptors.length) {\n      content.presets = [...presetDescriptors].map(d => descriptorToConfig(d));\n    }\n    return JSON.stringify(content, undefined, 2);\n  },\n};\n\nfunction descriptorToConfig<API>(\n  d: UnloadedDescriptor<API>,\n): object | string | [string, unknown] | [string, unknown, string] {\n  let name: object | string = d.file?.request;\n  if (name == null) {\n    if (typeof d.value === \"object\") {\n      name = d.value;\n    } else if (typeof d.value === \"function\") {\n      // If the unloaded descriptor is a function, i.e. `plugins: [ require(\"my-plugin\") ]`,\n      // we print the first 50 characters of the function source code and hopefully we can see\n      // `name: 'my-plugin'` in the source\n      name = `[Function: ${d.value.toString().slice(0, 50)} ... ]`;\n    }\n  }\n  if (name == null) {\n    name = \"[Unknown]\";\n  }\n  if (d.options === undefined) {\n    return name;\n  } else if (d.name == null) {\n    return [name, d.options];\n  } else {\n    return [name, d.options, d.name];\n  }\n}\n\nexport class ConfigPrinter {\n  _stack: Array<PrintableConfig> = [];\n  configure(\n    enabled: boolean,\n    type: (typeof ChainFormatter)[keyof typeof ChainFormatter],\n    {\n      callerName,\n      filepath,\n    }: {\n      callerName?: string;\n      filepath?: string;\n    },\n  ) {\n    if (!enabled) return () => {};\n    return (\n      content: OptionsAndDescriptors,\n      index?: number | null,\n      envName?: string | null,\n    ) => {\n      this._stack.push({\n        type,\n        callerName,\n        filepath,\n        content,\n        index,\n        envName,\n      });\n    };\n  }\n  static *format(config: PrintableConfig): Handler<string> {\n    let title = Formatter.title(\n      config.type,\n      config.callerName,\n      config.filepath,\n    );\n    const loc = Formatter.loc(config.index, config.envName);\n    if (loc) title += ` ${loc}`;\n    const content = yield* Formatter.optionsAndDescriptors(config.content);\n    return `${title}\\n${content}`;\n  }\n\n  *output(): Handler<string> {\n    if (this._stack.length === 0) return \"\";\n    const configs = yield* gensync.all(\n      this._stack.map(s => ConfigPrinter.format(s)),\n    );\n    return configs.join(\"\\n\\n\");\n  }\n}\n","/* eslint-disable @typescript-eslint/no-use-before-define */\n\nimport path from \"path\";\nimport buildDebug from \"debug\";\nimport type { Handler } from \"gensync\";\nimport { validate } from \"./validation/options.ts\";\nimport type {\n  ValidatedOptions,\n  IgnoreList,\n  ConfigApplicableTest,\n  BabelrcSearch,\n  CallerMetadata,\n  IgnoreItem,\n} from \"./validation/options.ts\";\nimport pathPatternToRegex from \"./pattern-to-regex.ts\";\nimport { ConfigPrinter, ChainFormatter } from \"./printer.ts\";\nimport type { ReadonlyDeepArray } from \"./helpers/deep-array.ts\";\n\nimport { endHiddenCallStack } from \"../errors/rewrite-stack-trace.ts\";\nimport ConfigError from \"../errors/config-error.ts\";\nimport type { PluginAPI, PresetAPI } from \"./helpers/config-api.ts\";\n\nconst debug = buildDebug(\"babel:config:config-chain\");\n\nimport {\n  findPackageData,\n  findRelativeConfig,\n  findRootConfig,\n  loadConfig,\n} from \"./files/index.ts\";\nimport type { ConfigFile, IgnoreFile, FilePackageData } from \"./files/index.ts\";\n\nimport { makeWeakCacheSync, makeStrongCacheSync } from \"./caching.ts\";\n\nimport {\n  createCachedDescriptors,\n  createUncachedDescriptors,\n} from \"./config-descriptors.ts\";\nimport type {\n  UnloadedDescriptor,\n  OptionsAndDescriptors,\n  ValidatedFile,\n} from \"./config-descriptors.ts\";\n\nexport type ConfigChain = {\n  plugins: Array<UnloadedDescriptor<PluginAPI>>;\n  presets: Array<UnloadedDescriptor<PresetAPI>>;\n  options: Array<ValidatedOptions>;\n  files: Set<string>;\n};\n\nexport type PresetInstance = {\n  options: ValidatedOptions;\n  alias: string;\n  dirname: string;\n  externalDependencies: ReadonlyDeepArray<string>;\n};\n\nexport type ConfigContext = {\n  filename: string | undefined;\n  cwd: string;\n  root: string;\n  envName: string;\n  caller: CallerMetadata | undefined;\n  showConfig: boolean;\n};\n\n/**\n * Build a config chain for a given preset.\n */\nexport function* buildPresetChain(\n  arg: PresetInstance,\n  context: any,\n): Handler<ConfigChain | null> {\n  const chain = yield* buildPresetChainWalker(arg, context);\n  if (!chain) return null;\n\n  return {\n    plugins: dedupDescriptors(chain.plugins),\n    presets: dedupDescriptors(chain.presets),\n    options: chain.options.map(o => normalizeOptions(o)),\n    files: new Set(),\n  };\n}\n\nexport const buildPresetChainWalker = makeChainWalker<PresetInstance>({\n  root: preset => loadPresetDescriptors(preset),\n  env: (preset, envName) => loadPresetEnvDescriptors(preset)(envName),\n  overrides: (preset, index) => loadPresetOverridesDescriptors(preset)(index),\n  overridesEnv: (preset, index, envName) =>\n    loadPresetOverridesEnvDescriptors(preset)(index)(envName),\n  createLogger: () => () => {}, // Currently we don't support logging how preset is expanded\n});\nconst loadPresetDescriptors = makeWeakCacheSync((preset: PresetInstance) =>\n  buildRootDescriptors(preset, preset.alias, createUncachedDescriptors),\n);\nconst loadPresetEnvDescriptors = makeWeakCacheSync((preset: PresetInstance) =>\n  makeStrongCacheSync((envName: string) =>\n    buildEnvDescriptors(\n      preset,\n      preset.alias,\n      createUncachedDescriptors,\n      envName,\n    ),\n  ),\n);\nconst loadPresetOverridesDescriptors = makeWeakCacheSync(\n  (preset: PresetInstance) =>\n    makeStrongCacheSync((index: number) =>\n      buildOverrideDescriptors(\n        preset,\n        preset.alias,\n        createUncachedDescriptors,\n        index,\n      ),\n    ),\n);\nconst loadPresetOverridesEnvDescriptors = makeWeakCacheSync(\n  (preset: PresetInstance) =>\n    makeStrongCacheSync((index: number) =>\n      makeStrongCacheSync((envName: string) =>\n        buildOverrideEnvDescriptors(\n          preset,\n          preset.alias,\n          createUncachedDescriptors,\n          index,\n          envName,\n        ),\n      ),\n    ),\n);\n\nexport type FileHandling = \"transpile\" | \"ignored\" | \"unsupported\";\nexport type RootConfigChain = ConfigChain & {\n  babelrc: ConfigFile | void;\n  config: ConfigFile | void;\n  ignore: IgnoreFile | void;\n  fileHandling: FileHandling;\n  files: Set<string>;\n};\n\n/**\n * Build a config chain for Babel's full root configuration.\n */\nexport function* buildRootChain(\n  opts: ValidatedOptions,\n  context: ConfigContext,\n): Handler<RootConfigChain | null> {\n  let configReport, babelRcReport;\n  const programmaticLogger = new ConfigPrinter();\n  const programmaticChain = yield* loadProgrammaticChain(\n    {\n      options: opts,\n      dirname: context.cwd,\n    },\n    context,\n    undefined,\n    programmaticLogger,\n  );\n  if (!programmaticChain) return null;\n  const programmaticReport = yield* programmaticLogger.output();\n\n  let configFile;\n  if (typeof opts.configFile === \"string\") {\n    configFile = yield* loadConfig(\n      opts.configFile,\n      context.cwd,\n      context.envName,\n      context.caller,\n    );\n  } else if (opts.configFile !== false) {\n    configFile = yield* findRootConfig(\n      context.root,\n      context.envName,\n      context.caller,\n    );\n  }\n\n  let { babelrc, babelrcRoots } = opts;\n  let babelrcRootsDirectory = context.cwd;\n\n  const configFileChain = emptyChain();\n  const configFileLogger = new ConfigPrinter();\n  if (configFile) {\n    const validatedFile = validateConfigFile(configFile);\n    const result = yield* loadFileChain(\n      validatedFile,\n      context,\n      undefined,\n      configFileLogger,\n    );\n    if (!result) return null;\n    configReport = yield* configFileLogger.output();\n\n    // Allow config files to toggle `.babelrc` resolution on and off and\n    // specify where the roots are.\n    if (babelrc === undefined) {\n      babelrc = validatedFile.options.babelrc;\n    }\n    if (babelrcRoots === undefined) {\n      babelrcRootsDirectory = validatedFile.dirname;\n      babelrcRoots = validatedFile.options.babelrcRoots;\n    }\n\n    mergeChain(configFileChain, result);\n  }\n\n  let ignoreFile, babelrcFile;\n  let isIgnored = false;\n  const fileChain = emptyChain();\n  // resolve all .babelrc files\n  if (\n    (babelrc === true || babelrc === undefined) &&\n    typeof context.filename === \"string\"\n  ) {\n    const pkgData = yield* findPackageData(context.filename);\n\n    if (\n      pkgData &&\n      babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory)\n    ) {\n      ({ ignore: ignoreFile, config: babelrcFile } = yield* findRelativeConfig(\n        pkgData,\n        context.envName,\n        context.caller,\n      ));\n\n      if (ignoreFile) {\n        fileChain.files.add(ignoreFile.filepath);\n      }\n\n      if (\n        ignoreFile &&\n        shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)\n      ) {\n        isIgnored = true;\n      }\n\n      if (babelrcFile && !isIgnored) {\n        const validatedFile = validateBabelrcFile(babelrcFile);\n        const babelrcLogger = new ConfigPrinter();\n        const result = yield* loadFileChain(\n          validatedFile,\n          context,\n          undefined,\n          babelrcLogger,\n        );\n        if (!result) {\n          isIgnored = true;\n        } else {\n          babelRcReport = yield* babelrcLogger.output();\n          mergeChain(fileChain, result);\n        }\n      }\n\n      if (babelrcFile && isIgnored) {\n        fileChain.files.add(babelrcFile.filepath);\n      }\n    }\n  }\n\n  if (context.showConfig) {\n    console.log(\n      `Babel configs on \"${context.filename}\" (ascending priority):\\n` +\n        // print config by the order of ascending priority\n        [configReport, babelRcReport, programmaticReport]\n          .filter(x => !!x)\n          .join(\"\\n\\n\") +\n        \"\\n-----End Babel configs-----\",\n    );\n  }\n  // Insert file chain in front so programmatic options have priority\n  // over configuration file chain items.\n  const chain = mergeChain(\n    mergeChain(mergeChain(emptyChain(), configFileChain), fileChain),\n    programmaticChain,\n  );\n\n  return {\n    plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),\n    presets: isIgnored ? [] : dedupDescriptors(chain.presets),\n    options: isIgnored ? [] : chain.options.map(o => normalizeOptions(o)),\n    fileHandling: isIgnored ? \"ignored\" : \"transpile\",\n    ignore: ignoreFile || undefined,\n    babelrc: babelrcFile || undefined,\n    config: configFile || undefined,\n    files: chain.files,\n  };\n}\n\nfunction babelrcLoadEnabled(\n  context: ConfigContext,\n  pkgData: FilePackageData,\n  babelrcRoots: BabelrcSearch | undefined,\n  babelrcRootsDirectory: string,\n): boolean {\n  if (typeof babelrcRoots === \"boolean\") return babelrcRoots;\n\n  const absoluteRoot = context.root;\n\n  // Fast path to avoid having to match patterns if the babelrc is just\n  // loading in the standard root directory.\n  if (babelrcRoots === undefined) {\n    return pkgData.directories.includes(absoluteRoot);\n  }\n\n  let babelrcPatterns = babelrcRoots;\n  if (!Array.isArray(babelrcPatterns)) {\n    babelrcPatterns = [babelrcPatterns as IgnoreItem];\n  }\n  babelrcPatterns = babelrcPatterns.map(pat => {\n    return typeof pat === \"string\"\n      ? path.resolve(babelrcRootsDirectory, pat)\n      : pat;\n  });\n\n  // Fast path to avoid having to match patterns if the babelrc is just\n  // loading in the standard root directory.\n  if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {\n    return pkgData.directories.includes(absoluteRoot);\n  }\n\n  return babelrcPatterns.some(pat => {\n    if (typeof pat === \"string\") {\n      pat = pathPatternToRegex(pat, babelrcRootsDirectory);\n    }\n\n    return pkgData.directories.some(directory => {\n      return matchPattern(pat, babelrcRootsDirectory, directory, context);\n    });\n  });\n}\n\nconst validateConfigFile = makeWeakCacheSync(\n  (file: ConfigFile): ValidatedFile => ({\n    filepath: file.filepath,\n    dirname: file.dirname,\n    options: validate(\"configfile\", file.options, file.filepath),\n  }),\n);\n\nconst validateBabelrcFile = makeWeakCacheSync(\n  (file: ConfigFile): ValidatedFile => ({\n    filepath: file.filepath,\n    dirname: file.dirname,\n    options: validate(\"babelrcfile\", file.options, file.filepath),\n  }),\n);\n\nconst validateExtendFile = makeWeakCacheSync(\n  (file: ConfigFile): ValidatedFile => ({\n    filepath: file.filepath,\n    dirname: file.dirname,\n    options: validate(\"extendsfile\", file.options, file.filepath),\n  }),\n);\n\n/**\n * Build a config chain for just the programmatic options passed into Babel.\n */\nconst loadProgrammaticChain = makeChainWalker({\n  root: input => buildRootDescriptors(input, \"base\", createCachedDescriptors),\n  env: (input, envName) =>\n    buildEnvDescriptors(input, \"base\", createCachedDescriptors, envName),\n  overrides: (input, index) =>\n    buildOverrideDescriptors(input, \"base\", createCachedDescriptors, index),\n  overridesEnv: (input, index, envName) =>\n    buildOverrideEnvDescriptors(\n      input,\n      \"base\",\n      createCachedDescriptors,\n      index,\n      envName,\n    ),\n  createLogger: (input, context, baseLogger) =>\n    buildProgrammaticLogger(input, context, baseLogger),\n});\n\n/**\n * Build a config chain for a given file.\n */\nconst loadFileChainWalker = makeChainWalker<ValidatedFile>({\n  root: file => loadFileDescriptors(file),\n  env: (file, envName) => loadFileEnvDescriptors(file)(envName),\n  overrides: (file, index) => loadFileOverridesDescriptors(file)(index),\n  overridesEnv: (file, index, envName) =>\n    loadFileOverridesEnvDescriptors(file)(index)(envName),\n  createLogger: (file, context, baseLogger) =>\n    buildFileLogger(file.filepath, context, baseLogger),\n});\n\nfunction* loadFileChain(\n  input: ValidatedFile,\n  context: ConfigContext,\n  files: Set<ConfigFile>,\n  baseLogger: ConfigPrinter,\n) {\n  const chain = yield* loadFileChainWalker(input, context, files, baseLogger);\n  chain?.files.add(input.filepath);\n\n  return chain;\n}\n\nconst loadFileDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n  buildRootDescriptors(file, file.filepath, createUncachedDescriptors),\n);\nconst loadFileEnvDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n  makeStrongCacheSync((envName: string) =>\n    buildEnvDescriptors(\n      file,\n      file.filepath,\n      createUncachedDescriptors,\n      envName,\n    ),\n  ),\n);\nconst loadFileOverridesDescriptors = makeWeakCacheSync((file: ValidatedFile) =>\n  makeStrongCacheSync((index: number) =>\n    buildOverrideDescriptors(\n      file,\n      file.filepath,\n      createUncachedDescriptors,\n      index,\n    ),\n  ),\n);\nconst loadFileOverridesEnvDescriptors = makeWeakCacheSync(\n  (file: ValidatedFile) =>\n    makeStrongCacheSync((index: number) =>\n      makeStrongCacheSync((envName: string) =>\n        buildOverrideEnvDescriptors(\n          file,\n          file.filepath,\n          createUncachedDescriptors,\n          index,\n          envName,\n        ),\n      ),\n    ),\n);\n\nfunction buildFileLogger(\n  filepath: string,\n  context: ConfigContext,\n  baseLogger: ConfigPrinter | void,\n) {\n  if (!baseLogger) {\n    return () => {};\n  }\n  return baseLogger.configure(context.showConfig, ChainFormatter.Config, {\n    filepath,\n  });\n}\n\nfunction buildRootDescriptors(\n  { dirname, options }: Partial<ValidatedFile>,\n  alias: string,\n  descriptors: (\n    dirname: string,\n    options: ValidatedOptions,\n    alias: string,\n  ) => OptionsAndDescriptors,\n) {\n  return descriptors(dirname, options, alias);\n}\n\nfunction buildProgrammaticLogger(\n  _: unknown,\n  context: ConfigContext,\n  baseLogger: ConfigPrinter | void,\n) {\n  if (!baseLogger) {\n    return () => {};\n  }\n  return baseLogger.configure(context.showConfig, ChainFormatter.Programmatic, {\n    callerName: context.caller?.name,\n  });\n}\n\nfunction buildEnvDescriptors(\n  { dirname, options }: Partial<ValidatedFile>,\n  alias: string,\n  descriptors: (\n    dirname: string,\n    options: ValidatedOptions,\n    alias: string,\n  ) => OptionsAndDescriptors,\n  envName: string,\n) {\n  const opts = options.env?.[envName];\n  return opts ? descriptors(dirname, opts, `${alias}.env[\"${envName}\"]`) : null;\n}\n\nfunction buildOverrideDescriptors(\n  { dirname, options }: Partial<ValidatedFile>,\n  alias: string,\n  descriptors: (\n    dirname: string,\n    options: ValidatedOptions,\n    alias: string,\n  ) => OptionsAndDescriptors,\n  index: number,\n) {\n  const opts = options.overrides?.[index];\n  if (!opts) throw new Error(\"Assertion failure - missing override\");\n\n  return descriptors(dirname, opts, `${alias}.overrides[${index}]`);\n}\n\nfunction buildOverrideEnvDescriptors(\n  { dirname, options }: Partial<ValidatedFile>,\n  alias: string,\n  descriptors: (\n    dirname: string,\n    options: ValidatedOptions,\n    alias: string,\n  ) => OptionsAndDescriptors,\n  index: number,\n  envName: string,\n) {\n  const override = options.overrides?.[index];\n  if (!override) throw new Error(\"Assertion failure - missing override\");\n\n  const opts = override.env?.[envName];\n  return opts\n    ? descriptors(\n        dirname,\n        opts,\n        `${alias}.overrides[${index}].env[\"${envName}\"]`,\n      )\n    : null;\n}\n\nfunction makeChainWalker<\n  ArgT extends {\n    options: ValidatedOptions;\n    dirname: string;\n    filepath?: string;\n  },\n>({\n  root,\n  env,\n  overrides,\n  overridesEnv,\n  createLogger,\n}: {\n  root: (configEntry: ArgT) => OptionsAndDescriptors;\n  env: (configEntry: ArgT, env: string) => OptionsAndDescriptors | null;\n  overrides: (configEntry: ArgT, index: number) => OptionsAndDescriptors;\n  overridesEnv: (\n    configEntry: ArgT,\n    index: number,\n    env: string,\n  ) => OptionsAndDescriptors | null;\n  createLogger: (\n    configEntry: ArgT,\n    context: ConfigContext,\n    printer: ConfigPrinter | void,\n  ) => (\n    opts: OptionsAndDescriptors,\n    index?: number | null,\n    env?: string | null,\n  ) => void;\n}): (\n  configEntry: ArgT,\n  context: ConfigContext,\n  files?: Set<ConfigFile>,\n  baseLogger?: ConfigPrinter,\n) => Handler<ConfigChain | null> {\n  return function* chainWalker(input, context, files = new Set(), baseLogger) {\n    const { dirname } = input;\n\n    const flattenedConfigs: Array<{\n      config: OptionsAndDescriptors;\n      index: number | undefined | null;\n      envName: string | undefined | null;\n    }> = [];\n\n    const rootOpts = root(input);\n    if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {\n      flattenedConfigs.push({\n        config: rootOpts,\n        envName: undefined,\n        index: undefined,\n      });\n\n      const envOpts = env(input, context.envName);\n      if (\n        envOpts &&\n        configIsApplicable(envOpts, dirname, context, input.filepath)\n      ) {\n        flattenedConfigs.push({\n          config: envOpts,\n          envName: context.envName,\n          index: undefined,\n        });\n      }\n\n      (rootOpts.options.overrides || []).forEach((_, index) => {\n        const overrideOps = overrides(input, index);\n        if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {\n          flattenedConfigs.push({\n            config: overrideOps,\n            index,\n            envName: undefined,\n          });\n\n          const overrideEnvOpts = overridesEnv(input, index, context.envName);\n          if (\n            overrideEnvOpts &&\n            configIsApplicable(\n              overrideEnvOpts,\n              dirname,\n              context,\n              input.filepath,\n            )\n          ) {\n            flattenedConfigs.push({\n              config: overrideEnvOpts,\n              index,\n              envName: context.envName,\n            });\n          }\n        }\n      });\n    }\n\n    // Process 'ignore' and 'only' before 'extends' items are processed so\n    // that we don't do extra work loading extended configs if a file is\n    // ignored.\n    if (\n      flattenedConfigs.some(\n        ({\n          config: {\n            options: { ignore, only },\n          },\n        }) => shouldIgnore(context, ignore, only, dirname),\n      )\n    ) {\n      return null;\n    }\n\n    const chain = emptyChain();\n    const logger = createLogger(input, context, baseLogger);\n\n    for (const { config, index, envName } of flattenedConfigs) {\n      if (\n        !(yield* mergeExtendsChain(\n          chain,\n          config.options,\n          dirname,\n          context,\n          files,\n          baseLogger,\n        ))\n      ) {\n        return null;\n      }\n\n      logger(config, index, envName);\n      yield* mergeChainOpts(chain, config);\n    }\n    return chain;\n  };\n}\n\nfunction* mergeExtendsChain(\n  chain: ConfigChain,\n  opts: ValidatedOptions,\n  dirname: string,\n  context: ConfigContext,\n  files: Set<ConfigFile>,\n  baseLogger?: ConfigPrinter,\n): Handler<boolean> {\n  if (opts.extends === undefined) return true;\n\n  const file = yield* loadConfig(\n    opts.extends,\n    dirname,\n    context.envName,\n    context.caller,\n  );\n\n  if (files.has(file)) {\n    throw new Error(\n      `Configuration cycle detected loading ${file.filepath}.\\n` +\n        `File already loaded following the config chain:\\n` +\n        Array.from(files, file => ` - ${file.filepath}`).join(\"\\n\"),\n    );\n  }\n\n  files.add(file);\n  const fileChain = yield* loadFileChain(\n    validateExtendFile(file),\n    context,\n    files,\n    baseLogger,\n  );\n  files.delete(file);\n\n  if (!fileChain) return false;\n\n  mergeChain(chain, fileChain);\n\n  return true;\n}\n\nfunction mergeChain(target: ConfigChain, source: ConfigChain): ConfigChain {\n  target.options.push(...source.options);\n  target.plugins.push(...source.plugins);\n  target.presets.push(...source.presets);\n  for (const file of source.files) {\n    target.files.add(file);\n  }\n\n  return target;\n}\n\nfunction* mergeChainOpts(\n  target: ConfigChain,\n  { options, plugins, presets }: OptionsAndDescriptors,\n): Handler<ConfigChain> {\n  target.options.push(options);\n  target.plugins.push(...(yield* plugins()));\n  target.presets.push(...(yield* presets()));\n\n  return target;\n}\n\nfunction emptyChain(): ConfigChain {\n  return {\n    options: [],\n    presets: [],\n    plugins: [],\n    files: new Set(),\n  };\n}\n\nfunction normalizeOptions(opts: ValidatedOptions): ValidatedOptions {\n  const options = {\n    ...opts,\n  };\n  delete options.extends;\n  delete options.env;\n  delete options.overrides;\n  delete options.plugins;\n  delete options.presets;\n  delete options.passPerPreset;\n  delete options.ignore;\n  delete options.only;\n  delete options.test;\n  delete options.include;\n  delete options.exclude;\n\n  // \"sourceMap\" is just aliased to sourceMap, so copy it over as\n  // we merge the options together.\n  if (Object.hasOwn(options, \"sourceMap\")) {\n    options.sourceMaps = options.sourceMap;\n    delete options.sourceMap;\n  }\n  return options;\n}\n\nfunction dedupDescriptors<API>(\n  items: Array<UnloadedDescriptor<API>>,\n): Array<UnloadedDescriptor<API>> {\n  const map: Map<\n    Function,\n    Map<string | void, { value: UnloadedDescriptor<API> }>\n  > = new Map();\n\n  const descriptors = [];\n\n  for (const item of items) {\n    if (typeof item.value === \"function\") {\n      const fnKey = item.value;\n      let nameMap = map.get(fnKey);\n      if (!nameMap) {\n        nameMap = new Map();\n        map.set(fnKey, nameMap);\n      }\n      let desc = nameMap.get(item.name);\n      if (!desc) {\n        desc = { value: item };\n        descriptors.push(desc);\n\n        // Treat passPerPreset presets as unique, skipping them\n        // in the merge processing steps.\n        if (!item.ownPass) nameMap.set(item.name, desc);\n      } else {\n        desc.value = item;\n      }\n    } else {\n      descriptors.push({ value: item });\n    }\n  }\n\n  return descriptors.reduce((acc, desc) => {\n    acc.push(desc.value);\n    return acc;\n  }, []);\n}\n\nfunction configIsApplicable(\n  { options }: OptionsAndDescriptors,\n  dirname: string,\n  context: ConfigContext,\n  configName: string,\n): boolean {\n  return (\n    (options.test === undefined ||\n      configFieldIsApplicable(context, options.test, dirname, configName)) &&\n    (options.include === undefined ||\n      configFieldIsApplicable(context, options.include, dirname, configName)) &&\n    (options.exclude === undefined ||\n      !configFieldIsApplicable(context, options.exclude, dirname, configName))\n  );\n}\n\nfunction configFieldIsApplicable(\n  context: ConfigContext,\n  test: ConfigApplicableTest,\n  dirname: string,\n  configName: string,\n): boolean {\n  const patterns = Array.isArray(test) ? test : [test];\n\n  return matchesPatterns(context, patterns, dirname, configName);\n}\n\n/**\n * Print the ignoreList-values in a more helpful way than the default.\n */\nfunction ignoreListReplacer(\n  _key: string,\n  value: IgnoreList | IgnoreItem,\n): IgnoreList | IgnoreItem | string {\n  if (value instanceof RegExp) {\n    return String(value);\n  }\n\n  return value;\n}\n\n/**\n * Tests if a filename should be ignored based on \"ignore\" and \"only\" options.\n */\nfunction shouldIgnore(\n  context: ConfigContext,\n  ignore: IgnoreList | undefined | null,\n  only: IgnoreList | undefined | null,\n  dirname: string,\n): boolean {\n  if (ignore && matchesPatterns(context, ignore, dirname)) {\n    const message = `No config is applied to \"${\n      context.filename ?? \"(unknown)\"\n    }\" because it matches one of \\`ignore: ${JSON.stringify(\n      ignore,\n      ignoreListReplacer,\n    )}\\` from \"${dirname}\"`;\n    debug(message);\n    if (context.showConfig) {\n      console.log(message);\n    }\n    return true;\n  }\n\n  if (only && !matchesPatterns(context, only, dirname)) {\n    const message = `No config is applied to \"${\n      context.filename ?? \"(unknown)\"\n    }\" because it fails to match one of \\`only: ${JSON.stringify(\n      only,\n      ignoreListReplacer,\n    )}\\` from \"${dirname}\"`;\n    debug(message);\n    if (context.showConfig) {\n      console.log(message);\n    }\n    return true;\n  }\n\n  return false;\n}\n\n/**\n * Returns result of calling function with filename if pattern is a function.\n * Otherwise returns result of matching pattern Regex with filename.\n */\nfunction matchesPatterns(\n  context: ConfigContext,\n  patterns: IgnoreList,\n  dirname: string,\n  configName?: string,\n): boolean {\n  return patterns.some(pattern =>\n    matchPattern(pattern, dirname, context.filename, context, configName),\n  );\n}\n\nfunction matchPattern(\n  pattern: IgnoreItem,\n  dirname: string,\n  pathToTest: string | undefined,\n  context: ConfigContext,\n  configName?: string,\n): boolean {\n  if (typeof pattern === \"function\") {\n    return !!endHiddenCallStack(pattern)(pathToTest, {\n      dirname,\n      envName: context.envName,\n      caller: context.caller,\n    });\n  }\n\n  if (typeof pathToTest !== \"string\") {\n    throw new ConfigError(\n      `Configuration contains string/RegExp pattern, but no filename was passed to Babel`,\n      configName,\n    );\n  }\n\n  if (typeof pattern === \"string\") {\n    pattern = pathPatternToRegex(pattern, dirname);\n  }\n  return pattern.test(pathToTest);\n}\n","import {\n  assertString,\n  assertFunction,\n  assertObject,\n  msg,\n} from \"./option-assertions.ts\";\n\nimport type {\n  ValidatorSet,\n  Validator,\n  OptionPath,\n  RootPath,\n} from \"./option-assertions.ts\";\nimport type { ParserOptions } from \"@babel/parser\";\nimport type { Visitor } from \"@babel/traverse\";\nimport type { ValidatedOptions } from \"./options.ts\";\nimport type { File, PluginAPI, PluginPass } from \"../../index.ts\";\n\n// Note: The casts here are just meant to be static assertions to make sure\n// that the assertion functions actually assert that the value's type matches\n// the declared types.\nconst VALIDATORS: ValidatorSet = {\n  name: assertString as Validator<PluginObject[\"name\"]>,\n  manipulateOptions: assertFunction as Validator<\n    PluginObject[\"manipulateOptions\"]\n  >,\n  pre: assertFunction as Validator<PluginObject[\"pre\"]>,\n  post: assertFunction as Validator<PluginObject[\"post\"]>,\n  inherits: assertFunction as Validator<PluginObject[\"inherits\"]>,\n  visitor: assertVisitorMap as Validator<PluginObject[\"visitor\"]>,\n\n  parserOverride: assertFunction as Validator<PluginObject[\"parserOverride\"]>,\n  generatorOverride: assertFunction as Validator<\n    PluginObject[\"generatorOverride\"]\n  >,\n};\n\nfunction assertVisitorMap(loc: OptionPath, value: unknown): Visitor {\n  const obj = assertObject(loc, value);\n  if (obj) {\n    Object.keys(obj).forEach(prop => {\n      if (prop !== \"_exploded\" && prop !== \"_verified\") {\n        assertVisitorHandler(prop, obj[prop]);\n      }\n    });\n\n    if (obj.enter || obj.exit) {\n      throw new Error(\n        `${msg(\n          loc,\n        )} cannot contain catch-all \"enter\" or \"exit\" handlers. Please target individual nodes.`,\n      );\n    }\n  }\n  return obj as Visitor;\n}\n\nfunction assertVisitorHandler(\n  key: string,\n  value: unknown,\n): asserts value is VisitorHandler {\n  if (value && typeof value === \"object\") {\n    Object.keys(value).forEach((handler: string) => {\n      if (handler !== \"enter\" && handler !== \"exit\") {\n        throw new Error(\n          `.visitor[\"${key}\"] may only have .enter and/or .exit handlers.`,\n        );\n      }\n    });\n  } else if (typeof value !== \"function\") {\n    throw new Error(`.visitor[\"${key}\"] must be a function`);\n  }\n}\n\ntype VisitorHandler =\n  | Function\n  | {\n      enter?: Function;\n      exit?: Function;\n    };\n\nexport type PluginObject<S extends PluginPass = PluginPass> = {\n  name?: string;\n  manipulateOptions?: (\n    options: ValidatedOptions,\n    parserOpts: ParserOptions,\n  ) => void;\n  pre?: (this: S, file: File) => void | Promise<void>;\n  post?: (this: S, file: File) => void | Promise<void>;\n  inherits?: (\n    api: PluginAPI,\n    options: unknown,\n    dirname: string,\n  ) => PluginObject;\n  visitor?: Visitor<S>;\n  parserOverride?: Function;\n  generatorOverride?: Function;\n};\n\nexport function validatePluginObject(obj: {\n  [key: string]: unknown;\n}): PluginObject {\n  const rootPath: RootPath = {\n    type: \"root\",\n    source: \"plugin\",\n  };\n  Object.keys(obj).forEach((key: string) => {\n    const validator = VALIDATORS[key];\n\n    if (validator) {\n      const optLoc: OptionPath = {\n        type: \"option\",\n        name: key,\n        parent: rootPath,\n      };\n      validator(optLoc, obj[key]);\n    } else {\n      const invalidPluginPropertyError = new Error(\n        `.${key} is not a valid Plugin property`,\n      );\n      // @ts-expect-error todo(flow->ts) consider adding BabelConfigError with code field\n      invalidPluginPropertyError.code = \"BABEL_UNKNOWN_PLUGIN_PROPERTY\";\n      throw invalidPluginPropertyError;\n    }\n  });\n\n  return obj as any;\n}\n","import semver from \"semver\";\nimport type { Targets } from \"@babel/helper-compilation-targets\";\n\nimport { version as coreVersion } from \"../../index.ts\";\nimport { assertSimpleType } from \"../caching.ts\";\nimport type {\n  CacheConfigurator,\n  SimpleCacheConfigurator,\n  SimpleType,\n} from \"../caching.ts\";\n\nimport type { AssumptionName, CallerMetadata } from \"../validation/options.ts\";\n\nimport type * as Context from \"../cache-contexts\";\n\ntype EnvFunction = {\n  (): string;\n  <T>(extractor: (babelEnv: string) => T): T;\n  (envVar: string): boolean;\n  (envVars: Array<string>): boolean;\n};\n\ntype CallerFactory = {\n  <T extends SimpleType>(\n    extractor: (callerMetadata: CallerMetadata | undefined) => T,\n  ): T;\n  (\n    extractor: (callerMetadata: CallerMetadata | undefined) => unknown,\n  ): SimpleType;\n};\ntype TargetsFunction = () => Targets;\ntype AssumptionFunction = (name: AssumptionName) => boolean | undefined;\n\nexport type ConfigAPI = {\n  version: string;\n  cache: SimpleCacheConfigurator;\n  env: EnvFunction;\n  async: () => boolean;\n  assertVersion: typeof assertVersion;\n  caller?: CallerFactory;\n};\n\nexport type PresetAPI = {\n  targets: TargetsFunction;\n  addExternalDependency: (ref: string) => void;\n} & ConfigAPI;\n\nexport type PluginAPI = {\n  assumption: AssumptionFunction;\n} & PresetAPI;\n\nexport function makeConfigAPI<SideChannel extends Context.SimpleConfig>(\n  cache: CacheConfigurator<SideChannel>,\n): ConfigAPI {\n  // TODO(@nicolo-ribaudo): If we remove the explicit type from `value`\n  // and the `as any` type cast, TypeScript crashes in an infinite\n  // recursion. After upgrading to TS4.7 and finishing the noImplicitAny\n  // PR, we should check if it still crashes and report it to the TS team.\n  const env: EnvFunction = ((\n    value: string | string[] | (<T>(babelEnv: string) => T),\n  ) =>\n    cache.using(data => {\n      if (value === undefined) return data.envName;\n      if (typeof value === \"function\") {\n        return assertSimpleType(value(data.envName));\n      }\n      return (Array.isArray(value) ? value : [value]).some(entry => {\n        if (typeof entry !== \"string\") {\n          throw new Error(\"Unexpected non-string value\");\n        }\n        return entry === data.envName;\n      });\n    })) as any;\n\n  const caller = (\n    cb: (CallerMetadata: CallerMetadata | undefined) => SimpleType,\n  ) => cache.using(data => assertSimpleType(cb(data.caller)));\n\n  return {\n    version: coreVersion,\n    cache: cache.simple(),\n    // Expose \".env()\" so people can easily get the same env that we expose using the \"env\" key.\n    env,\n    async: () => false,\n    caller,\n    assertVersion,\n  };\n}\n\nexport function makePresetAPI<SideChannel extends Context.SimplePreset>(\n  cache: CacheConfigurator<SideChannel>,\n  externalDependencies: Array<string>,\n): PresetAPI {\n  const targets = () =>\n    // We are using JSON.parse/JSON.stringify because it's only possible to cache\n    // primitive values. We can safely stringify the targets object because it\n    // only contains strings as its properties.\n    // Please make the Record and Tuple proposal happen!\n    JSON.parse(cache.using(data => JSON.stringify(data.targets)));\n\n  const addExternalDependency = (ref: string) => {\n    externalDependencies.push(ref);\n  };\n\n  return { ...makeConfigAPI(cache), targets, addExternalDependency };\n}\n\nexport function makePluginAPI<SideChannel extends Context.SimplePlugin>(\n  cache: CacheConfigurator<SideChannel>,\n  externalDependencies: Array<string>,\n): PluginAPI {\n  const assumption = (name: string) =>\n    cache.using(data => data.assumptions[name]);\n\n  return { ...makePresetAPI(cache, externalDependencies), assumption };\n}\n\nfunction assertVersion(range: string | number): void {\n  if (typeof range === \"number\") {\n    if (!Number.isInteger(range)) {\n      throw new Error(\"Expected string or integer value.\");\n    }\n    range = `^${range}.0.0-0`;\n  }\n  if (typeof range !== \"string\") {\n    throw new Error(\"Expected string or integer value.\");\n  }\n\n  // We want \"*\" to also allow any pre-release, but we do not pass\n  // the includePrerelease option to semver.satisfies because we\n  // do not want ^7.0.0 to match 8.0.0-alpha.1.\n  if (range === \"*\" || semver.satisfies(coreVersion, range)) return;\n\n  const limit = Error.stackTraceLimit;\n\n  if (typeof limit === \"number\" && limit < 25) {\n    // Bump up the limit if needed so that users are more likely\n    // to be able to see what is calling Babel.\n    Error.stackTraceLimit = 25;\n  }\n\n  const err = new Error(\n    `Requires Babel \"${range}\", but was loaded with \"${coreVersion}\". ` +\n      `If you are sure you have a compatible version of @babel/core, ` +\n      `it is likely that something in your build process is loading the ` +\n      `wrong version. Inspect the stack trace of this error to look for ` +\n      `the first entry that doesn't mention \"@babel/core\" or \"babel-core\" ` +\n      `to see what is calling Babel.`,\n  );\n\n  if (typeof limit === \"number\") {\n    Error.stackTraceLimit = limit;\n  }\n\n  throw Object.assign(err, {\n    code: \"BABEL_VERSION_UNSUPPORTED\",\n    version: coreVersion,\n    range,\n  });\n}\n","import path from \"path\";\nimport type { Handler } from \"gensync\";\nimport Plugin from \"./plugin.ts\";\nimport { mergeOptions } from \"./util.ts\";\nimport { createItemFromDescriptor } from \"./item.ts\";\nimport { buildRootChain } from \"./config-chain.ts\";\nimport type { ConfigContext, FileHandling } from \"./config-chain.ts\";\nimport { getEnv } from \"./helpers/environment.ts\";\nimport { validate } from \"./validation/options.ts\";\n\nimport type {\n  ValidatedOptions,\n  NormalizedOptions,\n  RootMode,\n  InputOptions,\n} from \"./validation/options.ts\";\n\nimport {\n  findConfigUpwards,\n  resolveShowConfigPath,\n  ROOT_CONFIG_FILENAMES,\n} from \"./files/index.ts\";\nimport type { ConfigFile, IgnoreFile } from \"./files/index.ts\";\nimport { resolveTargets } from \"./resolve-targets.ts\";\n\nfunction resolveRootMode(rootDir: string, rootMode: RootMode): string {\n  switch (rootMode) {\n    case \"root\":\n      return rootDir;\n\n    case \"upward-optional\": {\n      const upwardRootDir = findConfigUpwards(rootDir);\n      return upwardRootDir === null ? rootDir : upwardRootDir;\n    }\n\n    case \"upward\": {\n      const upwardRootDir = findConfigUpwards(rootDir);\n      if (upwardRootDir !== null) return upwardRootDir;\n\n      throw Object.assign(\n        new Error(\n          `Babel was run with rootMode:\"upward\" but a root could not ` +\n            `be found when searching upward from \"${rootDir}\".\\n` +\n            `One of the following config files must be in the directory tree: ` +\n            `\"${ROOT_CONFIG_FILENAMES.join(\", \")}\".`,\n        ) as any,\n        {\n          code: \"BABEL_ROOT_NOT_FOUND\",\n          dirname: rootDir,\n        },\n      );\n    }\n    default:\n      throw new Error(`Assertion failure - unknown rootMode value.`);\n  }\n}\n\nexport type PrivPartialConfig = {\n  showIgnoredFiles?: boolean;\n  options: NormalizedOptions;\n  context: ConfigContext;\n  babelrc: ConfigFile | void;\n  config: ConfigFile | void;\n  ignore: IgnoreFile | void;\n  fileHandling: FileHandling;\n  files: Set<string>;\n};\n\nexport default function* loadPrivatePartialConfig(\n  inputOpts: InputOptions,\n): Handler<PrivPartialConfig | null> {\n  if (\n    inputOpts != null &&\n    (typeof inputOpts !== \"object\" || Array.isArray(inputOpts))\n  ) {\n    throw new Error(\"Babel options must be an object, null, or undefined\");\n  }\n\n  const args = inputOpts ? validate(\"arguments\", inputOpts) : {};\n\n  const {\n    envName = getEnv(),\n    cwd = \".\",\n    root: rootDir = \".\",\n    rootMode = \"root\",\n    caller,\n    cloneInputAst = true,\n  } = args;\n  const absoluteCwd = path.resolve(cwd);\n  const absoluteRootDir = resolveRootMode(\n    path.resolve(absoluteCwd, rootDir),\n    rootMode,\n  );\n\n  const filename =\n    typeof args.filename === \"string\"\n      ? path.resolve(cwd, args.filename)\n      : undefined;\n\n  const showConfigPath = yield* resolveShowConfigPath(absoluteCwd);\n\n  const context: ConfigContext = {\n    filename,\n    cwd: absoluteCwd,\n    root: absoluteRootDir,\n    envName,\n    caller,\n    showConfig: showConfigPath === filename,\n  };\n\n  const configChain = yield* buildRootChain(args, context);\n  if (!configChain) return null;\n\n  const merged: ValidatedOptions = {\n    assumptions: {},\n  };\n  configChain.options.forEach(opts => {\n    mergeOptions(merged as any, opts);\n  });\n\n  const options: NormalizedOptions = {\n    ...merged,\n    targets: resolveTargets(merged, absoluteRootDir),\n\n    // Tack the passes onto the object itself so that, if this object is\n    // passed back to Babel a second time, it will be in the right structure\n    // to not change behavior.\n    cloneInputAst,\n    babelrc: false,\n    configFile: false,\n    browserslistConfigFile: false,\n    passPerPreset: false,\n    envName: context.envName,\n    cwd: context.cwd,\n    root: context.root,\n    rootMode: \"root\",\n    filename:\n      typeof context.filename === \"string\" ? context.filename : undefined,\n\n    plugins: configChain.plugins.map(descriptor =>\n      createItemFromDescriptor(descriptor),\n    ),\n    presets: configChain.presets.map(descriptor =>\n      createItemFromDescriptor(descriptor),\n    ),\n  };\n\n  return {\n    options,\n    context,\n    fileHandling: configChain.fileHandling,\n    ignore: configChain.ignore,\n    babelrc: configChain.babelrc,\n    config: configChain.config,\n    files: configChain.files,\n  };\n}\n\nexport function* loadPartialConfig(\n  opts?: InputOptions,\n): Handler<PartialConfig | null> {\n  let showIgnoredFiles = false;\n  // We only extract showIgnoredFiles if opts is an object, so that\n  // loadPrivatePartialConfig can throw the appropriate error if it's not.\n  if (typeof opts === \"object\" && opts !== null && !Array.isArray(opts)) {\n    ({ showIgnoredFiles, ...opts } = opts);\n  }\n\n  const result: PrivPartialConfig | undefined | null =\n    yield* loadPrivatePartialConfig(opts);\n  if (!result) return null;\n\n  const { options, babelrc, ignore, config, fileHandling, files } = result;\n\n  if (fileHandling === \"ignored\" && !showIgnoredFiles) {\n    return null;\n  }\n\n  (options.plugins || []).forEach(item => {\n    // @ts-expect-error todo(flow->ts): better type annotation for `item.value`\n    if (item.value instanceof Plugin) {\n      throw new Error(\n        \"Passing cached plugin instances is not supported in \" +\n          \"babel.loadPartialConfig()\",\n      );\n    }\n  });\n\n  return new PartialConfig(\n    options,\n    babelrc ? babelrc.filepath : undefined,\n    ignore ? ignore.filepath : undefined,\n    config ? config.filepath : undefined,\n    fileHandling,\n    files,\n  );\n}\n\nexport type { PartialConfig };\n\nclass PartialConfig {\n  /**\n   * These properties are public, so any changes to them should be considered\n   * a breaking change to Babel's API.\n   */\n  options: NormalizedOptions;\n  babelrc: string | void;\n  babelignore: string | void;\n  config: string | void;\n  fileHandling: FileHandling;\n  files: Set<string>;\n\n  constructor(\n    options: NormalizedOptions,\n    babelrc: string | void,\n    ignore: string | void,\n    config: string | void,\n    fileHandling: FileHandling,\n    files: Set<string>,\n  ) {\n    this.options = options;\n    this.babelignore = ignore;\n    this.babelrc = babelrc;\n    this.config = config;\n    this.fileHandling = fileHandling;\n    this.files = files;\n\n    // Freeze since this is a public API and it should be extremely obvious that\n    // reassigning properties on here does nothing.\n    Object.freeze(this);\n  }\n\n  /**\n   * Returns true if there is a config file in the filesystem for this config.\n   */\n  hasFilesystemConfig(): boolean {\n    return this.babelrc !== undefined || this.config !== undefined;\n  }\n}\nObject.freeze(PartialConfig.prototype);\n","import gensync, { type Handler } from \"gensync\";\nimport {\n  forwardAsync,\n  maybeAsync,\n  isThenable,\n} from \"../gensync-utils/async.ts\";\n\nimport { mergeOptions } from \"./util.ts\";\nimport * as context from \"../index.ts\";\nimport Plugin from \"./plugin.ts\";\nimport { getItemDescriptor } from \"./item.ts\";\nimport { buildPresetChain } from \"./config-chain.ts\";\nimport { finalize as freezeDeepArray } from \"./helpers/deep-array.ts\";\nimport type { DeepArray, ReadonlyDeepArray } from \"./helpers/deep-array.ts\";\nimport type {\n  ConfigContext,\n  ConfigChain,\n  PresetInstance,\n} from \"./config-chain.ts\";\nimport type { UnloadedDescriptor } from \"./config-descriptors.ts\";\nimport traverse from \"@babel/traverse\";\nimport { makeWeakCache, makeWeakCacheSync } from \"./caching.ts\";\nimport type { CacheConfigurator } from \"./caching.ts\";\nimport {\n  validate,\n  checkNoUnwrappedItemOptionPairs,\n} from \"./validation/options.ts\";\nimport type { InputOptions, PluginItem } from \"./validation/options.ts\";\nimport { validatePluginObject } from \"./validation/plugins.ts\";\nimport { makePluginAPI, makePresetAPI } from \"./helpers/config-api.ts\";\nimport type { PluginAPI, PresetAPI } from \"./helpers/config-api.ts\";\n\nimport loadPrivatePartialConfig from \"./partial.ts\";\nimport type { ValidatedOptions } from \"./validation/options.ts\";\n\nimport type * as Context from \"./cache-contexts.ts\";\nimport ConfigError from \"../errors/config-error.ts\";\n\ntype LoadedDescriptor = {\n  value: any;\n  options: object;\n  dirname: string;\n  alias: string;\n  externalDependencies: ReadonlyDeepArray<string>;\n};\n\nexport type { InputOptions } from \"./validation/options.ts\";\n\nexport type ResolvedConfig = {\n  options: any;\n  passes: PluginPasses;\n  externalDependencies: ReadonlyDeepArray<string>;\n};\n\nexport type { Plugin };\nexport type PluginPassList = Array<Plugin>;\nexport type PluginPasses = Array<PluginPassList>;\n\nexport default gensync(function* loadFullConfig(\n  inputOpts: InputOptions,\n): Handler<ResolvedConfig | null> {\n  const result = yield* loadPrivatePartialConfig(inputOpts);\n  if (!result) {\n    return null;\n  }\n  const { options, context, fileHandling } = result;\n\n  if (fileHandling === \"ignored\") {\n    return null;\n  }\n\n  const optionDefaults: ValidatedOptions = {};\n\n  const { plugins, presets } = options;\n\n  if (!plugins || !presets) {\n    throw new Error(\"Assertion failure - plugins and presets exist\");\n  }\n\n  const presetContext: Context.FullPreset = {\n    ...context,\n    targets: options.targets,\n  };\n\n  const toDescriptor = (item: PluginItem) => {\n    const desc = getItemDescriptor(item);\n    if (!desc) {\n      throw new Error(\"Assertion failure - must be config item\");\n    }\n\n    return desc;\n  };\n\n  const presetsDescriptors = presets.map(toDescriptor);\n  const initialPluginsDescriptors = plugins.map(toDescriptor);\n  const pluginDescriptorsByPass: Array<Array<UnloadedDescriptor<PluginAPI>>> = [\n    [],\n  ];\n  const passes: Array<Array<Plugin>> = [];\n\n  const externalDependencies: DeepArray<string> = [];\n\n  const ignored = yield* enhanceError(\n    context,\n    function* recursePresetDescriptors(\n      rawPresets: Array<UnloadedDescriptor<PresetAPI>>,\n      pluginDescriptorsPass: Array<UnloadedDescriptor<PluginAPI>>,\n    ): Handler<true | void> {\n      const presets: Array<{\n        preset: ConfigChain | null;\n        pass: Array<UnloadedDescriptor<PluginAPI>>;\n      }> = [];\n\n      for (let i = 0; i < rawPresets.length; i++) {\n        const descriptor = rawPresets[i];\n        if (descriptor.options !== false) {\n          try {\n            // eslint-disable-next-line no-var\n            var preset = yield* loadPresetDescriptor(descriptor, presetContext);\n          } catch (e) {\n            if (e.code === \"BABEL_UNKNOWN_OPTION\") {\n              checkNoUnwrappedItemOptionPairs(rawPresets, i, \"preset\", e);\n            }\n            throw e;\n          }\n\n          externalDependencies.push(preset.externalDependencies);\n\n          // Presets normally run in reverse order, but if they\n          // have their own pass they run after the presets\n          // in the previous pass.\n          if (descriptor.ownPass) {\n            presets.push({ preset: preset.chain, pass: [] });\n          } else {\n            presets.unshift({\n              preset: preset.chain,\n              pass: pluginDescriptorsPass,\n            });\n          }\n        }\n      }\n\n      // resolve presets\n      if (presets.length > 0) {\n        // The passes are created in the same order as the preset list, but are inserted before any\n        // existing additional passes.\n        pluginDescriptorsByPass.splice(\n          1,\n          0,\n          ...presets.map(o => o.pass).filter(p => p !== pluginDescriptorsPass),\n        );\n\n        for (const { preset, pass } of presets) {\n          if (!preset) return true;\n\n          pass.push(...preset.plugins);\n\n          const ignored = yield* recursePresetDescriptors(preset.presets, pass);\n          if (ignored) return true;\n\n          preset.options.forEach(opts => {\n            mergeOptions(optionDefaults, opts);\n          });\n        }\n      }\n    },\n  )(presetsDescriptors, pluginDescriptorsByPass[0]);\n\n  if (ignored) return null;\n\n  const opts: ValidatedOptions = optionDefaults;\n  mergeOptions(opts, options);\n\n  const pluginContext: Context.FullPlugin = {\n    ...presetContext,\n    assumptions: opts.assumptions ?? {},\n  };\n\n  yield* enhanceError(context, function* loadPluginDescriptors() {\n    pluginDescriptorsByPass[0].unshift(...initialPluginsDescriptors);\n\n    for (const descs of pluginDescriptorsByPass) {\n      const pass: Plugin[] = [];\n      passes.push(pass);\n\n      for (let i = 0; i < descs.length; i++) {\n        const descriptor = descs[i];\n        if (descriptor.options !== false) {\n          try {\n            // eslint-disable-next-line no-var\n            var plugin = yield* loadPluginDescriptor(descriptor, pluginContext);\n          } catch (e) {\n            if (e.code === \"BABEL_UNKNOWN_PLUGIN_PROPERTY\") {\n              // print special message for `plugins: [\"@babel/foo\", { foo: \"option\" }]`\n              checkNoUnwrappedItemOptionPairs(descs, i, \"plugin\", e);\n            }\n            throw e;\n          }\n          pass.push(plugin);\n\n          externalDependencies.push(plugin.externalDependencies);\n        }\n      }\n    }\n  })();\n\n  opts.plugins = passes[0];\n  opts.presets = passes\n    .slice(1)\n    .filter(plugins => plugins.length > 0)\n    .map(plugins => ({ plugins }));\n  opts.passPerPreset = opts.presets.length > 0;\n\n  return {\n    options: opts,\n    passes: passes,\n    externalDependencies: freezeDeepArray(externalDependencies),\n  };\n});\n\nfunction enhanceError<T extends Function>(context: ConfigContext, fn: T): T {\n  return function* (arg1: unknown, arg2: unknown) {\n    try {\n      return yield* fn(arg1, arg2);\n    } catch (e) {\n      // There are a few case where thrown errors will try to annotate themselves multiple times, so\n      // to keep things simple we just bail out if re-wrapping the message.\n      if (!/^\\[BABEL\\]/.test(e.message)) {\n        e.message = `[BABEL] ${context.filename ?? \"unknown file\"}: ${\n          e.message\n        }`;\n      }\n\n      throw e;\n    }\n  } as any;\n}\n\n/**\n * Load a generic plugin/preset from the given descriptor loaded from the config object.\n */\nconst makeDescriptorLoader = <Context, API>(\n  apiFactory: (\n    cache: CacheConfigurator<Context>,\n    externalDependencies: Array<string>,\n  ) => API,\n) =>\n  makeWeakCache(function* (\n    { value, options, dirname, alias }: UnloadedDescriptor<API>,\n    cache: CacheConfigurator<Context>,\n  ): Handler<LoadedDescriptor> {\n    // Disabled presets should already have been filtered out\n    if (options === false) throw new Error(\"Assertion failure\");\n\n    options = options || {};\n\n    const externalDependencies: Array<string> = [];\n\n    let item: unknown = value;\n    if (typeof value === \"function\") {\n      const factory = maybeAsync(\n        value as (api: API, options: object, dirname: string) => unknown,\n        `You appear to be using an async plugin/preset, but Babel has been called synchronously`,\n      );\n\n      const api = {\n        ...context,\n        ...apiFactory(cache, externalDependencies),\n      };\n      try {\n        item = yield* factory(api, options, dirname);\n      } catch (e) {\n        if (alias) {\n          e.message += ` (While processing: ${JSON.stringify(alias)})`;\n        }\n        throw e;\n      }\n    }\n\n    if (!item || typeof item !== \"object\") {\n      throw new Error(\"Plugin/Preset did not return an object.\");\n    }\n\n    if (isThenable(item)) {\n      // if we want to support async plugins\n      yield* [];\n\n      throw new Error(\n        `You appear to be using a promise as a plugin, ` +\n          `which your current version of Babel does not support. ` +\n          `If you're using a published plugin, ` +\n          `you may need to upgrade your @babel/core version. ` +\n          `As an alternative, you can prefix the promise with \"await\". ` +\n          `(While processing: ${JSON.stringify(alias)})`,\n      );\n    }\n\n    if (\n      externalDependencies.length > 0 &&\n      (!cache.configured() || cache.mode() === \"forever\")\n    ) {\n      let error =\n        `A plugin/preset has external untracked dependencies ` +\n        `(${externalDependencies[0]}), but the cache `;\n      if (!cache.configured()) {\n        error += `has not been configured to be invalidated when the external dependencies change. `;\n      } else {\n        error += ` has been configured to never be invalidated. `;\n      }\n      error +=\n        `Plugins/presets should configure their cache to be invalidated when the external ` +\n        `dependencies change, for example using \\`api.cache.invalidate(() => ` +\n        `statSync(filepath).mtimeMs)\\` or \\`api.cache.never()\\`\\n` +\n        `(While processing: ${JSON.stringify(alias)})`;\n\n      throw new Error(error);\n    }\n\n    return {\n      value: item,\n      options,\n      dirname,\n      alias,\n      externalDependencies: freezeDeepArray(externalDependencies),\n    };\n  });\n\nconst pluginDescriptorLoader = makeDescriptorLoader<\n  Context.SimplePlugin,\n  PluginAPI\n>(makePluginAPI);\nconst presetDescriptorLoader = makeDescriptorLoader<\n  Context.SimplePreset,\n  PresetAPI\n>(makePresetAPI);\n\nconst instantiatePlugin = makeWeakCache(function* (\n  { value, options, dirname, alias, externalDependencies }: LoadedDescriptor,\n  cache: CacheConfigurator<Context.SimplePlugin>,\n): Handler<Plugin> {\n  const pluginObj = validatePluginObject(value);\n\n  const plugin = {\n    ...pluginObj,\n  };\n  if (plugin.visitor) {\n    plugin.visitor = traverse.explode({\n      ...plugin.visitor,\n    });\n  }\n\n  if (plugin.inherits) {\n    const inheritsDescriptor: UnloadedDescriptor<PluginAPI> = {\n      name: undefined,\n      alias: `${alias}$inherits`,\n      value: plugin.inherits,\n      options,\n      dirname,\n    };\n\n    const inherits = yield* forwardAsync(loadPluginDescriptor, run => {\n      // If the inherited plugin changes, reinstantiate this plugin.\n      return cache.invalidate(data => run(inheritsDescriptor, data));\n    });\n\n    plugin.pre = chainMaybeAsync(inherits.pre, plugin.pre);\n    plugin.post = chainMaybeAsync(inherits.post, plugin.post);\n    plugin.manipulateOptions = chainMaybeAsync(\n      inherits.manipulateOptions,\n      plugin.manipulateOptions,\n    );\n    plugin.visitor = traverse.visitors.merge([\n      inherits.visitor || {},\n      plugin.visitor || {},\n    ]);\n\n    if (inherits.externalDependencies.length > 0) {\n      if (externalDependencies.length === 0) {\n        externalDependencies = inherits.externalDependencies;\n      } else {\n        externalDependencies = freezeDeepArray([\n          externalDependencies,\n          inherits.externalDependencies,\n        ]);\n      }\n    }\n  }\n\n  return new Plugin(plugin, options, alias, externalDependencies);\n});\n\n/**\n * Instantiate a plugin for the given descriptor, returning the plugin/options pair.\n */\nfunction* loadPluginDescriptor(\n  descriptor: UnloadedDescriptor<PluginAPI>,\n  context: Context.SimplePlugin,\n): Handler<Plugin> {\n  if (descriptor.value instanceof Plugin) {\n    if (descriptor.options) {\n      throw new Error(\n        \"Passed options to an existing Plugin instance will not work.\",\n      );\n    }\n\n    return descriptor.value;\n  }\n\n  return yield* instantiatePlugin(\n    yield* pluginDescriptorLoader(descriptor, context),\n    context,\n  );\n}\n\nconst needsFilename = (val: unknown) => val && typeof val !== \"function\";\n\nconst validateIfOptionNeedsFilename = (\n  options: ValidatedOptions,\n  descriptor: UnloadedDescriptor<PresetAPI>,\n): void => {\n  if (\n    needsFilename(options.test) ||\n    needsFilename(options.include) ||\n    needsFilename(options.exclude)\n  ) {\n    const formattedPresetName = descriptor.name\n      ? `\"${descriptor.name}\"`\n      : \"/* your preset */\";\n    throw new ConfigError(\n      [\n        `Preset ${formattedPresetName} requires a filename to be set when babel is called directly,`,\n        `\\`\\`\\``,\n        `babel.transformSync(code, { filename: 'file.ts', presets: [${formattedPresetName}] });`,\n        `\\`\\`\\``,\n        `See https://babeljs.io/docs/en/options#filename for more information.`,\n      ].join(\"\\n\"),\n    );\n  }\n};\n\nconst validatePreset = (\n  preset: PresetInstance,\n  context: ConfigContext,\n  descriptor: UnloadedDescriptor<PresetAPI>,\n): void => {\n  if (!context.filename) {\n    const { options } = preset;\n    validateIfOptionNeedsFilename(options, descriptor);\n    options.overrides?.forEach(overrideOptions =>\n      validateIfOptionNeedsFilename(overrideOptions, descriptor),\n    );\n  }\n};\n\nconst instantiatePreset = makeWeakCacheSync(\n  ({\n    value,\n    dirname,\n    alias,\n    externalDependencies,\n  }: LoadedDescriptor): PresetInstance => {\n    return {\n      options: validate(\"preset\", value),\n      alias,\n      dirname,\n      externalDependencies,\n    };\n  },\n);\n\n/**\n * Generate a config object that will act as the root of a new nested config.\n */\nfunction* loadPresetDescriptor(\n  descriptor: UnloadedDescriptor<PresetAPI>,\n  context: Context.FullPreset,\n): Handler<{\n  chain: ConfigChain | null;\n  externalDependencies: ReadonlyDeepArray<string>;\n}> {\n  const preset = instantiatePreset(\n    yield* presetDescriptorLoader(descriptor, context),\n  );\n  validatePreset(preset, context, descriptor);\n  return {\n    chain: yield* buildPresetChain(preset, context),\n    externalDependencies: preset.externalDependencies,\n  };\n}\n\nfunction chainMaybeAsync<Args extends any[], R extends void | Promise<void>>(\n  a: undefined | ((...args: Args) => R),\n  b: undefined | ((...args: Args) => R),\n): (...args: Args) => R {\n  if (!a) return b;\n  if (!b) return a;\n\n  return function (this: unknown, ...args: Args) {\n    const res = a.apply(this, args);\n    if (res && typeof res.then === \"function\") {\n      return res.then(() => b.apply(this, args));\n    }\n    return b.apply(this, args);\n  } as (...args: Args) => R;\n}\n","import gensync, { type Handler } from \"gensync\";\n\nexport type {\n  ResolvedConfig,\n  InputOptions,\n  PluginPasses,\n  Plugin,\n} from \"./full.ts\";\n\nimport type { InputOptions, PluginTarget } from \"./validation/options.ts\";\n\nimport type {\n  PluginAPI as basePluginAPI,\n  PresetAPI as basePresetAPI,\n} from \"./helpers/config-api.ts\";\nexport type { PluginObject } from \"./validation/plugins.ts\";\ntype PluginAPI = basePluginAPI & typeof import(\"..\");\ntype PresetAPI = basePresetAPI & typeof import(\"..\");\nexport type { PluginAPI, PresetAPI };\n// todo: may need to refine PresetObject to be a subset of ValidatedOptions\nexport type {\n  CallerMetadata,\n  ValidatedOptions as PresetObject,\n} from \"./validation/options.ts\";\n\nimport loadFullConfig, { type ResolvedConfig } from \"./full.ts\";\nimport {\n  type PartialConfig,\n  loadPartialConfig as loadPartialConfigImpl,\n} from \"./partial.ts\";\n\nexport { loadFullConfig as default };\nexport type { PartialConfig } from \"./partial.ts\";\n\nimport { createConfigItem as createConfigItemImpl } from \"./item.ts\";\nimport type { ConfigItem } from \"./item.ts\";\nexport type { ConfigItem };\n\nimport { beginHiddenCallStack } from \"../errors/rewrite-stack-trace.ts\";\n\nconst loadPartialConfigRunner = gensync(loadPartialConfigImpl);\nexport function loadPartialConfigAsync(\n  ...args: Parameters<typeof loadPartialConfigRunner.async>\n) {\n  return beginHiddenCallStack(loadPartialConfigRunner.async)(...args);\n}\nexport function loadPartialConfigSync(\n  ...args: Parameters<typeof loadPartialConfigRunner.sync>\n) {\n  return beginHiddenCallStack(loadPartialConfigRunner.sync)(...args);\n}\nexport function loadPartialConfig(\n  opts: Parameters<typeof loadPartialConfigImpl>[0],\n  callback?: (err: Error, val: PartialConfig | null) => void,\n) {\n  if (callback !== undefined) {\n    beginHiddenCallStack(loadPartialConfigRunner.errback)(opts, callback);\n  } else if (typeof opts === \"function\") {\n    beginHiddenCallStack(loadPartialConfigRunner.errback)(\n      undefined,\n      opts as (err: Error, val: PartialConfig | null) => void,\n    );\n  } else {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'loadPartialConfig' function expects a callback. If you need to call it synchronously, please use 'loadPartialConfigSync'.\",\n      );\n    } else {\n      return loadPartialConfigSync(opts);\n    }\n  }\n}\n\nfunction* loadOptionsImpl(opts: InputOptions): Handler<ResolvedConfig | null> {\n  const config = yield* loadFullConfig(opts);\n  // NOTE: We want to return \"null\" explicitly, while ?. alone returns undefined\n  return config?.options ?? null;\n}\nconst loadOptionsRunner = gensync(loadOptionsImpl);\nexport function loadOptionsAsync(\n  ...args: Parameters<typeof loadOptionsRunner.async>\n) {\n  return beginHiddenCallStack(loadOptionsRunner.async)(...args);\n}\nexport function loadOptionsSync(\n  ...args: Parameters<typeof loadOptionsRunner.sync>\n) {\n  return beginHiddenCallStack(loadOptionsRunner.sync)(...args);\n}\nexport function loadOptions(\n  opts: Parameters<typeof loadOptionsImpl>[0],\n  callback?: (err: Error, val: ResolvedConfig | null) => void,\n) {\n  if (callback !== undefined) {\n    beginHiddenCallStack(loadOptionsRunner.errback)(opts, callback);\n  } else if (typeof opts === \"function\") {\n    beginHiddenCallStack(loadOptionsRunner.errback)(\n      undefined,\n      opts as (err: Error, val: ResolvedConfig | null) => void,\n    );\n  } else {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'loadOptions' function expects a callback. If you need to call it synchronously, please use 'loadOptionsSync'.\",\n      );\n    } else {\n      return loadOptionsSync(opts);\n    }\n  }\n}\n\nconst createConfigItemRunner = gensync(createConfigItemImpl);\nexport function createConfigItemAsync(\n  ...args: Parameters<typeof createConfigItemRunner.async>\n) {\n  return beginHiddenCallStack(createConfigItemRunner.async)(...args);\n}\nexport function createConfigItemSync(\n  ...args: Parameters<typeof createConfigItemRunner.sync>\n) {\n  return beginHiddenCallStack(createConfigItemRunner.sync)(...args);\n}\nexport function createConfigItem(\n  target: PluginTarget,\n  options: Parameters<typeof createConfigItemImpl>[1],\n  callback?: (err: Error, val: ConfigItem<PluginAPI> | null) => void,\n) {\n  if (callback !== undefined) {\n    beginHiddenCallStack(createConfigItemRunner.errback)(\n      target,\n      options,\n      callback,\n    );\n  } else if (typeof options === \"function\") {\n    beginHiddenCallStack(createConfigItemRunner.errback)(\n      target,\n      undefined,\n      callback,\n    );\n  } else {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'createConfigItem' function expects a callback. If you need to call it synchronously, please use 'createConfigItemSync'.\",\n      );\n    } else {\n      return createConfigItemSync(target, options);\n    }\n  }\n}\n","import type * as t from \"@babel/types\";\nimport type File from \"./file/file.ts\";\n\nexport default class PluginPass<Options = object> {\n  _map: Map<unknown, unknown> = new Map();\n  key: string | undefined | null;\n  file: File;\n  opts: Partial<Options>;\n\n  /**\n   * The working directory that Babel's programmatic options are loaded\n   * relative to.\n   */\n  cwd: string;\n\n  /** The absolute path of the file being compiled. */\n  filename: string | void;\n\n  /**\n   * Is Babel executed in async mode or not.\n   */\n  isAsync: boolean;\n\n  constructor(\n    file: File,\n    key: string | null,\n    options: Options | undefined,\n    isAsync: boolean,\n  ) {\n    this.key = key;\n    this.file = file;\n    this.opts = options || {};\n    this.cwd = file.opts.cwd;\n    this.filename = file.opts.filename;\n    this.isAsync = isAsync;\n  }\n\n  set(key: unknown, val: unknown) {\n    this._map.set(key, val);\n  }\n\n  get(key: unknown): any {\n    return this._map.get(key);\n  }\n\n  availableHelper(name: string, versionRange?: string | null) {\n    return this.file.availableHelper(name, versionRange);\n  }\n\n  addHelper(name: string) {\n    return this.file.addHelper(name);\n  }\n\n  buildCodeFrameError(\n    node: t.Node | undefined | null,\n    msg: string,\n    _Error?: typeof Error,\n  ) {\n    return this.file.buildCodeFrameError(node, msg, _Error);\n  }\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  (PluginPass as any).prototype.getModuleName = function getModuleName(\n    this: PluginPass,\n  ): string | undefined {\n    // @ts-expect-error only exists in Babel 7\n    return this.file.getModuleName();\n  };\n  (PluginPass as any).prototype.addImport = function addImport(\n    this: PluginPass,\n  ): void {\n    // @ts-expect-error only exists in Babel 7\n    this.file.addImport();\n  };\n}\n","import traverse from \"@babel/traverse\";\nimport type { Statement } from \"@babel/types\";\nimport type { PluginObject } from \"../config/index.ts\";\nimport Plugin from \"../config/plugin.ts\";\n\nlet LOADED_PLUGIN: Plugin | void;\n\nconst blockHoistPlugin: PluginObject = {\n  /**\n   * [Please add a description.]\n   *\n   * Priority:\n   *\n   *  - 0 We want this to be at the **very** bottom\n   *  - 1 Default node position\n   *  - 2 Priority over normal nodes\n   *  - 3 We want this to be at the **very** top\n   *  - 4 Reserved for the helpers used to implement module imports.\n   */\n\n  name: \"internal.blockHoist\",\n\n  visitor: {\n    Block: {\n      exit({ node }) {\n        node.body = performHoisting(node.body);\n      },\n    },\n    SwitchCase: {\n      exit({ node }) {\n        // In case statements, hoisting is difficult to perform correctly due to\n        // functions that are declared and referenced in different blocks.\n        // Nevertheless, hoisting the statements *inside* of each case should at\n        // least mitigate the failure cases.\n        node.consequent = performHoisting(node.consequent);\n      },\n    },\n  },\n};\n\nfunction performHoisting(body: Statement[]): Statement[] {\n  // Largest SMI\n  let max = 2 ** 30 - 1;\n  let hasChange = false;\n  for (let i = 0; i < body.length; i++) {\n    const n = body[i];\n    const p = priority(n);\n    if (p > max) {\n      hasChange = true;\n      break;\n    }\n    max = p;\n  }\n  if (!hasChange) return body;\n\n  // My kingdom for a stable sort!\n  return stableSort(body.slice());\n}\n\nexport default function loadBlockHoistPlugin(): Plugin {\n  if (!LOADED_PLUGIN) {\n    // cache the loaded blockHoist plugin plugin\n    LOADED_PLUGIN = new Plugin(\n      {\n        ...blockHoistPlugin,\n        visitor: traverse.explode(blockHoistPlugin.visitor),\n      },\n      {},\n    );\n  }\n\n  return LOADED_PLUGIN;\n}\n\nfunction priority(bodyNode: Statement & { _blockHoist?: number | true }) {\n  const priority = bodyNode?._blockHoist;\n  if (priority == null) return 1;\n  if (priority === true) return 2;\n  return priority;\n}\n\nfunction stableSort(body: Statement[]) {\n  // By default, we use priorities of 0-4.\n  const buckets = Object.create(null);\n\n  // By collecting into buckets, we can guarantee a stable sort.\n  for (let i = 0; i < body.length; i++) {\n    const n = body[i];\n    const p = priority(n);\n\n    // In case some plugin is setting an unexpected priority.\n    const bucket = buckets[p] || (buckets[p] = []);\n    bucket.push(n);\n  }\n\n  // Sort our keys in descending order. Keys are unique, so we don't have to\n  // worry about stability.\n  const keys = Object.keys(buckets)\n    .map(k => +k)\n    .sort((a, b) => b - a);\n\n  let index = 0;\n  for (const key of keys) {\n    const bucket = buckets[key];\n    for (const n of bucket) {\n      body[index++] = n;\n    }\n  }\n  return body;\n}\n","import path from \"path\";\nimport type { ResolvedConfig } from \"../config/index.ts\";\n\nexport default function normalizeOptions(config: ResolvedConfig) {\n  const {\n    filename,\n    cwd,\n    filenameRelative = typeof filename === \"string\"\n      ? path.relative(cwd, filename)\n      : \"unknown\",\n    sourceType = \"module\",\n    inputSourceMap,\n    sourceMaps = !!inputSourceMap,\n    sourceRoot = process.env.BABEL_8_BREAKING\n      ? undefined\n      : config.options.moduleRoot,\n\n    sourceFileName = path.basename(filenameRelative),\n\n    comments = true,\n    compact = \"auto\",\n  } = config.options;\n\n  const opts = config.options;\n\n  const options = {\n    ...opts,\n\n    parserOpts: {\n      sourceType:\n        path.extname(filenameRelative) === \".mjs\" ? \"module\" : sourceType,\n\n      sourceFileName: filename,\n      plugins: [],\n      ...opts.parserOpts,\n    },\n\n    generatorOpts: {\n      // General generator flags.\n      filename,\n\n      auxiliaryCommentBefore: opts.auxiliaryCommentBefore,\n      auxiliaryCommentAfter: opts.auxiliaryCommentAfter,\n      retainLines: opts.retainLines,\n      comments,\n      shouldPrintComment: opts.shouldPrintComment,\n      compact,\n      minified: opts.minified,\n\n      // Source-map generation flags.\n      sourceMaps,\n\n      sourceRoot,\n      sourceFileName,\n      ...opts.generatorOpts,\n    },\n  };\n\n  for (const plugins of config.passes) {\n    for (const plugin of plugins) {\n      if (plugin.manipulateOptions) {\n        plugin.manipulateOptions(options, options.parserOpts);\n      }\n    }\n  }\n\n  return options;\n}\n","'use strict';\n\nObject.defineProperty(exports, 'commentRegex', {\n  get: function getCommentRegex () {\n    // Groups: 1: media type, 2: MIME type, 3: charset, 4: encoding, 5: data.\n    return /^\\s*?\\/[\\/\\*][@#]\\s+?sourceMappingURL=data:(((?:application|text)\\/json)(?:;charset=([^;,]+?)?)?)?(?:;(base64))?,(.*?)$/mg;\n  }\n});\n\n\nObject.defineProperty(exports, 'mapFileCommentRegex', {\n  get: function getMapFileCommentRegex () {\n    // Matches sourceMappingURL in either // or /* comment styles.\n    return /(?:\\/\\/[@#][ \\t]+?sourceMappingURL=([^\\s'\"`]+?)[ \\t]*?$)|(?:\\/\\*[@#][ \\t]+sourceMappingURL=([^*]+?)[ \\t]*?(?:\\*\\/){1}[ \\t]*?$)/mg;\n  }\n});\n\nvar decodeBase64;\nif (typeof Buffer !== 'undefined') {\n  if (typeof Buffer.from === 'function') {\n    decodeBase64 = decodeBase64WithBufferFrom;\n  } else {\n    decodeBase64 = decodeBase64WithNewBuffer;\n  }\n} else {\n  decodeBase64 = decodeBase64WithAtob;\n}\n\nfunction decodeBase64WithBufferFrom(base64) {\n  return Buffer.from(base64, 'base64').toString();\n}\n\nfunction decodeBase64WithNewBuffer(base64) {\n  if (typeof value === 'number') {\n    throw new TypeError('The value to decode must not be of type number.');\n  }\n  return new Buffer(base64, 'base64').toString();\n}\n\nfunction decodeBase64WithAtob(base64) {\n  return decodeURIComponent(escape(atob(base64)));\n}\n\nfunction stripComment(sm) {\n  return sm.split(',').pop();\n}\n\nfunction readFromFileMap(sm, read) {\n  var r = exports.mapFileCommentRegex.exec(sm);\n  // for some odd reason //# .. captures in 1 and /* .. */ in 2\n  var filename = r[1] || r[2];\n\n  try {\n    var sm = read(filename);\n    if (sm != null && typeof sm.catch === 'function') {\n      return sm.catch(throwError);\n    } else {\n      return sm;\n    }\n  } catch (e) {\n    throwError(e);\n  }\n\n  function throwError(e) {\n    throw new Error('An error occurred while trying to read the map file at ' + filename + '\\n' + e.stack);\n  }\n}\n\nfunction Converter (sm, opts) {\n  opts = opts || {};\n\n  if (opts.hasComment) {\n    sm = stripComment(sm);\n  }\n\n  if (opts.encoding === 'base64') {\n    sm = decodeBase64(sm);\n  } else if (opts.encoding === 'uri') {\n    sm = decodeURIComponent(sm);\n  }\n\n  if (opts.isJSON || opts.encoding) {\n    sm = JSON.parse(sm);\n  }\n\n  this.sourcemap = sm;\n}\n\nConverter.prototype.toJSON = function (space) {\n  return JSON.stringify(this.sourcemap, null, space);\n};\n\nif (typeof Buffer !== 'undefined') {\n  if (typeof Buffer.from === 'function') {\n    Converter.prototype.toBase64 = encodeBase64WithBufferFrom;\n  } else {\n    Converter.prototype.toBase64 = encodeBase64WithNewBuffer;\n  }\n} else {\n  Converter.prototype.toBase64 = encodeBase64WithBtoa;\n}\n\nfunction encodeBase64WithBufferFrom() {\n  var json = this.toJSON();\n  return Buffer.from(json, 'utf8').toString('base64');\n}\n\nfunction encodeBase64WithNewBuffer() {\n  var json = this.toJSON();\n  if (typeof json === 'number') {\n    throw new TypeError('The json to encode must not be of type number.');\n  }\n  return new Buffer(json, 'utf8').toString('base64');\n}\n\nfunction encodeBase64WithBtoa() {\n  var json = this.toJSON();\n  return btoa(unescape(encodeURIComponent(json)));\n}\n\nConverter.prototype.toURI = function () {\n  var json = this.toJSON();\n  return encodeURIComponent(json);\n};\n\nConverter.prototype.toComment = function (options) {\n  var encoding, content, data;\n  if (options != null && options.encoding === 'uri') {\n    encoding = '';\n    content = this.toURI();\n  } else {\n    encoding = ';base64';\n    content = this.toBase64();\n  }\n  data = 'sourceMappingURL=data:application/json;charset=utf-8' + encoding + ',' + content;\n  return options != null && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;\n};\n\n// returns copy instead of original\nConverter.prototype.toObject = function () {\n  return JSON.parse(this.toJSON());\n};\n\nConverter.prototype.addProperty = function (key, value) {\n  if (this.sourcemap.hasOwnProperty(key)) throw new Error('property \"' + key + '\" already exists on the sourcemap, use set property instead');\n  return this.setProperty(key, value);\n};\n\nConverter.prototype.setProperty = function (key, value) {\n  this.sourcemap[key] = value;\n  return this;\n};\n\nConverter.prototype.getProperty = function (key) {\n  return this.sourcemap[key];\n};\n\nexports.fromObject = function (obj) {\n  return new Converter(obj);\n};\n\nexports.fromJSON = function (json) {\n  return new Converter(json, { isJSON: true });\n};\n\nexports.fromURI = function (uri) {\n  return new Converter(uri, { encoding: 'uri' });\n};\n\nexports.fromBase64 = function (base64) {\n  return new Converter(base64, { encoding: 'base64' });\n};\n\nexports.fromComment = function (comment) {\n  var m, encoding;\n  comment = comment\n    .replace(/^\\/\\*/g, '//')\n    .replace(/\\*\\/$/g, '');\n  m = exports.commentRegex.exec(comment);\n  encoding = m && m[4] || 'uri';\n  return new Converter(comment, { encoding: encoding, hasComment: true });\n};\n\nfunction makeConverter(sm) {\n  return new Converter(sm, { isJSON: true });\n}\n\nexports.fromMapFileComment = function (comment, read) {\n  if (typeof read === 'string') {\n    throw new Error(\n      'String directory paths are no longer supported with `fromMapFileComment`\\n' +\n      'Please review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading'\n    )\n  }\n\n  var sm = readFromFileMap(comment, read);\n  if (sm != null && typeof sm.then === 'function') {\n    return sm.then(makeConverter);\n  } else {\n    return makeConverter(sm);\n  }\n};\n\n// Finds last sourcemap comment in file or returns null if none was found\nexports.fromSource = function (content) {\n  var m = content.match(exports.commentRegex);\n  return m ? exports.fromComment(m.pop()) : null;\n};\n\n// Finds last sourcemap comment in file or returns null if none was found\nexports.fromMapFileSource = function (content, read) {\n  if (typeof read === 'string') {\n    throw new Error(\n      'String directory paths are no longer supported with `fromMapFileSource`\\n' +\n      'Please review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading'\n    )\n  }\n  var m = content.match(exports.mapFileCommentRegex);\n  return m ? exports.fromMapFileComment(m.pop(), read) : null;\n};\n\nexports.removeComments = function (src) {\n  return src.replace(exports.commentRegex, '');\n};\n\nexports.removeMapFileComments = function (src) {\n  return src.replace(exports.mapFileCommentRegex, '');\n};\n\nexports.generateMapFileComment = function (file, options) {\n  var data = 'sourceMappingURL=' + file;\n  return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;\n};\n","const pluginNameMap: Record<\n  string,\n  Partial<Record<\"syntax\" | \"transform\", Record<\"name\" | \"url\", string>>>\n> = {\n  asyncDoExpressions: {\n    syntax: {\n      name: \"@babel/plugin-syntax-async-do-expressions\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions\",\n    },\n  },\n  decimal: {\n    syntax: {\n      name: \"@babel/plugin-syntax-decimal\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decimal\",\n    },\n  },\n  decorators: {\n    syntax: {\n      name: \"@babel/plugin-syntax-decorators\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decorators\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-decorators\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-decorators\",\n    },\n  },\n  doExpressions: {\n    syntax: {\n      name: \"@babel/plugin-syntax-do-expressions\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-do-expressions\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-do-expressions\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions\",\n    },\n  },\n  exportDefaultFrom: {\n    syntax: {\n      name: \"@babel/plugin-syntax-export-default-from\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-default-from\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-export-default-from\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from\",\n    },\n  },\n  flow: {\n    syntax: {\n      name: \"@babel/plugin-syntax-flow\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-flow\",\n    },\n    transform: {\n      name: \"@babel/preset-flow\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-preset-flow\",\n    },\n  },\n  functionBind: {\n    syntax: {\n      name: \"@babel/plugin-syntax-function-bind\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-bind\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-function-bind\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-bind\",\n    },\n  },\n  functionSent: {\n    syntax: {\n      name: \"@babel/plugin-syntax-function-sent\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-sent\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-function-sent\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent\",\n    },\n  },\n  jsx: {\n    syntax: {\n      name: \"@babel/plugin-syntax-jsx\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx\",\n    },\n    transform: {\n      name: \"@babel/preset-react\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-preset-react\",\n    },\n  },\n  pipelineOperator: {\n    syntax: {\n      name: \"@babel/plugin-syntax-pipeline-operator\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-pipeline-operator\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-pipeline-operator\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator\",\n    },\n  },\n  recordAndTuple: {\n    syntax: {\n      name: \"@babel/plugin-syntax-record-and-tuple\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-record-and-tuple\",\n    },\n  },\n  throwExpressions: {\n    syntax: {\n      name: \"@babel/plugin-syntax-throw-expressions\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-throw-expressions\",\n    },\n    transform: {\n      name: \"@babel/plugin-proposal-throw-expressions\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-throw-expressions\",\n    },\n  },\n  typescript: {\n    syntax: {\n      name: \"@babel/plugin-syntax-typescript\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-typescript\",\n    },\n    transform: {\n      name: \"@babel/preset-typescript\",\n      url: \"https://github.com/babel/babel/tree/main/packages/babel-preset-typescript\",\n    },\n  },\n};\n\nif (!process.env.BABEL_8_BREAKING) {\n  // TODO: This plugins are now supported by default by @babel/parser.\n  Object.assign(pluginNameMap, {\n    asyncGenerators: {\n      syntax: {\n        name: \"@babel/plugin-syntax-async-generators\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-generators\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-async-generator-functions\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-async-generator-functions\",\n      },\n    },\n    classProperties: {\n      syntax: {\n        name: \"@babel/plugin-syntax-class-properties\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-class-properties\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties\",\n      },\n    },\n    classPrivateProperties: {\n      syntax: {\n        name: \"@babel/plugin-syntax-class-properties\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-class-properties\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties\",\n      },\n    },\n    classPrivateMethods: {\n      syntax: {\n        name: \"@babel/plugin-syntax-class-properties\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-private-methods\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-methods\",\n      },\n    },\n    classStaticBlock: {\n      syntax: {\n        name: \"@babel/plugin-syntax-class-static-block\",\n        url: \"https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-class-static-block\",\n        url: \"https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-static-block\",\n      },\n    },\n    dynamicImport: {\n      syntax: {\n        name: \"@babel/plugin-syntax-dynamic-import\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import\",\n      },\n    },\n    exportNamespaceFrom: {\n      syntax: {\n        name: \"@babel/plugin-syntax-export-namespace-from\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-export-namespace-from\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-export-namespace-from\",\n      },\n    },\n    // Will be removed\n    importAssertions: {\n      syntax: {\n        name: \"@babel/plugin-syntax-import-assertions\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions\",\n      },\n    },\n    importAttributes: {\n      syntax: {\n        name: \"@babel/plugin-syntax-import-attributes\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-attributes\",\n      },\n    },\n    importMeta: {\n      syntax: {\n        name: \"@babel/plugin-syntax-import-meta\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta\",\n      },\n    },\n    logicalAssignment: {\n      syntax: {\n        name: \"@babel/plugin-syntax-logical-assignment-operators\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-logical-assignment-operators\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-logical-assignment-operators\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-logical-assignment-operators\",\n      },\n    },\n    moduleStringNames: {\n      syntax: {\n        name: \"@babel/plugin-syntax-module-string-names\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names\",\n      },\n    },\n    numericSeparator: {\n      syntax: {\n        name: \"@babel/plugin-syntax-numeric-separator\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-numeric-separator\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-numeric-separator\",\n      },\n    },\n    nullishCoalescingOperator: {\n      syntax: {\n        name: \"@babel/plugin-syntax-nullish-coalescing-operator\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-nullish-coalescing-operator\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-nullish-coalescing-operator\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-nullish-coalescing-opearator\",\n      },\n    },\n    objectRestSpread: {\n      syntax: {\n        name: \"@babel/plugin-syntax-object-rest-spread\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-object-rest-spread\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-object-rest-spread\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-object-rest-spread\",\n      },\n    },\n    optionalCatchBinding: {\n      syntax: {\n        name: \"@babel/plugin-syntax-optional-catch-binding\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-catch-binding\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-optional-catch-binding\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-catch-binding\",\n      },\n    },\n    optionalChaining: {\n      syntax: {\n        name: \"@babel/plugin-syntax-optional-chaining\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-optional-chaining\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-chaining\",\n      },\n    },\n    privateIn: {\n      syntax: {\n        name: \"@babel/plugin-syntax-private-property-in-object\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-private-property-in-object\",\n        url: \"https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-property-in-object\",\n      },\n    },\n    regexpUnicodeSets: {\n      syntax: {\n        name: \"@babel/plugin-syntax-unicode-sets-regex\",\n        url: \"https://github.com/babel/babel/blob/main/packages/babel-plugin-syntax-unicode-sets-regex/README.md\",\n      },\n      transform: {\n        name: \"@babel/plugin-transform-unicode-sets-regex\",\n        url: \"https://github.com/babel/babel/blob/main/packages/babel-plugin-proposalunicode-sets-regex/README.md\",\n      },\n    },\n  });\n}\n\nconst getNameURLCombination = ({ name, url }: { name: string; url: string }) =>\n  `${name} (${url})`;\n\n/*\nReturns a string of the format:\nSupport for the experimental syntax [@babel/parser plugin name] isn't currently enabled ([loc]):\n\n[code frame]\n\nAdd [npm package name] ([url]) to the 'plugins' section of your Babel config\nto enable [parsing|transformation].\n*/\nexport default function generateMissingPluginMessage(\n  missingPluginName: string,\n  loc: {\n    line: number;\n    column: number;\n  },\n  codeFrame: string,\n  filename: string,\n): string {\n  let helpMessage =\n    `Support for the experimental syntax '${missingPluginName}' isn't currently enabled ` +\n    `(${loc.line}:${loc.column + 1}):\\n\\n` +\n    codeFrame;\n  const pluginInfo = pluginNameMap[missingPluginName];\n  if (pluginInfo) {\n    const { syntax: syntaxPlugin, transform: transformPlugin } = pluginInfo;\n    if (syntaxPlugin) {\n      const syntaxPluginInfo = getNameURLCombination(syntaxPlugin);\n      if (transformPlugin) {\n        const transformPluginInfo = getNameURLCombination(transformPlugin);\n        const sectionType = transformPlugin.name.startsWith(\"@babel/plugin\")\n          ? \"plugins\"\n          : \"presets\";\n        helpMessage += `\\n\\nAdd ${transformPluginInfo} to the '${sectionType}' section of your Babel config to enable transformation.\nIf you want to leave it as-is, add ${syntaxPluginInfo} to the 'plugins' section to enable parsing.`;\n      } else {\n        helpMessage +=\n          `\\n\\nAdd ${syntaxPluginInfo} to the 'plugins' section of your Babel config ` +\n          `to enable parsing.`;\n      }\n    }\n  }\n\n  const msgFilename =\n    filename === \"unknown\" ? \"<name of the input file>\" : filename;\n  helpMessage += `\n\nIf you already added the plugin for this syntax to your config, it's possible that your config \\\nisn't being loaded.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \\\nconfiguration:\n\\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${msgFilename} <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.\n`;\n  return helpMessage;\n}\n","import type { Handler } from \"gensync\";\nimport { parse, type ParseResult } from \"@babel/parser\";\nimport { codeFrameColumns } from \"@babel/code-frame\";\nimport generateMissingPluginMessage from \"./util/missing-plugin-helper.ts\";\nimport type { PluginPasses } from \"../config/index.ts\";\n\nexport type { ParseResult };\n\nexport default function* parser(\n  pluginPasses: PluginPasses,\n  { parserOpts, highlightCode = true, filename = \"unknown\" }: any,\n  code: string,\n): Handler<ParseResult> {\n  try {\n    const results = [];\n    for (const plugins of pluginPasses) {\n      for (const plugin of plugins) {\n        const { parserOverride } = plugin;\n        if (parserOverride) {\n          const ast = parserOverride(code, parserOpts, parse);\n\n          if (ast !== undefined) results.push(ast);\n        }\n      }\n    }\n\n    if (results.length === 0) {\n      return parse(code, parserOpts);\n    } else if (results.length === 1) {\n      // If we want to allow async parsers\n      yield* [];\n      if (typeof results[0].then === \"function\") {\n        throw new Error(\n          `You appear to be using an async parser plugin, ` +\n            `which your current version of Babel does not support. ` +\n            `If you're using a published plugin, you may need to upgrade ` +\n            `your @babel/core version.`,\n        );\n      }\n      return results[0];\n    }\n    // TODO: Add an error code\n    throw new Error(\"More than one plugin attempted to override parsing.\");\n  } catch (err) {\n    if (err.code === \"BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED\") {\n      err.message +=\n        \"\\nConsider renaming the file to '.mjs', or setting sourceType:module \" +\n        \"or sourceType:unambiguous in your Babel config for this file.\";\n      // err.code will be changed to BABEL_PARSE_ERROR later.\n    }\n\n    const { loc, missingPlugin } = err;\n    if (loc) {\n      const codeFrame = codeFrameColumns(\n        code,\n        {\n          start: {\n            line: loc.line,\n            column: loc.column + 1,\n          },\n        },\n        {\n          highlightCode,\n        },\n      );\n      if (missingPlugin) {\n        err.message =\n          `${filename}: ` +\n          generateMissingPluginMessage(\n            missingPlugin[0],\n            loc,\n            codeFrame,\n            filename,\n          );\n      } else {\n        err.message = `${filename}: ${err.message}\\n\\n` + codeFrame;\n      }\n      err.code = \"BABEL_PARSE_ERROR\";\n    }\n    throw err;\n  }\n}\n","const circleSet = new Set();\nlet depth = 0;\n// https://github.com/babel/babel/pull/14583#discussion_r882828856\nfunction deepClone(\n  value: any,\n  cache: Map<any, any>,\n  allowCircle: boolean,\n): any {\n  if (value !== null) {\n    if (allowCircle) {\n      if (cache.has(value)) return cache.get(value);\n    } else if (++depth > 250) {\n      if (circleSet.has(value)) {\n        depth = 0;\n        circleSet.clear();\n        throw new Error(\"Babel-deepClone: Cycles are not allowed in AST\");\n      }\n      circleSet.add(value);\n    }\n    let cloned: any;\n    if (Array.isArray(value)) {\n      cloned = new Array(value.length);\n      if (allowCircle) cache.set(value, cloned);\n      for (let i = 0; i < value.length; i++) {\n        cloned[i] =\n          typeof value[i] !== \"object\"\n            ? value[i]\n            : deepClone(value[i], cache, allowCircle);\n      }\n    } else {\n      cloned = {};\n      if (allowCircle) cache.set(value, cloned);\n      const keys = Object.keys(value);\n      for (let i = 0; i < keys.length; i++) {\n        const key = keys[i];\n        cloned[key] =\n          typeof value[key] !== \"object\"\n            ? value[key]\n            : deepClone(\n                value[key],\n                cache,\n                allowCircle ||\n                  key === \"leadingComments\" ||\n                  key === \"innerComments\" ||\n                  key === \"trailingComments\" ||\n                  key === \"extra\",\n              );\n      }\n    }\n    if (!allowCircle) {\n      if (depth-- > 250) circleSet.delete(value);\n    }\n    return cloned;\n  }\n  return value;\n}\n\nexport default function <T>(value: T): T {\n  if (typeof value !== \"object\") return value;\n\n  if (process.env.BABEL_8_BREAKING) {\n    if (!process.env.IS_PUBLISH && depth > 0) {\n      throw new Error(\"depth > 0\");\n    }\n    return deepClone(value, new Map(), false);\n  } else {\n    try {\n      return deepClone(value, new Map(), true);\n    } catch (_) {\n      return structuredClone(value);\n    }\n  }\n}\n","import fs from \"fs\";\nimport path from \"path\";\nimport buildDebug from \"debug\";\nimport type { Handler } from \"gensync\";\nimport { file, traverseFast } from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport type { PluginPasses } from \"../config/index.ts\";\nimport convertSourceMap from \"convert-source-map\";\nimport type { SourceMapConverter as Converter } from \"convert-source-map\";\nimport File from \"./file/file.ts\";\nimport parser from \"../parser/index.ts\";\nimport cloneDeep from \"./util/clone-deep.ts\";\n\nconst debug = buildDebug(\"babel:transform:file\");\n\n// These regexps are copied from the convert-source-map package,\n// but without // or /* at the beginning of the comment.\n\nconst INLINE_SOURCEMAP_REGEX =\n  /^[@#]\\s+sourceMappingURL=data:(?:application|text)\\/json;(?:charset[:=]\\S+?;)?base64,.*$/;\nconst EXTERNAL_SOURCEMAP_REGEX =\n  /^[@#][ \\t]+sourceMappingURL=([^\\s'\"`]+)[ \\t]*$/;\n\nexport type NormalizedFile = {\n  code: string;\n  ast: t.File;\n  inputMap: Converter | null;\n};\n\nexport default function* normalizeFile(\n  pluginPasses: PluginPasses,\n  options: { [key: string]: any },\n  code: string,\n  ast?: t.File | t.Program | null,\n): Handler<File> {\n  code = `${code || \"\"}`;\n\n  if (ast) {\n    if (ast.type === \"Program\") {\n      ast = file(ast, [], []);\n    } else if (ast.type !== \"File\") {\n      throw new Error(\"AST root must be a Program or File node\");\n    }\n\n    if (options.cloneInputAst) {\n      ast = cloneDeep(ast);\n    }\n  } else {\n    ast = yield* parser(pluginPasses, options, code);\n  }\n\n  let inputMap = null;\n  if (options.inputSourceMap !== false) {\n    // If an explicit object is passed in, it overrides the processing of\n    // source maps that may be in the file itself.\n    if (typeof options.inputSourceMap === \"object\") {\n      inputMap = convertSourceMap.fromObject(options.inputSourceMap);\n    }\n\n    if (!inputMap) {\n      const lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);\n      if (lastComment) {\n        try {\n          inputMap = convertSourceMap.fromComment(\"//\" + lastComment);\n        } catch (err) {\n          if (process.env.BABEL_8_BREAKING) {\n            console.warn(\n              \"discarding unknown inline input sourcemap\",\n              options.filename,\n              err,\n            );\n          } else {\n            debug(\"discarding unknown inline input sourcemap\");\n          }\n        }\n      }\n    }\n\n    if (!inputMap) {\n      const lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);\n      if (typeof options.filename === \"string\" && lastComment) {\n        try {\n          // when `lastComment` is non-null, EXTERNAL_SOURCEMAP_REGEX must have matches\n          const match: [string, string] = EXTERNAL_SOURCEMAP_REGEX.exec(\n            lastComment,\n          ) as any;\n          const inputMapContent = fs.readFileSync(\n            path.resolve(path.dirname(options.filename), match[1]),\n            \"utf8\",\n          );\n          inputMap = convertSourceMap.fromJSON(inputMapContent);\n        } catch (err) {\n          debug(\"discarding unknown file input sourcemap\", err);\n        }\n      } else if (lastComment) {\n        debug(\"discarding un-loadable file input sourcemap\");\n      }\n    }\n  }\n\n  return new File(options, {\n    code,\n    ast: ast,\n    inputMap,\n  });\n}\n\nfunction extractCommentsFromList(\n  regex: RegExp,\n  comments: t.Comment[],\n  lastComment: string | null,\n): [t.Comment[], string | null] {\n  if (comments) {\n    comments = comments.filter(({ value }) => {\n      if (regex.test(value)) {\n        lastComment = value;\n        return false;\n      }\n      return true;\n    });\n  }\n  return [comments, lastComment];\n}\n\nfunction extractComments(regex: RegExp, ast: t.Node) {\n  let lastComment: string = null;\n  traverseFast(ast, node => {\n    [node.leadingComments, lastComment] = extractCommentsFromList(\n      regex,\n      node.leadingComments,\n      lastComment,\n    );\n    [node.innerComments, lastComment] = extractCommentsFromList(\n      regex,\n      node.innerComments,\n      lastComment,\n    );\n    [node.trailingComments, lastComment] = extractCommentsFromList(\n      regex,\n      node.trailingComments,\n      lastComment,\n    );\n  });\n  return lastComment;\n}\n","import { GenMapping, maybeAddSegment, setSourceContent } from '@jridgewell/gen-mapping';\nimport { traceSegment, decodedMappings } from '@jridgewell/trace-mapping';\n\nimport type { TraceMap } from '@jridgewell/trace-mapping';\n\nexport type SourceMapSegmentObject = {\n  column: number;\n  line: number;\n  name: string;\n  source: string;\n  content: string | null;\n};\n\nexport type OriginalSource = {\n  map: null;\n  sources: Sources[];\n  source: string;\n  content: string | null;\n};\n\nexport type MapSource = {\n  map: TraceMap;\n  sources: Sources[];\n  source: string;\n  content: null;\n};\n\nexport type Sources = OriginalSource | MapSource;\n\nconst SOURCELESS_MAPPING = /* #__PURE__ */ SegmentObject('', -1, -1, '', null);\nconst EMPTY_SOURCES: Sources[] = [];\n\nfunction SegmentObject(\n  source: string,\n  line: number,\n  column: number,\n  name: string,\n  content: string | null\n): SourceMapSegmentObject {\n  return { source, line, column, name, content };\n}\n\nfunction Source(map: TraceMap, sources: Sources[], source: '', content: null): MapSource;\nfunction Source(\n  map: null,\n  sources: Sources[],\n  source: string,\n  content: string | null\n): OriginalSource;\nfunction Source(\n  map: TraceMap | null,\n  sources: Sources[],\n  source: string | '',\n  content: string | null\n): Sources {\n  return {\n    map,\n    sources,\n    source,\n    content,\n  } as any;\n}\n\n/**\n * MapSource represents a single sourcemap, with the ability to trace mappings into its child nodes\n * (which may themselves be SourceMapTrees).\n */\nexport function MapSource(map: TraceMap, sources: Sources[]): MapSource {\n  return Source(map, sources, '', null);\n}\n\n/**\n * A \"leaf\" node in the sourcemap tree, representing an original, unmodified source file. Recursive\n * segment tracing ends at the `OriginalSource`.\n */\nexport function OriginalSource(source: string, content: string | null): OriginalSource {\n  return Source(null, EMPTY_SOURCES, source, content);\n}\n\n/**\n * traceMappings is only called on the root level SourceMapTree, and begins the process of\n * resolving each mapping in terms of the original source files.\n */\nexport function traceMappings(tree: MapSource): GenMapping {\n  // TODO: Eventually support sourceRoot, which has to be removed because the sources are already\n  // fully resolved. We'll need to make sources relative to the sourceRoot before adding them.\n  const gen = new GenMapping({ file: tree.map.file });\n  const { sources: rootSources, map } = tree;\n  const rootNames = map.names;\n  const rootMappings = decodedMappings(map);\n\n  for (let i = 0; i < rootMappings.length; i++) {\n    const segments = rootMappings[i];\n\n    for (let j = 0; j < segments.length; j++) {\n      const segment = segments[j];\n      const genCol = segment[0];\n      let traced: SourceMapSegmentObject | null = SOURCELESS_MAPPING;\n\n      // 1-length segments only move the current generated column, there's no source information\n      // to gather from it.\n      if (segment.length !== 1) {\n        const source = rootSources[segment[1]];\n        traced = originalPositionFor(\n          source,\n          segment[2],\n          segment[3],\n          segment.length === 5 ? rootNames[segment[4]] : ''\n        );\n\n        // If the trace is invalid, then the trace ran into a sourcemap that doesn't contain a\n        // respective segment into an original source.\n        if (traced == null) continue;\n      }\n\n      const { column, line, name, content, source } = traced;\n\n      maybeAddSegment(gen, i, genCol, source, line, column, name);\n      if (source && content != null) setSourceContent(gen, source, content);\n    }\n  }\n\n  return gen;\n}\n\n/**\n * originalPositionFor is only called on children SourceMapTrees. It recurses down into its own\n * child SourceMapTrees, until we find the original source map.\n */\nexport function originalPositionFor(\n  source: Sources,\n  line: number,\n  column: number,\n  name: string\n): SourceMapSegmentObject | null {\n  if (!source.map) {\n    return SegmentObject(source.source, line, column, name, source.content);\n  }\n\n  const segment = traceSegment(source.map, line, column);\n\n  // If we couldn't find a segment, then this doesn't exist in the sourcemap.\n  if (segment == null) return null;\n  // 1-length segments only move the current generated column, there's no source information\n  // to gather from it.\n  if (segment.length === 1) return SOURCELESS_MAPPING;\n\n  return originalPositionFor(\n    source.sources[segment[1]],\n    segment[2],\n    segment[3],\n    segment.length === 5 ? source.map.names[segment[4]] : name\n  );\n}\n","import { TraceMap } from '@jridgewell/trace-mapping';\n\nimport { OriginalSource, MapSource } from './source-map-tree';\n\nimport type { Sources, MapSource as MapSourceType } from './source-map-tree';\nimport type { SourceMapInput, SourceMapLoader, LoaderContext } from './types';\n\nfunction asArray<T>(value: T | T[]): T[] {\n  if (Array.isArray(value)) return value;\n  return [value];\n}\n\n/**\n * Recursively builds a tree structure out of sourcemap files, with each node\n * being either an `OriginalSource` \"leaf\" or a `SourceMapTree` composed of\n * `OriginalSource`s and `SourceMapTree`s.\n *\n * Every sourcemap is composed of a collection of source files and mappings\n * into locations of those source files. When we generate a `SourceMapTree` for\n * the sourcemap, we attempt to load each source file's own sourcemap. If it\n * does not have an associated sourcemap, it is considered an original,\n * unmodified source file.\n */\nexport default function buildSourceMapTree(\n  input: SourceMapInput | SourceMapInput[],\n  loader: SourceMapLoader\n): MapSourceType {\n  const maps = asArray(input).map((m) => new TraceMap(m, ''));\n  const map = maps.pop()!;\n\n  for (let i = 0; i < maps.length; i++) {\n    if (maps[i].sources.length > 1) {\n      throw new Error(\n        `Transformation map ${i} must have exactly one source file.\\n` +\n          'Did you specify these with the most recent transformation maps first?'\n      );\n    }\n  }\n\n  let tree = build(map, loader, '', 0);\n  for (let i = maps.length - 1; i >= 0; i--) {\n    tree = MapSource(maps[i], [tree]);\n  }\n  return tree;\n}\n\nfunction build(\n  map: TraceMap,\n  loader: SourceMapLoader,\n  importer: string,\n  importerDepth: number\n): MapSourceType {\n  const { resolvedSources, sourcesContent } = map;\n\n  const depth = importerDepth + 1;\n  const children = resolvedSources.map((sourceFile: string | null, i: number): Sources => {\n    // The loading context gives the loader more information about why this file is being loaded\n    // (eg, from which importer). It also allows the loader to override the location of the loaded\n    // sourcemap/original source, or to override the content in the sourcesContent field if it's\n    // an unmodified source file.\n    const ctx: LoaderContext = {\n      importer,\n      depth,\n      source: sourceFile || '',\n      content: undefined,\n    };\n\n    // Use the provided loader callback to retrieve the file's sourcemap.\n    // TODO: We should eventually support async loading of sourcemap files.\n    const sourceMap = loader(ctx.source, ctx);\n\n    const { source, content } = ctx;\n\n    // If there is a sourcemap, then we need to recurse into it to load its source files.\n    if (sourceMap) return build(new TraceMap(sourceMap, source), loader, source, depth);\n\n    // Else, it's an an unmodified source file.\n    // The contents of this unmodified source file can be overridden via the loader context,\n    // allowing it to be explicitly null or a string. If it remains undefined, we fall back to\n    // the importing sourcemap's `sourcesContent` field.\n    const sourceContent =\n      content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;\n    return OriginalSource(source, sourceContent);\n  });\n\n  return MapSource(map, children);\n}\n","import { toDecodedMap, toEncodedMap } from '@jridgewell/gen-mapping';\n\nimport type { GenMapping } from '@jridgewell/gen-mapping';\nimport type { DecodedSourceMap, EncodedSourceMap, Options } from './types';\n\n/**\n * A SourceMap v3 compatible sourcemap, which only includes fields that were\n * provided to it.\n */\nexport default class SourceMap {\n  declare file?: string | null;\n  declare mappings: EncodedSourceMap['mappings'] | DecodedSourceMap['mappings'];\n  declare sourceRoot?: string;\n  declare names: string[];\n  declare sources: (string | null)[];\n  declare sourcesContent?: (string | null)[];\n  declare version: 3;\n\n  constructor(map: GenMapping, options: Options) {\n    const out = options.decodedMappings ? toDecodedMap(map) : toEncodedMap(map);\n    this.version = out.version; // SourceMap spec says this should be first.\n    this.file = out.file;\n    this.mappings = out.mappings as SourceMap['mappings'];\n    this.names = out.names as SourceMap['names'];\n\n    this.sourceRoot = out.sourceRoot;\n\n    this.sources = out.sources as SourceMap['sources'];\n    if (!options.excludeContent) {\n      this.sourcesContent = out.sourcesContent as SourceMap['sourcesContent'];\n    }\n  }\n\n  toString(): string {\n    return JSON.stringify(this);\n  }\n}\n","import buildSourceMapTree from './build-source-map-tree';\nimport { traceMappings } from './source-map-tree';\nimport SourceMap from './source-map';\n\nimport type { SourceMapInput, SourceMapLoader, Options } from './types';\nexport type {\n  SourceMapSegment,\n  EncodedSourceMap,\n  EncodedSourceMap as RawSourceMap,\n  DecodedSourceMap,\n  SourceMapInput,\n  SourceMapLoader,\n  LoaderContext,\n  Options,\n} from './types';\n\n/**\n * Traces through all the mappings in the root sourcemap, through the sources\n * (and their sourcemaps), all the way back to the original source location.\n *\n * `loader` will be called every time we encounter a source file. If it returns\n * a sourcemap, we will recurse into that sourcemap to continue the trace. If\n * it returns a falsey value, that source file is treated as an original,\n * unmodified source file.\n *\n * Pass `excludeContent` to exclude any self-containing source file content\n * from the output sourcemap.\n *\n * Pass `decodedMappings` to receive a SourceMap with decoded (instead of\n * VLQ encoded) mappings.\n */\nexport default function remapping(\n  input: SourceMapInput | SourceMapInput[],\n  loader: SourceMapLoader,\n  options?: boolean | Options\n): SourceMap {\n  const opts =\n    typeof options === 'object' ? options : { excludeContent: !!options, decodedMappings: false };\n  const tree = buildSourceMapTree(input, loader);\n  return new SourceMap(traceMappings(tree), opts);\n}\n","type SourceMap = any;\nimport remapping from \"@ampproject/remapping\";\n\nexport default function mergeSourceMap(\n  inputMap: SourceMap,\n  map: SourceMap,\n  sourceFileName: string,\n): SourceMap {\n  // On win32 machines, the sourceFileName uses backslash paths like\n  // `C:\\foo\\bar.js`. But sourcemaps are always posix paths, so we need to\n  // normalize to regular slashes before we can merge (else we won't find the\n  // source associated with our input map).\n  // This mirrors code done while generating the output map at\n  // https://github.com/babel/babel/blob/5c2fcadc9ae34fd20dd72b1111d5cf50476d700d/packages/babel-generator/src/source-map.ts#L102\n  const source = sourceFileName.replace(/\\\\/g, \"/\");\n\n  // Prevent an infinite recursion if one of the input map's sources has the\n  // same resolved path as the input map. In the case, it would keep find the\n  // input map, then get it's sources which will include a path like the input\n  // map, on and on.\n  let found = false;\n  const result = remapping(rootless(map), (s, ctx) => {\n    if (s === source && !found) {\n      found = true;\n      // We empty the source location, which will prevent the sourcemap from\n      // becoming relative to the input's location. Eg, if we're transforming a\n      // file 'foo/bar.js', and it is a transformation of a `baz.js` file in the\n      // same directory, the expected output is just `baz.js`. Without this step,\n      // it would become `foo/baz.js`.\n      ctx.source = \"\";\n\n      return rootless(inputMap);\n    }\n\n    return null;\n  });\n\n  if (typeof inputMap.sourceRoot === \"string\") {\n    result.sourceRoot = inputMap.sourceRoot;\n  }\n\n  // remapping returns a SourceMap class type, but this breaks code downstream in\n  // @babel/traverse and @babel/types that relies on data being plain objects.\n  // When it encounters the sourcemap type it outputs a \"don't know how to turn\n  // this value into a node\" error. As a result, we are converting the merged\n  // sourcemap to a plain js object.\n  return { ...result };\n}\n\nfunction rootless(map: SourceMap): SourceMap {\n  return {\n    ...map,\n\n    // This is a bit hack. Remapping will create absolute sources in our\n    // sourcemap, but we want to maintain sources relative to the sourceRoot.\n    // We'll re-add the sourceRoot after remapping.\n    sourceRoot: null,\n  };\n}\n","import type { PluginPasses } from \"../../config/index.ts\";\nimport convertSourceMap from \"convert-source-map\";\nimport type { GeneratorResult } from \"@babel/generator\";\nimport generate from \"@babel/generator\";\n\nimport type File from \"./file.ts\";\nimport mergeSourceMap from \"./merge-map.ts\";\n\nexport default function generateCode(\n  pluginPasses: PluginPasses,\n  file: File,\n): {\n  outputCode: string;\n  outputMap: GeneratorResult[\"map\"] | null;\n} {\n  const { opts, ast, code, inputMap } = file;\n  const { generatorOpts } = opts;\n\n  generatorOpts.inputSourceMap = inputMap?.toObject();\n\n  const results = [];\n  for (const plugins of pluginPasses) {\n    for (const plugin of plugins) {\n      const { generatorOverride } = plugin;\n      if (generatorOverride) {\n        const result = generatorOverride(ast, generatorOpts, code, generate);\n\n        if (result !== undefined) results.push(result);\n      }\n    }\n  }\n\n  let result;\n  if (results.length === 0) {\n    result = generate(ast, generatorOpts, code);\n  } else if (results.length === 1) {\n    result = results[0];\n\n    if (typeof result.then === \"function\") {\n      throw new Error(\n        `You appear to be using an async codegen plugin, ` +\n          `which your current version of Babel does not support. ` +\n          `If you're using a published plugin, ` +\n          `you may need to upgrade your @babel/core version.`,\n      );\n    }\n  } else {\n    throw new Error(\"More than one plugin attempted to override codegen.\");\n  }\n\n  // Decoded maps are faster to merge, so we attempt to get use the decodedMap\n  // first. But to preserve backwards compat with older Generator, we'll fall\n  // back to the encoded map.\n  let { code: outputCode, decodedMap: outputMap = result.map } = result;\n\n  // For backwards compat.\n  if (result.__mergedMap) {\n    /**\n     * @see mergeSourceMap\n     */\n    outputMap = { ...result.map };\n  } else {\n    if (outputMap) {\n      if (inputMap) {\n        // mergeSourceMap returns an encoded map\n        outputMap = mergeSourceMap(\n          inputMap.toObject(),\n          outputMap,\n          generatorOpts.sourceFileName,\n        );\n      } else {\n        // We cannot output a decoded map, so retrieve the encoded form. Because\n        // the decoded form is free, it's fine to prioritize decoded first.\n        outputMap = result.map;\n      }\n    }\n  }\n\n  if (opts.sourceMaps === \"inline\" || opts.sourceMaps === \"both\") {\n    outputCode += \"\\n\" + convertSourceMap.fromObject(outputMap).toComment();\n  }\n\n  if (opts.sourceMaps === \"inline\") {\n    outputMap = null;\n  }\n\n  return { outputCode, outputMap };\n}\n","import traverse from \"@babel/traverse\";\nimport type * as t from \"@babel/types\";\nimport type { GeneratorResult } from \"@babel/generator\";\n\nimport type { Handler } from \"gensync\";\n\nimport type { ResolvedConfig, Plugin, PluginPasses } from \"../config/index.ts\";\n\nimport PluginPass from \"./plugin-pass.ts\";\nimport loadBlockHoistPlugin from \"./block-hoist-plugin.ts\";\nimport normalizeOptions from \"./normalize-opts.ts\";\nimport normalizeFile from \"./normalize-file.ts\";\n\nimport generateCode from \"./file/generate.ts\";\nimport type File from \"./file/file.ts\";\n\nimport { flattenToSet } from \"../config/helpers/deep-array.ts\";\nimport { isAsync, maybeAsync } from \"../gensync-utils/async.ts\";\n\nexport type FileResultCallback = {\n  (err: Error, file: null): void;\n  (err: null, file: FileResult | null): void;\n};\n\nexport type FileResult = {\n  metadata: { [key: string]: any };\n  options: { [key: string]: any };\n  ast: t.File | null;\n  code: string | null;\n  map: GeneratorResult[\"map\"] | null;\n  sourceType: \"script\" | \"module\";\n  externalDependencies: Set<string>;\n};\n\nexport function* run(\n  config: ResolvedConfig,\n  code: string,\n  ast?: t.File | t.Program | null,\n): Handler<FileResult> {\n  const file = yield* normalizeFile(\n    config.passes,\n    normalizeOptions(config),\n    code,\n    ast,\n  );\n\n  const opts = file.opts;\n  try {\n    yield* transformFile(file, config.passes);\n  } catch (e) {\n    e.message = `${opts.filename ?? \"unknown file\"}: ${e.message}`;\n    if (!e.code) {\n      e.code = \"BABEL_TRANSFORM_ERROR\";\n    }\n    throw e;\n  }\n\n  let outputCode, outputMap;\n  try {\n    if (opts.code !== false) {\n      ({ outputCode, outputMap } = generateCode(config.passes, file));\n    }\n  } catch (e) {\n    e.message = `${opts.filename ?? \"unknown file\"}: ${e.message}`;\n    if (!e.code) {\n      e.code = \"BABEL_GENERATE_ERROR\";\n    }\n    throw e;\n  }\n\n  return {\n    metadata: file.metadata,\n    options: opts,\n    ast: opts.ast === true ? file.ast : null,\n    code: outputCode === undefined ? null : outputCode,\n    map: outputMap === undefined ? null : outputMap,\n    sourceType: file.ast.program.sourceType,\n    externalDependencies: flattenToSet(config.externalDependencies),\n  };\n}\n\nfunction* transformFile(file: File, pluginPasses: PluginPasses): Handler<void> {\n  const async = yield* isAsync();\n\n  for (const pluginPairs of pluginPasses) {\n    const passPairs: [Plugin, PluginPass][] = [];\n    const passes = [];\n    const visitors = [];\n\n    for (const plugin of pluginPairs.concat([loadBlockHoistPlugin()])) {\n      const pass = new PluginPass(file, plugin.key, plugin.options, async);\n\n      passPairs.push([plugin, pass]);\n      passes.push(pass);\n      visitors.push(plugin.visitor);\n    }\n\n    for (const [plugin, pass] of passPairs) {\n      if (plugin.pre) {\n        const fn = maybeAsync(\n          plugin.pre,\n          `You appear to be using an async plugin/preset, but Babel has been called synchronously`,\n        );\n\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        yield* fn.call(pass, file);\n      }\n    }\n\n    // merge all plugin visitors into a single visitor\n    const visitor = traverse.visitors.merge(\n      visitors,\n      passes,\n      file.opts.wrapPluginVisitorMethod,\n    );\n    if (process.env.BABEL_8_BREAKING) {\n      traverse(file.ast.program, visitor, file.scope, null, file.path, true);\n    } else {\n      traverse(file.ast, visitor, file.scope);\n    }\n\n    for (const [plugin, pass] of passPairs) {\n      if (plugin.post) {\n        const fn = maybeAsync(\n          plugin.post,\n          `You appear to be using an async plugin/preset, but Babel has been called synchronously`,\n        );\n\n        // eslint-disable-next-line @typescript-eslint/no-floating-promises\n        yield* fn.call(pass, file);\n      }\n    }\n  }\n}\n","import gensync, { type Handler } from \"gensync\";\n\nimport loadConfig from \"./config/index.ts\";\nimport type { InputOptions, ResolvedConfig } from \"./config/index.ts\";\nimport { run } from \"./transformation/index.ts\";\n\nimport type { FileResult, FileResultCallback } from \"./transformation/index.ts\";\nimport { beginHiddenCallStack } from \"./errors/rewrite-stack-trace.ts\";\n\nexport type { FileResult } from \"./transformation/index.ts\";\n\ntype Transform = {\n  (code: string, callback: FileResultCallback): void;\n  (\n    code: string,\n    opts: InputOptions | undefined | null,\n    callback: FileResultCallback,\n  ): void;\n  (code: string, opts?: InputOptions | null): FileResult | null;\n};\n\nconst transformRunner = gensync(function* transform(\n  code: string,\n  opts?: InputOptions,\n): Handler<FileResult | null> {\n  const config: ResolvedConfig | null = yield* loadConfig(opts);\n  if (config === null) return null;\n\n  return yield* run(config, code);\n});\n\nexport const transform: Transform = function transform(\n  code,\n  optsOrCallback?: InputOptions | null | undefined | FileResultCallback,\n  maybeCallback?: FileResultCallback,\n) {\n  let opts: InputOptions | undefined | null;\n  let callback: FileResultCallback | undefined;\n  if (typeof optsOrCallback === \"function\") {\n    callback = optsOrCallback;\n    opts = undefined;\n  } else {\n    opts = optsOrCallback;\n    callback = maybeCallback;\n  }\n\n  if (callback === undefined) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'transform' function expects a callback. If you need to call it synchronously, please use 'transformSync'.\",\n      );\n    } else {\n      // console.warn(\n      //   \"Starting from Babel 8.0.0, the 'transform' function will expect a callback. If you need to call it synchronously, please use 'transformSync'.\",\n      // );\n      return beginHiddenCallStack(transformRunner.sync)(code, opts);\n    }\n  }\n\n  beginHiddenCallStack(transformRunner.errback)(code, opts, callback);\n};\n\nexport function transformSync(\n  ...args: Parameters<typeof transformRunner.sync>\n) {\n  return beginHiddenCallStack(transformRunner.sync)(...args);\n}\nexport function transformAsync(\n  ...args: Parameters<typeof transformRunner.async>\n) {\n  return beginHiddenCallStack(transformRunner.async)(...args);\n}\n","// duplicated from transform-file so we do not have to import anything here\ntype TransformFile = {\n  (filename: string, callback: (error: Error, file: null) => void): void;\n  (\n    filename: string,\n    opts: any,\n    callback: (error: Error, file: null) => void,\n  ): void;\n};\n\nexport const transformFile: TransformFile = function transformFile(\n  filename,\n  opts,\n  callback?: (error: Error, file: null) => void,\n) {\n  if (typeof opts === \"function\") {\n    callback = opts;\n  }\n\n  callback(new Error(\"Transforming files is not supported in browsers\"), null);\n};\n\nexport function transformFileSync(): never {\n  throw new Error(\"Transforming files is not supported in browsers\");\n}\n\nexport function transformFileAsync() {\n  return Promise.reject(\n    new Error(\"Transforming files is not supported in browsers\"),\n  );\n}\n","import gensync, { type Handler } from \"gensync\";\n\nimport loadConfig from \"./config/index.ts\";\nimport type { InputOptions, ResolvedConfig } from \"./config/index.ts\";\nimport { run } from \"./transformation/index.ts\";\nimport type * as t from \"@babel/types\";\n\nimport { beginHiddenCallStack } from \"./errors/rewrite-stack-trace.ts\";\n\nimport type { FileResult, FileResultCallback } from \"./transformation/index.ts\";\ntype AstRoot = t.File | t.Program;\n\ntype TransformFromAst = {\n  (ast: AstRoot, code: string, callback: FileResultCallback): void;\n  (\n    ast: AstRoot,\n    code: string,\n    opts: InputOptions | undefined | null,\n    callback: FileResultCallback,\n  ): void;\n  (ast: AstRoot, code: string, opts?: InputOptions | null): FileResult | null;\n};\n\nconst transformFromAstRunner = gensync(function* (\n  ast: AstRoot,\n  code: string,\n  opts: InputOptions | undefined | null,\n): Handler<FileResult | null> {\n  const config: ResolvedConfig | null = yield* loadConfig(opts);\n  if (config === null) return null;\n\n  if (!ast) throw new Error(\"No AST given\");\n\n  return yield* run(config, code, ast);\n});\n\nexport const transformFromAst: TransformFromAst = function transformFromAst(\n  ast,\n  code,\n  optsOrCallback?: InputOptions | null | undefined | FileResultCallback,\n  maybeCallback?: FileResultCallback,\n) {\n  let opts: InputOptions | undefined | null;\n  let callback: FileResultCallback | undefined;\n  if (typeof optsOrCallback === \"function\") {\n    callback = optsOrCallback;\n    opts = undefined;\n  } else {\n    opts = optsOrCallback;\n    callback = maybeCallback;\n  }\n\n  if (callback === undefined) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'transformFromAst' function expects a callback. If you need to call it synchronously, please use 'transformFromAstSync'.\",\n      );\n    } else {\n      // console.warn(\n      //   \"Starting from Babel 8.0.0, the 'transformFromAst' function will expect a callback. If you need to call it synchronously, please use 'transformFromAstSync'.\",\n      // );\n      return beginHiddenCallStack(transformFromAstRunner.sync)(ast, code, opts);\n    }\n  }\n\n  beginHiddenCallStack(transformFromAstRunner.errback)(\n    ast,\n    code,\n    opts,\n    callback,\n  );\n};\n\nexport function transformFromAstSync(\n  ...args: Parameters<typeof transformFromAstRunner.sync>\n) {\n  return beginHiddenCallStack(transformFromAstRunner.sync)(...args);\n}\n\nexport function transformFromAstAsync(\n  ...args: Parameters<typeof transformFromAstRunner.async>\n) {\n  return beginHiddenCallStack(transformFromAstRunner.async)(...args);\n}\n","import gensync, { type Handler } from \"gensync\";\n\nimport loadConfig, { type InputOptions } from \"./config/index.ts\";\nimport parser, { type ParseResult } from \"./parser/index.ts\";\nimport normalizeOptions from \"./transformation/normalize-opts.ts\";\nimport type { ValidatedOptions } from \"./config/validation/options.ts\";\n\nimport { beginHiddenCallStack } from \"./errors/rewrite-stack-trace.ts\";\n\ntype FileParseCallback = {\n  (err: Error, ast: null): void;\n  (err: null, ast: ParseResult | null): void;\n};\n\ntype Parse = {\n  (code: string, callback: FileParseCallback): void;\n  (\n    code: string,\n    opts: InputOptions | undefined | null,\n    callback: FileParseCallback,\n  ): void;\n  (code: string, opts?: InputOptions | null): ParseResult | null;\n};\n\nconst parseRunner = gensync(function* parse(\n  code: string,\n  opts: InputOptions | undefined | null,\n): Handler<ParseResult | null> {\n  const config = yield* loadConfig(opts);\n\n  if (config === null) {\n    return null;\n  }\n\n  return yield* parser(config.passes, normalizeOptions(config), code);\n});\n\nexport const parse: Parse = function parse(\n  code,\n  opts?,\n  callback?: FileParseCallback,\n) {\n  if (typeof opts === \"function\") {\n    callback = opts;\n    opts = undefined as ValidatedOptions;\n  }\n\n  if (callback === undefined) {\n    if (process.env.BABEL_8_BREAKING) {\n      throw new Error(\n        \"Starting from Babel 8.0.0, the 'parse' function expects a callback. If you need to call it synchronously, please use 'parseSync'.\",\n      );\n    } else {\n      // console.warn(\n      //   \"Starting from Babel 8.0.0, the 'parse' function will expect a callback. If you need to call it synchronously, please use 'parseSync'.\",\n      // );\n      return beginHiddenCallStack(parseRunner.sync)(code, opts);\n    }\n  }\n\n  beginHiddenCallStack(parseRunner.errback)(code, opts, callback);\n};\n\nexport function parseSync(...args: Parameters<typeof parseRunner.sync>) {\n  return beginHiddenCallStack(parseRunner.sync)(...args);\n}\nexport function parseAsync(...args: Parameters<typeof parseRunner.async>) {\n  return beginHiddenCallStack(parseRunner.async)(...args);\n}\n","if (!process.env.IS_PUBLISH && !USE_ESM && process.env.BABEL_8_BREAKING) {\n  throw new Error(\n    \"BABEL_8_BREAKING is only supported in ESM. Please run `make use-esm`.\",\n  );\n}\n\nexport const version = PACKAGE_JSON.version;\n\nexport { default as File } from \"./transformation/file/file.ts\";\nexport type { default as PluginPass } from \"./transformation/plugin-pass.ts\";\nexport { default as buildExternalHelpers } from \"./tools/build-external-helpers.ts\";\n\nimport * as resolvers from \"./config/files/index.ts\";\n// For backwards-compatibility, we expose the resolvers\n// with the old API.\nexport const resolvePlugin = (name: string, dirname: string) =>\n  resolvers.resolvePlugin(name, dirname, false).filepath;\nexport const resolvePreset = (name: string, dirname: string) =>\n  resolvers.resolvePreset(name, dirname, false).filepath;\n\nexport { getEnv } from \"./config/helpers/environment.ts\";\n\n// NOTE: Lazy re-exports aren't detected by the Node.js CJS-ESM interop.\n// These are handled by pluginInjectNodeReexportsHints in our babel.config.js\n// so that they can work well.\nexport * as types from \"@babel/types\";\nexport { tokTypes } from \"@babel/parser\";\nexport { default as traverse } from \"@babel/traverse\";\nexport { default as template } from \"@babel/template\";\n\n// rollup-plugin-dts assumes that all re-exported types are also valid values\n// Visitor is only a type, so we need to use this workaround to prevent\n// rollup-plugin-dts from breaking it.\n// TODO: Figure out how to fix this upstream.\nexport type { NodePath, Scope } from \"@babel/traverse\";\nexport type Visitor<S = unknown> = import(\"@babel/traverse\").Visitor<S>;\n\nexport {\n  createConfigItem,\n  createConfigItemAsync,\n  createConfigItemSync,\n} from \"./config/index.ts\";\n\nexport {\n  loadOptions,\n  loadOptionsAsync,\n  loadPartialConfig,\n  loadPartialConfigAsync,\n  loadPartialConfigSync,\n} from \"./config/index.ts\";\nimport { loadOptionsSync } from \"./config/index.ts\";\nexport { loadOptionsSync };\n\nexport type {\n  CallerMetadata,\n  ConfigItem,\n  InputOptions,\n  PluginAPI,\n  PluginObject,\n  PresetAPI,\n  PresetObject,\n} from \"./config/index.ts\";\n\nexport {\n  type FileResult,\n  transform,\n  transformAsync,\n  transformSync,\n} from \"./transform.ts\";\nexport {\n  transformFile,\n  transformFileAsync,\n  transformFileSync,\n} from \"./transform-file.ts\";\nexport {\n  transformFromAst,\n  transformFromAstAsync,\n  transformFromAstSync,\n} from \"./transform-ast.ts\";\nexport { parse, parseAsync, parseSync } from \"./parse.ts\";\n\n/**\n * Recommended set of compilable extensions. Not used in @babel/core directly, but meant as\n * as an easy source for tooling making use of @babel/core.\n */\nexport const DEFAULT_EXTENSIONS = Object.freeze([\n  \".js\",\n  \".jsx\",\n  \".es6\",\n  \".es\",\n  \".mjs\",\n  \".cjs\",\n] as const);\n\nimport Module from \"module\" with { if: \"USE_ESM && !IS_STANDALONE\" };\nimport * as thisFile from \"./index.ts\" with { if: \"USE_ESM && !IS_STANDALONE\" };\nif (USE_ESM && !IS_STANDALONE) {\n  // Pass this module to the CJS proxy, so that it can be synchronously accessed.\n  const cjsProxy = Module.createRequire(import.meta.url)(\"../cjs-proxy.cjs\");\n  cjsProxy[\"__ initialize @babel/core cjs proxy __\"] = thisFile;\n}\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM) {\n  // For easier backward-compatibility, provide an API like the one we exposed in Babel 6.\n  // eslint-disable-next-line no-restricted-globals\n  exports.OptionManager = class OptionManager {\n    init(opts: any) {\n      return loadOptionsSync(opts);\n    }\n  };\n\n  // eslint-disable-next-line no-restricted-globals\n  exports.Plugin = function Plugin(alias: string) {\n    throw new Error(\n      `The (${alias}) Babel 5 plugin is being run with an unsupported Babel version.`,\n    );\n  };\n}\n","import type { NodePath } from \"@babel/traverse\";\n\n/**\n * Test if a NodePath will be cast to boolean when evaluated.\n *\n * @example\n * // returns true\n * const nodePathAQDotB = NodePath(\"if (a?.#b) {}\").get(\"test\"); // a?.#b\n * willPathCastToBoolean(nodePathAQDotB)\n * @example\n * // returns false\n * willPathCastToBoolean(NodePath(\"a?.#b\"))\n * @todo Respect transparent expression wrappers\n * @see {@link packages/babel-plugin-transform-optional-chaining/src/util.js}\n * @param {NodePath} path\n * @returns {boolean}\n */\nexport function willPathCastToBoolean(path: NodePath): boolean {\n  const maybeWrapped = path;\n  const { node, parentPath } = maybeWrapped;\n  if (parentPath.isLogicalExpression()) {\n    const { operator, right } = parentPath.node;\n    if (\n      operator === \"&&\" ||\n      operator === \"||\" ||\n      (operator === \"??\" && node === right)\n    ) {\n      return willPathCastToBoolean(parentPath);\n    }\n  }\n  if (parentPath.isSequenceExpression()) {\n    const { expressions } = parentPath.node;\n    if (expressions[expressions.length - 1] === node) {\n      return willPathCastToBoolean(parentPath);\n    } else {\n      // if it is in the middle of a sequence expression, we don't\n      // care the return value so just cast to boolean for smaller\n      // output\n      return true;\n    }\n  }\n  return (\n    parentPath.isConditional({ test: node }) ||\n    parentPath.isUnaryExpression({ operator: \"!\" }) ||\n    parentPath.isLoop({ test: node })\n  );\n}\n","import type { NodePath, Visitor } from \"@babel/traverse\";\nimport {\n  LOGICAL_OPERATORS,\n  arrowFunctionExpression,\n  assignmentExpression,\n  binaryExpression,\n  booleanLiteral,\n  callExpression,\n  cloneNode,\n  conditionalExpression,\n  identifier,\n  isMemberExpression,\n  isOptionalCallExpression,\n  isOptionalMemberExpression,\n  isUpdateExpression,\n  logicalExpression,\n  memberExpression,\n  nullLiteral,\n  optionalCallExpression,\n  optionalMemberExpression,\n  sequenceExpression,\n  updateExpression,\n} from \"@babel/types\";\nimport type * as t from \"@babel/types\";\nimport { willPathCastToBoolean } from \"./util.ts\";\n\nclass AssignmentMemoiser {\n  private _map: WeakMap<t.Expression, { count: number; value: t.Identifier }>;\n  constructor() {\n    this._map = new WeakMap();\n  }\n\n  has(key: t.Expression) {\n    return this._map.has(key);\n  }\n\n  get(key: t.Expression) {\n    if (!this.has(key)) return;\n\n    const record = this._map.get(key);\n    const { value } = record;\n\n    record.count--;\n    if (record.count === 0) {\n      // The `count` access is the outermost function call (hopefully), so it\n      // does the assignment.\n      return assignmentExpression(\"=\", value, key);\n    }\n    return value;\n  }\n\n  set(key: t.Expression, value: t.Identifier, count: number) {\n    return this._map.set(key, { count, value });\n  }\n}\n\nfunction toNonOptional(\n  path: NodePath<t.Expression>,\n  base: t.Expression,\n): t.Expression {\n  const { node } = path;\n  if (isOptionalMemberExpression(node)) {\n    return memberExpression(base, node.property, node.computed);\n  }\n\n  if (path.isOptionalCallExpression()) {\n    const callee = path.get(\"callee\");\n    if (path.node.optional && callee.isOptionalMemberExpression()) {\n      // object must be a conditional expression because the optional private access in object has been transformed\n      const object = callee.node.object as t.ConditionalExpression;\n      const context = path.scope.maybeGenerateMemoised(object);\n      callee\n        .get(\"object\")\n        .replaceWith(assignmentExpression(\"=\", context, object));\n\n      return callExpression(memberExpression(base, identifier(\"call\")), [\n        context,\n        ...path.node.arguments,\n      ]);\n    }\n\n    return callExpression(base, path.node.arguments);\n  }\n\n  return path.node;\n}\n\n// Determines if the current path is in a detached tree. This can happen when\n// we are iterating on a path, and replace an ancestor with a new node. Babel\n// doesn't always stop traversing the old node tree, and that can cause\n// inconsistencies.\nfunction isInDetachedTree(path: NodePath) {\n  while (path) {\n    if (path.isProgram()) break;\n\n    const { parentPath, container, listKey } = path;\n    const parentNode = parentPath.node;\n    if (listKey) {\n      if (\n        container !==\n        // @ts-expect-error listKey must be a valid parent node key\n        parentNode[listKey]\n      ) {\n        return true;\n      }\n    } else {\n      if (container !== parentNode) return true;\n    }\n\n    path = parentPath;\n  }\n\n  return false;\n}\n\ntype Member = NodePath<t.OptionalMemberExpression | t.MemberExpression>;\n\nconst handle = {\n  memoise() {\n    // noop.\n  },\n\n  handle(this: HandlerState, member: Member, noDocumentAll: boolean) {\n    const { node, parent, parentPath, scope } = member;\n\n    if (member.isOptionalMemberExpression()) {\n      // Transforming optional chaining requires we replace ancestors.\n      if (isInDetachedTree(member)) return;\n\n      // We're looking for the end of _this_ optional chain, which is actually\n      // the \"rightmost\" property access of the chain. This is because\n      // everything up to that property access is \"optional\".\n      //\n      // Let's take the case of `FOO?.BAR.baz?.qux`, with `FOO?.BAR` being our\n      // member. The \"end\" to most users would be `qux` property access.\n      // Everything up to it could be skipped if it `FOO` were nullish. But\n      // actually, we can consider the `baz` access to be the end. So we're\n      // looking for the nearest optional chain that is `optional: true`.\n      const endPath = member.find(({ node, parent }) => {\n        if (isOptionalMemberExpression(parent)) {\n          // We need to check `parent.object` since we could be inside the\n          // computed expression of a `bad?.[FOO?.BAR]`. In this case, the\n          // endPath is the `FOO?.BAR` member itself.\n          return parent.optional || parent.object !== node;\n        }\n        if (isOptionalCallExpression(parent)) {\n          // Checking `parent.callee` since we could be in the arguments, eg\n          // `bad?.(FOO?.BAR)`.\n          // Also skip `FOO?.BAR` in `FOO?.BAR?.()` since we need to transform the optional call to ensure proper this\n          return (\n            // In FOO?.#BAR?.(), endPath points the optional call expression so we skip FOO?.#BAR\n            (node !== member.node && parent.optional) || parent.callee !== node\n          );\n        }\n        return true;\n      }) as NodePath<t.OptionalMemberExpression>;\n\n      // Replace `function (a, x = a.b?.#c) {}` to `function (a, x = (() => a.b?.#c)() ){}`\n      // so the temporary variable can be injected in correct scope\n      // This can be further optimized to avoid unnecessary IIFE\n      if (scope.path.isPattern()) {\n        endPath.replaceWith(\n          // The injected member will be queued and eventually transformed when visited\n          callExpression(arrowFunctionExpression([], endPath.node), []),\n        );\n        return;\n      }\n\n      const willEndPathCastToBoolean = willPathCastToBoolean(endPath);\n\n      const rootParentPath = endPath.parentPath;\n      if (rootParentPath.isUpdateExpression({ argument: node })) {\n        throw member.buildCodeFrameError(`can't handle update expression`);\n      }\n      const isAssignment = rootParentPath.isAssignmentExpression({\n        left: endPath.node,\n      });\n      const isDeleteOperation = rootParentPath.isUnaryExpression({\n        operator: \"delete\",\n      });\n      if (\n        isDeleteOperation &&\n        endPath.isOptionalMemberExpression() &&\n        endPath.get(\"property\").isPrivateName()\n      ) {\n        // @babel/parser will throw error on `delete obj?.#x`.\n        // This error serves as fallback when `delete obj?.#x` is constructed from babel types\n        throw member.buildCodeFrameError(\n          `can't delete a private class element`,\n        );\n      }\n\n      // Now, we're looking for the start of this optional chain, which is\n      // optional to the left of this member.\n      //\n      // Let's take the case of `foo?.bar?.baz.QUX?.BAM`, with `QUX?.BAM` being\n      // our member. The \"start\" to most users would be `foo` object access.\n      // But actually, we can consider the `bar` access to be the start. So\n      // we're looking for the nearest optional chain that is `optional: true`,\n      // which is guaranteed to be somewhere in the object/callee tree.\n      let startingOptional: NodePath<t.Expression> = member;\n      for (;;) {\n        if (startingOptional.isOptionalMemberExpression()) {\n          if (startingOptional.node.optional) break;\n          startingOptional = startingOptional.get(\"object\");\n          continue;\n        } else if (startingOptional.isOptionalCallExpression()) {\n          if (startingOptional.node.optional) break;\n          startingOptional = startingOptional.get(\"callee\");\n          continue;\n        }\n        // prevent infinite loop: unreachable if the AST is well-formed\n        throw new Error(\n          `Internal error: unexpected ${startingOptional.node.type}`,\n        );\n      }\n\n      const startingNode = startingOptional.isOptionalMemberExpression()\n        ? startingOptional.node.object\n        : startingOptional.node.callee;\n      const baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);\n      const baseRef = baseNeedsMemoised ?? startingNode;\n\n      // Compute parentIsOptionalCall before `startingOptional` is replaced\n      // as `node` may refer to `startingOptional.node` before replaced.\n      const parentIsOptionalCall = parentPath.isOptionalCallExpression({\n        callee: node,\n      });\n      // here we use a function to wrap `parentIsOptionalCall` to get type\n      // for parent, do not use it anywhere else\n      // See https://github.com/microsoft/TypeScript/issues/10421\n      const isOptionalCall = (\n        parent: t.Node,\n      ): parent is t.OptionalCallExpression => parentIsOptionalCall;\n      // if parentIsCall is true, it implies that node.extra.parenthesized is always true\n      const parentIsCall = parentPath.isCallExpression({ callee: node });\n      startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));\n      if (isOptionalCall(parent)) {\n        if (parent.optional) {\n          parentPath.replaceWith(this.optionalCall(member, parent.arguments));\n        } else {\n          parentPath.replaceWith(this.call(member, parent.arguments));\n        }\n      } else if (parentIsCall) {\n        // `(a?.#b)()` to `(a == null ? void 0 : a.#b.bind(a))()`\n        member.replaceWith(this.boundGet(member));\n      } else if (\n        (process.env.BABEL_8_BREAKING || this.delete) &&\n        parentPath.isUnaryExpression({ operator: \"delete\" })\n      ) {\n        parentPath.replaceWith(this.delete(member));\n      } else if (parentPath.isAssignmentExpression()) {\n        // `a?.#b = c` to `(a == null ? void 0 : a.#b = c)`\n        handleAssignment(this, member, parentPath);\n      } else {\n        member.replaceWith(this.get(member));\n      }\n\n      let regular: t.Expression = member.node;\n      for (let current: NodePath = member; current !== endPath; ) {\n        const parentPath = current.parentPath as NodePath<t.Expression>;\n        // skip transforming `Foo.#BAR?.call(FOO)`\n        if (\n          parentPath === endPath &&\n          isOptionalCall(parent) &&\n          parent.optional\n        ) {\n          regular = parentPath.node;\n          break;\n        }\n        regular = toNonOptional(parentPath, regular);\n        current = parentPath;\n      }\n\n      let context: t.Identifier;\n      const endParentPath = endPath.parentPath as NodePath<t.Expression>;\n      if (\n        isMemberExpression(regular) &&\n        endParentPath.isOptionalCallExpression({\n          callee: endPath.node,\n          optional: true,\n        })\n      ) {\n        const { object } = regular;\n        context = member.scope.maybeGenerateMemoised(object);\n        if (context) {\n          regular.object = assignmentExpression(\n            \"=\",\n            context,\n            // object must not be Super when `context` is an identifier\n            // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n            object as t.Expression,\n          );\n        }\n      }\n\n      let replacementPath: NodePath = endPath;\n      if (isDeleteOperation || isAssignment) {\n        replacementPath = endParentPath;\n        regular = endParentPath.node;\n      }\n\n      const baseMemoised = baseNeedsMemoised\n        ? assignmentExpression(\n            \"=\",\n            // When base needs memoised, the baseRef must be an identifier\n            cloneNode(baseRef as t.Identifier),\n            cloneNode(startingNode),\n          )\n        : cloneNode(baseRef);\n\n      if (willEndPathCastToBoolean) {\n        let nonNullishCheck;\n        if (noDocumentAll) {\n          nonNullishCheck = binaryExpression(\"!=\", baseMemoised, nullLiteral());\n        } else {\n          nonNullishCheck = logicalExpression(\n            \"&&\",\n            binaryExpression(\"!==\", baseMemoised, nullLiteral()),\n            binaryExpression(\n              \"!==\",\n              cloneNode(baseRef),\n              scope.buildUndefinedNode(),\n            ),\n          );\n        }\n        replacementPath.replaceWith(\n          logicalExpression(\"&&\", nonNullishCheck, regular),\n        );\n      } else {\n        let nullishCheck;\n        if (noDocumentAll) {\n          nullishCheck = binaryExpression(\"==\", baseMemoised, nullLiteral());\n        } else {\n          nullishCheck = logicalExpression(\n            \"||\",\n            binaryExpression(\"===\", baseMemoised, nullLiteral()),\n            binaryExpression(\n              \"===\",\n              cloneNode(baseRef),\n              scope.buildUndefinedNode(),\n            ),\n          );\n        }\n\n        replacementPath.replaceWith(\n          conditionalExpression(\n            nullishCheck,\n            isDeleteOperation\n              ? booleanLiteral(true)\n              : scope.buildUndefinedNode(),\n            regular,\n          ),\n        );\n      }\n\n      // context and isDeleteOperation can not be both truthy\n      if (context) {\n        const endParent = endParentPath.node as t.OptionalCallExpression;\n        endParentPath.replaceWith(\n          optionalCallExpression(\n            optionalMemberExpression(\n              endParent.callee,\n              identifier(\"call\"),\n              false,\n              true,\n            ),\n            [cloneNode(context), ...endParent.arguments],\n            false,\n          ),\n        );\n      }\n\n      return;\n    }\n\n    // MEMBER++   ->   _set(MEMBER, (ref = _get(MEMBER), ref2 = ref++, ref)), ref2\n    // ++MEMBER   ->   _set(MEMBER, (ref = _get(MEMBER), ++ref))\n    if (isUpdateExpression(parent, { argument: node })) {\n      if (this.simpleSet) {\n        member.replaceWith(this.simpleSet(member));\n        return;\n      }\n\n      const { operator, prefix } = parent;\n\n      // Give the state handler a chance to memoise the member, since we'll\n      // reference it twice. The second access (the set) should do the memo\n      // assignment.\n      this.memoise(member, 2);\n\n      const ref = scope.generateUidIdentifierBasedOnNode(node);\n      scope.push({ id: ref });\n\n      const seq: t.Expression[] = [\n        // ref = _get(MEMBER)\n        assignmentExpression(\"=\", cloneNode(ref), this.get(member)),\n      ];\n\n      if (prefix) {\n        seq.push(updateExpression(operator, cloneNode(ref), prefix));\n\n        // (ref = _get(MEMBER), ++ref)\n        const value = sequenceExpression(seq);\n        parentPath.replaceWith(this.set(member, value));\n\n        return;\n      } else {\n        const ref2 = scope.generateUidIdentifierBasedOnNode(node);\n        scope.push({ id: ref2 });\n\n        seq.push(\n          assignmentExpression(\n            \"=\",\n            cloneNode(ref2),\n            updateExpression(operator, cloneNode(ref), prefix),\n          ),\n          cloneNode(ref),\n        );\n\n        // (ref = _get(MEMBER), ref2 = ref++, ref)\n        const value = sequenceExpression(seq);\n        parentPath.replaceWith(\n          sequenceExpression([this.set(member, value), cloneNode(ref2)]),\n        );\n\n        return;\n      }\n    }\n\n    // MEMBER = VALUE   ->   _set(MEMBER, VALUE)\n    // MEMBER += VALUE   ->   _set(MEMBER, _get(MEMBER) + VALUE)\n    // MEMBER ??= VALUE   ->   _get(MEMBER) ?? _set(MEMBER, VALUE)\n    if (parentPath.isAssignmentExpression({ left: node })) {\n      handleAssignment(this, member, parentPath);\n      return;\n    }\n\n    // MEMBER(ARGS) -> _call(MEMBER, ARGS)\n    if (parentPath.isCallExpression({ callee: node })) {\n      parentPath.replaceWith(this.call(member, parentPath.node.arguments));\n      return;\n    }\n\n    // MEMBER?.(ARGS) -> _optionalCall(MEMBER, ARGS)\n    if (parentPath.isOptionalCallExpression({ callee: node })) {\n      // Replace `function (a, x = a.b.#c?.()) {}` to `function (a, x = (() => a.b.#c?.())() ){}`\n      // so the temporary variable can be injected in correct scope\n      // This can be further optimized to avoid unnecessary IIFE\n      if (scope.path.isPattern()) {\n        parentPath.replaceWith(\n          // The injected member will be queued and eventually transformed when visited\n          callExpression(arrowFunctionExpression([], parentPath.node), []),\n        );\n        return;\n      }\n      parentPath.replaceWith(\n        this.optionalCall(member, parentPath.node.arguments),\n      );\n      return;\n    }\n\n    // delete MEMBER -> _delete(MEMBER)\n    if (\n      (process.env.BABEL_8_BREAKING || this.delete) &&\n      parentPath.isUnaryExpression({ operator: \"delete\" })\n    ) {\n      parentPath.replaceWith(this.delete(member));\n      return;\n    }\n\n    // for (MEMBER of ARR)\n    // for (MEMBER in ARR)\n    // { KEY: MEMBER } = OBJ -> { KEY: _destructureSet(MEMBER) } = OBJ\n    // { KEY: MEMBER = _VALUE } = OBJ -> { KEY: _destructureSet(MEMBER) = _VALUE } = OBJ\n    // {...MEMBER} -> {..._destructureSet(MEMBER)}\n    //\n    // [MEMBER] = ARR -> [_destructureSet(MEMBER)] = ARR\n    // [MEMBER = _VALUE] = ARR -> [_destructureSet(MEMBER) = _VALUE] = ARR\n    // [...MEMBER] -> [..._destructureSet(MEMBER)]\n    if (\n      // for (MEMBER of ARR)\n      // for (MEMBER in ARR)\n      parentPath.isForXStatement({ left: node }) ||\n      // { KEY: MEMBER } = OBJ\n      (parentPath.isObjectProperty({ value: node }) &&\n        parentPath.parentPath.isObjectPattern()) ||\n      // { KEY: MEMBER = _VALUE } = OBJ\n      (parentPath.isAssignmentPattern({ left: node }) &&\n        parentPath.parentPath.isObjectProperty({ value: parent }) &&\n        parentPath.parentPath.parentPath.isObjectPattern()) ||\n      // [MEMBER] = ARR\n      parentPath.isArrayPattern() ||\n      // [MEMBER = _VALUE] = ARR\n      (parentPath.isAssignmentPattern({ left: node }) &&\n        parentPath.parentPath.isArrayPattern()) ||\n      // {...MEMBER}\n      // [...MEMBER]\n      parentPath.isRestElement()\n    ) {\n      member.replaceWith(this.destructureSet(member));\n      return;\n    }\n\n    if (parentPath.isTaggedTemplateExpression()) {\n      // MEMBER   ->   _get(MEMBER).bind(this)\n      member.replaceWith(this.boundGet(member));\n    } else {\n      // MEMBER   ->   _get(MEMBER)\n      member.replaceWith(this.get(member));\n    }\n  },\n};\n\nfunction handleAssignment(\n  state: HandlerState,\n  member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  parentPath: NodePath<t.AssignmentExpression>,\n) {\n  if (state.simpleSet) {\n    member.replaceWith(state.simpleSet(member));\n    return;\n  }\n\n  const { operator, right: value } = parentPath.node;\n\n  if (operator === \"=\") {\n    parentPath.replaceWith(state.set(member, value));\n  } else {\n    const operatorTrunc = operator.slice(0, -1);\n    if (LOGICAL_OPERATORS.includes(operatorTrunc)) {\n      // Give the state handler a chance to memoise the member, since we'll\n      // reference it twice. The first access (the get) should do the memo\n      // assignment.\n      state.memoise(member, 1);\n      parentPath.replaceWith(\n        logicalExpression(\n          operatorTrunc as t.LogicalExpression[\"operator\"],\n          state.get(member),\n          state.set(member, value),\n        ),\n      );\n    } else {\n      // Here, the second access (the set) is evaluated first.\n      state.memoise(member, 2);\n      parentPath.replaceWith(\n        state.set(\n          member,\n          binaryExpression(\n            operatorTrunc as t.BinaryExpression[\"operator\"],\n            state.get(member),\n            value,\n          ),\n        ),\n      );\n    }\n  }\n}\n\nexport interface Handler<State> {\n  memoise?(\n    this: HandlerState<State> & State,\n    member: Member,\n    count: number,\n  ): void;\n  destructureSet(\n    this: HandlerState<State> & State,\n    member: Member,\n  ): t.Expression;\n  boundGet(this: HandlerState<State> & State, member: Member): t.Expression;\n  simpleSet?(this: HandlerState<State> & State, member: Member): t.Expression;\n  get(this: HandlerState<State> & State, member: Member): t.Expression;\n  set(\n    this: HandlerState<State> & State,\n    member: Member,\n    value: t.Expression,\n  ): t.Expression;\n  call(\n    this: HandlerState<State> & State,\n    member: Member,\n    args: t.CallExpression[\"arguments\"],\n  ): t.Expression;\n  optionalCall(\n    this: HandlerState<State> & State,\n    member: Member,\n    args: t.OptionalCallExpression[\"arguments\"],\n  ): t.Expression;\n  delete(this: HandlerState<State> & State, member: Member): t.Expression;\n}\n\nexport interface HandlerState<State = object> extends Handler<State> {\n  handle(\n    this: HandlerState<State> & State,\n    member: Member,\n    noDocumentAll?: boolean,\n  ): void;\n  memoiser: AssignmentMemoiser;\n}\n\n// We do not provide a default traversal visitor\n// Instead, caller passes one, and must call `state.handle` on the members\n// it wishes to be transformed.\n// Additionally, the caller must pass in a state object with at least\n// get, set, and call methods.\n// Optionally, a memoise method may be defined on the state, which will be\n// called when the member is a self-referential update.\nexport default function memberExpressionToFunctions<CustomState extends object>(\n  path: NodePath,\n  visitor: Visitor<HandlerState<CustomState>>,\n  state: Handler<CustomState> & CustomState,\n) {\n  path.traverse(visitor, {\n    ...handle,\n    ...state,\n    memoiser: new AssignmentMemoiser(),\n  });\n}\n","import {\n  callExpression,\n  identifier,\n  isIdentifier,\n  isSpreadElement,\n  memberExpression,\n  optionalCallExpression,\n  optionalMemberExpression,\n} from \"@babel/types\";\nimport type {\n  CallExpression,\n  Expression,\n  OptionalCallExpression,\n} from \"@babel/types\";\n\n/**\n * A helper function that generates a new call expression with given thisNode.\n It will also optimize `(...arguments)` to `.apply(arguments)`\n *\n * @export\n * @param {Expression} callee The callee of call expression\n * @param {Expression} thisNode The desired this of call expression\n * @param {Readonly<CallExpression[\"arguments\"]>} args The arguments of call expression\n * @param {boolean} optional Whether the call expression is optional\n * @returns {CallExpression | OptionalCallExpression} The generated new call expression\n */\nexport default function optimiseCallExpression(\n  callee: Expression,\n  thisNode: Expression,\n  args: Readonly<CallExpression[\"arguments\"]>,\n  optional: boolean,\n): CallExpression | OptionalCallExpression {\n  if (\n    args.length === 1 &&\n    isSpreadElement(args[0]) &&\n    isIdentifier(args[0].argument, { name: \"arguments\" })\n  ) {\n    // a.b?.(...arguments);\n    if (optional) {\n      return optionalCallExpression(\n        optionalMemberExpression(callee, identifier(\"apply\"), false, true),\n        [thisNode, args[0].argument],\n        false,\n      );\n    }\n    // a.b(...arguments);\n    return callExpression(memberExpression(callee, identifier(\"apply\")), [\n      thisNode,\n      args[0].argument,\n    ]);\n  } else {\n    // a.b?.(arg1, arg2)\n    if (optional) {\n      return optionalCallExpression(\n        optionalMemberExpression(callee, identifier(\"call\"), false, true),\n        [thisNode, ...args],\n        false,\n      );\n    }\n    // a.b(arg1, arg2)\n    return callExpression(memberExpression(callee, identifier(\"call\")), [\n      thisNode,\n      ...args,\n    ]);\n  }\n}\n","import type { File, NodePath, Scope } from \"@babel/core\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type { HandlerState } from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport { template, types as t } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nconst {\n  assignmentExpression,\n  callExpression,\n  cloneNode,\n  identifier,\n  memberExpression,\n  sequenceExpression,\n  stringLiteral,\n  thisExpression,\n} = t;\n\nif (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n  // eslint-disable-next-line no-restricted-globals\n  exports.environmentVisitor = visitors.environmentVisitor({});\n  // eslint-disable-next-line no-restricted-globals\n  exports.skipAllButComputedKey = function skipAllButComputedKey(\n    path: NodePath<t.Method | t.ClassProperty>,\n  ) {\n    path.skip();\n    if (path.node.computed) {\n      path.context.maybeQueue(path.get(\"key\"));\n    }\n  };\n}\n\nconst visitor = visitors.environmentVisitor<\n  HandlerState<ReplaceState> & ReplaceState\n>({\n  Super(path, state) {\n    const { node, parentPath } = path;\n    if (!parentPath.isMemberExpression({ object: node })) return;\n    state.handle(parentPath);\n  },\n});\n\nconst unshadowSuperBindingVisitor = visitors.environmentVisitor<{\n  refName: string;\n}>({\n  Scopable(path, { refName }) {\n    // https://github.com/Zzzen/babel/pull/1#pullrequestreview-564833183\n    const binding = path.scope.getOwnBinding(refName);\n    if (binding && binding.identifier.name === refName) {\n      path.scope.rename(refName);\n    }\n  },\n});\n\ntype SharedState = {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: () => t.Identifier;\n  getSuperRef: () => t.Identifier;\n  // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n  boundGet: HandlerState[\"get\"];\n};\n\ntype Handler = HandlerState<SharedState> & SharedState;\ntype SuperMember = NodePath<\n  t.MemberExpression & {\n    object: t.Super;\n    property: Exclude<t.MemberExpression[\"property\"], t.PrivateName>;\n  }\n>;\n\nconst enum Flags {\n  Prototype = 0b1,\n  Call = 0b10,\n}\n\ninterface SpecHandler\n  extends Pick<\n    Handler,\n    | \"memoise\"\n    | \"get\"\n    | \"set\"\n    | \"destructureSet\"\n    | \"call\"\n    | \"optionalCall\"\n    | \"delete\"\n  > {\n  _get?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n  ): t.CallExpression;\n  _call?(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression;\n  _getPrototypeOfExpression(this: Handler & SpecHandler): t.CallExpression;\n  prop(this: Handler & SpecHandler, superMember: SuperMember): t.Expression;\n}\n\nconst specHandlers: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const objectRef = cloneNode(this.getObjectRef());\n    return callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      ...(this.isStatic || this.isPrivateMethod\n        ? []\n        : [t.numericLiteral(Flags.Prototype)]),\n    ]);\n  },\n\n  _call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n    optional: boolean,\n  ): t.CallExpression | t.OptionalCallExpression {\n    const objectRef = cloneNode(this.getObjectRef());\n    let argsNode: t.ArrayExpression | t.Identifier;\n    if (\n      args.length === 1 &&\n      t.isSpreadElement(args[0]) &&\n      (t.isIdentifier(args[0].argument) ||\n        t.isArrayExpression(args[0].argument))\n    ) {\n      argsNode = args[0].argument;\n    } else {\n      argsNode = t.arrayExpression(args as t.Expression[]);\n    }\n\n    const call = t.callExpression(this.file.addHelper(\"superPropGet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      thisExpression(),\n      t.numericLiteral(\n        Flags.Call |\n          (this.isStatic || this.isPrivateMethod ? 0 : Flags.Prototype),\n      ),\n    ]);\n    if (optional) {\n      return t.optionalCallExpression(call, [argsNode], true);\n    }\n    return callExpression(call, [argsNode]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const objectRef = cloneNode(this.getObjectRef());\n\n    return callExpression(this.file.addHelper(\"superPropSet\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), objectRef])\n        : objectRef,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.numericLiteral(superMember.isInStrictMode() ? 1 : 0),\n      ...(this.isStatic || this.isPrivateMethod ? [] : [t.numericLiteral(1)]),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return this._call(superMember, args, true);\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst specHandlers_old: SpecHandler = {\n  memoise(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    count: number,\n  ) {\n    const { scope, node } = superMember;\n    const { computed, property } = node;\n    if (!computed) {\n      return;\n    }\n\n    const memo = scope.maybeGenerateMemoised(property);\n    if (!memo) {\n      return;\n    }\n\n    this.memoiser.set(property, memo, count);\n  },\n\n  prop(this: Handler & SpecHandler, superMember: SuperMember) {\n    const { computed, property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    if (computed) {\n      return cloneNode(property);\n    }\n\n    return stringLiteral((property as t.Identifier).name);\n  },\n\n  /**\n   * Creates an expression which result is the proto of objectRef.\n   *\n   * @example <caption>isStatic === true</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS)\n   *\n   * @example <caption>isStatic === false</caption>\n   *\n   *   helpers.getPrototypeOf(CLASS.prototype)\n   */\n  _getPrototypeOfExpression(this: Handler & SpecHandler) {\n    const objectRef = cloneNode(this.getObjectRef());\n    const targetRef =\n      this.isStatic || this.isPrivateMethod\n        ? objectRef\n        : memberExpression(objectRef, identifier(\"prototype\"));\n\n    return callExpression(this.file.addHelper(\"getPrototypeOf\"), [targetRef]);\n  },\n\n  get(this: Handler & SpecHandler, superMember: SuperMember) {\n    return this._get(superMember);\n  },\n\n  _get(this: Handler & SpecHandler, superMember: SuperMember) {\n    const proto = this._getPrototypeOfExpression();\n    return callExpression(this.file.addHelper(\"get\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      thisExpression(),\n    ]);\n  },\n\n  set(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const proto = this._getPrototypeOfExpression();\n\n    return callExpression(this.file.addHelper(\"set\"), [\n      this.isDerivedConstructor\n        ? sequenceExpression([thisExpression(), proto])\n        : proto,\n      this.prop(superMember),\n      value,\n      thisExpression(),\n      t.booleanLiteral(superMember.isInStrictMode()),\n    ]);\n  },\n\n  destructureSet(this: Handler & SpecHandler, superMember: SuperMember) {\n    throw superMember.buildCodeFrameError(\n      `Destructuring to a super field is not supported yet.`,\n    );\n  },\n\n  call(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this._get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & SpecHandler,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(\n      this._get(superMember),\n      cloneNode(thisExpression()),\n      args,\n      true,\n    );\n  },\n\n  delete(this: Handler & SpecHandler, superMember: SuperMember) {\n    if (superMember.node.computed) {\n      return sequenceExpression([\n        callExpression(this.file.addHelper(\"toPropertyKey\"), [\n          cloneNode(superMember.node.property),\n        ]),\n        template.expression.ast`\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        `,\n      ]);\n    } else {\n      return template.expression.ast`\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      `;\n    }\n  },\n};\n\nconst looseHandlers = {\n  ...specHandlers,\n\n  prop(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { property } = superMember.node;\n    if (this.memoiser.has(property)) {\n      return cloneNode(this.memoiser.get(property));\n    }\n\n    return cloneNode(property);\n  },\n\n  get(this: Handler & typeof specHandlers, superMember: SuperMember) {\n    const { isStatic, getSuperRef } = this;\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    let object;\n    if (isStatic) {\n      object =\n        getSuperRef() ??\n        memberExpression(identifier(\"Function\"), identifier(\"prototype\"));\n    } else {\n      object = memberExpression(\n        getSuperRef() ?? identifier(\"Object\"),\n        identifier(\"prototype\"),\n      );\n    }\n\n    return memberExpression(object, prop, computed);\n  },\n\n  set(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    value: t.Expression,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return assignmentExpression(\n      \"=\",\n      memberExpression(thisExpression(), prop, computed),\n      value,\n    );\n  },\n\n  destructureSet(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n  ) {\n    const { computed } = superMember.node;\n    const prop = this.prop(superMember);\n\n    return memberExpression(thisExpression(), prop, computed);\n  },\n\n  call(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, false);\n  },\n\n  optionalCall(\n    this: Handler & typeof specHandlers,\n    superMember: SuperMember,\n    args: t.CallExpression[\"arguments\"],\n  ) {\n    return optimiseCall(this.get(superMember), thisExpression(), args, true);\n  },\n};\n\ntype ReplaceSupersOptionsBase = {\n  methodPath: NodePath<\n    | t.ClassMethod\n    | t.ClassProperty\n    | t.ObjectMethod\n    | t.ClassPrivateMethod\n    | t.ClassPrivateProperty\n    | t.StaticBlock\n  >;\n  constantSuper?: boolean;\n  file: File;\n  // objectRef might have been shadowed in child scopes,\n  // in that case, we need to rename related variables.\n  refToPreserve?: t.Identifier;\n};\n\ntype ReplaceSupersOptions = ReplaceSupersOptionsBase &\n  (\n    | { objectRef?: undefined; getObjectRef: () => t.Node }\n    | { objectRef: t.Node; getObjectRef?: undefined }\n  ) &\n  (\n    | { superRef?: undefined; getSuperRef: () => t.Node }\n    | { superRef: t.Node; getSuperRef?: undefined }\n  );\n\ninterface ReplaceState {\n  file: File;\n  scope: Scope;\n  isDerivedConstructor: boolean;\n  isStatic: boolean;\n  isPrivateMethod: boolean;\n  getObjectRef: ReplaceSupers[\"getObjectRef\"];\n  getSuperRef: ReplaceSupers[\"getSuperRef\"];\n}\n\nexport default class ReplaceSupers {\n  constructor(opts: ReplaceSupersOptions) {\n    const path = opts.methodPath;\n\n    this.methodPath = path;\n    this.isDerivedConstructor =\n      path.isClassMethod({ kind: \"constructor\" }) && !!opts.superRef;\n    this.isStatic =\n      path.isObjectMethod() ||\n      // @ts-expect-error static is not in ClassPrivateMethod\n      path.node.static ||\n      path.isStaticBlock?.();\n    this.isPrivateMethod = path.isPrivate() && path.isMethod();\n\n    this.file = opts.file;\n    this.constantSuper = process.env.BABEL_8_BREAKING\n      ? opts.constantSuper\n      : // Fallback to isLoose for backward compatibility\n        (opts.constantSuper ?? (opts as any).isLoose);\n    this.opts = opts;\n  }\n\n  declare file: File;\n  declare isDerivedConstructor: boolean;\n  declare constantSuper: boolean;\n  declare isPrivateMethod: boolean;\n  declare isStatic: boolean;\n  declare methodPath: NodePath;\n  declare opts: ReplaceSupersOptions;\n\n  getObjectRef() {\n    return cloneNode(this.opts.objectRef || this.opts.getObjectRef());\n  }\n\n  getSuperRef() {\n    if (this.opts.superRef) return cloneNode(this.opts.superRef);\n    if (this.opts.getSuperRef) {\n      return cloneNode(this.opts.getSuperRef());\n    }\n  }\n\n  replace() {\n    const { methodPath } = this;\n    // https://github.com/babel/babel/issues/11994\n    if (this.opts.refToPreserve) {\n      methodPath.traverse(unshadowSuperBindingVisitor, {\n        refName: this.opts.refToPreserve.name,\n      });\n    }\n\n    const handler = this.constantSuper\n      ? looseHandlers\n      : process.env.BABEL_8_BREAKING ||\n          this.file.availableHelper(\"superPropSet\")\n        ? specHandlers\n        : specHandlers_old;\n\n    // todo: this should have been handled by the environmentVisitor,\n    // consider add visitSelf support for the path.traverse\n    // @ts-expect-error: Refine typings in packages/babel-traverse/src/types.ts\n    // shouldSkip is accepted in traverseNode\n    visitor.shouldSkip = (path: NodePath) => {\n      if (path.parentPath === methodPath) {\n        if (path.parentKey === \"decorators\" || path.parentKey === \"key\") {\n          return true;\n        }\n      }\n    };\n\n    memberExpressionToFunctions<ReplaceState>(methodPath, visitor, {\n      file: this.file,\n      scope: this.methodPath.scope,\n      isDerivedConstructor: this.isDerivedConstructor,\n      isStatic: this.isStatic,\n      isPrivateMethod: this.isPrivateMethod,\n      getObjectRef: this.getObjectRef.bind(this),\n      getSuperRef: this.getSuperRef.bind(this),\n      // we dont need boundGet here, but memberExpressionToFunctions handler needs it.\n      boundGet: handler.get,\n      ...handler,\n    });\n  }\n}\n","import { addComment, type Node } from \"@babel/types\";\n\nconst PURE_ANNOTATION = \"#__PURE__\";\n\nconst isPureAnnotated = ({ leadingComments }: Node): boolean =>\n  !!leadingComments &&\n  leadingComments.some(comment => /[@#]__PURE__/.test(comment.value));\n\nexport default function annotateAsPure(\n  pathOrNode: Node | { node: Node },\n): void {\n  const node =\n    // @ts-expect-error Node will not have `node` property\n    (pathOrNode[\"node\"] || pathOrNode) as Node;\n  if (isPureAnnotated(node)) {\n    return;\n  }\n  addComment(node, \"leading\", PURE_ANNOTATION);\n}\n","import {\n  isParenthesizedExpression,\n  isTSAsExpression,\n  isTSNonNullExpression,\n  isTSSatisfiesExpression,\n  isTSTypeAssertion,\n  isTypeCastExpression,\n} from \"@babel/types\";\n\nimport type * as t from \"@babel/types\";\nimport type { NodePath } from \"@babel/traverse\";\n\nexport type TransparentExprWrapper =\n  | t.TSAsExpression\n  | t.TSSatisfiesExpression\n  | t.TSTypeAssertion\n  | t.TSNonNullExpression\n  | t.TypeCastExpression\n  | t.ParenthesizedExpression;\n\n// A transparent expression wrapper is an AST node that most plugins will wish\n// to skip, as its presence does not affect the behaviour of the code. This\n// includes expressions used for types, and extra parenthesis. For example, in\n// (a as any)(), this helper can be used to skip the TSAsExpression when\n// determining the callee.\nexport function isTransparentExprWrapper(\n  node: t.Node,\n): node is TransparentExprWrapper {\n  return (\n    isTSAsExpression(node) ||\n    isTSSatisfiesExpression(node) ||\n    isTSTypeAssertion(node) ||\n    isTSNonNullExpression(node) ||\n    isTypeCastExpression(node) ||\n    isParenthesizedExpression(node)\n  );\n}\n\nexport function skipTransparentExprWrappers(\n  path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n  while (isTransparentExprWrapper(path.node)) {\n    path = path.get(\"expression\");\n  }\n  return path;\n}\n\nexport function skipTransparentExprWrapperNodes(\n  node: t.Expression | t.Super,\n): t.Expression | t.Super {\n  while (isTransparentExprWrapper(node)) {\n    node = node.expression;\n  }\n  return node;\n}\n","import type { NodePath, types as t } from \"@babel/core\";\n\nexport function assertFieldTransformed(\n  path: NodePath<t.ClassProperty | t.ClassDeclaration>,\n) {\n  if (\n    path.node.declare ||\n    (process.env.BABEL_8_BREAKING\n      ? path.isClassProperty({ definite: true })\n      : false)\n  ) {\n    throw path.buildCodeFrameError(\n      `TypeScript 'declare' fields must first be transformed by ` +\n        `@babel/plugin-transform-typescript.\\n` +\n        `If you have already enabled that plugin (or '@babel/preset-typescript'), make sure ` +\n        `that it runs before any plugin related to additional class features:\\n` +\n        ` - @babel/plugin-transform-class-properties\\n` +\n        ` - @babel/plugin-transform-private-methods\\n` +\n        ` - @babel/plugin-proposal-decorators`,\n    );\n  }\n}\n","import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Visitor, Scope } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport memberExpressionToFunctions from \"@babel/helper-member-expression-to-functions\";\nimport type {\n  Handler,\n  HandlerState,\n} from \"@babel/helper-member-expression-to-functions\";\nimport optimiseCall from \"@babel/helper-optimise-call-expression\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\nimport * as ts from \"./typescript.ts\";\n\ninterface PrivateNameMetadata {\n  id: t.Identifier;\n  static: boolean;\n  method: boolean;\n  getId?: t.Identifier;\n  setId?: t.Identifier;\n  methodId?: t.Identifier;\n  initAdded?: boolean;\n  getterDeclared?: boolean;\n  setterDeclared?: boolean;\n}\n\ntype PrivateNamesMapGeneric<V> = Map<string, V>;\n\ntype PrivateNamesMap = PrivateNamesMapGeneric<PrivateNameMetadata>;\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var newHelpers = (file: File) => {\n    if (!process.env.IS_PUBLISH) {\n      const { comments } = file.ast;\n      // This is needed for the test in\n      // babel-plugin-transform-class-properties/test/fixtures/regression/old-helpers\n      if (comments?.some(c => c.value.includes(\"@force-old-private-helpers\"))) {\n        return false;\n      }\n    }\n    return file.availableHelper(\"classPrivateFieldGet2\");\n  };\n}\n\nexport function buildPrivateNamesMap(\n  className: string,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  props: PropPath[],\n  file: File,\n) {\n  const privateNamesMap: PrivateNamesMap = new Map();\n  let classBrandId: t.Identifier;\n  for (const prop of props) {\n    if (prop.isPrivate()) {\n      const { name } = prop.node.key.id;\n      let update: PrivateNameMetadata = privateNamesMap.get(name);\n      if (!update) {\n        const isMethod = !prop.isProperty();\n        const isStatic = prop.node.static;\n        let initAdded = false;\n        let id: t.Identifier;\n        if (\n          !privateFieldsAsSymbolsOrProperties &&\n          (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n          isMethod &&\n          !isStatic\n        ) {\n          initAdded = !!classBrandId;\n          classBrandId ??= prop.scope.generateUidIdentifier(\n            `${className}_brand`,\n          );\n          id = classBrandId;\n        } else {\n          id = prop.scope.generateUidIdentifier(name);\n        }\n        update = { id, static: isStatic, method: isMethod, initAdded };\n        privateNamesMap.set(name, update);\n      }\n      if (prop.isClassPrivateMethod()) {\n        if (prop.node.kind === \"get\") {\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   get #foo() { return _some_fn(this); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isReturnStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.argument)) &&\n            $.arguments.length === 1 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.getId = t.cloneNode($);\n            update.getterDeclared = true;\n          } else {\n            update.getId = prop.scope.generateUidIdentifier(`get_${name}`);\n          }\n        } else if (prop.node.kind === \"set\") {\n          const { params } = prop.node;\n          const { body } = prop.node.body;\n          let $: t.Node;\n          if (\n            // If we have\n            //   set #foo(val) { _some_fn(this, val); }\n            // we can use _some_fn directly.\n            body.length === 1 &&\n            t.isExpressionStatement(($ = body[0])) &&\n            t.isCallExpression(($ = $.expression)) &&\n            $.arguments.length === 2 &&\n            t.isThisExpression($.arguments[0]) &&\n            t.isIdentifier($.arguments[1], {\n              name: (params[0] as t.Identifier).name,\n            }) &&\n            t.isIdentifier(($ = $.callee))\n          ) {\n            update.setId = t.cloneNode($);\n            update.setterDeclared = true;\n          } else {\n            update.setId = prop.scope.generateUidIdentifier(`set_${name}`);\n          }\n        } else if (prop.node.kind === \"method\") {\n          update.methodId = prop.scope.generateUidIdentifier(name);\n        }\n      }\n      privateNamesMap.set(name, update);\n    }\n  }\n  return privateNamesMap;\n}\n\nexport function buildPrivateNamesNodes(\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsProperties: boolean,\n  privateFieldsAsSymbols: boolean,\n  state: File,\n) {\n  const initNodes: t.Statement[] = [];\n\n  const injectedIds = new Set<string>();\n\n  for (const [name, value] of privateNamesMap) {\n    // - When the privateFieldsAsProperties assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   secret non-enumerable property. Hence, we also need to generate that\n    //   key (using the classPrivateFieldLooseKey helper).\n    // - When the privateFieldsAsSymbols assumption is enabled,\n    //   both static and instance fields are transpiled using a\n    //   unique Symbol to define a non-enumerable property.\n    // - In spec mode, only instance fields need a \"private name\" initializer\n    //   because static fields are directly assigned to a variable in the\n    //   buildPrivateStaticFieldInitSpec function.\n    const { static: isStatic, method: isMethod, getId, setId } = value;\n    const isGetterOrSetter = getId || setId;\n    const id = t.cloneNode(value.id);\n\n    let init: t.Expression;\n\n    if (privateFieldsAsProperties) {\n      init = t.callExpression(state.addHelper(\"classPrivateFieldLooseKey\"), [\n        t.stringLiteral(name),\n      ]);\n    } else if (privateFieldsAsSymbols) {\n      init = t.callExpression(t.identifier(\"Symbol\"), [t.stringLiteral(name)]);\n    } else if (!isStatic) {\n      if (injectedIds.has(id.name)) continue;\n      injectedIds.add(id.name);\n\n      init = t.newExpression(\n        t.identifier(\n          isMethod &&\n            (process.env.BABEL_8_BREAKING ||\n              !isGetterOrSetter ||\n              newHelpers(state))\n            ? \"WeakSet\"\n            : \"WeakMap\",\n        ),\n        [],\n      );\n    }\n\n    if (init) {\n      if (!privateFieldsAsSymbols) {\n        annotateAsPure(init);\n      }\n      initNodes.push(template.statement.ast`var ${id} = ${init}`);\n    }\n  }\n\n  return initNodes;\n}\n\nexport interface PrivateNameVisitorState<V> {\n  privateNamesMap: PrivateNamesMapGeneric<V>;\n  redeclared?: string[];\n}\n\n// Traverses the class scope, handling private name references. If an inner\n// class redeclares the same private name, it will hand off traversal to the\n// restricted visitor (which doesn't traverse the inner class's inner scope).\nexport function privateNameVisitorFactory<S, V>(\n  visitor: Visitor<PrivateNameVisitorState<V & PrivateNameMetadata> & S>,\n) {\n  // Traverses the outer portion of a class, without touching the class's inner\n  // scope, for private names.\n  const nestedVisitor = visitors.environmentVisitor({ ...visitor });\n\n  const privateNameVisitor: Visitor<\n    PrivateNameVisitorState<V & PrivateNameMetadata> & S\n  > = {\n    ...visitor,\n\n    Class(path) {\n      const { privateNamesMap } = this;\n      const body = path.get(\"body.body\");\n\n      const visiblePrivateNames = new Map(privateNamesMap);\n      const redeclared = [];\n      for (const prop of body) {\n        if (!prop.isPrivate()) continue;\n        const { name } = prop.node.key.id;\n        visiblePrivateNames.delete(name);\n        redeclared.push(name);\n      }\n\n      // If the class doesn't redeclare any private fields, we can continue with\n      // our overall traversal.\n      if (!redeclared.length) {\n        return;\n      }\n\n      // This class redeclares some private field. We need to process the outer\n      // environment with access to all the outer privates, then we can process\n      // the inner environment with only the still-visible outer privates.\n      path.get(\"body\").traverse(nestedVisitor, {\n        ...this,\n        redeclared,\n      });\n      path.traverse(privateNameVisitor, {\n        ...this,\n        privateNamesMap: visiblePrivateNames,\n      });\n\n      // We'll eventually hit this class node again with the overall Class\n      // Features visitor, which'll process the redeclared privates.\n      path.skipKey(\"body\");\n    },\n  };\n\n  return privateNameVisitor;\n}\n\ninterface PrivateNameState {\n  privateNamesMap: PrivateNamesMap;\n  classRef: t.Identifier;\n  file: File;\n  noDocumentAll: boolean;\n  noUninitializedPrivateFieldAccess: boolean;\n  innerBinding?: t.Identifier;\n}\n\nconst privateNameVisitor = privateNameVisitorFactory<\n  HandlerState<PrivateNameState> & PrivateNameState,\n  PrivateNameMetadata\n>({\n  PrivateName(path, { noDocumentAll }) {\n    const { privateNamesMap, redeclared } = this;\n    const { node, parentPath } = path;\n\n    if (\n      !parentPath.isMemberExpression({ property: node }) &&\n      !parentPath.isOptionalMemberExpression({ property: node })\n    ) {\n      return;\n    }\n    const { name } = node.id;\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    this.handle(parentPath, noDocumentAll);\n  },\n});\n\n// rename all bindings that shadows innerBinding\nfunction unshadow(\n  name: string,\n  scope: Scope,\n  innerBinding: t.Identifier | undefined,\n) {\n  // in some cases, scope.getBinding(name) === undefined\n  // so we check hasBinding to avoid keeping looping\n  // see: https://github.com/babel/babel/pull/13656#discussion_r686030715\n  while (\n    scope?.hasBinding(name) &&\n    !scope.bindingIdentifierEquals(name, innerBinding)\n  ) {\n    scope.rename(name);\n    scope = scope.parent;\n  }\n}\n\nexport function buildCheckInRHS(\n  rhs: t.Expression,\n  file: File,\n  inRHSIsObject?: boolean,\n) {\n  if (inRHSIsObject || !file.availableHelper?.(\"checkInRHS\")) return rhs;\n  return t.callExpression(file.addHelper(\"checkInRHS\"), [rhs]);\n}\n\nconst privateInVisitor = privateNameVisitorFactory<\n  {\n    classRef: t.Identifier;\n    file: File;\n    innerBinding?: t.Identifier;\n    privateFieldsAsProperties: boolean;\n  },\n  PrivateNameMetadata\n>({\n  BinaryExpression(path, { file }) {\n    const { operator, left, right } = path.node;\n    if (operator !== \"in\") return;\n    if (!t.isPrivateName(left)) return;\n\n    const { privateFieldsAsProperties, privateNamesMap, redeclared } = this;\n\n    const { name } = left.id;\n\n    if (!privateNamesMap.has(name)) return;\n    if (redeclared?.includes(name)) return;\n\n    // if there are any local variable shadowing classRef, unshadow it\n    // see #12960\n    unshadow(this.classRef.name, path.scope, this.innerBinding);\n\n    if (privateFieldsAsProperties) {\n      const { id } = privateNamesMap.get(name);\n      path.replaceWith(template.expression.ast`\n        Object.prototype.hasOwnProperty.call(${buildCheckInRHS(\n          right,\n          file,\n        )}, ${t.cloneNode(id)})\n      `);\n      return;\n    }\n\n    const { id, static: isStatic } = privateNamesMap.get(name);\n\n    if (isStatic) {\n      path.replaceWith(\n        template.expression.ast`${buildCheckInRHS(\n          right,\n          file,\n        )} === ${t.cloneNode(this.classRef)}`,\n      );\n      return;\n    }\n\n    path.replaceWith(\n      template.expression.ast`${t.cloneNode(id)}.has(${buildCheckInRHS(\n        right,\n        file,\n      )})`,\n    );\n  },\n});\n\ninterface Receiver {\n  receiver(\n    this: HandlerState<PrivateNameState> & PrivateNameState,\n    member: NodePath<t.MemberExpression | t.OptionalMemberExpression>,\n  ): t.Expression;\n}\n\nfunction readOnlyError(file: File, name: string) {\n  return t.callExpression(file.addHelper(\"readOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction writeOnlyError(file: File, name: string) {\n  if (\n    !process.env.BABEL_8_BREAKING &&\n    !file.availableHelper(\"writeOnlyError\")\n  ) {\n    console.warn(\n      `@babel/helpers is outdated, update it to silence this warning.`,\n    );\n    return t.buildUndefinedNode();\n  }\n  return t.callExpression(file.addHelper(\"writeOnlyError\"), [\n    t.stringLiteral(`#${name}`),\n  ]);\n}\n\nfunction buildStaticPrivateFieldAccess<N extends t.Expression>(\n  expr: N,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  if (noUninitializedPrivateFieldAccess) return expr;\n  return t.memberExpression(expr, t.identifier(\"_\"));\n}\n\nfunction autoInherits<\n  Member extends { node: t.Node },\n  Result extends t.Node,\n  Fn extends (member: Member, ...args: unknown[]) => Result,\n>(fn: Fn): Fn {\n  return function (this: ThisParameterType<Fn>, member) {\n    return t.inherits(fn.apply(this, arguments as any), member.node);\n  } as Fn;\n}\n\nconst privateNameHandlerSpec: Handler<PrivateNameState & Receiver> & Receiver =\n  {\n    memoise(member, count) {\n      const { scope } = member;\n      const { object } = member.node as { object: t.Expression };\n\n      const memo = scope.maybeGenerateMemoised(object);\n      if (!memo) {\n        return;\n      }\n\n      this.memoiser.set(object, memo, count);\n    },\n\n    receiver(member) {\n      const { object } = member.node as { object: t.Expression };\n\n      if (this.memoiser.has(object)) {\n        return t.cloneNode(this.memoiser.get(object));\n      }\n\n      return t.cloneNode(object);\n    },\n\n    get: autoInherits(function (member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        innerBinding,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        methodId,\n        getId,\n        setId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        // if there are any local variable shadowing classRef, unshadow it\n        // see #12960\n        unshadow(classRef.name, member.scope, innerBinding);\n\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          // NOTE: This package has a peerDependency on @babel/core@^7.0.0, but these\n          // helpers have been introduced in @babel/helpers@7.1.0.\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodGet\"\n              : \"classStaticPrivateFieldSpecGet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (!isMethod) {\n          if (skipCheck) {\n            return buildStaticPrivateFieldAccess(\n              cloneId(id),\n              noUninitializedPrivateFieldAccess,\n            );\n          }\n\n          return buildStaticPrivateFieldAccess(\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n              cloneId(id),\n            ]),\n            noUninitializedPrivateFieldAccess,\n          );\n        }\n\n        if (getId) {\n          if (skipCheck) {\n            return t.callExpression(cloneId(getId), [receiver]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(classRef),\n            receiver,\n            cloneId(getId),\n          ]);\n        }\n\n        if (setId) {\n          const err = t.buildUndefinedNode(); // TODO: writeOnlyError(file, name)\n          if (skipCheck) return err;\n          return t.sequenceExpression([\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            err,\n          ]);\n        }\n\n        if (skipCheck) return cloneId(id);\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(classRef),\n          receiver,\n          cloneId(id),\n        ]);\n      }\n\n      if (isMethod) {\n        if (isGetterOrSetter) {\n          if (!getId) {\n            return t.sequenceExpression([\n              this.receiver(member),\n              writeOnlyError(file, name),\n            ]);\n          }\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n              this.receiver(member),\n              cloneId(id),\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateGetter\"), [\n            t.cloneNode(id),\n            this.receiver(member),\n            cloneId(getId),\n          ]);\n        }\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          return t.callExpression(file.addHelper(\"classPrivateMethodGet\"), [\n            this.receiver(member),\n            t.cloneNode(id),\n            cloneId(methodId),\n          ]);\n        }\n        return t.callExpression(file.addHelper(\"assertClassBrand\"), [\n          t.cloneNode(id),\n          this.receiver(member),\n          cloneId(methodId),\n        ]);\n      }\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldGet2\"), [\n          cloneId(id),\n          this.receiver(member),\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldGet\"), [\n        this.receiver(member),\n        cloneId(id),\n      ]);\n    }),\n\n    boundGet(member) {\n      this.memoise(member, 1);\n\n      return t.callExpression(\n        t.memberExpression(this.get(member), t.identifier(\"bind\")),\n        [this.receiver(member)],\n      );\n    },\n\n    set: autoInherits(function (member, value) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n        getId,\n      } = privateNamesMap.get(name);\n      const isGetterOrSetter = getId || setId;\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (isStatic) {\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          const helperName =\n            isMethod && !isGetterOrSetter\n              ? \"classStaticPrivateMethodSet\"\n              : \"classStaticPrivateFieldSpecSet\";\n\n          return t.callExpression(file.addHelper(helperName), [\n            this.receiver(member),\n            t.cloneNode(classRef),\n            cloneId(id),\n            value,\n          ]);\n        }\n\n        const receiver = this.receiver(member);\n        const skipCheck =\n          t.isIdentifier(receiver) && receiver.name === classRef.name;\n\n        if (isMethod && !setId) {\n          const err = readOnlyError(file, name);\n          if (skipCheck) return t.sequenceExpression([value, err]);\n          return t.sequenceExpression([\n            value,\n            t.callExpression(file.addHelper(\"assertClassBrand\"), [\n              t.cloneNode(classRef),\n              receiver,\n            ]),\n            readOnlyError(file, name),\n          ]);\n        }\n\n        if (setId) {\n          if (skipCheck) {\n            return t.callExpression(t.cloneNode(setId), [receiver, value]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(classRef),\n            cloneId(setId),\n            receiver,\n            value,\n          ]);\n        }\n        return t.assignmentExpression(\n          \"=\",\n          buildStaticPrivateFieldAccess(\n            cloneId(id),\n            noUninitializedPrivateFieldAccess,\n          ),\n          skipCheck\n            ? value\n            : t.callExpression(file.addHelper(\"assertClassBrand\"), [\n                t.cloneNode(classRef),\n                receiver,\n                value,\n              ]),\n        );\n      }\n      if (isMethod) {\n        if (setId) {\n          if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n            return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n              this.receiver(member),\n              cloneId(id),\n              value,\n            ]);\n          }\n          return t.callExpression(file.addHelper(\"classPrivateSetter\"), [\n            t.cloneNode(id),\n            cloneId(setId),\n            this.receiver(member),\n            value,\n          ]);\n        }\n        return t.sequenceExpression([\n          this.receiver(member),\n          value,\n          readOnlyError(file, name),\n        ]);\n      }\n\n      if (process.env.BABEL_8_BREAKING || newHelpers(file)) {\n        return t.callExpression(file.addHelper(\"classPrivateFieldSet2\"), [\n          cloneId(id),\n          this.receiver(member),\n          value,\n        ]);\n      }\n\n      return t.callExpression(file.addHelper(\"classPrivateFieldSet\"), [\n        this.receiver(member),\n        cloneId(id),\n        value,\n      ]);\n    }),\n\n    destructureSet(member) {\n      const {\n        classRef,\n        privateNamesMap,\n        file,\n        noUninitializedPrivateFieldAccess,\n      } = this;\n      const privateName = member.node.property as t.PrivateName;\n      const { name } = privateName.id;\n      const {\n        id,\n        static: isStatic,\n        method: isMethod,\n        setId,\n      } = privateNamesMap.get(name);\n\n      const cloneId = (id: t.Identifier) =>\n        t.inherits(t.cloneNode(id), privateName);\n\n      if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n        if (isStatic) {\n          try {\n            // classStaticPrivateFieldDestructureSet was introduced in 7.13.10\n            // eslint-disable-next-line no-var\n            var helper = file.addHelper(\n              \"classStaticPrivateFieldDestructureSet\",\n            );\n          } catch {\n            throw new Error(\n              \"Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \\n\" +\n                \"please update @babel/helpers to the latest version.\",\n            );\n          }\n          return t.memberExpression(\n            t.callExpression(helper, [\n              this.receiver(member),\n              t.cloneNode(classRef),\n              cloneId(id),\n            ]),\n            t.identifier(\"value\"),\n          );\n        }\n\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"classPrivateFieldDestructureSet\"), [\n            this.receiver(member),\n            cloneId(id),\n          ]),\n          t.identifier(\"value\"),\n        );\n      }\n\n      if (isMethod && !setId) {\n        return t.memberExpression(\n          t.sequenceExpression([\n            // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n            member.node.object,\n            readOnlyError(file, name),\n          ]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      if (isStatic && !isMethod) {\n        const getCall = this.get(member);\n        if (\n          !noUninitializedPrivateFieldAccess ||\n          !t.isCallExpression(getCall)\n        ) {\n          return getCall;\n        }\n        const ref = getCall.arguments.pop();\n        getCall.arguments.push(template.expression.ast`(_) => ${ref} = _`);\n        return t.memberExpression(\n          t.callExpression(file.addHelper(\"toSetter\"), [getCall]),\n          t.identifier(\"_\"),\n        );\n      }\n\n      const setCall = this.set(member, t.identifier(\"_\"));\n      if (\n        !t.isCallExpression(setCall) ||\n        !t.isIdentifier(setCall.arguments[setCall.arguments.length - 1], {\n          name: \"_\",\n        })\n      ) {\n        throw member.buildCodeFrameError(\n          \"Internal Babel error while compiling this code. This is a Babel bug. \" +\n            \"Please report it at https://github.com/babel/babel/issues.\",\n        );\n      }\n\n      // someHelper(foo, bar, _) -> someHelper, [foo, bar]\n      // aFn.call(foo, bar, _) -> aFn, [bar], foo\n      let args: t.Expression[];\n      if (\n        t.isMemberExpression(setCall.callee, { computed: false }) &&\n        t.isIdentifier(setCall.callee.property) &&\n        setCall.callee.property.name === \"call\"\n      ) {\n        args = [\n          // @ts-ignore(Babel 7 vs Babel 8) member.node.object is not t.Super\n          setCall.callee.object,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(1, -1),\n          ),\n          setCall.arguments[0] as t.Expression,\n        ];\n      } else {\n        args = [\n          setCall.callee as t.Expression,\n          t.arrayExpression(\n            // Remove '_'\n            (setCall.arguments as t.Expression[]).slice(0, -1),\n          ),\n        ];\n      }\n\n      return t.memberExpression(\n        t.callExpression(file.addHelper(\"toSetter\"), args),\n        t.identifier(\"_\"),\n      );\n    },\n\n    call(member, args: (t.Expression | t.SpreadElement)[]) {\n      // The first access (the get) should do the memo assignment.\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, false);\n    },\n\n    optionalCall(member, args: (t.Expression | t.SpreadElement)[]) {\n      this.memoise(member, 1);\n\n      return optimiseCall(this.get(member), this.receiver(member), args, true);\n    },\n\n    delete() {\n      throw new Error(\n        \"Internal Babel error: deleting private elements is a parsing error.\",\n      );\n    },\n  };\n\nconst privateNameHandlerLoose: Handler<PrivateNameState> = {\n  get(member) {\n    const { privateNamesMap, file } = this;\n    const { object } = member.node;\n    const { name } = (member.node.property as t.PrivateName).id;\n\n    return template.expression`BASE(REF, PROP)[PROP]`({\n      BASE: file.addHelper(\"classPrivateFieldLooseBase\"),\n      REF: t.cloneNode(object),\n      PROP: t.cloneNode(privateNamesMap.get(name).id),\n    });\n  },\n\n  set() {\n    // noop\n    throw new Error(\"private name handler with loose = true don't need set()\");\n  },\n\n  boundGet(member) {\n    return t.callExpression(\n      t.memberExpression(this.get(member), t.identifier(\"bind\")),\n      // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n      [t.cloneNode(member.node.object as t.Expression)],\n    );\n  },\n\n  simpleSet(member) {\n    return this.get(member);\n  },\n\n  destructureSet(member) {\n    return this.get(member);\n  },\n\n  call(member, args) {\n    return t.callExpression(this.get(member), args);\n  },\n\n  optionalCall(member, args) {\n    return t.optionalCallExpression(this.get(member), args, true);\n  },\n\n  delete() {\n    throw new Error(\n      \"Internal Babel error: deleting private elements is a parsing error.\",\n    );\n  },\n};\n\nexport function transformPrivateNamesUsage(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  privateNamesMap: PrivateNamesMap,\n  {\n    privateFieldsAsProperties,\n    noUninitializedPrivateFieldAccess,\n    noDocumentAll,\n    innerBinding,\n  }: {\n    privateFieldsAsProperties: boolean;\n    noUninitializedPrivateFieldAccess: boolean;\n    noDocumentAll: boolean;\n    innerBinding: t.Identifier;\n  },\n  state: File,\n) {\n  if (!privateNamesMap.size) return;\n\n  const body = path.get(\"body\");\n  const handler = privateFieldsAsProperties\n    ? privateNameHandlerLoose\n    : privateNameHandlerSpec;\n\n  memberExpressionToFunctions<PrivateNameState>(body, privateNameVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    ...handler,\n    noDocumentAll,\n    noUninitializedPrivateFieldAccess,\n    innerBinding,\n  });\n  body.traverse(privateInVisitor, {\n    privateNamesMap,\n    classRef: ref,\n    file: state,\n    privateFieldsAsProperties,\n    innerBinding,\n  });\n}\n\nfunction buildPrivateFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${t.cloneNode(id)}, {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ${value}\n      });\n    ` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPrivateInstanceFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const { id } = privateNamesMap.get(prop.node.key.id.name);\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${t.cloneNode(id)}.set(${ref}, {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ${value},\n        })` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      t.expressionStatement(\n        t.callExpression(helper, [\n          t.thisExpression(),\n          inheritLoc(t.cloneNode(id), prop.node.key),\n          process.env.BABEL_8_BREAKING || newHelpers(state)\n            ? value\n            : template.expression.ast`{ writable: true, value: ${value} }`,\n        ]),\n      ),\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateStaticFieldInitSpec(\n  prop: NodePath<t.ClassPrivateProperty>,\n  privateNamesMap: PrivateNamesMap,\n  noUninitializedPrivateFieldAccess: boolean,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  const value = noUninitializedPrivateFieldAccess\n    ? prop.node.value\n    : template.expression.ast`{\n        _: ${prop.node.value || t.buildUndefinedNode()}\n      }`;\n\n  return inheritPropComments(\n    t.variableDeclaration(\"var\", [\n      t.variableDeclarator(t.cloneNode(privateName.id), value),\n    ]),\n    prop,\n  );\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var buildPrivateStaticFieldInitSpecOld = function (\n    prop: NodePath<t.ClassPrivateProperty>,\n    privateNamesMap: PrivateNamesMap,\n  ) {\n    const privateName = privateNamesMap.get(prop.node.key.id.name);\n    const { id, getId, setId, initAdded } = privateName;\n    const isGetterOrSetter = getId || setId;\n\n    if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;\n\n    if (isGetterOrSetter) {\n      privateNamesMap.set(prop.node.key.id.name, {\n        ...privateName,\n        initAdded: true,\n      });\n\n      return inheritPropComments(\n        template.statement.ast`\n          var ${t.cloneNode(id)} = {\n            // configurable is false by default\n            // enumerable is false by default\n            // writable is false by default\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          }\n        `,\n        prop,\n      );\n    }\n\n    const value = prop.node.value || prop.scope.buildUndefinedNode();\n    return inheritPropComments(\n      template.statement.ast`\n        var ${t.cloneNode(id)} = {\n          // configurable is false by default\n          // enumerable is false by default\n          writable: true,\n          value: ${value}\n        };\n      `,\n      prop,\n    );\n  };\n}\n\nfunction buildPrivateMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { methodId, id, getId, setId, initAdded } = privateName;\n  if (initAdded) return;\n\n  if (methodId) {\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ${methodId.name}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        });\n      ` as t.ExpressionStatement,\n      prop,\n    );\n  }\n}\n\nfunction buildPrivateInstanceMethodInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n\n  if (privateName.initAdded) return;\n\n  if (!process.env.BABEL_8_BREAKING && !newHelpers(state)) {\n    const isGetterOrSetter = privateName.getId || privateName.setId;\n    if (isGetterOrSetter) {\n      return buildPrivateAccessorInitialization(\n        ref,\n        prop,\n        privateNamesMap,\n        state,\n      );\n    }\n  }\n\n  return buildPrivateInstanceMethodInitialization(\n    ref,\n    prop,\n    privateNamesMap,\n    state,\n  );\n}\n\nfunction buildPrivateAccessorInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, getId, setId } = privateName;\n\n  privateNamesMap.set(prop.node.key.id.name, {\n    ...privateName,\n    initAdded: true,\n  });\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateFieldInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`\n          ${id}.set(${ref}, {\n            get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n            set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n          });\n        ` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateFieldInitSpec\");\n  return inheritLoc(\n    inheritPropComments(\n      template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)},\n      {\n        get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n        set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n      },\n    )` as t.ExpressionStatement,\n      prop,\n    ),\n    prop.node,\n  );\n}\n\nfunction buildPrivateInstanceMethodInitialization(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  state: File,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id } = privateName;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (!state.availableHelper(\"classPrivateMethodInitSpec\")) {\n      return inheritPropComments(\n        template.statement.ast`${id}.add(${ref})` as t.ExpressionStatement,\n        prop,\n      );\n    }\n  }\n\n  const helper = state.addHelper(\"classPrivateMethodInitSpec\");\n  return inheritPropComments(\n    template.statement.ast`${helper}(\n      ${t.thisExpression()},\n      ${t.cloneNode(id)}\n    )` as t.ExpressionStatement,\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(ref, key, computed || t.isLiteral(key)),\n        value,\n      ),\n    ),\n    prop,\n  );\n}\n\nfunction buildPublicFieldInitSpec(\n  ref: t.Expression,\n  prop: NodePath<t.ClassProperty>,\n  state: File,\n) {\n  const { key, computed } = prop.node;\n  const value = prop.node.value || prop.scope.buildUndefinedNode();\n\n  return inheritPropComments(\n    t.expressionStatement(\n      t.callExpression(state.addHelper(\"defineProperty\"), [\n        ref,\n        computed || t.isLiteral(key)\n          ? key\n          : t.stringLiteral((key as t.Identifier).name),\n        value,\n      ]),\n    ),\n    prop,\n  );\n}\n\nfunction buildPrivateStaticMethodInitLoose(\n  ref: t.Expression,\n  prop: NodePath<t.ClassPrivateMethod>,\n  state: File,\n  privateNamesMap: PrivateNamesMap,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const { id, methodId, getId, setId, initAdded } = privateName;\n\n  if (initAdded) return;\n\n  const isGetterOrSetter = getId || setId;\n  if (isGetterOrSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n\n    return inheritPropComments(\n      template.statement.ast`\n        Object.defineProperty(${ref}, ${id}, {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ${getId ? getId.name : prop.scope.buildUndefinedNode()},\n          set: ${setId ? setId.name : prop.scope.buildUndefinedNode()}\n        })\n      `,\n      prop,\n    );\n  }\n\n  return inheritPropComments(\n    template.statement.ast`\n      Object.defineProperty(${ref}, ${id}, {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ${methodId.name}\n      });\n    `,\n    prop,\n  );\n}\n\nfunction buildPrivateMethodDeclaration(\n  file: File,\n  prop: NodePath<t.ClassPrivateMethod>,\n  privateNamesMap: PrivateNamesMap,\n  privateFieldsAsSymbolsOrProperties = false,\n) {\n  const privateName = privateNamesMap.get(prop.node.key.id.name);\n  const {\n    id,\n    methodId,\n    getId,\n    setId,\n    getterDeclared,\n    setterDeclared,\n    static: isStatic,\n  } = privateName;\n  const { params, body, generator, async } = prop.node;\n  const isGetter = getId && params.length === 0;\n  const isSetter = setId && params.length > 0;\n\n  if ((isGetter && getterDeclared) || (isSetter && setterDeclared)) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      initAdded: true,\n    });\n    return null;\n  }\n\n  if (\n    (process.env.BABEL_8_BREAKING || newHelpers(file)) &&\n    (isGetter || isSetter) &&\n    !privateFieldsAsSymbolsOrProperties\n  ) {\n    const scope = prop.get(\"body\").scope;\n    const thisArg = scope.generateUidIdentifier(\"this\");\n    const state: ReplaceThisState = {\n      thisRef: thisArg,\n      argumentsPath: [],\n    };\n    // eslint-disable-next-line @typescript-eslint/no-use-before-define\n    prop.traverse(thisContextVisitor, state);\n    if (state.argumentsPath.length) {\n      const argumentsId = scope.generateUidIdentifier(\"arguments\");\n      scope.push({\n        id: argumentsId,\n        init: template.expression.ast`[].slice.call(arguments, 1)`,\n      });\n      for (const path of state.argumentsPath) {\n        path.replaceWith(t.cloneNode(argumentsId));\n      }\n    }\n\n    params.unshift(t.cloneNode(thisArg));\n  }\n\n  let declId = methodId;\n\n  if (isGetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      getterDeclared: true,\n      initAdded: true,\n    });\n    declId = getId;\n  } else if (isSetter) {\n    privateNamesMap.set(prop.node.key.id.name, {\n      ...privateName,\n      setterDeclared: true,\n      initAdded: true,\n    });\n    declId = setId;\n  } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {\n    declId = id;\n  }\n\n  return inheritPropComments(\n    t.functionDeclaration(\n      t.cloneNode(declId),\n      // @ts-expect-error params for ClassMethod has TSParameterProperty\n      params,\n      body,\n      generator,\n      async,\n    ),\n    prop,\n  );\n}\n\ntype ReplaceThisState = {\n  thisRef: t.Identifier;\n  needsClassRef?: boolean;\n  innerBinding?: t.Identifier | null;\n  argumentsPath?: NodePath<t.Identifier>[];\n};\n\ntype ReplaceInnerBindingReferenceState = ReplaceThisState;\n\nconst thisContextVisitor = visitors.environmentVisitor<ReplaceThisState>({\n  Identifier(path, state) {\n    if (state.argumentsPath && path.node.name === \"arguments\") {\n      state.argumentsPath.push(path);\n    }\n  },\n  UnaryExpression(path) {\n    // Replace `delete this` with `true`\n    const { node } = path;\n    if (node.operator === \"delete\") {\n      const argument = skipTransparentExprWrapperNodes(node.argument);\n      if (t.isThisExpression(argument)) {\n        path.replaceWith(t.booleanLiteral(true));\n      }\n    }\n  },\n  ThisExpression(path, state) {\n    state.needsClassRef = true;\n    path.replaceWith(t.cloneNode(state.thisRef));\n  },\n  MetaProperty(path) {\n    const { node, scope } = path;\n    // if there are `new.target` in static field\n    // we should replace it with `undefined`\n    if (node.meta.name === \"new\" && node.property.name === \"target\") {\n      path.replaceWith(scope.buildUndefinedNode());\n    }\n  },\n});\n\nconst innerReferencesVisitor: Visitor<ReplaceInnerBindingReferenceState> = {\n  ReferencedIdentifier(path, state) {\n    if (\n      path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)\n    ) {\n      state.needsClassRef = true;\n      path.node.name = state.thisRef.name;\n    }\n  },\n};\n\nfunction replaceThisContext(\n  path: PropPath,\n  ref: t.Identifier,\n  innerBindingRef: t.Identifier | null,\n) {\n  const state: ReplaceThisState = {\n    thisRef: ref,\n    needsClassRef: false,\n    innerBinding: innerBindingRef,\n  };\n  if (!path.isMethod()) {\n    // replace `this` in property initializers and static blocks\n    path.traverse(thisContextVisitor, state);\n  }\n\n  // todo: use innerBinding.referencePaths to avoid full traversal\n  if (\n    innerBindingRef != null &&\n    state.thisRef?.name &&\n    state.thisRef.name !== innerBindingRef.name\n  ) {\n    path.traverse(innerReferencesVisitor, state);\n  }\n\n  return state.needsClassRef;\n}\n\nexport type PropNode =\n  | t.ClassProperty\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.StaticBlock;\nexport type PropPath = NodePath<PropNode>;\n\nfunction isNameOrLength({ key, computed }: t.ClassProperty) {\n  if (key.type === \"Identifier\") {\n    return !computed && (key.name === \"name\" || key.name === \"length\");\n  }\n  if (key.type === \"StringLiteral\") {\n    return key.value === \"name\" || key.value === \"length\";\n  }\n  return false;\n}\n\n/**\n * Inherit comments from class members. This is a reduced version of\n * t.inheritsComments: the trailing comments are not inherited because\n * for most class members except the last one, their trailing comments are\n * the next sibling's leading comments.\n *\n * @template T transformed class member type\n * @param {T} node transformed class member\n * @param {PropPath} prop class member\n * @returns transformed class member type with comments inherited\n */\nfunction inheritPropComments<T extends t.Node>(node: T, prop: PropPath) {\n  t.inheritLeadingComments(node, prop.node);\n  t.inheritInnerComments(node, prop.node);\n  return node;\n}\n\nfunction inheritLoc<T extends t.Node>(node: T, original: t.Node) {\n  node.start = original.start;\n  node.end = original.end;\n  node.loc = original.loc;\n  return node;\n}\n\n/**\n * ClassRefFlag records the requirement of the class binding reference.\n *\n * @enum {number}\n */\nconst enum ClassRefFlag {\n  None,\n  /**\n   * When this flag is enabled, the binding reference can be the class id,\n   * if exists, or the uid identifier generated for class expression. The\n   * reference is safe to be consumed by [[Define]].\n   */\n  ForDefine = 1 << 0,\n  /**\n   * When this flag is enabled, the reference must be a uid, because the outer\n   * class binding can be mutated by user codes.\n   * E.g.\n   * class C { static p = C }; const oldC = C; C = null; oldC.p;\n   * we must memoize class `C` before defining the property `p`.\n   */\n  ForInnerBinding = 1 << 1,\n}\n\nexport function buildFieldsInitNodes(\n  ref: t.Identifier | null,\n  superRef: t.Expression | undefined,\n  props: PropPath[],\n  privateNamesMap: PrivateNamesMap,\n  file: File,\n  setPublicClassFields: boolean,\n  privateFieldsAsSymbolsOrProperties: boolean,\n  noUninitializedPrivateFieldAccess: boolean,\n  constantSuper: boolean,\n  innerBindingRef: t.Identifier | null,\n) {\n  let classRefFlags = ClassRefFlag.None;\n  let injectSuperRef: t.Identifier;\n  const staticNodes: t.Statement[] = [];\n  const instanceNodes: t.ExpressionStatement[] = [];\n  let lastInstanceNodeReturnsThis = false;\n  // These nodes are pure and can be moved to the closest statement position\n  const pureStaticNodes: t.FunctionDeclaration[] = [];\n  let classBindingNode: t.ExpressionStatement | null = null;\n\n  const getSuperRef = t.isIdentifier(superRef)\n    ? () => superRef\n    : () => {\n        injectSuperRef ??=\n          props[0].scope.generateUidIdentifierBasedOnNode(superRef);\n        return injectSuperRef;\n      };\n\n  const classRefForInnerBinding =\n    ref ??\n    props[0].scope.generateUidIdentifier(innerBindingRef?.name || \"Class\");\n  ref ??= t.cloneNode(innerBindingRef);\n\n  for (const prop of props) {\n    if (prop.isClassProperty()) {\n      ts.assertFieldTransformed(prop);\n    }\n\n    // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n    const isStatic = !t.isStaticBlock?.(prop.node) && prop.node.static;\n    const isInstance = !isStatic;\n    const isPrivate = prop.isPrivate();\n    const isPublic = !isPrivate;\n    const isField = prop.isProperty();\n    const isMethod = !isField;\n    const isStaticBlock = prop.isStaticBlock?.();\n\n    if (isStatic) classRefFlags |= ClassRefFlag.ForDefine;\n\n    if (isStatic || (isMethod && isPrivate) || isStaticBlock) {\n      new ReplaceSupers({\n        methodPath: prop,\n        constantSuper,\n        file: file,\n        refToPreserve: innerBindingRef,\n        getSuperRef,\n        getObjectRef() {\n          classRefFlags |= ClassRefFlag.ForInnerBinding;\n          if (isStatic || isStaticBlock) {\n            return classRefForInnerBinding;\n          } else {\n            return t.memberExpression(\n              classRefForInnerBinding,\n              t.identifier(\"prototype\"),\n            );\n          }\n        },\n      }).replace();\n\n      const replaced = replaceThisContext(\n        prop,\n        classRefForInnerBinding,\n        innerBindingRef,\n      );\n      if (replaced) {\n        classRefFlags |= ClassRefFlag.ForInnerBinding;\n      }\n    }\n\n    lastInstanceNodeReturnsThis = false;\n\n    // TODO(ts): there are so many `ts-expect-error` inside cases since\n    // ts can not infer type from pre-computed values (or a case test)\n    // even change `isStaticBlock` to `t.isStaticBlock(prop)` will not make prop\n    // a `NodePath<t.StaticBlock>`\n    // this maybe a bug for ts\n    switch (true) {\n      case isStaticBlock: {\n        const blockBody = prop.node.body;\n        // We special-case the single expression case to avoid the iife, since\n        // it's common.\n        if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n          staticNodes.push(inheritPropComments(blockBody[0], prop));\n        } else {\n          staticNodes.push(\n            t.inheritsComments(\n              template.statement.ast`(() => { ${blockBody} })()`,\n              prop.node,\n            ),\n          );\n        }\n        break;\n      }\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.push(\n          buildPrivateFieldInitLoose(t.cloneNode(ref), prop, privateNamesMap),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        } else {\n          staticNodes.push(\n            buildPrivateStaticFieldInitSpec(\n              prop,\n              privateNamesMap,\n              noUninitializedPrivateFieldAccess,\n            ),\n          );\n        }\n        break;\n      case isStatic && isPublic && isField && setPublicClassFields:\n        // Functions always have non-writable .name and .length properties,\n        // so we must always use [[Define]] for them.\n        // It might still be possible to a computed static fields whose resulting\n        // key is \"name\" or \"length\", but the assumption is telling us that it's\n        // not going to happen.\n        if (!isNameOrLength(prop.node)) {\n          staticNodes.push(buildPublicFieldInitLoose(t.cloneNode(ref), prop));\n          break;\n        }\n      // falls through\n      case isStatic && isPublic && isField && !setPublicClassFields:\n        staticNodes.push(\n          buildPublicFieldInitSpec(t.cloneNode(ref), prop, file),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateFieldInitLoose(t.thisExpression(), prop, privateNamesMap),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isField &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.push(\n          buildPrivateInstanceFieldInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateMethodInitLoose(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        instanceNodes.unshift(\n          buildPrivateInstanceMethodInitSpec(\n            t.thisExpression(),\n            prop,\n            privateNamesMap,\n            file,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        !privateFieldsAsSymbolsOrProperties:\n        if (!process.env.BABEL_8_BREAKING && !newHelpers(file)) {\n          staticNodes.unshift(\n            // @ts-expect-error checked in switch\n            buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap),\n          );\n        }\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isStatic &&\n        isPrivate &&\n        isMethod &&\n        privateFieldsAsSymbolsOrProperties:\n        staticNodes.unshift(\n          buildPrivateStaticMethodInitLoose(\n            t.cloneNode(ref),\n            prop,\n            file,\n            privateNamesMap,\n          ),\n        );\n        pureStaticNodes.push(\n          buildPrivateMethodDeclaration(\n            file,\n            prop,\n            privateNamesMap,\n            privateFieldsAsSymbolsOrProperties,\n          ),\n        );\n        break;\n      case isInstance && isPublic && isField && setPublicClassFields:\n        instanceNodes.push(buildPublicFieldInitLoose(t.thisExpression(), prop));\n        break;\n      case isInstance && isPublic && isField && !setPublicClassFields:\n        lastInstanceNodeReturnsThis = true;\n        instanceNodes.push(\n          buildPublicFieldInitSpec(t.thisExpression(), prop, file),\n        );\n        break;\n      default:\n        throw new Error(\"Unreachable.\");\n    }\n  }\n\n  if (classRefFlags & ClassRefFlag.ForInnerBinding && innerBindingRef != null) {\n    classBindingNode = t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.cloneNode(classRefForInnerBinding),\n        t.cloneNode(innerBindingRef),\n      ),\n    );\n  }\n\n  return {\n    staticNodes: staticNodes.filter(Boolean),\n    instanceNodes: instanceNodes.filter(Boolean),\n    lastInstanceNodeReturnsThis,\n    pureStaticNodes: pureStaticNodes.filter(Boolean),\n    classBindingNode,\n    wrapClass(path: NodePath<t.Class>) {\n      for (const prop of props) {\n        // Delete leading comments so that they don't get attached as\n        // trailing comments of the previous sibling.\n        // When transforming props, we explicitly attach their leading\n        // comments to the transformed node with `inheritPropComments`\n        // above.\n        prop.node.leadingComments = null;\n        prop.remove();\n      }\n\n      if (injectSuperRef) {\n        path.scope.push({ id: t.cloneNode(injectSuperRef) });\n        path.set(\n          \"superClass\",\n          t.assignmentExpression(\"=\", injectSuperRef, path.node.superClass),\n        );\n      }\n\n      if (classRefFlags !== ClassRefFlag.None) {\n        if (path.isClassExpression()) {\n          path.scope.push({ id: ref });\n          path.replaceWith(\n            t.assignmentExpression(\"=\", t.cloneNode(ref), path.node),\n          );\n        } else {\n          if (innerBindingRef == null) {\n            // export anonymous class declaration\n            path.node.id = ref;\n          }\n          if (classBindingNode != null) {\n            path.scope.push({ id: classRefForInnerBinding });\n          }\n        }\n      }\n\n      return path;\n    },\n  };\n}\n","import { template, types as t } from \"@babel/core\";\nimport type { File, NodePath, Scope, Visitor } from \"@babel/core\";\nimport { visitors } from \"@babel/traverse\";\n\nconst findBareSupers = visitors.environmentVisitor<\n  NodePath<t.CallExpression>[]\n>({\n  Super(path) {\n    const { node, parentPath } = path;\n    if (parentPath.isCallExpression({ callee: node })) {\n      this.push(parentPath);\n    }\n  },\n});\n\nconst referenceVisitor: Visitor<{ scope: Scope }> = {\n  \"TSTypeAnnotation|TypeAnnotation\"(\n    path: NodePath<t.TSTypeAnnotation | t.TypeAnnotation>,\n  ) {\n    path.skip();\n  },\n\n  ReferencedIdentifier(path: NodePath<t.Identifier>, { scope }) {\n    if (scope.hasOwnBinding(path.node.name)) {\n      scope.rename(path.node.name);\n      path.skip();\n    }\n  },\n};\n\ntype HandleClassTDZState = {\n  classBinding: Scope.Binding;\n  file: File;\n};\n\nfunction handleClassTDZ(\n  path: NodePath<t.Identifier>,\n  state: HandleClassTDZState,\n) {\n  if (\n    state.classBinding &&\n    state.classBinding === path.scope.getBinding(path.node.name)\n  ) {\n    const classNameTDZError = state.file.addHelper(\"classNameTDZError\");\n    const throwNode = t.callExpression(classNameTDZError, [\n      t.stringLiteral(path.node.name),\n    ]);\n\n    path.replaceWith(t.sequenceExpression([throwNode, path.node]));\n    path.skip();\n  }\n}\n\nconst classFieldDefinitionEvaluationTDZVisitor: Visitor<HandleClassTDZState> = {\n  ReferencedIdentifier: handleClassTDZ,\n};\n\ninterface RenamerState {\n  scope: Scope;\n}\n\nexport function injectInitialization(\n  path: NodePath<t.Class>,\n  constructor: NodePath<t.ClassMethod> | undefined,\n  nodes: t.ExpressionStatement[],\n  renamer?: (visitor: Visitor<RenamerState>, state: RenamerState) => void,\n  lastReturnsThis?: boolean,\n) {\n  if (!nodes.length) return;\n\n  const isDerived = !!path.node.superClass;\n\n  if (!constructor) {\n    const newConstructor = t.classMethod(\n      \"constructor\",\n      t.identifier(\"constructor\"),\n      [],\n      t.blockStatement([]),\n    );\n\n    if (isDerived) {\n      newConstructor.params = [t.restElement(t.identifier(\"args\"))];\n      newConstructor.body.body.push(template.statement.ast`super(...args)`);\n    }\n\n    [constructor] = path\n      .get(\"body\")\n      .unshiftContainer(\"body\", newConstructor) as NodePath<t.ClassMethod>[];\n  }\n\n  if (renamer) {\n    renamer(referenceVisitor, { scope: constructor.scope });\n  }\n\n  if (isDerived) {\n    const bareSupers: NodePath<t.CallExpression>[] = [];\n    constructor.traverse(findBareSupers, bareSupers);\n    let isFirst = true;\n    for (const bareSuper of bareSupers) {\n      if (isFirst) {\n        isFirst = false;\n      } else {\n        nodes = nodes.map(n => t.cloneNode(n));\n      }\n      if (!bareSuper.parentPath.isExpressionStatement()) {\n        const allNodes: t.Expression[] = [\n          bareSuper.node,\n          ...nodes.map(n => t.toExpression(n)),\n        ];\n        if (!lastReturnsThis) allNodes.push(t.thisExpression());\n        bareSuper.replaceWith(t.sequenceExpression(allNodes));\n      } else {\n        bareSuper.insertAfter(nodes);\n      }\n    }\n  } else {\n    constructor.get(\"body\").unshiftContainer(\"body\", nodes);\n  }\n}\n\ntype ComputedKeyAssignmentExpression = t.AssignmentExpression & {\n  left: t.Identifier;\n};\n\n/**\n * Try to memoise a computed key.\n * It returns undefined when the computed key is an uid reference, otherwise\n * an assignment expression `memoiserId = computed key`\n * @export\n * @param {t.Expression} keyNode Computed key\n * @param {Scope} scope The scope where memoiser id should be registered\n * @param {string} hint The memoiser id hint\n * @returns {(ComputedKeyAssignmentExpression | undefined)}\n */\nexport function memoiseComputedKey(\n  keyNode: t.Expression,\n  scope: Scope,\n  hint: string,\n): ComputedKeyAssignmentExpression | undefined {\n  const isUidReference = t.isIdentifier(keyNode) && scope.hasUid(keyNode.name);\n  if (isUidReference) {\n    return;\n  }\n  const isMemoiseAssignment =\n    t.isAssignmentExpression(keyNode, { operator: \"=\" }) &&\n    t.isIdentifier(keyNode.left) &&\n    scope.hasUid(keyNode.left.name);\n  if (isMemoiseAssignment) {\n    return t.cloneNode(keyNode as ComputedKeyAssignmentExpression);\n  } else {\n    const ident = t.identifier(hint);\n    // Declaring in the same block scope\n    // Ref: https://github.com/babel/babel/pull/10029/files#diff-fbbdd83e7a9c998721c1484529c2ce92\n    scope.push({\n      id: ident,\n      kind: \"let\",\n    });\n    return t.assignmentExpression(\n      \"=\",\n      t.cloneNode(ident),\n      keyNode,\n    ) as ComputedKeyAssignmentExpression;\n  }\n}\n\nexport function extractComputedKeys(\n  path: NodePath<t.Class>,\n  computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[],\n  file: File,\n) {\n  const { scope } = path;\n  const declarations: t.ExpressionStatement[] = [];\n  const state = {\n    classBinding: path.node.id && scope.getBinding(path.node.id.name),\n    file,\n  };\n  for (const computedPath of computedPaths) {\n    const computedKey = computedPath.get(\"key\");\n    if (computedKey.isReferencedIdentifier()) {\n      handleClassTDZ(computedKey, state);\n    } else {\n      computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);\n    }\n\n    const computedNode = computedPath.node;\n    // Make sure computed property names are only evaluated once (upon class definition)\n    // and in the right order in combination with static properties\n    if (!computedKey.isConstantExpression()) {\n      const assignment = memoiseComputedKey(\n        computedKey.node,\n        scope,\n        scope.generateUidBasedOnNode(computedKey.node),\n      );\n      if (assignment) {\n        declarations.push(t.expressionStatement(assignment));\n        computedNode.key = t.cloneNode(assignment.left);\n      }\n    }\n  }\n\n  return declarations;\n}\n","import type { NodePath, Scope, Visitor } from \"@babel/core\";\nimport { types as t, template } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\nimport type { PluginAPI, PluginObject, PluginPass } from \"@babel/core\";\nimport { skipTransparentExprWrappers } from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n  privateNameVisitorFactory,\n  type PrivateNameVisitorState,\n} from \"./fields.ts\";\nimport { memoiseComputedKey } from \"./misc.ts\";\n\nexport function hasOwnDecorators(node: t.Class | t.ClassBody[\"body\"][number]) {\n  // @ts-expect-error: 'decorators' not in TSIndexSignature\n  return !!node.decorators?.length;\n}\n\nexport function hasDecorators(node: t.Class) {\n  return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);\n}\n\n// We inline this package\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport * as charCodes from \"charcodes\";\ninterface Options {\n  /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n  loose?: boolean;\n}\n\ntype ClassDecoratableElement =\n  | t.ClassMethod\n  | t.ClassPrivateMethod\n  | t.ClassProperty\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty;\n\ntype ClassElement =\n  | ClassDecoratableElement\n  | t.TSDeclareMethod\n  | t.TSIndexSignature\n  | t.StaticBlock;\n\ntype ClassElementCanHaveComputedKeys =\n  | t.ClassMethod\n  | t.ClassProperty\n  | t.ClassAccessorProperty;\n\n// TODO(Babel 8): Only keep 2023-11\nexport type DecoratorVersionKind =\n  | \"2023-11\"\n  | \"2023-05\"\n  | \"2023-01\"\n  | \"2022-03\"\n  | \"2021-12\";\n\nfunction incrementId(id: number[], idx = id.length - 1): void {\n  // If index is -1, id needs an additional character, unshift A\n  if (idx === -1) {\n    id.unshift(charCodes.uppercaseA);\n    return;\n  }\n\n  const current = id[idx];\n\n  if (current === charCodes.uppercaseZ) {\n    // if current is Z, skip to a\n    id[idx] = charCodes.lowercaseA;\n  } else if (current === charCodes.lowercaseZ) {\n    // if current is z, reset to A and carry the 1\n    id[idx] = charCodes.uppercaseA;\n    incrementId(id, idx - 1);\n  } else {\n    // else, increment by one\n    id[idx] = current + 1;\n  }\n}\n\n/**\n * Generates a new private name that is unique to the given class. This can be\n * used to create extra class fields and methods for the implementation, while\n * keeping the length of those names as small as possible. This is important for\n * minification purposes (though private names can generally be minified,\n * transpilations and polyfills cannot yet).\n */\nfunction createPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  const currentPrivateId: number[] = [];\n  const privateNames = new Set<string>();\n\n  classPath.traverse({\n    PrivateName(path) {\n      privateNames.add(path.node.id.name);\n    },\n  });\n\n  return (): t.PrivateName => {\n    let reifiedId;\n    do {\n      incrementId(currentPrivateId);\n      reifiedId = String.fromCharCode(...currentPrivateId);\n    } while (privateNames.has(reifiedId));\n\n    return t.privateName(t.identifier(reifiedId));\n  };\n}\n\n/**\n * Wraps the above generator function so that it's run lazily the first time\n * it's actually required. Several types of decoration do not require this, so it\n * saves iterating the class elements an additional time and allocating the space\n * for the Sets of element names.\n */\nfunction createLazyPrivateUidGeneratorForClass(\n  classPath: NodePath<t.ClassDeclaration | t.ClassExpression>,\n): () => t.PrivateName {\n  let generator: () => t.PrivateName;\n\n  return (): t.PrivateName => {\n    if (!generator) {\n      generator = createPrivateUidGeneratorForClass(classPath);\n    }\n\n    return generator();\n  };\n}\n\n/**\n * Takes a class definition and the desired class name if anonymous and\n * replaces it with an equivalent class declaration (path) which is then\n * assigned to a local variable (id). This allows us to reassign the local variable with the\n * decorated version of the class. The class definition retains its original\n * name so that `toString` is not affected, other references to the class\n * are renamed instead.\n */\nfunction replaceClassWithVar(\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n): {\n  id: t.Identifier;\n  path: NodePath<t.ClassDeclaration | t.ClassExpression>;\n} {\n  const id = path.node.id;\n  const scope = path.scope;\n  if (path.type === \"ClassDeclaration\") {\n    const className = id.name;\n    const varId = scope.generateUidIdentifierBasedOnNode(id);\n    const classId = t.identifier(className);\n\n    scope.rename(className, varId.name);\n\n    path.get(\"id\").replaceWith(classId);\n\n    return { id: t.cloneNode(varId), path };\n  } else {\n    let varId: t.Identifier;\n\n    if (id) {\n      className = id.name;\n      varId = generateLetUidIdentifier(scope.parent, className);\n      scope.rename(className, varId.name);\n    } else {\n      varId = generateLetUidIdentifier(\n        scope.parent,\n        typeof className === \"string\" ? className : \"decorated_class\",\n      );\n    }\n\n    const newClassExpr = t.classExpression(\n      typeof className === \"string\" ? t.identifier(className) : null,\n      path.node.superClass,\n      path.node.body,\n    );\n\n    const [newPath] = path.replaceWith(\n      t.sequenceExpression([newClassExpr, varId]),\n    );\n\n    return {\n      id: t.cloneNode(varId),\n      path: newPath.get(\"expressions.0\") as NodePath<t.ClassExpression>,\n    };\n  }\n}\n\nfunction generateClassProperty(\n  key: t.PrivateName | t.Identifier,\n  value: t.Expression | undefined,\n  isStatic: boolean,\n): t.ClassPrivateProperty | t.ClassProperty {\n  if (key.type === \"PrivateName\") {\n    return t.classPrivateProperty(key, value, undefined, isStatic);\n  } else {\n    return t.classProperty(key, value, undefined, undefined, isStatic);\n  }\n}\n\nfunction assignIdForAnonymousClass(\n  path: NodePath<t.Class>,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n) {\n  if (!path.node.id) {\n    path.node.id =\n      typeof className === \"string\"\n        ? t.identifier(className)\n        : path.scope.generateUidIdentifier(\"Class\");\n  }\n}\n\nfunction addProxyAccessorsFor(\n  className: t.Identifier,\n  element: NodePath<ClassDecoratableElement>,\n  getterKey: t.PrivateName | t.Expression,\n  setterKey: t.PrivateName | t.Expression,\n  targetKey: t.PrivateName,\n  isComputed: boolean,\n  isStatic: boolean,\n  version: DecoratorVersionKind,\n): void {\n  const thisArg =\n    (version === \"2023-11\" ||\n      (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n    isStatic\n      ? className\n      : t.thisExpression();\n\n  const getterBody = t.blockStatement([\n    t.returnStatement(\n      t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n    ),\n  ]);\n\n  const setterBody = t.blockStatement([\n    t.expressionStatement(\n      t.assignmentExpression(\n        \"=\",\n        t.memberExpression(t.cloneNode(thisArg), t.cloneNode(targetKey)),\n        t.identifier(\"v\"),\n      ),\n    ),\n  ]);\n\n  let getter: t.ClassMethod | t.ClassPrivateMethod,\n    setter: t.ClassMethod | t.ClassPrivateMethod;\n\n  if (getterKey.type === \"PrivateName\") {\n    getter = t.classPrivateMethod(\"get\", getterKey, [], getterBody, isStatic);\n    setter = t.classPrivateMethod(\n      \"set\",\n      setterKey as t.PrivateName,\n      [t.identifier(\"v\")],\n      setterBody,\n      isStatic,\n    );\n  } else {\n    getter = t.classMethod(\n      \"get\",\n      getterKey,\n      [],\n      getterBody,\n      isComputed,\n      isStatic,\n    );\n    setter = t.classMethod(\n      \"set\",\n      setterKey as t.Expression,\n      [t.identifier(\"v\")],\n      setterBody,\n      isComputed,\n      isStatic,\n    );\n  }\n\n  element.insertAfter(setter);\n  element.insertAfter(getter);\n}\n\nfunction extractProxyAccessorsFor(\n  targetKey: t.PrivateName,\n  version: DecoratorVersionKind,\n): (t.FunctionExpression | t.ArrowFunctionExpression)[] {\n  if (version !== \"2023-11\" && version !== \"2023-05\" && version !== \"2023-01\") {\n    return [\n      template.expression.ast`\n        function () {\n          return this.${t.cloneNode(targetKey)};\n        }\n      ` as t.FunctionExpression,\n      template.expression.ast`\n        function (value) {\n          this.${t.cloneNode(targetKey)} = value;\n        }\n      ` as t.FunctionExpression,\n    ];\n  }\n  return [\n    template.expression.ast`\n      o => o.${t.cloneNode(targetKey)}\n    ` as t.ArrowFunctionExpression,\n    template.expression.ast`\n      (o, v) => o.${t.cloneNode(targetKey)} = v\n    ` as t.ArrowFunctionExpression,\n  ];\n}\n\n/**\n * Get the last element for the given computed key path.\n *\n * This function unwraps transparent wrappers and gets the last item when\n * the key is a SequenceExpression.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element\n * @returns {NodePath<t.Expression>} The simple completion result\n */\nfunction getComputedKeyLastElement(\n  path: NodePath<t.Expression>,\n): NodePath<t.Expression> {\n  path = skipTransparentExprWrappers(path);\n  if (path.isSequenceExpression()) {\n    const expressions = path.get(\"expressions\");\n    return getComputedKeyLastElement(expressions[expressions.length - 1]);\n  }\n  return path;\n}\n\n/**\n * Get a memoiser of the computed key path.\n *\n * This function does not mutate AST. If the computed key is not a constant\n * expression, this function must be called after the key has been memoised.\n *\n * @param {NodePath<t.Expression>} path The key of a computed class element.\n * @returns {t.Expression} A clone of key if key is a constant expression,\n * otherwise a memoiser identifier.\n */\nfunction getComputedKeyMemoiser(path: NodePath<t.Expression>): t.Expression {\n  const element = getComputedKeyLastElement(path);\n  if (element.isConstantExpression()) {\n    return t.cloneNode(path.node);\n  } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {\n    return t.cloneNode(path.node);\n  } else if (\n    element.isAssignmentExpression() &&\n    element.get(\"left\").isIdentifier()\n  ) {\n    return t.cloneNode(element.node.left as t.Identifier);\n  } else {\n    throw new Error(\n      `Internal Error: the computed key ${path.toString()} has not yet been memoised.`,\n    );\n  }\n}\n\n/**\n * Prepend expressions to the computed key of the given field path.\n *\n * If the computed key is a sequence expression, this function will unwrap\n * the sequence expression for optimal output size.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  if (key.isSequenceExpression()) {\n    expressions.push(...key.node.expressions);\n  } else {\n    expressions.push(key.node);\n  }\n  key.replaceWith(maybeSequenceExpression(expressions));\n}\n\n/**\n * Append expressions to the computed key of the given field path.\n *\n * If the computed key is a constant expression or uid reference, it\n * will prepend expressions before the comptued key. Otherwise it will\n * memoise the computed key to preserve its completion result.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction appendExpressionsToComputedKey(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassMethod | t.ClassProperty | t.ClassAccessorProperty\n  >,\n) {\n  const key = fieldPath.get(\"key\") as NodePath<t.Expression>;\n  const completion = getComputedKeyLastElement(key);\n  if (completion.isConstantExpression()) {\n    prependExpressionsToComputedKey(expressions, fieldPath);\n  } else {\n    const scopeParent = key.scope.parent;\n    const maybeAssignment = memoiseComputedKey(\n      completion.node,\n      scopeParent,\n      scopeParent.generateUid(\"computedKey\"),\n    );\n    if (!maybeAssignment) {\n      // If the memoiseComputedKey returns undefined, the key is already a uid reference,\n      // treat it as a constant expression and prepend expressions before it\n      prependExpressionsToComputedKey(expressions, fieldPath);\n    } else {\n      const expressionSequence = [\n        ...expressions,\n        // preserve the completion result\n        t.cloneNode(maybeAssignment.left),\n      ];\n      const completionParent = completion.parentPath;\n      if (completionParent.isSequenceExpression()) {\n        completionParent.pushContainer(\"expressions\", expressionSequence);\n      } else {\n        completion.replaceWith(\n          maybeSequenceExpression([\n            t.cloneNode(maybeAssignment),\n            ...expressionSequence,\n          ]),\n        );\n      }\n    }\n  }\n}\n\n/**\n * Prepend expressions to the field initializer. If the initializer is not defined,\n * this function will wrap the last expression within a `void` unary expression.\n *\n * @param {t.Expression[]} expressions\n * @param {(NodePath<\n *     t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n *   >)} fieldPath\n */\nfunction prependExpressionsToFieldInitializer(\n  expressions: t.Expression[],\n  fieldPath: NodePath<\n    t.ClassProperty | t.ClassPrivateProperty | t.ClassAccessorProperty\n  >,\n) {\n  const initializer = fieldPath.get(\"value\");\n  if (initializer.node) {\n    expressions.push(initializer.node);\n  } else if (expressions.length > 0) {\n    expressions[expressions.length - 1] = t.unaryExpression(\n      \"void\",\n      expressions[expressions.length - 1],\n    );\n  }\n  initializer.replaceWith(maybeSequenceExpression(expressions));\n}\n\nfunction prependExpressionsToStaticBlock(\n  expressions: t.Expression[],\n  blockPath: NodePath<t.StaticBlock>,\n) {\n  blockPath.unshiftContainer(\n    \"body\",\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction prependExpressionsToConstructor(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n) {\n  constructorPath.node.body.body.unshift(\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  );\n}\n\nfunction isProtoInitCallExpression(\n  expression: t.Expression,\n  protoInitCall: t.Identifier,\n) {\n  return (\n    t.isCallExpression(expression) &&\n    t.isIdentifier(expression.callee, { name: protoInitCall.name })\n  );\n}\n\n/**\n * Optimize super call and its following expressions\n *\n * @param {t.Expression[]} expressions Mutated by this function. The first element must by a super call\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns optimized expression\n */\nfunction optimizeSuperCallAndExpressions(\n  expressions: t.Expression[],\n  protoInitLocal: t.Identifier,\n) {\n  if (protoInitLocal) {\n    if (\n      expressions.length >= 2 &&\n      isProtoInitCallExpression(expressions[1], protoInitLocal)\n    ) {\n      // Merge `super(), protoInit(this)` into `protoInit(super())`\n      const mergedSuperCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        expressions[0],\n      ]);\n      expressions.splice(0, 2, mergedSuperCall);\n    }\n    // Merge `protoInit(super()), this` into `protoInit(super())`\n    if (\n      expressions.length >= 2 &&\n      t.isThisExpression(expressions[expressions.length - 1]) &&\n      isProtoInitCallExpression(\n        expressions[expressions.length - 2],\n        protoInitLocal,\n      )\n    ) {\n      expressions.splice(expressions.length - 1, 1);\n    }\n  }\n  return maybeSequenceExpression(expressions);\n}\n\n/**\n * Insert expressions immediately after super() and optimize the output if possible.\n * This function will preserve the completion result using the trailing this expression.\n *\n * @param {t.Expression[]} expressions\n * @param {NodePath<t.ClassMethod>} constructorPath\n * @param {t.Identifier} protoInitLocal The generated protoInit id\n * @returns\n */\nfunction insertExpressionsAfterSuperCallAndOptimize(\n  expressions: t.Expression[],\n  constructorPath: NodePath<t.ClassMethod>,\n  protoInitLocal: t.Identifier,\n) {\n  constructorPath.traverse({\n    CallExpression: {\n      exit(path) {\n        if (!path.get(\"callee\").isSuper()) return;\n        const newNodes = [\n          path.node,\n          ...expressions.map(expr => t.cloneNode(expr)),\n        ];\n        // preserve completion result if super() is in an RHS or a return statement\n        if (path.isCompletionRecord()) {\n          newNodes.push(t.thisExpression());\n        }\n        path.replaceWith(\n          optimizeSuperCallAndExpressions(newNodes, protoInitLocal),\n        );\n\n        path.skip();\n      },\n    },\n    ClassMethod(path) {\n      if (path.node.kind === \"constructor\") {\n        path.skip();\n      }\n    },\n  });\n}\n\n/**\n * Build a class constructor node from the given expressions. If the class is\n * derived, the constructor will call super() first to ensure that `this`\n * in the expressions work as expected.\n *\n * @param {t.Expression[]} expressions\n * @param {boolean} isDerivedClass\n * @returns The class constructor node\n */\nfunction createConstructorFromExpressions(\n  expressions: t.Expression[],\n  isDerivedClass: boolean,\n) {\n  const body: t.Statement[] = [\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ];\n  if (isDerivedClass) {\n    body.unshift(\n      t.expressionStatement(\n        t.callExpression(t.super(), [t.spreadElement(t.identifier(\"args\"))]),\n      ),\n    );\n  }\n  return t.classMethod(\n    \"constructor\",\n    t.identifier(\"constructor\"),\n    isDerivedClass ? [t.restElement(t.identifier(\"args\"))] : [],\n    t.blockStatement(body),\n  );\n}\n\nfunction createStaticBlockFromExpressions(expressions: t.Expression[]) {\n  return t.staticBlock([\n    t.expressionStatement(maybeSequenceExpression(expressions)),\n  ]);\n}\n\n// 3 bits reserved to this (0-7)\nconst FIELD = 0;\nconst ACCESSOR = 1;\nconst METHOD = 2;\nconst GETTER = 3;\nconst SETTER = 4;\n\nconst STATIC_OLD_VERSION = 5; // Before 2023-05\nconst STATIC = 8; // 1 << 3\nconst DECORATORS_HAVE_THIS = 16; // 1 << 4\n\nfunction getElementKind(element: NodePath<ClassDecoratableElement>): number {\n  switch (element.node.type) {\n    case \"ClassProperty\":\n    case \"ClassPrivateProperty\":\n      return FIELD;\n    case \"ClassAccessorProperty\":\n      return ACCESSOR;\n    case \"ClassMethod\":\n    case \"ClassPrivateMethod\":\n      if (element.node.kind === \"get\") {\n        return GETTER;\n      } else if (element.node.kind === \"set\") {\n        return SETTER;\n      } else {\n        return METHOD;\n      }\n  }\n}\n\n// Information about the decorators applied to an element\ninterface DecoratorInfo {\n  // An array of applied decorators or a memoised identifier\n  decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n  decoratorsHaveThis: boolean;\n\n  // The kind of the decorated value, matches the kind value passed to applyDecs\n  kind: number;\n\n  // whether or not the field is static\n  isStatic: boolean;\n\n  // The name of the decorator\n  name: t.StringLiteral | t.Expression;\n\n  privateMethods:\n    | (t.FunctionExpression | t.ArrowFunctionExpression)[]\n    | undefined;\n\n  // The names of local variables that will be used/returned from the decoration\n  locals: t.Identifier | t.Identifier[] | undefined;\n}\n\n/**\n * Sort decoration info in the application order:\n * - static non-fields\n * - instance non-fields\n * - static fields\n * - instance fields\n *\n * @param {DecoratorInfo[]} info\n * @returns {DecoratorInfo[]} Sorted decoration info\n */\nfunction toSortedDecoratorInfo(info: DecoratorInfo[]): DecoratorInfo[] {\n  return [\n    ...info.filter(\n      el => el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(\n      el => !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER,\n    ),\n    ...info.filter(el => el.isStatic && el.kind === FIELD),\n    ...info.filter(el => !el.isStatic && el.kind === FIELD),\n  ];\n}\n\ntype GenerateDecorationListResult = {\n  // The zipped decorators array that will be passed to generateDecorationExprs\n  decs: t.Expression[];\n  // Whether there are non-empty decorator this values\n  haveThis: boolean;\n};\n/**\n * Zip decorators and decorator this values into an array\n *\n * @param {t.Decorator[]} decorators\n * @param {((t.Expression | undefined)[])} decoratorsThis decorator this values\n * @param {DecoratorVersionKind} version\n * @returns {GenerateDecorationListResult}\n */\nfunction generateDecorationList(\n  decorators: t.Decorator[],\n  decoratorsThis: (t.Expression | undefined)[],\n  version: DecoratorVersionKind,\n): GenerateDecorationListResult {\n  const decsCount = decorators.length;\n  const haveOneThis = decoratorsThis.some(Boolean);\n  const decs: t.Expression[] = [];\n  for (let i = 0; i < decsCount; i++) {\n    if (\n      (version === \"2023-11\" ||\n        (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n      haveOneThis\n    ) {\n      decs.push(\n        decoratorsThis[i] || t.unaryExpression(\"void\", t.numericLiteral(0)),\n      );\n    }\n    decs.push(decorators[i].expression);\n  }\n\n  return { haveThis: haveOneThis, decs };\n}\n\nfunction generateDecorationExprs(\n  decorationInfo: DecoratorInfo[],\n  version: DecoratorVersionKind,\n): t.ArrayExpression {\n  return t.arrayExpression(\n    decorationInfo.map(el => {\n      let flag = el.kind;\n      if (el.isStatic) {\n        flag +=\n          version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")\n            ? STATIC\n            : STATIC_OLD_VERSION;\n      }\n      if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;\n\n      return t.arrayExpression([\n        el.decoratorsArray,\n        t.numericLiteral(flag),\n        el.name,\n        ...(el.privateMethods || []),\n      ]);\n    }),\n  );\n}\n\nfunction extractElementLocalAssignments(decorationInfo: DecoratorInfo[]) {\n  const localIds: t.Identifier[] = [];\n\n  for (const el of decorationInfo) {\n    const { locals } = el;\n\n    if (Array.isArray(locals)) {\n      localIds.push(...locals);\n    } else if (locals !== undefined) {\n      localIds.push(locals);\n    }\n  }\n\n  return localIds;\n}\n\nfunction addCallAccessorsFor(\n  version: DecoratorVersionKind,\n  element: NodePath,\n  key: t.PrivateName,\n  getId: t.Identifier,\n  setId: t.Identifier,\n  isStatic: boolean,\n) {\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"get\",\n      t.cloneNode(key),\n      [],\n      t.blockStatement([\n        t.returnStatement(\n          t.callExpression(\n            t.cloneNode(getId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n\n  element.insertAfter(\n    t.classPrivateMethod(\n      \"set\",\n      t.cloneNode(key),\n      [t.identifier(\"v\")],\n      t.blockStatement([\n        t.expressionStatement(\n          t.callExpression(\n            t.cloneNode(setId),\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? [t.identifier(\"v\")]\n              : [t.thisExpression(), t.identifier(\"v\")],\n          ),\n        ),\n      ]),\n      isStatic,\n    ),\n  );\n}\n\nfunction movePrivateAccessor(\n  element: NodePath<t.ClassPrivateMethod>,\n  key: t.PrivateName,\n  methodLocalVar: t.Identifier,\n  isStatic: boolean,\n) {\n  let params: (t.Identifier | t.RestElement)[];\n  let block: t.Statement[];\n\n  if (element.node.kind === \"set\") {\n    params = [t.identifier(\"v\")];\n    block = [\n      t.expressionStatement(\n        t.callExpression(methodLocalVar, [\n          t.thisExpression(),\n          t.identifier(\"v\"),\n        ]),\n      ),\n    ];\n  } else {\n    params = [];\n    block = [\n      t.returnStatement(t.callExpression(methodLocalVar, [t.thisExpression()])),\n    ];\n  }\n\n  element.replaceWith(\n    t.classPrivateMethod(\n      element.node.kind,\n      t.cloneNode(key),\n      params,\n      t.blockStatement(block),\n      isStatic,\n    ),\n  );\n}\n\nfunction isClassDecoratableElementPath(\n  path: NodePath<ClassElement>,\n): path is NodePath<ClassDecoratableElement> {\n  const { type } = path;\n\n  return (\n    type !== \"TSDeclareMethod\" &&\n    type !== \"TSIndexSignature\" &&\n    type !== \"StaticBlock\"\n  );\n}\n\nfunction staticBlockToIIFE(block: t.StaticBlock) {\n  return t.callExpression(\n    t.arrowFunctionExpression([], t.blockStatement(block.body)),\n    [],\n  );\n}\n\nfunction staticBlockToFunctionClosure(block: t.StaticBlock) {\n  return t.functionExpression(null, [], t.blockStatement(block.body));\n}\n\nfunction fieldInitializerToClosure(value: t.Expression) {\n  return t.functionExpression(\n    null,\n    [],\n    t.blockStatement([t.returnStatement(value)]),\n  );\n}\n\nfunction maybeSequenceExpression(exprs: t.Expression[]) {\n  if (exprs.length === 0) return t.unaryExpression(\"void\", t.numericLiteral(0));\n  if (exprs.length === 1) return exprs[0];\n  return t.sequenceExpression(exprs);\n}\n\n/**\n * Create FunctionExpression from a ClassPrivateMethod.\n * The returned FunctionExpression node takes ownership of the private method's body and params.\n *\n * @param {t.ClassPrivateMethod} node\n * @returns\n */\nfunction createFunctionExpressionFromPrivateMethod(node: t.ClassPrivateMethod) {\n  const { params, body, generator: isGenerator, async: isAsync } = node;\n  return t.functionExpression(\n    undefined,\n    // @ts-expect-error todo: Improve typings: TSParameterProperty is only allowed in constructor\n    params,\n    body,\n    isGenerator,\n    isAsync,\n  );\n}\n\nfunction createSetFunctionNameCall(\n  state: PluginPass,\n  className: t.Identifier | t.StringLiteral,\n) {\n  return t.callExpression(state.addHelper(\"setFunctionName\"), [\n    t.thisExpression(),\n    className,\n  ]);\n}\n\nfunction createToPropertyKeyCall(state: PluginPass, propertyKey: t.Expression) {\n  return t.callExpression(state.addHelper(\"toPropertyKey\"), [propertyKey]);\n}\n\nfunction createPrivateBrandCheckClosure(brandName: t.PrivateName) {\n  return t.arrowFunctionExpression(\n    [t.identifier(\"_\")],\n    t.binaryExpression(\"in\", t.cloneNode(brandName), t.identifier(\"_\")),\n  );\n}\n\nfunction usesPrivateField(expression: t.Node) {\n  try {\n    t.traverseFast(expression, node => {\n      if (t.isPrivateName(node)) {\n        // TODO: Add early return support to t.traverseFast\n        // eslint-disable-next-line @typescript-eslint/only-throw-error\n        throw null;\n      }\n    });\n    return false;\n  } catch {\n    return true;\n  }\n}\n\n/**\n * Convert a non-computed class element to its equivalent computed form.\n *\n * This function is to provide a decorator evaluation storage from non-computed\n * class elements.\n *\n * @param {(NodePath<t.ClassProperty | t.ClassMethod>)} path A non-computed class property or method\n */\nfunction convertToComputedKey(path: NodePath<t.ClassProperty | t.ClassMethod>) {\n  const { node } = path;\n  node.computed = true;\n  if (t.isIdentifier(node.key)) {\n    node.key = t.stringLiteral(node.key.name);\n  }\n}\n\nfunction hasInstancePrivateAccess(path: NodePath, privateNames: string[]) {\n  let containsInstancePrivateAccess = false;\n  if (privateNames.length > 0) {\n    const privateNameVisitor = privateNameVisitorFactory<\n      PrivateNameVisitorState<null>,\n      null\n    >({\n      PrivateName(path, state) {\n        if (state.privateNamesMap.has(path.node.id.name)) {\n          containsInstancePrivateAccess = true;\n          path.stop();\n        }\n      },\n    });\n    const privateNamesMap = new Map<string, null>();\n    for (const name of privateNames) {\n      privateNamesMap.set(name, null);\n    }\n    path.traverse(privateNameVisitor, {\n      privateNamesMap: privateNamesMap,\n    });\n  }\n  return containsInstancePrivateAccess;\n}\n\nfunction checkPrivateMethodUpdateError(\n  path: NodePath<t.Class>,\n  decoratedPrivateMethods: Set<string>,\n) {\n  const privateNameVisitor = privateNameVisitorFactory<\n    PrivateNameVisitorState<null>,\n    null\n  >({\n    PrivateName(path, state) {\n      if (!state.privateNamesMap.has(path.node.id.name)) return;\n\n      const parentPath = path.parentPath;\n      const parentParentPath = parentPath.parentPath;\n\n      if (\n        // this.bar().#x = 123;\n        (parentParentPath.node.type === \"AssignmentExpression\" &&\n          parentParentPath.node.left === parentPath.node) ||\n        // this.#x++;\n        parentParentPath.node.type === \"UpdateExpression\" ||\n        // ([...this.#x] = foo);\n        parentParentPath.node.type === \"RestElement\" ||\n        // ([this.#x] = foo);\n        parentParentPath.node.type === \"ArrayPattern\" ||\n        // ({ a: this.#x } = bar);\n        (parentParentPath.node.type === \"ObjectProperty\" &&\n          parentParentPath.node.value === parentPath.node &&\n          parentParentPath.parentPath.type === \"ObjectPattern\") ||\n        // for (this.#x of []);\n        (parentParentPath.node.type === \"ForOfStatement\" &&\n          parentParentPath.node.left === parentPath.node)\n      ) {\n        throw path.buildCodeFrameError(\n          `Decorated private methods are read-only, but \"#${path.node.id.name}\" is updated via this expression.`,\n        );\n      }\n    },\n  });\n  const privateNamesMap = new Map<string, null>();\n  for (const name of decoratedPrivateMethods) {\n    privateNamesMap.set(name, null);\n  }\n  path.traverse(privateNameVisitor, {\n    privateNamesMap: privateNamesMap,\n  });\n}\n\n/**\n * Apply decorator and accessor transform\n * @param path The class path.\n * @param state The plugin pass.\n * @param constantSuper The constantSuper compiler assumption.\n * @param ignoreFunctionLength The ignoreFunctionLength compiler assumption.\n * @param className The class name.\n * - If className is a `string`, it will be a valid identifier name that can safely serve as a class id\n * - If className is an Identifier, it is the reference to the name derived from NamedEvaluation\n * - If className is a StringLiteral, it is derived from NamedEvaluation on literal computed keys\n * @param propertyVisitor The visitor that should be applied on property prior to the transform.\n * @param version The decorator version.\n * @returns The transformed class path or undefined if there are no decorators.\n */\nfunction transformClass(\n  path: NodePath<t.Class>,\n  state: PluginPass,\n  constantSuper: boolean,\n  ignoreFunctionLength: boolean,\n  className: string | t.Identifier | t.StringLiteral | undefined,\n  propertyVisitor: Visitor<PluginPass>,\n  version: DecoratorVersionKind,\n): NodePath | undefined {\n  const body = path.get(\"body.body\");\n\n  const classDecorators = path.node.decorators;\n  let hasElementDecorators = false;\n  let hasComputedKeysSideEffects = false;\n  let elemDecsUseFnContext = false;\n\n  const generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);\n\n  const classAssignments: t.AssignmentExpression[] = [];\n  const scopeParent: Scope = path.scope.parent;\n  const memoiseExpression = (\n    expression: t.Expression,\n    hint: string,\n    assignments: t.AssignmentExpression[],\n  ) => {\n    const localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);\n    assignments.push(t.assignmentExpression(\"=\", localEvaluatedId, expression));\n    return t.cloneNode(localEvaluatedId);\n  };\n\n  let protoInitLocal: t.Identifier;\n  let staticInitLocal: t.Identifier;\n  const classIdName = path.node.id?.name;\n  // Whether to generate a setFunctionName call to preserve the class name\n  const setClassName = typeof className === \"object\" ? className : undefined;\n  // Check if the decorator does not reference function-specific\n  // context or the given identifier name or contains yield or await expression.\n  // `true` means \"maybe\" and `false` means \"no\".\n  const usesFunctionContextOrYieldAwait = (decorator: t.Decorator) => {\n    try {\n      t.traverseFast(decorator, node => {\n        if (\n          t.isThisExpression(node) ||\n          t.isSuper(node) ||\n          t.isYieldExpression(node) ||\n          t.isAwaitExpression(node) ||\n          t.isIdentifier(node, { name: \"arguments\" }) ||\n          (classIdName && t.isIdentifier(node, { name: classIdName })) ||\n          (t.isMetaProperty(node) && node.meta.name !== \"import\")\n        ) {\n          // TODO: Add early return support to t.traverseFast\n          // eslint-disable-next-line @typescript-eslint/only-throw-error\n          throw null;\n        }\n      });\n      return false;\n    } catch {\n      return true;\n    }\n  };\n\n  const instancePrivateNames: string[] = [];\n  // Iterate over the class to see if we need to decorate it, and also to\n  // transform simple auto accessors which are not decorated, and handle inferred\n  // class name when the initializer of the class field is a class expression\n  for (const element of body) {\n    if (!isClassDecoratableElementPath(element)) {\n      continue;\n    }\n\n    const elementNode = element.node;\n\n    if (!elementNode.static && t.isPrivateName(elementNode.key)) {\n      instancePrivateNames.push(elementNode.key.id.name);\n    }\n\n    if (isDecorated(elementNode)) {\n      switch (elementNode.type) {\n        case \"ClassProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassProperty should be callable. Improve typings.\n          propertyVisitor.ClassProperty(\n            element as NodePath<t.ClassProperty>,\n            state,\n          );\n          break;\n        case \"ClassPrivateProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassPrivateProperty should be callable. Improve typings.\n          propertyVisitor.ClassPrivateProperty(\n            element as NodePath<t.ClassPrivateProperty>,\n            state,\n          );\n          break;\n        case \"ClassAccessorProperty\":\n          // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n          propertyVisitor.ClassAccessorProperty(\n            element as NodePath<t.ClassAccessorProperty>,\n            state,\n          );\n          if (version === \"2023-11\") {\n            break;\n          }\n        /* fallthrough */\n        default:\n          if (elementNode.static) {\n            staticInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initStatic\",\n            );\n          } else {\n            protoInitLocal ??= generateLetUidIdentifier(\n              scopeParent,\n              \"initProto\",\n            );\n          }\n          break;\n      }\n      hasElementDecorators = true;\n      elemDecsUseFnContext ||= elementNode.decorators.some(\n        usesFunctionContextOrYieldAwait,\n      );\n    } else if (elementNode.type === \"ClassAccessorProperty\") {\n      // @ts-expect-error todo: propertyVisitor.ClassAccessorProperty should be callable. Improve typings.\n      propertyVisitor.ClassAccessorProperty(\n        element as NodePath<t.ClassAccessorProperty>,\n        state,\n      );\n      const { key, value, static: isStatic, computed } = elementNode;\n\n      const newId = generateClassPrivateUid();\n      const newField = generateClassProperty(newId, value, isStatic);\n      const keyPath = element.get(\"key\");\n      const [newPath] = element.replaceWith(newField);\n\n      let getterKey, setterKey;\n      if (computed && !keyPath.isConstantExpression()) {\n        getterKey = memoiseComputedKey(\n          createToPropertyKeyCall(state, key as t.Expression),\n          scopeParent,\n          scopeParent.generateUid(\"computedKey\"),\n        )!;\n        setterKey = t.cloneNode(getterKey.left as t.Identifier);\n      } else {\n        getterKey = t.cloneNode(key);\n        setterKey = t.cloneNode(key);\n      }\n\n      assignIdForAnonymousClass(path, className);\n\n      addProxyAccessorsFor(\n        path.node.id,\n        newPath,\n        getterKey,\n        setterKey,\n        newId,\n        computed,\n        isStatic,\n        version,\n      );\n    }\n\n    if (\"computed\" in element.node && element.node.computed) {\n      hasComputedKeysSideEffects ||= !scopeParent.isStatic(element.node.key);\n    }\n  }\n\n  if (!classDecorators && !hasElementDecorators) {\n    if (!path.node.id && typeof className === \"string\") {\n      path.node.id = t.identifier(className);\n    }\n    if (setClassName) {\n      path.node.body.body.unshift(\n        createStaticBlockFromExpressions([\n          createSetFunctionNameCall(state, setClassName),\n        ]),\n      );\n    }\n    // If nothing is decorated and no assignments inserted, return\n    return;\n  }\n\n  const elementDecoratorInfo: DecoratorInfo[] = [];\n\n  let constructorPath: NodePath<t.ClassMethod> | undefined;\n  const decoratedPrivateMethods = new Set<string>();\n\n  let classInitLocal: t.Identifier, classIdLocal: t.Identifier;\n  let decoratorReceiverId: t.Identifier | null = null;\n\n  // Memoise the this value `a.b` of decorator member expressions `@a.b.dec`,\n  type HandleDecoratorsResult = {\n    // whether the whole decorator list requires memoisation\n    hasSideEffects: boolean;\n    usesFnContext: boolean;\n    // the this value of each decorator if applicable\n    decoratorsThis: (t.Expression | undefined)[];\n  };\n  function handleDecorators(decorators: t.Decorator[]): HandleDecoratorsResult {\n    let hasSideEffects = false;\n    let usesFnContext = false;\n    const decoratorsThis: (t.Expression | null)[] = [];\n    for (const decorator of decorators) {\n      const { expression } = decorator;\n      let object;\n      if (\n        (version === \"2023-11\" ||\n          (!process.env.BABEL_8_BREAKING && version === \"2023-05\")) &&\n        t.isMemberExpression(expression)\n      ) {\n        if (t.isSuper(expression.object)) {\n          object = t.thisExpression();\n        } else if (scopeParent.isStatic(expression.object)) {\n          object = t.cloneNode(expression.object);\n        } else {\n          decoratorReceiverId ??= generateLetUidIdentifier(scopeParent, \"obj\");\n          object = t.assignmentExpression(\n            \"=\",\n            t.cloneNode(decoratorReceiverId),\n            expression.object,\n          );\n          expression.object = t.cloneNode(decoratorReceiverId);\n        }\n      }\n      decoratorsThis.push(object);\n      hasSideEffects ||= !scopeParent.isStatic(expression);\n      usesFnContext ||= usesFunctionContextOrYieldAwait(decorator);\n    }\n    return { hasSideEffects, usesFnContext, decoratorsThis };\n  }\n\n  const willExtractSomeElemDecs =\n    hasComputedKeysSideEffects ||\n    (process.env.BABEL_8_BREAKING\n      ? elemDecsUseFnContext\n      : elemDecsUseFnContext || version !== \"2023-11\");\n\n  let needsDeclaraionForClassBinding = false;\n  let classDecorationsFlag = 0;\n  let classDecorations: t.Expression[] = [];\n  let classDecorationsId: t.Identifier;\n  let computedKeyAssignments: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classInitLocal = generateLetUidIdentifier(scopeParent, \"initClass\");\n    needsDeclaraionForClassBinding = path.isClassDeclaration();\n    ({ id: classIdLocal, path } = replaceClassWithVar(path, className));\n\n    path.node.decorators = null;\n\n    const classDecsUsePrivateName = classDecorators.some(usesPrivateField);\n    const { hasSideEffects, usesFnContext, decoratorsThis } =\n      handleDecorators(classDecorators);\n\n    const { haveThis, decs } = generateDecorationList(\n      classDecorators,\n      decoratorsThis,\n      version,\n    );\n    classDecorationsFlag = haveThis ? 1 : 0;\n    classDecorations = decs;\n\n    if (\n      usesFnContext ||\n      (hasSideEffects && willExtractSomeElemDecs) ||\n      classDecsUsePrivateName\n    ) {\n      classDecorationsId = memoiseExpression(\n        t.arrayExpression(classDecorations),\n        \"classDecs\",\n        classAssignments,\n      );\n    }\n\n    if (!hasElementDecorators) {\n      // Sync body paths as non-decorated computed accessors have been transpiled\n      // to getter-setter pairs.\n      for (const element of path.get(\"body.body\")) {\n        const { node } = element;\n        const isComputed = \"computed\" in node && node.computed;\n        if (isComputed) {\n          if (element.isClassProperty({ static: true })) {\n            if (!element.get(\"key\").isConstantExpression()) {\n              const key = (node as t.ClassProperty).key;\n              const maybeAssignment = memoiseComputedKey(\n                key,\n                scopeParent,\n                scopeParent.generateUid(\"computedKey\"),\n              );\n              if (maybeAssignment != null) {\n                // If it is a static computed field within a decorated class, we move the computed key\n                // into `computedKeyAssignments` which will be then moved into the non-static class,\n                // to ensure that the evaluation order and private environment are correct\n                node.key = t.cloneNode(maybeAssignment.left);\n                computedKeyAssignments.push(maybeAssignment);\n              }\n            }\n          } else if (computedKeyAssignments.length > 0) {\n            prependExpressionsToComputedKey(\n              computedKeyAssignments,\n              element as NodePath<ClassElementCanHaveComputedKeys>,\n            );\n            computedKeyAssignments = [];\n          }\n        }\n      }\n    }\n  } else {\n    assignIdForAnonymousClass(path, className);\n    classIdLocal = t.cloneNode(path.node.id);\n  }\n\n  let lastInstancePrivateName: t.PrivateName;\n  let needsInstancePrivateBrandCheck = false;\n\n  let fieldInitializerExpressions = [];\n  let staticFieldInitializerExpressions: t.Expression[] = [];\n\n  if (hasElementDecorators) {\n    if (protoInitLocal) {\n      const protoInitCall = t.callExpression(t.cloneNode(protoInitLocal), [\n        t.thisExpression(),\n      ]);\n      fieldInitializerExpressions.push(protoInitCall);\n    }\n    for (const element of body) {\n      if (!isClassDecoratableElementPath(element)) {\n        if (\n          staticFieldInitializerExpressions.length > 0 &&\n          element.isStaticBlock()\n        ) {\n          prependExpressionsToStaticBlock(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        continue;\n      }\n\n      const { node } = element;\n      const decorators = node.decorators;\n\n      const hasDecorators = !!decorators?.length;\n\n      const isComputed = \"computed\" in node && node.computed;\n\n      let name = \"computedKey\";\n\n      if (node.key.type === \"PrivateName\") {\n        name = node.key.id.name;\n      } else if (!isComputed && node.key.type === \"Identifier\") {\n        name = node.key.name;\n      }\n      let decoratorsArray: t.Identifier | t.ArrayExpression | t.Expression;\n      let decoratorsHaveThis;\n\n      if (hasDecorators) {\n        const { hasSideEffects, usesFnContext, decoratorsThis } =\n          handleDecorators(decorators);\n        const { decs, haveThis } = generateDecorationList(\n          decorators,\n          decoratorsThis,\n          version,\n        );\n        decoratorsHaveThis = haveThis;\n        decoratorsArray = decs.length === 1 ? decs[0] : t.arrayExpression(decs);\n        if (usesFnContext || (hasSideEffects && willExtractSomeElemDecs)) {\n          decoratorsArray = memoiseExpression(\n            decoratorsArray,\n            name + \"Decs\",\n            computedKeyAssignments,\n          );\n        }\n      }\n\n      if (isComputed) {\n        if (!element.get(\"key\").isConstantExpression()) {\n          const key = node.key as t.Expression;\n          const maybeAssignment = memoiseComputedKey(\n            hasDecorators ? createToPropertyKeyCall(state, key) : key,\n            scopeParent,\n            scopeParent.generateUid(\"computedKey\"),\n          );\n          if (maybeAssignment != null) {\n            // If it is a static computed field within a decorated class, we move the computed key\n            // into `computedKeyAssignments` which will be then moved into the non-static class,\n            // to ensure that the evaluation order and private environment are correct\n            if (classDecorators && element.isClassProperty({ static: true })) {\n              node.key = t.cloneNode(maybeAssignment.left);\n              computedKeyAssignments.push(maybeAssignment);\n            } else {\n              node.key = maybeAssignment;\n            }\n          }\n        }\n      }\n\n      const { key, static: isStatic } = node;\n\n      const isPrivate = key.type === \"PrivateName\";\n\n      const kind = getElementKind(element);\n\n      if (isPrivate && !isStatic) {\n        if (hasDecorators) {\n          needsInstancePrivateBrandCheck = true;\n        }\n        if (t.isClassPrivateProperty(node) || !lastInstancePrivateName) {\n          lastInstancePrivateName = key;\n        }\n      }\n\n      if (element.isClassMethod({ kind: \"constructor\" })) {\n        constructorPath = element;\n      }\n\n      let locals: t.Identifier[];\n      if (hasDecorators) {\n        let privateMethods: Array<\n          t.FunctionExpression | t.ArrowFunctionExpression\n        >;\n\n        let nameExpr: t.Expression;\n\n        if (isComputed) {\n          nameExpr = getComputedKeyMemoiser(\n            element.get(\"key\") as NodePath<t.Expression>,\n          );\n        } else if (key.type === \"PrivateName\") {\n          nameExpr = t.stringLiteral(key.id.name);\n        } else if (key.type === \"Identifier\") {\n          nameExpr = t.stringLiteral(key.name);\n        } else {\n          nameExpr = t.cloneNode(key as t.Expression);\n        }\n\n        if (kind === ACCESSOR) {\n          const { value } = element.node as t.ClassAccessorProperty;\n\n          const params: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n\n          if (value) {\n            params.push(t.cloneNode(value));\n          }\n\n          const newId = generateClassPrivateUid();\n          const newFieldInitId = generateLetUidIdentifier(\n            scopeParent,\n            `init_${name}`,\n          );\n          const newValue = t.callExpression(\n            t.cloneNode(newFieldInitId),\n            params,\n          );\n\n          const newField = generateClassProperty(newId, newValue, isStatic);\n          const [newPath] = element.replaceWith(newField);\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(newId, version);\n\n            const getId = generateLetUidIdentifier(scopeParent, `get_${name}`);\n            const setId = generateLetUidIdentifier(scopeParent, `set_${name}`);\n\n            addCallAccessorsFor(version, newPath, key, getId, setId, isStatic);\n\n            locals = [newFieldInitId, getId, setId];\n          } else {\n            assignIdForAnonymousClass(path, className);\n            addProxyAccessorsFor(\n              path.node.id,\n              newPath,\n              t.cloneNode(key),\n              t.isAssignmentExpression(key)\n                ? t.cloneNode(key.left as t.Identifier)\n                : t.cloneNode(key),\n              newId,\n              isComputed,\n              isStatic,\n              version,\n            );\n            locals = [newFieldInitId];\n          }\n        } else if (kind === FIELD) {\n          const initId = generateLetUidIdentifier(scopeParent, `init_${name}`);\n          const valuePath = (\n            element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n          ).get(\"value\");\n\n          const args: t.Expression[] =\n            (process.env.BABEL_8_BREAKING || version === \"2023-11\") && isStatic\n              ? []\n              : [t.thisExpression()];\n          if (valuePath.node) args.push(valuePath.node);\n\n          valuePath.replaceWith(t.callExpression(t.cloneNode(initId), args));\n\n          locals = [initId];\n\n          if (isPrivate) {\n            privateMethods = extractProxyAccessorsFor(key, version);\n          }\n        } else if (isPrivate) {\n          const callId = generateLetUidIdentifier(scopeParent, `call_${name}`);\n          locals = [callId];\n\n          const replaceSupers = new ReplaceSupers({\n            constantSuper,\n            methodPath: element as NodePath<t.ClassPrivateMethod>,\n            objectRef: classIdLocal,\n            superRef: path.node.superClass,\n            file: state.file,\n            refToPreserve: classIdLocal,\n          });\n\n          replaceSupers.replace();\n\n          privateMethods = [\n            createFunctionExpressionFromPrivateMethod(\n              element.node as t.ClassPrivateMethod,\n            ),\n          ];\n\n          if (kind === GETTER || kind === SETTER) {\n            movePrivateAccessor(\n              element as NodePath<t.ClassPrivateMethod>,\n              t.cloneNode(key),\n              t.cloneNode(callId),\n              isStatic,\n            );\n          } else {\n            const node = element.node as t.ClassPrivateMethod;\n\n            // Unshift\n            path.node.body.body.unshift(\n              t.classPrivateProperty(key, t.cloneNode(callId), [], node.static),\n            );\n\n            decoratedPrivateMethods.add(key.id.name);\n\n            element.remove();\n          }\n        }\n\n        elementDecoratorInfo.push({\n          kind,\n          decoratorsArray,\n          decoratorsHaveThis,\n          name: nameExpr,\n          isStatic,\n          privateMethods,\n          locals,\n        });\n\n        if (element.node) {\n          element.node.decorators = null;\n        }\n      }\n\n      if (isComputed && computedKeyAssignments.length > 0) {\n        if (classDecorators && element.isClassProperty({ static: true })) {\n          // If the class is decorated, we don't insert computedKeyAssignments here\n          // because any non-static computed elements defined after it will be moved\n          // into the non-static class, so they will be evaluated before the key of\n          // this field. At this momemnt, its key must be either a constant expression\n          // or a uid reference which has been assigned _within_ the non-static class.\n        } else {\n          prependExpressionsToComputedKey(\n            computedKeyAssignments,\n            (kind === ACCESSOR\n              ? element.getNextSibling() // the transpiled getter of the accessor property\n              : element) as NodePath<ClassElementCanHaveComputedKeys>,\n          );\n          computedKeyAssignments = [];\n        }\n      }\n\n      if (\n        fieldInitializerExpressions.length > 0 &&\n        !isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          fieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        fieldInitializerExpressions = [];\n      }\n\n      if (\n        staticFieldInitializerExpressions.length > 0 &&\n        isStatic &&\n        (kind === FIELD || kind === ACCESSOR)\n      ) {\n        prependExpressionsToFieldInitializer(\n          staticFieldInitializerExpressions,\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>,\n        );\n        staticFieldInitializerExpressions = [];\n      }\n\n      if (hasDecorators && version === \"2023-11\") {\n        if (kind === FIELD || kind === ACCESSOR) {\n          const initExtraId = generateLetUidIdentifier(\n            scopeParent,\n            `init_extra_${name}`,\n          );\n          locals.push(initExtraId);\n          const initExtraCall = t.callExpression(\n            t.cloneNode(initExtraId),\n            isStatic ? [] : [t.thisExpression()],\n          );\n          if (!isStatic) {\n            fieldInitializerExpressions.push(initExtraCall);\n          } else {\n            staticFieldInitializerExpressions.push(initExtraCall);\n          }\n        }\n      }\n    }\n  }\n\n  if (computedKeyAssignments.length > 0) {\n    const elements = path.get(\"body.body\");\n    let lastComputedElement: NodePath<ClassElementCanHaveComputedKeys>;\n    for (let i = elements.length - 1; i >= 0; i--) {\n      const path = elements[i];\n      const node = path.node as ClassElementCanHaveComputedKeys;\n      if (node.computed) {\n        if (classDecorators && t.isClassProperty(node, { static: true })) {\n          continue;\n        }\n        lastComputedElement = path as NodePath<ClassElementCanHaveComputedKeys>;\n        break;\n      }\n    }\n    if (lastComputedElement != null) {\n      appendExpressionsToComputedKey(\n        computedKeyAssignments,\n        lastComputedElement,\n      );\n      computedKeyAssignments = [];\n    } else {\n      // If there is no computed key, we will try to convert the first non-computed\n      // class element into a computed key and insert assignments there. This will\n      // be done after we handle the class elements split when the class is decorated.\n    }\n  }\n\n  if (fieldInitializerExpressions.length > 0) {\n    const isDerivedClass = !!path.node.superClass;\n    if (constructorPath) {\n      if (isDerivedClass) {\n        insertExpressionsAfterSuperCallAndOptimize(\n          fieldInitializerExpressions,\n          constructorPath,\n          protoInitLocal,\n        );\n      } else {\n        prependExpressionsToConstructor(\n          fieldInitializerExpressions,\n          constructorPath,\n        );\n      }\n    } else {\n      path.node.body.body.unshift(\n        createConstructorFromExpressions(\n          fieldInitializerExpressions,\n          isDerivedClass,\n        ),\n      );\n    }\n    fieldInitializerExpressions = [];\n  }\n\n  if (staticFieldInitializerExpressions.length > 0) {\n    path.node.body.body.push(\n      createStaticBlockFromExpressions(staticFieldInitializerExpressions),\n    );\n    staticFieldInitializerExpressions = [];\n  }\n\n  const sortedElementDecoratorInfo =\n    toSortedDecoratorInfo(elementDecoratorInfo);\n\n  const elementDecorations = generateDecorationExprs(\n    process.env.BABEL_8_BREAKING || version === \"2023-11\"\n      ? elementDecoratorInfo\n      : sortedElementDecoratorInfo,\n    version,\n  );\n\n  const elementLocals: t.Identifier[] = extractElementLocalAssignments(\n    sortedElementDecoratorInfo,\n  );\n\n  if (protoInitLocal) {\n    elementLocals.push(protoInitLocal);\n  }\n\n  if (staticInitLocal) {\n    elementLocals.push(staticInitLocal);\n  }\n\n  const classLocals: t.Identifier[] = [];\n  let classInitInjected = false;\n  const classInitCall =\n    classInitLocal && t.callExpression(t.cloneNode(classInitLocal), []);\n\n  let originalClassPath = path;\n  const originalClass = path.node;\n\n  const staticClosures: t.AssignmentExpression[] = [];\n  if (classDecorators) {\n    classLocals.push(classIdLocal, classInitLocal);\n    const statics: (\n      | t.ClassProperty\n      | t.ClassPrivateProperty\n      | t.ClassPrivateMethod\n    )[] = [];\n    path.get(\"body.body\").forEach(element => {\n      // Static blocks cannot be compiled to \"instance blocks\", but we can inline\n      // them as IIFEs in the next property.\n      if (element.isStaticBlock()) {\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const staticBlockClosureId = memoiseExpression(\n            staticBlockToFunctionClosure(element.node),\n            \"staticBlock\",\n            staticClosures,\n          );\n          staticFieldInitializerExpressions.push(\n            t.callExpression(\n              t.memberExpression(staticBlockClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        } else {\n          staticFieldInitializerExpressions.push(\n            staticBlockToIIFE(element.node),\n          );\n        }\n        element.remove();\n        return;\n      }\n\n      if (\n        (element.isClassProperty() || element.isClassPrivateProperty()) &&\n        element.node.static\n      ) {\n        const valuePath = (\n          element as NodePath<t.ClassProperty | t.ClassPrivateProperty>\n        ).get(\"value\");\n        if (hasInstancePrivateAccess(valuePath, instancePrivateNames)) {\n          const fieldValueClosureId = memoiseExpression(\n            fieldInitializerToClosure(valuePath.node),\n            \"fieldValue\",\n            staticClosures,\n          );\n          valuePath.replaceWith(\n            t.callExpression(\n              t.memberExpression(fieldValueClosureId, t.identifier(\"call\")),\n              [t.thisExpression()],\n            ),\n          );\n        }\n        if (staticFieldInitializerExpressions.length > 0) {\n          prependExpressionsToFieldInitializer(\n            staticFieldInitializerExpressions,\n            element,\n          );\n          staticFieldInitializerExpressions = [];\n        }\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      } else if (element.isClassPrivateMethod({ static: true })) {\n        // At this moment the element must not have decorators, so any private name\n        // within the element must come from either params or body\n        if (hasInstancePrivateAccess(element, instancePrivateNames)) {\n          const replaceSupers = new ReplaceSupers({\n            constantSuper,\n            methodPath: element,\n            objectRef: classIdLocal,\n            superRef: path.node.superClass,\n            file: state.file,\n            refToPreserve: classIdLocal,\n          });\n\n          replaceSupers.replace();\n\n          const privateMethodDelegateId = memoiseExpression(\n            createFunctionExpressionFromPrivateMethod(element.node),\n            element.get(\"key.id\").node.name,\n            staticClosures,\n          );\n\n          if (ignoreFunctionLength) {\n            element.node.params = [t.restElement(t.identifier(\"arg\"))];\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arg\")],\n                ),\n              ),\n            ]);\n          } else {\n            element.node.params = element.node.params.map((p, i) => {\n              if (t.isRestElement(p)) {\n                return t.restElement(t.identifier(\"arg\"));\n              } else {\n                return t.identifier(\"_\" + i);\n              }\n            });\n            element.node.body = t.blockStatement([\n              t.returnStatement(\n                t.callExpression(\n                  t.memberExpression(\n                    privateMethodDelegateId,\n                    t.identifier(\"apply\"),\n                  ),\n                  [t.thisExpression(), t.identifier(\"arguments\")],\n                ),\n              ),\n            ]);\n          }\n        }\n        element.node.static = false;\n        statics.push(element.node);\n        element.remove();\n      }\n    });\n\n    if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {\n      const staticsClass = template.expression.ast`\n        class extends ${state.addHelper(\"identity\")} {}\n      ` as t.ClassExpression;\n      staticsClass.body.body = [\n        // Insert the original class to a computed key of the wrapper so that\n        // 1) they share the same function context with the wrapper class\n        // 2) the memoisation of static computed field is evaluated before they\n        //    are referenced in the wrapper class keys\n        // Note that any static elements of the wrapper class can not be accessed\n        // in the user land, so we don't have to remove the temporary class field.\n        t.classProperty(\n          t.toExpression(originalClass),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n        ...statics,\n      ];\n\n      const constructorBody: t.Expression[] = [];\n\n      const newExpr = t.newExpression(staticsClass, []);\n\n      if (staticFieldInitializerExpressions.length > 0) {\n        constructorBody.push(...staticFieldInitializerExpressions);\n      }\n      if (classInitCall) {\n        classInitInjected = true;\n        constructorBody.push(classInitCall);\n      }\n      if (constructorBody.length > 0) {\n        constructorBody.unshift(\n          t.callExpression(t.super(), [t.cloneNode(classIdLocal)]),\n        );\n\n        // set isDerivedClass to false as we have already prepended super call\n        staticsClass.body.body.push(\n          createConstructorFromExpressions(\n            constructorBody,\n            /* isDerivedClass */ false,\n          ),\n        );\n      } else {\n        newExpr.arguments.push(t.cloneNode(classIdLocal));\n      }\n\n      const [newPath] = path.replaceWith(newExpr);\n\n      // update originalClassPath according to the new AST\n      originalClassPath = (\n        newPath.get(\"callee\").get(\"body\") as NodePath<t.Class>\n      ).get(\"body.0.key\");\n    }\n  }\n  if (!classInitInjected && classInitCall) {\n    path.node.body.body.push(\n      t.staticBlock([t.expressionStatement(classInitCall)]),\n    );\n  }\n\n  let { superClass } = originalClass;\n  if (\n    superClass &&\n    (process.env.BABEL_8_BREAKING ||\n      version === \"2023-11\" ||\n      version === \"2023-05\")\n  ) {\n    const id = path.scope.maybeGenerateMemoised(superClass);\n    if (id) {\n      originalClass.superClass = t.assignmentExpression(\"=\", id, superClass);\n      superClass = id;\n    }\n  }\n\n  const applyDecoratorWrapper = t.staticBlock([]);\n  originalClass.body.body.unshift(applyDecoratorWrapper);\n  const applyDecsBody = applyDecoratorWrapper.body;\n  if (computedKeyAssignments.length > 0) {\n    const elements = originalClassPath.get(\"body.body\");\n    let firstPublicElement: NodePath<t.ClassProperty | t.ClassMethod>;\n    for (const path of elements) {\n      if (\n        (path.isClassProperty() || path.isClassMethod()) &&\n        (path.node as t.ClassMethod).kind !== \"constructor\"\n      ) {\n        firstPublicElement = path;\n        break;\n      }\n    }\n    if (firstPublicElement != null) {\n      // Convert its key to a computed one to host the decorator evaluations.\n      convertToComputedKey(firstPublicElement);\n      prependExpressionsToComputedKey(\n        computedKeyAssignments,\n        firstPublicElement,\n      );\n    } else {\n      // When there is no public class elements, we inject a temporary computed\n      // field whose key will host the decorator evaluations. The field will be\n      // deleted immediately after it is defiend.\n      originalClass.body.body.unshift(\n        t.classProperty(\n          t.sequenceExpression([\n            ...computedKeyAssignments,\n            t.stringLiteral(\"_\"),\n          ]),\n          undefined,\n          undefined,\n          undefined,\n          /* computed */ true,\n          /* static */ true,\n        ),\n      );\n      applyDecsBody.push(\n        t.expressionStatement(\n          t.unaryExpression(\n            \"delete\",\n            t.memberExpression(t.thisExpression(), t.identifier(\"_\")),\n          ),\n        ),\n      );\n    }\n    computedKeyAssignments = [];\n  }\n\n  applyDecsBody.push(\n    t.expressionStatement(\n      createLocalsAssignment(\n        elementLocals,\n        classLocals,\n        elementDecorations,\n        classDecorationsId ?? t.arrayExpression(classDecorations),\n        t.numericLiteral(classDecorationsFlag),\n        needsInstancePrivateBrandCheck ? lastInstancePrivateName : null,\n        setClassName,\n        t.cloneNode(superClass),\n        state,\n        version,\n      ),\n    ),\n  );\n  if (staticInitLocal) {\n    applyDecsBody.push(\n      t.expressionStatement(\n        t.callExpression(t.cloneNode(staticInitLocal), [t.thisExpression()]),\n      ),\n    );\n  }\n  if (staticClosures.length > 0) {\n    applyDecsBody.push(\n      ...staticClosures.map(expr => t.expressionStatement(expr)),\n    );\n  }\n\n  // When path is a ClassExpression, path.insertBefore will convert `path`\n  // into a SequenceExpression\n  path.insertBefore(classAssignments.map(expr => t.expressionStatement(expr)));\n\n  if (needsDeclaraionForClassBinding) {\n    const classBindingInfo = scopeParent.getBinding(classIdLocal.name);\n    if (!classBindingInfo.constantViolations.length) {\n      // optimization: reuse the inner class binding if the outer class binding is not mutated\n      path.insertBefore(\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classIdLocal)),\n        ]),\n      );\n    } else {\n      const classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier(\n        \"t\" + classIdLocal.name,\n      );\n      const classOuterBindingLocal = classIdLocal;\n      path.replaceWithMultiple([\n        t.variableDeclaration(\"let\", [\n          t.variableDeclarator(t.cloneNode(classOuterBindingLocal)),\n          t.variableDeclarator(classOuterBindingDelegateLocal),\n        ]),\n        t.blockStatement([\n          t.variableDeclaration(\"let\", [\n            t.variableDeclarator(t.cloneNode(classIdLocal)),\n          ]),\n          // needsDeclaraionForClassBinding is true ↔ node is a class declaration\n          path.node as t.ClassDeclaration,\n          t.expressionStatement(\n            t.assignmentExpression(\n              \"=\",\n              t.cloneNode(classOuterBindingDelegateLocal),\n              t.cloneNode(classIdLocal),\n            ),\n          ),\n        ]),\n        t.expressionStatement(\n          t.assignmentExpression(\n            \"=\",\n            t.cloneNode(classOuterBindingLocal),\n            t.cloneNode(classOuterBindingDelegateLocal),\n          ),\n        ),\n      ]);\n    }\n  }\n\n  if (decoratedPrivateMethods.size > 0) {\n    checkPrivateMethodUpdateError(path, decoratedPrivateMethods);\n  }\n\n  // Recrawl the scope to make sure new identifiers are properly synced\n  path.scope.crawl();\n\n  return path;\n}\n\nfunction createLocalsAssignment(\n  elementLocals: t.Identifier[],\n  classLocals: t.Identifier[],\n  elementDecorations: t.ArrayExpression | t.Identifier,\n  classDecorations: t.ArrayExpression | t.Identifier,\n  classDecorationsFlag: t.NumericLiteral,\n  maybePrivateBrandName: t.PrivateName | null,\n  setClassName: t.Identifier | t.StringLiteral | undefined,\n  superClass: null | t.Expression,\n  state: PluginPass,\n  version: DecoratorVersionKind,\n) {\n  let lhs, rhs;\n  const args: t.Expression[] = [\n    setClassName\n      ? createSetFunctionNameCall(state, setClassName)\n      : t.thisExpression(),\n    classDecorations,\n    elementDecorations,\n  ];\n\n  if (!process.env.BABEL_8_BREAKING) {\n    if (version !== \"2023-11\") {\n      args.splice(1, 2, elementDecorations, classDecorations);\n    }\n    if (\n      version === \"2021-12\" ||\n      (version === \"2022-03\" && !state.availableHelper(\"applyDecs2203R\"))\n    ) {\n      lhs = t.arrayPattern([...elementLocals, ...classLocals]);\n      rhs = t.callExpression(\n        state.addHelper(version === \"2021-12\" ? \"applyDecs\" : \"applyDecs2203\"),\n        args,\n      );\n      return t.assignmentExpression(\"=\", lhs, rhs);\n    } else if (version === \"2022-03\") {\n      rhs = t.callExpression(state.addHelper(\"applyDecs2203R\"), args);\n    } else if (version === \"2023-01\") {\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      }\n      rhs = t.callExpression(state.addHelper(\"applyDecs2301\"), args);\n    } else if (version === \"2023-05\") {\n      if (\n        maybePrivateBrandName ||\n        superClass ||\n        classDecorationsFlag.value !== 0\n      ) {\n        args.push(classDecorationsFlag);\n      }\n      if (maybePrivateBrandName) {\n        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n      } else if (superClass) {\n        args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n      }\n      if (superClass) args.push(superClass);\n      rhs = t.callExpression(state.addHelper(\"applyDecs2305\"), args);\n    }\n  }\n  if (process.env.BABEL_8_BREAKING || version === \"2023-11\") {\n    if (\n      maybePrivateBrandName ||\n      superClass ||\n      classDecorationsFlag.value !== 0\n    ) {\n      args.push(classDecorationsFlag);\n    }\n    if (maybePrivateBrandName) {\n      args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));\n    } else if (superClass) {\n      args.push(t.unaryExpression(\"void\", t.numericLiteral(0)));\n    }\n    if (superClass) args.push(superClass);\n    rhs = t.callExpression(state.addHelper(\"applyDecs2311\"), args);\n  }\n\n  // optimize `{ c: [classLocals] } = applyDecsHelper(...)` to\n  // `[classLocals] = applyDecsHelper(...).c`\n  if (elementLocals.length > 0) {\n    if (classLocals.length > 0) {\n      lhs = t.objectPattern([\n        t.objectProperty(t.identifier(\"e\"), t.arrayPattern(elementLocals)),\n        t.objectProperty(t.identifier(\"c\"), t.arrayPattern(classLocals)),\n      ]);\n    } else {\n      lhs = t.arrayPattern(elementLocals);\n      // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n      rhs = t.memberExpression(rhs, t.identifier(\"e\"), false, false);\n    }\n  } else {\n    // invariant: classLocals.length > 0\n    lhs = t.arrayPattern(classLocals);\n    // @ts-ignore(Babel 7 vs Babel 8) optional removed in Babel 8\n    rhs = t.memberExpression(rhs, t.identifier(\"c\"), false, false);\n  }\n\n  return t.assignmentExpression(\"=\", lhs, rhs);\n}\n\nfunction isProtoKey(\n  node: t.Identifier | t.StringLiteral | t.BigIntLiteral | t.NumericLiteral,\n) {\n  return node.type === \"Identifier\"\n    ? node.name === \"__proto__\"\n    : node.value === \"__proto__\";\n}\n\nfunction isDecorated(node: t.Class | ClassDecoratableElement) {\n  return node.decorators && node.decorators.length > 0;\n}\n\nfunction shouldTransformElement(node: ClassElement) {\n  switch (node.type) {\n    case \"ClassAccessorProperty\":\n      return true;\n    case \"ClassMethod\":\n    case \"ClassProperty\":\n    case \"ClassPrivateMethod\":\n    case \"ClassPrivateProperty\":\n      return isDecorated(node);\n    default:\n      return false;\n  }\n}\n\nfunction shouldTransformClass(node: t.Class) {\n  return isDecorated(node) || node.body.body.some(shouldTransformElement);\n}\n\n// Todo: unify name references logic with helper-function-name\nfunction NamedEvaluationVisitoryFactory(\n  isAnonymous: (path: NodePath) => boolean,\n  visitor: (\n    path: NodePath,\n    state: PluginPass,\n    name:\n      | string\n      | t.Identifier\n      | t.StringLiteral\n      | t.NumericLiteral\n      | t.BigIntLiteral,\n  ) => void,\n) {\n  function handleComputedProperty(\n    propertyPath: NodePath<\n      t.ObjectProperty | t.ClassProperty | t.ClassAccessorProperty\n    >,\n    key: t.Expression,\n    state: PluginPass,\n  ): t.StringLiteral | t.Identifier {\n    switch (key.type) {\n      case \"StringLiteral\":\n        return t.stringLiteral(key.value);\n      case \"NumericLiteral\":\n      case \"BigIntLiteral\": {\n        const keyValue = key.value + \"\";\n        propertyPath.get(\"key\").replaceWith(t.stringLiteral(keyValue));\n        return t.stringLiteral(keyValue);\n      }\n      default: {\n        const ref = propertyPath.scope.maybeGenerateMemoised(key);\n        propertyPath\n          .get(\"key\")\n          .replaceWith(\n            t.assignmentExpression(\n              \"=\",\n              ref,\n              createToPropertyKeyCall(state, key),\n            ),\n          );\n        return t.cloneNode(ref);\n      }\n    }\n  }\n  return {\n    VariableDeclarator(path, state) {\n      const id = path.node.id;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"init\"));\n        if (isAnonymous(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    AssignmentExpression(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (isAnonymous(initializer)) {\n          switch (path.node.operator) {\n            case \"=\":\n            case \"&&=\":\n            case \"||=\":\n            case \"??=\":\n              visitor(initializer, state, id.name);\n          }\n        }\n      }\n    },\n    AssignmentPattern(path, state) {\n      const id = path.node.left;\n      if (id.type === \"Identifier\") {\n        const initializer = skipTransparentExprWrappers(path.get(\"right\"));\n        if (isAnonymous(initializer)) {\n          const name = id.name;\n          visitor(initializer, state, name);\n        }\n      }\n    },\n    // We listen on ObjectExpression so that we don't have to visit\n    // the object properties under object patterns\n    ObjectExpression(path, state) {\n      for (const propertyPath of path.get(\"properties\")) {\n        if (!propertyPath.isObjectProperty()) continue;\n        const { node } = propertyPath;\n        const id = node.key;\n        const initializer = skipTransparentExprWrappers(\n          propertyPath.get(\"value\") as NodePath<t.Expression>,\n        );\n        if (isAnonymous(initializer)) {\n          if (!node.computed) {\n            // 13.2.5.5 RS: PropertyDefinitionEvaluation\n            if (!isProtoKey(id as t.StringLiteral | t.Identifier)) {\n              if (id.type === \"Identifier\") {\n                visitor(initializer, state, id.name);\n              } else {\n                const className = t.stringLiteral(\n                  (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                    .value + \"\",\n                );\n                visitor(initializer, state, className);\n              }\n            }\n          } else {\n            const ref = handleComputedProperty(\n              propertyPath,\n              // The key of a computed object property must not be a private name\n              id as t.Expression,\n              state,\n            );\n            visitor(initializer, state, ref);\n          }\n        }\n      }\n    },\n    ClassPrivateProperty(path, state) {\n      const { node } = path;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        const className = t.stringLiteral(\"#\" + node.key.id.name);\n        visitor(initializer, state, className);\n      }\n    },\n    ClassAccessorProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else if (id.type === \"PrivateName\") {\n            const className = t.stringLiteral(\"#\" + id.id.name);\n            visitor(initializer, state, className);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(\n            path,\n            // The key of a computed accessor property must not be a private name\n            id as t.Expression,\n            state,\n          );\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n    ClassProperty(path, state) {\n      const { node } = path;\n      const id = node.key;\n      const initializer = skipTransparentExprWrappers(path.get(\"value\"));\n      if (isAnonymous(initializer)) {\n        if (!node.computed) {\n          if (id.type === \"Identifier\") {\n            visitor(initializer, state, id.name);\n          } else {\n            const className = t.stringLiteral(\n              (id as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n                .value + \"\",\n            );\n            visitor(initializer, state, className);\n          }\n        } else {\n          const ref = handleComputedProperty(path, id, state);\n          visitor(initializer, state, ref);\n        }\n      }\n    },\n  } satisfies Visitor<PluginPass>;\n}\n\nfunction isDecoratedAnonymousClassExpression(path: NodePath) {\n  return (\n    path.isClassExpression({ id: null }) && shouldTransformClass(path.node)\n  );\n}\n\nfunction generateLetUidIdentifier(scope: Scope, name: string) {\n  const id = scope.generateUidIdentifier(name);\n  scope.push({ id, kind: \"let\" });\n  return t.cloneNode(id);\n}\n\nexport default function (\n  { assertVersion, assumption }: PluginAPI,\n  { loose }: Options,\n  version: DecoratorVersionKind,\n  inherits: PluginObject[\"inherits\"],\n): PluginObject {\n  if (process.env.BABEL_8_BREAKING) {\n    assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n  } else {\n    if (\n      version === \"2023-11\" ||\n      version === \"2023-05\" ||\n      version === \"2023-01\"\n    ) {\n      assertVersion(REQUIRED_VERSION(\"^7.21.0\"));\n    } else if (version === \"2021-12\") {\n      assertVersion(REQUIRED_VERSION(\"^7.16.0\"));\n    } else {\n      assertVersion(REQUIRED_VERSION(\"^7.19.0\"));\n    }\n  }\n\n  const VISITED = new WeakSet<NodePath>();\n  const constantSuper = assumption(\"constantSuper\") ?? loose;\n  const ignoreFunctionLength = assumption(\"ignoreFunctionLength\") ?? loose;\n\n  const namedEvaluationVisitor: Visitor<PluginPass> =\n    NamedEvaluationVisitoryFactory(\n      isDecoratedAnonymousClassExpression,\n      visitClass,\n    );\n\n  function visitClass(\n    path: NodePath<t.Class>,\n    state: PluginPass,\n    className: string | t.Identifier | t.StringLiteral | undefined,\n  ) {\n    if (VISITED.has(path)) return;\n    const { node } = path;\n    className ??= node.id?.name;\n    const newPath = transformClass(\n      path,\n      state,\n      constantSuper,\n      ignoreFunctionLength,\n      className,\n      namedEvaluationVisitor,\n      version,\n    );\n    if (newPath) {\n      VISITED.add(newPath);\n      return;\n    }\n    VISITED.add(path);\n  }\n\n  return {\n    name: \"proposal-decorators\",\n    inherits: inherits,\n\n    visitor: {\n      ExportDefaultDeclaration(path, state) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          const isAnonymous = !declaration.id;\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          const updatedVarDeclarationPath =\n            path.splitExportDeclaration() as NodePath<t.ClassDeclaration>;\n          if (isAnonymous) {\n            visitClass(\n              updatedVarDeclarationPath,\n              state,\n              t.stringLiteral(\"default\"),\n            );\n          }\n        }\n      },\n      ExportNamedDeclaration(path) {\n        const { declaration } = path.node;\n        if (\n          declaration?.type === \"ClassDeclaration\" &&\n          // When compiling class decorators we need to replace the class\n          // binding, so we must split it in two separate declarations.\n          isDecorated(declaration)\n        ) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.splitExportDeclaration ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n          }\n          path.splitExportDeclaration();\n        }\n      },\n\n      Class(path, state) {\n        visitClass(path, state, undefined);\n      },\n\n      ...namedEvaluationVisitor,\n    },\n  };\n}\n","// TODO(Babel 8): Remove this file\nif (process.env.BABEL_8_BREAKING && process.env.IS_PUBLISH) {\n  throw new Error(\n    \"Internal Babel error: This file should only be loaded in Babel 7\",\n  );\n}\n\nimport { types as t, template } from \"@babel/core\";\nimport type { File, NodePath } from \"@babel/core\";\nimport ReplaceSupers from \"@babel/helper-replace-supers\";\n\ntype Decoratable = Extract<t.Node, { decorators?: t.Decorator[] | null }>;\n\nfunction prop(key: string, value?: t.Expression) {\n  if (!value) return null;\n  return t.objectProperty(t.identifier(key), value);\n}\n\nfunction method(key: string, body: t.Statement[]) {\n  return t.objectMethod(\n    \"method\",\n    t.identifier(key),\n    [],\n    t.blockStatement(body),\n  );\n}\n\nfunction takeDecorators(node: Decoratable) {\n  let result: t.ArrayExpression | undefined;\n  if (node.decorators && node.decorators.length > 0) {\n    result = t.arrayExpression(\n      node.decorators.map(decorator => decorator.expression),\n    );\n  }\n  node.decorators = undefined;\n  return result;\n}\n\ntype AcceptedElement = Exclude<ClassElement, t.TSIndexSignature>;\ntype SupportedElement = Exclude<\n  AcceptedElement,\n  | t.ClassPrivateMethod\n  | t.ClassPrivateProperty\n  | t.ClassAccessorProperty\n  | t.StaticBlock\n>;\n\nfunction getKey(node: SupportedElement) {\n  if (node.computed) {\n    return node.key;\n  } else if (t.isIdentifier(node.key)) {\n    return t.stringLiteral(node.key.name);\n  } else {\n    return t.stringLiteral(\n      String(\n        // A non-identifier non-computed key\n        (node.key as t.StringLiteral | t.NumericLiteral | t.BigIntLiteral)\n          .value,\n      ),\n    );\n  }\n}\n\nfunction extractElementDescriptor(\n  file: File,\n  classRef: t.Identifier,\n  superRef: t.Identifier,\n  path: NodePath<AcceptedElement>,\n) {\n  const isMethod = path.isClassMethod();\n  if (path.isPrivate()) {\n    throw path.buildCodeFrameError(\n      `Private ${\n        isMethod ? \"methods\" : \"fields\"\n      } in decorated classes are not supported yet.`,\n    );\n  }\n  if (path.node.type === \"ClassAccessorProperty\") {\n    throw path.buildCodeFrameError(\n      `Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n  if (path.node.type === \"StaticBlock\") {\n    throw path.buildCodeFrameError(\n      `Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.`,\n    );\n  }\n\n  const { node, scope } = path as NodePath<SupportedElement>;\n\n  if (!path.isTSDeclareMethod()) {\n    new ReplaceSupers({\n      methodPath: path as NodePath<\n        Exclude<SupportedElement, t.TSDeclareMethod>\n      >,\n      objectRef: classRef,\n      superRef,\n      file,\n      refToPreserve: classRef,\n    }).replace();\n  }\n\n  const properties: t.ObjectExpression[\"properties\"] = [\n    prop(\"kind\", t.stringLiteral(t.isClassMethod(node) ? node.kind : \"field\")),\n    prop(\"decorators\", takeDecorators(node as Decoratable)),\n    prop(\"static\", node.static && t.booleanLiteral(true)),\n    prop(\"key\", getKey(node)),\n  ].filter(Boolean);\n\n  if (isMethod) {\n    if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n      // polyfill when being run by an older Babel version\n      path.ensureFunctionName ??=\n        // eslint-disable-next-line no-restricted-globals\n        require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n    }\n    // @ts-expect-error path is a ClassMethod, that technically\n    // is not supported as it does not have an .id property\n    // This plugin will however then transform the ClassMethod\n    // to a function expression, so it's fine.\n    path.ensureFunctionName(false);\n\n    properties.push(prop(\"value\", t.toExpression(path.node)));\n  } else if (t.isClassProperty(node) && node.value) {\n    properties.push(\n      method(\"value\", template.statements.ast`return ${node.value}`),\n    );\n  } else {\n    properties.push(prop(\"value\", scope.buildUndefinedNode()));\n  }\n\n  path.remove();\n\n  return t.objectExpression(properties);\n}\n\nfunction addDecorateHelper(file: File) {\n  return file.addHelper(\"decorate\");\n}\n\ntype ClassElement = t.Class[\"body\"][\"body\"][number];\ntype ClassElementPath = NodePath<ClassElement>;\n\nexport function buildDecoratedClass(\n  ref: t.Identifier,\n  path: NodePath<t.Class>,\n  elements: ClassElementPath[],\n  file: File,\n) {\n  const { node, scope } = path;\n  const initializeId = scope.generateUidIdentifier(\"initialize\");\n  const isDeclaration = node.id && path.isDeclaration();\n  const isStrict = path.isInStrictMode();\n  const { superClass } = node;\n\n  node.type = \"ClassDeclaration\";\n  if (!node.id) node.id = t.cloneNode(ref);\n\n  let superId: t.Identifier;\n  if (superClass) {\n    superId = scope.generateUidIdentifierBasedOnNode(node.superClass, \"super\");\n    node.superClass = superId;\n  }\n\n  const classDecorators = takeDecorators(node);\n  const definitions = t.arrayExpression(\n    elements\n      .filter(\n        element =>\n          // @ts-expect-error Ignore TypeScript's abstract methods (see #10514)\n          !element.node.abstract && element.node.type !== \"TSIndexSignature\",\n      )\n      .map(path =>\n        extractElementDescriptor(\n          file,\n          node.id,\n          superId,\n          // @ts-expect-error TS can not exclude TSIndexSignature\n          path,\n        ),\n      ),\n  );\n\n  const wrapperCall = template.expression.ast`\n    ${addDecorateHelper(file)}(\n      ${classDecorators || t.nullLiteral()},\n      function (${initializeId}, ${superClass ? t.cloneNode(superId) : null}) {\n        ${node}\n        return { F: ${t.cloneNode(node.id)}, d: ${definitions} };\n      },\n      ${superClass}\n    )\n  ` as t.CallExpression & { arguments: [unknown, t.FunctionExpression] };\n\n  if (!isStrict) {\n    wrapperCall.arguments[1].body.directives.push(\n      t.directive(t.directiveLiteral(\"use strict\")),\n    );\n  }\n\n  let replacement: t.Node = wrapperCall;\n  let classPathDesc = \"arguments.1.body.body.0\";\n  if (isDeclaration) {\n    replacement = template.statement.ast`let ${ref} = ${wrapperCall}`;\n    classPathDesc = \"declarations.0.init.\" + classPathDesc;\n  }\n\n  return {\n    instanceNodes: [\n      template.statement.ast`\n        ${t.cloneNode(initializeId)}(this)\n      ` as t.ExpressionStatement,\n    ],\n    wrapClass(path: NodePath<t.Class>) {\n      path.replaceWith(replacement);\n      return path.get(classPathDesc) as NodePath;\n    },\n  };\n}\n","import type { File, types as t } from \"@babel/core\";\nimport type { NodePath } from \"@babel/core\";\nimport { hasOwnDecorators } from \"./decorators.ts\";\n\nexport const FEATURES = Object.freeze({\n  //classes: 1 << 0,\n  fields: 1 << 1,\n  privateMethods: 1 << 2,\n  decorators: 1 << 3,\n  privateIn: 1 << 4,\n  staticBlocks: 1 << 5,\n});\n\nconst featuresSameLoose = new Map([\n  [FEATURES.fields, \"@babel/plugin-transform-class-properties\"],\n  [FEATURES.privateMethods, \"@babel/plugin-transform-private-methods\"],\n  [FEATURES.privateIn, \"@babel/plugin-transform-private-property-in-object\"],\n]);\n\n// We can't use a symbol because this needs to always be the same, even if\n// this package isn't deduped by npm. e.g.\n//  - node_modules/\n//    - @babel/plugin-class-features\n//    - @babel/plugin-proposal-decorators\n//      - node_modules\n//        - @babel-plugin-class-features\nconst featuresKey = \"@babel/plugin-class-features/featuresKey\";\nconst looseKey = \"@babel/plugin-class-features/looseKey\";\n\nif (!process.env.BABEL_8_BREAKING) {\n  // See https://github.com/babel/babel/issues/11622.\n  // Since preset-env sets loose for the fields and private methods plugins, it can\n  // cause conflicts with the loose mode set by an explicit plugin in the config.\n  // To solve this problem, we ignore preset-env's loose mode if another plugin\n  // explicitly sets it\n  // The code to handle this logic doesn't check that \"low priority loose\" is always\n  // the same. However, it is only set by the preset and not directly by users:\n  // unless someone _wants_ to break it, it shouldn't be a problem.\n  // eslint-disable-next-line no-var\n  var looseLowPriorityKey =\n    \"@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing\";\n}\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var canIgnoreLoose = function (file: File, feature: number) {\n    return !!(file.get(looseLowPriorityKey) & feature);\n  };\n}\n\nexport function enableFeature(file: File, feature: number, loose: boolean) {\n  // We can't blindly enable the feature because, if it was already set,\n  // \"loose\" can't be changed, so that\n  //   @babel/plugin-class-properties { loose: true }\n  //   @babel/plugin-class-properties { loose: false }\n  // is transformed in loose mode.\n  // We only enabled the feature if it was previously disabled.\n  if (process.env.BABEL_8_BREAKING) {\n    if (!hasFeature(file, feature)) {\n      file.set(featuresKey, file.get(featuresKey) | feature);\n      setLoose(file, feature, loose);\n    }\n  } else if (!hasFeature(file, feature) || canIgnoreLoose(file, feature)) {\n    file.set(featuresKey, file.get(featuresKey) | feature);\n    if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, true);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else if (\n      // @ts-expect-error comparing loose with internal private magic string\n      loose ===\n      \"#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error\"\n    ) {\n      setLoose(file, feature, false);\n      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);\n    } else {\n      setLoose(file, feature, loose);\n    }\n  }\n\n  let resolvedLoose: boolean | undefined;\n  for (const [mask, name] of featuresSameLoose) {\n    if (!hasFeature(file, mask)) continue;\n    if (!process.env.BABEL_8_BREAKING) {\n      if (canIgnoreLoose(file, mask)) continue;\n    }\n\n    const loose = isLoose(file, mask);\n\n    if (resolvedLoose === !loose) {\n      throw new Error(\n        \"'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, \" +\n          \"@babel/plugin-transform-private-methods and \" +\n          \"@babel/plugin-transform-private-property-in-object (when they are enabled).\" +\n          \"\\n\\n\" +\n          getBabelShowConfigForHint(file),\n      );\n    } else {\n      resolvedLoose = loose;\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // eslint-disable-next-line no-var\n        var higherPriorityPluginName = name;\n      }\n    }\n  }\n\n  if (!process.env.BABEL_8_BREAKING && resolvedLoose !== undefined) {\n    for (const [mask, name] of featuresSameLoose) {\n      if (hasFeature(file, mask) && isLoose(file, mask) !== resolvedLoose) {\n        setLoose(file, mask, resolvedLoose);\n        console.warn(\n          `Though the \"loose\" option was set to \"${!resolvedLoose}\" in your @babel/preset-env ` +\n            `config, it will not be used for ${name} since the \"loose\" mode option was set to ` +\n            `\"${resolvedLoose}\" for ${higherPriorityPluginName}.\\nThe \"loose\" option must be the ` +\n            `same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods ` +\n            `and @babel/plugin-transform-private-property-in-object (when they are enabled): you can ` +\n            `silence this warning by explicitly adding\\n` +\n            `\\t[\"${name}\", { \"loose\": ${resolvedLoose} }]\\n` +\n            `to the \"plugins\" section of your Babel config.` +\n            \"\\n\\n\" +\n            getBabelShowConfigForHint(file),\n        );\n      }\n    }\n  }\n}\n\nfunction getBabelShowConfigForHint(file: File) {\n  let { filename } = file.opts;\n  if (!filename || filename === \"unknown\") {\n    filename = \"[name of the input file]\";\n  }\n  return `\\\nIf you already set the same 'loose' mode for these plugins in your config, it's possible that they \\\nare enabled multiple times with different options.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded \\\nconfiguration:\n\\tnpx cross-env BABEL_SHOW_CONFIG_FOR=${filename} <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.`;\n}\n\nfunction hasFeature(file: File, feature: number) {\n  return !!(file.get(featuresKey) & feature);\n}\n\nexport function isLoose(file: File, feature: number) {\n  return !!(file.get(looseKey) & feature);\n}\n\nfunction setLoose(file: File, feature: number, loose: boolean) {\n  if (loose) file.set(looseKey, file.get(looseKey) | feature);\n  else file.set(looseKey, file.get(looseKey) & ~feature);\n\n  if (!process.env.BABEL_8_BREAKING) {\n    file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);\n  }\n}\n\nexport function shouldTransform(path: NodePath<t.Class>, file: File): boolean {\n  let decoratorPath: NodePath<t.Decorator> | null = null;\n  let publicFieldPath: NodePath<t.ClassProperty> | null = null;\n  let privateFieldPath: NodePath<t.ClassPrivateProperty> | null = null;\n  let privateMethodPath: NodePath<t.ClassPrivateMethod> | null = null;\n  let staticBlockPath: NodePath<t.StaticBlock> | null = null;\n\n  if (hasOwnDecorators(path.node)) {\n    decoratorPath = path.get(\"decorators.0\");\n  }\n  for (const el of path.get(\"body.body\")) {\n    if (!decoratorPath && hasOwnDecorators(el.node)) {\n      decoratorPath = el.get(\"decorators.0\");\n    }\n    if (!publicFieldPath && el.isClassProperty()) {\n      publicFieldPath = el;\n    }\n    if (!privateFieldPath && el.isClassPrivateProperty()) {\n      privateFieldPath = el;\n    }\n    // NOTE: path.isClassPrivateMethod() it isn't supported in <7.2.0\n    if (!privateMethodPath && el.isClassPrivateMethod?.()) {\n      privateMethodPath = el;\n    }\n    if (!staticBlockPath && el.isStaticBlock?.()) {\n      staticBlockPath = el;\n    }\n  }\n\n  if (decoratorPath && privateFieldPath) {\n    throw privateFieldPath.buildCodeFrameError(\n      \"Private fields in decorated classes are not supported yet.\",\n    );\n  }\n  if (decoratorPath && privateMethodPath) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Private methods in decorated classes are not supported yet.\",\n    );\n  }\n\n  if (decoratorPath && !hasFeature(file, FEATURES.decorators)) {\n    throw path.buildCodeFrameError(\n      \"Decorators are not enabled.\" +\n        \"\\nIf you are using \" +\n        '[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }], ' +\n        'make sure it comes *before* \"@babel/plugin-transform-class-properties\" ' +\n        \"and enable loose mode, like so:\\n\" +\n        '\\t[\"@babel/plugin-proposal-decorators\", { \"version\": \"legacy\" }]\\n' +\n        '\\t[\"@babel/plugin-transform-class-properties\", { \"loose\": true }]',\n    );\n  }\n\n  if (privateMethodPath && !hasFeature(file, FEATURES.privateMethods)) {\n    throw privateMethodPath.buildCodeFrameError(\n      \"Class private methods are not enabled. \" +\n        \"Please add `@babel/plugin-transform-private-methods` to your configuration.\",\n    );\n  }\n\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    !hasFeature(file, FEATURES.fields) &&\n    // We want to allow enabling the private-methods plugin even without enabling\n    // the class-properties plugin. Class fields will still be compiled in classes\n    // that contain private methods.\n    // This is already allowed with the other various class features plugins, but\n    // it's because they can fallback to a transform separated from this helper.\n    !hasFeature(file, FEATURES.privateMethods)\n  ) {\n    throw path.buildCodeFrameError(\n      \"Class fields are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-properties` to your configuration.\",\n    );\n  }\n\n  if (staticBlockPath && !hasFeature(file, FEATURES.staticBlocks)) {\n    throw path.buildCodeFrameError(\n      \"Static class blocks are not enabled. \" +\n        \"Please add `@babel/plugin-transform-class-static-block` to your configuration.\",\n    );\n  }\n\n  if (decoratorPath || privateMethodPath || staticBlockPath) {\n    // If one of those feature is used we know that its transform is\n    // enabled, otherwise the previous checks throw.\n    return true;\n  }\n  if (\n    (publicFieldPath || privateFieldPath) &&\n    hasFeature(file, FEATURES.fields)\n  ) {\n    return true;\n  }\n\n  return false;\n}\n","import { types as t } from \"@babel/core\";\nimport type { PluginAPI, PluginObject, NodePath } from \"@babel/core\";\n\nimport semver from \"semver\";\n\nimport {\n  buildPrivateNamesNodes,\n  buildPrivateNamesMap,\n  transformPrivateNamesUsage,\n  buildFieldsInitNodes,\n  buildCheckInRHS,\n} from \"./fields.ts\";\nimport type { PropPath } from \"./fields.ts\";\nimport createDecoratorTransform, { hasDecorators } from \"./decorators.ts\";\nimport type { DecoratorVersionKind } from \"./decorators.ts\";\nimport { buildDecoratedClass } from \"./decorators-2018-09.ts\" with { if: \"!process.env.BABEL_8_BREAKING\" };\nimport { injectInitialization, extractComputedKeys } from \"./misc.ts\";\nimport {\n  enableFeature,\n  FEATURES,\n  isLoose,\n  shouldTransform,\n} from \"./features.ts\";\nimport { assertFieldTransformed } from \"./typescript.ts\";\n\nexport { FEATURES, enableFeature, injectInitialization, buildCheckInRHS };\n\nconst versionKey = \"@babel/plugin-class-features/version\";\n\ninterface Options {\n  name: string;\n  feature: number;\n  loose?: boolean;\n  inherits?: PluginObject[\"inherits\"];\n  manipulateOptions?: PluginObject[\"manipulateOptions\"];\n  api?: PluginAPI;\n  decoratorVersion?: DecoratorVersionKind | \"2018-09\";\n}\n\nexport function createClassFeaturePlugin({\n  name,\n  feature,\n  loose,\n  manipulateOptions,\n  api,\n  inherits,\n  decoratorVersion,\n}: Options): PluginObject {\n  if (feature & FEATURES.decorators) {\n    if (process.env.BABEL_8_BREAKING) {\n      return createDecoratorTransform(api, { loose }, \"2023-11\", inherits);\n    } else {\n      if (\n        decoratorVersion === \"2023-11\" ||\n        decoratorVersion === \"2023-05\" ||\n        decoratorVersion === \"2023-01\" ||\n        decoratorVersion === \"2022-03\" ||\n        decoratorVersion === \"2021-12\"\n      ) {\n        return createDecoratorTransform(\n          api,\n          { loose },\n          decoratorVersion,\n          inherits,\n        );\n      }\n    }\n  }\n  if (!process.env.BABEL_8_BREAKING) {\n    api ??= { assumption: () => void 0 as any } as any;\n  }\n  const setPublicClassFields = api.assumption(\"setPublicClassFields\");\n  const privateFieldsAsSymbols = api.assumption(\"privateFieldsAsSymbols\");\n  const privateFieldsAsProperties = api.assumption(\"privateFieldsAsProperties\");\n  const noUninitializedPrivateFieldAccess =\n    api.assumption(\"noUninitializedPrivateFieldAccess\") ?? false;\n  const constantSuper = api.assumption(\"constantSuper\");\n  const noDocumentAll = api.assumption(\"noDocumentAll\");\n\n  if (privateFieldsAsProperties && privateFieldsAsSymbols) {\n    throw new Error(\n      `Cannot enable both the \"privateFieldsAsProperties\" and ` +\n        `\"privateFieldsAsSymbols\" assumptions as the same time.`,\n    );\n  }\n  const privateFieldsAsSymbolsOrProperties =\n    privateFieldsAsProperties || privateFieldsAsSymbols;\n\n  if (loose === true) {\n    type AssumptionName = Parameters<PluginAPI[\"assumption\"]>[0];\n    const explicit: `\"${AssumptionName}\"`[] = [];\n\n    if (setPublicClassFields !== undefined) {\n      explicit.push(`\"setPublicClassFields\"`);\n    }\n    if (privateFieldsAsProperties !== undefined) {\n      explicit.push(`\"privateFieldsAsProperties\"`);\n    }\n    if (privateFieldsAsSymbols !== undefined) {\n      explicit.push(`\"privateFieldsAsSymbols\"`);\n    }\n    if (explicit.length !== 0) {\n      console.warn(\n        `[${name}]: You are using the \"loose: true\" option and you are` +\n          ` explicitly setting a value for the ${explicit.join(\" and \")}` +\n          ` assumption${explicit.length > 1 ? \"s\" : \"\"}. The \"loose\" option` +\n          ` can cause incompatibilities with the other class features` +\n          ` plugins, so it's recommended that you replace it with the` +\n          ` following top-level option:\\n` +\n          `\\t\"assumptions\": {\\n` +\n          `\\t\\t\"setPublicClassFields\": true,\\n` +\n          `\\t\\t\"privateFieldsAsSymbols\": true\\n` +\n          `\\t}`,\n      );\n    }\n  }\n\n  return {\n    name,\n    manipulateOptions,\n    inherits,\n\n    pre(file) {\n      enableFeature(file, feature, loose);\n\n      if (!process.env.BABEL_8_BREAKING) {\n        // Until 7.21.4, we used to encode the version as a number.\n        // If file.get(versionKey) is a number, it has thus been\n        // set by an older version of this plugin.\n        if (typeof file.get(versionKey) === \"number\") {\n          file.set(versionKey, PACKAGE_JSON.version);\n          return;\n        }\n      }\n      if (\n        !file.get(versionKey) ||\n        semver.lt(file.get(versionKey), PACKAGE_JSON.version)\n      ) {\n        file.set(versionKey, PACKAGE_JSON.version);\n      }\n    },\n\n    visitor: {\n      Class(path, { file }) {\n        if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n        if (!shouldTransform(path, file)) return;\n\n        const pathIsClassDeclaration = path.isClassDeclaration();\n\n        if (pathIsClassDeclaration) assertFieldTransformed(path);\n\n        const loose = isLoose(file, feature);\n\n        let constructor: NodePath<t.ClassMethod>;\n        const isDecorated = hasDecorators(path.node);\n        const props: PropPath[] = [];\n        const elements = [];\n        const computedPaths: NodePath<t.ClassProperty | t.ClassMethod>[] = [];\n        const privateNames = new Set<string>();\n        const body = path.get(\"body\");\n\n        for (const path of body.get(\"body\")) {\n          if (\n            // check path.node.computed is enough, but ts will complain\n            (path.isClassProperty() || path.isClassMethod()) &&\n            path.node.computed\n          ) {\n            computedPaths.push(path);\n          }\n\n          if (path.isPrivate()) {\n            const { name } = path.node.key.id;\n            const getName = `get ${name}`;\n            const setName = `set ${name}`;\n\n            if (path.isClassPrivateMethod()) {\n              if (path.node.kind === \"get\") {\n                if (\n                  privateNames.has(getName) ||\n                  (privateNames.has(name) && !privateNames.has(setName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(getName).add(name);\n              } else if (path.node.kind === \"set\") {\n                if (\n                  privateNames.has(setName) ||\n                  (privateNames.has(name) && !privateNames.has(getName))\n                ) {\n                  throw path.buildCodeFrameError(\"Duplicate private field\");\n                }\n                privateNames.add(setName).add(name);\n              }\n            } else {\n              if (\n                (privateNames.has(name) &&\n                  !privateNames.has(getName) &&\n                  !privateNames.has(setName)) ||\n                (privateNames.has(name) &&\n                  (privateNames.has(getName) || privateNames.has(setName)))\n              ) {\n                throw path.buildCodeFrameError(\"Duplicate private field\");\n              }\n\n              privateNames.add(name);\n            }\n          }\n\n          if (path.isClassMethod({ kind: \"constructor\" })) {\n            constructor = path;\n          } else {\n            elements.push(path);\n            if (\n              path.isProperty() ||\n              path.isPrivate() ||\n              path.isStaticBlock?.()\n            ) {\n              props.push(path as PropPath);\n            }\n          }\n        }\n\n        if (process.env.BABEL_8_BREAKING) {\n          if (!props.length) return;\n        } else {\n          if (!props.length && !isDecorated) return;\n        }\n\n        const innerBinding = path.node.id;\n        let ref: t.Identifier | null;\n        if (!innerBinding || !pathIsClassDeclaration) {\n          if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n            // polyfill when being run by an older Babel version\n            path.ensureFunctionName ??=\n              // eslint-disable-next-line no-restricted-globals\n              require(\"@babel/traverse\").NodePath.prototype.ensureFunctionName;\n          }\n          (path as NodePath<t.ClassExpression>).ensureFunctionName(false);\n          ref = path.scope.generateUidIdentifier(innerBinding?.name || \"Class\");\n        }\n        const classRefForDefine = ref ?? t.cloneNode(innerBinding);\n\n        const privateNamesMap = buildPrivateNamesMap(\n          classRefForDefine.name,\n          privateFieldsAsSymbolsOrProperties ?? loose,\n          props,\n          file,\n        );\n        const privateNamesNodes = buildPrivateNamesNodes(\n          privateNamesMap,\n          privateFieldsAsProperties ?? loose,\n          privateFieldsAsSymbols ?? false,\n          file,\n        );\n\n        transformPrivateNamesUsage(\n          classRefForDefine,\n          path,\n          privateNamesMap,\n          {\n            privateFieldsAsProperties:\n              privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            noDocumentAll,\n            innerBinding,\n          },\n          file,\n        );\n\n        let keysNodes: t.Statement[],\n          staticNodes: t.Statement[],\n          instanceNodes: t.ExpressionStatement[],\n          lastInstanceNodeReturnsThis: boolean,\n          pureStaticNodes: t.FunctionDeclaration[],\n          classBindingNode: t.Statement | null,\n          wrapClass: (path: NodePath<t.Class>) => NodePath;\n\n        if (!process.env.BABEL_8_BREAKING) {\n          if (isDecorated) {\n            staticNodes = pureStaticNodes = keysNodes = [];\n            ({ instanceNodes, wrapClass } = buildDecoratedClass(\n              classRefForDefine,\n              path,\n              elements,\n              file,\n            ));\n          } else {\n            keysNodes = extractComputedKeys(path, computedPaths, file);\n            ({\n              staticNodes,\n              pureStaticNodes,\n              instanceNodes,\n              lastInstanceNodeReturnsThis,\n              classBindingNode,\n              wrapClass,\n            } = buildFieldsInitNodes(\n              ref,\n              path.node.superClass,\n              props,\n              privateNamesMap,\n              file,\n              setPublicClassFields ?? loose,\n              privateFieldsAsSymbolsOrProperties ?? loose,\n              noUninitializedPrivateFieldAccess,\n              constantSuper ?? loose,\n              innerBinding,\n            ));\n          }\n        } else {\n          keysNodes = extractComputedKeys(path, computedPaths, file);\n          ({\n            staticNodes,\n            pureStaticNodes,\n            instanceNodes,\n            lastInstanceNodeReturnsThis,\n            classBindingNode,\n            wrapClass,\n          } = buildFieldsInitNodes(\n            ref,\n            path.node.superClass,\n            props,\n            privateNamesMap,\n            file,\n            setPublicClassFields ?? loose,\n            privateFieldsAsSymbolsOrProperties ?? loose,\n            noUninitializedPrivateFieldAccess,\n            constantSuper ?? loose,\n            innerBinding,\n          ));\n        }\n\n        if (instanceNodes.length > 0) {\n          injectInitialization(\n            path,\n            constructor,\n            instanceNodes,\n            (referenceVisitor, state) => {\n              if (!process.env.BABEL_8_BREAKING) {\n                if (isDecorated) return;\n              }\n              for (const prop of props) {\n                // @ts-expect-error: TS doesn't infer that prop.node is not a StaticBlock\n                if (t.isStaticBlock?.(prop.node) || prop.node.static) continue;\n                prop.traverse(referenceVisitor, state);\n              }\n            },\n            lastInstanceNodeReturnsThis,\n          );\n        }\n\n        // rename to make ts happy\n        const wrappedPath = wrapClass(path);\n        wrappedPath.insertBefore([...privateNamesNodes, ...keysNodes]);\n        if (staticNodes.length > 0) {\n          wrappedPath.insertAfter(staticNodes);\n        }\n        if (pureStaticNodes.length > 0) {\n          wrappedPath\n            .find(parent => parent.isStatement() || parent.isDeclaration())\n            .insertAfter(pureStaticNodes);\n        }\n        if (classBindingNode != null && pathIsClassDeclaration) {\n          wrappedPath.insertAfter(classBindingNode);\n        }\n      },\n\n      ExportDefaultDeclaration(path, { file }) {\n        if (!process.env.BABEL_8_BREAKING) {\n          if (file.get(versionKey) !== PACKAGE_JSON.version) return;\n\n          const decl = path.get(\"declaration\");\n\n          if (decl.isClassDeclaration() && hasDecorators(decl.node)) {\n            if (decl.node.id) {\n              // export default class Foo {}\n              //   -->\n              // class Foo {} export { Foo as default }\n              if (!process.env.BABEL_8_BREAKING && !USE_ESM && !IS_STANDALONE) {\n                // polyfill when being run by an older Babel version\n                path.splitExportDeclaration ??=\n                  // eslint-disable-next-line no-restricted-globals\n                  require(\"@babel/traverse\").NodePath.prototype.splitExportDeclaration;\n              }\n              path.splitExportDeclaration();\n            } else {\n              // @ts-expect-error Anonymous class declarations can be\n              // transformed as if they were expressions\n              decl.node.type = \"ClassExpression\";\n            }\n          }\n        }\n      },\n    },\n  };\n}\n","// Fork of https://github.com/loganfsmyth/babel-plugin-proposal-decorators-legacy\n\nimport { template, types as t } from \"@babel/core\";\nimport type { NodePath, Visitor, PluginPass } from \"@babel/core\";\n\nconst buildClassDecorator = template.statement(`\n  DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n`) as (replacements: {\n  DECORATOR: t.Expression;\n  CLASS_REF: t.Identifier;\n  INNER: t.Expression;\n}) => t.ExpressionStatement;\n\nconst buildClassPrototype = template(`\n  CLASS_REF.prototype;\n`) as (replacements: { CLASS_REF: t.Identifier }) => t.ExpressionStatement;\n\nconst buildGetDescriptor = template(`\n    Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n`) as (replacements: {\n  TARGET: t.Expression;\n  PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst buildGetObjectInitializer = template(`\n    (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        initializer: function(){\n            return TEMP;\n        }\n    })\n`) as (replacements: {\n  TEMP: t.Identifier;\n  TARGET: t.Expression;\n  PROPERTY: t.Literal;\n}) => t.ExpressionStatement;\n\nconst WARNING_CALLS = new WeakSet();\n\n// legacy decorator does not support ClassAccessorProperty\ntype ClassDecoratableElement =\n  | t.ClassMethod\n  | t.ClassPrivateMethod\n  | t.ClassProperty\n  | t.ClassPrivateProperty;\n\n/**\n * If the decorator expressions are non-identifiers, hoist them to before the class so we can be sure\n * that they are evaluated in order.\n */\nfunction applyEnsureOrdering(\n  path: NodePath<t.ClassExpression | t.ObjectExpression>,\n) {\n  // TODO: This should probably also hoist computed properties.\n  const decorators: t.Decorator[] = (\n    path.isClass()\n      ? [\n          path,\n          ...(path.get(\"body.body\") as NodePath<ClassDecoratableElement>[]),\n        ]\n      : path.get(\"properties\")\n  ).reduce(\n    (\n      acc: t.Decorator[],\n      prop: NodePath<\n        t.ObjectMember | t.ClassExpression | ClassDecoratableElement\n      >,\n    ) => acc.concat(prop.node.decorators || []),\n    [],\n  );\n\n  const identDecorators = decorators.filter(\n    decorator => !t.isIdentifier(decorator.expression),\n  );\n  if (identDecorators.length === 0) return;\n\n  return t.sequenceExpression(\n    identDecorators\n      .map((decorator): t.Expression => {\n        const expression = decorator.expression;\n        const id = (decorator.expression =\n          path.scope.generateDeclaredUidIdentifier(\"dec\"));\n        return t.assignmentExpression(\"=\", id, expression);\n      })\n      .concat([path.node]),\n  );\n}\n\n/**\n * Given a class expression with class-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyClassDecorators(classPath: NodePath<t.ClassExpression>) {\n  if (!hasClassDecorators(classPath.node)) return;\n\n  const decorators = classPath.node.decorators || [];\n  classPath.node.decorators = null;\n\n  const name = classPath.scope.generateDeclaredUidIdentifier(\"class\");\n\n  return decorators\n    .map(dec => dec.expression)\n    .reverse()\n    .reduce(function (acc, decorator) {\n      return buildClassDecorator({\n        CLASS_REF: t.cloneNode(name),\n        DECORATOR: t.cloneNode(decorator),\n        INNER: acc,\n      }).expression;\n    }, classPath.node);\n}\n\nfunction hasClassDecorators(classNode: t.Class) {\n  return !!classNode.decorators?.length;\n}\n\n/**\n * Given a class expression with method-level decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyMethodDecorators(\n  path: NodePath<t.ClassExpression>,\n  state: PluginPass,\n) {\n  if (!hasMethodDecorators(path.node.body.body)) return;\n\n  return applyTargetDecorators(\n    path,\n    state,\n    // @ts-expect-error ClassAccessorProperty is not supported in legacy decorator\n    path.node.body.body,\n  );\n}\n\nfunction hasMethodDecorators(\n  body: t.ClassBody[\"body\"] | t.ObjectExpression[\"properties\"],\n) {\n  return body.some(\n    node =>\n      // @ts-expect-error decorators not in SpreadElement/StaticBlock\n      node.decorators?.length,\n  );\n}\n\n/**\n * Given an object expression with property decorators, create a new expression\n * with the proper decorated behavior.\n */\nfunction applyObjectDecorators(\n  path: NodePath<t.ObjectExpression>,\n  state: PluginPass,\n) {\n  if (!hasMethodDecorators(path.node.properties)) return;\n\n  return applyTargetDecorators(\n    path,\n    state,\n    path.node.properties.filter(\n      (prop): prop is t.ObjectMember => prop.type !== \"SpreadElement\",\n    ),\n  );\n}\n\n/**\n * A helper to pull out property decorators into a sequence expression.\n */\nfunction applyTargetDecorators(\n  path: NodePath<t.ClassExpression | t.ObjectExpression>,\n  state: PluginPass,\n  decoratedProps: (t.ObjectMember | ClassDecoratableElement)[],\n) {\n  const name = path.scope.generateDeclaredUidIdentifier(\n    path.isClass() ? \"class\" : \"obj\",\n  );\n\n  const exprs = decoratedProps.reduce(function (acc, node) {\n    let decorators: t.Decorator[] = [];\n    if (node.decorators != null) {\n      decorators = node.decorators;\n      node.decorators = null;\n    }\n\n    if (decorators.length === 0) return acc;\n\n    if (\n      // @ts-expect-error computed is not in ClassPrivateProperty\n      node.computed\n    ) {\n      throw path.buildCodeFrameError(\n        \"Computed method/property decorators are not yet supported.\",\n      );\n    }\n\n    const property: t.Literal = t.isLiteral(node.key)\n      ? node.key\n      : t.stringLiteral(\n          // @ts-expect-error: should we handle ClassPrivateProperty?\n          node.key.name,\n        );\n\n    const target =\n      path.isClass() && !(node as ClassDecoratableElement).static\n        ? buildClassPrototype({\n            CLASS_REF: name,\n          }).expression\n        : name;\n\n    if (t.isClassProperty(node, { static: false })) {\n      const descriptor = path.scope.generateDeclaredUidIdentifier(\"descriptor\");\n\n      const initializer = node.value\n        ? t.functionExpression(\n            null,\n            [],\n            t.blockStatement([t.returnStatement(node.value)]),\n          )\n        : t.nullLiteral();\n\n      node.value = t.callExpression(\n        state.addHelper(\"initializerWarningHelper\"),\n        [descriptor, t.thisExpression()],\n      );\n\n      WARNING_CALLS.add(node.value);\n\n      acc.push(\n        t.assignmentExpression(\n          \"=\",\n          t.cloneNode(descriptor),\n          t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n            t.cloneNode(target),\n            t.cloneNode(property),\n            t.arrayExpression(\n              decorators.map(dec => t.cloneNode(dec.expression)),\n            ),\n            t.objectExpression([\n              t.objectProperty(\n                t.identifier(\"configurable\"),\n                t.booleanLiteral(true),\n              ),\n              t.objectProperty(\n                t.identifier(\"enumerable\"),\n                t.booleanLiteral(true),\n              ),\n              t.objectProperty(\n                t.identifier(\"writable\"),\n                t.booleanLiteral(true),\n              ),\n              t.objectProperty(t.identifier(\"initializer\"), initializer),\n            ]),\n          ]),\n        ),\n      );\n    } else {\n      acc.push(\n        t.callExpression(state.addHelper(\"applyDecoratedDescriptor\"), [\n          t.cloneNode(target),\n          t.cloneNode(property),\n          t.arrayExpression(decorators.map(dec => t.cloneNode(dec.expression))),\n          t.isObjectProperty(node) || t.isClassProperty(node, { static: true })\n            ? buildGetObjectInitializer({\n                TEMP: path.scope.generateDeclaredUidIdentifier(\"init\"),\n                TARGET: t.cloneNode(target),\n                PROPERTY: t.cloneNode(property),\n              }).expression\n            : buildGetDescriptor({\n                TARGET: t.cloneNode(target),\n                PROPERTY: t.cloneNode(property),\n              }).expression,\n          t.cloneNode(target),\n        ]),\n      );\n    }\n\n    return acc;\n  }, []);\n\n  return t.sequenceExpression([\n    t.assignmentExpression(\"=\", t.cloneNode(name), path.node),\n    t.sequenceExpression(exprs),\n    t.cloneNode(name),\n  ]);\n}\n\nfunction decoratedClassToExpression({ node, scope }: NodePath<t.Class>) {\n  if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {\n    return;\n  }\n\n  const ref = node.id\n    ? t.cloneNode(node.id)\n    : scope.generateUidIdentifier(\"class\");\n\n  return t.variableDeclaration(\"let\", [\n    t.variableDeclarator(ref, t.toExpression(node)),\n  ]);\n}\n\nconst visitor: Visitor<PluginPass> = {\n  ExportDefaultDeclaration(path) {\n    const decl = path.get(\"declaration\");\n    if (!decl.isClassDeclaration()) return;\n\n    const replacement = decoratedClassToExpression(decl);\n    if (replacement) {\n      const [varDeclPath] = path.replaceWithMultiple([\n        replacement,\n        t.exportNamedDeclaration(null, [\n          t.exportSpecifier(\n            // @ts-expect-error todo(flow->ts) might be add more specific return type for decoratedClassToExpression\n            t.cloneNode(replacement.declarations[0].id),\n            t.identifier(\"default\"),\n          ),\n        ]),\n      ]);\n\n      if (!decl.node.id) {\n        path.scope.registerDeclaration(varDeclPath);\n      }\n    }\n  },\n  ClassDeclaration(path) {\n    const replacement = decoratedClassToExpression(path);\n    if (replacement) {\n      const [newPath] = path.replaceWith(replacement);\n\n      const decl = newPath.get(\"declarations.0\");\n      const id = decl.node.id as t.Identifier;\n\n      // TODO: Maybe add this logic to @babel/traverse\n      const binding = path.scope.getOwnBinding(id.name);\n      binding.identifier = id;\n      binding.path = decl;\n    }\n  },\n  ClassExpression(path, state) {\n    // Create a replacement for the class node if there is one. We do one pass to replace classes with\n    // class decorators, and a second pass to process method decorators.\n    const decoratedClass =\n      applyEnsureOrdering(path) ||\n      applyClassDecorators(path) ||\n      applyMethodDecorators(path, state);\n\n    if (decoratedClass) path.replaceWith(decoratedClass);\n  },\n  ObjectExpression(path, state) {\n    const decoratedObject =\n      applyEnsureOrdering(path) || applyObjectDecorators(path, state);\n\n    if (decoratedObject) path.replaceWith(decoratedObject);\n  },\n\n  AssignmentExpression(path, state) {\n    if (!WARNING_CALLS.has(path.node.right)) return;\n\n    path.replaceWith(\n      t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n        // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n        t.cloneNode(path.get(\"left.object\").node),\n        t.stringLiteral(\n          // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n          path.get(\"left.property\").node.name ||\n            // @ts-expect-error todo(flow->ts) typesafe NodePath.get\n            path.get(\"left.property\").node.value,\n        ),\n        // @ts-expect-error todo(flow->ts)\n        t.cloneNode(path.get(\"right.arguments\")[0].node),\n        // @ts-expect-error todo(flow->ts)\n        t.cloneNode(path.get(\"right.arguments\")[1].node),\n      ]),\n    );\n  },\n\n  CallExpression(path, state) {\n    if (path.node.arguments.length !== 3) return;\n    if (!WARNING_CALLS.has(path.node.arguments[2])) return;\n\n    // If the class properties plugin isn't enabled, this line will add an unused helper\n    // to the code. It's not ideal, but it's ok since the configuration is not valid anyway.\n    // @ts-expect-error todo(flow->ts) check that `callee` is Identifier\n    if (path.node.callee.name !== state.addHelper(\"defineProperty\").name) {\n      return;\n    }\n\n    path.replaceWith(\n      t.callExpression(state.addHelper(\"initializerDefineProperty\"), [\n        t.cloneNode(path.get(\"arguments\")[0].node),\n        t.cloneNode(path.get(\"arguments\")[1].node),\n        // @ts-expect-error todo(flow->ts)\n        t.cloneNode(path.get(\"arguments.2.arguments\")[0].node),\n        // @ts-expect-error todo(flow->ts)\n        t.cloneNode(path.get(\"arguments.2.arguments\")[1].node),\n      ]),\n    );\n  },\n};\n\nexport default visitor;\n","/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxDecorators from \"@babel/plugin-syntax-decorators\";\nimport {\n  createClassFeaturePlugin,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\nimport legacyVisitor from \"./transformer-legacy.ts\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-decorators\";\n\ninterface Options extends SyntaxOptions {\n  /** @deprecated use `constantSuper` assumption instead. Only supported in 2021-12 version. */\n  loose?: boolean;\n}\n\nexport type { Options };\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  // Options are validated in @babel/plugin-syntax-decorators\n  if (!process.env.BABEL_8_BREAKING) {\n    // eslint-disable-next-line no-var\n    var { legacy } = options;\n  }\n  const { version } = options;\n\n  if (\n    process.env.BABEL_8_BREAKING\n      ? version === \"legacy\"\n      : legacy || version === \"legacy\"\n  ) {\n    return {\n      name: \"proposal-decorators\",\n      inherits: syntaxDecorators,\n      visitor: legacyVisitor,\n    };\n  } else if (\n    !version ||\n    version === \"2018-09\" ||\n    version === \"2021-12\" ||\n    version === \"2022-03\" ||\n    version === \"2023-01\" ||\n    version === \"2023-05\" ||\n    version === \"2023-11\"\n  ) {\n    api.assertVersion(REQUIRED_VERSION(\"^7.0.2\"));\n    return createClassFeaturePlugin({\n      name: \"proposal-decorators\",\n\n      api,\n      feature: FEATURES.decorators,\n      inherits: syntaxDecorators,\n      // @ts-expect-error version must not be \"legacy\" here\n      decoratorVersion: version,\n      // loose: options.loose, Not supported\n    });\n  } else {\n    throw new Error(\n      \"The '.version' option must be one of 'legacy', '2023-11', '2023-05', '2023-01', '2022-03', or '2021-12'.\",\n    );\n  }\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, template, traverse } from \"@babel/core\";\nimport type { NodePath, Visitor, PluginPass } from \"@babel/core\";\n\nconst enum USING_KIND {\n  NORMAL,\n  AWAIT,\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(\"^7.22.0\"));\n\n  const TOP_LEVEL_USING = new Map<t.Node, USING_KIND>();\n\n  function isUsingDeclaration(node: t.Node): node is t.VariableDeclaration {\n    if (!t.isVariableDeclaration(node)) return false;\n    return (\n      node.kind === \"using\" ||\n      node.kind === \"await using\" ||\n      TOP_LEVEL_USING.has(node)\n    );\n  }\n\n  const transformUsingDeclarationsVisitor: Visitor<PluginPass> = {\n    ForOfStatement(path: NodePath<t.ForOfStatement>) {\n      const { left } = path.node;\n      if (!isUsingDeclaration(left)) return;\n\n      const { id } = left.declarations[0];\n      const tmpId = path.scope.generateUidIdentifierBasedOnNode(id);\n      left.declarations[0].id = tmpId;\n      left.kind = \"const\";\n\n      path.ensureBlock();\n      path.node.body.body.unshift(\n        t.variableDeclaration(\"using\", [\n          t.variableDeclarator(id, t.cloneNode(tmpId)),\n        ]),\n      );\n    },\n    \"BlockStatement|StaticBlock\"(\n      path: NodePath<t.BlockStatement | t.StaticBlock>,\n      state,\n    ) {\n      if (process.env.BABEL_8_BREAKING || state.availableHelper(\"usingCtx\")) {\n        let ctx: t.Identifier | null = null;\n        let needsAwait = false;\n\n        for (const node of path.node.body) {\n          if (!isUsingDeclaration(node)) continue;\n          ctx ??= path.scope.generateUidIdentifier(\"usingCtx\");\n          const isAwaitUsing =\n            node.kind === \"await using\" ||\n            TOP_LEVEL_USING.get(node) === USING_KIND.AWAIT;\n          needsAwait ||= isAwaitUsing;\n\n          if (!TOP_LEVEL_USING.delete(node)) {\n            node.kind = \"const\";\n          }\n          for (const decl of node.declarations) {\n            decl.init = t.callExpression(\n              t.memberExpression(\n                t.cloneNode(ctx),\n                isAwaitUsing ? t.identifier(\"a\") : t.identifier(\"u\"),\n              ),\n              [decl.init],\n            );\n          }\n        }\n        if (!ctx) return;\n\n        const disposeCall = t.callExpression(\n          t.memberExpression(t.cloneNode(ctx), t.identifier(\"d\")),\n          [],\n        );\n\n        const replacement = template.statement.ast`\n        try {\n          var ${t.cloneNode(ctx)} = ${state.addHelper(\"usingCtx\")}();\n          ${path.node.body}\n        } catch (_) {\n          ${t.cloneNode(ctx)}.e = _;\n        } finally {\n          ${needsAwait ? t.awaitExpression(disposeCall) : disposeCall}\n        }\n      ` as t.TryStatement;\n\n        t.inherits(replacement, path.node);\n\n        const { parentPath } = path;\n        if (\n          parentPath.isFunction() ||\n          parentPath.isTryStatement() ||\n          parentPath.isCatchClause()\n        ) {\n          path.replaceWith(t.blockStatement([replacement]));\n        } else if (path.isStaticBlock()) {\n          path.node.body = [replacement];\n        } else {\n          path.replaceWith(replacement);\n        }\n      } else {\n        let stackId: t.Identifier | null = null;\n        let needsAwait = false;\n\n        for (const node of path.node.body) {\n          if (!isUsingDeclaration(node)) continue;\n          stackId ??= path.scope.generateUidIdentifier(\"stack\");\n          const isAwaitUsing =\n            node.kind === \"await using\" ||\n            TOP_LEVEL_USING.get(node) === USING_KIND.AWAIT;\n          needsAwait ||= isAwaitUsing;\n\n          if (!TOP_LEVEL_USING.delete(node)) {\n            node.kind = \"const\";\n          }\n          node.declarations.forEach(decl => {\n            const args = [t.cloneNode(stackId), decl.init];\n            if (isAwaitUsing) args.push(t.booleanLiteral(true));\n            decl.init = t.callExpression(state.addHelper(\"using\"), args);\n          });\n        }\n        if (!stackId) return;\n\n        const errorId = path.scope.generateUidIdentifier(\"error\");\n        const hasErrorId = path.scope.generateUidIdentifier(\"hasError\");\n\n        let disposeCall: t.Expression = t.callExpression(\n          state.addHelper(\"dispose\"),\n          [t.cloneNode(stackId), t.cloneNode(errorId), t.cloneNode(hasErrorId)],\n        );\n        if (needsAwait) disposeCall = t.awaitExpression(disposeCall);\n\n        const replacement = template.statement.ast`\n        try {\n          var ${stackId} = [];\n          ${path.node.body}\n        } catch (_) {\n          var ${errorId} = _;\n          var ${hasErrorId} = true;\n        } finally {\n          ${disposeCall}\n        }\n      ` as t.TryStatement;\n\n        t.inherits(replacement.block, path.node);\n\n        const { parentPath } = path;\n        if (\n          parentPath.isFunction() ||\n          parentPath.isTryStatement() ||\n          parentPath.isCatchClause()\n        ) {\n          path.replaceWith(t.blockStatement([replacement]));\n        } else if (path.isStaticBlock()) {\n          path.node.body = [replacement];\n        } else {\n          path.replaceWith(replacement);\n        }\n      }\n    },\n    SwitchStatement(path, state) {\n      let ctx: t.Identifier | null = null;\n      let needsAwait = false;\n\n      const { cases } = path.node;\n      for (const c of cases) {\n        for (const stmt of c.consequent) {\n          if (isUsingDeclaration(stmt)) {\n            if (\n              !process.env.BABEL_8_BREAKING &&\n              !state.availableHelper(\"usingCtx\")\n            ) {\n              path.traverse({\n                VariableDeclaration(path) {\n                  const { node } = path;\n                  if (!isUsingDeclaration(node)) return;\n                  throw path.buildCodeFrameError(\n                    \"`using` declarations inside `switch` statements are not supported by your current `@babel/core` version, please update to a more recent one\",\n                  );\n                },\n              });\n            }\n\n            ctx ??= path.scope.generateUidIdentifier(\"usingCtx\");\n\n            const isAwaitUsing = stmt.kind === \"await using\";\n            needsAwait ||= isAwaitUsing;\n\n            stmt.kind = \"const\";\n            for (const decl of stmt.declarations) {\n              decl.init = t.callExpression(\n                t.memberExpression(\n                  t.cloneNode(ctx),\n                  isAwaitUsing ? t.identifier(\"a\") : t.identifier(\"u\"),\n                ),\n                [decl.init],\n              );\n            }\n          }\n        }\n      }\n      if (!ctx) return;\n\n      const disposeCall = t.callExpression(\n        t.memberExpression(t.cloneNode(ctx), t.identifier(\"d\")),\n        [],\n      );\n\n      const replacement = template.statement.ast`\n        try {\n          var ${t.cloneNode(ctx)} = ${state.addHelper(\"usingCtx\")}();\n          ${path.node}\n        } catch (_) {\n          ${t.cloneNode(ctx)}.e = _;\n        } finally {\n          ${needsAwait ? t.awaitExpression(disposeCall) : disposeCall}\n        }\n      ` as t.TryStatement;\n\n      t.inherits(replacement, path.node);\n\n      path.replaceWith(replacement);\n    },\n  };\n\n  const transformUsingDeclarationsVisitorSkipFn: Visitor<PluginPass> =\n    traverse.visitors.merge([\n      transformUsingDeclarationsVisitor,\n      {\n        Function(path) {\n          path.skip();\n        },\n      },\n    ]);\n\n  return {\n    name: \"proposal-explicit-resource-management\",\n    manipulateOptions: (_, p) => p.plugins.push(\"explicitResourceManagement\"),\n\n    visitor: traverse.visitors.merge([\n      transformUsingDeclarationsVisitor,\n      {\n        // To transform top-level using declarations, we must wrap the\n        // module body in a block after hoisting all the exports and imports.\n        // This might cause some variables to be `undefined` rather than TDZ.\n        Program(path) {\n          TOP_LEVEL_USING.clear();\n\n          if (path.node.sourceType !== \"module\") return;\n          if (!path.node.body.some(isUsingDeclaration)) return;\n\n          const innerBlockBody = [];\n          for (const stmt of path.get(\"body\")) {\n            if (stmt.isFunctionDeclaration() || stmt.isImportDeclaration()) {\n              continue;\n            }\n\n            let node: t.Statement | t.Declaration = stmt.node;\n            let shouldRemove = true;\n\n            if (stmt.isExportDefaultDeclaration()) {\n              let { declaration } = stmt.node;\n              let varId;\n              if (t.isClassDeclaration(declaration)) {\n                varId = declaration.id;\n                declaration.id = null;\n                declaration = t.toExpression(declaration);\n              } else if (!t.isExpression(declaration)) {\n                continue;\n              }\n\n              varId ??= path.scope.generateUidIdentifier(\"_default\");\n              innerBlockBody.push(\n                t.variableDeclaration(\"var\", [\n                  t.variableDeclarator(varId, declaration),\n                ]),\n              );\n              stmt.replaceWith(\n                t.exportNamedDeclaration(null, [\n                  t.exportSpecifier(\n                    t.cloneNode(varId),\n                    t.identifier(\"default\"),\n                  ),\n                ]),\n              );\n              continue;\n            }\n\n            if (stmt.isExportNamedDeclaration()) {\n              node = stmt.node.declaration;\n              if (!node || t.isFunction(node)) continue;\n\n              stmt.replaceWith(\n                t.exportNamedDeclaration(\n                  null,\n                  Object.keys(t.getOuterBindingIdentifiers(node, false)).map(\n                    id => t.exportSpecifier(t.identifier(id), t.identifier(id)),\n                  ),\n                ),\n              );\n              shouldRemove = false;\n            } else if (stmt.isExportDeclaration()) {\n              continue;\n            }\n\n            if (t.isClassDeclaration(node)) {\n              const { id } = node;\n              node.id = null;\n              innerBlockBody.push(\n                t.variableDeclaration(\"var\", [\n                  t.variableDeclarator(id, t.toExpression(node)),\n                ]),\n              );\n            } else if (t.isVariableDeclaration(node)) {\n              if (node.kind === \"using\") {\n                TOP_LEVEL_USING.set(stmt.node, USING_KIND.NORMAL);\n              } else if (node.kind === \"await using\") {\n                TOP_LEVEL_USING.set(stmt.node, USING_KIND.AWAIT);\n              }\n              node.kind = \"var\";\n              innerBlockBody.push(node);\n            } else {\n              innerBlockBody.push(stmt.node);\n            }\n\n            if (shouldRemove) stmt.remove();\n          }\n\n          path.pushContainer(\"body\", t.blockStatement(innerBlockBody));\n        },\n        // We must transform `await using` in async functions before that\n        // async-to-generator will transform `await` expressions into `yield`\n        Function(path, state) {\n          if (path.node.async) {\n            path.traverse(transformUsingDeclarationsVisitorSkipFn, state);\n          }\n        },\n      },\n    ]),\n  };\n});\n","/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  createClassFeaturePlugin,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createClassFeaturePlugin({\n    name: \"transform-class-properties\",\n\n    api,\n    feature: FEATURES.fields,\n    loose: options.loose,\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-ignore(Babel 7 vs Babel 8) These plugins have been removed\n        parserOpts.plugins.push(\"classProperties\", \"classPrivateProperties\");\n      }\n    },\n  });\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport type { Scope } from \"@babel/core\";\n\nimport {\n  enableFeature,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\n/**\n * Generate a uid that is not in `denyList`\n *\n * @param {Scope} scope\n * @param {Set<string>} denyList a deny list that the generated uid should avoid\n * @returns\n */\nfunction generateUid(scope: Scope, denyList: Set<string>) {\n  const name = \"\";\n  let uid;\n  let i = 1;\n  do {\n    uid = `_${name}`;\n    if (i > 1) uid += i;\n    i++;\n  } while (denyList.has(uid));\n  return uid;\n}\n\nexport default declare(({ types: t, template, assertVersion }) => {\n  assertVersion(REQUIRED_VERSION(\"^7.12.0\"));\n\n  return {\n    name: \"transform-class-static-block\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"classStaticBlock\"),\n\n    pre() {\n      // Enable this in @babel/helper-create-class-features-plugin, so that it\n      // can be handled by the private fields and methods transform.\n      enableFeature(this.file, FEATURES.staticBlocks, /* loose */ false);\n    },\n\n    visitor: {\n      // Run on ClassBody and not on class so that if @babel/helper-create-class-features-plugin\n      // is enabled it can generate optimized output without passing from the intermediate\n      // private fields representation.\n      ClassBody(classBody) {\n        const { scope } = classBody;\n        const privateNames = new Set<string>();\n        const body = classBody.get(\"body\");\n        for (const path of body) {\n          if (path.isPrivate()) {\n            privateNames.add(path.get(\"key.id\").node.name);\n          }\n        }\n        for (const path of body) {\n          if (!path.isStaticBlock()) continue;\n          const staticBlockPrivateId = generateUid(scope, privateNames);\n          privateNames.add(staticBlockPrivateId);\n          const staticBlockRef = t.privateName(\n            t.identifier(staticBlockPrivateId),\n          );\n\n          let replacement;\n          const blockBody = path.node.body;\n          // We special-case the single expression case to avoid the iife, since\n          // it's common.\n          if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {\n            replacement = t.inheritsComments(\n              blockBody[0].expression,\n              blockBody[0],\n            );\n          } else {\n            replacement = template.expression.ast`(() => { ${blockBody} })()`;\n          }\n\n          path.replaceWith(\n            t.classPrivateProperty(\n              staticBlockRef,\n              replacement,\n              [],\n              /* static */ true,\n            ),\n          );\n        }\n      },\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\n/**\n * Given a bigIntLiteral or NumericLiteral, remove numeric\n * separator `_` from its raw representation\n *\n * @param {NodePath<BigIntLiteral | NumericLiteral>} { node }: A Babel AST node path\n */\nfunction remover({ node }: NodePath<t.BigIntLiteral | t.NumericLiteral>) {\n  const { extra } = node;\n  // @ts-expect-error todo(flow->ts)\n  if (extra?.raw?.includes(\"_\")) {\n    // @ts-expect-error todo(flow->ts)\n    extra.raw = extra.raw.replace(/_/g, \"\");\n  }\n}\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-numeric-separator\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"numericSeparator\"),\n\n    visitor: {\n      NumericLiteral: remover,\n      BigIntLiteral: remover,\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-logical-assignment-operators\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"logicalAssignment\"),\n\n    visitor: {\n      AssignmentExpression(path) {\n        const { node, scope } = path;\n        const { operator, left, right } = node;\n        const operatorTrunc = operator.slice(0, -1);\n        if (!t.LOGICAL_OPERATORS.includes(operatorTrunc)) {\n          return;\n        }\n\n        const lhs = t.cloneNode(left) as t.Identifier | t.MemberExpression;\n        if (t.isMemberExpression(left)) {\n          const { object, property, computed } = left;\n          const memo = scope.maybeGenerateMemoised(object);\n          if (memo) {\n            left.object = memo;\n            (lhs as t.MemberExpression).object = t.assignmentExpression(\n              \"=\",\n              t.cloneNode(memo),\n              // object must not be Super when `memo` is an identifier\n              // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n              object as t.Expression,\n            );\n          }\n\n          if (computed) {\n            const memo = scope.maybeGenerateMemoised(property);\n            if (memo) {\n              left.property = memo;\n              (lhs as t.MemberExpression).property = t.assignmentExpression(\n                \"=\",\n                t.cloneNode(memo),\n                // @ts-expect-error todo(flow->ts): property can be t.PrivateName\n                property,\n              );\n            }\n          }\n        }\n\n        path.replaceWith(\n          t.logicalExpression(\n            // @ts-expect-error operatorTrunc has been tested by t.LOGICAL_OPERATORS\n            operatorTrunc,\n            lhs,\n            t.assignmentExpression(\"=\", left, right),\n          ),\n        );\n      },\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t, template } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, { loose = false }: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n  const noDocumentAll = api.assumption(\"noDocumentAll\") ?? loose;\n  const pureGetters = api.assumption(\"pureGetters\") ?? false;\n\n  return {\n    name: \"transform-nullish-coalescing-operator\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"nullishCoalescingOperator\"),\n\n    visitor: {\n      LogicalExpression(path) {\n        const { node, scope } = path;\n        if (node.operator !== \"??\") {\n          return;\n        }\n\n        let ref;\n        let assignment;\n        // skip creating extra reference when `left` is pure\n        if (\n          (pureGetters &&\n            scope.path.isPattern() &&\n            t.isMemberExpression(node.left) &&\n            !node.left.computed &&\n            t.isIdentifier(node.left.object) &&\n            t.isIdentifier(node.left.property)) ||\n          (t.isIdentifier(node.left) &&\n            (pureGetters ||\n              // globalThis\n              scope.hasBinding(node.left.name)))\n        ) {\n          ref = node.left;\n          assignment = t.cloneNode(node.left);\n        } else if (scope.path.isPattern()) {\n          // Replace `function (a, x = a.b ?? c) {}` to `function (a, x = (() => a.b ?? c)() ){}`\n          // so the temporary variable can be injected in correct scope\n          path.replaceWith(template.statement.ast`(() => ${path.node})()`);\n          // The injected nullish expression will be queued and eventually transformed when visited\n          return;\n        } else {\n          ref = scope.generateUidIdentifierBasedOnNode(node.left);\n          scope.push({ id: t.cloneNode(ref) });\n          assignment = t.assignmentExpression(\"=\", ref, node.left);\n        }\n\n        path.replaceWith(\n          t.conditionalExpression(\n            // We cannot use `!= null` in spec mode because\n            // `document.all == null` and `document.all` is not \"nullish\".\n            noDocumentAll\n              ? t.binaryExpression(\"!=\", assignment, t.nullLiteral())\n              : t.logicalExpression(\n                  \"&&\",\n                  t.binaryExpression(\"!==\", assignment, t.nullLiteral()),\n                  t.binaryExpression(\n                    \"!==\",\n                    t.cloneNode(ref),\n                    scope.buildUndefinedNode(),\n                  ),\n                ),\n            t.cloneNode(ref),\n            node.right,\n          ),\n        );\n      },\n    },\n  };\n});\n","import type { NodePath } from \"@babel/core\";\nimport { isTransparentExprWrapper } from \"@babel/helper-skip-transparent-expression-wrappers\";\n/**\n * Test if a NodePath will be cast to boolean when evaluated.\n * It respects transparent expression wrappers defined in\n * \"@babel/helper-skip-transparent-expression-wrappers\"\n *\n * @example\n * // returns true\n * const nodePathADotB = NodePath(\"if (a.b) {}\").get(\"test\"); // a.b\n * willPathCastToBoolean(nodePathADotB)\n * @example\n * // returns false\n * willPathCastToBoolean(NodePath(\"a.b\"))\n * @param {NodePath} path\n * @returns {boolean}\n */\nexport function willPathCastToBoolean(path: NodePath): boolean {\n  const maybeWrapped = findOutermostTransparentParent(path);\n  const { node, parentPath } = maybeWrapped;\n  if (parentPath.isLogicalExpression()) {\n    const { operator, right } = parentPath.node;\n    if (\n      operator === \"&&\" ||\n      operator === \"||\" ||\n      (operator === \"??\" && node === right)\n    ) {\n      return willPathCastToBoolean(parentPath);\n    }\n  }\n  if (parentPath.isSequenceExpression()) {\n    const { expressions } = parentPath.node;\n    if (expressions[expressions.length - 1] === node) {\n      return willPathCastToBoolean(parentPath);\n    } else {\n      // if it is in the middle of a sequence expression, we don't\n      // care the return value so just cast to boolean for smaller\n      // output\n      return true;\n    }\n  }\n  return (\n    parentPath.isConditional({ test: node }) ||\n    parentPath.isUnaryExpression({ operator: \"!\" }) ||\n    parentPath.isLoop({ test: node })\n  );\n}\n\n/**\n * Return the outermost transparent expression wrapper of a given path,\n * otherwise returns path itself.\n * @example\n * const nodePathADotB = NodePath(\"(a.b as any)\").get(\"expression\"); // a.b\n * // returns NodePath(\"(a.b as any)\")\n * findOutermostTransparentParent(nodePathADotB);\n * @param {NodePath} path\n * @returns {NodePath}\n */\nexport function findOutermostTransparentParent(path: NodePath): NodePath {\n  let maybeWrapped = path;\n  path.findParent(p => {\n    if (!isTransparentExprWrapper(p.node)) return true;\n    maybeWrapped = p;\n  });\n  return maybeWrapped;\n}\n","import { types as t, template, type NodePath } from \"@babel/core\";\nimport {\n  skipTransparentExprWrapperNodes,\n  skipTransparentExprWrappers,\n} from \"@babel/helper-skip-transparent-expression-wrappers\";\nimport {\n  willPathCastToBoolean,\n  findOutermostTransparentParent,\n} from \"./util.ts\";\n\n// TODO(Babel 9): Use .at(-1)\nconst last = <T>(arr: T[]) => arr[arr.length - 1];\n\nfunction isSimpleMemberExpression(\n  expression: t.Expression | t.Super,\n): expression is t.Identifier | t.Super | t.MemberExpression {\n  expression = skipTransparentExprWrapperNodes(expression);\n  return (\n    t.isIdentifier(expression) ||\n    t.isSuper(expression) ||\n    (t.isMemberExpression(expression) &&\n      !expression.computed &&\n      isSimpleMemberExpression(expression.object))\n  );\n}\n\n/**\n * Test if a given optional chain `path` needs to be memoized\n * @param {NodePath} path\n * @returns {boolean}\n */\nfunction needsMemoize(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n) {\n  let optionalPath: NodePath = path;\n  const { scope } = path;\n  while (\n    optionalPath.isOptionalMemberExpression() ||\n    optionalPath.isOptionalCallExpression()\n  ) {\n    const { node } = optionalPath;\n    const childPath = skipTransparentExprWrappers(\n      optionalPath.isOptionalMemberExpression()\n        ? optionalPath.get(\"object\")\n        : optionalPath.get(\"callee\"),\n    );\n    if (node.optional) {\n      return !scope.isStatic(childPath.node);\n    }\n\n    optionalPath = childPath;\n  }\n}\n\nconst NULLISH_CHECK = template.expression(\n  `%%check%% === null || %%ref%% === void 0`,\n);\nconst NULLISH_CHECK_NO_DDA = template.expression(`%%check%% == null`);\nconst NULLISH_CHECK_NEG = template.expression(\n  `%%check%% !== null && %%ref%% !== void 0`,\n);\nconst NULLISH_CHECK_NO_DDA_NEG = template.expression(`%%check%% != null`);\n\ninterface OptionalChainAssumptions {\n  pureGetters: boolean;\n  noDocumentAll: boolean;\n}\n\nexport function transformOptionalChain(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n  { pureGetters, noDocumentAll }: OptionalChainAssumptions,\n  replacementPath: NodePath<t.Expression>,\n  ifNullish: t.Expression,\n  wrapLast?: (value: t.Expression) => t.Expression,\n) {\n  const { scope } = path;\n\n  // Replace `function (a, x = a.b?.c) {}` to `function (a, x = (() => a.b?.c)() ){}`\n  // so the temporary variable can be injected in correct scope\n  if (scope.path.isPattern() && needsMemoize(path)) {\n    replacementPath.replaceWith(\n      template.expression.ast`(() => ${replacementPath.node})()`,\n    );\n    // The injected optional chain will be queued and eventually transformed when visited\n    return;\n  }\n\n  const optionals = [];\n\n  let optionalPath = path;\n  while (\n    optionalPath.isOptionalMemberExpression() ||\n    optionalPath.isOptionalCallExpression()\n  ) {\n    const { node } = optionalPath;\n    if (node.optional) {\n      optionals.push(node);\n    }\n    if (optionalPath.isOptionalMemberExpression()) {\n      // @ts-expect-error todo(flow->ts) avoid changing more type\n      optionalPath.node.type = \"MemberExpression\";\n      // @ts-expect-error todo(flow->ts)\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"object\"));\n    } else if (optionalPath.isOptionalCallExpression()) {\n      // @ts-expect-error todo(flow->ts) avoid changing more type\n      optionalPath.node.type = \"CallExpression\";\n      // @ts-expect-error todo(flow->ts)\n      optionalPath = skipTransparentExprWrappers(optionalPath.get(\"callee\"));\n    }\n  }\n\n  if (optionals.length === 0) {\n    // Malformed AST: there was an OptionalMemberExpression node\n    // with no actual optional elements.\n    return;\n  }\n\n  const checks = [];\n\n  let tmpVar;\n\n  for (let i = optionals.length - 1; i >= 0; i--) {\n    const node = optionals[i] as unknown as\n      | t.MemberExpression\n      | t.CallExpression;\n\n    const isCall = t.isCallExpression(node);\n\n    const chainWithTypes = isCall\n      ? // V8 intrinsics must not be an optional call\n        (node.callee as t.Expression)\n      : node.object;\n    const chain = skipTransparentExprWrapperNodes(chainWithTypes);\n\n    let ref;\n    let check;\n    if (isCall && t.isIdentifier(chain, { name: \"eval\" })) {\n      check = ref = chain;\n      // `eval?.()` is an indirect eval call transformed to `(0,eval)()`\n      node.callee = t.sequenceExpression([t.numericLiteral(0), ref]);\n    } else if (pureGetters && isCall && isSimpleMemberExpression(chain)) {\n      // If we assume getters are pure (avoiding a Function#call) and we are at the call,\n      // we can avoid a needless memoize. We only do this if the callee is a simple member\n      // expression, to avoid multiple calls to nested call expressions.\n      check = ref = node.callee;\n    } else if (scope.isStatic(chain)) {\n      check = ref = chainWithTypes;\n    } else {\n      // We cannot reuse the tmpVar for calls, because we need to\n      // store both the method and the receiver.\n      if (!tmpVar || isCall) {\n        tmpVar = scope.generateUidIdentifierBasedOnNode(chain);\n        scope.push({ id: t.cloneNode(tmpVar) });\n      }\n      ref = tmpVar;\n      check = t.assignmentExpression(\n        \"=\",\n        t.cloneNode(tmpVar),\n        // Here `chainWithTypes` MUST NOT be cloned because it could be\n        // updated when generating the memoised context of a call\n        // expression. It must be an Expression when `ref` is an identifier\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        chainWithTypes as t.Expression,\n      );\n\n      if (isCall) {\n        node.callee = ref;\n      } else {\n        node.object = ref;\n      }\n    }\n\n    // Ensure call expressions have the proper `this`\n    // `foo.bar()` has context `foo`.\n    if (isCall && t.isMemberExpression(chain)) {\n      if (pureGetters && isSimpleMemberExpression(chain)) {\n        // To avoid a Function#call, we can instead re-grab the property from the context object.\n        // `a.?b.?()` translates roughly to `_a.b != null && _a.b()`\n        node.callee = chainWithTypes;\n      } else {\n        // Otherwise, we need to memoize the context object, and change the call into a Function#call.\n        // `a.?b.?()` translates roughly to `(_b = _a.b) != null && _b.call(_a)`\n        const { object } = chain;\n        let context: t.Expression;\n        if (t.isSuper(object)) {\n          context = t.thisExpression();\n        } else {\n          const memoized = scope.maybeGenerateMemoised(object);\n          if (memoized) {\n            context = memoized;\n            chain.object = t.assignmentExpression(\"=\", memoized, object);\n          } else {\n            context = object;\n          }\n        }\n\n        node.arguments.unshift(t.cloneNode(context));\n        // @ts-expect-error node.callee can not be an V8IntrinsicIdentifier: V8 intrinsic is disallowed in optional chain\n        node.callee = t.memberExpression(node.callee, t.identifier(\"call\"));\n      }\n    }\n\n    const data = { check: t.cloneNode(check), ref: t.cloneNode(ref) };\n    // We make `ref` non-enumerable, so that @babel/template doesn't throw\n    // in the noDocumentAll template if it's not used.\n    Object.defineProperty(data, \"ref\", { enumerable: false });\n    checks.push(data);\n  }\n\n  let result = replacementPath.node;\n  if (wrapLast) result = wrapLast(result);\n\n  const ifNullishBoolean = t.isBooleanLiteral(ifNullish);\n  const ifNullishFalse = ifNullishBoolean && ifNullish.value === false;\n  const ifNullishVoid =\n    !ifNullishBoolean && t.isUnaryExpression(ifNullish, { operator: \"void\" });\n\n  const isEvaluationValueIgnored =\n    (t.isExpressionStatement(replacementPath.parent) &&\n      !replacementPath.isCompletionRecord()) ||\n    (t.isSequenceExpression(replacementPath.parent) &&\n      last(replacementPath.parent.expressions) !== replacementPath.node);\n\n  // prettier-ignore\n  const tpl = ifNullishFalse\n    ? (noDocumentAll ? NULLISH_CHECK_NO_DDA_NEG : NULLISH_CHECK_NEG)\n    : (noDocumentAll ? NULLISH_CHECK_NO_DDA : NULLISH_CHECK);\n  const logicalOp = ifNullishFalse ? \"&&\" : \"||\";\n\n  const check = checks\n    .map(tpl)\n    .reduce((expr, check) => t.logicalExpression(logicalOp, expr, check));\n\n  replacementPath.replaceWith(\n    ifNullishBoolean || (ifNullishVoid && isEvaluationValueIgnored)\n      ? t.logicalExpression(logicalOp, check, result)\n      : t.conditionalExpression(check, ifNullish, result),\n  );\n}\n\nexport function transform(\n  path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n  assumptions: OptionalChainAssumptions,\n) {\n  const { scope } = path;\n\n  // maybeWrapped points to the outermost transparent expression wrapper\n  // or the path itself\n  const maybeWrapped = findOutermostTransparentParent(path);\n  const { parentPath } = maybeWrapped;\n\n  if (parentPath.isUnaryExpression({ operator: \"delete\" })) {\n    transformOptionalChain(\n      path,\n      assumptions,\n      parentPath,\n      t.booleanLiteral(true),\n    );\n  } else {\n    let wrapLast;\n    if (\n      parentPath.isCallExpression({ callee: maybeWrapped.node }) &&\n      // note that the first condition must implies that `path.optional` is `true`,\n      // otherwise the parentPath should be an OptionalCallExpression\n      path.isOptionalMemberExpression()\n    ) {\n      // Ensure (a?.b)() has proper `this`\n      wrapLast = (replacement: t.MemberExpression) => {\n        // `(a?.b)()` to `(a == null ? undefined : a.b.bind(a))()`\n        // object must not be Super as super?.foo is invalid\n        // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n        const object = skipTransparentExprWrapperNodes(\n          replacement.object,\n        ) as t.Expression;\n        let baseRef: t.Expression;\n        if (!assumptions.pureGetters || !isSimpleMemberExpression(object)) {\n          // memoize the context object when getters are not always pure\n          // or the object is not a simple member expression\n          // `(a?.b.c)()` to `(a == null ? undefined : (_a$b = a.b).c.bind(_a$b))()`\n          baseRef = scope.maybeGenerateMemoised(object);\n          if (baseRef) {\n            replacement.object = t.assignmentExpression(\"=\", baseRef, object);\n          }\n        }\n        return t.callExpression(\n          t.memberExpression(replacement, t.identifier(\"bind\")),\n          [t.cloneNode(baseRef ?? object)],\n        );\n      };\n    }\n\n    transformOptionalChain(\n      path,\n      assumptions,\n      path,\n      willPathCastToBoolean(maybeWrapped)\n        ? t.booleanLiteral(false)\n        : scope.buildUndefinedNode(),\n      wrapLast,\n    );\n  }\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport { transform, transformOptionalChain } from \"./transform.ts\";\nimport type { NodePath, types as t } from \"@babel/core\";\n\nexport interface Options {\n  loose?: boolean;\n}\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { loose = false } = options;\n  const noDocumentAll = api.assumption(\"noDocumentAll\") ?? loose;\n  const pureGetters = api.assumption(\"pureGetters\") ?? loose;\n\n  return {\n    name: \"transform-optional-chaining\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"optionalChaining\"),\n\n    visitor: {\n      \"OptionalCallExpression|OptionalMemberExpression\"(\n        path: NodePath<t.OptionalCallExpression | t.OptionalMemberExpression>,\n      ) {\n        transform(path, { noDocumentAll, pureGetters });\n      },\n    },\n  };\n});\n\nexport { transform, transformOptionalChain };\n","/* eslint-disable @babel/development/plugin-name */\n\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  createClassFeaturePlugin,\n  FEATURES,\n} from \"@babel/helper-create-class-features-plugin\";\n\nexport interface Options {\n  loose?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return createClassFeaturePlugin({\n    name: \"transform-private-methods\",\n\n    api,\n    feature: FEATURES.privateMethods,\n    loose: options.loose,\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // @ts-ignore(Babel 7 vs Babel 8) This plugin has been removed\n        parserOpts.plugins.push(\"classPrivateMethods\");\n      }\n    },\n  });\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _helperPluginUtils = require(\"@babel/helper-plugin-utils\");\n\nvar _default = (0, _helperPluginUtils.declare)(api => {\n  api.assertVersion(7);\n  return {\n    name: \"syntax-json-strings\",\n\n    manipulateOptions(opts, parserOpts) {\n      parserOpts.plugins.push(\"jsonStrings\");\n    }\n\n  };\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _helperPluginUtils = require(\"@babel/helper-plugin-utils\");\n\nvar _default = (0, _helperPluginUtils.declare)(api => {\n  api.assertVersion(7);\n  return {\n    name: \"syntax-optional-catch-binding\",\n\n    manipulateOptions(opts, parserOpts) {\n      parserOpts.plugins.push(\"optionalCatchBinding\");\n    }\n\n  };\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _helperPluginUtils = require(\"@babel/helper-plugin-utils\");\n\nvar _default = (0, _helperPluginUtils.declare)(api => {\n  api.assertVersion(7);\n  return {\n    name: \"syntax-async-generators\",\n\n    manipulateOptions(opts, parserOpts) {\n      parserOpts.plugins.push(\"asyncGenerators\");\n    }\n\n  };\n});\n\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _helperPluginUtils = require(\"@babel/helper-plugin-utils\");\n\nvar _default = (0, _helperPluginUtils.declare)(api => {\n  api.assertVersion(7);\n  return {\n    name: \"syntax-object-rest-spread\",\n\n    manipulateOptions(opts, parserOpts) {\n      parserOpts.plugins.push(\"objectRestSpread\");\n    }\n\n  };\n});\n\nexports.default = _default;","import { declare } from \"@babel/helper-plugin-utils\";\nimport { types as t } from \"@babel/core\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"transform-export-namespace-from\",\n    manipulateOptions: process.env.BABEL_8_BREAKING\n      ? undefined\n      : (_, parser) => parser.plugins.push(\"exportNamespaceFrom\"),\n\n    visitor: {\n      ExportNamedDeclaration(path) {\n        const { node, scope } = path;\n        const { specifiers } = node;\n\n        const index = t.isExportDefaultSpecifier(specifiers[0]) ? 1 : 0;\n        if (!t.isExportNamespaceSpecifier(specifiers[index])) return;\n\n        const nodes = [];\n\n        if (index === 1) {\n          nodes.push(\n            t.exportNamedDeclaration(null, [specifiers.shift()], node.source),\n          );\n        }\n\n        const specifier = specifiers.shift();\n        const { exported } = specifier;\n        const uid = scope.generateUidIdentifier(\n          // @ts-expect-error Identifier ?? StringLiteral\n          exported.name ?? exported.value,\n        );\n\n        nodes.push(\n          t.importDeclaration(\n            [t.importNamespaceSpecifier(uid)],\n            t.cloneNode(node.source),\n          ),\n          t.exportNamedDeclaration(null, [\n            t.exportSpecifier(t.cloneNode(uid), exported),\n          ]),\n        );\n\n        if (node.specifiers.length >= 1) {\n          nodes.push(node);\n        }\n\n        const [importDeclaration] = path.replaceWithMultiple(nodes);\n        path.scope.registerDeclaration(importDeclaration);\n      },\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\n\nexport default declare(api => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  return {\n    name: \"syntax-jsx\",\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        // If the Typescript plugin already ran, it will have decided whether\n        // or not this is a TSX file.\n        if (\n          parserOpts.plugins.some(\n            p => (Array.isArray(p) ? p[0] : p) === \"typescript\",\n          )\n        ) {\n          return;\n        }\n      }\n\n      parserOpts.plugins.push(\"jsx\");\n    },\n  };\n});\n","import jsx from \"@babel/plugin-syntax-jsx\";\nimport { declare } from \"@babel/helper-plugin-utils\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginPass, NodePath, Scope, Visitor } from \"@babel/core\";\nimport { addNamed, addNamespace, isModule } from \"@babel/helper-module-imports\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport type {\n  CallExpression,\n  Class,\n  Expression,\n  Identifier,\n  JSXAttribute,\n  JSXElement,\n  JSXFragment,\n  JSXOpeningElement,\n  JSXSpreadAttribute,\n  MemberExpression,\n  ObjectExpression,\n  Program,\n} from \"@babel/types\";\n\nconst DEFAULT = {\n  importSource: \"react\",\n  runtime: \"automatic\",\n  pragma: \"React.createElement\",\n  pragmaFrag: \"React.Fragment\",\n};\n\nconst JSX_SOURCE_ANNOTATION_REGEX =\n  /^\\s*(?:\\*\\s*)?@jsxImportSource\\s+(\\S+)\\s*$/m;\nconst JSX_RUNTIME_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsxRuntime\\s+(\\S+)\\s*$/m;\n\nconst JSX_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsx\\s+(\\S+)\\s*$/m;\nconst JSX_FRAG_ANNOTATION_REGEX = /^\\s*(?:\\*\\s*)?@jsxFrag\\s+(\\S+)\\s*$/m;\n\nconst get = (pass: PluginPass, name: string) =>\n  pass.get(`@babel/plugin-react-jsx/${name}`);\nconst set = (pass: PluginPass, name: string, v: any) =>\n  pass.set(`@babel/plugin-react-jsx/${name}`, v);\n\nfunction hasProto(node: t.ObjectExpression) {\n  return node.properties.some(\n    value =>\n      t.isObjectProperty(value, { computed: false, shorthand: false }) &&\n      (t.isIdentifier(value.key, { name: \"__proto__\" }) ||\n        t.isStringLiteral(value.key, { value: \"__proto__\" })),\n  );\n}\n\nexport interface Options {\n  filter?: (node: t.Node, pass: PluginPass) => boolean;\n  importSource?: string;\n  pragma?: string;\n  pragmaFrag?: string;\n  pure?: string;\n  runtime?: \"automatic\" | \"classic\";\n  throwIfNamespace?: boolean;\n  useBuiltIns: boolean;\n  useSpread?: boolean;\n}\nexport default function createPlugin({\n  name,\n  development,\n}: {\n  name: string;\n  development: boolean;\n}) {\n  return declare((_, options: Options) => {\n    const {\n      pure: PURE_ANNOTATION,\n\n      throwIfNamespace = true,\n\n      filter,\n\n      runtime: RUNTIME_DEFAULT = process.env.BABEL_8_BREAKING\n        ? \"automatic\"\n        : development\n          ? \"automatic\"\n          : \"classic\",\n\n      importSource: IMPORT_SOURCE_DEFAULT = DEFAULT.importSource,\n      pragma: PRAGMA_DEFAULT = DEFAULT.pragma,\n      pragmaFrag: PRAGMA_FRAG_DEFAULT = DEFAULT.pragmaFrag,\n    } = options;\n\n    if (process.env.BABEL_8_BREAKING) {\n      if (\"useSpread\" in options) {\n        throw new Error(\n          '@babel/plugin-transform-react-jsx: Since Babel 8, an inline object with spread elements is always used, and the \"useSpread\" option is no longer available. Please remove it from your config.',\n        );\n      }\n\n      if (\"useBuiltIns\" in options) {\n        const useBuiltInsFormatted = JSON.stringify(options.useBuiltIns);\n        throw new Error(\n          `@babel/plugin-transform-react-jsx: Since \"useBuiltIns\" is removed in Babel 8, you can remove it from the config.\n- Babel 8 now transforms JSX spread to object spread. If you need to transpile object spread with\n\\`useBuiltIns: ${useBuiltInsFormatted}\\`, you can use the following config\n{\n  \"plugins\": [\n    \"@babel/plugin-transform-react-jsx\"\n    [\"@babel/plugin-transform-object-rest-spread\", { \"loose\": true, \"useBuiltIns\": ${useBuiltInsFormatted} }]\n  ]\n}`,\n        );\n      }\n\n      if (filter != null && RUNTIME_DEFAULT === \"automatic\") {\n        throw new Error(\n          '@babel/plugin-transform-react-jsx: \"filter\" option can not be used with automatic runtime. If you are upgrading from Babel 7, please specify `runtime: \"classic\"`.',\n        );\n      }\n    } else {\n      // eslint-disable-next-line no-var\n      var { useSpread = false, useBuiltIns = false } = options;\n\n      if (RUNTIME_DEFAULT === \"classic\") {\n        if (typeof useSpread !== \"boolean\") {\n          throw new Error(\n            \"transform-react-jsx currently only accepts a boolean option for \" +\n              \"useSpread (defaults to false)\",\n          );\n        }\n\n        if (typeof useBuiltIns !== \"boolean\") {\n          throw new Error(\n            \"transform-react-jsx currently only accepts a boolean option for \" +\n              \"useBuiltIns (defaults to false)\",\n          );\n        }\n\n        if (useSpread && useBuiltIns) {\n          throw new Error(\n            \"transform-react-jsx currently only accepts useBuiltIns or useSpread \" +\n              \"but not both\",\n          );\n        }\n      }\n    }\n\n    const injectMetaPropertiesVisitor: Visitor<PluginPass> = {\n      JSXOpeningElement(path, state) {\n        const attributes = [];\n        if (isThisAllowed(path.scope)) {\n          attributes.push(\n            t.jsxAttribute(\n              t.jsxIdentifier(\"__self\"),\n              t.jsxExpressionContainer(t.thisExpression()),\n            ),\n          );\n        }\n        attributes.push(\n          t.jsxAttribute(\n            t.jsxIdentifier(\"__source\"),\n            t.jsxExpressionContainer(makeSource(path, state)),\n          ),\n        );\n        path.pushContainer(\"attributes\", attributes);\n      },\n    };\n\n    return {\n      name,\n      inherits: jsx,\n      visitor: {\n        JSXNamespacedName(path) {\n          if (throwIfNamespace) {\n            throw path.buildCodeFrameError(\n              `Namespace tags are not supported by default. React's JSX doesn't support namespace tags. \\\nYou can set \\`throwIfNamespace: false\\` to bypass this warning.`,\n            );\n          }\n        },\n\n        JSXSpreadChild(path) {\n          throw path.buildCodeFrameError(\n            \"Spread children are not supported in React.\",\n          );\n        },\n\n        Program: {\n          enter(path, state) {\n            const { file } = state;\n            let runtime: string = RUNTIME_DEFAULT;\n\n            let source: string = IMPORT_SOURCE_DEFAULT;\n            let pragma: string = PRAGMA_DEFAULT;\n            let pragmaFrag: string = PRAGMA_FRAG_DEFAULT;\n\n            let sourceSet = !!options.importSource;\n            let pragmaSet = !!options.pragma;\n            let pragmaFragSet = !!options.pragmaFrag;\n\n            if (file.ast.comments) {\n              for (const comment of file.ast.comments) {\n                const sourceMatches = JSX_SOURCE_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (sourceMatches) {\n                  source = sourceMatches[1];\n                  sourceSet = true;\n                }\n\n                const runtimeMatches = JSX_RUNTIME_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (runtimeMatches) {\n                  runtime = runtimeMatches[1];\n                }\n\n                const jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value);\n                if (jsxMatches) {\n                  pragma = jsxMatches[1];\n                  pragmaSet = true;\n                }\n                const jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(\n                  comment.value,\n                );\n                if (jsxFragMatches) {\n                  pragmaFrag = jsxFragMatches[1];\n                  pragmaFragSet = true;\n                }\n              }\n            }\n\n            set(state, \"runtime\", runtime);\n            if (runtime === \"classic\") {\n              if (sourceSet) {\n                throw path.buildCodeFrameError(\n                  `importSource cannot be set when runtime is classic.`,\n                );\n              }\n\n              const createElement = toMemberExpression(pragma);\n              const fragment = toMemberExpression(pragmaFrag);\n\n              set(state, \"id/createElement\", () => t.cloneNode(createElement));\n              set(state, \"id/fragment\", () => t.cloneNode(fragment));\n\n              set(state, \"defaultPure\", pragma === DEFAULT.pragma);\n            } else if (runtime === \"automatic\") {\n              if (pragmaSet || pragmaFragSet) {\n                throw path.buildCodeFrameError(\n                  `pragma and pragmaFrag cannot be set when runtime is automatic.`,\n                );\n              }\n\n              const define = (name: string, id: string) =>\n                set(state, name, createImportLazily(state, path, id, source));\n\n              define(\"id/jsx\", development ? \"jsxDEV\" : \"jsx\");\n              define(\"id/jsxs\", development ? \"jsxDEV\" : \"jsxs\");\n              define(\"id/createElement\", \"createElement\");\n              define(\"id/fragment\", \"Fragment\");\n\n              set(state, \"defaultPure\", source === DEFAULT.importSource);\n            } else {\n              throw path.buildCodeFrameError(\n                `Runtime must be either \"classic\" or \"automatic\".`,\n              );\n            }\n\n            if (development) {\n              path.traverse(injectMetaPropertiesVisitor, state);\n            }\n          },\n\n          // TODO(Babel 8): Decide if this should be removed or brought back.\n          // see: https://github.com/babel/babel/pull/12253#discussion_r513086528\n          //\n          // exit(path, state) {\n          //   if (\n          //     get(state, \"runtime\") === \"classic\" &&\n          //     get(state, \"pragmaSet\") &&\n          //     get(state, \"usedFragment\") &&\n          //     !get(state, \"pragmaFragSet\")\n          //   ) {\n          //     throw new Error(\n          //       \"transform-react-jsx: pragma has been set but \" +\n          //         \"pragmaFrag has not been set\",\n          //     );\n          //   }\n          // },\n        },\n\n        JSXFragment: {\n          exit(path, file) {\n            let callExpr;\n            if (get(file, \"runtime\") === \"classic\") {\n              callExpr = buildCreateElementFragmentCall(path, file);\n            } else {\n              callExpr = buildJSXFragmentCall(path, file);\n            }\n\n            path.replaceWith(t.inherits(callExpr, path.node));\n          },\n        },\n\n        JSXElement: {\n          exit(path, file) {\n            let callExpr;\n            if (\n              get(file, \"runtime\") === \"classic\" ||\n              shouldUseCreateElement(path)\n            ) {\n              callExpr = buildCreateElementCall(path, file);\n            } else {\n              callExpr = buildJSXElementCall(path, file);\n            }\n\n            path.replaceWith(t.inherits(callExpr, path.node));\n          },\n        },\n\n        JSXAttribute(path) {\n          if (t.isJSXElement(path.node.value)) {\n            path.node.value = t.jsxExpressionContainer(path.node.value);\n          }\n        },\n      },\n    };\n\n    // Returns whether the class has specified a superclass.\n    function isDerivedClass(classPath: NodePath<Class>) {\n      return classPath.node.superClass !== null;\n    }\n\n    // Returns whether `this` is allowed at given scope.\n    function isThisAllowed(scope: Scope) {\n      // This specifically skips arrow functions as they do not rewrite `this`.\n      do {\n        const { path } = scope;\n        if (path.isFunctionParent() && !path.isArrowFunctionExpression()) {\n          if (!path.isMethod()) {\n            // If the closest parent is a regular function, `this` will be rebound, therefore it is fine to use `this`.\n            return true;\n          }\n          // Current node is within a method, so we need to check if the method is a constructor.\n          if (path.node.kind !== \"constructor\") {\n            // We are not in a constructor, therefore it is always fine to use `this`.\n            return true;\n          }\n          // Now we are in a constructor. If it is a derived class, we do not reference `this`.\n          return !isDerivedClass(path.parentPath.parentPath as NodePath<Class>);\n        }\n        if (path.isTSModuleBlock()) {\n          // If the closest parent is a TS Module block, `this` will not be allowed.\n          return false;\n        }\n      } while ((scope = scope.parent));\n      // We are not in a method or function. It is fine to use `this`.\n      return true;\n    }\n\n    function call(\n      pass: PluginPass,\n      name: string,\n      args: CallExpression[\"arguments\"],\n    ) {\n      const node = t.callExpression(get(pass, `id/${name}`)(), args);\n      if (PURE_ANNOTATION ?? get(pass, \"defaultPure\")) annotateAsPure(node);\n      return node;\n    }\n\n    // We want to use React.createElement, even in the case of\n    // jsx, for <div {...props} key={key} /> to distinguish it\n    // from <div key={key} {...props} />. This is an intermediary\n    // step while we deprecate key spread from props. Afterwards,\n    // we will stop using createElement in the transform.\n    function shouldUseCreateElement(path: NodePath<JSXElement>) {\n      const openingPath = path.get(\"openingElement\");\n      const attributes = openingPath.node.attributes;\n\n      let seenPropsSpread = false;\n      for (let i = 0; i < attributes.length; i++) {\n        const attr = attributes[i];\n        if (\n          seenPropsSpread &&\n          t.isJSXAttribute(attr) &&\n          attr.name.name === \"key\"\n        ) {\n          return true;\n        } else if (t.isJSXSpreadAttribute(attr)) {\n          seenPropsSpread = true;\n        }\n      }\n      return false;\n    }\n\n    function convertJSXIdentifier(\n      node: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName,\n      parent: t.JSXOpeningElement | t.JSXMemberExpression,\n    ): t.ThisExpression | t.StringLiteral | t.MemberExpression | t.Identifier {\n      if (t.isJSXIdentifier(node)) {\n        if (node.name === \"this\" && t.isReferenced(node, parent)) {\n          return t.thisExpression();\n        } else if (t.isValidIdentifier(node.name, false)) {\n          // @ts-expect-error cast AST type to Identifier\n          node.type = \"Identifier\";\n          return node as unknown as t.Identifier;\n        } else {\n          return t.stringLiteral(node.name);\n        }\n      } else if (t.isJSXMemberExpression(node)) {\n        return t.memberExpression(\n          convertJSXIdentifier(node.object, node),\n          convertJSXIdentifier(node.property, node),\n        );\n      } else if (t.isJSXNamespacedName(node)) {\n        /**\n         * If the flag \"throwIfNamespace\" is false\n         * print XMLNamespace like string literal\n         */\n        return t.stringLiteral(`${node.namespace.name}:${node.name.name}`);\n      }\n\n      // todo: this branch should be unreachable\n      return node;\n    }\n\n    function convertAttributeValue(\n      node: t.JSXAttribute[\"value\"] | t.BooleanLiteral,\n    ) {\n      if (t.isJSXExpressionContainer(node)) {\n        return node.expression;\n      } else {\n        return node;\n      }\n    }\n\n    function accumulateAttribute(\n      array: ObjectExpression[\"properties\"],\n      attribute: NodePath<JSXAttribute | JSXSpreadAttribute>,\n    ) {\n      if (t.isJSXSpreadAttribute(attribute.node)) {\n        const arg = attribute.node.argument;\n        // Collect properties into props array if spreading object expression\n        if (t.isObjectExpression(arg) && !hasProto(arg)) {\n          array.push(...arg.properties);\n        } else {\n          array.push(t.spreadElement(arg));\n        }\n        return array;\n      }\n\n      const value = convertAttributeValue(\n        attribute.node.name.name !== \"key\"\n          ? attribute.node.value || t.booleanLiteral(true)\n          : attribute.node.value,\n      );\n\n      if (attribute.node.name.name === \"key\" && value === null) {\n        throw attribute.buildCodeFrameError(\n          'Please provide an explicit key value. Using \"key\" as a shorthand for \"key={true}\" is not allowed.',\n        );\n      }\n\n      if (\n        t.isStringLiteral(value) &&\n        !t.isJSXExpressionContainer(attribute.node.value)\n      ) {\n        value.value = value.value.replace(/\\n\\s+/g, \" \");\n\n        // \"raw\" JSXText should not be used from a StringLiteral because it needs to be escaped.\n        delete value.extra?.raw;\n      }\n\n      if (t.isJSXNamespacedName(attribute.node.name)) {\n        // @ts-expect-error mutating AST\n        attribute.node.name = t.stringLiteral(\n          attribute.node.name.namespace.name +\n            \":\" +\n            attribute.node.name.name.name,\n        );\n      } else if (t.isValidIdentifier(attribute.node.name.name, false)) {\n        // @ts-expect-error mutating AST\n        attribute.node.name.type = \"Identifier\";\n      } else {\n        // @ts-expect-error mutating AST\n        attribute.node.name = t.stringLiteral(attribute.node.name.name);\n      }\n\n      array.push(\n        t.inherits(\n          t.objectProperty(\n            // @ts-expect-error The attribute.node.name is an Identifier now\n            attribute.node.name,\n            value,\n          ),\n          attribute.node,\n        ),\n      );\n      return array;\n    }\n\n    function buildChildrenProperty(children: Expression[]) {\n      let childrenNode;\n      if (children.length === 1) {\n        childrenNode = children[0];\n      } else if (children.length > 1) {\n        childrenNode = t.arrayExpression(children);\n      } else {\n        return undefined;\n      }\n\n      return t.objectProperty(t.identifier(\"children\"), childrenNode);\n    }\n\n    // Builds JSX into:\n    // Production: React.jsx(type, arguments, key)\n    // Development: React.jsxDEV(type, arguments, key, isStaticChildren, source, self)\n    function buildJSXElementCall(path: NodePath<JSXElement>, file: PluginPass) {\n      const openingPath = path.get(\"openingElement\");\n      const args: t.Expression[] = [getTag(openingPath)];\n\n      const attribsArray = [];\n      const extracted = Object.create(null);\n\n      // for React.jsx, key, __source (dev), and __self (dev) is passed in as\n      // a separate argument rather than in the args object. We go through the\n      // props and filter out these three keywords so we can pass them in\n      // as separate arguments later\n      for (const attr of openingPath.get(\"attributes\")) {\n        if (attr.isJSXAttribute() && t.isJSXIdentifier(attr.node.name)) {\n          const { name } = attr.node.name;\n          switch (name) {\n            case \"__source\":\n            case \"__self\":\n              if (extracted[name]) throw sourceSelfError(path, name);\n            /* falls through */\n            case \"key\": {\n              const keyValue = convertAttributeValue(attr.node.value);\n              if (keyValue === null) {\n                throw attr.buildCodeFrameError(\n                  'Please provide an explicit key value. Using \"key\" as a shorthand for \"key={true}\" is not allowed.',\n                );\n              }\n\n              extracted[name] = keyValue;\n              break;\n            }\n            default:\n              attribsArray.push(attr);\n          }\n        } else {\n          attribsArray.push(attr);\n        }\n      }\n\n      const children = t.react.buildChildren(path.node);\n\n      let attribs: t.ObjectExpression;\n\n      if (attribsArray.length || children.length) {\n        attribs = buildJSXOpeningElementAttributes(\n          attribsArray,\n          //@ts-expect-error The children here contains JSXSpreadChild,\n          // which will be thrown later\n          children,\n        );\n      } else {\n        // attributes should never be null\n        attribs = t.objectExpression([]);\n      }\n\n      args.push(attribs);\n\n      if (development) {\n        // isStaticChildren, __source, and __self are only used in development\n        // automatically include __source and __self in this plugin\n        // so we can eliminate the need for separate Babel plugins in Babel 8\n        args.push(\n          extracted.key ?? path.scope.buildUndefinedNode(),\n          t.booleanLiteral(children.length > 1),\n        );\n        if (extracted.__source) {\n          args.push(extracted.__source);\n          if (extracted.__self) args.push(extracted.__self);\n        } else if (extracted.__self) {\n          args.push(path.scope.buildUndefinedNode(), extracted.__self);\n        }\n      } else if (extracted.key !== undefined) {\n        args.push(extracted.key);\n      }\n\n      return call(file, children.length > 1 ? \"jsxs\" : \"jsx\", args);\n    }\n\n    // Builds props for React.jsx. This function adds children into the props\n    // and ensures that props is always an object\n    function buildJSXOpeningElementAttributes(\n      attribs: NodePath<JSXAttribute | JSXSpreadAttribute>[],\n      children: Expression[],\n    ) {\n      const props = attribs.reduce(accumulateAttribute, []);\n\n      // In React.jsx, children is no longer a separate argument, but passed in\n      // through the argument object\n      if (children?.length > 0) {\n        props.push(buildChildrenProperty(children));\n      }\n\n      return t.objectExpression(props);\n    }\n\n    // Builds JSX Fragment <></> into\n    // Production: React.jsx(type, arguments)\n    // Development: React.jsxDEV(type, { children })\n    function buildJSXFragmentCall(\n      path: NodePath<JSXFragment>,\n      file: PluginPass,\n    ) {\n      const args = [get(file, \"id/fragment\")()];\n\n      const children = t.react.buildChildren(path.node);\n\n      args.push(\n        t.objectExpression(\n          children.length > 0\n            ? [\n                buildChildrenProperty(\n                  //@ts-expect-error The children here contains JSXSpreadChild,\n                  // which will be thrown later\n                  children,\n                ),\n              ]\n            : [],\n        ),\n      );\n\n      if (development) {\n        args.push(\n          path.scope.buildUndefinedNode(),\n          t.booleanLiteral(children.length > 1),\n        );\n      }\n\n      return call(file, children.length > 1 ? \"jsxs\" : \"jsx\", args);\n    }\n\n    // Builds JSX Fragment <></> into\n    // React.createElement(React.Fragment, null, ...children)\n    function buildCreateElementFragmentCall(\n      path: NodePath<JSXFragment>,\n      file: PluginPass,\n    ) {\n      if (filter && !filter(path.node, file)) return;\n\n      return call(file, \"createElement\", [\n        get(file, \"id/fragment\")(),\n        t.nullLiteral(),\n        ...t.react.buildChildren(path.node),\n      ]);\n    }\n\n    // Builds JSX into:\n    // Production: React.createElement(type, arguments, children)\n    // Development: React.createElement(type, arguments, children, source, self)\n    function buildCreateElementCall(\n      path: NodePath<JSXElement>,\n      file: PluginPass,\n    ) {\n      const openingPath = path.get(\"openingElement\");\n\n      return call(file, \"createElement\", [\n        getTag(openingPath),\n        buildCreateElementOpeningElementAttributes(\n          file,\n          path,\n          openingPath.get(\"attributes\"),\n        ),\n        // @ts-expect-error JSXSpreadChild has been transformed in convertAttributeValue\n        ...t.react.buildChildren(path.node),\n      ]);\n    }\n\n    function getTag(openingPath: NodePath<JSXOpeningElement>) {\n      const tagExpr = convertJSXIdentifier(\n        openingPath.node.name,\n        openingPath.node,\n      );\n\n      let tagName: string;\n      if (t.isIdentifier(tagExpr)) {\n        tagName = tagExpr.name;\n      } else if (t.isStringLiteral(tagExpr)) {\n        tagName = tagExpr.value;\n      }\n\n      if (t.react.isCompatTag(tagName)) {\n        return t.stringLiteral(tagName);\n      } else {\n        return tagExpr;\n      }\n    }\n\n    /**\n     * The logic for this is quite terse. It's because we need to\n     * support spread elements. We loop over all attributes,\n     * breaking on spreads, we then push a new object containing\n     * all prior attributes to an array for later processing.\n     */\n    function buildCreateElementOpeningElementAttributes(\n      file: PluginPass,\n      path: NodePath<JSXElement>,\n      attribs: NodePath<JSXAttribute | JSXSpreadAttribute>[],\n    ) {\n      const runtime = get(file, \"runtime\");\n      if (!process.env.BABEL_8_BREAKING) {\n        if (runtime !== \"automatic\") {\n          const objs = [];\n          const props = attribs.reduce(accumulateAttribute, []);\n\n          if (!useSpread) {\n            // Convert syntax to use multiple objects instead of spread\n            let start = 0;\n            props.forEach((prop, i) => {\n              if (t.isSpreadElement(prop)) {\n                if (i > start) {\n                  objs.push(t.objectExpression(props.slice(start, i)));\n                }\n                objs.push(prop.argument);\n                start = i + 1;\n              }\n            });\n            if (props.length > start) {\n              objs.push(t.objectExpression(props.slice(start)));\n            }\n          } else if (props.length) {\n            objs.push(t.objectExpression(props));\n          }\n\n          if (!objs.length) {\n            return t.nullLiteral();\n          }\n\n          if (objs.length === 1) {\n            if (\n              !(\n                t.isSpreadElement(props[0]) &&\n                // If an object expression is spread element's argument\n                // it is very likely to contain __proto__ and we should stop\n                // optimizing spread element\n                t.isObjectExpression(props[0].argument)\n              )\n            ) {\n              return objs[0];\n            }\n          }\n\n          // looks like we have multiple objects\n          if (!t.isObjectExpression(objs[0])) {\n            objs.unshift(t.objectExpression([]));\n          }\n\n          const helper = useBuiltIns\n            ? t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\"))\n            : file.addHelper(\"extends\");\n\n          // spread it\n          return t.callExpression(helper, objs);\n        }\n      }\n\n      const props: ObjectExpression[\"properties\"] = [];\n      const found = Object.create(null);\n\n      for (const attr of attribs) {\n        const { node } = attr;\n        const name =\n          t.isJSXAttribute(node) &&\n          t.isJSXIdentifier(node.name) &&\n          node.name.name;\n\n        if (\n          runtime === \"automatic\" &&\n          (name === \"__source\" || name === \"__self\")\n        ) {\n          if (found[name]) throw sourceSelfError(path, name);\n          found[name] = true;\n        }\n\n        accumulateAttribute(props, attr);\n      }\n\n      return props.length === 1 &&\n        t.isSpreadElement(props[0]) &&\n        // If an object expression is spread element's argument\n        // it is very likely to contain __proto__ and we should stop\n        // optimizing spread element\n        !t.isObjectExpression(props[0].argument)\n        ? props[0].argument\n        : props.length > 0\n          ? t.objectExpression(props)\n          : t.nullLiteral();\n    }\n  });\n\n  function getSource(source: string, importName: string) {\n    switch (importName) {\n      case \"Fragment\":\n        return `${source}/${development ? \"jsx-dev-runtime\" : \"jsx-runtime\"}`;\n      case \"jsxDEV\":\n        return `${source}/jsx-dev-runtime`;\n      case \"jsx\":\n      case \"jsxs\":\n        return `${source}/jsx-runtime`;\n      case \"createElement\":\n        return source;\n    }\n  }\n\n  function createImportLazily(\n    pass: PluginPass,\n    path: NodePath<Program>,\n    importName: string,\n    source: string,\n  ): () => Identifier | MemberExpression {\n    return () => {\n      const actualSource = getSource(source, importName);\n      if (isModule(path)) {\n        let reference = get(pass, `imports/${importName}`);\n        if (reference) return t.cloneNode(reference);\n\n        reference = addNamed(path, importName, actualSource, {\n          importedInterop: \"uncompiled\",\n          importPosition: \"after\",\n        });\n        set(pass, `imports/${importName}`, reference);\n\n        return reference;\n      } else {\n        let reference = get(pass, `requires/${actualSource}`);\n        if (reference) {\n          reference = t.cloneNode(reference);\n        } else {\n          reference = addNamespace(path, actualSource, {\n            importedInterop: \"uncompiled\",\n          });\n          set(pass, `requires/${actualSource}`, reference);\n        }\n\n        return t.memberExpression(reference, t.identifier(importName));\n      }\n    };\n  }\n}\n\nfunction toMemberExpression(id: string): Identifier | MemberExpression {\n  return (\n    id\n      .split(\".\")\n      .map(name => t.identifier(name))\n      // @ts-expect-error - The Array#reduce does not have a signature\n      // where the type of initial value differs from callback return type\n      .reduce((object, property) => t.memberExpression(object, property))\n  );\n}\n\nfunction makeSource(path: NodePath, state: PluginPass) {\n  const location = path.node.loc;\n  if (!location) {\n    // the element was generated and doesn't have location information\n    return path.scope.buildUndefinedNode();\n  }\n\n  // @ts-expect-error todo: avoid mutating PluginPass\n  if (!state.fileNameIdentifier) {\n    const { filename = \"\" } = state;\n\n    const fileNameIdentifier = path.scope.generateUidIdentifier(\"_jsxFileName\");\n    path.scope.getProgramParent().push({\n      id: fileNameIdentifier,\n      init: t.stringLiteral(filename),\n    });\n    // @ts-expect-error todo: avoid mutating PluginPass\n    state.fileNameIdentifier = fileNameIdentifier;\n  }\n\n  return makeTrace(\n    t.cloneNode(\n      // @ts-expect-error todo: avoid mutating PluginPass\n      state.fileNameIdentifier,\n    ),\n    location.start.line,\n    location.start.column,\n  );\n}\n\nfunction makeTrace(\n  fileNameIdentifier: Identifier,\n  lineNumber?: number,\n  column0Based?: number,\n) {\n  const fileLineLiteral =\n    lineNumber != null ? t.numericLiteral(lineNumber) : t.nullLiteral();\n\n  const fileColumnLiteral =\n    column0Based != null ? t.numericLiteral(column0Based + 1) : t.nullLiteral();\n\n  return template.expression.ast`{\n    fileName: ${fileNameIdentifier},\n    lineNumber: ${fileLineLiteral},\n    columnNumber: ${fileColumnLiteral},\n  }`;\n}\n\nfunction sourceSelfError(path: NodePath, name: string) {\n  const pluginName = `transform-react-jsx-${name.slice(2)}`;\n\n  return path.buildCodeFrameError(\n    `Duplicate ${name} prop found. You are most likely using the deprecated ${pluginName} Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config.`,\n  );\n}\n","/* eslint-disable @babel/development/plugin-name */\n\nimport createPlugin from \"./create-plugin.ts\";\n\nexport default createPlugin({\n  name: \"transform-react-jsx\",\n  development: false,\n});\n\nexport type { Options } from \"./create-plugin.ts\";\n","// Heavily inspired by\n// https://github.com/airbnb/babel-plugin-dynamic-import-node/blob/master/src/utils.js\n\nimport type { File, NodePath } from \"@babel/core\";\nimport { types as t, template } from \"@babel/core\";\nimport { buildDynamicImport } from \"@babel/helper-module-transforms\";\n\nconst requireNoInterop = (source: t.Expression) =>\n  template.expression.ast`require(${source})`;\n\nconst requireInterop = (source: t.Expression, file: File) =>\n  t.callExpression(file.addHelper(\"interopRequireWildcard\"), [\n    requireNoInterop(source),\n  ]);\n\nexport function transformDynamicImport(\n  path: NodePath<t.CallExpression | t.ImportExpression>,\n  noInterop: boolean,\n  file: File,\n) {\n  const buildRequire = noInterop ? requireNoInterop : requireInterop;\n\n  path.replaceWith(\n    buildDynamicImport(path.node, true, false, specifier =>\n      buildRequire(specifier, file),\n    ),\n  );\n}\n","import { template, types as t } from \"@babel/core\";\nimport { isSideEffectImport } from \"@babel/helper-module-transforms\";\nimport type { CommonJSHook } from \"./hooks.ts\";\n\ntype Lazy = boolean | string[] | ((source: string) => boolean);\n\nexport const lazyImportsHook = (lazy: Lazy): CommonJSHook => ({\n  name: `${PACKAGE_JSON.name}/lazy`,\n  version: PACKAGE_JSON.version,\n  getWrapperPayload(source, metadata) {\n    if (isSideEffectImport(metadata) || metadata.reexportAll) {\n      return null;\n    }\n    if (lazy === true) {\n      // 'true' means that local relative files are eagerly loaded and\n      // dependency modules are loaded lazily.\n      return source.includes(\".\") ? null : \"lazy/function\";\n    }\n    if (Array.isArray(lazy)) {\n      return !lazy.includes(source) ? null : \"lazy/function\";\n    }\n    if (typeof lazy === \"function\") {\n      return lazy(source) ? \"lazy/function\" : null;\n    }\n  },\n  buildRequireWrapper(name, init, payload, referenced) {\n    if (payload === \"lazy/function\") {\n      if (!referenced) return false;\n      return template.statement.ast`\n        function ${name}() {\n          const data = ${init};\n          ${name} = function(){ return data; };\n          return data;\n        }\n      `;\n    }\n  },\n  wrapReference(ref, payload) {\n    if (payload === \"lazy/function\") return t.callExpression(ref, []);\n  },\n});\n","import type { types as t, File } from \"@babel/core\";\nimport type { isSideEffectImport } from \"@babel/helper-module-transforms\";\n\nconst commonJSHooksKey =\n  \"@babel/plugin-transform-modules-commonjs/customWrapperPlugin\";\n\ntype SourceMetadata = Parameters<typeof isSideEffectImport>[0];\n\n// A hook exposes a set of function that can customize how `require()` calls and\n// references to the imported bindings are handled. These functions can either\n// return a result, or return `null` to delegate to the next hook.\nexport interface CommonJSHook {\n  name: string;\n  version: string;\n  wrapReference?(ref: t.Expression, payload: unknown): t.CallExpression | null;\n  // Optionally wrap a `require` call. If this function returns `false`, the\n  // `require` call is removed from the generated code.\n  buildRequireWrapper?(\n    name: string,\n    init: t.Expression,\n    payload: unknown,\n    referenced: boolean,\n  ): t.Statement | false | null;\n  getWrapperPayload?(\n    source: string,\n    metadata: SourceMetadata,\n    importNodes: t.Node[],\n  ): string | null;\n}\n\nexport function defineCommonJSHook(file: File, hook: CommonJSHook) {\n  let hooks = file.get(commonJSHooksKey);\n  if (!hooks) file.set(commonJSHooksKey, (hooks = []));\n  hooks.push(hook);\n}\n\nfunction findMap<T, U>(arr: T[] | null, cb: (el: T) => U): U | null {\n  if (arr) {\n    for (const el of arr) {\n      const res = cb(el);\n      if (res != null) return res;\n    }\n  }\n}\n\nexport function makeInvokers(\n  file: File,\n): Pick<\n  CommonJSHook,\n  \"wrapReference\" | \"getWrapperPayload\" | \"buildRequireWrapper\"\n> {\n  const hooks: CommonJSHook[] | null = file.get(commonJSHooksKey);\n\n  return {\n    getWrapperPayload(...args) {\n      return findMap(hooks, hook => hook.getWrapperPayload?.(...args));\n    },\n    wrapReference(...args) {\n      return findMap(hooks, hook => hook.wrapReference?.(...args));\n    },\n    buildRequireWrapper(...args) {\n      return findMap(hooks, hook => hook.buildRequireWrapper?.(...args));\n    },\n  };\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport {\n  isModule,\n  rewriteModuleStatementsAndPrepareHeader,\n  type RewriteModuleStatementsAndPrepareHeaderOptions,\n  isSideEffectImport,\n  buildNamespaceInitStatements,\n  ensureStatementsHoisted,\n  wrapInterop,\n  getModuleName,\n} from \"@babel/helper-module-transforms\";\nimport { template, types as t } from \"@babel/core\";\nimport type { PluginPass, Visitor, Scope, NodePath } from \"@babel/core\";\nimport type { PluginOptions } from \"@babel/helper-module-transforms\";\n\nimport { transformDynamicImport } from \"./dynamic-import.ts\";\nimport { lazyImportsHook } from \"./lazy.ts\";\n\nimport { defineCommonJSHook, makeInvokers } from \"./hooks.ts\";\nexport { defineCommonJSHook };\n\nexport interface Options extends PluginOptions {\n  allowCommonJSExports?: boolean;\n  allowTopLevelThis?: boolean;\n  importInterop?: RewriteModuleStatementsAndPrepareHeaderOptions[\"importInterop\"];\n  lazy?: RewriteModuleStatementsAndPrepareHeaderOptions[\"lazy\"];\n  loose?: boolean;\n  mjsStrictNamespace?: boolean;\n  noInterop?: boolean;\n  strict?: boolean;\n  strictMode?: boolean;\n  strictNamespace?: boolean;\n}\n\nexport default declare((api, options: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const {\n    // 'true' for imports to strictly have .default, instead of having\n    // destructuring-like behavior for their properties. This matches the behavior\n    // of the initial Node.js (v12) behavior when importing a CommonJS without\n    // the __esMoule property.\n    // .strictNamespace is for non-mjs files, mjsStrictNamespace if for mjs files.\n    strictNamespace = false,\n    mjsStrictNamespace = strictNamespace,\n\n    allowTopLevelThis,\n    strict,\n    strictMode,\n    noInterop,\n    importInterop,\n    lazy = false,\n    // Defaulting to 'true' for now. May change before 7.x major.\n    allowCommonJSExports = true,\n    loose = false,\n  } = options;\n\n  const constantReexports = api.assumption(\"constantReexports\") ?? loose;\n  const enumerableModuleMeta = api.assumption(\"enumerableModuleMeta\") ?? loose;\n  const noIncompleteNsImportDetection =\n    api.assumption(\"noIncompleteNsImportDetection\") ?? false;\n\n  if (\n    typeof lazy !== \"boolean\" &&\n    typeof lazy !== \"function\" &&\n    (!Array.isArray(lazy) || !lazy.every(item => typeof item === \"string\"))\n  ) {\n    throw new Error(`.lazy must be a boolean, array of strings, or a function`);\n  }\n\n  if (typeof strictNamespace !== \"boolean\") {\n    throw new Error(`.strictNamespace must be a boolean, or undefined`);\n  }\n  if (typeof mjsStrictNamespace !== \"boolean\") {\n    throw new Error(`.mjsStrictNamespace must be a boolean, or undefined`);\n  }\n\n  const getAssertion = (localName: string) => template.expression.ast`\n    (function(){\n      throw new Error(\n        \"The CommonJS '\" + \"${localName}\" + \"' variable is not available in ES6 modules.\" +\n        \"Consider setting setting sourceType:script or sourceType:unambiguous in your \" +\n        \"Babel config for this file.\");\n    })()\n  `;\n\n  const moduleExportsVisitor: Visitor<{ scope: Scope }> = {\n    ReferencedIdentifier(path) {\n      const localName = path.node.name;\n      if (localName !== \"module\" && localName !== \"exports\") return;\n\n      const localBinding = path.scope.getBinding(localName);\n      const rootBinding = this.scope.getBinding(localName);\n\n      if (\n        // redeclared in this scope\n        rootBinding !== localBinding ||\n        (path.parentPath.isObjectProperty({ value: path.node }) &&\n          path.parentPath.parentPath.isObjectPattern()) ||\n        path.parentPath.isAssignmentExpression({ left: path.node }) ||\n        path.isAssignmentExpression({ left: path.node })\n      ) {\n        return;\n      }\n\n      path.replaceWith(getAssertion(localName));\n    },\n\n    UpdateExpression(path) {\n      const arg = path.get(\"argument\");\n      if (!arg.isIdentifier()) return;\n      const localName = arg.node.name;\n      if (localName !== \"module\" && localName !== \"exports\") return;\n\n      const localBinding = path.scope.getBinding(localName);\n      const rootBinding = this.scope.getBinding(localName);\n\n      // redeclared in this scope\n      if (rootBinding !== localBinding) return;\n\n      path.replaceWith(\n        t.assignmentExpression(\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n          (path.node.operator[0] + \"=\") as t.AssignmentExpression[\"operator\"],\n          arg.node,\n          getAssertion(localName),\n        ),\n      );\n    },\n\n    AssignmentExpression(path) {\n      const left = path.get(\"left\");\n      if (left.isIdentifier()) {\n        const localName = left.node.name;\n        if (localName !== \"module\" && localName !== \"exports\") return;\n\n        const localBinding = path.scope.getBinding(localName);\n        const rootBinding = this.scope.getBinding(localName);\n\n        // redeclared in this scope\n        if (rootBinding !== localBinding) return;\n\n        const right = path.get(\"right\");\n        right.replaceWith(\n          t.sequenceExpression([right.node, getAssertion(localName)]),\n        );\n      } else if (left.isPattern()) {\n        const ids = left.getOuterBindingIdentifiers();\n        const localName = Object.keys(ids).find(localName => {\n          if (localName !== \"module\" && localName !== \"exports\") return false;\n\n          return (\n            this.scope.getBinding(localName) ===\n            path.scope.getBinding(localName)\n          );\n        });\n\n        if (localName) {\n          const right = path.get(\"right\");\n          right.replaceWith(\n            t.sequenceExpression([right.node, getAssertion(localName)]),\n          );\n        }\n      }\n    },\n  };\n\n  return {\n    name: \"transform-modules-commonjs\",\n\n    pre() {\n      this.file.set(\"@babel/plugin-transform-modules-*\", \"commonjs\");\n\n      if (lazy) defineCommonJSHook(this.file, lazyImportsHook(lazy));\n    },\n\n    visitor: {\n      [\"CallExpression\" +\n        (api.types.importExpression ? \"|ImportExpression\" : \"\")](\n        this: PluginPass,\n        path: NodePath<t.CallExpression | t.ImportExpression>,\n      ) {\n        if (!this.file.has(\"@babel/plugin-proposal-dynamic-import\")) return;\n        if (path.isCallExpression() && !t.isImport(path.node.callee)) return;\n\n        let { scope } = path;\n        do {\n          scope.rename(\"require\");\n        } while ((scope = scope.parent));\n\n        transformDynamicImport(path, noInterop, this.file);\n      },\n\n      Program: {\n        exit(path, state) {\n          if (!isModule(path)) return;\n\n          // Rename the bindings auto-injected into the scope so there is no\n          // risk of conflict between the bindings.\n          path.scope.rename(\"exports\");\n          path.scope.rename(\"module\");\n          path.scope.rename(\"require\");\n          path.scope.rename(\"__filename\");\n          path.scope.rename(\"__dirname\");\n\n          // Rewrite references to 'module' and 'exports' to throw exceptions.\n          // These objects are specific to CommonJS and are not available in\n          // real ES6 implementations.\n          if (!allowCommonJSExports) {\n            path.traverse(moduleExportsVisitor, {\n              scope: path.scope,\n            });\n          }\n\n          let moduleName = getModuleName(this.file.opts, options);\n          // @ts-expect-error todo(flow->ts): do not reuse variables\n          if (moduleName) moduleName = t.stringLiteral(moduleName);\n\n          const hooks = makeInvokers(this.file);\n\n          const { meta, headers } = rewriteModuleStatementsAndPrepareHeader(\n            path,\n            {\n              exportName: \"exports\",\n              constantReexports,\n              enumerableModuleMeta,\n              strict,\n              strictMode,\n              allowTopLevelThis,\n              noInterop,\n              importInterop,\n              wrapReference: hooks.wrapReference,\n              getWrapperPayload: hooks.getWrapperPayload,\n              esNamespaceOnly:\n                typeof state.filename === \"string\" &&\n                /\\.mjs$/.test(state.filename)\n                  ? mjsStrictNamespace\n                  : strictNamespace,\n              noIncompleteNsImportDetection,\n              filename: this.file.opts.filename,\n            },\n          );\n\n          for (const [source, metadata] of meta.source) {\n            const loadExpr = t.callExpression(t.identifier(\"require\"), [\n              t.stringLiteral(source),\n            ]);\n\n            let header: t.Statement;\n            if (isSideEffectImport(metadata)) {\n              if (lazy && metadata.wrap === \"function\") {\n                throw new Error(\"Assertion failure\");\n              }\n\n              header = t.expressionStatement(loadExpr);\n            } else {\n              const init =\n                wrapInterop(path, loadExpr, metadata.interop) || loadExpr;\n\n              if (metadata.wrap) {\n                const res = hooks.buildRequireWrapper(\n                  metadata.name,\n                  init,\n                  metadata.wrap,\n                  metadata.referenced,\n                );\n                if (res === false) continue;\n                else header = res;\n              }\n              header ??= template.statement.ast`\n                var ${metadata.name} = ${init};\n              `;\n            }\n            header.loc = metadata.loc;\n\n            headers.push(header);\n            headers.push(\n              ...buildNamespaceInitStatements(\n                meta,\n                metadata,\n                constantReexports,\n                hooks.wrapReference,\n              ),\n            );\n          }\n\n          ensureStatementsHoisted(headers);\n          path.unshiftContainer(\"body\", headers);\n          path.get(\"body\").forEach(path => {\n            if (!headers.includes(path.node)) return;\n            if (path.isVariableDeclaration()) {\n              path.scope.registerDeclaration(path);\n            }\n          });\n        },\n      },\n    },\n  };\n});\n","import { declare } from \"@babel/helper-plugin-utils\";\n\nif (!process.env.BABEL_8_BREAKING) {\n  // eslint-disable-next-line no-var\n  var removePlugin = function (plugins: any[], name: string) {\n    const indices: number[] = [];\n    plugins.forEach((plugin, i) => {\n      const n = Array.isArray(plugin) ? plugin[0] : plugin;\n\n      if (n === name) {\n        indices.unshift(i);\n      }\n    });\n\n    for (const i of indices) {\n      plugins.splice(i, 1);\n    }\n  };\n}\n\nexport interface Options {\n  disallowAmbiguousJSXLike?: boolean;\n  dts?: boolean;\n  isTSX?: boolean;\n}\n\nexport default declare((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const { disallowAmbiguousJSXLike, dts } = opts;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // eslint-disable-next-line no-var\n    var { isTSX } = opts;\n  }\n\n  return {\n    name: \"syntax-typescript\",\n\n    manipulateOptions(opts, parserOpts) {\n      if (!process.env.BABEL_8_BREAKING) {\n        const { plugins } = parserOpts;\n        // If the Flow syntax plugin already ran, remove it since Typescript\n        // takes priority.\n        removePlugin(plugins, \"flow\");\n\n        // If the JSX syntax plugin already ran, remove it because JSX handling\n        // in TS depends on the extensions, and is purely dependent on 'isTSX'.\n        removePlugin(plugins, \"jsx\");\n\n        if (!process.env.BABEL_8_BREAKING) {\n          // These are now enabled by default in @babel/parser, but we push\n          // them for compat with older versions.\n          // @ts-ignore(Babel 7 vs Babel 8) These plugins have been removed\n          plugins.push(\"objectRestSpread\", \"classProperties\");\n        }\n\n        if (isTSX) {\n          plugins.push(\"jsx\");\n        }\n      }\n\n      parserOpts.plugins.push([\n        \"typescript\",\n        { disallowAmbiguousJSXLike, dts },\n      ]);\n    },\n  };\n});\n","import { template, types as t, type NodePath } from \"@babel/core\";\nimport assert from \"assert\";\nimport annotateAsPure from \"@babel/helper-annotate-as-pure\";\nimport { skipTransparentExprWrapperNodes } from \"@babel/helper-skip-transparent-expression-wrappers\";\n\ntype t = typeof t;\n\nconst ENUMS = new WeakMap<t.Identifier, PreviousEnumMembers>();\n\nconst buildEnumWrapper = template.expression(\n  `\n    (function (ID) {\n      ASSIGNMENTS;\n      return ID;\n    })(INIT)\n  `,\n);\n\nexport default function transpileEnum(\n  path: NodePath<t.TSEnumDeclaration>,\n  t: t,\n) {\n  const { node, parentPath } = path;\n\n  if (node.declare) {\n    path.remove();\n    return;\n  }\n\n  const name = node.id.name;\n  const { fill, data, isPure } = enumFill(path, t, node.id);\n\n  switch (parentPath.type) {\n    case \"BlockStatement\":\n    case \"ExportNamedDeclaration\":\n    case \"Program\": {\n      // todo: Consider exclude program with import/export\n      // && !path.parent.body.some(n => t.isImportDeclaration(n) || t.isExportDeclaration(n));\n      const isGlobal = t.isProgram(path.parent);\n      const isSeen = seen(parentPath);\n\n      let init: t.Expression = t.objectExpression([]);\n      if (isSeen || isGlobal) {\n        init = t.logicalExpression(\"||\", t.cloneNode(fill.ID), init);\n      }\n      const enumIIFE = buildEnumWrapper({ ...fill, INIT: init });\n      if (isPure) annotateAsPure(enumIIFE);\n\n      if (isSeen) {\n        const toReplace = parentPath.isExportDeclaration() ? parentPath : path;\n        toReplace.replaceWith(\n          t.expressionStatement(\n            t.assignmentExpression(\"=\", t.cloneNode(node.id), enumIIFE),\n          ),\n        );\n      } else {\n        path.scope.registerDeclaration(\n          path.replaceWith(\n            t.variableDeclaration(isGlobal ? \"var\" : \"let\", [\n              t.variableDeclarator(node.id, enumIIFE),\n            ]),\n          )[0],\n        );\n      }\n      ENUMS.set(path.scope.getBindingIdentifier(name), data);\n      break;\n    }\n\n    default:\n      throw new Error(`Unexpected enum parent '${path.parent.type}`);\n  }\n\n  function seen(parentPath: NodePath<t.Node>): boolean {\n    if (parentPath.isExportDeclaration()) {\n      return seen(parentPath.parentPath);\n    }\n\n    if (parentPath.getData(name)) {\n      return true;\n    } else {\n      parentPath.setData(name, true);\n      return false;\n    }\n  }\n}\n\nconst buildStringAssignment = template.statement(`\n  ENUM[\"NAME\"] = VALUE;\n`);\n\nconst buildNumericAssignment = template.statement(`\n  ENUM[ENUM[\"NAME\"] = VALUE] = \"NAME\";\n`);\n\nconst buildEnumMember = (isString: boolean, options: Record<string, unknown>) =>\n  (isString ? buildStringAssignment : buildNumericAssignment)(options);\n\n/**\n * Generates the statement that fills in the variable declared by the enum.\n * `(function (E) { ... assignments ... })(E || (E = {}));`\n */\nfunction enumFill(path: NodePath<t.TSEnumDeclaration>, t: t, id: t.Identifier) {\n  const { enumValues, data, isPure } = translateEnumValues(path, t);\n  const enumMembers: NodePath<t.TSEnumMember>[] = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      path.get(\"body\").get(\"members\")\n    : path.get(\"members\");\n  const assignments = [];\n  for (let i = 0; i < enumMembers.length; i++) {\n    const [memberName, memberValue] = enumValues[i];\n    assignments.push(\n      t.inheritsComments(\n        buildEnumMember(isSyntacticallyString(memberValue), {\n          ENUM: t.cloneNode(id),\n          NAME: memberName,\n          VALUE: memberValue,\n        }),\n        enumMembers[i].node,\n      ),\n    );\n  }\n\n  return {\n    fill: {\n      ID: t.cloneNode(id),\n      ASSIGNMENTS: assignments,\n    },\n    data,\n    isPure,\n  };\n}\n\nexport function isSyntacticallyString(expr: t.Expression): boolean {\n  // @ts-ignore(Babel 7 vs Babel 8) Type 'Expression | Super' is not assignable to type 'Expression' in Babel 8\n  expr = skipTransparentExprWrapperNodes(expr);\n  switch (expr.type) {\n    case \"BinaryExpression\": {\n      const left = expr.left;\n      const right = expr.right;\n      return (\n        expr.operator === \"+\" &&\n        (isSyntacticallyString(left as t.Expression) ||\n          isSyntacticallyString(right))\n      );\n    }\n    case \"TemplateLiteral\":\n    case \"StringLiteral\":\n      return true;\n  }\n  return false;\n}\n\n/**\n * Maps the name of an enum member to its value.\n * We keep track of the previous enum members so you can write code like:\n *   enum E {\n *     X = 1 << 0,\n *     Y = 1 << 1,\n *     Z = X | Y,\n *   }\n */\ntype PreviousEnumMembers = Map<string, number | string>;\n\ntype EnumSelfReferenceVisitorState = {\n  seen: PreviousEnumMembers;\n  path: NodePath<t.TSEnumDeclaration>;\n  t: t;\n};\n\nfunction ReferencedIdentifier(\n  expr: NodePath<t.Identifier>,\n  state: EnumSelfReferenceVisitorState,\n) {\n  const { seen, path, t } = state;\n  const name = expr.node.name;\n\n  if (seen.has(name)) {\n    for (\n      let curScope = expr.scope;\n      curScope !== path.scope;\n      curScope = curScope.parent\n    ) {\n      if (curScope.hasOwnBinding(name)) {\n        /* The name is declared inside enum:\n        enum Foo {\n          A,\n          B = (() => {\n            const A = 1;\n            return A;\n          })())\n        } */\n        return;\n      }\n    }\n\n    expr.replaceWith(\n      t.memberExpression(t.cloneNode(path.node.id), t.cloneNode(expr.node)),\n    );\n    expr.skip();\n  }\n}\n\nconst enumSelfReferenceVisitor = {\n  ReferencedIdentifier,\n};\n\nexport function translateEnumValues(path: NodePath<t.TSEnumDeclaration>, t: t) {\n  const bindingIdentifier = path.scope.getBindingIdentifier(path.node.id.name);\n  const seen: PreviousEnumMembers = ENUMS.get(bindingIdentifier) ?? new Map();\n\n  // Start at -1 so the first enum member is its increment, 0.\n  let constValue: number | string | undefined = -1;\n  let lastName: string;\n  let isPure = true;\n\n  const enumMembers: NodePath<t.TSEnumMember>[] = process.env.BABEL_8_BREAKING\n    ? // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n      path.get(\"body\").get(\"members\")\n    : path.get(\"members\");\n\n  const enumValues: Array<[name: string, value: t.Expression]> =\n    enumMembers.map(memberPath => {\n      const member = memberPath.node;\n      const name = t.isIdentifier(member.id) ? member.id.name : member.id.value;\n      const initializerPath = memberPath.get(\"initializer\");\n      const initializer = member.initializer;\n      let value: t.Expression;\n      if (initializer) {\n        constValue = computeConstantValue(initializerPath, seen);\n        if (constValue !== undefined) {\n          seen.set(name, constValue);\n          assert(\n            typeof constValue === \"number\" || typeof constValue === \"string\",\n          );\n          // We do not use `t.valueToNode` because `Infinity`/`NaN` might refer\n          // to a local variable. Even 1/0\n          // Revisit once https://github.com/microsoft/TypeScript/issues/55091\n          // is fixed. Note: we will have to distinguish between actual\n          // infinities and reference  to non-infinite variables names Infinity.\n          if (constValue === Infinity || Number.isNaN(constValue)) {\n            value = t.identifier(String(constValue));\n          } else if (constValue === -Infinity) {\n            value = t.unaryExpression(\"-\", t.identifier(\"Infinity\"));\n          } else {\n            value = t.valueToNode(constValue);\n          }\n        } else {\n          isPure &&= initializerPath.isPure();\n\n          if (initializerPath.isReferencedIdentifier()) {\n            ReferencedIdentifier(initializerPath, {\n              t,\n              seen,\n              path,\n            });\n          } else {\n            initializerPath.traverse(enumSelfReferenceVisitor, {\n              t,\n              seen,\n              path,\n            });\n          }\n\n          value = initializerPath.node;\n          seen.set(name, undefined);\n        }\n      } else if (typeof constValue === \"number\") {\n        constValue += 1;\n        value = t.numericLiteral(constValue);\n        seen.set(name, constValue);\n      } else if (typeof constValue === \"string\") {\n        throw path.buildCodeFrameError(\"Enum member must have initializer.\");\n      } else {\n        // create dynamic initializer: 1 + ENUM[\"PREVIOUS\"]\n        const lastRef = t.memberExpression(\n          t.cloneNode(path.node.id),\n          t.stringLiteral(lastName),\n          true,\n        );\n        value = t.binaryExpression(\"+\", t.numericLiteral(1), lastRef);\n        seen.set(name, undefined);\n      }\n\n      lastName = name;\n      return [name, value];\n    });\n\n  return {\n    isPure,\n    data: seen,\n    enumValues,\n  };\n}\n\n// Based on the TypeScript repository's `computeConstantValue` in `checker.ts`.\nfunction computeConstantValue(\n  path: NodePath,\n  prevMembers?: PreviousEnumMembers,\n  seen: Set<t.Identifier> = new Set(),\n): number | string | undefined {\n  return evaluate(path);\n\n  function evaluate(path: NodePath): number | string | undefined {\n    const expr = path.node;\n    switch (expr.type) {\n      case \"MemberExpression\":\n        return evaluateRef(path, prevMembers, seen);\n      case \"StringLiteral\":\n        return expr.value;\n      case \"UnaryExpression\":\n        return evalUnaryExpression(path as NodePath<t.UnaryExpression>);\n      case \"BinaryExpression\":\n        return evalBinaryExpression(path as NodePath<t.BinaryExpression>);\n      case \"NumericLiteral\":\n        return expr.value;\n      case \"ParenthesizedExpression\":\n        return evaluate(path.get(\"expression\"));\n      case \"Identifier\":\n        return evaluateRef(path, prevMembers, seen);\n      case \"TemplateLiteral\": {\n        if (expr.quasis.length === 1) {\n          return expr.quasis[0].value.cooked;\n        }\n\n        const paths = (path as NodePath<t.TemplateLiteral>).get(\"expressions\");\n        const quasis = expr.quasis;\n        let str = \"\";\n\n        for (let i = 0; i < quasis.length; i++) {\n          str += quasis[i].value.cooked;\n\n          if (i + 1 < quasis.length) {\n            const value = evaluateRef(paths[i], prevMembers, seen);\n            if (value === undefined) return undefined;\n            str += value;\n          }\n        }\n        return str;\n      }\n      default:\n        return undefined;\n    }\n  }\n\n  function evaluateRef(\n    path: NodePath,\n    prevMembers: PreviousEnumMembers,\n    seen: Set<t.Identifier>,\n  ): number | string | undefined {\n    if (path.isMemberExpression()) {\n      const expr = path.node;\n\n      const obj = expr.object;\n      const prop = expr.property;\n      if (\n        !t.isIdentifier(obj) ||\n        (expr.computed ? !t.isStringLiteral(prop) : !t.isIdentifier(prop))\n      ) {\n        return;\n      }\n      const bindingIdentifier = path.scope.getBindingIdentifier(obj.name);\n      const data = ENUMS.get(bindingIdentifier);\n      if (!data) return;\n      // @ts-expect-error checked above\n      return data.get(prop.computed ? prop.value : prop.name);\n    } else if (path.isIdentifier()) {\n      const name = path.node.name;\n\n      if ([\"Infinity\", \"NaN\"].includes(name)) {\n        return Number(name);\n      }\n\n      let value = prevMembers?.get(name);\n      if (value !== undefined) {\n        return value;\n      }\n      if (prevMembers?.has(name)) {\n        // prevMembers contains name => undefined. This means the value couldn't be pre-computed.\n        return undefined;\n      }\n\n      if (seen.has(path.node)) return;\n      seen.add(path.node);\n\n      value = computeConstantValue(path.resolve(), prevMembers, seen);\n      return value;\n    }\n  }\n\n  function evalUnaryExpression(\n    path: NodePath<t.UnaryExpression>,\n  ): number | string | undefined {\n    const value = evaluate(path.get(\"argument\"));\n    if (value === undefined) {\n      return undefined;\n    }\n\n    switch (path.node.operator) {\n      case \"+\":\n        return value;\n      case \"-\":\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-unary-minus\n        return -value;\n      case \"~\":\n        return ~value;\n      default:\n        return undefined;\n    }\n  }\n\n  function evalBinaryExpression(\n    path: NodePath<t.BinaryExpression>,\n  ): number | string | undefined {\n    const left = evaluate(path.get(\"left\")) as any;\n    if (left === undefined) {\n      return undefined;\n    }\n    const right = evaluate(path.get(\"right\")) as any;\n    if (right === undefined) {\n      return undefined;\n    }\n\n    switch (path.node.operator) {\n      case \"|\":\n        return left | right;\n      case \"&\":\n        return left & right;\n      case \">>\":\n        return left >> right;\n      case \">>>\":\n        return left >>> right;\n      case \"<<\":\n        return left << right;\n      case \"^\":\n        return left ^ right;\n      case \"*\":\n        return left * right;\n      case \"/\":\n        return left / right;\n      case \"+\":\n        return left + right;\n      case \"-\":\n        return left - right;\n      case \"%\":\n        return left % right;\n      case \"**\":\n        return left ** right;\n      default:\n        return undefined;\n    }\n  }\n}\n","import type { NodePath, types as t } from \"@babel/core\";\n\nimport { translateEnumValues } from \"./enum.ts\";\n\nexport const EXPORTED_CONST_ENUMS_IN_NAMESPACE =\n  new WeakSet<t.TSEnumDeclaration>();\n\nexport type NodePathConstEnum = NodePath<t.TSEnumDeclaration & { const: true }>;\nexport default function transpileConstEnum(\n  path: NodePathConstEnum,\n  t: typeof import(\"@babel/types\"),\n) {\n  const { name } = path.node.id;\n\n  const parentIsExport = path.parentPath.isExportNamedDeclaration();\n  let isExported = parentIsExport;\n  if (!isExported && t.isProgram(path.parent)) {\n    isExported = path.parent.body.some(\n      stmt =>\n        t.isExportNamedDeclaration(stmt) &&\n        stmt.exportKind !== \"type\" &&\n        !stmt.source &&\n        stmt.specifiers.some(\n          spec =>\n            t.isExportSpecifier(spec) &&\n            spec.exportKind !== \"type\" &&\n            spec.local.name === name,\n        ),\n    );\n  }\n\n  const { enumValues: entries } = translateEnumValues(path, t);\n\n  if (isExported || EXPORTED_CONST_ENUMS_IN_NAMESPACE.has(path.node)) {\n    const obj = t.objectExpression(\n      entries.map(([name, value]) =>\n        t.objectProperty(\n          t.isValidIdentifier(name)\n            ? t.identifier(name)\n            : t.stringLiteral(name),\n          value,\n        ),\n      ),\n    );\n\n    if (path.scope.hasOwnBinding(name)) {\n      (parentIsExport ? path.parentPath : path).replaceWith(\n        t.expressionStatement(\n          t.callExpression(\n            t.memberExpression(t.identifier(\"Object\"), t.identifier(\"assign\")),\n            [path.node.id, obj],\n          ),\n        ),\n      );\n    } else {\n      path.replaceWith(\n        t.variableDeclaration(process.env.BABEL_8_BREAKING ? \"const\" : \"var\", [\n          t.variableDeclarator(path.node.id, obj),\n        ]),\n      );\n      path.scope.registerDeclaration(path);\n    }\n\n    return;\n  }\n\n  const entriesMap = new Map(entries);\n\n  // TODO: After fixing https://github.com/babel/babel/pull/11065, we can\n  // use path.scope.getBinding(name).referencePaths rather than doing\n  // a full traversal.\n  path.scope.path.traverse({\n    Scope(path) {\n      if (path.scope.hasOwnBinding(name)) path.skip();\n    },\n    MemberExpression(path) {\n      if (!t.isIdentifier(path.node.object, { name })) return;\n\n      let key: string;\n      if (path.node.computed) {\n        if (t.isStringLiteral(path.node.property)) {\n          key = path.node.property.value;\n        } else {\n          return;\n        }\n      } else if (t.isIdentifier(path.node.property)) {\n        key = path.node.property.name;\n      } else {\n        return;\n      }\n      if (!entriesMap.has(key)) return;\n\n      path.replaceWith(t.cloneNode(entriesMap.get(key)));\n    },\n  });\n\n  path.remove();\n}\n","import type { NodePath, Scope } from \"@babel/core\";\n\nexport const GLOBAL_TYPES = new WeakMap<Scope, Set<string>>();\n\nexport function isGlobalType({ scope }: NodePath, name: string) {\n  if (scope.hasBinding(name)) return false;\n  if (GLOBAL_TYPES.get(scope).has(name)) return true;\n\n  console.warn(\n    `The exported identifier \"${name}\" is not declared in Babel's scope tracker\\n` +\n      `as a JavaScript value binding, and \"@babel/plugin-transform-typescript\"\\n` +\n      `never encountered it as a TypeScript type declaration.\\n` +\n      `It will be treated as a JavaScript value.\\n\\n` +\n      `This problem is likely caused by another plugin injecting\\n` +\n      `\"${name}\" without registering it in the scope tracker. If you are the author\\n` +\n      ` of that plugin, please use \"scope.registerDeclaration(declarationPath)\".`,\n  );\n\n  return false;\n}\n\nexport function registerGlobalType(programScope: Scope, name: string) {\n  GLOBAL_TYPES.get(programScope).add(name);\n}\n","import { template, types as t, type NodePath } from \"@babel/core\";\n\nimport { registerGlobalType } from \"./global-types.ts\";\nimport { EXPORTED_CONST_ENUMS_IN_NAMESPACE } from \"./const-enum.ts\";\n\nexport function getFirstIdentifier(node: t.TSEntityName): t.Identifier {\n  if (t.isIdentifier(node)) {\n    return node;\n  }\n  // In Babel 8 TSEntityName also includes ThisExpression, however, a namespace\n  // id must not be a ThisExpression or a TSQualifiedName { left: ThisExpression }.\n  // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n  return getFirstIdentifier((node as t.TSQualifiedName).left);\n}\n\nexport default function transpileNamespace(\n  path: NodePath<t.TSModuleDeclaration>,\n  allowNamespaces: boolean,\n) {\n  if (path.node.declare || path.node.id.type === \"StringLiteral\") {\n    path.remove();\n    return;\n  }\n\n  if (!allowNamespaces) {\n    throw path\n      .get(\"id\")\n      .buildCodeFrameError(\n        \"Namespace not marked type-only declare.\" +\n          \" Non-declarative namespaces are only supported experimentally in Babel.\" +\n          \" To enable and review caveats see:\" +\n          \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n      );\n  }\n\n  const name = getFirstIdentifier(path.node.id).name;\n  const value = handleNested(path, path.node);\n  if (value === null) {\n    // This means that `path` is a type-only namespace.\n    // We call `registerGlobalType` here to allow it to be stripped.\n    const program = path.findParent(p => p.isProgram());\n    registerGlobalType(program.scope, name);\n\n    path.remove();\n  } else if (path.scope.hasOwnBinding(name)) {\n    path.replaceWith(value);\n  } else {\n    path.scope.registerDeclaration(\n      path.replaceWithMultiple([getDeclaration(name), value])[0],\n    );\n  }\n}\n\nfunction getDeclaration(name: string) {\n  return t.variableDeclaration(\"let\", [\n    t.variableDeclarator(t.identifier(name)),\n  ]);\n}\n\nfunction getMemberExpression(name: string, itemName: string) {\n  return t.memberExpression(t.identifier(name), t.identifier(itemName));\n}\n\n/**\n * Convert export const foo = 1 to Namespace.foo = 1;\n *\n * @param {t.VariableDeclaration} node given variable declaration, e.g. `const foo = 1`\n * @param {string} name the generated unique namespace member name\n * @param {*} hub An instance implements HubInterface defined in `@babel/traverse` that can throw a code frame error\n */\nfunction handleVariableDeclaration(\n  node: t.VariableDeclaration,\n  name: string,\n  hub: any,\n): t.Statement[] {\n  if (node.kind !== \"const\") {\n    throw hub.file.buildCodeFrameError(\n      node,\n      \"Namespaces exporting non-const are not supported by Babel.\" +\n        \" Change to const or see:\" +\n        \" https://babeljs.io/docs/en/babel-plugin-transform-typescript\",\n    );\n  }\n  const { declarations } = node;\n  if (\n    declarations.every(\n      (declarator): declarator is t.VariableDeclarator & { id: t.Identifier } =>\n        t.isIdentifier(declarator.id),\n    )\n  ) {\n    // `export const a = 1` transforms to `const a = N.a = 1`, the output\n    // is smaller than `const a = 1; N.a = a`;\n    for (const declarator of declarations) {\n      declarator.init = t.assignmentExpression(\n        \"=\",\n        getMemberExpression(name, declarator.id.name),\n        declarator.init,\n      );\n    }\n    return [node];\n  }\n  // Now we have pattern in declarators\n  // `export const [a] = 1` transforms to `const [a] = 1; N.a = a`\n  const bindingIdentifiers = t.getBindingIdentifiers(node);\n  const assignments = [];\n  // getBindingIdentifiers returns an object without prototype.\n  // eslint-disable-next-line guard-for-in\n  for (const idName in bindingIdentifiers) {\n    assignments.push(\n      t.assignmentExpression(\n        \"=\",\n        getMemberExpression(name, idName),\n        t.cloneNode(bindingIdentifiers[idName]),\n      ),\n    );\n  }\n  return [node, t.expressionStatement(t.sequenceExpression(assignments))];\n}\n\nfunction buildNestedAmbientModuleError(path: NodePath, node: t.Node) {\n  return path.hub.buildError(\n    node,\n    \"Ambient modules cannot be nested in other modules or namespaces.\",\n    Error,\n  );\n}\n\nfunction handleNested(\n  path: NodePath,\n  node: t.TSModuleDeclaration,\n  parentExport?: t.Expression,\n): t.Statement | null {\n  const names = new Set();\n  const realName =\n    !process.env.BABEL_8_BREAKING || t.isIdentifier(node.id)\n      ? (node.id as t.Identifier)\n      : getFirstIdentifier(node.id as unknown as t.TSQualifiedName);\n\n  const name = path.scope.generateUid(realName.name);\n\n  const body = node.body;\n  let id = node.id;\n  let namespaceTopLevel: t.Statement[];\n  if (process.env.BABEL_8_BREAKING) {\n    if (t.isTSQualifiedName(id)) {\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      namespaceTopLevel = body.body;\n      while (t.isTSQualifiedName(id)) {\n        namespaceTopLevel = [\n          t.exportNamedDeclaration(\n            t.tsModuleDeclaration(\n              // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n              t.cloneNode(id.right),\n              t.tsModuleBlock(namespaceTopLevel),\n            ),\n          ),\n        ];\n\n        // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n        id = id.left;\n      }\n    } else {\n      // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST shape\n      namespaceTopLevel = body.body;\n    }\n  } else {\n    namespaceTopLevel = t.isTSModuleBlock(body)\n      ? body.body\n      : // We handle `namespace X.Y {}` as if it was\n        //   namespace X {\n        //     export namespace Y {}\n        //   }\n        [t.exportNamedDeclaration(body)];\n  }\n\n  let isEmpty = true;\n\n  for (let i = 0; i < namespaceTopLevel.length; i++) {\n    const subNode = namespaceTopLevel[i];\n\n    // The first switch is mainly to detect name usage. Only export\n    // declarations require further transformation.\n    switch (subNode.type) {\n      case \"TSModuleDeclaration\": {\n        if (!t.isIdentifier(subNode.id)) {\n          throw buildNestedAmbientModuleError(path, subNode);\n        }\n\n        const transformed = handleNested(path, subNode);\n        if (transformed !== null) {\n          isEmpty = false;\n          const moduleName = subNode.id.name;\n          if (names.has(moduleName)) {\n            namespaceTopLevel[i] = transformed;\n          } else {\n            names.add(moduleName);\n            namespaceTopLevel.splice(\n              i++,\n              1,\n              getDeclaration(moduleName),\n              transformed,\n            );\n          }\n        }\n        continue;\n      }\n      case \"TSEnumDeclaration\":\n      case \"FunctionDeclaration\":\n      case \"ClassDeclaration\":\n        isEmpty = false;\n        names.add(subNode.id.name);\n        continue;\n      case \"VariableDeclaration\": {\n        isEmpty = false;\n        // getBindingIdentifiers returns an object without prototype.\n        // eslint-disable-next-line guard-for-in\n        for (const name in t.getBindingIdentifiers(subNode)) {\n          names.add(name);\n        }\n        continue;\n      }\n      default:\n        isEmpty &&= t.isTypeScript(subNode);\n        // Neither named declaration nor export, continue to next item.\n        continue;\n      case \"ExportNamedDeclaration\":\n      // Export declarations get parsed using the next switch.\n    }\n\n    if (\"declare\" in subNode.declaration && subNode.declaration.declare) {\n      continue;\n    }\n\n    // Transform the export declarations that occur inside of a namespace.\n    switch (subNode.declaration.type) {\n      case \"TSEnumDeclaration\":\n        EXPORTED_CONST_ENUMS_IN_NAMESPACE.add(subNode.declaration);\n      // fallthrough\n      case \"FunctionDeclaration\":\n      case \"ClassDeclaration\": {\n        isEmpty = false;\n        const itemName = subNode.declaration.id.name;\n        names.add(itemName);\n        namespaceTopLevel.splice(\n          i++,\n          1,\n          subNode.declaration,\n          t.expressionStatement(\n            t.assignmentExpression(\n              \"=\",\n              getMemberExpression(name, itemName),\n              t.identifier(itemName),\n            ),\n          ),\n        );\n        break;\n      }\n      case \"VariableDeclaration\": {\n        isEmpty = false;\n        const nodes = handleVariableDeclaration(\n          subNode.declaration,\n          name,\n          path.hub,\n        );\n        namespaceTopLevel.splice(i, nodes.length, ...nodes);\n        i += nodes.length - 1;\n        break;\n      }\n      case \"TSModuleDeclaration\": {\n        if (!t.isIdentifier(subNode.declaration.id)) {\n          throw buildNestedAmbientModuleError(path, subNode.declaration);\n        }\n\n        const transformed = handleNested(\n          path,\n          subNode.declaration,\n          t.identifier(name),\n        );\n        if (transformed !== null) {\n          isEmpty = false;\n          const moduleName = subNode.declaration.id.name;\n          if (names.has(moduleName)) {\n            namespaceTopLevel[i] = transformed;\n          } else {\n            names.add(moduleName);\n            namespaceTopLevel.splice(\n              i++,\n              1,\n              getDeclaration(moduleName),\n              transformed,\n            );\n          }\n        } else {\n          namespaceTopLevel.splice(i, 1);\n          i--;\n        }\n      }\n    }\n  }\n\n  if (isEmpty) return null;\n\n  // {}\n  let fallthroughValue: t.Expression = t.objectExpression([]);\n\n  if (parentExport) {\n    const memberExpr = t.memberExpression(parentExport, realName);\n    fallthroughValue = template.expression.ast`\n      ${t.cloneNode(memberExpr)} ||\n        (${t.cloneNode(memberExpr)} = ${fallthroughValue})\n    `;\n  }\n\n  return template.statement.ast`\n    (function (${t.identifier(name)}) {\n      ${namespaceTopLevel}\n    })(${realName} || (${t.cloneNode(realName)} = ${fallthroughValue}));\n  `;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport syntaxTypeScript from \"@babel/plugin-syntax-typescript\";\nimport type { PluginPass, types as t, Scope, NodePath } from \"@babel/core\";\nimport { injectInitialization } from \"@babel/helper-create-class-features-plugin\";\nimport type { Options as SyntaxOptions } from \"@babel/plugin-syntax-typescript\";\n\nimport transpileConstEnum from \"./const-enum.ts\";\nimport type { NodePathConstEnum } from \"./const-enum.ts\";\nimport transpileEnum from \"./enum.ts\";\nimport {\n  GLOBAL_TYPES,\n  isGlobalType,\n  registerGlobalType,\n} from \"./global-types.ts\";\nimport transpileNamespace, { getFirstIdentifier } from \"./namespace.ts\";\n\nfunction isInType(path: NodePath) {\n  switch (path.parent.type) {\n    case \"TSTypeReference\":\n    case process.env.BABEL_8_BREAKING\n      ? \"TSClassImplements\"\n      : \"TSExpressionWithTypeArguments\":\n    case process.env.BABEL_8_BREAKING\n      ? \"TSInterfaceHeritage\"\n      : \"TSExpressionWithTypeArguments\":\n    case \"TSTypeQuery\":\n      return true;\n    case \"TSQualifiedName\":\n      return (\n        // `import foo = ns.bar` is transformed to `var foo = ns.bar` and should not be removed\n        path.parentPath.findParent(path => path.type !== \"TSQualifiedName\")\n          .type !== \"TSImportEqualsDeclaration\"\n      );\n    case \"ExportSpecifier\":\n      return (\n        // export { type foo };\n        path.parent.exportKind === \"type\" ||\n        // export type { foo };\n        // @ts-expect-error: DeclareExportDeclaration does not have `exportKind`\n        (path.parentPath as NodePath<t.ExportSpecifier>).parent.exportKind ===\n          \"type\"\n      );\n    default:\n      return false;\n  }\n}\n\n// Track programs which contain imports/exports of values, so that we can include\n// empty exports for programs that do not, but were parsed as modules. This allows\n// tools to infer unambiguously that results are ESM.\nconst NEEDS_EXPLICIT_ESM = new WeakMap();\nconst PARSED_PARAMS = new WeakSet();\n\n// A hack to avoid removing the impl Binding when we remove the declare NodePath\nfunction safeRemove(path: NodePath) {\n  const ids = path.getBindingIdentifiers();\n  for (const name of Object.keys(ids)) {\n    const binding = path.scope.getBinding(name);\n    if (binding && binding.identifier === ids[name]) {\n      binding.scope.removeBinding(name);\n    }\n  }\n  path.opts.noScope = true;\n  path.remove();\n  path.opts.noScope = false;\n}\n\nfunction assertCjsTransformEnabled(\n  path: NodePath,\n  pass: PluginPass,\n  wrong: string,\n  suggestion: string,\n  extra: string = \"\",\n): void {\n  if (pass.file.get(\"@babel/plugin-transform-modules-*\") !== \"commonjs\") {\n    throw path.buildCodeFrameError(\n      `\\`${wrong}\\` is only supported when compiling modules to CommonJS.\\n` +\n        `Please consider using \\`${suggestion}\\`${extra}, or add ` +\n        `@babel/plugin-transform-modules-commonjs to your Babel config.`,\n    );\n  }\n}\n\nexport interface Options extends SyntaxOptions {\n  /** @default true */\n  allowNamespaces?: boolean;\n  /** @default \"React.createElement\" */\n  jsxPragma?: string;\n  /** @default \"React.Fragment\" */\n  jsxPragmaFrag?: string;\n  onlyRemoveTypeImports?: boolean;\n  optimizeConstEnums?: boolean;\n  allowDeclareFields?: boolean;\n}\n\ntype ExtraNodeProps = {\n  declare?: unknown;\n  accessibility?: unknown;\n  abstract?: unknown;\n  optional?: unknown;\n  override?: unknown;\n};\n\nexport default declare((api, opts: Options) => {\n  // `@babel/core` and `@babel/types` are bundled in some downstream libraries.\n  // Ref: https://github.com/babel/babel/issues/15089\n  const { types: t, template } = api;\n\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const JSX_PRAGMA_REGEX = /\\*?\\s*@jsx((?:Frag)?)\\s+(\\S+)/;\n\n  const {\n    allowNamespaces = true,\n    jsxPragma = \"React.createElement\",\n    jsxPragmaFrag = \"React.Fragment\",\n    onlyRemoveTypeImports = false,\n    optimizeConstEnums = false,\n  } = opts;\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // eslint-disable-next-line no-var\n    var { allowDeclareFields = false } = opts;\n  }\n\n  const classMemberVisitors = {\n    field(\n      path: NodePath<\n        (t.ClassPrivateProperty | t.ClassProperty | t.ClassAccessorProperty) &\n          ExtraNodeProps\n      >,\n    ) {\n      const { node } = path;\n\n      if (!process.env.BABEL_8_BREAKING) {\n        if (!allowDeclareFields && node.declare) {\n          throw path.buildCodeFrameError(\n            `The 'declare' modifier is only allowed when the 'allowDeclareFields' option of ` +\n              `@babel/plugin-transform-typescript or @babel/preset-typescript is enabled.`,\n          );\n        }\n      }\n      if (node.declare) {\n        if (node.value) {\n          throw path.buildCodeFrameError(\n            `Fields with the 'declare' modifier cannot be initialized here, but only in the constructor`,\n          );\n        }\n        if (!node.decorators) {\n          path.remove();\n        }\n      } else if (node.definite) {\n        if (node.value) {\n          throw path.buildCodeFrameError(\n            `Definitely assigned fields cannot be initialized here, but only in the constructor`,\n          );\n        }\n        if (!process.env.BABEL_8_BREAKING) {\n          // keep the definitely assigned fields only when `allowDeclareFields` (equivalent of\n          // Typescript's `useDefineForClassFields`) is true\n          if (\n            !allowDeclareFields &&\n            !node.decorators &&\n            !t.isClassPrivateProperty(node)\n          ) {\n            path.remove();\n          }\n        }\n      } else if (node.abstract) {\n        path.remove();\n      } else if (!process.env.BABEL_8_BREAKING) {\n        if (\n          !allowDeclareFields &&\n          !node.value &&\n          !node.decorators &&\n          !t.isClassPrivateProperty(node)\n        ) {\n          path.remove();\n        }\n      }\n\n      if (node.accessibility) node.accessibility = null;\n      if (node.abstract) node.abstract = null;\n      if (node.readonly) node.readonly = null;\n      if (node.optional) node.optional = null;\n      if (node.typeAnnotation) node.typeAnnotation = null;\n      if (node.definite) node.definite = null;\n      if (node.declare) node.declare = null;\n      if (node.override) node.override = null;\n    },\n    method({ node }: NodePath<t.ClassMethod | t.ClassPrivateMethod>) {\n      if (node.accessibility) node.accessibility = null;\n      if (node.abstract) node.abstract = null;\n      if (node.optional) node.optional = null;\n      if (node.override) node.override = null;\n\n      // Rest handled by Function visitor\n    },\n    constructor(path: NodePath<t.ClassMethod>, classPath: NodePath<t.Class>) {\n      if (path.node.accessibility) path.node.accessibility = null;\n      // Collects parameter properties so that we can add an assignment\n      // for each of them in the constructor body\n      //\n      // We use a WeakSet to ensure an assignment for a parameter\n      // property is only added once. This is necessary for cases like\n      // using `transform-classes`, which causes this visitor to run\n      // twice.\n      const assigns: t.ExpressionStatement[] = [];\n      const { scope } = path;\n      for (const paramPath of path.get(\"params\")) {\n        const param = paramPath.node;\n        if (param.type === \"TSParameterProperty\") {\n          const parameter = param.parameter;\n          if (PARSED_PARAMS.has(parameter)) continue;\n          PARSED_PARAMS.add(parameter);\n          let id;\n          if (t.isIdentifier(parameter)) {\n            id = parameter;\n          } else if (\n            t.isAssignmentPattern(parameter) &&\n            t.isIdentifier(parameter.left)\n          ) {\n            id = parameter.left;\n          } else {\n            throw paramPath.buildCodeFrameError(\n              \"Parameter properties can not be destructuring patterns.\",\n            );\n          }\n          assigns.push(\n            template.statement.ast`\n              this.${t.cloneNode(id)} = ${t.cloneNode(id)}\n            ` as t.ExpressionStatement,\n          );\n\n          paramPath.replaceWith(paramPath.get(\"parameter\"));\n          scope.registerBinding(\"param\", paramPath);\n        }\n      }\n      injectInitialization(classPath, path, assigns);\n    },\n  };\n\n  return {\n    name: \"transform-typescript\",\n    inherits: syntaxTypeScript,\n\n    visitor: {\n      //\"Pattern\" alias doesn't include Identifier or RestElement.\n      Pattern: visitPattern,\n      Identifier: visitPattern,\n      RestElement: visitPattern,\n\n      Program: {\n        enter(path, state) {\n          const { file } = state;\n          let fileJsxPragma = null;\n          let fileJsxPragmaFrag = null;\n          const programScope = path.scope;\n\n          if (!GLOBAL_TYPES.has(programScope)) {\n            GLOBAL_TYPES.set(programScope, new Set());\n          }\n\n          if (file.ast.comments) {\n            for (const comment of file.ast.comments) {\n              const jsxMatches = JSX_PRAGMA_REGEX.exec(comment.value);\n              if (jsxMatches) {\n                if (jsxMatches[1]) {\n                  // isFragment\n                  fileJsxPragmaFrag = jsxMatches[2];\n                } else {\n                  fileJsxPragma = jsxMatches[2];\n                }\n              }\n            }\n          }\n\n          let pragmaImportName = fileJsxPragma || jsxPragma;\n          if (pragmaImportName) {\n            [pragmaImportName] = pragmaImportName.split(\".\");\n          }\n\n          let pragmaFragImportName = fileJsxPragmaFrag || jsxPragmaFrag;\n          if (pragmaFragImportName) {\n            [pragmaFragImportName] = pragmaFragImportName.split(\".\");\n          }\n\n          // remove type imports\n          for (let stmt of path.get(\"body\") as Iterable<\n            NodePath<t.Statement | t.Expression>\n          >) {\n            if (stmt.isImportDeclaration()) {\n              if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n                NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n              }\n\n              if (stmt.node.importKind === \"type\") {\n                for (const specifier of stmt.node.specifiers) {\n                  registerGlobalType(programScope, specifier.local.name);\n                }\n                stmt.remove();\n                continue;\n              }\n\n              const importsToRemove: Set<NodePath<t.Node>> = new Set();\n              const specifiersLength = stmt.node.specifiers.length;\n              const isAllSpecifiersElided = () =>\n                specifiersLength > 0 &&\n                specifiersLength === importsToRemove.size;\n\n              for (const specifier of stmt.node.specifiers) {\n                if (\n                  specifier.type === \"ImportSpecifier\" &&\n                  specifier.importKind === \"type\"\n                ) {\n                  registerGlobalType(programScope, specifier.local.name);\n                  const binding = stmt.scope.getBinding(specifier.local.name);\n                  if (binding) {\n                    importsToRemove.add(binding.path);\n                  }\n                }\n              }\n\n              // If onlyRemoveTypeImports is `true`, only remove type-only imports\n              // and exports introduced in TypeScript 3.8.\n              if (onlyRemoveTypeImports) {\n                NEEDS_EXPLICIT_ESM.set(path.node, false);\n              } else {\n                // Note: this will allow both `import { } from \"m\"` and `import \"m\";`.\n                // In TypeScript, the former would be elided.\n                if (stmt.node.specifiers.length === 0) {\n                  NEEDS_EXPLICIT_ESM.set(path.node, false);\n                  continue;\n                }\n\n                for (const specifier of stmt.node.specifiers) {\n                  const binding = stmt.scope.getBinding(specifier.local.name);\n\n                  // The binding may not exist if the import node was explicitly\n                  // injected by another plugin. Currently core does not do a good job\n                  // of keeping scope bindings synchronized with the AST. For now we\n                  // just bail if there is no binding, since chances are good that if\n                  // the import statement was injected then it wasn't a typescript type\n                  // import anyway.\n                  if (binding && !importsToRemove.has(binding.path)) {\n                    if (\n                      isImportTypeOnly({\n                        binding,\n                        programPath: path,\n                        pragmaImportName,\n                        pragmaFragImportName,\n                      })\n                    ) {\n                      importsToRemove.add(binding.path);\n                    } else {\n                      NEEDS_EXPLICIT_ESM.set(path.node, false);\n                    }\n                  }\n                }\n              }\n\n              if (isAllSpecifiersElided() && !onlyRemoveTypeImports) {\n                stmt.remove();\n              } else {\n                for (const importPath of importsToRemove) {\n                  importPath.remove();\n                }\n              }\n\n              continue;\n            }\n\n            if (!onlyRemoveTypeImports && stmt.isTSImportEqualsDeclaration()) {\n              const { id } = stmt.node;\n              const binding = stmt.scope.getBinding(id.name);\n              if (\n                binding &&\n                (process.env.BABEL_8_BREAKING ||\n                  // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n                  !stmt.node.isExport) &&\n                isImportTypeOnly({\n                  binding,\n                  programPath: path,\n                  pragmaImportName,\n                  pragmaFragImportName,\n                })\n              ) {\n                stmt.remove();\n                continue;\n              }\n            }\n\n            if (stmt.isExportDeclaration()) {\n              stmt = stmt.get(\"declaration\");\n            }\n\n            if (stmt.isVariableDeclaration({ declare: true })) {\n              for (const name of Object.keys(stmt.getBindingIdentifiers())) {\n                registerGlobalType(programScope, name);\n              }\n            } else if (\n              stmt.isTSTypeAliasDeclaration() ||\n              (stmt.isTSDeclareFunction() && stmt.get(\"id\").isIdentifier()) ||\n              stmt.isTSInterfaceDeclaration() ||\n              stmt.isClassDeclaration({ declare: true }) ||\n              stmt.isTSEnumDeclaration({ declare: true }) ||\n              (stmt.isTSModuleDeclaration({ declare: true }) &&\n                stmt.get(\"id\").isIdentifier())\n            ) {\n              registerGlobalType(\n                programScope,\n                (stmt.node.id as t.Identifier).name,\n              );\n            }\n          }\n        },\n        exit(path) {\n          if (\n            path.node.sourceType === \"module\" &&\n            NEEDS_EXPLICIT_ESM.get(path.node)\n          ) {\n            // If there are no remaining value exports, this file can no longer\n            // be inferred to be ESM. Leave behind an empty export declaration\n            // so it can be.\n            path.pushContainer(\"body\", t.exportNamedDeclaration());\n          }\n        },\n      },\n\n      ExportNamedDeclaration(path, state) {\n        if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n          NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n        }\n\n        if (path.node.exportKind === \"type\") {\n          path.remove();\n          return;\n        }\n\n        if (\n          process.env.BABEL_8_BREAKING &&\n          t.isTSImportEqualsDeclaration(path.node.declaration)\n        ) {\n          return;\n        }\n\n        // remove export declaration that is filled with type-only specifiers\n        //   export { type A1, type A2 } from \"a\";\n        if (\n          path.node.source &&\n          path.node.specifiers.length > 0 &&\n          path.node.specifiers.every(\n            specifier =>\n              specifier.type === \"ExportSpecifier\" &&\n              specifier.exportKind === \"type\",\n          )\n        ) {\n          path.remove();\n          return;\n        }\n\n        // remove export declaration if it's exporting only types\n        // This logic is needed when exportKind is \"value\", because\n        // currently the \"type\" keyword is optional.\n        // TODO:\n        // Also, currently @babel/parser sets exportKind to \"value\" for\n        //   export interface A {}\n        //   etc.\n        if (\n          !path.node.source &&\n          path.node.specifiers.length > 0 &&\n          path.node.specifiers.every(\n            specifier =>\n              t.isExportSpecifier(specifier) &&\n              isGlobalType(path, specifier.local.name),\n          )\n        ) {\n          path.remove();\n          return;\n        }\n\n        // Convert `export namespace X {}` into `export let X; namespace X {}`,\n        // so that when visiting TSModuleDeclaration we do not have to possibly\n        // replace its parent path.\n        if (t.isTSModuleDeclaration(path.node.declaration)) {\n          const namespace = path.node.declaration;\n          if (!t.isStringLiteral(namespace.id)) {\n            const id = getFirstIdentifier(namespace.id);\n            if (path.scope.hasOwnBinding(id.name)) {\n              path.replaceWith(namespace);\n            } else {\n              const [newExport] = path.replaceWithMultiple([\n                t.exportNamedDeclaration(\n                  t.variableDeclaration(\"let\", [\n                    t.variableDeclarator(t.cloneNode(id)),\n                  ]),\n                ),\n                namespace,\n              ]);\n              path.scope.registerDeclaration(newExport);\n            }\n          }\n        }\n\n        NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n      },\n\n      ExportAllDeclaration(path) {\n        if (path.node.exportKind === \"type\") path.remove();\n      },\n\n      ExportSpecifier(path) {\n        // remove type exports\n        type Parent = t.ExportDeclaration & { source?: t.StringLiteral };\n        const parent = path.parent as Parent;\n        if (\n          (!parent.source && isGlobalType(path, path.node.local.name)) ||\n          path.node.exportKind === \"type\"\n        ) {\n          path.remove();\n        }\n      },\n\n      ExportDefaultDeclaration(path, state) {\n        if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {\n          NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);\n        }\n\n        // remove whole declaration if it's exporting a TS type\n        if (\n          t.isIdentifier(path.node.declaration) &&\n          isGlobalType(path, path.node.declaration.name)\n        ) {\n          path.remove();\n\n          return;\n        }\n\n        NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);\n      },\n\n      TSDeclareFunction(path) {\n        safeRemove(path);\n      },\n\n      TSDeclareMethod(path) {\n        safeRemove(path);\n      },\n\n      VariableDeclaration(path) {\n        if (path.node.declare) {\n          safeRemove(path);\n        }\n      },\n\n      VariableDeclarator({ node }) {\n        if (node.definite) node.definite = null;\n      },\n\n      TSIndexSignature(path) {\n        path.remove();\n      },\n\n      ClassDeclaration(path) {\n        const { node } = path;\n        if (node.declare) {\n          safeRemove(path);\n        }\n      },\n\n      Class(path) {\n        const { node }: { node: typeof path.node & ExtraNodeProps } = path;\n\n        if (node.typeParameters) node.typeParameters = null;\n        if (process.env.BABEL_8_BREAKING) {\n          // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          if (node.superTypeArguments) node.superTypeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Renamed\n          if (node.superTypeParameters) node.superTypeParameters = null;\n        }\n        if (node.implements) node.implements = null;\n        if (node.abstract) node.abstract = null;\n\n        // Similar to the logic in `transform-flow-strip-types`, we need to\n        // handle `TSParameterProperty` and `ClassProperty` here because the\n        // class transform would transform the class, causing more specific\n        // visitors to not run.\n        path.get(\"body.body\").forEach(child => {\n          if (child.isClassMethod() || child.isClassPrivateMethod()) {\n            if (child.node.kind === \"constructor\") {\n              classMemberVisitors.constructor(\n                // @ts-expect-error A constructor must not be a private method\n                child,\n                path,\n              );\n            } else {\n              classMemberVisitors.method(child);\n            }\n          } else if (\n            child.isClassProperty() ||\n            child.isClassPrivateProperty() ||\n            child.isClassAccessorProperty()\n          ) {\n            classMemberVisitors.field(child);\n          }\n        });\n      },\n\n      Function(path) {\n        const { node } = path;\n        if (node.typeParameters) node.typeParameters = null;\n        if (node.returnType) node.returnType = null;\n\n        const params = node.params;\n        if (params.length > 0 && t.isIdentifier(params[0], { name: \"this\" })) {\n          params.shift();\n        }\n      },\n\n      TSModuleDeclaration(path) {\n        transpileNamespace(path, allowNamespaces);\n      },\n\n      TSInterfaceDeclaration(path) {\n        path.remove();\n      },\n\n      TSTypeAliasDeclaration(path) {\n        path.remove();\n      },\n\n      TSEnumDeclaration(path) {\n        if (optimizeConstEnums && path.node.const) {\n          transpileConstEnum(path as NodePathConstEnum, t);\n        } else {\n          transpileEnum(path, t);\n        }\n      },\n\n      TSImportEqualsDeclaration(\n        path: NodePath<t.TSImportEqualsDeclaration>,\n        pass,\n      ) {\n        const { id, moduleReference } = path.node;\n\n        let init: t.Expression;\n        let varKind: \"var\" | \"const\";\n        if (t.isTSExternalModuleReference(moduleReference)) {\n          // import alias = require('foo');\n          assertCjsTransformEnabled(\n            path,\n            pass,\n            `import ${id.name} = require(...);`,\n            `import ${id.name} from '...';`,\n            \" alongside Typescript's --allowSyntheticDefaultImports option\",\n          );\n          init = t.callExpression(t.identifier(\"require\"), [\n            moduleReference.expression,\n          ]);\n          varKind = \"const\";\n        } else {\n          // import alias = Namespace;\n          init = entityNameToExpr(moduleReference);\n          varKind = \"var\";\n        }\n        const newNode = t.variableDeclaration(varKind, [\n          t.variableDeclarator(id, init),\n        ]);\n\n        if (process.env.BABEL_8_BREAKING) {\n          path.replaceWith(newNode);\n        } else {\n          path.replaceWith(\n            // @ts-ignore(Babel 7 vs Babel 8) Babel 7 AST\n            path.node.isExport ? t.exportNamedDeclaration(newNode) : newNode,\n          );\n        }\n        path.scope.registerDeclaration(path);\n      },\n\n      TSExportAssignment(path, pass) {\n        assertCjsTransformEnabled(\n          path,\n          pass,\n          `export = <value>;`,\n          `export default <value>;`,\n        );\n        path.replaceWith(\n          template.statement.ast`module.exports = ${path.node.expression}`,\n        );\n      },\n\n      TSTypeAssertion(path) {\n        path.replaceWith(path.node.expression);\n      },\n\n      [`TSAsExpression${\n        // Added in Babel 7.20.0\n        t.tsSatisfiesExpression ? \"|TSSatisfiesExpression\" : \"\"\n      }`](path: NodePath<t.TSAsExpression | t.TSSatisfiesExpression>) {\n        let { node }: { node: t.Expression } = path;\n        do {\n          node = node.expression;\n        } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression?.(node));\n        path.replaceWith(node);\n      },\n\n      [process.env.BABEL_8_BREAKING\n        ? \"TSNonNullExpression|TSInstantiationExpression\"\n        : /* This has been introduced in Babel 7.18.0\n             We use api.types.* and not t.* for feature detection,\n             because the Babel version that is running this plugin\n             (where we check if the visitor is valid) might be different\n             from the Babel version that we resolve with `import \"@babel/core\"`.\n             This happens, for example, with Next.js that bundled `@babel/core`\n             but allows loading unbundled plugin (which cannot obviously import\n             the bundled `@babel/core` version).\n           */\n          api.types.tsInstantiationExpression\n          ? \"TSNonNullExpression|TSInstantiationExpression\"\n          : \"TSNonNullExpression\"](\n        path: NodePath<t.TSNonNullExpression | t.TSInstantiationExpression>,\n      ) {\n        path.replaceWith(path.node.expression);\n      },\n\n      CallExpression(path) {\n        if (process.env.BABEL_8_BREAKING) {\n          path.node.typeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n          path.node.typeParameters = null;\n        }\n      },\n\n      OptionalCallExpression(path) {\n        if (process.env.BABEL_8_BREAKING) {\n          path.node.typeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n          path.node.typeParameters = null;\n        }\n      },\n\n      NewExpression(path) {\n        if (process.env.BABEL_8_BREAKING) {\n          path.node.typeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n          path.node.typeParameters = null;\n        }\n      },\n\n      JSXOpeningElement(path) {\n        if (process.env.BABEL_8_BREAKING) {\n          //@ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n          path.node.typeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n          path.node.typeParameters = null;\n        }\n      },\n\n      TaggedTemplateExpression(path) {\n        if (process.env.BABEL_8_BREAKING) {\n          // @ts-ignore(Babel 7 vs Babel 8) Babel 8 AST\n          path.node.typeArguments = null;\n        } else {\n          // @ts-ignore(Babel 7 vs Babel 8) Removed in Babel 8\n          path.node.typeParameters = null;\n        }\n      },\n    },\n  };\n\n  function entityNameToExpr(node: t.TSEntityName): t.Expression {\n    if (t.isTSQualifiedName(node)) {\n      return t.memberExpression(entityNameToExpr(node.left), node.right);\n    }\n\n    return node;\n  }\n\n  function visitPattern({\n    node,\n  }: NodePath<t.Identifier | t.Pattern | t.RestElement>) {\n    if (node.typeAnnotation) node.typeAnnotation = null;\n    if (t.isIdentifier(node) && node.optional) node.optional = null;\n    // 'access' and 'readonly' are only for parameter properties, so constructor visitor will handle them.\n  }\n\n  function isImportTypeOnly({\n    binding,\n    programPath,\n    pragmaImportName,\n    pragmaFragImportName,\n  }: {\n    binding: Scope.Binding;\n    programPath: NodePath<t.Program>;\n    pragmaImportName: string;\n    pragmaFragImportName: string;\n  }) {\n    for (const path of binding.referencePaths) {\n      if (!isInType(path)) {\n        return false;\n      }\n    }\n\n    if (\n      binding.identifier.name !== pragmaImportName &&\n      binding.identifier.name !== pragmaFragImportName\n    ) {\n      return true;\n    }\n\n    // \"React\" or the JSX pragma is referenced as a value if there are any JSX elements/fragments in the code.\n    let sourceFileHasJsx = false;\n    programPath.traverse({\n      \"JSXElement|JSXFragment\"(path) {\n        sourceFileHasJsx = true;\n        path.stop();\n      },\n    });\n    return !sourceFileHasJsx;\n  }\n});\n","import { OptionValidator } from \"@babel/helper-validator-option\";\nconst v = new OptionValidator(\"@babel/preset-typescript\");\n\nexport interface Options {\n  ignoreExtensions?: boolean;\n  allowDeclareFields?: boolean;\n  allowNamespaces?: boolean;\n  disallowAmbiguousJSXLike?: boolean;\n  jsxPragma?: string;\n  jsxPragmaFrag?: string;\n  onlyRemoveTypeImports?: boolean;\n  optimizeConstEnums?: boolean;\n  rewriteImportExtensions?: boolean;\n\n  // TODO: Remove in Babel 8\n  allExtensions?: boolean;\n  isTSX?: boolean;\n}\n\nexport default function normalizeOptions(options: Options = {}) {\n  let { allowNamespaces = true, jsxPragma, onlyRemoveTypeImports } = options;\n\n  const TopLevelOptions: {\n    [Key in keyof Omit<Options, \"allowDeclareFields\">]-?: Key;\n  } = {\n    ignoreExtensions: \"ignoreExtensions\",\n    allowNamespaces: \"allowNamespaces\",\n    disallowAmbiguousJSXLike: \"disallowAmbiguousJSXLike\",\n    jsxPragma: \"jsxPragma\",\n    jsxPragmaFrag: \"jsxPragmaFrag\",\n    onlyRemoveTypeImports: \"onlyRemoveTypeImports\",\n    optimizeConstEnums: \"optimizeConstEnums\",\n    rewriteImportExtensions: \"rewriteImportExtensions\",\n\n    // TODO: Remove in Babel 8\n    allExtensions: \"allExtensions\",\n    isTSX: \"isTSX\",\n  };\n\n  if (process.env.BABEL_8_BREAKING) {\n    v.invariant(\n      !(\"allowDeclareFields\" in options),\n      \"The .allowDeclareFields option has been removed and it's now always enabled. Please remove it from your config.\",\n    );\n    v.invariant(\n      !(\"allExtensions\" in options) && !(\"isTSX\" in options),\n      \"The .allExtensions and .isTSX options have been removed.\\n\" +\n        \"If you want to disable JSX detection based on file extensions, \" +\n        \"you can set the .ignoreExtensions option to true.\\n\" +\n        \"If you want to force JSX parsing, you can enable the \" +\n        \"@babel/plugin-syntax-jsx plugin.\",\n    );\n\n    v.validateTopLevelOptions(options, TopLevelOptions);\n    allowNamespaces = v.validateBooleanOption(\n      TopLevelOptions.allowNamespaces,\n      options.allowNamespaces,\n      true,\n    );\n    jsxPragma = v.validateStringOption(\n      TopLevelOptions.jsxPragma,\n      options.jsxPragma,\n      \"React\",\n    );\n    onlyRemoveTypeImports = v.validateBooleanOption(\n      TopLevelOptions.onlyRemoveTypeImports,\n      options.onlyRemoveTypeImports,\n      true,\n    );\n  }\n\n  const jsxPragmaFrag = v.validateStringOption(\n    TopLevelOptions.jsxPragmaFrag,\n    options.jsxPragmaFrag,\n    \"React.Fragment\",\n  );\n\n  if (!process.env.BABEL_8_BREAKING) {\n    // eslint-disable-next-line no-var\n    var allExtensions = v.validateBooleanOption(\n      TopLevelOptions.allExtensions,\n      options.allExtensions,\n      false,\n    );\n\n    // eslint-disable-next-line no-var\n    var isTSX = v.validateBooleanOption(\n      TopLevelOptions.isTSX,\n      options.isTSX,\n      false,\n    );\n    if (isTSX) {\n      v.invariant(allExtensions, \"isTSX:true requires allExtensions:true\");\n    }\n  }\n\n  const ignoreExtensions = v.validateBooleanOption(\n    TopLevelOptions.ignoreExtensions,\n    options.ignoreExtensions,\n    false,\n  );\n\n  const disallowAmbiguousJSXLike = v.validateBooleanOption(\n    TopLevelOptions.disallowAmbiguousJSXLike,\n    options.disallowAmbiguousJSXLike,\n    false,\n  );\n  if (disallowAmbiguousJSXLike) {\n    if (process.env.BABEL_8_BREAKING) {\n      v.invariant(\n        ignoreExtensions,\n        \"disallowAmbiguousJSXLike:true requires ignoreExtensions:true\",\n      );\n    } else {\n      v.invariant(\n        allExtensions,\n        \"disallowAmbiguousJSXLike:true requires allExtensions:true\",\n      );\n    }\n  }\n\n  const optimizeConstEnums = v.validateBooleanOption(\n    TopLevelOptions.optimizeConstEnums,\n    options.optimizeConstEnums,\n    false,\n  );\n\n  const rewriteImportExtensions = v.validateBooleanOption(\n    TopLevelOptions.rewriteImportExtensions,\n    options.rewriteImportExtensions,\n    false,\n  );\n\n  const normalized: Options = {\n    ignoreExtensions,\n    allowNamespaces,\n    disallowAmbiguousJSXLike,\n    jsxPragma,\n    jsxPragmaFrag,\n    onlyRemoveTypeImports,\n    optimizeConstEnums,\n    rewriteImportExtensions,\n  };\n  if (!process.env.BABEL_8_BREAKING) {\n    normalized.allExtensions = allExtensions;\n    normalized.isTSX = isTSX;\n  }\n  return normalized;\n}\n","import { declare } from \"@babel/helper-plugin-utils\";\nimport type { types as t, NodePath } from \"@babel/core\";\n\nexport default declare(function ({ types: t, template }) {\n  function maybeReplace(\n    source: t.ArgumentPlaceholder | t.SpreadElement | t.Expression,\n    path: NodePath,\n  ) {\n    if (!source) return;\n    if (t.isStringLiteral(source)) {\n      if (/[\\\\/]/.test(source.value)) {\n        source.value = source.value\n          .replace(/(\\.[mc]?)ts$/, \"$1js\")\n          .replace(/\\.tsx$/, \".js\");\n      }\n      return;\n    }\n\n    path.replaceWith(\n      template.expression\n        .ast`(${source} + \"\").replace(/([\\\\/].*\\.[mc]?)tsx?$/, \"$1js\")`,\n    );\n  }\n\n  return {\n    name: \"preset-typescript/plugin-rewrite-ts-imports\",\n    visitor: {\n      \"ImportDeclaration|ExportAllDeclaration|ExportNamedDeclaration\"(\n        path: NodePath<\n          | t.ImportDeclaration\n          | t.ExportAllDeclaration\n          | t.ExportNamedDeclaration\n        >,\n      ) {\n        const node = path.node;\n        const kind = t.isImportDeclaration(node)\n          ? node.importKind\n          : node.exportKind;\n        if (kind === \"value\") {\n          maybeReplace(node.source, path.get(\"source\"));\n        }\n      },\n      CallExpression(path) {\n        if (t.isImport(path.node.callee)) {\n          maybeReplace(path.node.arguments[0], path.get(\"arguments.0\"));\n        }\n      },\n      ImportExpression(path) {\n        maybeReplace(path.node.source, path.get(\"source\"));\n      },\n    },\n  };\n});\n","import { declarePreset } from \"@babel/helper-plugin-utils\";\nimport transformTypeScript from \"@babel/plugin-transform-typescript\";\nimport syntaxJSX from \"@babel/plugin-syntax-jsx\";\nimport transformModulesCommonJS from \"@babel/plugin-transform-modules-commonjs\";\nimport normalizeOptions from \"./normalize-options.ts\";\nimport type { Options } from \"./normalize-options.ts\";\nimport pluginRewriteTSImports from \"./plugin-rewrite-ts-imports.ts\";\n\nexport default declarePreset((api, opts: Options) => {\n  api.assertVersion(REQUIRED_VERSION(7));\n\n  const {\n    allExtensions,\n    ignoreExtensions,\n    allowNamespaces,\n    disallowAmbiguousJSXLike,\n    isTSX,\n    jsxPragma,\n    jsxPragmaFrag,\n    onlyRemoveTypeImports,\n    optimizeConstEnums,\n    rewriteImportExtensions,\n  } = normalizeOptions(opts);\n\n  const pluginOptions = process.env.BABEL_8_BREAKING\n    ? (disallowAmbiguousJSXLike: boolean) => ({\n        allowNamespaces,\n        disallowAmbiguousJSXLike,\n        jsxPragma,\n        jsxPragmaFrag,\n        onlyRemoveTypeImports,\n        optimizeConstEnums,\n      })\n    : (disallowAmbiguousJSXLike: boolean) => ({\n        allowDeclareFields: opts.allowDeclareFields,\n        allowNamespaces,\n        disallowAmbiguousJSXLike,\n        jsxPragma,\n        jsxPragmaFrag,\n        onlyRemoveTypeImports,\n        optimizeConstEnums,\n      });\n\n  const getPlugins = (isTSX: boolean, disallowAmbiguousJSXLike: boolean) => {\n    if (process.env.BABEL_8_BREAKING) {\n      const tsPlugin = [\n        transformTypeScript,\n        pluginOptions(disallowAmbiguousJSXLike),\n      ];\n      return isTSX ? [tsPlugin, syntaxJSX] : [tsPlugin];\n    } else {\n      return [\n        [\n          transformTypeScript,\n          { isTSX, ...pluginOptions(disallowAmbiguousJSXLike) },\n        ],\n      ];\n    }\n  };\n\n  const disableExtensionDetect = allExtensions || ignoreExtensions;\n\n  return {\n    plugins: rewriteImportExtensions ? [pluginRewriteTSImports] : [],\n    overrides: disableExtensionDetect\n      ? [{ plugins: getPlugins(isTSX, disallowAmbiguousJSXLike) }]\n      : // Only set 'test' if explicitly requested, since it requires that\n        // Babel is being called with a filename.\n        [\n          {\n            test: !process.env.BABEL_8_BREAKING\n              ? /\\.ts$/\n              : filename => filename == null || filename.endsWith(\".ts\"),\n            plugins: getPlugins(false, false),\n          },\n          {\n            test: !process.env.BABEL_8_BREAKING\n              ? /\\.mts$/\n              : filename => filename?.endsWith(\".mts\"),\n            sourceType: \"module\",\n            plugins: getPlugins(false, true),\n          },\n          {\n            test: !process.env.BABEL_8_BREAKING\n              ? /\\.cts$/\n              : filename => filename?.endsWith(\".cts\"),\n            sourceType: \"unambiguous\",\n            plugins: [\n              [transformModulesCommonJS, { allowTopLevelThis: true }],\n              [transformTypeScript, pluginOptions(true)],\n            ],\n          },\n          {\n            test: !process.env.BABEL_8_BREAKING\n              ? /\\.tsx$/\n              : filename => filename?.endsWith(\".tsx\"),\n            // disallowAmbiguousJSXLike is a no-op when parsing TSX, since it's\n            // always disallowed.\n            plugins: getPlugins(true, false),\n          },\n        ],\n  };\n});\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport path from 'path';\n\nimport * as babel from '@babel/core';\nimport traverseFunction from '@babel/traverse';\n\nimport type { BabelFileResult, NodePath, PluginObj, TransformOptions } from '@babel/core';\nimport type { TemplateBuilder } from '@babel/template';\nimport type { ImportDeclaration, TSExportAssignment } from '@babel/types';\n\nexport { codeFrameColumns } from '@babel/code-frame';\nexport { declare } from '@babel/helper-plugin-utils';\nexport { types } from '@babel/core';\nexport const traverse = traverseFunction;\n\nfunction babelTransformOptions(isTypeScript: boolean, isModule: boolean, pluginsPrologue: [string, any?][], pluginsEpilogue: [string, any?][]): TransformOptions {\n  const plugins = [\n    [require('@babel/plugin-syntax-import-attributes'), { deprecatedAssertSyntax: true }],\n  ];\n\n  if (isTypeScript) {\n    plugins.push(\n        [require('@babel/plugin-proposal-decorators'), { version: '2023-05' }],\n        [require('@babel/plugin-proposal-explicit-resource-management')],\n        [require('@babel/plugin-transform-class-properties')],\n        [require('@babel/plugin-transform-class-static-block')],\n        [require('@babel/plugin-transform-numeric-separator')],\n        [require('@babel/plugin-transform-logical-assignment-operators')],\n        [require('@babel/plugin-transform-nullish-coalescing-operator')],\n        [require('@babel/plugin-transform-optional-chaining')],\n        [require('@babel/plugin-transform-private-methods')],\n        [require('@babel/plugin-syntax-json-strings')],\n        [require('@babel/plugin-syntax-optional-catch-binding')],\n        [require('@babel/plugin-syntax-async-generators')],\n        [require('@babel/plugin-syntax-object-rest-spread')],\n        [require('@babel/plugin-transform-export-namespace-from')],\n        [\n          // From https://github.com/G-Rath/babel-plugin-replace-ts-export-assignment/blob/8dfdca32c8aa428574b0cae341444fc5822f2dc6/src/index.ts\n          (\n            { template }: { template: TemplateBuilder<TSExportAssignment> }\n          ): PluginObj => ({\n            name: 'replace-ts-export-assignment',\n            visitor: {\n              TSExportAssignment(path: NodePath<TSExportAssignment>) {\n                path.replaceWith(template('module.exports = ASSIGNMENT;')({\n                  ASSIGNMENT: path.node.expression\n                }));\n              }\n            }\n          })\n        ]\n    );\n  }\n\n  // Support JSX/TSX at all times, regardless of the file extension.\n  plugins.push([require('@babel/plugin-transform-react-jsx'), {\n    throwIfNamespace: false,\n    runtime: 'automatic',\n    importSource: path.dirname(require.resolve('playwright')),\n  }]);\n\n  if (!isModule) {\n    plugins.push([require('@babel/plugin-transform-modules-commonjs')]);\n    // Note: we used to include '@babel/plugin-transform-dynamic-import' to convert async imports\n    // into require(), so that pirates can intercept them. With the ESM loader enabled by default,\n    // there is no need for this.\n    plugins.push([\n      (): PluginObj => ({\n        name: 'css-to-identity-obj-proxy',\n        visitor: {\n          ImportDeclaration(path: NodePath<ImportDeclaration>) {\n            if (path.node.source.value.match(/\\.(css|less|scss)$/))\n              path.remove();\n          }\n        }\n      })\n    ]);\n  }\n\n  return {\n    browserslistConfigFile: false,\n    babelrc: false,\n    configFile: false,\n    assumptions: {\n      // Without this, babel defines a top level function that\n      // breaks playwright evaluates.\n      setPublicClassFields: true,\n    },\n    presets: isTypeScript ? [\n      [require('@babel/preset-typescript'), { onlyRemoveTypeImports: false }],\n    ] : [],\n    plugins: [\n      ...pluginsPrologue.map(([name, options]) => [require(name), options]),\n      ...plugins,\n      ...pluginsEpilogue.map(([name, options]) => [require(name), options]),\n    ],\n    compact: false,\n    sourceMaps: 'both',\n  };\n}\n\nlet isTransforming = false;\n\nfunction isTypeScript(filename: string) {\n  return filename.endsWith('.ts') || filename.endsWith('.tsx') || filename.endsWith('.mts') || filename.endsWith('.cts');\n}\n\nexport function babelTransform(code: string, filename: string, isModule: boolean, pluginsPrologue: [string, any?][], pluginsEpilogue: [string, any?][]): BabelFileResult | null {\n  if (isTransforming)\n    return null;\n\n  // Prevent reentry while requiring plugins lazily.\n  isTransforming = true;\n  try {\n    const options = babelTransformOptions(isTypeScript(filename), isModule, pluginsPrologue, pluginsEpilogue);\n    return babel.transform(code, { filename, ...options });\n  } finally {\n    isTransforming = false;\n  }\n}\n\nexport function babelParse(code: string, filename: string, isModule: boolean): babel.ParseResult {\n  const options = babelTransformOptions(isTypeScript(filename), isModule, [], []);\n  return babel.parse(code, { filename, ...options })!;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { BabelFileResult, ParseResult } from '../../bundles/babel/node_modules/@types/babel__core';\nexport const codeFrameColumns: typeof import('../../bundles/babel/node_modules/@types/babel__code-frame').codeFrameColumns = require('./babelBundleImpl').codeFrameColumns;\nexport const declare: typeof import('../../bundles/babel/node_modules/@types/babel__helper-plugin-utils').declare = require('./babelBundleImpl').declare;\nexport const types: typeof import('../../bundles/babel/node_modules/@types/babel__core').types = require('./babelBundleImpl').types;\nexport const traverse: typeof import('../../bundles/babel/node_modules/@types/babel__traverse').default = require('./babelBundleImpl').traverse;\nexport type BabelPlugin = [string, any?];\nexport type BabelTransformFunction = (code: string, filename: string, isModule: boolean, pluginsPrefix: BabelPlugin[], pluginsSuffix: BabelPlugin[]) => BabelFileResult | null;\nexport const babelTransform: BabelTransformFunction = require('./babelBundleImpl').babelTransform;\nexport type BabelParseFunction = (code: string, filename: string, isModule: boolean) => ParseResult;\nexport const babelParse: BabelParseFunction = require('./babelBundleImpl').babelParse;\nexport type { NodePath, PluginObj, types as T } from '../../bundles/babel/node_modules/@types/babel__core';\nexport type { BabelAPI } from '../../bundles/babel/node_modules/@types/babel__helper-plugin-utils';\n","// This is a generated file. Do not edit.\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nvar 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]/;\nvar 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\nvar unicode = {\n\tSpace_Separator: Space_Separator,\n\tID_Start: ID_Start,\n\tID_Continue: ID_Continue\n};\n\nvar util = {\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\nlet source;\nlet parseState;\nlet stack;\nlet pos;\nlet line;\nlet column;\nlet token;\nlet key;\nlet root;\n\nvar parse = 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\nvar stringify = 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\nconst JSON5 = {\n    parse,\n    stringify,\n};\n\nvar lib = JSON5;\n\nexport default lib;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * 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\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n\n  var parts = path.split(/\\/+/);\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   “sources” entry.  This value is prepended to the individual\n    //   entries in the “source” field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   “sourceRoot”, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n        throw new Error(\n            'original.line and original.column are not numbers -- you probably meant to omit ' +\n            'the original mapping entirely and only map the generated position. If so, pass ' +\n            'null for the original mapping instead of an object with empty or null values.'\n        );\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      throw new Error('Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      }));\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n  doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    mappings.map(function (mapping) {\n      var source = mapping.source === null ? null : this._sources.at(mapping.source);\n      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n      return {\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : this._names.at(mapping.name)\n      };\n    }, this).forEach(aCallback, context);\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        // Because each offset is encoded relative to the previous one,\n        // many segments often have the same encoding. We can exploit this\n        // fact by caching the parsed variable length fields of each segment,\n        // allowing us to avoid a second parse if we encounter the same\n        // segment again.\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = cachedSegments[str];\n        if (segment) {\n          index += str.length;\n        } else {\n          segment = [];\n          while (index < end) {\n            base64VLQ.decode(aStr, index, temp);\n            value = temp.value;\n            index = temp.rest;\n            segment.push(value);\n          }\n\n          if (segment.length === 2) {\n            throw new Error('Found a source, but no line and column');\n          }\n\n          if (segment.length === 3) {\n            throw new Error('Found a source and line, but no column');\n          }\n\n          cachedSegments[str] = segment;\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          originalMappings.push(mapping);\n        }\n      }\n    }\n\n    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n    this.__generatedMappings = generatedMappings;\n\n    quickSort(originalMappings, util.compareByOriginalPositions);\n    this.__originalMappings = originalMappings;\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content) {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n","/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n  typeof Buffer !== 'undefined' &&\n  typeof Buffer.alloc === 'function' &&\n  typeof Buffer.allocUnsafe === 'function' &&\n  typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n  return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n  byteOffset >>>= 0\n\n  var maxLength = obj.byteLength - byteOffset\n\n  if (maxLength < 0) {\n    throw new RangeError(\"'offset' is out of bounds\")\n  }\n\n  if (length === undefined) {\n    length = maxLength\n  } else {\n    length >>>= 0\n\n    if (length > maxLength) {\n      throw new RangeError(\"'length' is out of bounds\")\n    }\n  }\n\n  return isModern\n    ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n    : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  return isModern\n    ? Buffer.from(string, encoding)\n    : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (isArrayBuffer(value)) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  return isModern\n    ? Buffer.from(value)\n    : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n","var SourceMapConsumer = require('source-map').SourceMapConsumer;\nvar path = require('path');\n\nvar fs;\ntry {\n  fs = require('fs');\n  if (!fs.existsSync || !fs.readFileSync) {\n    // fs doesn't have all methods we need\n    fs = null;\n  }\n} catch (err) {\n  /* nop */\n}\n\nvar bufferFrom = require('buffer-from');\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param {NodeModule} mod\n * @param {string} request\n */\nfunction dynamicRequire(mod, request) {\n  return mod.require(request);\n}\n\n// Only install once if called multiple times\nvar errorFormatterInstalled = false;\nvar uncaughtShimInstalled = false;\n\n// If true, the caches are reset before a stack trace formatting operation\nvar emptyCacheBetweenOperations = false;\n\n// Supports {browser, node, auto}\nvar environment = \"auto\";\n\n// Maps a file path to a string containing the file contents\nvar fileContentsCache = {};\n\n// Maps a file path to a source map for that file\nvar sourceMapCache = {};\n\n// Regex for detecting source maps\nvar reSourceMap = /^data:application\\/json[^,]+base64,/;\n\n// Priority list of retrieve handlers\nvar retrieveFileHandlers = [];\nvar retrieveMapHandlers = [];\n\nfunction isInBrowser() {\n  if (environment === \"browser\")\n    return true;\n  if (environment === \"node\")\n    return false;\n  return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === \"renderer\"));\n}\n\nfunction hasGlobalProcessEventEmitter() {\n  return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));\n}\n\nfunction globalProcessVersion() {\n  if ((typeof process === 'object') && (process !== null)) {\n    return process.version;\n  } else {\n    return '';\n  }\n}\n\nfunction globalProcessStderr() {\n  if ((typeof process === 'object') && (process !== null)) {\n    return process.stderr;\n  }\n}\n\nfunction globalProcessExit(code) {\n  if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {\n    return process.exit(code);\n  }\n}\n\nfunction handlerExec(list) {\n  return function(arg) {\n    for (var i = 0; i < list.length; i++) {\n      var ret = list[i](arg);\n      if (ret) {\n        return ret;\n      }\n    }\n    return null;\n  };\n}\n\nvar retrieveFile = handlerExec(retrieveFileHandlers);\n\nretrieveFileHandlers.push(function(path) {\n  // Trim the path to make sure there is no extra whitespace.\n  path = path.trim();\n  if (/^file:/.test(path)) {\n    // existsSync/readFileSync can't handle file protocol, but once stripped, it works\n    path = path.replace(/file:\\/\\/\\/(\\w:)?/, function(protocol, drive) {\n      return drive ?\n        '' : // file:///C:/dir/file -> C:/dir/file\n        '/'; // file:///root-dir/file -> /root-dir/file\n    });\n  }\n  if (path in fileContentsCache) {\n    return fileContentsCache[path];\n  }\n\n  var contents = '';\n  try {\n    if (!fs) {\n      // Use SJAX if we are in the browser\n      var xhr = new XMLHttpRequest();\n      xhr.open('GET', path, /** async */ false);\n      xhr.send(null);\n      if (xhr.readyState === 4 && xhr.status === 200) {\n        contents = xhr.responseText;\n      }\n    } else if (fs.existsSync(path)) {\n      // Otherwise, use the filesystem\n      contents = fs.readFileSync(path, 'utf8');\n    }\n  } catch (er) {\n    /* ignore any errors */\n  }\n\n  return fileContentsCache[path] = contents;\n});\n\n// Support URLs relative to a directory, but be careful about a protocol prefix\n// in case we are in the browser (i.e. directories may start with \"http://\" or \"file:///\")\nfunction supportRelativeURL(file, url) {\n  if (!file) return url;\n  var dir = path.dirname(file);\n  var match = /^\\w+:\\/\\/[^\\/]*/.exec(dir);\n  var protocol = match ? match[0] : '';\n  var startPath = dir.slice(protocol.length);\n  if (protocol && /^\\/\\w\\:/.test(startPath)) {\n    // handle file:///C:/ paths\n    protocol += '/';\n    return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\\\/g, '/');\n  }\n  return protocol + path.resolve(dir.slice(protocol.length), url);\n}\n\nfunction retrieveSourceMapURL(source) {\n  var fileData;\n\n  if (isInBrowser()) {\n     try {\n       var xhr = new XMLHttpRequest();\n       xhr.open('GET', source, false);\n       xhr.send(null);\n       fileData = xhr.readyState === 4 ? xhr.responseText : null;\n\n       // Support providing a sourceMappingURL via the SourceMap header\n       var sourceMapHeader = xhr.getResponseHeader(\"SourceMap\") ||\n                             xhr.getResponseHeader(\"X-SourceMap\");\n       if (sourceMapHeader) {\n         return sourceMapHeader;\n       }\n     } catch (e) {\n     }\n  }\n\n  // Get the URL of the source map\n  fileData = retrieveFile(source);\n  var re = /(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/mg;\n  // Keep executing the search to find the *last* sourceMappingURL to avoid\n  // picking up sourceMappingURLs from comments, strings, etc.\n  var lastMatch, match;\n  while (match = re.exec(fileData)) lastMatch = match;\n  if (!lastMatch) return null;\n  return lastMatch[1];\n};\n\n// Can be overridden by the retrieveSourceMap option to install. Takes a\n// generated source filename; returns a {map, optional url} object, or null if\n// there is no source map.  The map field may be either a string or the parsed\n// JSON object (ie, it must be a valid argument to the SourceMapConsumer\n// constructor).\nvar retrieveSourceMap = handlerExec(retrieveMapHandlers);\nretrieveMapHandlers.push(function(source) {\n  var sourceMappingURL = retrieveSourceMapURL(source);\n  if (!sourceMappingURL) return null;\n\n  // Read the contents of the source map\n  var sourceMapData;\n  if (reSourceMap.test(sourceMappingURL)) {\n    // Support source map URL as a data url\n    var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);\n    sourceMapData = bufferFrom(rawData, \"base64\").toString();\n    sourceMappingURL = source;\n  } else {\n    // Support source map URLs relative to the source URL\n    sourceMappingURL = supportRelativeURL(source, sourceMappingURL);\n    sourceMapData = retrieveFile(sourceMappingURL);\n  }\n\n  if (!sourceMapData) {\n    return null;\n  }\n\n  return {\n    url: sourceMappingURL,\n    map: sourceMapData\n  };\n});\n\nfunction mapSourcePosition(position) {\n  var sourceMap = sourceMapCache[position.source];\n  if (!sourceMap) {\n    // Call the (overrideable) retrieveSourceMap function to get the source map.\n    var urlAndMap = retrieveSourceMap(position.source);\n    if (urlAndMap) {\n      sourceMap = sourceMapCache[position.source] = {\n        url: urlAndMap.url,\n        map: new SourceMapConsumer(urlAndMap.map)\n      };\n\n      // Load all sources stored inline with the source map into the file cache\n      // to pretend like they are already loaded. They may not exist on disk.\n      if (sourceMap.map.sourcesContent) {\n        sourceMap.map.sources.forEach(function(source, i) {\n          var contents = sourceMap.map.sourcesContent[i];\n          if (contents) {\n            var url = supportRelativeURL(sourceMap.url, source);\n            fileContentsCache[url] = contents;\n          }\n        });\n      }\n    } else {\n      sourceMap = sourceMapCache[position.source] = {\n        url: null,\n        map: null\n      };\n    }\n  }\n\n  // Resolve the source URL relative to the URL of the source map\n  if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {\n    var originalPosition = sourceMap.map.originalPositionFor(position);\n\n    // Only return the original position if a matching line was found. If no\n    // matching line is found then we return position instead, which will cause\n    // the stack trace to print the path and line for the compiled file. It is\n    // better to give a precise location in the compiled file than a vague\n    // location in the original file.\n    if (originalPosition.source !== null) {\n      originalPosition.source = supportRelativeURL(\n        sourceMap.url, originalPosition.source);\n      return originalPosition;\n    }\n  }\n\n  return position;\n}\n\n// Parses code generated by FormatEvalOrigin(), a function inside V8:\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js\nfunction mapEvalOrigin(origin) {\n  // Most eval() calls are in this format\n  var match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n  if (match) {\n    var position = mapSourcePosition({\n      source: match[2],\n      line: +match[3],\n      column: match[4] - 1\n    });\n    return 'eval at ' + match[1] + ' (' + position.source + ':' +\n      position.line + ':' + (position.column + 1) + ')';\n  }\n\n  // Parse nested eval() calls using recursion\n  match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin);\n  if (match) {\n    return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';\n  }\n\n  // Make sure we still return useful information if we didn't find anything\n  return origin;\n}\n\n// This is copied almost verbatim from the V8 source code at\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The\n// implementation of wrapCallSite() used to just forward to the actual source\n// code of CallSite.prototype.toString but unfortunately a new release of V8\n// did something to the prototype chain and broke the shim. The only fix I\n// could find was copy/paste.\nfunction CallSiteToString() {\n  var fileName;\n  var fileLocation = \"\";\n  if (this.isNative()) {\n    fileLocation = \"native\";\n  } else {\n    fileName = this.getScriptNameOrSourceURL();\n    if (!fileName && this.isEval()) {\n      fileLocation = this.getEvalOrigin();\n      fileLocation += \", \";  // Expecting source position to follow.\n    }\n\n    if (fileName) {\n      fileLocation += fileName;\n    } else {\n      // Source code does not originate from a file and is not native, but we\n      // can still get the source position inside the source string, e.g. in\n      // an eval string.\n      fileLocation += \"<anonymous>\";\n    }\n    var lineNumber = this.getLineNumber();\n    if (lineNumber != null) {\n      fileLocation += \":\" + lineNumber;\n      var columnNumber = this.getColumnNumber();\n      if (columnNumber) {\n        fileLocation += \":\" + columnNumber;\n      }\n    }\n  }\n\n  var line = \"\";\n  var functionName = this.getFunctionName();\n  var addSuffix = true;\n  var isConstructor = this.isConstructor();\n  var isMethodCall = !(this.isToplevel() || isConstructor);\n  if (isMethodCall) {\n    var typeName = this.getTypeName();\n    // Fixes shim to be backward compatable with Node v0 to v4\n    if (typeName === \"[object Object]\") {\n      typeName = \"null\";\n    }\n    var methodName = this.getMethodName();\n    if (functionName) {\n      if (typeName && functionName.indexOf(typeName) != 0) {\n        line += typeName + \".\";\n      }\n      line += functionName;\n      if (methodName && functionName.indexOf(\".\" + methodName) != functionName.length - methodName.length - 1) {\n        line += \" [as \" + methodName + \"]\";\n      }\n    } else {\n      line += typeName + \".\" + (methodName || \"<anonymous>\");\n    }\n  } else if (isConstructor) {\n    line += \"new \" + (functionName || \"<anonymous>\");\n  } else if (functionName) {\n    line += functionName;\n  } else {\n    line += fileLocation;\n    addSuffix = false;\n  }\n  if (addSuffix) {\n    line += \" (\" + fileLocation + \")\";\n  }\n  return line;\n}\n\nfunction cloneCallSite(frame) {\n  var object = {};\n  Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {\n    object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];\n  });\n  object.toString = CallSiteToString;\n  return object;\n}\n\nfunction wrapCallSite(frame, state) {\n  // provides interface backward compatibility\n  if (state === undefined) {\n    state = { nextPosition: null, curPosition: null }\n  }\n  if(frame.isNative()) {\n    state.curPosition = null;\n    return frame;\n  }\n\n  // Most call sites will return the source file from getFileName(), but code\n  // passed to eval() ending in \"//# sourceURL=...\" will return the source file\n  // from getScriptNameOrSourceURL() instead\n  var source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n  if (source) {\n    var line = frame.getLineNumber();\n    var column = frame.getColumnNumber() - 1;\n\n    // Fix position in Node where some (internal) code is prepended.\n    // See https://github.com/evanw/node-source-map-support/issues/36\n    // Header removed in node at ^10.16 || >=11.11.0\n    // v11 is not an LTS candidate, we can just test the one version with it.\n    // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11\n    var noHeader = /^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/;\n    var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;\n    if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {\n      column -= headerLength;\n    }\n\n    var position = mapSourcePosition({\n      source: source,\n      line: line,\n      column: column\n    });\n    state.curPosition = position;\n    frame = cloneCallSite(frame);\n    var originalFunctionName = frame.getFunctionName;\n    frame.getFunctionName = function() {\n      if (state.nextPosition == null) {\n        return originalFunctionName();\n      }\n      return state.nextPosition.name || originalFunctionName();\n    };\n    frame.getFileName = function() { return position.source; };\n    frame.getLineNumber = function() { return position.line; };\n    frame.getColumnNumber = function() { return position.column + 1; };\n    frame.getScriptNameOrSourceURL = function() { return position.source; };\n    return frame;\n  }\n\n  // Code called using eval() needs special handling\n  var origin = frame.isEval() && frame.getEvalOrigin();\n  if (origin) {\n    origin = mapEvalOrigin(origin);\n    frame = cloneCallSite(frame);\n    frame.getEvalOrigin = function() { return origin; };\n    return frame;\n  }\n\n  // If we get here then we were unable to change the source position\n  return frame;\n}\n\n// This function is part of the V8 stack trace API, for more info see:\n// https://v8.dev/docs/stack-trace-api\nfunction prepareStackTrace(error, stack) {\n  if (emptyCacheBetweenOperations) {\n    fileContentsCache = {};\n    sourceMapCache = {};\n  }\n\n  var name = error.name || 'Error';\n  var message = error.message || '';\n  var errorString = name + \": \" + message;\n\n  var state = { nextPosition: null, curPosition: null };\n  var processedStack = [];\n  for (var i = stack.length - 1; i >= 0; i--) {\n    processedStack.push('\\n    at ' + wrapCallSite(stack[i], state));\n    state.nextPosition = state.curPosition;\n  }\n  state.curPosition = state.nextPosition = null;\n  return errorString + processedStack.reverse().join('');\n}\n\n// Generate position and snippet of original source with pointer\nfunction getErrorSource(error) {\n  var match = /\\n    at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(error.stack);\n  if (match) {\n    var source = match[1];\n    var line = +match[2];\n    var column = +match[3];\n\n    // Support the inline sourceContents inside the source map\n    var contents = fileContentsCache[source];\n\n    // Support files on disk\n    if (!contents && fs && fs.existsSync(source)) {\n      try {\n        contents = fs.readFileSync(source, 'utf8');\n      } catch (er) {\n        contents = '';\n      }\n    }\n\n    // Format the line from the original source code like node does\n    if (contents) {\n      var code = contents.split(/(?:\\r\\n|\\r|\\n)/)[line - 1];\n      if (code) {\n        return source + ':' + line + '\\n' + code + '\\n' +\n          new Array(column).join(' ') + '^';\n      }\n    }\n  }\n  return null;\n}\n\nfunction printErrorAndExit (error) {\n  var source = getErrorSource(error);\n\n  // Ensure error is printed synchronously and not truncated\n  var stderr = globalProcessStderr();\n  if (stderr && stderr._handle && stderr._handle.setBlocking) {\n    stderr._handle.setBlocking(true);\n  }\n\n  if (source) {\n    console.error();\n    console.error(source);\n  }\n\n  console.error(error.stack);\n  globalProcessExit(1);\n}\n\nfunction shimEmitUncaughtException () {\n  var origEmit = process.emit;\n\n  process.emit = function (type) {\n    if (type === 'uncaughtException') {\n      var hasStack = (arguments[1] && arguments[1].stack);\n      var hasListeners = (this.listeners(type).length > 0);\n\n      if (hasStack && !hasListeners) {\n        return printErrorAndExit(arguments[1]);\n      }\n    }\n\n    return origEmit.apply(this, arguments);\n  };\n}\n\nvar originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);\nvar originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);\n\nexports.wrapCallSite = wrapCallSite;\nexports.getErrorSource = getErrorSource;\nexports.mapSourcePosition = mapSourcePosition;\nexports.retrieveSourceMap = retrieveSourceMap;\n\nexports.install = function(options) {\n  options = options || {};\n\n  if (options.environment) {\n    environment = options.environment;\n    if ([\"node\", \"browser\", \"auto\"].indexOf(environment) === -1) {\n      throw new Error(\"environment \" + environment + \" was unknown. Available options are {auto, browser, node}\")\n    }\n  }\n\n  // Allow sources to be found by methods other than reading the files\n  // directly from disk.\n  if (options.retrieveFile) {\n    if (options.overrideRetrieveFile) {\n      retrieveFileHandlers.length = 0;\n    }\n\n    retrieveFileHandlers.unshift(options.retrieveFile);\n  }\n\n  // Allow source maps to be found by methods other than reading the files\n  // directly from disk.\n  if (options.retrieveSourceMap) {\n    if (options.overrideRetrieveSourceMap) {\n      retrieveMapHandlers.length = 0;\n    }\n\n    retrieveMapHandlers.unshift(options.retrieveSourceMap);\n  }\n\n  // Support runtime transpilers that include inline source maps\n  if (options.hookRequire && !isInBrowser()) {\n    // Use dynamicRequire to avoid including in browser bundles\n    var Module = dynamicRequire(module, 'module');\n    var $compile = Module.prototype._compile;\n\n    if (!$compile.__sourceMapSupport) {\n      Module.prototype._compile = function(content, filename) {\n        fileContentsCache[filename] = content;\n        sourceMapCache[filename] = undefined;\n        return $compile.call(this, content, filename);\n      };\n\n      Module.prototype._compile.__sourceMapSupport = true;\n    }\n  }\n\n  // Configure options\n  if (!emptyCacheBetweenOperations) {\n    emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?\n      options.emptyCacheBetweenOperations : false;\n  }\n\n  // Install the error reformatter\n  if (!errorFormatterInstalled) {\n    errorFormatterInstalled = true;\n    Error.prepareStackTrace = prepareStackTrace;\n  }\n\n  if (!uncaughtShimInstalled) {\n    var installHandler = 'handleUncaughtExceptions' in options ?\n      options.handleUncaughtExceptions : true;\n\n    // Do not override 'uncaughtException' with our own handler in Node.js\n    // Worker threads. Workers pass the error to the main thread as an event,\n    // rather than printing something to stderr and exiting.\n    try {\n      // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.\n      var worker_threads = dynamicRequire(module, 'worker_threads');\n      if (worker_threads.isMainThread === false) {\n        installHandler = false;\n      }\n    } catch(e) {}\n\n    // Provide the option to not install the uncaught exception handler. This is\n    // to support other uncaught exception handlers (in test frameworks, for\n    // example). If this handler is not installed and there are no other uncaught\n    // exception handlers, uncaught exceptions will be caught by node's built-in\n    // exception handler and the process will still be terminated. However, the\n    // generated JavaScript code will be shown above the stack trace instead of\n    // the original source code.\n    if (installHandler && hasGlobalProcessEventEmitter()) {\n      uncaughtShimInstalled = true;\n      shimEmitUncaughtException();\n    }\n  }\n};\n\nexports.resetRetrieveHandlers = function() {\n  retrieveFileHandlers.length = 0;\n  retrieveMapHandlers.length = 0;\n\n  retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);\n  retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);\n\n  retrieveSourceMap = handlerExec(retrieveMapHandlers);\n  retrieveFile = handlerExec(retrieveFileHandlers);\n}\n","'use strict'\n\nconst https = require('https')\n\nmodule.exports = (server, grace) => {\n  grace = typeof grace === 'undefined' ? Infinity : grace\n  const reqsPerSocket = new Map()\n  let stopped = false\n  let gracefully = true\n\n  if (server instanceof https.Server) {\n    server.on('secureConnection', onConnection)\n  } else {\n    server.on('connection', onConnection)\n  }\n\n  server.on('request', onRequest)\n  server.stop = stop\n  server._pendingSockets = reqsPerSocket\n  return server\n\n  function onConnection (socket) {\n    reqsPerSocket.set(socket, 0)\n    socket.once('close', () => reqsPerSocket.delete(socket))\n  }\n\n  function onRequest (req, res) {\n    reqsPerSocket.set(req.socket, reqsPerSocket.get(req.socket) + 1)\n    res.once('finish', () => {\n      const pending = reqsPerSocket.get(req.socket) - 1\n      reqsPerSocket.set(req.socket, pending)\n      if (stopped && pending === 0) {\n        req.socket.end()\n      }\n    })\n  }\n\n  function stop (callback) {\n    // allow request handlers to update state before we act on that state\n    setImmediate(() => {\n      stopped = true\n      if (grace < Infinity) {\n        setTimeout(destroyAll, grace).unref()\n      }\n      server.close(e => {\n        if (callback) {\n          callback(e, gracefully)\n        }\n      })\n      reqsPerSocket.forEach(endIfIdle)\n    })\n  }\n\n  function endIfIdle (requests, socket) {\n    if (requests === 0) socket.end()\n  }\n\n  function destroyAll () {\n    gracefully = false\n    reqsPerSocket.forEach((reqs, socket) => socket.end())\n    setImmediate(() => {\n      reqsPerSocket.forEach((reqs, socket) => socket.destroy())\n    })\n  }\n}\n","'use strict';\n\nconst isHyper = typeof process !== 'undefined' && process.env.TERM_PROGRAM === 'Hyper';\nconst isWindows = typeof process !== 'undefined' && process.platform === 'win32';\nconst isLinux = typeof process !== 'undefined' && process.platform === 'linux';\n\nconst common = {\n  ballotDisabled: '☒',\n  ballotOff: '☐',\n  ballotOn: '☑',\n  bullet: '•',\n  bulletWhite: '◦',\n  fullBlock: '█',\n  heart: '❤',\n  identicalTo: '≡',\n  line: '─',\n  mark: '※',\n  middot: '·',\n  minus: '－',\n  multiplication: '×',\n  obelus: '÷',\n  pencilDownRight: '✎',\n  pencilRight: '✏',\n  pencilUpRight: '✐',\n  percent: '%',\n  pilcrow2: '❡',\n  pilcrow: '¶',\n  plusMinus: '±',\n  question: '?',\n  section: '§',\n  starsOff: '☆',\n  starsOn: '★',\n  upDownArrow: '↕'\n};\n\nconst windows = Object.assign({}, common, {\n  check: '√',\n  cross: '×',\n  ellipsisLarge: '...',\n  ellipsis: '...',\n  info: 'i',\n  questionSmall: '?',\n  pointer: '>',\n  pointerSmall: '»',\n  radioOff: '( )',\n  radioOn: '(*)',\n  warning: '‼'\n});\n\nconst other = Object.assign({}, common, {\n  ballotCross: '✘',\n  check: '✔',\n  cross: '✖',\n  ellipsisLarge: '⋯',\n  ellipsis: '…',\n  info: 'ℹ',\n  questionFull: '？',\n  questionSmall: '﹖',\n  pointer: isLinux ? '▸' : '❯',\n  pointerSmall: isLinux ? '‣' : '›',\n  radioOff: '◯',\n  radioOn: '◉',\n  warning: '⚠'\n});\n\nmodule.exports = (isWindows && !isHyper) ? windows : other;\nReflect.defineProperty(module.exports, 'common', { enumerable: false, value: common });\nReflect.defineProperty(module.exports, 'windows', { enumerable: false, value: windows });\nReflect.defineProperty(module.exports, 'other', { enumerable: false, value: other });\n","'use strict';\n\nconst isObject = val => val !== null && typeof val === 'object' && !Array.isArray(val);\n\n/* eslint-disable no-control-regex */\n// this is a modified version of https://github.com/chalk/ansi-regex (MIT License)\nconst ANSI_REGEX = /[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g;\n\nconst hasColor = () => {\n  if (typeof process !== 'undefined') {\n    return process.env.FORCE_COLOR !== '0';\n  }\n  return false;\n};\n\nconst create = () => {\n  const colors = {\n    enabled: hasColor(),\n    visible: true,\n    styles: {},\n    keys: {}\n  };\n\n  const ansi = style => {\n    let open = style.open = `\\u001b[${style.codes[0]}m`;\n    let close = style.close = `\\u001b[${style.codes[1]}m`;\n    let regex = style.regex = new RegExp(`\\\\u001b\\\\[${style.codes[1]}m`, 'g');\n    style.wrap = (input, newline) => {\n      if (input.includes(close)) input = input.replace(regex, close + open);\n      let output = open + input + close;\n      // see https://github.com/chalk/chalk/pull/92, thanks to the\n      // chalk contributors for this fix. However, we've confirmed that\n      // this issue is also present in Windows terminals\n      return newline ? output.replace(/\\r*\\n/g, `${close}$&${open}`) : output;\n    };\n    return style;\n  };\n\n  const wrap = (style, input, newline) => {\n    return typeof style === 'function' ? style(input) : style.wrap(input, newline);\n  };\n\n  const style = (input, stack) => {\n    if (input === '' || input == null) return '';\n    if (colors.enabled === false) return input;\n    if (colors.visible === false) return '';\n    let str = '' + input;\n    let nl = str.includes('\\n');\n    let n = stack.length;\n    if (n > 0 && stack.includes('unstyle')) {\n      stack = [...new Set(['unstyle', ...stack])].reverse();\n    }\n    while (n-- > 0) str = wrap(colors.styles[stack[n]], str, nl);\n    return str;\n  };\n\n  const define = (name, codes, type) => {\n    colors.styles[name] = ansi({ name, codes });\n    let keys = colors.keys[type] || (colors.keys[type] = []);\n    keys.push(name);\n\n    Reflect.defineProperty(colors, name, {\n      configurable: true,\n      enumerable: true,\n      set(value) {\n        colors.alias(name, value);\n      },\n      get() {\n        let color = input => style(input, color.stack);\n        Reflect.setPrototypeOf(color, colors);\n        color.stack = this.stack ? this.stack.concat(name) : [name];\n        return color;\n      }\n    });\n  };\n\n  define('reset', [0, 0], 'modifier');\n  define('bold', [1, 22], 'modifier');\n  define('dim', [2, 22], 'modifier');\n  define('italic', [3, 23], 'modifier');\n  define('underline', [4, 24], 'modifier');\n  define('inverse', [7, 27], 'modifier');\n  define('hidden', [8, 28], 'modifier');\n  define('strikethrough', [9, 29], 'modifier');\n\n  define('black', [30, 39], 'color');\n  define('red', [31, 39], 'color');\n  define('green', [32, 39], 'color');\n  define('yellow', [33, 39], 'color');\n  define('blue', [34, 39], 'color');\n  define('magenta', [35, 39], 'color');\n  define('cyan', [36, 39], 'color');\n  define('white', [37, 39], 'color');\n  define('gray', [90, 39], 'color');\n  define('grey', [90, 39], 'color');\n\n  define('bgBlack', [40, 49], 'bg');\n  define('bgRed', [41, 49], 'bg');\n  define('bgGreen', [42, 49], 'bg');\n  define('bgYellow', [43, 49], 'bg');\n  define('bgBlue', [44, 49], 'bg');\n  define('bgMagenta', [45, 49], 'bg');\n  define('bgCyan', [46, 49], 'bg');\n  define('bgWhite', [47, 49], 'bg');\n\n  define('blackBright', [90, 39], 'bright');\n  define('redBright', [91, 39], 'bright');\n  define('greenBright', [92, 39], 'bright');\n  define('yellowBright', [93, 39], 'bright');\n  define('blueBright', [94, 39], 'bright');\n  define('magentaBright', [95, 39], 'bright');\n  define('cyanBright', [96, 39], 'bright');\n  define('whiteBright', [97, 39], 'bright');\n\n  define('bgBlackBright', [100, 49], 'bgBright');\n  define('bgRedBright', [101, 49], 'bgBright');\n  define('bgGreenBright', [102, 49], 'bgBright');\n  define('bgYellowBright', [103, 49], 'bgBright');\n  define('bgBlueBright', [104, 49], 'bgBright');\n  define('bgMagentaBright', [105, 49], 'bgBright');\n  define('bgCyanBright', [106, 49], 'bgBright');\n  define('bgWhiteBright', [107, 49], 'bgBright');\n\n  colors.ansiRegex = ANSI_REGEX;\n  colors.hasColor = colors.hasAnsi = str => {\n    colors.ansiRegex.lastIndex = 0;\n    return typeof str === 'string' && str !== '' && colors.ansiRegex.test(str);\n  };\n\n  colors.alias = (name, color) => {\n    let fn = typeof color === 'string' ? colors[color] : color;\n\n    if (typeof fn !== 'function') {\n      throw new TypeError('Expected alias to be the name of an existing color (string) or a function');\n    }\n\n    if (!fn.stack) {\n      Reflect.defineProperty(fn, 'name', { value: name });\n      colors.styles[name] = fn;\n      fn.stack = [name];\n    }\n\n    Reflect.defineProperty(colors, name, {\n      configurable: true,\n      enumerable: true,\n      set(value) {\n        colors.alias(name, value);\n      },\n      get() {\n        let color = input => style(input, color.stack);\n        Reflect.setPrototypeOf(color, colors);\n        color.stack = this.stack ? this.stack.concat(fn.stack) : fn.stack;\n        return color;\n      }\n    });\n  };\n\n  colors.theme = custom => {\n    if (!isObject(custom)) throw new TypeError('Expected theme to be an object');\n    for (let name of Object.keys(custom)) {\n      colors.alias(name, custom[name]);\n    }\n    return colors;\n  };\n\n  colors.alias('unstyle', str => {\n    if (typeof str === 'string' && str !== '') {\n      colors.ansiRegex.lastIndex = 0;\n      return str.replace(colors.ansiRegex, '');\n    }\n    return '';\n  });\n\n  colors.alias('noop', str => str);\n  colors.none = colors.clear = colors.noop;\n\n  colors.stripColor = colors.unstyle;\n  colors.symbols = require('./symbols');\n  colors.define = define;\n  return colors;\n};\n\nmodule.exports = create();\nmodule.exports.create = create;\n","'use strict';\n\nconst toString = Object.prototype.toString;\nconst colors = require('ansi-colors');\nlet called = false;\nlet fns = [];\n\nconst complements = {\n  'yellow': 'blue',\n  'cyan': 'red',\n  'green': 'magenta',\n  'black': 'white',\n  'blue': 'yellow',\n  'red': 'cyan',\n  'magenta': 'green',\n  'white': 'black'\n};\n\nexports.longest = (arr, prop) => {\n  return arr.reduce((a, v) => Math.max(a, prop ? v[prop].length : v.length), 0);\n};\n\nexports.hasColor = str => !!str && colors.hasColor(str);\n\nconst isObject = exports.isObject = val => {\n  return val !== null && typeof val === 'object' && !Array.isArray(val);\n};\n\nexports.nativeType = val => {\n  return toString.call(val).slice(8, -1).toLowerCase().replace(/\\s/g, '');\n};\n\nexports.isAsyncFn = val => {\n  return exports.nativeType(val) === 'asyncfunction';\n};\n\nexports.isPrimitive = val => {\n  return val != null && typeof val !== 'object' && typeof val !== 'function';\n};\n\nexports.resolve = (context, value, ...rest) => {\n  if (typeof value === 'function') {\n    return value.call(context, ...rest);\n  }\n  return value;\n};\n\nexports.scrollDown = (choices = []) => [...choices.slice(1), choices[0]];\nexports.scrollUp = (choices = []) => [choices.pop(), ...choices];\n\nexports.reorder = (arr = []) => {\n  let res = arr.slice();\n  res.sort((a, b) => {\n    if (a.index > b.index) return 1;\n    if (a.index < b.index) return -1;\n    return 0;\n  });\n  return res;\n};\n\nexports.swap = (arr, index, pos) => {\n  let len = arr.length;\n  let idx = pos === len ? 0 : pos < 0 ? len - 1 : pos;\n  let choice = arr[index];\n  arr[index] = arr[idx];\n  arr[idx] = choice;\n};\n\nexports.width = (stream, fallback = 80) => {\n  let columns = (stream && stream.columns) ? stream.columns : fallback;\n  if (stream && typeof stream.getWindowSize === 'function') {\n    columns = stream.getWindowSize()[0];\n  }\n  if (process.platform === 'win32') {\n    return columns - 1;\n  }\n  return columns;\n};\n\nexports.height = (stream, fallback = 20) => {\n  let rows = (stream && stream.rows) ? stream.rows : fallback;\n  if (stream && typeof stream.getWindowSize === 'function') {\n    rows = stream.getWindowSize()[1];\n  }\n  return rows;\n};\n\nexports.wordWrap = (str, options = {}) => {\n  if (!str) return str;\n\n  if (typeof options === 'number') {\n    options = { width: options };\n  }\n\n  let { indent = '', newline = ('\\n' + indent), width = 80 } = options;\n  let spaces = (newline + indent).match(/[^\\S\\n]/g) || [];\n  width -= spaces.length;\n  let source = `.{1,${width}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`;\n  let output = str.trim();\n  let regex = new RegExp(source, 'g');\n  let lines = output.match(regex) || [];\n  lines = lines.map(line => line.replace(/\\n$/, ''));\n  if (options.padEnd) lines = lines.map(line => line.padEnd(width, ' '));\n  if (options.padStart) lines = lines.map(line => line.padStart(width, ' '));\n  return indent + lines.join(newline);\n};\n\nexports.unmute = color => {\n  let name = color.stack.find(n => colors.keys.color.includes(n));\n  if (name) {\n    return colors[name];\n  }\n  let bg = color.stack.find(n => n.slice(2) === 'bg');\n  if (bg) {\n    return colors[name.slice(2)];\n  }\n  return str => str;\n};\n\nexports.pascal = str => str ? str[0].toUpperCase() + str.slice(1) : '';\n\nexports.inverse = color => {\n  if (!color || !color.stack) return color;\n  let name = color.stack.find(n => colors.keys.color.includes(n));\n  if (name) {\n    let col = colors['bg' + exports.pascal(name)];\n    return col ? col.black : color;\n  }\n  let bg = color.stack.find(n => n.slice(0, 2) === 'bg');\n  if (bg) {\n    return colors[bg.slice(2).toLowerCase()] || color;\n  }\n  return colors.none;\n};\n\nexports.complement = color => {\n  if (!color || !color.stack) return color;\n  let name = color.stack.find(n => colors.keys.color.includes(n));\n  let bg = color.stack.find(n => n.slice(0, 2) === 'bg');\n  if (name && !bg) {\n    return colors[complements[name] || name];\n  }\n  if (bg) {\n    let lower = bg.slice(2).toLowerCase();\n    let comp = complements[lower];\n    if (!comp) return color;\n    return colors['bg' + exports.pascal(comp)] || color;\n  }\n  return colors.none;\n};\n\nexports.meridiem = date => {\n  let hours = date.getHours();\n  let minutes = date.getMinutes();\n  let ampm = hours >= 12 ? 'pm' : 'am';\n  hours = hours % 12;\n  let hrs = hours === 0 ? 12 : hours;\n  let min = minutes < 10 ? '0' + minutes : minutes;\n  return hrs + ':' + min + ' ' + ampm;\n};\n\n/**\n * Set a value on the given object.\n * @param {Object} obj\n * @param {String} prop\n * @param {any} value\n */\n\nexports.set = (obj = {}, prop = '', val) => {\n  return prop.split('.').reduce((acc, k, i, arr) => {\n    let value = arr.length - 1 > i ? (acc[k] || {}) : val;\n    if (!exports.isObject(value) && i < arr.length - 1) value = {};\n    return (acc[k] = value);\n  }, obj);\n};\n\n/**\n * Get a value from the given object.\n * @param {Object} obj\n * @param {String} prop\n */\n\nexports.get = (obj = {}, prop = '', fallback) => {\n  let value = obj[prop] == null\n    ? prop.split('.').reduce((acc, k) => acc && acc[k], obj)\n    : obj[prop];\n  return value == null ? fallback : value;\n};\n\nexports.mixin = (target, b) => {\n  if (!isObject(target)) return b;\n  if (!isObject(b)) return target;\n  for (let key of Object.keys(b)) {\n    let desc = Object.getOwnPropertyDescriptor(b, key);\n    if (desc.hasOwnProperty('value')) {\n      if (target.hasOwnProperty(key) && isObject(desc.value)) {\n        let existing = Object.getOwnPropertyDescriptor(target, key);\n        if (isObject(existing.value)) {\n          target[key] = exports.merge({}, target[key], b[key]);\n        } else {\n          Reflect.defineProperty(target, key, desc);\n        }\n      } else {\n        Reflect.defineProperty(target, key, desc);\n      }\n    } else {\n      Reflect.defineProperty(target, key, desc);\n    }\n  }\n  return target;\n};\n\nexports.merge = (...args) => {\n  let target = {};\n  for (let ele of args) exports.mixin(target, ele);\n  return target;\n};\n\nexports.mixinEmitter = (obj, emitter) => {\n  let proto = emitter.constructor.prototype;\n  for (let key of Object.keys(proto)) {\n    let val = proto[key];\n    if (typeof val === 'function') {\n      exports.define(obj, key, val.bind(emitter));\n    } else {\n      exports.define(obj, key, val);\n    }\n  }\n};\n\nexports.onExit = callback => {\n  const onExit = (quit, code) => {\n    if (called) return;\n\n    called = true;\n    fns.forEach(fn => fn());\n\n    if (quit === true) {\n      process.exit(128 + code);\n    }\n  };\n\n  if (fns.length === 0) {\n    process.once('SIGTERM', onExit.bind(null, true, 15));\n    process.once('SIGINT', onExit.bind(null, true, 2));\n    process.once('exit', onExit);\n  }\n\n  fns.push(callback);\n};\n\nexports.define = (obj, key, value) => {\n  Reflect.defineProperty(obj, key, { value });\n};\n\nexports.defineExport = (obj, key, fn) => {\n  let custom;\n  Reflect.defineProperty(obj, key, {\n    enumerable: true,\n    configurable: true,\n    set(val) {\n      custom = val;\n    },\n    get() {\n      return custom ? custom() : fn();\n    }\n  });\n};\n","'use strict';\n\n/**\n * Actions are mappings from keypress event names to method names\n * in the prompts.\n */\n\nexports.ctrl = {\n  a: 'first',\n  b: 'backward',\n  c: 'cancel',\n  d: 'deleteForward',\n  e: 'last',\n  f: 'forward',\n  g: 'reset',\n  i: 'tab',\n  k: 'cutForward',\n  l: 'reset',\n  n: 'newItem',\n  m: 'cancel',\n  j: 'submit',\n  p: 'search',\n  r: 'remove',\n  s: 'save',\n  u: 'undo',\n  w: 'cutLeft',\n  x: 'toggleCursor',\n  v: 'paste'\n};\n\nexports.shift = {\n  up: 'shiftUp',\n  down: 'shiftDown',\n  left: 'shiftLeft',\n  right: 'shiftRight',\n  tab: 'prev'\n};\n\nexports.fn = {\n  up: 'pageUp',\n  down: 'pageDown',\n  left: 'pageLeft',\n  right: 'pageRight',\n  delete: 'deleteForward'\n};\n\n// <alt> on Windows\nexports.option = {\n  b: 'backward',\n  f: 'forward',\n  d: 'cutRight',\n  left: 'cutLeft',\n  up: 'altUp',\n  down: 'altDown'\n};\n\nexports.keys = {\n  pageup: 'pageUp', // <fn>+<up> (mac), <Page Up> (windows)\n  pagedown: 'pageDown', // <fn>+<down> (mac), <Page Down> (windows)\n  home: 'home', // <fn>+<left> (mac), <home> (windows)\n  end: 'end', // <fn>+<right> (mac), <end> (windows)\n  cancel: 'cancel',\n  delete: 'deleteForward',\n  backspace: 'delete',\n  down: 'down',\n  enter: 'submit',\n  escape: 'cancel',\n  left: 'left',\n  space: 'space',\n  number: 'number',\n  return: 'submit',\n  right: 'right',\n  tab: 'next',\n  up: 'up'\n};\n","'use strict';\n\nconst readline = require('readline');\nconst combos = require('./combos');\n\n/* eslint-disable no-control-regex */\nconst metaKeyCodeRe = /^(?:\\x1b)([a-zA-Z0-9])$/;\nconst fnKeyRe = /^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/;\nconst keyName = {\n    /* xterm/gnome ESC O letter */\n    'OP': 'f1',\n    'OQ': 'f2',\n    'OR': 'f3',\n    'OS': 'f4',\n    /* xterm/rxvt ESC [ number ~ */\n    '[11~': 'f1',\n    '[12~': 'f2',\n    '[13~': 'f3',\n    '[14~': 'f4',\n    /* from Cygwin and used in libuv */\n    '[[A': 'f1',\n    '[[B': 'f2',\n    '[[C': 'f3',\n    '[[D': 'f4',\n    '[[E': 'f5',\n    /* common */\n    '[15~': 'f5',\n    '[17~': 'f6',\n    '[18~': 'f7',\n    '[19~': 'f8',\n    '[20~': 'f9',\n    '[21~': 'f10',\n    '[23~': 'f11',\n    '[24~': 'f12',\n    /* xterm ESC [ letter */\n    '[A': 'up',\n    '[B': 'down',\n    '[C': 'right',\n    '[D': 'left',\n    '[E': 'clear',\n    '[F': 'end',\n    '[H': 'home',\n    /* xterm/gnome ESC O letter */\n    'OA': 'up',\n    'OB': 'down',\n    'OC': 'right',\n    'OD': 'left',\n    'OE': 'clear',\n    'OF': 'end',\n    'OH': 'home',\n    /* xterm/rxvt ESC [ number ~ */\n    '[1~': 'home',\n    '[2~': 'insert',\n    '[3~': 'delete',\n    '[4~': 'end',\n    '[5~': 'pageup',\n    '[6~': 'pagedown',\n    /* putty */\n    '[[5~': 'pageup',\n    '[[6~': 'pagedown',\n    /* rxvt */\n    '[7~': 'home',\n    '[8~': 'end',\n    /* rxvt keys with modifiers */\n    '[a': 'up',\n    '[b': 'down',\n    '[c': 'right',\n    '[d': 'left',\n    '[e': 'clear',\n\n    '[2$': 'insert',\n    '[3$': 'delete',\n    '[5$': 'pageup',\n    '[6$': 'pagedown',\n    '[7$': 'home',\n    '[8$': 'end',\n\n    'Oa': 'up',\n    'Ob': 'down',\n    'Oc': 'right',\n    'Od': 'left',\n    'Oe': 'clear',\n\n    '[2^': 'insert',\n    '[3^': 'delete',\n    '[5^': 'pageup',\n    '[6^': 'pagedown',\n    '[7^': 'home',\n    '[8^': 'end',\n    /* misc. */\n    '[Z': 'tab',\n}\n\nfunction isShiftKey(code) {\n    return ['[a', '[b', '[c', '[d', '[e', '[2$', '[3$', '[5$', '[6$', '[7$', '[8$', '[Z'].includes(code)\n}\n\nfunction isCtrlKey(code) {\n    return [ 'Oa', 'Ob', 'Oc', 'Od', 'Oe', '[2^', '[3^', '[5^', '[6^', '[7^', '[8^'].includes(code)\n}\n\nconst keypress = (s = '', event = {}) => {\n  let parts;\n  let key = {\n    name: event.name,\n    ctrl: false,\n    meta: false,\n    shift: false,\n    option: false,\n    sequence: s,\n    raw: s,\n    ...event\n  };\n\n  if (Buffer.isBuffer(s)) {\n    if (s[0] > 127 && s[1] === void 0) {\n      s[0] -= 128;\n      s = '\\x1b' + String(s);\n    } else {\n      s = String(s);\n    }\n  } else if (s !== void 0 && typeof s !== 'string') {\n    s = String(s);\n  } else if (!s) {\n    s = key.sequence || '';\n  }\n\n  key.sequence = key.sequence || s || key.name;\n\n  if (s === '\\r') {\n    // carriage return\n    key.raw = void 0;\n    key.name = 'return';\n  } else if (s === '\\n') {\n    // enter, should have been called linefeed\n    key.name = 'enter';\n  } else if (s === '\\t') {\n    // tab\n    key.name = 'tab';\n  } else if (s === '\\b' || s === '\\x7f' || s === '\\x1b\\x7f' || s === '\\x1b\\b') {\n    // backspace or ctrl+h\n    key.name = 'backspace';\n    key.meta = s.charAt(0) === '\\x1b';\n  } else if (s === '\\x1b' || s === '\\x1b\\x1b') {\n    // escape key\n    key.name = 'escape';\n    key.meta = s.length === 2;\n  } else if (s === ' ' || s === '\\x1b ') {\n    key.name = 'space';\n    key.meta = s.length === 2;\n  } else if (s <= '\\x1a') {\n    // ctrl+letter\n    key.name = String.fromCharCode(s.charCodeAt(0) + 'a'.charCodeAt(0) - 1);\n    key.ctrl = true;\n  } else if (s.length === 1 && s >= '0' && s <= '9') {\n    // number\n    key.name = 'number';\n  } else if (s.length === 1 && s >= 'a' && s <= 'z') {\n    // lowercase letter\n    key.name = s;\n  } else if (s.length === 1 && s >= 'A' && s <= 'Z') {\n    // shift+letter\n    key.name = s.toLowerCase();\n    key.shift = true;\n  } else if ((parts = metaKeyCodeRe.exec(s))) {\n    // meta+character key\n    key.meta = true;\n    key.shift = /^[A-Z]$/.test(parts[1]);\n  } else if ((parts = fnKeyRe.exec(s))) {\n    let segs = [...s];\n\n    if (segs[0] === '\\u001b' && segs[1] === '\\u001b') {\n      key.option = true;\n    }\n\n    // ansi escape sequence\n    // reassemble the key code leaving out leading \\x1b's,\n    // the modifier key bitflag and any meaningless \"1;\" sequence\n    let code = [parts[1], parts[2], parts[4], parts[6]].filter(Boolean).join('');\n    let modifier = (parts[3] || parts[5] || 1) - 1;\n\n    // Parse the key modifier\n    key.ctrl = !!(modifier & 4);\n    key.meta = !!(modifier & 10);\n    key.shift = !!(modifier & 1);\n    key.code = code;\n\n    key.name = keyName[code];\n    key.shift = isShiftKey(code) || key.shift;\n    key.ctrl = isCtrlKey(code) || key.ctrl;\n  }\n  return key;\n};\n\nkeypress.listen = (options = {}, onKeypress) => {\n  let { stdin } = options;\n\n  if (!stdin || (stdin !== process.stdin && !stdin.isTTY)) {\n    throw new Error('Invalid stream passed');\n  }\n\n  let rl = readline.createInterface({ terminal: true, input: stdin });\n  readline.emitKeypressEvents(stdin, rl);\n\n  let on = (buf, key) => onKeypress(buf, keypress(buf, key), rl);\n  let isRaw = stdin.isRaw;\n\n  if (stdin.isTTY) stdin.setRawMode(true);\n  stdin.on('keypress', on);\n  rl.resume();\n\n  let off = () => {\n    if (stdin.isTTY) stdin.setRawMode(isRaw);\n    stdin.removeListener('keypress', on);\n    rl.pause();\n    rl.close();\n  };\n\n  return off;\n};\n\nkeypress.action = (buf, key, customActions) => {\n  let obj = { ...combos, ...customActions };\n  if (key.ctrl) {\n    key.action = obj.ctrl[key.name];\n    return key;\n  }\n\n  if (key.option && obj.option) {\n    key.action = obj.option[key.name];\n    return key;\n  }\n\n  if (key.shift) {\n    key.action = obj.shift[key.name];\n    return key;\n  }\n\n  key.action = obj.keys[key.name];\n  return key;\n};\n\nmodule.exports = keypress;\n","'use strict';\n\nmodule.exports = prompt => {\n  prompt.timers = prompt.timers || {};\n\n  let timers = prompt.options.timers;\n  if (!timers) return;\n\n  for (let key of Object.keys(timers)) {\n    let opts = timers[key];\n    if (typeof opts === 'number') {\n      opts = { interval: opts };\n    }\n    create(prompt, key, opts);\n  }\n};\n\nfunction create(prompt, name, options = {}) {\n  let timer = prompt.timers[name] = { name, start: Date.now(), ms: 0, tick: 0 };\n  let ms = options.interval || 120;\n  timer.frames = options.frames || [];\n  timer.loading = true;\n\n  let interval = setInterval(() => {\n    timer.ms = Date.now() - timer.start;\n    timer.tick++;\n    prompt.render();\n  }, ms);\n\n  timer.stop = () => {\n    timer.loading = false;\n    clearInterval(interval);\n  };\n\n  Reflect.defineProperty(timer, 'interval', { value: interval });\n  prompt.once('close', () => timer.stop());\n  return timer.stop;\n}\n","'use strict';\n\nconst { define, width } = require('./utils');\n\nclass State {\n  constructor(prompt) {\n    let options = prompt.options;\n    define(this, '_prompt', prompt);\n    this.type = prompt.type;\n    this.name = prompt.name;\n    this.message = '';\n    this.header = '';\n    this.footer = '';\n    this.error = '';\n    this.hint = '';\n    this.input = '';\n    this.cursor = 0;\n    this.index = 0;\n    this.lines = 0;\n    this.tick = 0;\n    this.prompt = '';\n    this.buffer = '';\n    this.width = width(options.stdout || process.stdout);\n    Object.assign(this, options);\n    this.name = this.name || this.message;\n    this.message = this.message || this.name;\n    this.symbols = prompt.symbols;\n    this.styles = prompt.styles;\n    this.required = new Set();\n    this.cancelled = false;\n    this.submitted = false;\n  }\n\n  clone() {\n    let state = { ...this };\n    state.status = this.status;\n    state.buffer = Buffer.from(state.buffer);\n    delete state.clone;\n    return state;\n  }\n\n  set color(val) {\n    this._color = val;\n  }\n  get color() {\n    let styles = this.prompt.styles;\n    if (this.cancelled) return styles.cancelled;\n    if (this.submitted) return styles.submitted;\n    let color = this._color || styles[this.status];\n    return typeof color === 'function' ? color : styles.pending;\n  }\n\n  set loading(value) {\n    this._loading = value;\n  }\n  get loading() {\n    if (typeof this._loading === 'boolean') return this._loading;\n    if (this.loadingChoices) return 'choices';\n    return false;\n  }\n\n  get status() {\n    if (this.cancelled) return 'cancelled';\n    if (this.submitted) return 'submitted';\n    return 'pending';\n  }\n}\n\nmodule.exports = State;\n","'use strict';\n\nconst utils = require('./utils');\nconst colors = require('ansi-colors');\n\nconst styles = {\n  default: colors.noop,\n  noop: colors.noop,\n\n  /**\n   * Modifiers\n   */\n\n  set inverse(custom) {\n    this._inverse = custom;\n  },\n  get inverse() {\n    return this._inverse || utils.inverse(this.primary);\n  },\n\n  set complement(custom) {\n    this._complement = custom;\n  },\n  get complement() {\n    return this._complement || utils.complement(this.primary);\n  },\n\n  /**\n   * Main color\n   */\n\n  primary: colors.cyan,\n\n  /**\n   * Main palette\n   */\n\n  success: colors.green,\n  danger: colors.magenta,\n  strong: colors.bold,\n  warning: colors.yellow,\n  muted: colors.dim,\n  disabled: colors.gray,\n  dark: colors.dim.gray,\n  underline: colors.underline,\n\n  set info(custom) {\n    this._info = custom;\n  },\n  get info() {\n    return this._info || this.primary;\n  },\n\n  set em(custom) {\n    this._em = custom;\n  },\n  get em() {\n    return this._em || this.primary.underline;\n  },\n\n  set heading(custom) {\n    this._heading = custom;\n  },\n  get heading() {\n    return this._heading || this.muted.underline;\n  },\n\n  /**\n   * Statuses\n   */\n\n  set pending(custom) {\n    this._pending = custom;\n  },\n  get pending() {\n    return this._pending || this.primary;\n  },\n\n  set submitted(custom) {\n    this._submitted = custom;\n  },\n  get submitted() {\n    return this._submitted || this.success;\n  },\n\n  set cancelled(custom) {\n    this._cancelled = custom;\n  },\n  get cancelled() {\n    return this._cancelled || this.danger;\n  },\n\n  /**\n   * Special styling\n   */\n\n  set typing(custom) {\n    this._typing = custom;\n  },\n  get typing() {\n    return this._typing || this.dim;\n  },\n\n  set placeholder(custom) {\n    this._placeholder = custom;\n  },\n  get placeholder() {\n    return this._placeholder || this.primary.dim;\n  },\n\n  set highlight(custom) {\n    this._highlight = custom;\n  },\n  get highlight() {\n    return this._highlight || this.inverse;\n  }\n};\n\nstyles.merge = (options = {}) => {\n  if (options.styles && typeof options.styles.enabled === 'boolean') {\n    colors.enabled = options.styles.enabled;\n  }\n  if (options.styles && typeof options.styles.visible === 'boolean') {\n    colors.visible = options.styles.visible;\n  }\n\n  let result = utils.merge({}, styles, options.styles);\n  delete result.merge;\n\n  for (let key of Object.keys(colors)) {\n    if (!result.hasOwnProperty(key)) {\n      Reflect.defineProperty(result, key, { get: () => colors[key] });\n    }\n  }\n\n  for (let key of Object.keys(colors.styles)) {\n    if (!result.hasOwnProperty(key)) {\n      Reflect.defineProperty(result, key, { get: () => colors[key] });\n    }\n  }\n  return result;\n};\n\nmodule.exports = styles;\n","'use strict';\n\nconst isWindows = process.platform === 'win32';\nconst colors = require('ansi-colors');\nconst utils = require('./utils');\n\nconst symbols = {\n  ...colors.symbols,\n  upDownDoubleArrow: '⇕',\n  upDownDoubleArrow2: '⬍',\n  upDownArrow: '↕',\n  asterisk: '*',\n  asterism: '⁂',\n  bulletWhite: '◦',\n  electricArrow: '⌁',\n  ellipsisLarge: '⋯',\n  ellipsisSmall: '…',\n  fullBlock: '█',\n  identicalTo: '≡',\n  indicator: colors.symbols.check,\n  leftAngle: '‹',\n  mark: '※',\n  minus: '−',\n  multiplication: '×',\n  obelus: '÷',\n  percent: '%',\n  pilcrow: '¶',\n  pilcrow2: '❡',\n  pencilUpRight: '✐',\n  pencilDownRight: '✎',\n  pencilRight: '✏',\n  plus: '+',\n  plusMinus: '±',\n  pointRight: '☞',\n  rightAngle: '›',\n  section: '§',\n  hexagon: { off: '⬡', on: '⬢', disabled: '⬢' },\n  ballot: { on: '☑', off: '☐', disabled: '☒' },\n  stars: { on: '★', off: '☆', disabled: '☆' },\n  folder: { on: '▼', off: '▶', disabled: '▶' },\n  prefix: {\n    pending: colors.symbols.question,\n    submitted: colors.symbols.check,\n    cancelled: colors.symbols.cross\n  },\n  separator: {\n    pending: colors.symbols.pointerSmall,\n    submitted: colors.symbols.middot,\n    cancelled: colors.symbols.middot\n  },\n  radio: {\n    off: isWindows ? '( )' : '◯',\n    on: isWindows ? '(*)' : '◉',\n    disabled: isWindows ? '(|)' : 'Ⓘ'\n  },\n  numbers: ['⓪', '①', '②', '③', '④', '⑤', '⑥', '⑦', '⑧', '⑨', '⑩', '⑪', '⑫', '⑬', '⑭', '⑮', '⑯', '⑰', '⑱', '⑲', '⑳', '㉑', '㉒', '㉓', '㉔', '㉕', '㉖', '㉗', '㉘', '㉙', '㉚', '㉛', '㉜', '㉝', '㉞', '㉟', '㊱', '㊲', '㊳', '㊴', '㊵', '㊶', '㊷', '㊸', '㊹', '㊺', '㊻', '㊼', '㊽', '㊾', '㊿']\n};\n\nsymbols.merge = options => {\n  let result = utils.merge({}, colors.symbols, symbols, options.symbols);\n  delete result.merge;\n  return result;\n};\n\nmodule.exports = symbols;\n\n","'use strict';\n\nconst styles = require('./styles');\nconst symbols = require('./symbols');\nconst utils = require('./utils');\n\nmodule.exports = prompt => {\n  prompt.options = utils.merge({}, prompt.options.theme, prompt.options);\n  prompt.symbols = symbols.merge(prompt.options);\n  prompt.styles = styles.merge(prompt.options);\n};\n","'use strict';\n\nconst isTerm = process.env.TERM_PROGRAM === 'Apple_Terminal';\nconst colors = require('ansi-colors');\nconst utils = require('./utils');\nconst ansi = module.exports = exports;\nconst ESC = '\\u001b[';\nconst BEL = '\\u0007';\nlet hidden = false;\n\nconst code = ansi.code = {\n  bell: BEL,\n  beep: BEL,\n  beginning: `${ESC}G`,\n  down: `${ESC}J`,\n  esc: ESC,\n  getPosition: `${ESC}6n`,\n  hide: `${ESC}?25l`,\n  line: `${ESC}2K`,\n  lineEnd: `${ESC}K`,\n  lineStart: `${ESC}1K`,\n  restorePosition: ESC + (isTerm ? '8' : 'u'),\n  savePosition: ESC + (isTerm ? '7' : 's'),\n  screen: `${ESC}2J`,\n  show: `${ESC}?25h`,\n  up: `${ESC}1J`\n};\n\nconst cursor = ansi.cursor = {\n  get hidden() {\n    return hidden;\n  },\n\n  hide() {\n    hidden = true;\n    return code.hide;\n  },\n  show() {\n    hidden = false;\n    return code.show;\n  },\n\n  forward: (count = 1) => `${ESC}${count}C`,\n  backward: (count = 1) => `${ESC}${count}D`,\n  nextLine: (count = 1) => `${ESC}E`.repeat(count),\n  prevLine: (count = 1) => `${ESC}F`.repeat(count),\n\n  up: (count = 1) => count ? `${ESC}${count}A` : '',\n  down: (count = 1) => count ? `${ESC}${count}B` : '',\n  right: (count = 1) => count ? `${ESC}${count}C` : '',\n  left: (count = 1) => count ? `${ESC}${count}D` : '',\n\n  to(x, y) {\n    return y ? `${ESC}${y + 1};${x + 1}H` : `${ESC}${x + 1}G`;\n  },\n\n  move(x = 0, y = 0) {\n    let res = '';\n    res += (x < 0) ? cursor.left(-x) : (x > 0) ? cursor.right(x) : '';\n    res += (y < 0) ? cursor.up(-y) : (y > 0) ? cursor.down(y) : '';\n    return res;\n  },\n\n  restore(state = {}) {\n    let { after, cursor, initial, input, prompt, size, value } = state;\n    initial = utils.isPrimitive(initial) ? String(initial) : '';\n    input = utils.isPrimitive(input) ? String(input) : '';\n    value = utils.isPrimitive(value) ? String(value) : '';\n\n    if (size) {\n      let codes = ansi.cursor.up(size) + ansi.cursor.to(prompt.length);\n      let diff = input.length - cursor;\n      if (diff > 0) {\n        codes += ansi.cursor.left(diff);\n      }\n      return codes;\n    }\n\n    if (value || after) {\n      let pos = (!input && !!initial) ? -initial.length : -input.length + cursor;\n      if (after) pos -= after.length;\n      if (input === '' && initial && !prompt.includes(initial)) {\n        pos += initial.length;\n      }\n      return ansi.cursor.move(pos);\n    }\n  }\n};\n\nconst erase = ansi.erase = {\n  screen: code.screen,\n  up: code.up,\n  down: code.down,\n  line: code.line,\n  lineEnd: code.lineEnd,\n  lineStart: code.lineStart,\n  lines(n) {\n    let str = '';\n    for (let i = 0; i < n; i++) {\n      str += ansi.erase.line + (i < n - 1 ? ansi.cursor.up(1) : '');\n    }\n    if (n) str += ansi.code.beginning;\n    return str;\n  }\n};\n\nansi.clear = (input = '', columns = process.stdout.columns) => {\n  if (!columns) return erase.line + cursor.to(0);\n  let width = str => [...colors.unstyle(str)].length;\n  let lines = input.split(/\\r?\\n/);\n  let rows = 0;\n  for (let line of lines) {\n    rows += 1 + Math.floor(Math.max(width(line) - 1, 0) / columns);\n  }\n  return (erase.line + cursor.prevLine()).repeat(rows - 1) + erase.line + cursor.to(0);\n};\n","'use strict';\n\nconst Events = require('events');\nconst colors = require('ansi-colors');\nconst keypress = require('./keypress');\nconst timer = require('./timer');\nconst State = require('./state');\nconst theme = require('./theme');\nconst utils = require('./utils');\nconst ansi = require('./ansi');\n\n/**\n * Base class for creating a new Prompt.\n * @param {Object} `options` Question object.\n */\n\nclass Prompt extends Events {\n  constructor(options = {}) {\n    super();\n    this.name = options.name;\n    this.type = options.type;\n    this.options = options;\n    theme(this);\n    timer(this);\n    this.state = new State(this);\n    this.initial = [options.initial, options.default].find(v => v != null);\n    this.stdout = options.stdout || process.stdout;\n    this.stdin = options.stdin || process.stdin;\n    this.scale = options.scale || 1;\n    this.term = this.options.term || process.env.TERM_PROGRAM;\n    this.margin = margin(this.options.margin);\n    this.setMaxListeners(0);\n    setOptions(this);\n  }\n\n  async keypress(input, event = {}) {\n    this.keypressed = true;\n    let key = keypress.action(input, keypress(input, event), this.options.actions);\n    this.state.keypress = key;\n    this.emit('keypress', input, key);\n    this.emit('state', this.state.clone());\n    let fn = this.options[key.action] || this[key.action] || this.dispatch;\n    if (typeof fn === 'function') {\n      return await fn.call(this, input, key);\n    }\n    this.alert();\n  }\n\n  alert() {\n    delete this.state.alert;\n    if (this.options.show === false) {\n      this.emit('alert');\n    } else {\n      this.stdout.write(ansi.code.beep);\n    }\n  }\n\n  cursorHide() {\n    this.stdout.write(ansi.cursor.hide());\n    utils.onExit(() => this.cursorShow());\n  }\n\n  cursorShow() {\n    this.stdout.write(ansi.cursor.show());\n  }\n\n  write(str) {\n    if (!str) return;\n    if (this.stdout && this.state.show !== false) {\n      this.stdout.write(str);\n    }\n    this.state.buffer += str;\n  }\n\n  clear(lines = 0) {\n    let buffer = this.state.buffer;\n    this.state.buffer = '';\n    if ((!buffer && !lines) || this.options.show === false) return;\n    this.stdout.write(ansi.cursor.down(lines) + ansi.clear(buffer, this.width));\n  }\n\n  restore() {\n    if (this.state.closed || this.options.show === false) return;\n\n    let { prompt, after, rest } = this.sections();\n    let { cursor, initial = '', input = '', value = '' } = this;\n\n    let size = this.state.size = rest.length;\n    let state = { after, cursor, initial, input, prompt, size, value };\n    let codes = ansi.cursor.restore(state);\n    if (codes) {\n      this.stdout.write(codes);\n    }\n  }\n\n  sections() {\n    let { buffer, input, prompt } = this.state;\n    prompt = colors.unstyle(prompt);\n    let buf = colors.unstyle(buffer);\n    let idx = buf.indexOf(prompt);\n    let header = buf.slice(0, idx);\n    let rest = buf.slice(idx);\n    let lines = rest.split('\\n');\n    let first = lines[0];\n    let last = lines[lines.length - 1];\n    let promptLine = prompt + (input ? ' ' + input : '');\n    let len = promptLine.length;\n    let after = len < first.length ? first.slice(len + 1) : '';\n    return { header, prompt: first, after, rest: lines.slice(1), last };\n  }\n\n  async submit() {\n    this.state.submitted = true;\n    this.state.validating = true;\n\n    // this will only be called when the prompt is directly submitted\n    // without initializing, i.e. when the prompt is skipped, etc. Otherwize,\n    // \"options.onSubmit\" is will be handled by the \"initialize()\" method.\n    if (this.options.onSubmit) {\n      await this.options.onSubmit.call(this, this.name, this.value, this);\n    }\n\n    let result = this.state.error || await this.validate(this.value, this.state);\n    if (result !== true) {\n      let error = '\\n' + this.symbols.pointer + ' ';\n\n      if (typeof result === 'string') {\n        error += result.trim();\n      } else {\n        error += 'Invalid input';\n      }\n\n      this.state.error = '\\n' + this.styles.danger(error);\n      this.state.submitted = false;\n      await this.render();\n      await this.alert();\n      this.state.validating = false;\n      this.state.error = void 0;\n      return;\n    }\n\n    this.state.validating = false;\n    await this.render();\n    await this.close();\n\n    this.value = await this.result(this.value);\n    this.emit('submit', this.value);\n  }\n\n  async cancel(err) {\n    this.state.cancelled = this.state.submitted = true;\n\n    await this.render();\n    await this.close();\n\n    if (typeof this.options.onCancel === 'function') {\n      await this.options.onCancel.call(this, this.name, this.value, this);\n    }\n\n    this.emit('cancel', await this.error(err));\n  }\n\n  async close() {\n    this.state.closed = true;\n\n    try {\n      let sections = this.sections();\n      let lines = Math.ceil(sections.prompt.length / this.width);\n      if (sections.rest) {\n        this.write(ansi.cursor.down(sections.rest.length));\n      }\n      this.write('\\n'.repeat(lines));\n    } catch (err) { /* do nothing */ }\n\n    this.emit('close');\n  }\n\n  start() {\n    if (!this.stop && this.options.show !== false) {\n      this.stop = keypress.listen(this, this.keypress.bind(this));\n      this.once('close', this.stop);\n    }\n  }\n\n  async skip() {\n    this.skipped = this.options.skip === true;\n    if (typeof this.options.skip === 'function') {\n      this.skipped = await this.options.skip.call(this, this.name, this.value);\n    }\n    return this.skipped;\n  }\n\n  async initialize() {\n    let { format, options, result } = this;\n\n    this.format = () => format.call(this, this.value);\n    this.result = () => result.call(this, this.value);\n\n    if (typeof options.initial === 'function') {\n      this.initial = await options.initial.call(this, this);\n    }\n\n    if (typeof options.onRun === 'function') {\n      await options.onRun.call(this, this);\n    }\n\n    // if \"options.onSubmit\" is defined, we wrap the \"submit\" method to guarantee\n    // that \"onSubmit\" will always called first thing inside the submit\n    // method, regardless of how it's handled in inheriting prompts.\n    if (typeof options.onSubmit === 'function') {\n      let onSubmit = options.onSubmit.bind(this);\n      let submit = this.submit.bind(this);\n      delete this.options.onSubmit;\n      this.submit = async() => {\n        await onSubmit(this.name, this.value, this);\n        return submit();\n      };\n    }\n\n    await this.start();\n    await this.render();\n  }\n\n  render() {\n    throw new Error('expected prompt to have a custom render method');\n  }\n\n  run() {\n    return new Promise(async(resolve, reject) => {\n      this.once('submit', resolve);\n      this.once('cancel', reject);\n      if (await this.skip()) {\n        this.render = () => {};\n        return this.submit();\n      }\n      await this.initialize();\n      this.emit('run');\n    });\n  }\n\n  async element(name, choice, i) {\n    let { options, state, symbols, timers } = this;\n    let timer = timers && timers[name];\n    state.timer = timer;\n    let value = options[name] || state[name] || symbols[name];\n    let val = choice && choice[name] != null ? choice[name] : await value;\n    if (val === '') return val;\n\n    let res = await this.resolve(val, state, choice, i);\n    if (!res && choice && choice[name]) {\n      return this.resolve(value, state, choice, i);\n    }\n    return res;\n  }\n\n  async prefix() {\n    let element = await this.element('prefix') || this.symbols;\n    let timer = this.timers && this.timers.prefix;\n    let state = this.state;\n    state.timer = timer;\n    if (utils.isObject(element)) element = element[state.status] || element.pending;\n    if (!utils.hasColor(element)) {\n      let style = this.styles[state.status] || this.styles.pending;\n      return style(element);\n    }\n    return element;\n  }\n\n  async message() {\n    let message = await this.element('message');\n    if (!utils.hasColor(message)) {\n      return this.styles.strong(message);\n    }\n    return message;\n  }\n\n  async separator() {\n    let element = await this.element('separator') || this.symbols;\n    let timer = this.timers && this.timers.separator;\n    let state = this.state;\n    state.timer = timer;\n    let value = element[state.status] || element.pending || state.separator;\n    let ele = await this.resolve(value, state);\n    if (utils.isObject(ele)) ele = ele[state.status] || ele.pending;\n    if (!utils.hasColor(ele)) {\n      return this.styles.muted(ele);\n    }\n    return ele;\n  }\n\n  async pointer(choice, i) {\n    let val = await this.element('pointer', choice, i);\n\n    if (typeof val === 'string' && utils.hasColor(val)) {\n      return val;\n    }\n\n    if (val) {\n      let styles = this.styles;\n      let focused = this.index === i;\n      let style = focused ? styles.primary : val => val;\n      let ele = await this.resolve(val[focused ? 'on' : 'off'] || val, this.state);\n      let styled = !utils.hasColor(ele) ? style(ele) : ele;\n      return focused ? styled : ' '.repeat(ele.length);\n    }\n  }\n\n  async indicator(choice, i) {\n    let val = await this.element('indicator', choice, i);\n    if (typeof val === 'string' && utils.hasColor(val)) {\n      return val;\n    }\n    if (val) {\n      let styles = this.styles;\n      let enabled = choice.enabled === true;\n      let style = enabled ? styles.success : styles.dark;\n      let ele = val[enabled ? 'on' : 'off'] || val;\n      return !utils.hasColor(ele) ? style(ele) : ele;\n    }\n    return '';\n  }\n\n  body() {\n    return null;\n  }\n\n  footer() {\n    if (this.state.status === 'pending') {\n      return this.element('footer');\n    }\n  }\n\n  header() {\n    if (this.state.status === 'pending') {\n      return this.element('header');\n    }\n  }\n\n  async hint() {\n    if (this.state.status === 'pending' && !this.isValue(this.state.input)) {\n      let hint = await this.element('hint');\n      if (!utils.hasColor(hint)) {\n        return this.styles.muted(hint);\n      }\n      return hint;\n    }\n  }\n\n  error(err) {\n    return !this.state.submitted ? (err || this.state.error) : '';\n  }\n\n  format(value) {\n    return value;\n  }\n\n  result(value) {\n    return value;\n  }\n\n  validate(value) {\n    if (this.options.required === true) {\n      return this.isValue(value);\n    }\n    return true;\n  }\n\n  isValue(value) {\n    return value != null && value !== '';\n  }\n\n  resolve(value, ...args) {\n    return utils.resolve(this, value, ...args);\n  }\n\n  get base() {\n    return Prompt.prototype;\n  }\n\n  get style() {\n    return this.styles[this.state.status];\n  }\n\n  get height() {\n    return this.options.rows || utils.height(this.stdout, 25);\n  }\n  get width() {\n    return this.options.columns || utils.width(this.stdout, 80);\n  }\n  get size() {\n    return { width: this.width, height: this.height };\n  }\n\n  set cursor(value) {\n    this.state.cursor = value;\n  }\n  get cursor() {\n    return this.state.cursor;\n  }\n\n  set input(value) {\n    this.state.input = value;\n  }\n  get input() {\n    return this.state.input;\n  }\n\n  set value(value) {\n    this.state.value = value;\n  }\n  get value() {\n    let { input, value } = this.state;\n    let result = [value, input].find(this.isValue.bind(this));\n    return this.isValue(result) ? result : this.initial;\n  }\n\n  static get prompt() {\n    return options => new this(options).run();\n  }\n}\n\nfunction setOptions(prompt) {\n  let isValidKey = key => {\n    return prompt[key] === void 0 || typeof prompt[key] === 'function';\n  };\n\n  let ignore = [\n    'actions',\n    'choices',\n    'initial',\n    'margin',\n    'roles',\n    'styles',\n    'symbols',\n    'theme',\n    'timers',\n    'value'\n  ];\n\n  let ignoreFn = [\n    'body',\n    'footer',\n    'error',\n    'header',\n    'hint',\n    'indicator',\n    'message',\n    'prefix',\n    'separator',\n    'skip'\n  ];\n\n  for (let key of Object.keys(prompt.options)) {\n    if (ignore.includes(key)) continue;\n    if (/^on[A-Z]/.test(key)) continue;\n    let option = prompt.options[key];\n    if (typeof option === 'function' && isValidKey(key)) {\n      if (!ignoreFn.includes(key)) {\n        prompt[key] = option.bind(prompt);\n      }\n    } else if (typeof prompt[key] !== 'function') {\n      prompt[key] = option;\n    }\n  }\n}\n\nfunction margin(value) {\n  if (typeof value === 'number') {\n    value = [value, value, value, value];\n  }\n  let arr = [].concat(value || []);\n  let pad = i => i % 2 === 0 ? '\\n' : ' ';\n  let res = [];\n  for (let i = 0; i < 4; i++) {\n    let char = pad(i);\n    if (arr[i]) {\n      res.push(char.repeat(arr[i]));\n    } else {\n      res.push('');\n    }\n  }\n  return res;\n}\n\nmodule.exports = Prompt;\n","'use strict';\n\nconst utils = require('./utils');\nconst roles = {\n  default(prompt, choice) {\n    return choice;\n  },\n  checkbox(prompt, choice) {\n    throw new Error('checkbox role is not implemented yet');\n  },\n  editable(prompt, choice) {\n    throw new Error('editable role is not implemented yet');\n  },\n  expandable(prompt, choice) {\n    throw new Error('expandable role is not implemented yet');\n  },\n  heading(prompt, choice) {\n    choice.disabled = '';\n    choice.indicator = [choice.indicator, ' '].find(v => v != null);\n    choice.message = choice.message || '';\n    return choice;\n  },\n  input(prompt, choice) {\n    throw new Error('input role is not implemented yet');\n  },\n  option(prompt, choice) {\n    return roles.default(prompt, choice);\n  },\n  radio(prompt, choice) {\n    throw new Error('radio role is not implemented yet');\n  },\n  separator(prompt, choice) {\n    choice.disabled = '';\n    choice.indicator = [choice.indicator, ' '].find(v => v != null);\n    choice.message = choice.message || prompt.symbols.line.repeat(5);\n    return choice;\n  },\n  spacer(prompt, choice) {\n    return choice;\n  }\n};\n\nmodule.exports = (name, options = {}) => {\n  let role = utils.merge({}, roles, options.roles);\n  return role[name] || role.default;\n};\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst Prompt = require('../prompt');\nconst roles = require('../roles');\nconst utils = require('../utils');\nconst { reorder, scrollUp, scrollDown, isObject, swap } = utils;\n\nclass ArrayPrompt extends Prompt {\n  constructor(options) {\n    super(options);\n    this.cursorHide();\n    this.maxSelected = options.maxSelected || Infinity;\n    this.multiple = options.multiple || false;\n    this.initial = options.initial || 0;\n    this.delay = options.delay || 0;\n    this.longest = 0;\n    this.num = '';\n  }\n\n  async initialize() {\n    if (typeof this.options.initial === 'function') {\n      this.initial = await this.options.initial.call(this);\n    }\n    await this.reset(true);\n    await super.initialize();\n  }\n\n  async reset() {\n    let { choices, initial, autofocus, suggest } = this.options;\n    this.state._choices = [];\n    this.state.choices = [];\n\n    this.choices = await Promise.all(await this.toChoices(choices));\n    this.choices.forEach(ch => (ch.enabled = false));\n\n    if (typeof suggest !== 'function' && this.selectable.length === 0) {\n      throw new Error('At least one choice must be selectable');\n    }\n\n    if (isObject(initial)) initial = Object.keys(initial);\n    if (Array.isArray(initial)) {\n      if (autofocus != null) this.index = this.findIndex(autofocus);\n      initial.forEach(v => this.enable(this.find(v)));\n      await this.render();\n    } else {\n      if (autofocus != null) initial = autofocus;\n      if (typeof initial === 'string') initial = this.findIndex(initial);\n      if (typeof initial === 'number' && initial > -1) {\n        this.index = Math.max(0, Math.min(initial, this.choices.length));\n        this.enable(this.find(this.index));\n      }\n    }\n\n    if (this.isDisabled(this.focused)) {\n      await this.down();\n    }\n  }\n\n  async toChoices(value, parent) {\n    this.state.loadingChoices = true;\n    let choices = [];\n    let index = 0;\n\n    let toChoices = async(items, parent) => {\n      if (typeof items === 'function') items = await items.call(this);\n      if (items instanceof Promise) items = await items;\n\n      for (let i = 0; i < items.length; i++) {\n        let choice = items[i] = await this.toChoice(items[i], index++, parent);\n        choices.push(choice);\n\n        if (choice.choices) {\n          await toChoices(choice.choices, choice);\n        }\n      }\n      return choices;\n    };\n\n    return toChoices(value, parent)\n      .then(choices => {\n        this.state.loadingChoices = false;\n        return choices;\n      });\n  }\n\n  async toChoice(ele, i, parent) {\n    if (typeof ele === 'function') ele = await ele.call(this, this);\n    if (ele instanceof Promise) ele = await ele;\n    if (typeof ele === 'string') ele = { name: ele };\n\n    if (ele.normalized) return ele;\n    ele.normalized = true;\n\n    let origVal = ele.value;\n    let role = roles(ele.role, this.options);\n    ele = role(this, ele);\n\n    if (typeof ele.disabled === 'string' && !ele.hint) {\n      ele.hint = ele.disabled;\n      ele.disabled = true;\n    }\n\n    if (ele.disabled === true && ele.hint == null) {\n      ele.hint = '(disabled)';\n    }\n\n    // if the choice was already normalized, return it\n    if (ele.index != null) return ele;\n    ele.name = ele.name || ele.key || ele.title || ele.value || ele.message;\n    ele.message = ele.message || ele.name || '';\n    ele.value = [ele.value, ele.name].find(this.isValue.bind(this));\n\n    ele.input = '';\n    ele.index = i;\n    ele.cursor = 0;\n\n    utils.define(ele, 'parent', parent);\n    ele.level = parent ? parent.level + 1 : 1;\n    if (ele.indent == null) {\n      ele.indent = parent ? parent.indent + '  ' : (ele.indent || '');\n    }\n\n    ele.path = parent ? parent.path + '.' + ele.name : ele.name;\n    ele.enabled = !!(this.multiple && !this.isDisabled(ele) && (ele.enabled || this.isSelected(ele)));\n\n    if (!this.isDisabled(ele)) {\n      this.longest = Math.max(this.longest, colors.unstyle(ele.message).length);\n    }\n\n    // shallow clone the choice first\n    let choice = { ...ele };\n\n    // then allow the choice to be reset using the \"original\" values\n    ele.reset = (input = choice.input, value = choice.value) => {\n      for (let key of Object.keys(choice)) ele[key] = choice[key];\n      ele.input = input;\n      ele.value = value;\n    };\n\n    if (origVal == null && typeof ele.initial === 'function') {\n      ele.input = await ele.initial.call(this, this.state, ele, i);\n    }\n\n    return ele;\n  }\n\n  async onChoice(choice, i) {\n    this.emit('choice', choice, i, this);\n\n    if (typeof choice.onChoice === 'function') {\n      await choice.onChoice.call(this, this.state, choice, i);\n    }\n  }\n\n  async addChoice(ele, i, parent) {\n    let choice = await this.toChoice(ele, i, parent);\n    this.choices.push(choice);\n    this.index = this.choices.length - 1;\n    this.limit = this.choices.length;\n    return choice;\n  }\n\n  async newItem(item, i, parent) {\n    let ele = { name: 'New choice name?', editable: true, newChoice: true, ...item };\n    let choice = await this.addChoice(ele, i, parent);\n\n    choice.updateChoice = () => {\n      delete choice.newChoice;\n      choice.name = choice.message = choice.input;\n      choice.input = '';\n      choice.cursor = 0;\n    };\n\n    return this.render();\n  }\n\n  indent(choice) {\n    if (choice.indent == null) {\n      return choice.level > 1 ? '  '.repeat(choice.level - 1) : '';\n    }\n    return choice.indent;\n  }\n\n  dispatch(s, key) {\n    if (this.multiple && this[key.name]) return this[key.name]();\n    this.alert();\n  }\n\n  focus(choice, enabled) {\n    if (typeof enabled !== 'boolean') enabled = choice.enabled;\n    if (enabled && !choice.enabled && this.selected.length >= this.maxSelected) {\n      return this.alert();\n    }\n    this.index = choice.index;\n    choice.enabled = enabled && !this.isDisabled(choice);\n    return choice;\n  }\n\n  space() {\n    if (!this.multiple) return this.alert();\n    this.toggle(this.focused);\n    return this.render();\n  }\n\n  a() {\n    if (this.maxSelected < this.choices.length) return this.alert();\n    let enabled = this.selectable.every(ch => ch.enabled);\n    this.choices.forEach(ch => (ch.enabled = !enabled));\n    return this.render();\n  }\n\n  i() {\n    // don't allow choices to be inverted if it will result in\n    // more than the maximum number of allowed selected items.\n    if (this.choices.length - this.selected.length > this.maxSelected) {\n      return this.alert();\n    }\n    this.choices.forEach(ch => (ch.enabled = !ch.enabled));\n    return this.render();\n  }\n\n  g(choice = this.focused) {\n    if (!this.choices.some(ch => !!ch.parent)) return this.a();\n    this.toggle((choice.parent && !choice.choices) ? choice.parent : choice);\n    return this.render();\n  }\n\n  toggle(choice, enabled) {\n    if (!choice.enabled && this.selected.length >= this.maxSelected) {\n      return this.alert();\n    }\n\n    if (typeof enabled !== 'boolean') enabled = !choice.enabled;\n    choice.enabled = enabled;\n\n    if (choice.choices) {\n      choice.choices.forEach(ch => this.toggle(ch, enabled));\n    }\n\n    let parent = choice.parent;\n    while (parent) {\n      let choices = parent.choices.filter(ch => this.isDisabled(ch));\n      parent.enabled = choices.every(ch => ch.enabled === true);\n      parent = parent.parent;\n    }\n\n    reset(this, this.choices);\n    this.emit('toggle', choice, this);\n    return choice;\n  }\n\n  enable(choice) {\n    if (this.selected.length >= this.maxSelected) return this.alert();\n    choice.enabled = !this.isDisabled(choice);\n    choice.choices && choice.choices.forEach(this.enable.bind(this));\n    return choice;\n  }\n\n  disable(choice) {\n    choice.enabled = false;\n    choice.choices && choice.choices.forEach(this.disable.bind(this));\n    return choice;\n  }\n\n  number(n) {\n    this.num += n;\n\n    let number = num => {\n      let i = Number(num);\n      if (i > this.choices.length - 1) return this.alert();\n\n      let focused = this.focused;\n      let choice = this.choices.find(ch => i === ch.index);\n\n      if (!choice.enabled && this.selected.length >= this.maxSelected) {\n        return this.alert();\n      }\n\n      if (this.visible.indexOf(choice) === -1) {\n        let choices = reorder(this.choices);\n        let actualIdx = choices.indexOf(choice);\n\n        if (focused.index > actualIdx) {\n          let start = choices.slice(actualIdx, actualIdx + this.limit);\n          let end = choices.filter(ch => !start.includes(ch));\n          this.choices = start.concat(end);\n        } else {\n          let pos = actualIdx - this.limit + 1;\n          this.choices = choices.slice(pos).concat(choices.slice(0, pos));\n        }\n      }\n\n      this.index = this.choices.indexOf(choice);\n      this.toggle(this.focused);\n      return this.render();\n    };\n\n    clearTimeout(this.numberTimeout);\n\n    return new Promise(resolve => {\n      let len = this.choices.length;\n      let num = this.num;\n\n      let handle = (val = false, res) => {\n        clearTimeout(this.numberTimeout);\n        if (val) res = number(num);\n        this.num = '';\n        resolve(res);\n      };\n\n      if (num === '0' || (num.length === 1 && Number(num + '0') > len)) {\n        return handle(true);\n      }\n\n      if (Number(num) > len) {\n        return handle(false, this.alert());\n      }\n\n      this.numberTimeout = setTimeout(() => handle(true), this.delay);\n    });\n  }\n\n  home() {\n    this.choices = reorder(this.choices);\n    this.index = 0;\n    return this.render();\n  }\n\n  end() {\n    let pos = this.choices.length - this.limit;\n    let choices = reorder(this.choices);\n    this.choices = choices.slice(pos).concat(choices.slice(0, pos));\n    this.index = this.limit - 1;\n    return this.render();\n  }\n\n  first() {\n    this.index = 0;\n    return this.render();\n  }\n\n  last() {\n    this.index = this.visible.length - 1;\n    return this.render();\n  }\n\n  prev() {\n    if (this.visible.length <= 1) return this.alert();\n    return this.up();\n  }\n\n  next() {\n    if (this.visible.length <= 1) return this.alert();\n    return this.down();\n  }\n\n  right() {\n    if (this.cursor >= this.input.length) return this.alert();\n    this.cursor++;\n    return this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0) return this.alert();\n    this.cursor--;\n    return this.render();\n  }\n\n  up() {\n    let len = this.choices.length;\n    let vis = this.visible.length;\n    let idx = this.index;\n    if (this.options.scroll === false && idx === 0) {\n      return this.alert();\n    }\n    if (len > vis && idx === 0) {\n      return this.scrollUp();\n    }\n    this.index = ((idx - 1 % len) + len) % len;\n    if (this.isDisabled()) {\n      return this.up();\n    }\n    return this.render();\n  }\n\n  down() {\n    let len = this.choices.length;\n    let vis = this.visible.length;\n    let idx = this.index;\n    if (this.options.scroll === false && idx === vis - 1) {\n      return this.alert();\n    }\n    if (len > vis && idx === vis - 1) {\n      return this.scrollDown();\n    }\n    this.index = (idx + 1) % len;\n    if (this.isDisabled()) {\n      return this.down();\n    }\n    return this.render();\n  }\n\n  scrollUp(i = 0) {\n    this.choices = scrollUp(this.choices);\n    this.index = i;\n    if (this.isDisabled()) {\n      return this.up();\n    }\n    return this.render();\n  }\n\n  scrollDown(i = this.visible.length - 1) {\n    this.choices = scrollDown(this.choices);\n    this.index = i;\n    if (this.isDisabled()) {\n      return this.down();\n    }\n    return this.render();\n  }\n\n  async shiftUp() {\n    if (this.options.sort === true) {\n      this.sorting = true;\n      this.swap(this.index - 1);\n      await this.up();\n      this.sorting = false;\n      return;\n    }\n    return this.scrollUp(this.index);\n  }\n\n  async shiftDown() {\n    if (this.options.sort === true) {\n      this.sorting = true;\n      this.swap(this.index + 1);\n      await this.down();\n      this.sorting = false;\n      return;\n    }\n    return this.scrollDown(this.index);\n  }\n\n  pageUp() {\n    if (this.visible.length <= 1) return this.alert();\n    this.limit = Math.max(this.limit - 1, 0);\n    this.index = Math.min(this.limit - 1, this.index);\n    this._limit = this.limit;\n    if (this.isDisabled()) {\n      return this.up();\n    }\n    return this.render();\n  }\n\n  pageDown() {\n    if (this.visible.length >= this.choices.length) return this.alert();\n    this.index = Math.max(0, this.index);\n    this.limit = Math.min(this.limit + 1, this.choices.length);\n    this._limit = this.limit;\n    if (this.isDisabled()) {\n      return this.down();\n    }\n    return this.render();\n  }\n\n  swap(pos) {\n    swap(this.choices, this.index, pos);\n  }\n\n  isDisabled(choice = this.focused) {\n    let keys = ['disabled', 'collapsed', 'hidden', 'completing', 'readonly'];\n    if (choice && keys.some(key => choice[key] === true)) {\n      return true;\n    }\n    return choice && choice.role === 'heading';\n  }\n\n  isEnabled(choice = this.focused) {\n    if (Array.isArray(choice)) return choice.every(ch => this.isEnabled(ch));\n    if (choice.choices) {\n      let choices = choice.choices.filter(ch => !this.isDisabled(ch));\n      return choice.enabled && choices.every(ch => this.isEnabled(ch));\n    }\n    return choice.enabled && !this.isDisabled(choice);\n  }\n\n  isChoice(choice, value) {\n    return choice.name === value || choice.index === Number(value);\n  }\n\n  isSelected(choice) {\n    if (Array.isArray(this.initial)) {\n      return this.initial.some(value => this.isChoice(choice, value));\n    }\n    return this.isChoice(choice, this.initial);\n  }\n\n  map(names = [], prop = 'value') {\n    return [].concat(names || []).reduce((acc, name) => {\n      acc[name] = this.find(name, prop);\n      return acc;\n    }, {});\n  }\n\n  filter(value, prop) {\n    let isChoice = (ele, i) => [ele.name, i].includes(value);\n    let fn = typeof value === 'function' ? value : isChoice;\n    let choices = this.options.multiple ? this.state._choices : this.choices;\n    let result = choices.filter(fn);\n    if (prop) {\n      return result.map(ch => ch[prop]);\n    }\n    return result;\n  }\n\n  find(value, prop) {\n    if (isObject(value)) return prop ? value[prop] : value;\n    let isChoice = (ele, i) => [ele.name, i].includes(value);\n    let fn = typeof value === 'function' ? value : isChoice;\n    let choice = this.choices.find(fn);\n    if (choice) {\n      return prop ? choice[prop] : choice;\n    }\n  }\n\n  findIndex(value) {\n    return this.choices.indexOf(this.find(value));\n  }\n\n  async submit() {\n    let choice = this.focused;\n    if (!choice) return this.alert();\n\n    if (choice.newChoice) {\n      if (!choice.input) return this.alert();\n      choice.updateChoice();\n      return this.render();\n    }\n\n    if (this.choices.some(ch => ch.newChoice)) {\n      return this.alert();\n    }\n\n    let { reorder, sort } = this.options;\n    let multi = this.multiple === true;\n    let value = this.selected;\n    if (value === void 0) {\n      return this.alert();\n    }\n\n    // re-sort choices to original order\n    if (Array.isArray(value) && reorder !== false && sort !== true) {\n      value = utils.reorder(value);\n    }\n\n    this.value = multi ? value.map(ch => ch.name) : value.name;\n    return super.submit();\n  }\n\n  set choices(choices = []) {\n    this.state._choices = this.state._choices || [];\n    this.state.choices = choices;\n\n    for (let choice of choices) {\n      if (!this.state._choices.some(ch => ch.name === choice.name)) {\n        this.state._choices.push(choice);\n      }\n    }\n\n    if (!this._initial && this.options.initial) {\n      this._initial = true;\n      let init = this.initial;\n      if (typeof init === 'string' || typeof init === 'number') {\n        let choice = this.find(init);\n        if (choice) {\n          this.initial = choice.index;\n          this.focus(choice, true);\n        }\n      }\n    }\n  }\n  get choices() {\n    return reset(this, this.state.choices || []);\n  }\n\n  set visible(visible) {\n    this.state.visible = visible;\n  }\n  get visible() {\n    return (this.state.visible || this.choices).slice(0, this.limit);\n  }\n\n  set limit(num) {\n    this.state.limit = num;\n  }\n  get limit() {\n    let { state, options, choices } = this;\n    let limit = state.limit || this._limit || options.limit || choices.length;\n    return Math.min(limit, this.height);\n  }\n\n  set value(value) {\n    super.value = value;\n  }\n  get value() {\n    if (typeof super.value !== 'string' && super.value === this.initial) {\n      return this.input;\n    }\n    return super.value;\n  }\n\n  set index(i) {\n    this.state.index = i;\n  }\n  get index() {\n    return Math.max(0, this.state ? this.state.index : 0);\n  }\n\n  get enabled() {\n    return this.filter(this.isEnabled.bind(this));\n  }\n\n  get focused() {\n    let choice = this.choices[this.index];\n    if (choice && this.state.submitted && this.multiple !== true) {\n      choice.enabled = true;\n    }\n    return choice;\n  }\n\n  get selectable() {\n    return this.choices.filter(choice => !this.isDisabled(choice));\n  }\n\n  get selected() {\n    return this.multiple ? this.enabled : this.focused;\n  }\n}\n\nfunction reset(prompt, choices) {\n  if (choices instanceof Promise) return choices;\n  if (typeof choices === 'function') {\n    if (utils.isAsyncFn(choices)) return choices;\n    choices = choices.call(prompt, prompt);\n  }\n  for (let choice of choices) {\n    if (Array.isArray(choice.choices)) {\n      let items = choice.choices.filter(ch => !prompt.isDisabled(ch));\n      choice.enabled = items.every(ch => ch.enabled === true);\n    }\n    if (prompt.isDisabled(choice) === true) {\n      delete choice.enabled;\n    }\n  }\n  return choices;\n}\n\nmodule.exports = ArrayPrompt;\n","'use strict';\n\nconst ArrayPrompt = require('../types/array');\nconst utils = require('../utils');\n\nclass SelectPrompt extends ArrayPrompt {\n  constructor(options) {\n    super(options);\n    this.emptyError = this.options.emptyError || 'No items were selected';\n  }\n\n  async dispatch(s, key) {\n    if (this.multiple) {\n      return this[key.name] ? await this[key.name](s, key) : await super.dispatch(s, key);\n    }\n    this.alert();\n  }\n\n  separator() {\n    if (this.options.separator) return super.separator();\n    let sep = this.styles.muted(this.symbols.ellipsis);\n    return this.state.submitted ? super.separator() : sep;\n  }\n\n  pointer(choice, i) {\n    return (!this.multiple || this.options.pointer) ? super.pointer(choice, i) : '';\n  }\n\n  indicator(choice, i) {\n    return this.multiple ? super.indicator(choice, i) : '';\n  }\n\n  choiceMessage(choice, i) {\n    let message = this.resolve(choice.message, this.state, choice, i);\n    if (choice.role === 'heading' && !utils.hasColor(message)) {\n      message = this.styles.strong(message);\n    }\n    return this.resolve(message, this.state, choice, i);\n  }\n\n  choiceSeparator() {\n    return ':';\n  }\n\n  async renderChoice(choice, i) {\n    await this.onChoice(choice, i);\n\n    let focused = this.index === i;\n    let pointer = await this.pointer(choice, i);\n    let check = await this.indicator(choice, i) + (choice.pad || '');\n    let hint = await this.resolve(choice.hint, this.state, choice, i);\n\n    if (hint && !utils.hasColor(hint)) {\n      hint = this.styles.muted(hint);\n    }\n\n    let ind = this.indent(choice);\n    let msg = await this.choiceMessage(choice, i);\n    let line = () => [this.margin[3], ind + pointer + check, msg, this.margin[1], hint].filter(Boolean).join(' ');\n\n    if (choice.role === 'heading') {\n      return line();\n    }\n\n    if (choice.disabled) {\n      if (!utils.hasColor(msg)) {\n        msg = this.styles.disabled(msg);\n      }\n      return line();\n    }\n\n    if (focused) {\n      msg = this.styles.em(msg);\n    }\n\n    return line();\n  }\n\n  async renderChoices() {\n    if (this.state.loading === 'choices') {\n      return this.styles.warning('Loading choices');\n    }\n\n    if (this.state.submitted) return '';\n    let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n    let visible = await Promise.all(choices);\n    if (!visible.length) visible.push(this.styles.danger('No matching choices'));\n    let result = this.margin[0] + visible.join('\\n');\n    let header;\n\n    if (this.options.choicesHeader) {\n      header = await this.resolve(this.options.choicesHeader, this.state);\n    }\n\n    return [header, result].filter(Boolean).join('\\n');\n  }\n\n  format() {\n    if (!this.state.submitted || this.state.cancelled) return '';\n    if (Array.isArray(this.selected)) {\n      return this.selected.map(choice => this.styles.primary(choice.name)).join(', ');\n    }\n    return this.styles.primary(this.selected.name);\n  }\n\n  async render() {\n    let { submitted, size } = this.state;\n\n    let prompt = '';\n    let header = await this.header();\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    if (this.options.promptLine !== false) {\n      prompt = [prefix, message, separator, ''].join(' ');\n      this.state.prompt = prompt;\n    }\n\n    let output = await this.format();\n    let help = (await this.error()) || (await this.hint());\n    let body = await this.renderChoices();\n    let footer = await this.footer();\n\n    if (output) prompt += output;\n    if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n    if (submitted && !output && !body.trim() && this.multiple && this.emptyError != null) {\n      prompt += this.styles.danger(this.emptyError);\n    }\n\n    this.clear(size);\n    this.write([header, prompt, body, footer].filter(Boolean).join('\\n'));\n    this.write(this.margin[2]);\n    this.restore();\n  }\n}\n\nmodule.exports = SelectPrompt;\n","'use strict';\n\nconst Select = require('./select');\n\nconst highlight = (input, color) => {\n  let val = input.toLowerCase();\n  return str => {\n    let s = str.toLowerCase();\n    let i = s.indexOf(val);\n    let colored = color(str.slice(i, i + val.length));\n    return i >= 0 ? str.slice(0, i) + colored + str.slice(i + val.length) : str;\n  };\n};\n\nclass AutoComplete extends Select {\n  constructor(options) {\n    super(options);\n    this.cursorShow();\n  }\n\n  moveCursor(n) {\n    this.state.cursor += n;\n  }\n\n  dispatch(ch) {\n    return this.append(ch);\n  }\n\n  space(ch) {\n    return this.options.multiple ? super.space(ch) : this.append(ch);\n  }\n\n  append(ch) {\n    let { cursor, input } = this.state;\n    this.input = input.slice(0, cursor) + ch + input.slice(cursor);\n    this.moveCursor(1);\n    return this.complete();\n  }\n\n  delete() {\n    let { cursor, input } = this.state;\n    if (!input) return this.alert();\n    this.input = input.slice(0, cursor - 1) + input.slice(cursor);\n    this.moveCursor(-1);\n    return this.complete();\n  }\n\n  deleteForward() {\n    let { cursor, input } = this.state;\n    if (input[cursor] === void 0) return this.alert();\n    this.input = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n    return this.complete();\n  }\n\n  number(ch) {\n    return this.append(ch);\n  }\n\n  async complete() {\n    this.completing = true;\n    this.choices = await this.suggest(this.input, this.state._choices);\n    this.state.limit = void 0; // allow getter/setter to reset limit\n    this.index = Math.min(Math.max(this.visible.length - 1, 0), this.index);\n    await this.render();\n    this.completing = false;\n  }\n\n  suggest(input = this.input, choices = this.state._choices) {\n    if (typeof this.options.suggest === 'function') {\n      return this.options.suggest.call(this, input, choices);\n    }\n    let str = input.toLowerCase();\n    return choices.filter(ch => ch.message.toLowerCase().includes(str));\n  }\n\n  pointer() {\n    return '';\n  }\n\n  format() {\n    if (!this.focused) return this.input;\n    if (this.options.multiple && this.state.submitted) {\n      return this.selected.map(ch => this.styles.primary(ch.message)).join(', ');\n    }\n    if (this.state.submitted) {\n      let value = this.value = this.input = this.focused.value;\n      return this.styles.primary(value);\n    }\n    return this.input;\n  }\n\n  async render() {\n    if (this.state.status !== 'pending') return super.render();\n    let style = this.options.highlight\n      ? this.options.highlight.bind(this)\n      : this.styles.placeholder;\n\n    let color = highlight(this.input, style);\n    let choices = this.choices;\n    this.choices = choices.map(ch => ({ ...ch, message: color(ch.message) }));\n    await super.render();\n    this.choices = choices;\n  }\n\n  submit() {\n    if (this.options.multiple) {\n      this.value = this.selected.map(ch => ch.name);\n    }\n    return super.submit();\n  }\n}\n\nmodule.exports = AutoComplete;\n","'use strict';\n\nconst utils = require('./utils');\n\n/**\n * Render a placeholder value with cursor and styling based on the\n * position of the cursor.\n *\n * @param {Object} `prompt` Prompt instance.\n * @param {String} `input` Input string.\n * @param {String} `initial` The initial user-provided value.\n * @param {Number} `pos` Current cursor position.\n * @param {Boolean} `showCursor` Render a simulated cursor using the inverse primary style.\n * @return {String} Returns the styled placeholder string.\n * @api public\n */\n\nmodule.exports = (prompt, options = {}) => {\n  prompt.cursorHide();\n\n  let { input = '', initial = '', pos, showCursor = true, color } = options;\n  let style = color || prompt.styles.placeholder;\n  let inverse = utils.inverse(prompt.styles.primary);\n  let blinker = str => inverse(prompt.styles.black(str));\n  let output = input;\n  let char = ' ';\n  let reverse = blinker(char);\n\n  if (prompt.blink && prompt.blink.off === true) {\n    blinker = str => str;\n    reverse = '';\n  }\n\n  if (showCursor && pos === 0 && initial === '' && input === '') {\n    return blinker(char);\n  }\n\n  if (showCursor && pos === 0 && (input === initial || input === '')) {\n    return blinker(initial[0]) + style(initial.slice(1));\n  }\n\n  initial = utils.isPrimitive(initial) ? `${initial}` : '';\n  input = utils.isPrimitive(input) ? `${input}` : '';\n\n  let placeholder = initial && initial.startsWith(input) && initial !== input;\n  let cursor = placeholder ? blinker(initial[input.length]) : reverse;\n\n  if (pos !== input.length && showCursor === true) {\n    output = input.slice(0, pos) + blinker(input[pos]) + input.slice(pos + 1);\n    cursor = '';\n  }\n\n  if (showCursor === false) {\n    cursor = '';\n  }\n\n  if (placeholder) {\n    let raw = prompt.styles.unstyle(output + cursor);\n    return output + cursor + style(initial.slice(raw.length));\n  }\n\n  return output + cursor;\n};\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst SelectPrompt = require('./select');\nconst placeholder = require('../placeholder');\n\nclass FormPrompt extends SelectPrompt {\n  constructor(options) {\n    super({ ...options, multiple: true });\n    this.type = 'form';\n    this.initial = this.options.initial;\n    this.align = [this.options.align, 'right'].find(v => v != null);\n    this.emptyError = '';\n    this.values = {};\n  }\n\n  async reset(first) {\n    await super.reset();\n    if (first === true) this._index = this.index;\n    this.index = this._index;\n    this.values = {};\n    this.choices.forEach(choice => choice.reset && choice.reset());\n    return this.render();\n  }\n\n  dispatch(char) {\n    return !!char && this.append(char);\n  }\n\n  append(char) {\n    let choice = this.focused;\n    if (!choice) return this.alert();\n    let { cursor, input } = choice;\n    choice.value = choice.input = input.slice(0, cursor) + char + input.slice(cursor);\n    choice.cursor++;\n    return this.render();\n  }\n\n  delete() {\n    let choice = this.focused;\n    if (!choice || choice.cursor <= 0) return this.alert();\n    let { cursor, input } = choice;\n    choice.value = choice.input = input.slice(0, cursor - 1) + input.slice(cursor);\n    choice.cursor--;\n    return this.render();\n  }\n\n  deleteForward() {\n    let choice = this.focused;\n    if (!choice) return this.alert();\n    let { cursor, input } = choice;\n    if (input[cursor] === void 0) return this.alert();\n    let str = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n    choice.value = choice.input = str;\n    return this.render();\n  }\n\n  right() {\n    let choice = this.focused;\n    if (!choice) return this.alert();\n    if (choice.cursor >= choice.input.length) return this.alert();\n    choice.cursor++;\n    return this.render();\n  }\n\n  left() {\n    let choice = this.focused;\n    if (!choice) return this.alert();\n    if (choice.cursor <= 0) return this.alert();\n    choice.cursor--;\n    return this.render();\n  }\n\n  space(ch, key) {\n    return this.dispatch(ch, key);\n  }\n\n  number(ch, key) {\n    return this.dispatch(ch, key);\n  }\n\n  next() {\n    let ch = this.focused;\n    if (!ch) return this.alert();\n    let { initial, input } = ch;\n    if (initial && initial.startsWith(input) && input !== initial) {\n      ch.value = ch.input = initial;\n      ch.cursor = ch.value.length;\n      return this.render();\n    }\n    return super.next();\n  }\n\n  prev() {\n    let ch = this.focused;\n    if (!ch) return this.alert();\n    if (ch.cursor === 0) return super.prev();\n    ch.value = ch.input = '';\n    ch.cursor = 0;\n    return this.render();\n  }\n\n  separator() {\n    return '';\n  }\n\n  format(value) {\n    return !this.state.submitted ? super.format(value) : '';\n  }\n\n  pointer() {\n    return '';\n  }\n\n  indicator(choice) {\n    return choice.input ? '⦿' : '⊙';\n  }\n\n  async choiceSeparator(choice, i) {\n    let sep = await this.resolve(choice.separator, this.state, choice, i) || ':';\n    return sep ? ' ' + this.styles.disabled(sep) : '';\n  }\n\n  async renderChoice(choice, i) {\n    await this.onChoice(choice, i);\n\n    let { state, styles } = this;\n    let { cursor, initial = '', name, hint, input = '' } = choice;\n    let { muted, submitted, primary, danger } = styles;\n\n    let help = hint;\n    let focused = this.index === i;\n    let validate = choice.validate || (() => true);\n    let sep = await this.choiceSeparator(choice, i);\n    let msg = choice.message;\n\n    if (this.align === 'right') msg = msg.padStart(this.longest + 1, ' ');\n    if (this.align === 'left') msg = msg.padEnd(this.longest + 1, ' ');\n\n    // re-populate the form values (answers) object\n    let value = this.values[name] = (input || initial);\n    let color = input ? 'success' : 'dark';\n\n    if ((await validate.call(choice, value, this.state)) !== true) {\n      color = 'danger';\n    }\n\n    let style = styles[color];\n    let indicator = style(await this.indicator(choice, i)) + (choice.pad || '');\n\n    let indent = this.indent(choice);\n    let line = () => [indent, indicator, msg + sep, input, help].filter(Boolean).join(' ');\n\n    if (state.submitted) {\n      msg = colors.unstyle(msg);\n      input = submitted(input);\n      help = '';\n      return line();\n    }\n\n    if (choice.format) {\n      input = await choice.format.call(this, input, choice, i);\n    } else {\n      let color = this.styles.muted;\n      let options = { input, initial, pos: cursor, showCursor: focused, color };\n      input = placeholder(this, options);\n    }\n\n    if (!this.isValue(input)) {\n      input = this.styles.muted(this.symbols.ellipsis);\n    }\n\n    if (choice.result) {\n      this.values[name] = await choice.result.call(this, value, choice, i);\n    }\n\n    if (focused) {\n      msg = primary(msg);\n    }\n\n    if (choice.error) {\n      input += (input ? ' ' : '') + danger(choice.error.trim());\n    } else if (choice.hint) {\n      input += (input ? ' ' : '') + muted(choice.hint.trim());\n    }\n\n    return line();\n  }\n\n  async submit() {\n    this.value = this.values;\n    return super.base.submit.call(this);\n  }\n}\n\nmodule.exports = FormPrompt;\n","'use strict';\n\nconst FormPrompt = require('../prompts/form');\n\nconst defaultAuthenticate = () => {\n  throw new Error('expected prompt to have a custom authenticate method');\n};\n\nconst factory = (authenticate = defaultAuthenticate) => {\n\n  class AuthPrompt extends FormPrompt {\n    constructor(options) {\n      super(options);\n    }\n\n    async submit() {\n      this.value = await authenticate.call(this, this.values, this.state);\n      super.base.submit.call(this);\n    }\n\n    static create(authenticate) {\n      return factory(authenticate);\n    }\n  }\n\n  return AuthPrompt;\n};\n\nmodule.exports = factory();\n","'use strict';\n\nconst AuthPrompt = require('../types/auth');\n\nfunction defaultAuthenticate(value, state) {\n  if (value.username === this.options.username && value.password === this.options.password) {\n    return true;\n  }\n  return false;\n}\n\nconst factory = (authenticate = defaultAuthenticate) => {\n  const choices = [\n    { name: 'username', message: 'username' },\n    {\n      name: 'password',\n      message: 'password',\n      format(input) {\n        if (this.options.showPassword) {\n          return input;\n        }\n        let color = this.state.submitted ? this.styles.primary : this.styles.muted;\n        return color(this.symbols.asterisk.repeat(input.length));\n      }\n    }\n  ];\n\n  class BasicAuthPrompt extends AuthPrompt.create(authenticate) {\n    constructor(options) {\n      super({ ...options, choices });\n    }\n\n    static create(authenticate) {\n      return factory(authenticate);\n    }\n  }\n\n  return BasicAuthPrompt;\n};\n\nmodule.exports = factory();\n","'use strict';\n\nconst Prompt = require('../prompt');\nconst { isPrimitive, hasColor } = require('../utils');\n\nclass BooleanPrompt extends Prompt {\n  constructor(options) {\n    super(options);\n    this.cursorHide();\n  }\n\n  async initialize() {\n    let initial = await this.resolve(this.initial, this.state);\n    this.input = await this.cast(initial);\n    await super.initialize();\n  }\n\n  dispatch(ch) {\n    if (!this.isValue(ch)) return this.alert();\n    this.input = ch;\n    return this.submit();\n  }\n\n  format(value) {\n    let { styles, state } = this;\n    return !state.submitted ? styles.primary(value) : styles.success(value);\n  }\n\n  cast(input) {\n    return this.isTrue(input);\n  }\n\n  isTrue(input) {\n    return /^[ty1]/i.test(input);\n  }\n\n  isFalse(input) {\n    return /^[fn0]/i.test(input);\n  }\n\n  isValue(value) {\n    return isPrimitive(value) && (this.isTrue(value) || this.isFalse(value));\n  }\n\n  async hint() {\n    if (this.state.status === 'pending') {\n      let hint = await this.element('hint');\n      if (!hasColor(hint)) {\n        return this.styles.muted(hint);\n      }\n      return hint;\n    }\n  }\n\n  async render() {\n    let { input, size } = this.state;\n\n    let prefix = await this.prefix();\n    let sep = await this.separator();\n    let msg = await this.message();\n    let hint = this.styles.muted(this.default);\n\n    let promptLine = [prefix, msg, hint, sep].filter(Boolean).join(' ');\n    this.state.prompt = promptLine;\n\n    let header = await this.header();\n    let value = this.value = this.cast(input);\n    let output = await this.format(value);\n    let help = (await this.error()) || (await this.hint());\n    let footer = await this.footer();\n\n    if (help && !promptLine.includes(help)) output += ' ' + help;\n    promptLine += ' ' + output;\n\n    this.clear(size);\n    this.write([header, promptLine, footer].filter(Boolean).join('\\n'));\n    this.restore();\n  }\n\n  set value(value) {\n    super.value = value;\n  }\n  get value() {\n    return this.cast(super.value);\n  }\n}\n\nmodule.exports = BooleanPrompt;\n","'use strict';\n\nconst BooleanPrompt = require('../types/boolean');\n\nclass ConfirmPrompt extends BooleanPrompt {\n  constructor(options) {\n    super(options);\n    this.default = this.options.default || (this.initial ? '(Y/n)' : '(y/N)');\n  }\n}\n\nmodule.exports = ConfirmPrompt;\n\n","'use strict';\n\nconst Select = require('./select');\nconst Form = require('./form');\nconst form = Form.prototype;\n\nclass Editable extends Select {\n  constructor(options) {\n    super({ ...options, multiple: true });\n    this.align = [this.options.align, 'left'].find(v => v != null);\n    this.emptyError = '';\n    this.values = {};\n  }\n\n  dispatch(char, key) {\n    let choice = this.focused;\n    let parent = choice.parent || {};\n    if (!choice.editable && !parent.editable) {\n      if (char === 'a' || char === 'i') return super[char]();\n    }\n    return form.dispatch.call(this, char, key);\n  }\n\n  append(char, key) {\n    return form.append.call(this, char, key);\n  }\n\n  delete(char, key) {\n    return form.delete.call(this, char, key);\n  }\n\n  space(char) {\n    return this.focused.editable ? this.append(char) : super.space();\n  }\n\n  number(char) {\n    return this.focused.editable ? this.append(char) : super.number(char);\n  }\n\n  next() {\n    return this.focused.editable ? form.next.call(this) : super.next();\n  }\n\n  prev() {\n    return this.focused.editable ? form.prev.call(this) : super.prev();\n  }\n\n  async indicator(choice, i) {\n    let symbol = choice.indicator || '';\n    let value = choice.editable ? symbol : super.indicator(choice, i);\n    return await this.resolve(value, this.state, choice, i) || '';\n  }\n\n  indent(choice) {\n    return choice.role === 'heading' ? '' : (choice.editable ? ' ' : '  ');\n  }\n\n  async renderChoice(choice, i) {\n    choice.indent = '';\n    if (choice.editable) return form.renderChoice.call(this, choice, i);\n    return super.renderChoice(choice, i);\n  }\n\n  error() {\n    return '';\n  }\n\n  footer() {\n    return this.state.error;\n  }\n\n  async validate() {\n    let result = true;\n\n    for (let choice of this.choices) {\n      if (typeof choice.validate !== 'function') {\n        continue;\n      }\n\n      if (choice.role === 'heading') {\n        continue;\n      }\n\n      let val = choice.parent ? this.value[choice.parent.name] : this.value;\n\n      if (choice.editable) {\n        val = choice.value === choice.name ? choice.initial || '' : choice.value;\n      } else if (!this.isDisabled(choice)) {\n        val = choice.enabled === true;\n      }\n\n      result = await choice.validate(val, this.state);\n\n      if (result !== true) {\n        break;\n      }\n    }\n\n    if (result !== true) {\n      this.state.error = typeof result === 'string' ? result : 'Invalid Input';\n    }\n\n    return result;\n  }\n\n  submit() {\n    if (this.focused.newChoice === true) return super.submit();\n    if (this.choices.some(ch => ch.newChoice)) {\n      return this.alert();\n    }\n\n    this.value = {};\n\n    for (let choice of this.choices) {\n      let val = choice.parent ? this.value[choice.parent.name] : this.value;\n\n      if (choice.role === 'heading') {\n        this.value[choice.name] = {};\n        continue;\n      }\n\n      if (choice.editable) {\n        val[choice.name] = choice.value === choice.name\n          ? (choice.initial || '')\n          : choice.value;\n\n      } else if (!this.isDisabled(choice)) {\n        val[choice.name] = choice.enabled === true;\n      }\n    }\n\n    return this.base.submit.call(this);\n  }\n}\n\nmodule.exports = Editable;\n","'use strict';\n\nconst Prompt = require('../prompt');\nconst placeholder = require('../placeholder');\nconst { isPrimitive } = require('../utils');\n\nclass StringPrompt extends Prompt {\n  constructor(options) {\n    super(options);\n    this.initial = isPrimitive(this.initial) ? String(this.initial) : '';\n    if (this.initial) this.cursorHide();\n    this.state.prevCursor = 0;\n    this.state.clipboard = [];\n  }\n\n  async keypress(input, key = {}) {\n    let prev = this.state.prevKeypress;\n    this.state.prevKeypress = key;\n    if (this.options.multiline === true && key.name === 'return') {\n      if (!prev || prev.name !== 'return') {\n        return this.append('\\n', key);\n      }\n    }\n    return super.keypress(input, key);\n  }\n\n  moveCursor(n) {\n    this.cursor += n;\n  }\n\n  reset() {\n    this.input = this.value = '';\n    this.cursor = 0;\n    return this.render();\n  }\n\n  dispatch(ch, key) {\n    if (!ch || key.ctrl || key.code) return this.alert();\n    this.append(ch);\n  }\n\n  append(ch) {\n    let { cursor, input } = this.state;\n    this.input = `${input}`.slice(0, cursor) + ch + `${input}`.slice(cursor);\n    this.moveCursor(String(ch).length);\n    this.render();\n  }\n\n  insert(str) {\n    this.append(str);\n  }\n\n  delete() {\n    let { cursor, input } = this.state;\n    if (cursor <= 0) return this.alert();\n    this.input = `${input}`.slice(0, cursor - 1) + `${input}`.slice(cursor);\n    this.moveCursor(-1);\n    this.render();\n  }\n\n  deleteForward() {\n    let { cursor, input } = this.state;\n    if (input[cursor] === void 0) return this.alert();\n    this.input = `${input}`.slice(0, cursor) + `${input}`.slice(cursor + 1);\n    this.render();\n  }\n\n  cutForward() {\n    let pos = this.cursor;\n    if (this.input.length <= pos) return this.alert();\n    this.state.clipboard.push(this.input.slice(pos));\n    this.input = this.input.slice(0, pos);\n    this.render();\n  }\n\n  cutLeft() {\n    let pos = this.cursor;\n    if (pos === 0) return this.alert();\n    let before = this.input.slice(0, pos);\n    let after = this.input.slice(pos);\n    let words = before.split(' ');\n    this.state.clipboard.push(words.pop());\n    this.input = words.join(' ');\n    this.cursor = this.input.length;\n    this.input += after;\n    this.render();\n  }\n\n  paste() {\n    if (!this.state.clipboard.length) return this.alert();\n    this.insert(this.state.clipboard.pop());\n    this.render();\n  }\n\n  toggleCursor() {\n    if (this.state.prevCursor) {\n      this.cursor = this.state.prevCursor;\n      this.state.prevCursor = 0;\n    } else {\n      this.state.prevCursor = this.cursor;\n      this.cursor = 0;\n    }\n    this.render();\n  }\n\n  first() {\n    this.cursor = 0;\n    this.render();\n  }\n\n  last() {\n    this.cursor = this.input.length - 1;\n    this.render();\n  }\n\n  next() {\n    let init = this.initial != null ? String(this.initial) : '';\n    if (!init || !init.startsWith(this.input)) return this.alert();\n    this.input = this.initial;\n    this.cursor = this.initial.length;\n    this.render();\n  }\n\n  prev() {\n    if (!this.input) return this.alert();\n    this.reset();\n  }\n\n  backward() {\n    return this.left();\n  }\n\n  forward() {\n    return this.right();\n  }\n\n  right() {\n    if (this.cursor >= this.input.length) return this.alert();\n    this.moveCursor(1);\n    return this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0) return this.alert();\n    this.moveCursor(-1);\n    return this.render();\n  }\n\n  isValue(value) {\n    return !!value;\n  }\n\n  async format(input = this.value) {\n    let initial = await this.resolve(this.initial, this.state);\n    if (!this.state.submitted) {\n      return placeholder(this, { input, initial, pos: this.cursor });\n    }\n    return this.styles.submitted(input || initial);\n  }\n\n  async render() {\n    let size = this.state.size;\n\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n    this.state.prompt = prompt;\n\n    let header = await this.header();\n    let output = await this.format();\n    let help = (await this.error()) || (await this.hint());\n    let footer = await this.footer();\n\n    if (help && !output.includes(help)) output += ' ' + help;\n    prompt += ' ' + output;\n\n    this.clear(size);\n    this.write([header, prompt, footer].filter(Boolean).join('\\n'));\n    this.restore();\n  }\n}\n\nmodule.exports = StringPrompt;\n","'use strict';\n\nconst unique = arr => arr.filter((v, i) => arr.lastIndexOf(v) === i);\nconst compact = arr => unique(arr).filter(Boolean);\n\nmodule.exports = (action, data = {}, value = '') => {\n  let { past = [], present = '' } = data;\n  let rest, prev;\n\n  switch (action) {\n    case 'prev':\n    case 'undo':\n      rest = past.slice(0, past.length - 1);\n      prev = past[past.length - 1] || '';\n      return {\n        past: compact([value, ...rest]),\n        present: prev\n      };\n\n    case 'next':\n    case 'redo':\n      rest = past.slice(1);\n      prev = past[0] || '';\n      return {\n        past: compact([...rest, value]),\n        present: prev\n      };\n\n    case 'save':\n      return {\n        past: compact([...past, value]),\n        present: ''\n      };\n\n    case 'remove':\n      prev = compact(past.filter(v => v !== value));\n      present = '';\n\n      if (prev.length) {\n        present = prev.pop();\n      }\n\n      return {\n        past: prev,\n        present\n      };\n\n    default: {\n      throw new Error(`Invalid action: \"${action}\"`);\n    }\n  }\n};\n","'use strict';\n\nconst Prompt = require('../types/string');\nconst completer = require('../completer');\n\nclass Input extends Prompt {\n  constructor(options) {\n    super(options);\n    let history = this.options.history;\n    if (history && history.store) {\n      let initial = history.values || this.initial;\n      this.autosave = !!history.autosave;\n      this.store = history.store;\n      this.data = this.store.get('values') || { past: [], present: initial };\n      this.initial = this.data.present || this.data.past[this.data.past.length - 1];\n    }\n  }\n\n  completion(action) {\n    if (!this.store) return this.alert();\n    this.data = completer(action, this.data, this.input);\n    if (!this.data.present) return this.alert();\n    this.input = this.data.present;\n    this.cursor = this.input.length;\n    return this.render();\n  }\n\n  altUp() {\n    return this.completion('prev');\n  }\n\n  altDown() {\n    return this.completion('next');\n  }\n\n  prev() {\n    this.save();\n    return super.prev();\n  }\n\n  save() {\n    if (!this.store) return;\n    this.data = completer('save', this.data, this.input);\n    this.store.set('values', this.data);\n  }\n\n  submit() {\n    if (this.store && this.autosave === true) {\n      this.save();\n    }\n    return super.submit();\n  }\n}\n\nmodule.exports = Input;\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass InvisiblePrompt extends StringPrompt {\n  format() {\n    return '';\n  }\n}\n\nmodule.exports = InvisiblePrompt;\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass ListPrompt extends StringPrompt {\n  constructor(options = {}) {\n    super(options);\n    this.sep = this.options.separator || /, */;\n    this.initial = options.initial || '';\n  }\n\n  split(input = this.value) {\n    return input ? String(input).split(this.sep) : [];\n  }\n\n  format() {\n    let style = this.state.submitted ? this.styles.primary : val => val;\n    return this.list.map(style).join(', ');\n  }\n\n  async submit(value) {\n    let result = this.state.error || await this.validate(this.list, this.state);\n    if (result !== true) {\n      this.state.error = result;\n      return super.submit();\n    }\n    this.value = this.list;\n    return super.submit();\n  }\n\n  get list() {\n    return this.split();\n  }\n}\n\nmodule.exports = ListPrompt;\n","'use strict';\n\nconst Select = require('./select');\n\nclass MultiSelect extends Select {\n  constructor(options) {\n    super({ ...options, multiple: true });\n  }\n}\n\nmodule.exports = MultiSelect;\n","'use strict';\n\nconst StringPrompt = require('./string');\n\nclass NumberPrompt extends StringPrompt {\n  constructor(options = {}) {\n    super({ style: 'number', ...options });\n    this.min = this.isValue(options.min) ? this.toNumber(options.min) : -Infinity;\n    this.max = this.isValue(options.max) ? this.toNumber(options.max) : Infinity;\n    this.delay = options.delay != null ? options.delay : 1000;\n    this.float = options.float !== false;\n    this.round = options.round === true || options.float === false;\n    this.major = options.major || 10;\n    this.minor = options.minor || 1;\n    this.initial = options.initial != null ? options.initial : '';\n    this.input = String(this.initial);\n    this.cursor = this.input.length;\n    this.cursorShow();\n  }\n\n  append(ch) {\n    if (!/[-+.]/.test(ch) || (ch === '.' && this.input.includes('.'))) {\n      return this.alert('invalid number');\n    }\n    return super.append(ch);\n  }\n\n  number(ch) {\n    return super.append(ch);\n  }\n\n  next() {\n    if (this.input && this.input !== this.initial) return this.alert();\n    if (!this.isValue(this.initial)) return this.alert();\n    this.input = this.initial;\n    this.cursor = String(this.initial).length;\n    return this.render();\n  }\n\n  up(number) {\n    let step = number || this.minor;\n    let num = this.toNumber(this.input);\n    if (num > this.max + step) return this.alert();\n    this.input = `${num + step}`;\n    return this.render();\n  }\n\n  down(number) {\n    let step = number || this.minor;\n    let num = this.toNumber(this.input);\n    if (num < this.min - step) return this.alert();\n    this.input = `${num - step}`;\n    return this.render();\n  }\n\n  shiftDown() {\n    return this.down(this.major);\n  }\n\n  shiftUp() {\n    return this.up(this.major);\n  }\n\n  format(input = this.input) {\n    if (typeof this.options.format === 'function') {\n      return this.options.format.call(this, input);\n    }\n    return this.styles.info(input);\n  }\n\n  toNumber(value = '') {\n    return this.float ? +value : Math.round(+value);\n  }\n\n  isValue(value) {\n    return /^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(value);\n  }\n\n  submit() {\n    let value = [this.input, this.initial].find(v => this.isValue(v));\n    this.value = this.toNumber(value || 0);\n    return super.submit();\n  }\n}\n\nmodule.exports = NumberPrompt;\n","module.exports = require('../types/number');\n","'use strict';\n\nconst StringPrompt = require('../types/string');\n\nclass PasswordPrompt extends StringPrompt {\n  constructor(options) {\n    super(options);\n    this.cursorShow();\n  }\n\n  format(input = this.input) {\n    if (!this.keypressed) return '';\n    let color = this.state.submitted ? this.styles.primary : this.styles.muted;\n    return color(this.symbols.asterisk.repeat(input.length));\n  }\n}\n\nmodule.exports = PasswordPrompt;\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst ArrayPrompt = require('../types/array');\nconst utils = require('../utils');\n\nclass LikertScale extends ArrayPrompt {\n  constructor(options = {}) {\n    super(options);\n    this.widths = [].concat(options.messageWidth || 50);\n    this.align = [].concat(options.align || 'left');\n    this.linebreak = options.linebreak || false;\n    this.edgeLength = options.edgeLength || 3;\n    this.newline = options.newline || '\\n   ';\n    let start = options.startNumber || 1;\n    if (typeof this.scale === 'number') {\n      this.scaleKey = false;\n      this.scale = Array(this.scale).fill(0).map((v, i) => ({ name: i + start }));\n    }\n  }\n\n  async reset() {\n    this.tableized = false;\n    await super.reset();\n    return this.render();\n  }\n\n  tableize() {\n    if (this.tableized === true) return;\n    this.tableized = true;\n    let longest = 0;\n\n    for (let ch of this.choices) {\n      longest = Math.max(longest, ch.message.length);\n      ch.scaleIndex = ch.initial || 2;\n      ch.scale = [];\n\n      for (let i = 0; i < this.scale.length; i++) {\n        ch.scale.push({ index: i });\n      }\n    }\n    this.widths[0] = Math.min(this.widths[0], longest + 3);\n  }\n\n  async dispatch(s, key) {\n    if (this.multiple) {\n      return this[key.name] ? await this[key.name](s, key) : await super.dispatch(s, key);\n    }\n    this.alert();\n  }\n\n  heading(msg, item, i) {\n    return this.styles.strong(msg);\n  }\n\n  separator() {\n    return this.styles.muted(this.symbols.ellipsis);\n  }\n\n  right() {\n    let choice = this.focused;\n    if (choice.scaleIndex >= this.scale.length - 1) return this.alert();\n    choice.scaleIndex++;\n    return this.render();\n  }\n\n  left() {\n    let choice = this.focused;\n    if (choice.scaleIndex <= 0) return this.alert();\n    choice.scaleIndex--;\n    return this.render();\n  }\n\n  indent() {\n    return '';\n  }\n\n  format() {\n    if (this.state.submitted) {\n      let values = this.choices.map(ch => this.styles.info(ch.index));\n      return values.join(', ');\n    }\n    return '';\n  }\n\n  pointer() {\n    return '';\n  }\n\n  /**\n   * Render the scale \"Key\". Something like:\n   * @return {String}\n   */\n\n  renderScaleKey() {\n    if (this.scaleKey === false) return '';\n    if (this.state.submitted) return '';\n    let scale = this.scale.map(item => `   ${item.name} - ${item.message}`);\n    let key = ['', ...scale].map(item => this.styles.muted(item));\n    return key.join('\\n');\n  }\n\n  /**\n   * Render the heading row for the scale.\n   * @return {String}\n   */\n\n  renderScaleHeading(max) {\n    let keys = this.scale.map(ele => ele.name);\n    if (typeof this.options.renderScaleHeading === 'function') {\n      keys = this.options.renderScaleHeading.call(this, max);\n    }\n    let diff = this.scaleLength - keys.join('').length;\n    let spacing = Math.round(diff / (keys.length - 1));\n    let names = keys.map(key => this.styles.strong(key));\n    let headings = names.join(' '.repeat(spacing));\n    let padding = ' '.repeat(this.widths[0]);\n    return this.margin[3] + padding + this.margin[1] + headings;\n  }\n\n  /**\n   * Render a scale indicator => ◯ or ◉ by default\n   */\n\n  scaleIndicator(choice, item, i) {\n    if (typeof this.options.scaleIndicator === 'function') {\n      return this.options.scaleIndicator.call(this, choice, item, i);\n    }\n    let enabled = choice.scaleIndex === item.index;\n    if (item.disabled) return this.styles.hint(this.symbols.radio.disabled);\n    if (enabled) return this.styles.success(this.symbols.radio.on);\n    return this.symbols.radio.off;\n  }\n\n  /**\n   * Render the actual scale => ◯────◯────◉────◯────◯\n   */\n\n  renderScale(choice, i) {\n    let scale = choice.scale.map(item => this.scaleIndicator(choice, item, i));\n    let padding = this.term === 'Hyper' ? '' : ' ';\n    return scale.join(padding + this.symbols.line.repeat(this.edgeLength));\n  }\n\n  /**\n   * Render a choice, including scale =>\n   *   \"The website is easy to navigate. ◯───◯───◉───◯───◯\"\n   */\n\n  async renderChoice(choice, i) {\n    await this.onChoice(choice, i);\n\n    let focused = this.index === i;\n    let pointer = await this.pointer(choice, i);\n    let hint = await choice.hint;\n\n    if (hint && !utils.hasColor(hint)) {\n      hint = this.styles.muted(hint);\n    }\n\n    let pad = str => this.margin[3] + str.replace(/\\s+$/, '').padEnd(this.widths[0], ' ');\n    let newline = this.newline;\n    let ind = this.indent(choice);\n    let message = await this.resolve(choice.message, this.state, choice, i);\n    let scale = await this.renderScale(choice, i);\n    let margin = this.margin[1] + this.margin[3];\n    this.scaleLength = colors.unstyle(scale).length;\n    this.widths[0] = Math.min(this.widths[0], this.width - this.scaleLength - margin.length);\n    let msg = utils.wordWrap(message, { width: this.widths[0], newline });\n    let lines = msg.split('\\n').map(line => pad(line) + this.margin[1]);\n\n    if (focused) {\n      scale = this.styles.info(scale);\n      lines = lines.map(line => this.styles.info(line));\n    }\n\n    lines[0] += scale;\n\n    if (this.linebreak) lines.push('');\n    return [ind + pointer, lines.join('\\n')].filter(Boolean);\n  }\n\n  async renderChoices() {\n    if (this.state.submitted) return '';\n    this.tableize();\n    let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n    let visible = await Promise.all(choices);\n    let heading = await this.renderScaleHeading();\n    return this.margin[0] + [heading, ...visible.map(v => v.join(' '))].join('\\n');\n  }\n\n  async render() {\n    let { submitted, size } = this.state;\n\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    let prompt = '';\n    if (this.options.promptLine !== false) {\n      prompt = [prefix, message, separator, ''].join(' ');\n      this.state.prompt = prompt;\n    }\n\n    let header = await this.header();\n    let output = await this.format();\n    let key = await this.renderScaleKey();\n    let help = await this.error() || await this.hint();\n    let body = await this.renderChoices();\n    let footer = await this.footer();\n    let err = this.emptyError;\n\n    if (output) prompt += output;\n    if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n    if (submitted && !output && !body.trim() && this.multiple && err != null) {\n      prompt += this.styles.danger(err);\n    }\n\n    this.clear(size);\n    this.write([header, prompt, key, body, footer].filter(Boolean).join('\\n'));\n    if (!this.state.submitted) {\n      this.write(this.margin[2]);\n    }\n    this.restore();\n  }\n\n  submit() {\n    this.value = {};\n    for (let choice of this.choices) {\n      this.value[choice.name] = choice.scaleIndex;\n    }\n    return this.base.submit.call(this);\n  }\n}\n\nmodule.exports = LikertScale;\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst clean = (str = '') => {\n  return typeof str === 'string' ? str.replace(/^['\"]|['\"]$/g, '') : '';\n};\n\n/**\n * This file contains the interpolation and rendering logic for\n * the Snippet prompt.\n */\n\nclass Item {\n  constructor(token) {\n    this.name = token.key;\n    this.field = token.field || {};\n    this.value = clean(token.initial || this.field.initial || '');\n    this.message = token.message || this.name;\n    this.cursor = 0;\n    this.input = '';\n    this.lines = [];\n  }\n}\n\nconst tokenize = async(options = {}, defaults = {}, fn = token => token) => {\n  let unique = new Set();\n  let fields = options.fields || [];\n  let input = options.template;\n  let tabstops = [];\n  let items = [];\n  let keys = [];\n  let line = 1;\n\n  if (typeof input === 'function') {\n    input = await input();\n  }\n\n  let i = -1;\n  let next = () => input[++i];\n  let peek = () => input[i + 1];\n  let push = token => {\n    token.line = line;\n    tabstops.push(token);\n  };\n\n  push({ type: 'bos', value: '' });\n\n  while (i < input.length - 1) {\n    let value = next();\n\n    if (/^[^\\S\\n ]$/.test(value)) {\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if (value === '\\n') {\n      push({ type: 'newline', value });\n      line++;\n      continue;\n    }\n\n    if (value === '\\\\') {\n      value += next();\n      push({ type: 'text', value });\n      continue;\n    }\n\n    if ((value === '$' || value === '#' || value === '{') && peek() === '{') {\n      let n = next();\n      value += n;\n\n      let token = { type: 'template', open: value, inner: '', close: '', value };\n      let ch;\n\n      while ((ch = next())) {\n        if (ch === '}') {\n          if (peek() === '}') ch += next();\n          token.value += ch;\n          token.close = ch;\n          break;\n        }\n\n        if (ch === ':') {\n          token.initial = '';\n          token.key = token.inner;\n        } else if (token.initial !== void 0) {\n          token.initial += ch;\n        }\n\n        token.value += ch;\n        token.inner += ch;\n      }\n\n      token.template = token.open + (token.initial || token.inner) + token.close;\n      token.key = token.key || token.inner;\n\n      if (defaults.hasOwnProperty(token.key)) {\n        token.initial = defaults[token.key];\n      }\n\n      token = fn(token);\n      push(token);\n\n      keys.push(token.key);\n      unique.add(token.key);\n\n      let item = items.find(item => item.name === token.key);\n      token.field = fields.find(ch => ch.name === token.key);\n\n      if (!item) {\n        item = new Item(token);\n        items.push(item);\n      }\n\n      item.lines.push(token.line - 1);\n      continue;\n    }\n\n    let last = tabstops[tabstops.length - 1];\n    if (last.type === 'text' && last.line === line) {\n      last.value += value;\n    } else {\n      push({ type: 'text', value });\n    }\n  }\n\n  push({ type: 'eos', value: '' });\n  return { input, tabstops, unique, keys, items };\n};\n\nmodule.exports = async prompt => {\n  let options = prompt.options;\n  let required = new Set(options.required === true ? [] : (options.required || []));\n  let defaults = { ...options.values, ...options.initial };\n  let { tabstops, items, keys } = await tokenize(options, defaults);\n\n  let result = createFn('result', prompt, options);\n  let format = createFn('format', prompt, options);\n  let isValid = createFn('validate', prompt, options, true);\n  let isVal = prompt.isValue.bind(prompt);\n\n  return async(state = {}, submitted = false) => {\n    let index = 0;\n\n    state.required = required;\n    state.items = items;\n    state.keys = keys;\n    state.output = '';\n\n    let validate = async(value, state, item, index) => {\n      let error = await isValid(value, state, item, index);\n      if (error === false) {\n        return 'Invalid field ' + item.name;\n      }\n      return error;\n    };\n\n    for (let token of tabstops) {\n      let value = token.value;\n      let key = token.key;\n\n      if (token.type !== 'template') {\n        if (value) state.output += value;\n        continue;\n      }\n\n      if (token.type === 'template') {\n        let item = items.find(ch => ch.name === key);\n\n        if (options.required === true) {\n          state.required.add(item.name);\n        }\n\n        let val = [item.input, state.values[item.value], item.value, value].find(isVal);\n        let field = item.field || {};\n        let message = field.message || token.inner;\n\n        if (submitted) {\n          let error = await validate(state.values[key], state, item, index);\n          if ((error && typeof error === 'string') || error === false) {\n            state.invalid.set(key, error);\n            continue;\n          }\n\n          state.invalid.delete(key);\n          let res = await result(state.values[key], state, item, index);\n          state.output += colors.unstyle(res);\n          continue;\n        }\n\n        item.placeholder = false;\n\n        let before = value;\n        value = await format(value, state, item, index);\n\n        if (val !== value) {\n          state.values[key] = val;\n          value = prompt.styles.typing(val);\n          state.missing.delete(message);\n\n        } else {\n          state.values[key] = void 0;\n          val = `<${message}>`;\n          value = prompt.styles.primary(val);\n          item.placeholder = true;\n\n          if (state.required.has(key)) {\n            state.missing.add(message);\n          }\n        }\n\n        if (state.missing.has(message) && state.validating) {\n          value = prompt.styles.warning(val);\n        }\n\n        if (state.invalid.has(key) && state.validating) {\n          value = prompt.styles.danger(val);\n        }\n\n        if (index === state.index) {\n          if (before !== value) {\n            value = prompt.styles.underline(value);\n          } else {\n            value = prompt.styles.heading(colors.unstyle(value));\n          }\n        }\n\n        index++;\n      }\n\n      if (value) {\n        state.output += value;\n      }\n    }\n\n    let lines = state.output.split('\\n').map(l => ' ' + l);\n    let len = items.length;\n    let done = 0;\n\n    for (let item of items) {\n      if (state.invalid.has(item.name)) {\n        item.lines.forEach(i => {\n          if (lines[i][0] !== ' ') return;\n          lines[i] = state.styles.danger(state.symbols.bullet) + lines[i].slice(1);\n        });\n      }\n\n      if (prompt.isValue(state.values[item.name])) {\n        done++;\n      }\n    }\n\n    state.completed = ((done / len) * 100).toFixed(0);\n    state.output = lines.join('\\n');\n    return state.output;\n  };\n};\n\nfunction createFn(prop, prompt, options, fallback) {\n  return (value, state, item, index) => {\n    if (typeof item.field[prop] === 'function') {\n      return item.field[prop].call(prompt, value, state, item, index);\n    }\n    return [fallback, value].find(v => prompt.isValue(v));\n  };\n}\n","'use strict';\n\nconst colors = require('ansi-colors');\nconst interpolate = require('../interpolate');\nconst Prompt = require('../prompt');\n\nclass SnippetPrompt extends Prompt {\n  constructor(options) {\n    super(options);\n    this.cursorHide();\n    this.reset(true);\n  }\n\n  async initialize() {\n    this.interpolate = await interpolate(this);\n    await super.initialize();\n  }\n\n  async reset(first) {\n    this.state.keys = [];\n    this.state.invalid = new Map();\n    this.state.missing = new Set();\n    this.state.completed = 0;\n    this.state.values = {};\n\n    if (first !== true) {\n      await this.initialize();\n      await this.render();\n    }\n  }\n\n  moveCursor(n) {\n    let item = this.getItem();\n    this.cursor += n;\n    item.cursor += n;\n  }\n\n  dispatch(ch, key) {\n    if (!key.code && !key.ctrl && ch != null && this.getItem()) {\n      this.append(ch, key);\n      return;\n    }\n    this.alert();\n  }\n\n  append(ch, key) {\n    let item = this.getItem();\n    let prefix = item.input.slice(0, this.cursor);\n    let suffix = item.input.slice(this.cursor);\n    this.input = item.input = `${prefix}${ch}${suffix}`;\n    this.moveCursor(1);\n    this.render();\n  }\n\n  delete() {\n    let item = this.getItem();\n    if (this.cursor <= 0 || !item.input) return this.alert();\n    let suffix = item.input.slice(this.cursor);\n    let prefix = item.input.slice(0, this.cursor - 1);\n    this.input = item.input = `${prefix}${suffix}`;\n    this.moveCursor(-1);\n    this.render();\n  }\n\n  increment(i) {\n    return i >= this.state.keys.length - 1 ? 0 : i + 1;\n  }\n\n  decrement(i) {\n    return i <= 0 ? this.state.keys.length - 1 : i - 1;\n  }\n\n  first() {\n    this.state.index = 0;\n    this.render();\n  }\n\n  last() {\n    this.state.index = this.state.keys.length - 1;\n    this.render();\n  }\n\n  right() {\n    if (this.cursor >= this.input.length) return this.alert();\n    this.moveCursor(1);\n    this.render();\n  }\n\n  left() {\n    if (this.cursor <= 0) return this.alert();\n    this.moveCursor(-1);\n    this.render();\n  }\n\n  prev() {\n    this.state.index = this.decrement(this.state.index);\n    this.getItem();\n    this.render();\n  }\n\n  next() {\n    this.state.index = this.increment(this.state.index);\n    this.getItem();\n    this.render();\n  }\n\n  up() {\n    this.prev();\n  }\n\n  down() {\n    this.next();\n  }\n\n  format(value) {\n    let color = this.state.completed < 100 ? this.styles.warning : this.styles.success;\n    if (this.state.submitted === true && this.state.completed !== 100) {\n      color = this.styles.danger;\n    }\n    return color(`${this.state.completed}% completed`);\n  }\n\n  async render() {\n    let { index, keys = [], submitted, size } = this.state;\n\n    let newline = [this.options.newline, '\\n'].find(v => v != null);\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n    this.state.prompt = prompt;\n\n    let header = await this.header();\n    let error = (await this.error()) || '';\n    let hint = (await this.hint()) || '';\n    let body = submitted ? '' : await this.interpolate(this.state);\n\n    let key = this.state.key = keys[index] || '';\n    let input = await this.format(key);\n    let footer = await this.footer();\n    if (input) prompt += ' ' + input;\n    if (hint && !input && this.state.completed === 0) prompt += ' ' + hint;\n\n    this.clear(size);\n    let lines = [header, prompt, body, footer, error.trim()];\n    this.write(lines.filter(Boolean).join(newline));\n    this.restore();\n  }\n\n  getItem(name) {\n    let { items, keys, index } = this.state;\n    let item = items.find(ch => ch.name === keys[index]);\n    if (item && item.input != null) {\n      this.input = item.input;\n      this.cursor = item.cursor;\n    }\n    return item;\n  }\n\n  async submit() {\n    if (typeof this.interpolate !== 'function') await this.initialize();\n    await this.interpolate(this.state, true);\n\n    let { invalid, missing, output, values } = this.state;\n    if (invalid.size) {\n      let err = '';\n      for (let [key, value] of invalid) err += `Invalid ${key}: ${value}\\n`;\n      this.state.error = err;\n      return super.submit();\n    }\n\n    if (missing.size) {\n      this.state.error = 'Required: ' + [...missing.keys()].join(', ');\n      return super.submit();\n    }\n\n    let lines = colors.unstyle(output).split('\\n');\n    let result = lines.map(v => v.slice(1)).join('\\n');\n    this.value = { values, result };\n    return super.submit();\n  }\n}\n\nmodule.exports = SnippetPrompt;\n","'use strict';\n\nconst hint = '(Use <shift>+<up/down> to sort)';\nconst Prompt = require('./select');\n\nclass Sort extends Prompt {\n  constructor(options) {\n    super({ ...options, reorder: false, sort: true, multiple: true });\n    this.state.hint = [this.options.hint, hint].find(this.isValue.bind(this));\n  }\n\n  indicator() {\n    return '';\n  }\n\n  async renderChoice(choice, i) {\n    let str = await super.renderChoice(choice, i);\n    let sym = this.symbols.identicalTo + ' ';\n    let pre = (this.index === i && this.sorting) ? this.styles.muted(sym) : '  ';\n    if (this.options.drag === false) pre = '';\n    if (this.options.numbered === true) {\n      return pre + `${i + 1} - ` + str;\n    }\n    return pre + str;\n  }\n\n  get selected() {\n    return this.choices;\n  }\n\n  submit() {\n    this.value = this.choices.map(choice => choice.value);\n    return super.submit();\n  }\n}\n\nmodule.exports = Sort;\n","'use strict';\n\nconst ArrayPrompt = require('../types/array');\n\nclass Survey extends ArrayPrompt {\n  constructor(options = {}) {\n    super(options);\n    this.emptyError = options.emptyError || 'No items were selected';\n    this.term = process.env.TERM_PROGRAM;\n\n    if (!this.options.header) {\n      let header = ['', '4 - Strongly Agree', '3 - Agree', '2 - Neutral', '1 - Disagree', '0 - Strongly Disagree', ''];\n      header = header.map(ele => this.styles.muted(ele));\n      this.state.header = header.join('\\n   ');\n    }\n  }\n\n  async toChoices(...args) {\n    if (this.createdScales) return false;\n    this.createdScales = true;\n    let choices = await super.toChoices(...args);\n    for (let choice of choices) {\n      choice.scale = createScale(5, this.options);\n      choice.scaleIdx = 2;\n    }\n    return choices;\n  }\n\n  dispatch() {\n    this.alert();\n  }\n\n  space() {\n    let choice = this.focused;\n    let ele = choice.scale[choice.scaleIdx];\n    let selected = ele.selected;\n    choice.scale.forEach(e => (e.selected = false));\n    ele.selected = !selected;\n    return this.render();\n  }\n\n  indicator() {\n    return '';\n  }\n\n  pointer() {\n    return '';\n  }\n\n  separator() {\n    return this.styles.muted(this.symbols.ellipsis);\n  }\n\n  right() {\n    let choice = this.focused;\n    if (choice.scaleIdx >= choice.scale.length - 1) return this.alert();\n    choice.scaleIdx++;\n    return this.render();\n  }\n\n  left() {\n    let choice = this.focused;\n    if (choice.scaleIdx <= 0) return this.alert();\n    choice.scaleIdx--;\n    return this.render();\n  }\n\n  indent() {\n    return '   ';\n  }\n\n  async renderChoice(item, i) {\n    await this.onChoice(item, i);\n    let focused = this.index === i;\n    let isHyper = this.term === 'Hyper';\n    let n = !isHyper ? 8 : 9;\n    let s = !isHyper ? ' ' : '';\n    let ln = this.symbols.line.repeat(n);\n    let sp = ' '.repeat(n + (isHyper ? 0 : 1));\n    let dot = enabled => (enabled ? this.styles.success('◉') : '◯') + s;\n\n    let num = i + 1 + '.';\n    let color = focused ? this.styles.heading : this.styles.noop;\n    let msg = await this.resolve(item.message, this.state, item, i);\n    let indent = this.indent(item);\n    let scale = indent + item.scale.map((e, i) => dot(i === item.scaleIdx)).join(ln);\n    let val = i => i === item.scaleIdx ? color(i) : i;\n    let next = indent + item.scale.map((e, i) => val(i)).join(sp);\n\n    let line = () => [num, msg].filter(Boolean).join(' ');\n    let lines = () => [line(), scale, next, ' '].filter(Boolean).join('\\n');\n\n    if (focused) {\n      scale = this.styles.cyan(scale);\n      next = this.styles.cyan(next);\n    }\n\n    return lines();\n  }\n\n  async renderChoices() {\n    if (this.state.submitted) return '';\n    let choices = this.visible.map(async(ch, i) => await this.renderChoice(ch, i));\n    let visible = await Promise.all(choices);\n    if (!visible.length) visible.push(this.styles.danger('No matching choices'));\n    return visible.join('\\n');\n  }\n\n  format() {\n    if (this.state.submitted) {\n      let values = this.choices.map(ch => this.styles.info(ch.scaleIdx));\n      return values.join(', ');\n    }\n    return '';\n  }\n\n  async render() {\n    let { submitted, size } = this.state;\n\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    let prompt = [prefix, message, separator].filter(Boolean).join(' ');\n    this.state.prompt = prompt;\n\n    let header = await this.header();\n    let output = await this.format();\n    let help = await this.error() || await this.hint();\n    let body = await this.renderChoices();\n    let footer = await this.footer();\n\n    if (output || !help) prompt += ' ' + output;\n    if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n    if (submitted && !output && !body && this.multiple && this.type !== 'form') {\n      prompt += this.styles.danger(this.emptyError);\n    }\n\n    this.clear(size);\n    this.write([prompt, header, body, footer].filter(Boolean).join('\\n'));\n    this.restore();\n  }\n\n  submit() {\n    this.value = {};\n    for (let choice of this.choices) {\n      this.value[choice.name] = choice.scaleIdx;\n    }\n    return this.base.submit.call(this);\n  }\n}\n\nfunction createScale(n, options = {}) {\n  if (Array.isArray(options.scale)) {\n    return options.scale.map(ele => ({ ...ele }));\n  }\n  let scale = [];\n  for (let i = 1; i < n + 1; i++) scale.push({ i, selected: false });\n  return scale;\n}\n\nmodule.exports = Survey;\n","module.exports = require('./input');\n","'use strict';\n\nconst BooleanPrompt = require('../types/boolean');\n\nclass TogglePrompt extends BooleanPrompt {\n  async initialize() {\n    await super.initialize();\n    this.value = this.initial = !!this.options.initial;\n    this.disabled = this.options.disabled || 'no';\n    this.enabled = this.options.enabled || 'yes';\n    await this.render();\n  }\n\n  reset() {\n    this.value = this.initial;\n    this.render();\n  }\n\n  delete() {\n    this.alert();\n  }\n\n  toggle() {\n    this.value = !this.value;\n    this.render();\n  }\n\n  enable() {\n    if (this.value === true) return this.alert();\n    this.value = true;\n    this.render();\n  }\n  disable() {\n    if (this.value === false) return this.alert();\n    this.value = false;\n    this.render();\n  }\n\n  up() {\n    this.toggle();\n  }\n  down() {\n    this.toggle();\n  }\n  right() {\n    this.toggle();\n  }\n  left() {\n    this.toggle();\n  }\n  next() {\n    this.toggle();\n  }\n  prev() {\n    this.toggle();\n  }\n\n  dispatch(ch = '', key) {\n    switch (ch.toLowerCase()) {\n      case ' ':\n        return this.toggle();\n      case '1':\n      case 'y':\n      case 't':\n        return this.enable();\n      case '0':\n      case 'n':\n      case 'f':\n        return this.disable();\n      default: {\n        return this.alert();\n      }\n    }\n  }\n\n  format() {\n    let active = str => this.styles.primary.underline(str);\n    let value = [\n      this.value ? this.disabled : active(this.disabled),\n      this.value ? active(this.enabled) : this.enabled\n    ];\n    return value.join(this.styles.muted(' / '));\n  }\n\n  async render() {\n    let { size } = this.state;\n\n    let header = await this.header();\n    let prefix = await this.prefix();\n    let separator = await this.separator();\n    let message = await this.message();\n\n    let output = await this.format();\n    let help = (await this.error()) || (await this.hint());\n    let footer = await this.footer();\n\n    let prompt = [prefix, message, separator, output].join(' ');\n    this.state.prompt = prompt;\n\n    if (help && !prompt.includes(help)) prompt += ' ' + help;\n\n    this.clear(size);\n    this.write([header, prompt, footer].filter(Boolean).join('\\n'));\n    this.write(this.margin[2]);\n    this.restore();\n  }\n}\n\nmodule.exports = TogglePrompt;\n","'use strict';\n\nconst SelectPrompt = require('./select');\n\nclass Quiz extends SelectPrompt {\n  constructor(options) {\n    super(options);\n    if (typeof this.options.correctChoice !== 'number' || this.options.correctChoice < 0) {\n      throw new Error('Please specify the index of the correct answer from the list of choices');\n    }\n  }\n\n  async toChoices(value, parent) {\n    let choices = await super.toChoices(value, parent);\n    if (choices.length < 2) {\n      throw new Error('Please give at least two choices to the user');\n    }\n    if (this.options.correctChoice > choices.length) {\n      throw new Error('Please specify the index of the correct answer from the list of choices');\n    }\n    return choices;\n  }\n\n  check(state) {\n    return state.index === this.options.correctChoice;\n  }\n\n  async result(selected) {\n    return {\n      selectedAnswer: selected,\n      correctAnswer: this.options.choices[this.options.correctChoice].value,\n      correct: await this.check(this.state)\n    };\n  }\n}\n\nmodule.exports = Quiz;\n","'use strict';\n\nconst utils = require('../utils');\n\nconst define = (key, fn) => {\n  utils.defineExport(exports, key, fn);\n  utils.defineExport(exports, key.toLowerCase(), fn);\n};\n\ndefine('AutoComplete', () => require('./autocomplete'));\ndefine('BasicAuth', () => require('./basicauth'));\ndefine('Confirm', () => require('./confirm'));\ndefine('Editable', () => require('./editable'));\ndefine('Form', () => require('./form'));\ndefine('Input', () => require('./input'));\ndefine('Invisible', () => require('./invisible'));\ndefine('List', () => require('./list'));\ndefine('MultiSelect', () => require('./multiselect'));\ndefine('Numeral', () => require('./numeral'));\ndefine('Password', () => require('./password'));\ndefine('Scale', () => require('./scale'));\ndefine('Select', () => require('./select'));\ndefine('Snippet', () => require('./snippet'));\ndefine('Sort', () => require('./sort'));\ndefine('Survey', () => require('./survey'));\ndefine('Text', () => require('./text'));\ndefine('Toggle', () => require('./toggle'));\ndefine('Quiz', () => require('./quiz'));\n","module.exports = {\n  ArrayPrompt: require('./array'),\n  AuthPrompt: require('./auth'),\n  BooleanPrompt: require('./boolean'),\n  NumberPrompt: require('./number'),\n  StringPrompt: require('./string')\n};\n","'use strict';\n\nconst assert = require('assert');\nconst Events = require('events');\nconst utils = require('./lib/utils');\n\n/**\n * Create an instance of `Enquirer`.\n *\n * ```js\n * const Enquirer = require('enquirer');\n * const enquirer = new Enquirer();\n * ```\n * @name Enquirer\n * @param {Object} `options` (optional) Options to use with all prompts.\n * @param {Object} `answers` (optional) Answers object to initialize with.\n * @api public\n */\n\nclass Enquirer extends Events {\n  constructor(options, answers) {\n    super();\n    this.options = utils.merge({}, options);\n    this.answers = { ...answers };\n  }\n\n  /**\n   * Register a custom prompt type.\n   *\n   * ```js\n   * const Enquirer = require('enquirer');\n   * const enquirer = new Enquirer();\n   * enquirer.register('customType', require('./custom-prompt'));\n   * ```\n   * @name register()\n   * @param {String} `type`\n   * @param {Function|Prompt} `fn` `Prompt` class, or a function that returns a `Prompt` class.\n   * @return {Object} Returns the Enquirer instance\n   * @api public\n   */\n\n  register(type, fn) {\n    if (utils.isObject(type)) {\n      for (let key of Object.keys(type)) this.register(key, type[key]);\n      return this;\n    }\n    assert.equal(typeof fn, 'function', 'expected a function');\n    let name = type.toLowerCase();\n    if (fn.prototype instanceof this.Prompt) {\n      this.prompts[name] = fn;\n    } else {\n      this.prompts[name] = fn(this.Prompt, this);\n    }\n    return this;\n  }\n\n  /**\n   * Prompt function that takes a \"question\" object or array of question objects,\n   * and returns an object with responses from the user.\n   *\n   * ```js\n   * const Enquirer = require('enquirer');\n   * const enquirer = new Enquirer();\n   *\n   * const response = await enquirer.prompt({\n   *   type: 'input',\n   *   name: 'username',\n   *   message: 'What is your username?'\n   * });\n   * console.log(response);\n   * ```\n   * @name prompt()\n   * @param {Array|Object} `questions` Options objects for one or more prompts to run.\n   * @return {Promise} Promise that returns an \"answers\" object with the user's responses.\n   * @api public\n   */\n\n  async prompt(questions = []) {\n    for (let question of [].concat(questions)) {\n      try {\n        if (typeof question === 'function') question = await question.call(this);\n        await this.ask(utils.merge({}, this.options, question));\n      } catch (err) {\n        return Promise.reject(err);\n      }\n    }\n    return this.answers;\n  }\n\n  async ask(question) {\n    if (typeof question === 'function') {\n      question = await question.call(this);\n    }\n\n    let opts = utils.merge({}, this.options, question);\n    let { type, name } = question;\n    let { set, get } = utils;\n\n    if (typeof type === 'function') {\n      type = await type.call(this, question, this.answers);\n    }\n\n    if (!type) return this.answers[name];\n\n    assert(this.prompts[type], `Prompt \"${type}\" is not registered`);\n\n    let prompt = new this.prompts[type](opts);\n    let value = get(this.answers, name);\n\n    prompt.state.answers = this.answers;\n    prompt.enquirer = this;\n\n    if (name) {\n      prompt.on('submit', value => {\n        this.emit('answer', name, value, prompt);\n        set(this.answers, name, value);\n      });\n    }\n\n    // bubble events\n    let emit = prompt.emit.bind(prompt);\n    prompt.emit = (...args) => {\n      this.emit.call(this, ...args);\n      return emit(...args);\n    };\n\n    this.emit('prompt', prompt, this);\n\n    if (opts.autofill && value != null) {\n      prompt.value = prompt.input = value;\n\n      // if \"autofill=show\" render the prompt, otherwise stay \"silent\"\n      if (opts.autofill === 'show') {\n        await prompt.submit();\n      }\n    } else {\n      value = prompt.value = await prompt.run();\n    }\n\n    return value;\n  }\n\n  /**\n   * Use an enquirer plugin.\n   *\n   * ```js\n   * const Enquirer = require('enquirer');\n   * const enquirer = new Enquirer();\n   * const plugin = enquirer => {\n   *   // do stuff to enquire instance\n   * };\n   * enquirer.use(plugin);\n   * ```\n   * @name use()\n   * @param {Function} `plugin` Plugin function that takes an instance of Enquirer.\n   * @return {Object} Returns the Enquirer instance.\n   * @api public\n   */\n\n  use(plugin) {\n    plugin.call(this, this);\n    return this;\n  }\n\n  set Prompt(value) {\n    this._Prompt = value;\n  }\n  get Prompt() {\n    return this._Prompt || this.constructor.Prompt;\n  }\n\n  get prompts() {\n    return this.constructor.prompts;\n  }\n\n  static set Prompt(value) {\n    this._Prompt = value;\n  }\n  static get Prompt() {\n    return this._Prompt || require('./lib/prompt');\n  }\n\n  static get prompts() {\n    return require('./lib/prompts');\n  }\n\n  static get types() {\n    return require('./lib/types');\n  }\n\n  /**\n   * Prompt function that takes a \"question\" object or array of question objects,\n   * and returns an object with responses from the user.\n   *\n   * ```js\n   * const { prompt } = require('enquirer');\n   * const response = await prompt({\n   *   type: 'input',\n   *   name: 'username',\n   *   message: 'What is your username?'\n   * });\n   * console.log(response);\n   * ```\n   * @name Enquirer#prompt\n   * @param {Array|Object} `questions` Options objects for one or more prompts to run.\n   * @return {Promise} Promise that returns an \"answers\" object with the user's responses.\n   * @api public\n   */\n\n  static get prompt() {\n    const fn = (questions, ...rest) => {\n      let enquirer = new this(...rest);\n      let emit = enquirer.emit.bind(enquirer);\n      enquirer.emit = (...args) => {\n        fn.emit(...args);\n        return emit(...args);\n      };\n      return enquirer.prompt(questions);\n    };\n    utils.mixinEmitter(fn, new Events());\n    return fn;\n  }\n}\n\nutils.mixinEmitter(Enquirer, new Events());\nconst prompts = Enquirer.prompts;\n\nfor (let name of Object.keys(prompts)) {\n  let key = name.toLowerCase();\n\n  let run = options => new prompts[name](options).run();\n  Enquirer.prompt[key] = run;\n  Enquirer[key] = run;\n\n  if (!Enquirer[name]) {\n    Reflect.defineProperty(Enquirer, name, { get: () => prompts[name] });\n  }\n}\n\nconst exp = name => {\n  utils.defineExport(Enquirer, name, () => Enquirer.types[name]);\n};\n\nexp('ArrayPrompt');\nexp('AuthPrompt');\nexp('BooleanPrompt');\nexp('NumberPrompt');\nexp('StringPrompt');\n\nmodule.exports = Enquirer;\n","/**\n * Copyright (c) Rui Figueira.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nfunction noop() {}\n\nexport default {\n  watch: noop,\n};\n","// Generated code.\n\nfunction isAmbiguous(x) {\n\treturn x === 0xA1\n\t\t|| x === 0xA4\n\t\t|| x === 0xA7\n\t\t|| x === 0xA8\n\t\t|| x === 0xAA\n\t\t|| x === 0xAD\n\t\t|| x === 0xAE\n\t\t|| x >= 0xB0 && x <= 0xB4\n\t\t|| x >= 0xB6 && x <= 0xBA\n\t\t|| x >= 0xBC && x <= 0xBF\n\t\t|| x === 0xC6\n\t\t|| x === 0xD0\n\t\t|| x === 0xD7\n\t\t|| x === 0xD8\n\t\t|| x >= 0xDE && x <= 0xE1\n\t\t|| x === 0xE6\n\t\t|| x >= 0xE8 && x <= 0xEA\n\t\t|| x === 0xEC\n\t\t|| x === 0xED\n\t\t|| x === 0xF0\n\t\t|| x === 0xF2\n\t\t|| x === 0xF3\n\t\t|| x >= 0xF7 && x <= 0xFA\n\t\t|| x === 0xFC\n\t\t|| x === 0xFE\n\t\t|| x === 0x101\n\t\t|| x === 0x111\n\t\t|| x === 0x113\n\t\t|| x === 0x11B\n\t\t|| x === 0x126\n\t\t|| x === 0x127\n\t\t|| x === 0x12B\n\t\t|| x >= 0x131 && x <= 0x133\n\t\t|| x === 0x138\n\t\t|| x >= 0x13F && x <= 0x142\n\t\t|| x === 0x144\n\t\t|| x >= 0x148 && x <= 0x14B\n\t\t|| x === 0x14D\n\t\t|| x === 0x152\n\t\t|| x === 0x153\n\t\t|| x === 0x166\n\t\t|| x === 0x167\n\t\t|| x === 0x16B\n\t\t|| x === 0x1CE\n\t\t|| x === 0x1D0\n\t\t|| x === 0x1D2\n\t\t|| x === 0x1D4\n\t\t|| x === 0x1D6\n\t\t|| x === 0x1D8\n\t\t|| x === 0x1DA\n\t\t|| x === 0x1DC\n\t\t|| x === 0x251\n\t\t|| x === 0x261\n\t\t|| x === 0x2C4\n\t\t|| x === 0x2C7\n\t\t|| x >= 0x2C9 && x <= 0x2CB\n\t\t|| x === 0x2CD\n\t\t|| x === 0x2D0\n\t\t|| x >= 0x2D8 && x <= 0x2DB\n\t\t|| x === 0x2DD\n\t\t|| x === 0x2DF\n\t\t|| x >= 0x300 && x <= 0x36F\n\t\t|| x >= 0x391 && x <= 0x3A1\n\t\t|| x >= 0x3A3 && x <= 0x3A9\n\t\t|| x >= 0x3B1 && x <= 0x3C1\n\t\t|| x >= 0x3C3 && x <= 0x3C9\n\t\t|| x === 0x401\n\t\t|| x >= 0x410 && x <= 0x44F\n\t\t|| x === 0x451\n\t\t|| x === 0x2010\n\t\t|| x >= 0x2013 && x <= 0x2016\n\t\t|| x === 0x2018\n\t\t|| x === 0x2019\n\t\t|| x === 0x201C\n\t\t|| x === 0x201D\n\t\t|| x >= 0x2020 && x <= 0x2022\n\t\t|| x >= 0x2024 && x <= 0x2027\n\t\t|| x === 0x2030\n\t\t|| x === 0x2032\n\t\t|| x === 0x2033\n\t\t|| x === 0x2035\n\t\t|| x === 0x203B\n\t\t|| x === 0x203E\n\t\t|| x === 0x2074\n\t\t|| x === 0x207F\n\t\t|| x >= 0x2081 && x <= 0x2084\n\t\t|| x === 0x20AC\n\t\t|| x === 0x2103\n\t\t|| x === 0x2105\n\t\t|| x === 0x2109\n\t\t|| x === 0x2113\n\t\t|| x === 0x2116\n\t\t|| x === 0x2121\n\t\t|| x === 0x2122\n\t\t|| x === 0x2126\n\t\t|| x === 0x212B\n\t\t|| x === 0x2153\n\t\t|| x === 0x2154\n\t\t|| x >= 0x215B && x <= 0x215E\n\t\t|| x >= 0x2160 && x <= 0x216B\n\t\t|| x >= 0x2170 && x <= 0x2179\n\t\t|| x === 0x2189\n\t\t|| x >= 0x2190 && x <= 0x2199\n\t\t|| x === 0x21B8\n\t\t|| x === 0x21B9\n\t\t|| x === 0x21D2\n\t\t|| x === 0x21D4\n\t\t|| x === 0x21E7\n\t\t|| x === 0x2200\n\t\t|| x === 0x2202\n\t\t|| x === 0x2203\n\t\t|| x === 0x2207\n\t\t|| x === 0x2208\n\t\t|| x === 0x220B\n\t\t|| x === 0x220F\n\t\t|| x === 0x2211\n\t\t|| x === 0x2215\n\t\t|| x === 0x221A\n\t\t|| x >= 0x221D && x <= 0x2220\n\t\t|| x === 0x2223\n\t\t|| x === 0x2225\n\t\t|| x >= 0x2227 && x <= 0x222C\n\t\t|| x === 0x222E\n\t\t|| x >= 0x2234 && x <= 0x2237\n\t\t|| x === 0x223C\n\t\t|| x === 0x223D\n\t\t|| x === 0x2248\n\t\t|| x === 0x224C\n\t\t|| x === 0x2252\n\t\t|| x === 0x2260\n\t\t|| x === 0x2261\n\t\t|| x >= 0x2264 && x <= 0x2267\n\t\t|| x === 0x226A\n\t\t|| x === 0x226B\n\t\t|| x === 0x226E\n\t\t|| x === 0x226F\n\t\t|| x === 0x2282\n\t\t|| x === 0x2283\n\t\t|| x === 0x2286\n\t\t|| x === 0x2287\n\t\t|| x === 0x2295\n\t\t|| x === 0x2299\n\t\t|| x === 0x22A5\n\t\t|| x === 0x22BF\n\t\t|| x === 0x2312\n\t\t|| x >= 0x2460 && x <= 0x24E9\n\t\t|| x >= 0x24EB && x <= 0x254B\n\t\t|| x >= 0x2550 && x <= 0x2573\n\t\t|| x >= 0x2580 && x <= 0x258F\n\t\t|| x >= 0x2592 && x <= 0x2595\n\t\t|| x === 0x25A0\n\t\t|| x === 0x25A1\n\t\t|| x >= 0x25A3 && x <= 0x25A9\n\t\t|| x === 0x25B2\n\t\t|| x === 0x25B3\n\t\t|| x === 0x25B6\n\t\t|| x === 0x25B7\n\t\t|| x === 0x25BC\n\t\t|| x === 0x25BD\n\t\t|| x === 0x25C0\n\t\t|| x === 0x25C1\n\t\t|| x >= 0x25C6 && x <= 0x25C8\n\t\t|| x === 0x25CB\n\t\t|| x >= 0x25CE && x <= 0x25D1\n\t\t|| x >= 0x25E2 && x <= 0x25E5\n\t\t|| x === 0x25EF\n\t\t|| x === 0x2605\n\t\t|| x === 0x2606\n\t\t|| x === 0x2609\n\t\t|| x === 0x260E\n\t\t|| x === 0x260F\n\t\t|| x === 0x261C\n\t\t|| x === 0x261E\n\t\t|| x === 0x2640\n\t\t|| x === 0x2642\n\t\t|| x === 0x2660\n\t\t|| x === 0x2661\n\t\t|| x >= 0x2663 && x <= 0x2665\n\t\t|| x >= 0x2667 && x <= 0x266A\n\t\t|| x === 0x266C\n\t\t|| x === 0x266D\n\t\t|| x === 0x266F\n\t\t|| x === 0x269E\n\t\t|| x === 0x269F\n\t\t|| x === 0x26BF\n\t\t|| x >= 0x26C6 && x <= 0x26CD\n\t\t|| x >= 0x26CF && x <= 0x26D3\n\t\t|| x >= 0x26D5 && x <= 0x26E1\n\t\t|| x === 0x26E3\n\t\t|| x === 0x26E8\n\t\t|| x === 0x26E9\n\t\t|| x >= 0x26EB && x <= 0x26F1\n\t\t|| x === 0x26F4\n\t\t|| x >= 0x26F6 && x <= 0x26F9\n\t\t|| x === 0x26FB\n\t\t|| x === 0x26FC\n\t\t|| x === 0x26FE\n\t\t|| x === 0x26FF\n\t\t|| x === 0x273D\n\t\t|| x >= 0x2776 && x <= 0x277F\n\t\t|| x >= 0x2B56 && x <= 0x2B59\n\t\t|| x >= 0x3248 && x <= 0x324F\n\t\t|| x >= 0xE000 && x <= 0xF8FF\n\t\t|| x >= 0xFE00 && x <= 0xFE0F\n\t\t|| x === 0xFFFD\n\t\t|| x >= 0x1F100 && x <= 0x1F10A\n\t\t|| x >= 0x1F110 && x <= 0x1F12D\n\t\t|| x >= 0x1F130 && x <= 0x1F169\n\t\t|| x >= 0x1F170 && x <= 0x1F18D\n\t\t|| x === 0x1F18F\n\t\t|| x === 0x1F190\n\t\t|| x >= 0x1F19B && x <= 0x1F1AC\n\t\t|| x >= 0xE0100 && x <= 0xE01EF\n\t\t|| x >= 0xF0000 && x <= 0xFFFFD\n\t\t|| x >= 0x100000 && x <= 0x10FFFD;\n}\n\nfunction isFullWidth(x) {\n\treturn x === 0x3000\n\t\t|| x >= 0xFF01 && x <= 0xFF60\n\t\t|| x >= 0xFFE0 && x <= 0xFFE6;\n}\n\nfunction isWide(x) {\n\treturn x >= 0x1100 && x <= 0x115F\n\t\t|| x === 0x231A\n\t\t|| x === 0x231B\n\t\t|| x === 0x2329\n\t\t|| x === 0x232A\n\t\t|| x >= 0x23E9 && x <= 0x23EC\n\t\t|| x === 0x23F0\n\t\t|| x === 0x23F3\n\t\t|| x === 0x25FD\n\t\t|| x === 0x25FE\n\t\t|| x === 0x2614\n\t\t|| x === 0x2615\n\t\t|| x >= 0x2630 && x <= 0x2637\n\t\t|| x >= 0x2648 && x <= 0x2653\n\t\t|| x === 0x267F\n\t\t|| x >= 0x268A && x <= 0x268F\n\t\t|| x === 0x2693\n\t\t|| x === 0x26A1\n\t\t|| x === 0x26AA\n\t\t|| x === 0x26AB\n\t\t|| x === 0x26BD\n\t\t|| x === 0x26BE\n\t\t|| x === 0x26C4\n\t\t|| x === 0x26C5\n\t\t|| x === 0x26CE\n\t\t|| x === 0x26D4\n\t\t|| x === 0x26EA\n\t\t|| x === 0x26F2\n\t\t|| x === 0x26F3\n\t\t|| x === 0x26F5\n\t\t|| x === 0x26FA\n\t\t|| x === 0x26FD\n\t\t|| x === 0x2705\n\t\t|| x === 0x270A\n\t\t|| x === 0x270B\n\t\t|| x === 0x2728\n\t\t|| x === 0x274C\n\t\t|| x === 0x274E\n\t\t|| x >= 0x2753 && x <= 0x2755\n\t\t|| x === 0x2757\n\t\t|| x >= 0x2795 && x <= 0x2797\n\t\t|| x === 0x27B0\n\t\t|| x === 0x27BF\n\t\t|| x === 0x2B1B\n\t\t|| x === 0x2B1C\n\t\t|| x === 0x2B50\n\t\t|| x === 0x2B55\n\t\t|| x >= 0x2E80 && x <= 0x2E99\n\t\t|| x >= 0x2E9B && x <= 0x2EF3\n\t\t|| x >= 0x2F00 && x <= 0x2FD5\n\t\t|| x >= 0x2FF0 && x <= 0x2FFF\n\t\t|| x >= 0x3001 && x <= 0x303E\n\t\t|| x >= 0x3041 && x <= 0x3096\n\t\t|| x >= 0x3099 && x <= 0x30FF\n\t\t|| x >= 0x3105 && x <= 0x312F\n\t\t|| x >= 0x3131 && x <= 0x318E\n\t\t|| x >= 0x3190 && x <= 0x31E5\n\t\t|| x >= 0x31EF && x <= 0x321E\n\t\t|| x >= 0x3220 && x <= 0x3247\n\t\t|| x >= 0x3250 && x <= 0xA48C\n\t\t|| x >= 0xA490 && x <= 0xA4C6\n\t\t|| x >= 0xA960 && x <= 0xA97C\n\t\t|| x >= 0xAC00 && x <= 0xD7A3\n\t\t|| x >= 0xF900 && x <= 0xFAFF\n\t\t|| x >= 0xFE10 && x <= 0xFE19\n\t\t|| x >= 0xFE30 && x <= 0xFE52\n\t\t|| x >= 0xFE54 && x <= 0xFE66\n\t\t|| x >= 0xFE68 && x <= 0xFE6B\n\t\t|| x >= 0x16FE0 && x <= 0x16FE4\n\t\t|| x === 0x16FF0\n\t\t|| x === 0x16FF1\n\t\t|| x >= 0x17000 && x <= 0x187F7\n\t\t|| x >= 0x18800 && x <= 0x18CD5\n\t\t|| x >= 0x18CFF && x <= 0x18D08\n\t\t|| x >= 0x1AFF0 && x <= 0x1AFF3\n\t\t|| x >= 0x1AFF5 && x <= 0x1AFFB\n\t\t|| x === 0x1AFFD\n\t\t|| x === 0x1AFFE\n\t\t|| x >= 0x1B000 && x <= 0x1B122\n\t\t|| x === 0x1B132\n\t\t|| x >= 0x1B150 && x <= 0x1B152\n\t\t|| x === 0x1B155\n\t\t|| x >= 0x1B164 && x <= 0x1B167\n\t\t|| x >= 0x1B170 && x <= 0x1B2FB\n\t\t|| x >= 0x1D300 && x <= 0x1D356\n\t\t|| x >= 0x1D360 && x <= 0x1D376\n\t\t|| x === 0x1F004\n\t\t|| x === 0x1F0CF\n\t\t|| x === 0x1F18E\n\t\t|| x >= 0x1F191 && x <= 0x1F19A\n\t\t|| x >= 0x1F200 && x <= 0x1F202\n\t\t|| x >= 0x1F210 && x <= 0x1F23B\n\t\t|| x >= 0x1F240 && x <= 0x1F248\n\t\t|| x === 0x1F250\n\t\t|| x === 0x1F251\n\t\t|| x >= 0x1F260 && x <= 0x1F265\n\t\t|| x >= 0x1F300 && x <= 0x1F320\n\t\t|| x >= 0x1F32D && x <= 0x1F335\n\t\t|| x >= 0x1F337 && x <= 0x1F37C\n\t\t|| x >= 0x1F37E && x <= 0x1F393\n\t\t|| x >= 0x1F3A0 && x <= 0x1F3CA\n\t\t|| x >= 0x1F3CF && x <= 0x1F3D3\n\t\t|| x >= 0x1F3E0 && x <= 0x1F3F0\n\t\t|| x === 0x1F3F4\n\t\t|| x >= 0x1F3F8 && x <= 0x1F43E\n\t\t|| x === 0x1F440\n\t\t|| x >= 0x1F442 && x <= 0x1F4FC\n\t\t|| x >= 0x1F4FF && x <= 0x1F53D\n\t\t|| x >= 0x1F54B && x <= 0x1F54E\n\t\t|| x >= 0x1F550 && x <= 0x1F567\n\t\t|| x === 0x1F57A\n\t\t|| x === 0x1F595\n\t\t|| x === 0x1F596\n\t\t|| x === 0x1F5A4\n\t\t|| x >= 0x1F5FB && x <= 0x1F64F\n\t\t|| x >= 0x1F680 && x <= 0x1F6C5\n\t\t|| x === 0x1F6CC\n\t\t|| x >= 0x1F6D0 && x <= 0x1F6D2\n\t\t|| x >= 0x1F6D5 && x <= 0x1F6D7\n\t\t|| x >= 0x1F6DC && x <= 0x1F6DF\n\t\t|| x === 0x1F6EB\n\t\t|| x === 0x1F6EC\n\t\t|| x >= 0x1F6F4 && x <= 0x1F6FC\n\t\t|| x >= 0x1F7E0 && x <= 0x1F7EB\n\t\t|| x === 0x1F7F0\n\t\t|| x >= 0x1F90C && x <= 0x1F93A\n\t\t|| x >= 0x1F93C && x <= 0x1F945\n\t\t|| x >= 0x1F947 && x <= 0x1F9FF\n\t\t|| x >= 0x1FA70 && x <= 0x1FA7C\n\t\t|| x >= 0x1FA80 && x <= 0x1FA89\n\t\t|| x >= 0x1FA8F && x <= 0x1FAC6\n\t\t|| x >= 0x1FACE && x <= 0x1FADC\n\t\t|| x >= 0x1FADF && x <= 0x1FAE9\n\t\t|| x >= 0x1FAF0 && x <= 0x1FAF8\n\t\t|| x >= 0x20000 && x <= 0x2FFFD\n\t\t|| x >= 0x30000 && x <= 0x3FFFD;\n}\n\nfunction getCategory(x) {\n\tif (isAmbiguous(x)) return 'ambiguous';\n\n\tif (isFullWidth(x)) return 'fullwidth';\n\n\tif (\n\t\tx === 0x20A9\n\t\t|| x >= 0xFF61 && x <= 0xFFBE\n\t\t|| x >= 0xFFC2 && x <= 0xFFC7\n\t\t|| x >= 0xFFCA && x <= 0xFFCF\n\t\t|| x >= 0xFFD2 && x <= 0xFFD7\n\t\t|| x >= 0xFFDA && x <= 0xFFDC\n\t\t|| x >= 0xFFE8 && x <= 0xFFEE\n\t) {\n\t\treturn 'halfwidth';\n\t}\n\n\tif (\n\t\tx >= 0x20 && x <= 0x7E\n\t\t|| x === 0xA2\n\t\t|| x === 0xA3\n\t\t|| x === 0xA5\n\t\t|| x === 0xA6\n\t\t|| x === 0xAC\n\t\t|| x === 0xAF\n\t\t|| x >= 0x27E6 && x <= 0x27ED\n\t\t|| x === 0x2985\n\t\t|| x === 0x2986\n\t) {\n\t\treturn 'narrow';\n\t}\n\n\tif (isWide(x)) return 'wide';\n\n\treturn 'neutral';\n}\n\nexport {isAmbiguous, isFullWidth, isWide, getCategory};\n","import {getCategory, isAmbiguous, isFullWidth, isWide} from './lookup.js';\n\nfunction validate(codePoint) {\n\tif (!Number.isSafeInteger(codePoint)) {\n\t\tthrow new TypeError(`Expected a code point, got \\`${typeof codePoint}\\`.`);\n\t}\n}\n\nexport function eastAsianWidthType(codePoint) {\n\tvalidate(codePoint);\n\n\treturn getCategory(codePoint);\n}\n\nexport function eastAsianWidth(codePoint, {ambiguousAsWide = false} = {}) {\n\tvalidate(codePoint);\n\n\tif (\n\t\tisFullWidth(codePoint)\n\t\t|| isWide(codePoint)\n\t\t|| (ambiguousAsWide && isAmbiguous(codePoint))\n\t) {\n\t\treturn 2;\n\t}\n\n\treturn 1;\n}\n\n// For Prettier. This doesn't count \"ambiguous\" characters or check for valid input.\n// https://github.com/sindresorhus/get-east-asian-width/pull/6\nexport const _isNarrowWidth = codePoint => !(isFullWidth(codePoint) || isWide(codePoint));\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable import/order */\n\nimport json5Library from 'json5';\nexport const json5 = json5Library;\n\nimport sourceMapSupportLibrary from 'source-map-support';\nexport const sourceMapSupport = sourceMapSupportLibrary;\n\nimport stoppableLibrary from 'stoppable';\nexport const stoppable = stoppableLibrary;\n\nimport enquirerLibrary from 'enquirer';\nexport const enquirer = enquirerLibrary;\n\nimport chokidarLibrary from 'chokidar';\nexport const chokidar = chokidarLibrary;\n\nimport * as getEastAsianWidthLibrary from 'get-east-asian-width';\nexport const getEastAsianWidth = getEastAsianWidthLibrary;\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const json5: typeof import('../bundles/utils/node_modules/json5/lib') = require('./utilsBundleImpl').json5;\nexport const sourceMapSupport: typeof import('../bundles/utils/node_modules/@types/source-map-support') = require('./utilsBundleImpl').sourceMapSupport;\nexport const stoppable: typeof import('../bundles/utils/node_modules/@types/stoppable') = require('./utilsBundleImpl').stoppable;\nexport const enquirer: typeof import('../bundles/utils/node_modules/enquirer') = require('./utilsBundleImpl').enquirer;\nexport const chokidar: typeof import('../bundles/utils/node_modules/chokidar') = require('./utilsBundleImpl').chokidar;\nexport const getEastAsianWidth: typeof import('../bundles/utils/node_modules/get-east-asian-width') = require('./utilsBundleImpl').getEastAsianWidth;\nexport type { RawSourceMap } from '../bundles/utils/node_modules/source-map';\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport os from 'os';\nimport path from 'path';\n\nimport { isWorkerProcess } from '../common/globals';\nimport { sourceMapSupport } from '../utilsBundle';\n\nexport type MemoryCache = {\n  codePath: string;\n  sourceMapPath: string;\n  dataPath: string;\n  moduleUrl?: string;\n};\n\nexport type SerializedCompilationCache = {\n  sourceMaps: [string, string][],\n  memoryCache: [string, MemoryCache][],\n  fileDependencies: [string, string[]][],\n  externalDependencies: [string, string[]][],\n};\n\n// Assumptions for the compilation cache:\n// - Files in the temp directory we work with can disappear at any moment, either some of them or all together.\n// - Multiple workers can be trying to read from the compilation cache at the same time.\n// - There is a single invocation of the test runner at a time.\n//\n// Therefore, we implement the following logic:\n// - Never assume that file is present, always try to read it to determine whether it's actually present.\n// - Never write to the cache from worker processes to avoid \"multiple writers\" races.\n// - Since we perform all static imports in the runner beforehand, most of the time\n//   workers should be able to read from the cache.\n// - For workers-only dynamic imports or some cache problems, we will re-transpile files in\n//   each worker anew.\n\nexport const cacheDir = process.env.PWTEST_CACHE_DIR || (() => {\n  if (process.platform === 'win32')\n    return path.join(os.tmpdir(), `playwright-transform-cache`);\n  // Use `geteuid()` instead of more natural `os.userInfo().username`\n  // since `os.userInfo()` is not always available.\n  // Note: `process.geteuid()` is not available on windows.\n  // See https://github.com/microsoft/playwright/issues/22721\n  return path.join(os.tmpdir(), `playwright-transform-cache-` + process.geteuid?.());\n})();\n\nconst sourceMaps: Map<string, string> = new Map();\nconst memoryCache = new Map<string, MemoryCache>();\n// Dependencies resolved by the loader.\nconst fileDependencies = new Map<string, Set<string>>();\n// Dependencies resolved by the external bundler.\nconst externalDependencies = new Map<string, Set<string>>();\n\nexport function installSourceMapSupport() {\n  Error.stackTraceLimit = 200;\n\n  sourceMapSupport.install({\n    environment: 'node',\n    handleUncaughtExceptions: false,\n    retrieveSourceMap(source) {\n      if (!sourceMaps.has(source))\n        return null;\n      const sourceMapPath = sourceMaps.get(source)!;\n      try {\n        return {\n          map: JSON.parse(fs.readFileSync(sourceMapPath, 'utf-8')),\n          url: source,\n        };\n      } catch {\n        return null;\n      }\n    }\n  });\n}\n\nfunction _innerAddToCompilationCacheAndSerialize(filename: string, entry: MemoryCache) {\n  sourceMaps.set(entry.moduleUrl || filename, entry.sourceMapPath);\n  memoryCache.set(filename, entry);\n  return {\n    sourceMaps: [[entry.moduleUrl || filename, entry.sourceMapPath]],\n    memoryCache: [[filename, entry]],\n    fileDependencies: [],\n    externalDependencies: [],\n  };\n}\n\ntype CompilationCacheLookupResult = {\n  serializedCache?: any;\n  cachedCode?: string;\n  addToCache?: (code: string, map: any | undefined | null, data: Map<string, any>) => { serializedCache?: any };\n};\n\nexport function getFromCompilationCache(filename: string, hash: string, moduleUrl?: string): CompilationCacheLookupResult {\n  // First check the memory cache by filename, this cache will always work in the worker,\n  // because we just compiled this file in the loader.\n  const cache = memoryCache.get(filename);\n  if (cache?.codePath) {\n    try {\n      return { cachedCode: fs.readFileSync(cache.codePath, 'utf-8') };\n    } catch {\n      // Not able to read the file - fall through.\n    }\n  }\n\n  // Then do the disk cache, this cache works between the Playwright Test runs.\n  const cachePath = calculateCachePath(filename, hash);\n  const codePath = cachePath + '.js';\n  const sourceMapPath = cachePath + '.map';\n  const dataPath = cachePath + '.data';\n  try {\n    const cachedCode = fs.readFileSync(codePath, 'utf8');\n    const serializedCache = _innerAddToCompilationCacheAndSerialize(filename, { codePath, sourceMapPath, dataPath, moduleUrl });\n    return { cachedCode, serializedCache };\n  } catch {\n  }\n\n  return {\n    addToCache: (code: string, map: any | undefined | null, data: Map<string, any>) => {\n      if (isWorkerProcess())\n        return {};\n      fs.mkdirSync(path.dirname(cachePath), { recursive: true });\n      if (map)\n        fs.writeFileSync(sourceMapPath, JSON.stringify(map), 'utf8');\n      if (data.size)\n        fs.writeFileSync(dataPath, JSON.stringify(Object.fromEntries(data.entries()), undefined, 2), 'utf8');\n      fs.writeFileSync(codePath, code, 'utf8');\n      const serializedCache = _innerAddToCompilationCacheAndSerialize(filename, { codePath, sourceMapPath, dataPath, moduleUrl });\n      return { serializedCache };\n    }\n  };\n}\n\nexport function serializeCompilationCache(): SerializedCompilationCache {\n  return {\n    sourceMaps: [...sourceMaps.entries()],\n    memoryCache: [...memoryCache.entries()],\n    fileDependencies: [...fileDependencies.entries()].map(([filename, deps]) => ([filename, [...deps]])),\n    externalDependencies: [...externalDependencies.entries()].map(([filename, deps]) => ([filename, [...deps]])),\n  };\n}\n\nexport function addToCompilationCache(payload: SerializedCompilationCache) {\n  for (const entry of payload.sourceMaps)\n    sourceMaps.set(entry[0], entry[1]);\n  for (const entry of payload.memoryCache)\n    memoryCache.set(entry[0], entry[1]);\n  for (const entry of payload.fileDependencies) {\n    const existing = fileDependencies.get(entry[0]) || [];\n    fileDependencies.set(entry[0], new Set([...entry[1], ...existing]));\n  }\n  for (const entry of payload.externalDependencies) {\n    const existing = externalDependencies.get(entry[0]) || [];\n    externalDependencies.set(entry[0], new Set([...entry[1], ...existing]));\n  }\n}\n\nfunction calculateCachePath(filePath: string, hash: string): string {\n  const fileName = path.basename(filePath, path.extname(filePath)).replace(/\\W/g, '') + '_' + hash;\n  return path.join(cacheDir, hash[0] + hash[1], fileName);\n}\n\n// Since ESM and CJS collect dependencies differently,\n// we go via the global state to collect them.\nlet depsCollector: Set<string> | undefined;\n\nexport function startCollectingFileDeps() {\n  depsCollector = new Set();\n}\n\nexport function stopCollectingFileDeps(filename: string) {\n  if (!depsCollector)\n    return;\n  depsCollector.delete(filename);\n  for (const dep of depsCollector) {\n    if (belongsToNodeModules(dep))\n      depsCollector.delete(dep);\n  }\n  fileDependencies.set(filename, depsCollector);\n  depsCollector = undefined;\n}\n\nexport function currentFileDepsCollector(): Set<string> | undefined {\n  return depsCollector;\n}\n\nexport function setExternalDependencies(filename: string, deps: string[]) {\n  const depsSet = new Set(deps.filter(dep => !belongsToNodeModules(dep) && dep !== filename));\n  externalDependencies.set(filename, depsSet);\n}\n\nexport function fileDependenciesForTest() {\n  return fileDependencies;\n}\n\nexport function collectAffectedTestFiles(changedFile: string, testFileCollector: Set<string>) {\n  const isTestFile = (file: string) => fileDependencies.has(file);\n\n  if (isTestFile(changedFile))\n    testFileCollector.add(changedFile);\n\n  for (const [testFile, deps] of fileDependencies) {\n    if (deps.has(changedFile))\n      testFileCollector.add(testFile);\n  }\n\n  for (const [importingFile, depsOfImportingFile] of externalDependencies) {\n    if (depsOfImportingFile.has(changedFile)) {\n      if (isTestFile(importingFile))\n        testFileCollector.add(importingFile);\n\n      for (const [testFile, depsOfTestFile] of fileDependencies) {\n        if (depsOfTestFile.has(importingFile))\n          testFileCollector.add(testFile);\n      }\n    }\n  }\n}\n\nexport function affectedTestFiles(changes: string[]): string[] {\n  const result = new Set<string>();\n  for (const change of changes)\n    collectAffectedTestFiles(change, result);\n  return [...result];\n}\n\nexport function internalDependenciesForTestFile(filename: string): Set<string> | undefined{\n  return fileDependencies.get(filename);\n}\n\nexport function dependenciesForTestFile(filename: string): Set<string> {\n  const result = new Set<string>();\n  for (const testDependency of fileDependencies.get(filename) || []) {\n    result.add(testDependency);\n    for (const externalDependency of externalDependencies.get(testDependency) || [])\n      result.add(externalDependency);\n  }\n  for (const dep of externalDependencies.get(filename) || [])\n    result.add(dep);\n  return result;\n}\n\n// This is only used in the dev mode, specifically excluding\n// files from packages/playwright*. In production mode, node_modules covers\n// that.\nconst kPlaywrightInternalPrefix = path.resolve(__dirname, '../../../playwright');\n\nexport function belongsToNodeModules(file: string) {\n  if (file.includes(`${path.sep}node_modules${path.sep}`))\n    return true;\n  if (file.startsWith(kPlaywrightInternalPrefix) && (file.endsWith('.js') || file.endsWith('.mjs')))\n    return true;\n  return false;\n}\n\nexport async function getUserData(pluginName: string): Promise<Map<string, any>> {\n  const result = new Map<string, any>();\n  for (const [fileName, cache] of memoryCache) {\n    if (!cache.dataPath)\n      continue;\n    if (!fs.existsSync(cache.dataPath))\n      continue;\n    const data = JSON.parse(await fs.promises.readFile(cache.dataPath, 'utf8'));\n    if (data[pluginName])\n      result.set(fileName, data[pluginName]);\n  }\n  return result;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport crypto from 'crypto';\nimport fs from 'fs';\nimport Module from 'module';\nimport path from 'path';\nimport url from 'url';\n\nimport { loadTsConfig } from '../third_party/tsconfig-loader';\nimport { createFileMatcher, fileIsModule, resolveImportSpecifierAfterMapping } from '../util';\nimport { sourceMapSupport } from '../utilsBundle';\nimport { belongsToNodeModules, currentFileDepsCollector, getFromCompilationCache, installSourceMapSupport } from './compilationCache';\nimport { addHook } from '../third_party/pirates';\n\nimport type { BabelPlugin, BabelTransformFunction } from './babelBundle';\nimport type { Location } from '../../types/testReporter';\nimport type { LoadedTsConfig } from '../third_party/tsconfig-loader';\nimport type { Matcher } from '../util';\n\n\nconst version = require('../../package.json').version;\n\ntype ParsedTsConfigData = {\n  pathsBase?: string;\n  paths: { key: string, values: string[] }[];\n  allowJs: boolean;\n};\nconst cachedTSConfigs = new Map<string, ParsedTsConfigData[]>();\n\nexport type TransformConfig = {\n  babelPlugins: [string, any?][];\n  external: string[];\n};\n\nlet _transformConfig: TransformConfig = {\n  babelPlugins: [],\n  external: [],\n};\n\nlet _externalMatcher: Matcher = () => false;\n\nexport function setTransformConfig(config: TransformConfig) {\n  _transformConfig = config;\n  _externalMatcher = createFileMatcher(_transformConfig.external);\n}\n\nexport function transformConfig(): TransformConfig {\n  return _transformConfig;\n}\n\nlet _singleTSConfigPath: string | undefined;\nlet _singleTSConfig: ParsedTsConfigData[] | undefined;\n\nexport function setSingleTSConfig(value: string | undefined) {\n  _singleTSConfigPath = value;\n}\n\nexport function singleTSConfig(): string | undefined {\n  return _singleTSConfigPath;\n}\n\nfunction validateTsConfig(tsconfig: LoadedTsConfig): ParsedTsConfigData {\n  // When no explicit baseUrl is set, resolve paths relative to the tsconfig file.\n  // See https://www.typescriptlang.org/tsconfig#paths\n  const pathsBase = tsconfig.absoluteBaseUrl ?? tsconfig.paths?.pathsBasePath;\n  // Only add the catch-all mapping when baseUrl is specified\n  const pathsFallback = tsconfig.absoluteBaseUrl ? [{ key: '*', values: ['*'] }] : [];\n  return {\n    allowJs: !!tsconfig.allowJs,\n    pathsBase,\n    paths: Object.entries(tsconfig.paths?.mapping || {}).map(([key, values]) => ({ key, values })).concat(pathsFallback)\n  };\n}\n\nfunction loadAndValidateTsconfigsForFile(file: string): ParsedTsConfigData[] {\n  if (_singleTSConfigPath && !_singleTSConfig)\n    _singleTSConfig = loadTsConfig(_singleTSConfigPath).map(validateTsConfig);\n  if (_singleTSConfig)\n    return _singleTSConfig;\n  return loadAndValidateTsconfigsForFolder(path.dirname(file));\n}\n\nfunction loadAndValidateTsconfigsForFolder(folder: string): ParsedTsConfigData[] {\n  const foldersWithConfig: string[] = [];\n  let currentFolder = path.resolve(folder);\n  let result: ParsedTsConfigData[] | undefined;\n  while (true) {\n    const cached = cachedTSConfigs.get(currentFolder);\n    if (cached) {\n      result = cached;\n      break;\n    }\n\n    foldersWithConfig.push(currentFolder);\n\n    for (const name of ['tsconfig.json', 'jsconfig.json']) {\n      const configPath = path.join(currentFolder, name);\n      if (fs.existsSync(configPath)) {\n        const loaded = loadTsConfig(configPath);\n        result = loaded.map(validateTsConfig);\n        break;\n      }\n    }\n    if (result)\n      break;\n\n    const parentFolder = path.resolve(currentFolder, '../');\n    if (currentFolder === parentFolder)\n      break;\n    currentFolder = parentFolder;\n  }\n\n  result = result || [];\n  for (const folder of foldersWithConfig)\n    cachedTSConfigs.set(folder, result);\n  return result;\n}\n\nconst pathSeparator = process.platform === 'win32' ? ';' : ':';\nconst builtins = new Set(Module.builtinModules);\n\nexport function resolveHook(filename: string, specifier: string): string | undefined {\n  if (specifier.startsWith('node:') || builtins.has(specifier))\n    return;\n  if (!shouldTransform(filename))\n    return;\n\n  if (isRelativeSpecifier(specifier))\n    return resolveImportSpecifierAfterMapping(path.resolve(path.dirname(filename), specifier), false);\n\n  /**\n   * TypeScript discourages path-mapping into node_modules:\n   * https://www.typescriptlang.org/docs/handbook/modules/reference.html#paths-should-not-point-to-monorepo-packages-or-node_modules-packages\n   * However, if path-mapping doesn't yield a result, TypeScript falls back to the default resolution through node_modules.\n   */\n  const isTypeScript = filename.endsWith('.ts') || filename.endsWith('.tsx');\n  const tsconfigs = loadAndValidateTsconfigsForFile(filename);\n  for (const tsconfig of tsconfigs) {\n    if (!isTypeScript && !tsconfig.allowJs)\n      continue;\n    let longestPrefixLength = -1;\n    let pathMatchedByLongestPrefix: string | undefined;\n\n    for (const { key, values } of tsconfig.paths) {\n      let matchedPartOfSpecifier = specifier;\n\n      const [keyPrefix, keySuffix] = key.split('*');\n      if (key.includes('*')) {\n        // * If pattern contains '*' then to match pattern \"<prefix>*<suffix>\" module name must start with the <prefix> and end with <suffix>.\n        // * <MatchedStar> denotes part of the module name between <prefix> and <suffix>.\n        // * If module name can be matches with multiple patterns then pattern with the longest prefix will be picked.\n        // https://github.com/microsoft/TypeScript/blob/f82d0cb3299c04093e3835bc7e29f5b40475f586/src/compiler/moduleNameResolver.ts#L1049\n        if (keyPrefix) {\n          if (!specifier.startsWith(keyPrefix))\n            continue;\n          matchedPartOfSpecifier = matchedPartOfSpecifier.substring(keyPrefix.length, matchedPartOfSpecifier.length);\n        }\n        if (keySuffix) {\n          if (!specifier.endsWith(keySuffix))\n            continue;\n          matchedPartOfSpecifier = matchedPartOfSpecifier.substring(0, matchedPartOfSpecifier.length - keySuffix.length);\n        }\n      } else {\n        if (specifier !== key)\n          continue;\n        matchedPartOfSpecifier = specifier;\n      }\n\n      if (keyPrefix.length <= longestPrefixLength)\n        continue;\n\n      for (const value of values) {\n        let candidate = value;\n        if (value.includes('*'))\n          candidate = candidate.replace('*', matchedPartOfSpecifier);\n        candidate = path.resolve(tsconfig.pathsBase!, candidate);\n        const existing = resolveImportSpecifierAfterMapping(candidate, true);\n        if (existing) {\n          longestPrefixLength = keyPrefix.length;\n          pathMatchedByLongestPrefix = existing;\n        }\n      }\n    }\n    if (pathMatchedByLongestPrefix)\n      return pathMatchedByLongestPrefix;\n  }\n\n  if (path.isAbsolute(specifier)) {\n    // Handle absolute file paths like `import '/path/to/file'`\n    // Do not handle module imports like `import 'fs'`\n    return resolveImportSpecifierAfterMapping(specifier, false);\n  }\n}\n\nexport function shouldTransform(filename: string): boolean {\n  if (_externalMatcher(filename))\n    return false;\n  return !belongsToNodeModules(filename);\n}\n\nlet transformData: Map<string, any>;\n\nexport function setTransformData(pluginName: string, value: any) {\n  transformData.set(pluginName, value);\n}\n\nexport function transformHook(originalCode: string, filename: string, moduleUrl?: string): { code: string, serializedCache?: any } {\n  const hasPreprocessor =\n      process.env.PW_TEST_SOURCE_TRANSFORM &&\n      process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE &&\n      process.env.PW_TEST_SOURCE_TRANSFORM_SCOPE.split(pathSeparator).some(f => filename.startsWith(f));\n  const pluginsPrologue = _transformConfig.babelPlugins;\n  const pluginsEpilogue = hasPreprocessor ? [[process.env.PW_TEST_SOURCE_TRANSFORM!]] as BabelPlugin[] : [];\n  const hash = calculateHash(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);\n  const { cachedCode, addToCache, serializedCache } = getFromCompilationCache(filename, hash, moduleUrl);\n  if (cachedCode !== undefined)\n    return { code: cachedCode, serializedCache };\n\n  // We don't use any browserslist data, but babel checks it anyway.\n  // Silence the annoying warning.\n  process.env.BROWSERSLIST_IGNORE_OLD_DATA = 'true';\n\n  const { babelTransform }: { babelTransform: BabelTransformFunction } = require('./babelBundle');\n  transformData = new Map<string, any>();\n  const babelResult = babelTransform(originalCode, filename, !!moduleUrl, pluginsPrologue, pluginsEpilogue);\n  if (!babelResult?.code)\n    return { code: originalCode, serializedCache };\n  const { code, map } = babelResult;\n  const added = addToCache!(code, map, transformData);\n  return { code, serializedCache: added.serializedCache };\n}\n\nfunction calculateHash(content: string, filePath: string, isModule: boolean, pluginsPrologue: BabelPlugin[], pluginsEpilogue: BabelPlugin[]): string {\n  const hash = crypto.createHash('sha1')\n      .update(isModule ? 'esm' : 'no_esm')\n      .update(content)\n      .update(filePath)\n      .update(version)\n      .update(pluginsPrologue.map(p => p[0]).join(','))\n      .update(pluginsEpilogue.map(p => p[0]).join(','))\n      .digest('hex');\n  return hash;\n}\n\nexport async function requireOrImport(file: string) {\n  installTransformIfNeeded();\n  const isModule = fileIsModule(file);\n  const esmImport = () => eval(`import(${JSON.stringify(url.pathToFileURL(file))})`);\n  if (isModule) {\n    return await esmImport().finally(async () => {\n      // Compilation cache, which includes source maps, is populated in a post task.\n      // When importing a module results in an error, the very next access to `error.stack`\n      // will need source maps. To make sure source maps have arrived, we insert a task\n      // that will be processed after compilation cache and guarantee that\n      // source maps are available, before `error.stack` is accessed.\n      await new Promise(resolve => setTimeout(resolve, 0));\n    });\n  }\n  const result = require(file);\n  const depsCollector = currentFileDepsCollector();\n  if (depsCollector) {\n    const module = require.cache[file];\n    if (module)\n      collectCJSDependencies(module, depsCollector);\n  }\n  return result;\n}\n\nlet transformInstalled = false;\n\nfunction installTransformIfNeeded() {\n  if (transformInstalled)\n    return;\n  transformInstalled = true;\n\n  installSourceMapSupport();\n\n  const originalResolveFilename = (Module as any)._resolveFilename;\n  function resolveFilename(this: any, specifier: string, parent: Module, ...rest: any[]) {\n    if (parent) {\n      const resolved = resolveHook(parent.filename, specifier);\n      if (resolved !== undefined)\n        specifier = resolved;\n    }\n    return originalResolveFilename.call(this, specifier, parent, ...rest);\n  }\n  (Module as any)._resolveFilename = resolveFilename;\n\n  // Hopefully, one day we can migrate to synchronous loader hooks instead, similar to our esmLoader...\n  addHook((code, filename) => {\n    return transformHook(code, filename).code;\n  }, shouldTransform, ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.mts', '.cjs', '.cts']);\n}\n\nconst collectCJSDependencies = (module: Module, dependencies: Set<string>) => {\n  module.children.forEach(child => {\n    if (!belongsToNodeModules(child.filename) && !dependencies.has(child.filename)) {\n      dependencies.add(child.filename);\n      collectCJSDependencies(child, dependencies);\n    }\n  });\n};\n\nexport function wrapFunctionWithLocation<A extends any[], R>(func: (location: Location, ...args: A) => R): (...args: A) => R {\n  return (...args) => {\n    const oldPrepareStackTrace = Error.prepareStackTrace;\n    Error.prepareStackTrace = (error, stackFrames) => {\n      const frame: NodeJS.CallSite = sourceMapSupport.wrapCallSite(stackFrames[1]);\n      const fileName = frame.getFileName();\n      // Node error stacks for modules use file:// urls instead of paths.\n      const file = (fileName && fileName.startsWith('file://')) ? url.fileURLToPath(fileName) : fileName;\n      return {\n        file,\n        line: frame.getLineNumber(),\n        column: frame.getColumnNumber(),\n      };\n    };\n    const oldStackTraceLimit = Error.stackTraceLimit;\n    Error.stackTraceLimit = 2;\n    const obj: { stack: Location } = {} as any;\n    Error.captureStackTrace(obj);\n    const location = obj.stack;\n    Error.stackTraceLimit = oldStackTraceLimit;\n    Error.prepareStackTrace = oldPrepareStackTrace;\n    return func(location, ...args);\n  };\n}\n\nfunction isRelativeSpecifier(specifier: string) {\n  return specifier === '.' || specifier === '..' || specifier.startsWith('./') || specifier.startsWith('../');\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { errors } from 'playwright-core';\nimport { getPackageManagerExecCommand, monotonicTime, raceAgainstDeadline, currentZone } from 'playwright-core/lib/utils';\n\nimport { currentTestInfo, currentlyLoadingFileSuite, setCurrentlyLoadingFileSuite } from './globals';\nimport { Suite, TestCase } from './test';\nimport { expect } from '../matchers/expect';\nimport { wrapFunctionWithLocation } from '../transform/transform';\n\nimport type { FixturesWithLocation } from './config';\nimport type { Fixtures, TestDetails, TestStepInfo, TestType } from '../../types/test';\nimport type { Location } from '../../types/testReporter';\n\nconst testTypeSymbol = Symbol('testType');\n\nexport class TestTypeImpl {\n  readonly fixtures: FixturesWithLocation[];\n  readonly test: TestType<any, any>;\n\n  constructor(fixtures: FixturesWithLocation[]) {\n    this.fixtures = fixtures;\n\n    const test: any = wrapFunctionWithLocation(this._createTest.bind(this, 'default'));\n    test[testTypeSymbol] = this;\n    test.expect = expect;\n    test.only = wrapFunctionWithLocation(this._createTest.bind(this, 'only'));\n    test.describe = wrapFunctionWithLocation(this._describe.bind(this, 'default'));\n    test.describe.only = wrapFunctionWithLocation(this._describe.bind(this, 'only'));\n    test.describe.configure = wrapFunctionWithLocation(this._configure.bind(this));\n    test.describe.fixme = wrapFunctionWithLocation(this._describe.bind(this, 'fixme'));\n    test.describe.parallel = wrapFunctionWithLocation(this._describe.bind(this, 'parallel'));\n    test.describe.parallel.only = wrapFunctionWithLocation(this._describe.bind(this, 'parallel.only'));\n    test.describe.serial = wrapFunctionWithLocation(this._describe.bind(this, 'serial'));\n    test.describe.serial.only = wrapFunctionWithLocation(this._describe.bind(this, 'serial.only'));\n    test.describe.skip = wrapFunctionWithLocation(this._describe.bind(this, 'skip'));\n    test.beforeEach = wrapFunctionWithLocation(this._hook.bind(this, 'beforeEach'));\n    test.afterEach = wrapFunctionWithLocation(this._hook.bind(this, 'afterEach'));\n    test.beforeAll = wrapFunctionWithLocation(this._hook.bind(this, 'beforeAll'));\n    test.afterAll = wrapFunctionWithLocation(this._hook.bind(this, 'afterAll'));\n    test.skip = wrapFunctionWithLocation(this._modifier.bind(this, 'skip'));\n    test.fixme = wrapFunctionWithLocation(this._modifier.bind(this, 'fixme'));\n    test.fail = wrapFunctionWithLocation(this._modifier.bind(this, 'fail'));\n    test.fail.only = wrapFunctionWithLocation(this._createTest.bind(this, 'fail.only'));\n    test.slow = wrapFunctionWithLocation(this._modifier.bind(this, 'slow'));\n    test.setTimeout = wrapFunctionWithLocation(this._setTimeout.bind(this));\n    test.step = this._step.bind(this, 'pass');\n    test.step.skip = this._step.bind(this, 'skip');\n    test.use = wrapFunctionWithLocation(this._use.bind(this));\n    test.extend = wrapFunctionWithLocation(this._extend.bind(this));\n    test.info = () => {\n      const result = currentTestInfo();\n      if (!result)\n        throw new Error('test.info() can only be called while test is running');\n      return result;\n    };\n    this.test = test;\n  }\n\n  private _currentSuite(location: Location, title: string): Suite | undefined {\n    const suite = currentlyLoadingFileSuite();\n    if (!suite) {\n      throw new Error([\n        `Playwright Test did not expect ${title} to be called here.`,\n        `Most common reasons include:`,\n        `- You are calling ${title} in a configuration file.`,\n        `- You are calling ${title} in a file that is imported by the configuration file.`,\n        `- You have two different versions of @playwright/test. This usually happens`,\n        `  when one of the dependencies in your package.json depends on @playwright/test.`,\n      ].join('\\n'));\n    }\n    return suite;\n  }\n\n  private _createTest(type: 'default' | 'only' | 'skip' | 'fixme' | 'fail' | 'fail.only', location: Location, title: string, fnOrDetails: Function | TestDetails, fn?: Function) {\n    throwIfRunningInsideJest();\n    const suite = this._currentSuite(location, 'test()');\n    if (!suite)\n      return;\n\n    let details: TestDetails;\n    let body: Function;\n    if (typeof fnOrDetails === 'function') {\n      body = fnOrDetails;\n      details = {};\n    } else {\n      body = fn!;\n      details = fnOrDetails;\n    }\n\n    const validatedDetails = validateTestDetails(details);\n    const test = new TestCase(title, body, this, location);\n    test._requireFile = suite._requireFile;\n    test.annotations.push(...validatedDetails.annotations);\n    test._tags.push(...validatedDetails.tags);\n    suite._addTest(test);\n\n    if (type === 'only' || type === 'fail.only')\n      test._only = true;\n    if (type === 'skip' || type === 'fixme' || type === 'fail')\n      test.annotations.push({ type });\n    else if (type === 'fail.only')\n      test.annotations.push({ type: 'fail' });\n  }\n\n  private _describe(type: 'default' | 'only' | 'serial' | 'serial.only' | 'parallel' | 'parallel.only' | 'skip' | 'fixme', location: Location, titleOrFn: string | Function, fnOrDetails?: TestDetails | Function, fn?: Function) {\n    throwIfRunningInsideJest();\n    const suite = this._currentSuite(location, 'test.describe()');\n    if (!suite)\n      return;\n\n    let title: string;\n    let body: Function;\n    let details: TestDetails;\n\n    if (typeof titleOrFn === 'function') {\n      title = '';\n      details = {};\n      body = titleOrFn;\n    } else if (typeof fnOrDetails === 'function') {\n      title = titleOrFn;\n      details = {};\n      body = fnOrDetails;\n    } else {\n      title = titleOrFn;\n      details = fnOrDetails!;\n      body = fn!;\n    }\n\n    const validatedDetails = validateTestDetails(details);\n    const child = new Suite(title, 'describe');\n    child._requireFile = suite._requireFile;\n    child.location = location;\n    child._staticAnnotations.push(...validatedDetails.annotations);\n    child._tags.push(...validatedDetails.tags);\n    suite._addSuite(child);\n\n    if (type === 'only' || type === 'serial.only' || type === 'parallel.only')\n      child._only = true;\n    if (type === 'serial' || type === 'serial.only')\n      child._parallelMode = 'serial';\n    if (type === 'parallel' || type === 'parallel.only')\n      child._parallelMode = 'parallel';\n    if (type === 'skip' || type === 'fixme')\n      child._staticAnnotations.push({ type });\n\n    for (let parent: Suite | undefined = suite; parent; parent = parent.parent) {\n      if (parent._parallelMode === 'serial' && child._parallelMode === 'parallel')\n        throw new Error('describe.parallel cannot be nested inside describe.serial');\n      if (parent._parallelMode === 'default' && child._parallelMode === 'parallel')\n        throw new Error('describe.parallel cannot be nested inside describe with default mode');\n    }\n\n    setCurrentlyLoadingFileSuite(child);\n    body();\n    setCurrentlyLoadingFileSuite(suite);\n  }\n\n  private _hook(name: 'beforeEach' | 'afterEach' | 'beforeAll' | 'afterAll', location: Location, title: string | Function, fn?: Function) {\n    const suite = this._currentSuite(location, `test.${name}()`);\n    if (!suite)\n      return;\n    if (typeof title === 'function') {\n      fn = title;\n      title = `${name} hook`;\n    }\n\n    suite._hooks.push({ type: name, fn: fn!, title, location });\n  }\n\n  private _configure(location: Location, options: { mode?: 'default' | 'parallel' | 'serial', retries?: number, timeout?: number }) {\n    throwIfRunningInsideJest();\n    const suite = this._currentSuite(location, `test.describe.configure()`);\n    if (!suite)\n      return;\n\n    if (options.timeout !== undefined)\n      suite._timeout = options.timeout;\n\n    if (options.retries !== undefined)\n      suite._retries = options.retries;\n\n    if (options.mode !== undefined) {\n      if (suite._parallelMode !== 'none')\n        throw new Error(`\"${suite._parallelMode}\" mode is already assigned for the enclosing scope.`);\n      suite._parallelMode = options.mode;\n      for (let parent: Suite | undefined = suite.parent; parent; parent = parent.parent) {\n        if (parent._parallelMode === 'serial' && suite._parallelMode === 'parallel')\n          throw new Error('describe with parallel mode cannot be nested inside describe with serial mode');\n        if (parent._parallelMode === 'default' && suite._parallelMode === 'parallel')\n          throw new Error('describe with parallel mode cannot be nested inside describe with default mode');\n      }\n    }\n  }\n\n  private _modifier(type: 'skip' | 'fail' | 'fixme' | 'slow', location: Location, ...modifierArgs: any[]) {\n    const suite = currentlyLoadingFileSuite();\n    if (suite) {\n      if (typeof modifierArgs[0] === 'string' && typeof modifierArgs[1] === 'function' && (type === 'skip' || type === 'fixme' || type === 'fail')) {\n        // Support for test.{skip,fixme,fail}(title, body)\n        this._createTest(type, location, modifierArgs[0], modifierArgs[1]);\n        return;\n      }\n      if (typeof modifierArgs[0] === 'string' && typeof modifierArgs[1] === 'object' && typeof modifierArgs[2] === 'function' && (type === 'skip' || type === 'fixme' || type === 'fail')) {\n        // Support for test.{skip,fixme,fail}(title, details, body)\n        this._createTest(type, location, modifierArgs[0], modifierArgs[1], modifierArgs[2]);\n        return;\n      }\n\n      if (typeof modifierArgs[0] === 'function') {\n        suite._modifiers.push({ type, fn: modifierArgs[0], location, description: modifierArgs[1] });\n      } else {\n        if (modifierArgs.length >= 1 && !modifierArgs[0])\n          return;\n        const description = modifierArgs[1];\n        suite._staticAnnotations.push({ type, description });\n      }\n      return;\n    }\n\n    const testInfo = currentTestInfo();\n    if (!testInfo)\n      throw new Error(`test.${type}() can only be called inside test, describe block or fixture`);\n    if (typeof modifierArgs[0] === 'function')\n      throw new Error(`test.${type}() with a function can only be called inside describe block`);\n    testInfo[type](...modifierArgs as [any, any]);\n  }\n\n  private _setTimeout(location: Location, timeout: number) {\n    const suite = currentlyLoadingFileSuite();\n    if (suite) {\n      suite._timeout = timeout;\n      return;\n    }\n\n    const testInfo = currentTestInfo();\n    if (!testInfo)\n      throw new Error(`test.setTimeout() can only be called from a test`);\n    testInfo.setTimeout(timeout);\n  }\n\n  private _use(location: Location, fixtures: Fixtures) {\n    const suite = this._currentSuite(location, `test.use()`);\n    if (!suite)\n      return;\n    suite._use.push({ fixtures, location });\n  }\n\n  async _step<T>(expectation: 'pass'|'skip', title: string, body: (step: TestStepInfo) => T | Promise<T>, options: {box?: boolean, location?: Location, timeout?: number } = {}): Promise<T> {\n    const testInfo = currentTestInfo();\n    if (!testInfo)\n      throw new Error(`test.step() can only be called from a test`);\n    const step = testInfo._addStep({ category: 'test.step', title, location: options.location, box: options.box });\n    return await currentZone().with('stepZone', step).run(async () => {\n      try {\n        let result: Awaited<ReturnType<typeof raceAgainstDeadline<T>>> | undefined = undefined;\n        result = await raceAgainstDeadline(async () => {\n          try {\n            return await step.info._runStepBody(expectation === 'skip', body);\n          } catch (e) {\n            // If the step timed out, the test fixtures will tear down, which in turn\n            // will abort unfinished actions in the step body. Record such errors here.\n            if (result?.timedOut)\n              testInfo._failWithError(e);\n            throw e;\n          }\n        }, options.timeout ? monotonicTime() + options.timeout : 0);\n        if (result.timedOut)\n          throw new errors.TimeoutError(`Step timeout of ${options.timeout}ms exceeded.`);\n        step.complete({});\n        return result.result;\n      } catch (error) {\n        step.complete({ error });\n        throw error;\n      }\n    });\n  }\n\n  private _extend(location: Location, fixtures: Fixtures) {\n    if ((fixtures as any)[testTypeSymbol])\n      throw new Error(`test.extend() accepts fixtures object, not a test object.\\nDid you mean to call mergeTests()?`);\n    const fixturesWithLocation: FixturesWithLocation = { fixtures, location };\n    return new TestTypeImpl([...this.fixtures, fixturesWithLocation]).test;\n  }\n}\n\nfunction throwIfRunningInsideJest() {\n  if (process.env.JEST_WORKER_ID) {\n    const packageManagerCommand = getPackageManagerExecCommand();\n    throw new Error(\n        `Playwright Test needs to be invoked via '${packageManagerCommand} playwright test' and excluded from Jest test runs.\\n` +\n        `Creating one directory for Playwright tests and one for Jest is the recommended way of doing it.\\n` +\n        `See https://playwright.dev/docs/intro for more information about Playwright Test.`,\n    );\n  }\n}\n\nfunction validateTestDetails(details: TestDetails) {\n  const annotations = Array.isArray(details.annotation) ? details.annotation : (details.annotation ? [details.annotation] : []);\n  const tags = Array.isArray(details.tag) ? details.tag : (details.tag ? [details.tag] : []);\n  for (const tag of tags) {\n    if (tag[0] !== '@')\n      throw new Error(`Tag must start with \"@\" symbol, got \"${tag}\" instead.`);\n  }\n  return { annotations, tags };\n}\n\nexport const rootTestType = new TestTypeImpl([]);\n\nexport function mergeTests(...tests: TestType<any, any>[]) {\n  let result = rootTestType;\n  for (const t of tests) {\n    const testTypeImpl = (t as any)[testTypeSymbol] as TestTypeImpl;\n    if (!testTypeImpl)\n      throw new Error(`mergeTests() accepts \"test\" functions as parameters.\\nDid you mean to call test.extend() with fixtures instead?`);\n    // Filter out common ancestor fixtures.\n    const newFixtures = testTypeImpl.fixtures.filter(theirs => !result.fixtures.find(ours => ours.fixtures === theirs.fixtures));\n    result = new TestTypeImpl([...result.fixtures, ...newFixtures]);\n  }\n  return result.test;\n}\n","/**\n * Copyright (c) Microsoft Corporation.\n *\n * Licensed under the Apache License, Version 2.0 (the 'License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport fs from 'fs';\nimport path from 'path';\n\nimport * as playwrightLibrary from 'playwright-core';\nimport { setBoxedStackPrefixes, createGuid, currentZone, debugMode, jsonStringifyForceASCII, asLocatorDescription, renderTitleForCall } from 'playwright-core/lib/utils';\n\nimport { currentTestInfo } from './common/globals';\nimport { rootTestType } from './common/testType';\nimport { stepTitle } from './util';\n\nimport type { Fixtures, PlaywrightTestArgs, PlaywrightTestOptions, PlaywrightWorkerArgs, PlaywrightWorkerOptions, ScreenshotMode, TestInfo, TestType, VideoMode } from '../types/test';\nimport type { ContextReuseMode } from './common/config';\nimport type { TestInfoImpl, TestStepInternal } from './worker/testInfo';\nimport type { ClientInstrumentation, ClientInstrumentationListener } from '../../playwright-core/src/client/clientInstrumentation';\nimport type { Playwright as PlaywrightImpl } from '../../playwright-core/src/client/playwright';\nimport type { APIRequestContext, Browser, BrowserContext, BrowserContextOptions, LaunchOptions, Page, Tracing, Video } from 'playwright-core';\n\nexport { expect } from './matchers/expect';\nexport const _baseTest: TestType<{}, {}> = rootTestType.test;\n\nsetBoxedStackPrefixes([path.dirname(require.resolve('../package.json'))]);\n\nif ((process as any)['__pw_initiator__']) {\n  const originalStackTraceLimit = Error.stackTraceLimit;\n  Error.stackTraceLimit = 200;\n  try {\n    throw new Error('Requiring @playwright/test second time, \\nFirst:\\n' + (process as any)['__pw_initiator__'] + '\\n\\nSecond: ');\n  } finally {\n    Error.stackTraceLimit = originalStackTraceLimit;\n  }\n} else {\n  (process as any)['__pw_initiator__'] = new Error().stack;\n}\n\ntype TestFixtures = PlaywrightTestArgs & PlaywrightTestOptions & {\n  _combinedContextOptions: BrowserContextOptions,\n  _setupContextOptions: void;\n  _setupArtifacts: void;\n  _contextFactory: (options?: BrowserContextOptions) => Promise<BrowserContext>;\n};\n\ntype WorkerFixtures = PlaywrightWorkerArgs & PlaywrightWorkerOptions & {\n  playwright: PlaywrightImpl;\n  _browserOptions: LaunchOptions;\n  _optionContextReuseMode: ContextReuseMode,\n  _optionConnectOptions: PlaywrightWorkerOptions['connectOptions'],\n  _reuseContext: boolean,\n};\n\nconst playwrightFixtures: Fixtures<TestFixtures, WorkerFixtures> = ({\n  defaultBrowserType: ['chromium', { scope: 'worker', option: true }],\n  browserName: [({ defaultBrowserType }, use) => use(defaultBrowserType), { scope: 'worker', option: true }],\n  playwright: [async ({}, use) => {\n    await use(require('playwright-core'));\n  }, { scope: 'worker', box: true }],\n  headless: [({ launchOptions }, use) => use(launchOptions.headless ?? true), { scope: 'worker', option: true }],\n  channel: [({ launchOptions }, use) => use(launchOptions.channel), { scope: 'worker', option: true }],\n  launchOptions: [{}, { scope: 'worker', option: true }],\n  connectOptions: [async ({ _optionConnectOptions }, use) => {\n    await use(connectOptionsFromEnv() || _optionConnectOptions);\n  }, { scope: 'worker', option: true }],\n  screenshot: ['off', { scope: 'worker', option: true }],\n  video: ['off', { scope: 'worker', option: true }],\n  trace: ['off', { scope: 'worker', option: true }],\n\n  _browserOptions: [async ({ playwright, headless, channel, launchOptions }, use) => {\n    const options: LaunchOptions = {\n      handleSIGINT: false,\n      ...launchOptions,\n      tracesDir: tracing().tracesDir(),\n    };\n    if (headless !== undefined)\n      options.headless = headless;\n    if (channel !== undefined)\n      options.channel = channel;\n\n    playwright._defaultLaunchOptions = options;\n    await use(options);\n    playwright._defaultLaunchOptions = undefined;\n  }, { scope: 'worker', auto: true, box: true }],\n\n  browser: [async ({ playwright, browserName, _browserOptions, connectOptions }, use, testInfo) => {\n    if (!['chromium', 'firefox', 'webkit', '_bidiChromium', '_bidiFirefox'].includes(browserName))\n      throw new Error(`Unexpected browserName \"${browserName}\", must be one of \"chromium\", \"firefox\" or \"webkit\"`);\n\n    if (connectOptions) {\n      const browser = await playwright[browserName].connect({\n        ...connectOptions,\n        exposeNetwork: connectOptions.exposeNetwork ?? (connectOptions as any)._exposeNetwork,\n        headers: {\n          // HTTP headers are ASCII only (not UTF-8).\n          'x-playwright-launch-options': jsonStringifyForceASCII(_browserOptions),\n          ...connectOptions.headers,\n        },\n      });\n      await use(browser);\n      await (browser as any)._wrapApiCall(async () => {\n        await browser.close({ reason: 'Test ended.' });\n      }, { internal: true });\n      return;\n    }\n\n    const browser = await playwright[browserName].launch();\n    await use(browser);\n    await (browser as any)._wrapApiCall(async () => {\n      await browser.close({ reason: 'Test ended.' });\n    }, { internal: true });\n  }, { scope: 'worker', timeout: 0 }],\n\n  acceptDownloads: [({ contextOptions }, use) => use(contextOptions.acceptDownloads ?? true), { option: true }],\n  bypassCSP: [({ contextOptions }, use) => use(contextOptions.bypassCSP ?? false), { option: true }],\n  colorScheme: [({ contextOptions }, use) => use(contextOptions.colorScheme === undefined ? 'light' : contextOptions.colorScheme), { option: true }],\n  deviceScaleFactor: [({ contextOptions }, use) => use(contextOptions.deviceScaleFactor), { option: true }],\n  extraHTTPHeaders: [({ contextOptions }, use) => use(contextOptions.extraHTTPHeaders), { option: true }],\n  geolocation: [({ contextOptions }, use) => use(contextOptions.geolocation), { option: true }],\n  hasTouch: [({ contextOptions }, use) => use(contextOptions.hasTouch ?? false), { option: true }],\n  httpCredentials: [({ contextOptions }, use) => use(contextOptions.httpCredentials), { option: true }],\n  ignoreHTTPSErrors: [({ contextOptions }, use) => use(contextOptions.ignoreHTTPSErrors ?? false), { option: true }],\n  isMobile: [({ contextOptions }, use) => use(contextOptions.isMobile ?? false), { option: true }],\n  javaScriptEnabled: [({ contextOptions }, use) => use(contextOptions.javaScriptEnabled ?? true), { option: true }],\n  locale: [({ contextOptions }, use) => use(contextOptions.locale ?? 'en-US'), { option: true }],\n  offline: [({ contextOptions }, use) => use(contextOptions.offline ?? false), { option: true }],\n  permissions: [({ contextOptions }, use) => use(contextOptions.permissions), { option: true }],\n  proxy: [({ contextOptions }, use) => use(contextOptions.proxy), { option: true }],\n  storageState: [({ contextOptions }, use) => use(contextOptions.storageState), { option: true }],\n  clientCertificates: [({ contextOptions }, use) => use(contextOptions.clientCertificates), { option: true }],\n  timezoneId: [({ contextOptions }, use) => use(contextOptions.timezoneId), { option: true }],\n  userAgent: [({ contextOptions }, use) => use(contextOptions.userAgent), { option: true }],\n  viewport: [({ contextOptions }, use) => use(contextOptions.viewport === undefined ? { width: 1280, height: 720 } : contextOptions.viewport), { option: true }],\n  actionTimeout: [0, { option: true }],\n  testIdAttribute: ['data-testid', { option: true }],\n  navigationTimeout: [0, { option: true }],\n  baseURL: [async ({ }, use) => {\n    await use(process.env.PLAYWRIGHT_TEST_BASE_URL);\n  }, { option: true }],\n  serviceWorkers: [({ contextOptions }, use) => use(contextOptions.serviceWorkers ?? 'allow'), { option: true }],\n  contextOptions: [{}, { option: true }],\n\n  _combinedContextOptions: [async ({\n    acceptDownloads,\n    bypassCSP,\n    clientCertificates,\n    colorScheme,\n    deviceScaleFactor,\n    extraHTTPHeaders,\n    hasTouch,\n    geolocation,\n    httpCredentials,\n    ignoreHTTPSErrors,\n    isMobile,\n    javaScriptEnabled,\n    locale,\n    offline,\n    permissions,\n    proxy,\n    storageState,\n    viewport,\n    timezoneId,\n    userAgent,\n    baseURL,\n    contextOptions,\n    serviceWorkers,\n  }, use) => {\n    const options: BrowserContextOptions = {};\n    if (acceptDownloads !== undefined)\n      options.acceptDownloads = acceptDownloads;\n    if (bypassCSP !== undefined)\n      options.bypassCSP = bypassCSP;\n    if (colorScheme !== undefined)\n      options.colorScheme = colorScheme;\n    if (deviceScaleFactor !== undefined)\n      options.deviceScaleFactor = deviceScaleFactor;\n    if (extraHTTPHeaders !== undefined)\n      options.extraHTTPHeaders = extraHTTPHeaders;\n    if (geolocation !== undefined)\n      options.geolocation = geolocation;\n    if (hasTouch !== undefined)\n      options.hasTouch = hasTouch;\n    if (httpCredentials !== undefined)\n      options.httpCredentials = httpCredentials;\n    if (ignoreHTTPSErrors !== undefined)\n      options.ignoreHTTPSErrors = ignoreHTTPSErrors;\n    if (isMobile !== undefined)\n      options.isMobile = isMobile;\n    if (javaScriptEnabled !== undefined)\n      options.javaScriptEnabled = javaScriptEnabled;\n    if (locale !== undefined)\n      options.locale = locale;\n    if (offline !== undefined)\n      options.offline = offline;\n    if (permissions !== undefined)\n      options.permissions = permissions;\n    if (proxy !== undefined)\n      options.proxy = proxy;\n    if (storageState !== undefined)\n      options.storageState = storageState;\n    if (clientCertificates?.length)\n      options.clientCertificates = resolveClientCerticates(clientCertificates);\n    if (timezoneId !== undefined)\n      options.timezoneId = timezoneId;\n    if (userAgent !== undefined)\n      options.userAgent = userAgent;\n    if (viewport !== undefined)\n      options.viewport = viewport;\n    if (baseURL !== undefined)\n      options.baseURL = baseURL;\n    if (serviceWorkers !== undefined)\n      options.serviceWorkers = serviceWorkers;\n    await use({\n      ...contextOptions,\n      ...options,\n    });\n  }, { box: true }],\n\n  _setupContextOptions: [async ({ playwright, _combinedContextOptions, actionTimeout, navigationTimeout, testIdAttribute }, use, testInfo) => {\n    if (testIdAttribute)\n      playwrightLibrary.selectors.setTestIdAttribute(testIdAttribute);\n    testInfo.snapshotSuffix = process.platform;\n    if (debugMode())\n      (testInfo as TestInfoImpl)._setDebugMode();\n\n    playwright._defaultContextOptions = _combinedContextOptions;\n    playwright._defaultContextTimeout = actionTimeout || 0;\n    playwright._defaultContextNavigationTimeout = navigationTimeout || 0;\n    await use();\n    playwright._defaultContextOptions = undefined;\n    playwright._defaultContextTimeout = undefined;\n    playwright._defaultContextNavigationTimeout = undefined;\n  }, { auto: 'all-hooks-included',  title: 'context configuration', box: true } as any],\n\n  _setupArtifacts: [async ({ playwright, screenshot }, use, testInfo) => {\n    // This fixture has a separate zero-timeout slot to ensure that artifact collection\n    // happens even after some fixtures or hooks time out.\n    // Now that default test timeout is known, we can replace zero with an actual value.\n    testInfo.setTimeout(testInfo.project.timeout);\n\n    const artifactsRecorder = new ArtifactsRecorder(playwright, tracing().artifactsDir(), screenshot);\n    await artifactsRecorder.willStartTest(testInfo as TestInfoImpl);\n\n    const tracingGroupSteps: TestStepInternal[] = [];\n    const csiListener: ClientInstrumentationListener = {\n      onApiCallBegin: (data, channel) => {\n        const testInfo = currentTestInfo();\n        // Some special calls do not get into steps.\n        if (!testInfo || data.apiName.includes('setTestIdAttribute') || data.apiName === 'tracing.groupEnd')\n          return;\n        const zone = currentZone().data<TestStepInternal>('stepZone');\n        if (zone && zone.category === 'expect') {\n          // Display the internal locator._expect call under the name of the enclosing expect call,\n          // and connect it to the existing expect step.\n          if (zone.apiName)\n            data.apiName = zone.apiName;\n          if (zone.title)\n            data.title = stepTitle(zone.category, zone.title);\n          data.stepId = zone.stepId;\n          return;\n        }\n\n        // In the general case, create a step for each api call and connect them through the stepId.\n        const step = testInfo._addStep({\n          location: data.frames[0],\n          category: 'pw:api',\n          title: renderTitle(channel.type, channel.method, channel.params, data.title),\n          apiName: data.apiName,\n          params: channel.params,\n        }, tracingGroupSteps[tracingGroupSteps.length - 1]);\n        data.userData = step;\n        data.stepId = step.stepId;\n        if (data.apiName === 'tracing.group')\n          tracingGroupSteps.push(step);\n      },\n      onApiCallEnd: data => {\n        // \"tracing.group\" step will end later, when \"tracing.groupEnd\" finishes.\n        if (data.apiName === 'tracing.group')\n          return;\n        if (data.apiName === 'tracing.groupEnd') {\n          const step = tracingGroupSteps.pop();\n          step?.complete({ error: data.error });\n          return;\n        }\n        const step = data.userData;\n        step?.complete({ error: data.error });\n      },\n      onWillPause: ({ keepTestTimeout }) => {\n        if (!keepTestTimeout)\n          currentTestInfo()?._setDebugMode();\n      },\n      runAfterCreateBrowserContext: async (context: BrowserContext) => {\n        await artifactsRecorder?.didCreateBrowserContext(context);\n        const testInfo = currentTestInfo();\n        if (testInfo)\n          attachConnectedHeaderIfNeeded(testInfo, context.browser());\n      },\n      runAfterCreateRequestContext: async (context: APIRequestContext) => {\n        await artifactsRecorder?.didCreateRequestContext(context);\n      },\n      runBeforeCloseBrowserContext: async (context: BrowserContext) => {\n        await artifactsRecorder?.willCloseBrowserContext(context);\n      },\n      runBeforeCloseRequestContext: async (context: APIRequestContext) => {\n        await artifactsRecorder?.willCloseRequestContext(context);\n      },\n    };\n\n    const clientInstrumentation = (playwright as any)._instrumentation as ClientInstrumentation;\n    clientInstrumentation.addListener(csiListener);\n\n    await use();\n\n    clientInstrumentation.removeListener(csiListener);\n    await artifactsRecorder.didFinishTest();\n  }, { auto: 'all-hooks-included',  title: 'trace recording', box: true, timeout: 0 } as any],\n\n  _contextFactory: [async ({ browser, video, _reuseContext, _combinedContextOptions /** mitigate dep-via-auto lack of traceability */ }, use, testInfo) => {\n    const testInfoImpl = testInfo as TestInfoImpl;\n    const videoMode = normalizeVideoMode(video);\n    const captureVideo = shouldCaptureVideo(videoMode, testInfo) && !_reuseContext;\n    const contexts = new Map<BrowserContext, { pagesWithVideo: Page[] }>();\n\n    await use(async options => {\n      const hook = testInfoImpl._currentHookType();\n      if (hook === 'beforeAll' || hook === 'afterAll') {\n        throw new Error([\n          `\"context\" and \"page\" fixtures are not supported in \"${hook}\" since they are created on a per-test basis.`,\n          `If you would like to reuse a single page between tests, create context manually with browser.newContext(). See https://aka.ms/playwright/reuse-page for details.`,\n          `If you would like to configure your page before each test, do that in beforeEach hook instead.`,\n        ].join('\\n'));\n      }\n      const videoOptions: BrowserContextOptions = captureVideo ? {\n        recordVideo: {\n          dir: tracing().artifactsDir(),\n          size: typeof video === 'string' ? undefined : video.size,\n        }\n      } : {};\n      const context = await browser.newContext({ ...videoOptions, ...options });\n      const contextData: { pagesWithVideo: Page[] } = { pagesWithVideo: [] };\n      contexts.set(context, contextData);\n      if (captureVideo)\n        context.on('page', page => contextData.pagesWithVideo.push(page));\n\n      if (process.env.PW_CLOCK === 'frozen') {\n        await (context as any)._wrapApiCall(async () => {\n          await context.clock.install({ time: 0 });\n          await context.clock.pauseAt(1000);\n        }, { internal: true });\n      } else if (process.env.PW_CLOCK === 'realtime') {\n        await (context as any)._wrapApiCall(async () => {\n          await context.clock.install({ time: 0 });\n        }, { internal: true });\n      }\n\n      return context;\n    });\n\n    let counter = 0;\n    const closeReason = testInfo.status === 'timedOut' ? 'Test timeout of ' + testInfo.timeout + 'ms exceeded.' : 'Test ended.';\n    await Promise.all([...contexts.keys()].map(async context => {\n      await (context as any)._wrapApiCall(async () => {\n        await context.close({ reason: closeReason });\n      }, { internal: true });\n      const testFailed = testInfo.status !== testInfo.expectedStatus;\n      const preserveVideo = captureVideo && (videoMode === 'on' || (testFailed && videoMode === 'retain-on-failure') || (videoMode === 'on-first-retry' && testInfo.retry === 1));\n      if (preserveVideo) {\n        const { pagesWithVideo: pagesForVideo } = contexts.get(context)!;\n        const videos = pagesForVideo.map(p => p.video()).filter(Boolean) as Video[];\n        await Promise.all(videos.map(async v => {\n          try {\n            const savedPath = testInfo.outputPath(`video${counter ? '-' + counter : ''}.webm`);\n            ++counter;\n            await v.saveAs(savedPath);\n            testInfo.attachments.push({ name: 'video', path: savedPath, contentType: 'video/webm' });\n          } catch (e) {\n            // Silent catch empty videos.\n          }\n        }));\n      }\n    }));\n\n  }, { scope: 'test',  title: 'context', box: true }],\n\n  _optionContextReuseMode: ['none', { scope: 'worker', option: true }],\n  _optionConnectOptions: [undefined, { scope: 'worker', option: true }],\n\n  _reuseContext: [async ({ video, _optionContextReuseMode }, use) => {\n    let mode = _optionContextReuseMode;\n    if (process.env.PW_TEST_REUSE_CONTEXT)\n      mode = 'when-possible';\n    const reuse = mode === 'when-possible' && normalizeVideoMode(video) === 'off';\n    await use(reuse);\n  }, { scope: 'worker',  title: 'context', box: true }],\n\n  context: async ({ playwright, browser, _reuseContext, _contextFactory }, use, testInfo) => {\n    attachConnectedHeaderIfNeeded(testInfo, browser);\n    if (!_reuseContext) {\n      await use(await _contextFactory());\n      return;\n    }\n\n    const defaultContextOptions = (playwright.chromium as any)._defaultContextOptions as BrowserContextOptions;\n    const context = await (browser as any)._newContextForReuse(defaultContextOptions);\n    (context as any)[kIsReusedContext] = true;\n    await use(context);\n    const closeReason = testInfo.status === 'timedOut' ? 'Test timeout of ' + testInfo.timeout + 'ms exceeded.' : 'Test ended.';\n    await (browser as any)._stopPendingOperations(closeReason);\n  },\n\n  page: async ({ context, _reuseContext }, use) => {\n    if (!_reuseContext) {\n      await use(await context.newPage());\n      return;\n    }\n\n    // First time we are reusing the context, we should create the page.\n    let [page] = context.pages();\n    if (!page)\n      page = await context.newPage();\n    await use(page);\n  },\n\n  request: async ({ playwright }, use) => {\n    const request = await playwright.request.newContext();\n    await use(request);\n    const hook = (test.info() as TestInfoImpl)._currentHookType();\n    if (hook === 'beforeAll') {\n      await request.dispose({ reason: [\n        `Fixture { request } from beforeAll cannot be reused in a test.`,\n        `  - Recommended fix: use a separate { request } in the test.`,\n        `  - Alternatively, manually create APIRequestContext in beforeAll and dispose it in afterAll.`,\n        `See https://playwright.dev/docs/api-testing#sending-api-requests-from-ui-tests for more details.`,\n      ].join('\\n') });\n    } else {\n      await request.dispose();\n    }\n  },\n});\n\ntype ScreenshotOption = PlaywrightWorkerOptions['screenshot'] | undefined;\n\nfunction normalizeVideoMode(video: VideoMode | 'retry-with-video' | { mode: VideoMode } | undefined): VideoMode {\n  if (!video)\n    return 'off';\n  let videoMode = typeof video === 'string' ? video : video.mode;\n  if (videoMode === 'retry-with-video')\n    videoMode = 'on-first-retry';\n  return videoMode;\n}\n\nfunction shouldCaptureVideo(videoMode: VideoMode, testInfo: TestInfo) {\n  return (videoMode === 'on' || videoMode === 'retain-on-failure' || (videoMode === 'on-first-retry' && testInfo.retry === 1));\n}\n\nfunction normalizeScreenshotMode(screenshot: ScreenshotOption): ScreenshotMode {\n  if (!screenshot)\n    return 'off';\n  return typeof screenshot === 'string' ? screenshot : screenshot.mode;\n}\n\nfunction attachConnectedHeaderIfNeeded(testInfo: TestInfo, browser: Browser | null) {\n  const connectHeaders: { name: string, value: string }[] | undefined = (browser as any)?._connection.headers;\n  if (!connectHeaders)\n    return;\n  for (const header of connectHeaders) {\n    if (header.name !== 'x-playwright-attachment')\n      continue;\n    const [name, value] = header.value.split('=');\n    if (!name || !value)\n      continue;\n    if (testInfo.attachments.some(attachment => attachment.name === name))\n      continue;\n    testInfo.attachments.push({ name, contentType: 'text/plain', body: Buffer.from(value) });\n  }\n}\n\nfunction resolveFileToConfig(file: string | undefined) {\n  const config = test.info().config.configFile;\n  if (!config || !file)\n    return file;\n  if (path.isAbsolute(file))\n    return file;\n  return path.resolve(path.dirname(config), file);\n}\n\ntype ClientCertificates = NonNullable<PlaywrightTestOptions['clientCertificates']>;\n\nfunction resolveClientCerticates(clientCertificates: ClientCertificates): ClientCertificates {\n  for (const cert of clientCertificates) {\n    cert.certPath = resolveFileToConfig(cert.certPath);\n    cert.keyPath = resolveFileToConfig(cert.keyPath);\n    cert.pfxPath = resolveFileToConfig(cert.pfxPath);\n  }\n  return clientCertificates;\n}\n\nconst kTracingStarted = Symbol('kTracingStarted');\nconst kIsReusedContext = Symbol('kReusedContext');\n\nfunction connectOptionsFromEnv() {\n  const wsEndpoint = process.env.PW_TEST_CONNECT_WS_ENDPOINT;\n  if (!wsEndpoint)\n    return undefined;\n  const headers = process.env.PW_TEST_CONNECT_HEADERS ? JSON.parse(process.env.PW_TEST_CONNECT_HEADERS) : undefined;\n  return {\n    wsEndpoint,\n    headers,\n    exposeNetwork: process.env.PW_TEST_CONNECT_EXPOSE_NETWORK,\n  };\n}\n\ntype SnapshotRecorderMode = 'on' | 'off' | 'only-on-failure' | 'on-first-failure';\n\nclass SnapshotRecorder {\n  private _ordinal = 0;\n  private _temporary: string[] = [];\n\n  constructor(\n    private _artifactsRecorder: ArtifactsRecorder,\n    private _mode: SnapshotRecorderMode,\n    private _name: string,\n    private _contentType: string,\n    private _extension: string,\n    private _doSnapshot: (page: Page, path: string) => Promise<void>) {\n  }\n\n  fixOrdinal() {\n    // Since beforeAll(s), test and afterAll(s) reuse the same TestInfo, make sure we do not\n    // overwrite previous screenshots.\n    this._ordinal = this.testInfo.attachments.filter(a => a.name === this._name).length;\n  }\n\n  private shouldCaptureUponFinish() {\n    return this._mode === 'on' ||\n        (this._mode === 'only-on-failure' && this.testInfo._isFailure()) ||\n        (this._mode === 'on-first-failure' && this.testInfo._isFailure() && this.testInfo.retry === 0);\n  }\n\n  async maybeCapture() {\n    if (!this.shouldCaptureUponFinish())\n      return;\n\n    await Promise.all(this._artifactsRecorder._playwright._allPages().map(page => this._snapshotPage(page, false)));\n  }\n\n  async persistTemporary() {\n    if (this.shouldCaptureUponFinish()) {\n      await Promise.all(this._temporary.map(async file => {\n        try {\n          const path = this._createAttachmentPath();\n          await fs.promises.rename(file, path);\n          this._attach(path);\n        } catch {\n        }\n      }));\n    }\n  }\n\n  async captureTemporary(context: BrowserContext) {\n    if (this._mode === 'on' || this._mode === 'only-on-failure' || (this._mode === 'on-first-failure' && this.testInfo.retry === 0))\n      await Promise.all(context.pages().map(page => this._snapshotPage(page, true)));\n  }\n\n  private _attach(screenshotPath: string) {\n    this.testInfo.attachments.push({ name: this._name, path: screenshotPath, contentType: this._contentType });\n  }\n\n  private _createAttachmentPath() {\n    const testFailed = this.testInfo._isFailure();\n    const index = this._ordinal + 1;\n    ++this._ordinal;\n    const path = this.testInfo.outputPath(`test-${testFailed ? 'failed' : 'finished'}-${index}${this._extension}`);\n    return path;\n  }\n\n  private _createTemporaryArtifact(...name: string[]) {\n    const file = path.join(this._artifactsRecorder._artifactsDir, ...name);\n    return file;\n  }\n\n  private async _snapshotPage(page: Page, temporary: boolean) {\n    // Make sure we do not snapshot the same page twice for a single TestInfo,\n    // which is reused between beforeAll(s), test and afterAll(s).\n    if ((page as any)[this.testInfo._uniqueSymbol])\n      return;\n    (page as any)[this.testInfo._uniqueSymbol] = true;\n    try {\n      const path = temporary ? this._createTemporaryArtifact(createGuid() + this._extension) : this._createAttachmentPath();\n      await this._doSnapshot(page, path);\n      if (temporary)\n        this._temporary.push(path);\n      else\n        this._attach(path);\n    } catch {\n      // snapshot may fail, just ignore.\n    }\n  }\n\n  private get testInfo(): TestInfoImpl {\n    return this._artifactsRecorder._testInfo;\n  }\n}\n\nclass ArtifactsRecorder {\n  _testInfo!: TestInfoImpl;\n  _playwright: PlaywrightImpl;\n  _artifactsDir: string;\n  private _reusedContexts = new Set<BrowserContext>();\n  private _startedCollectingArtifacts: symbol;\n\n  private _screenshotRecorder: SnapshotRecorder;\n  private _pageSnapshot: string | undefined;\n  private _sourceCache: Map<string, string> = new Map();\n\n  constructor(playwright: PlaywrightImpl, artifactsDir: string, screenshot: ScreenshotOption) {\n    this._playwright = playwright;\n    this._artifactsDir = artifactsDir;\n    const screenshotOptions = typeof screenshot === 'string' ? undefined : screenshot;\n    this._startedCollectingArtifacts = Symbol('startedCollectingArtifacts');\n\n    this._screenshotRecorder = new SnapshotRecorder(this, normalizeScreenshotMode(screenshot), 'screenshot', 'image/png', '.png', async (page, path) => {\n      await page.screenshot({ ...screenshotOptions, timeout: 5000, path, caret: 'initial' });\n    });\n  }\n\n  async willStartTest(testInfo: TestInfoImpl) {\n    this._testInfo = testInfo;\n    testInfo._onDidFinishTestFunction = () => this.didFinishTestFunction();\n\n    this._screenshotRecorder.fixOrdinal();\n\n    // Process existing contexts.\n    await Promise.all(this._playwright._allContexts().map(async context => {\n      if ((context as any)[kIsReusedContext])\n        this._reusedContexts.add(context);\n      else\n        await this.didCreateBrowserContext(context);\n    }));\n    {\n      const existingApiRequests: APIRequestContext[] =  Array.from((this._playwright.request as any)._contexts as Set<APIRequestContext>);\n      await Promise.all(existingApiRequests.map(c => this.didCreateRequestContext(c)));\n    }\n  }\n\n  async didCreateBrowserContext(context: BrowserContext) {\n    await this._startTraceChunkOnContextCreation(context.tracing);\n  }\n\n  async willCloseBrowserContext(context: BrowserContext) {\n    // When reusing context, we get all previous contexts closed at the start of next test.\n    // Do not record empty traces and useless screenshots for them.\n    if (this._reusedContexts.has(context))\n      return;\n    await this._stopTracing(context.tracing);\n\n    await this._screenshotRecorder.captureTemporary(context);\n    await this._takePageSnapshot(context);\n  }\n\n  private async _takePageSnapshot(context: BrowserContext) {\n    if (process.env.PLAYWRIGHT_NO_COPY_PROMPT)\n      return;\n    if (this._testInfo.errors.length === 0)\n      return;\n    if (this._pageSnapshot)\n      return;\n    const page = context.pages()[0];\n\n    try {\n      // TODO: maybe capture snapshot when the error is created, so it's from the right page and right time\n      this._pageSnapshot = await page?.locator('body').ariaSnapshot({ timeout: 5000 });\n    } catch {}\n  }\n\n  async didCreateRequestContext(context: APIRequestContext) {\n    const tracing = (context as any)._tracing as Tracing;\n    await this._startTraceChunkOnContextCreation(tracing);\n  }\n\n  async willCloseRequestContext(context: APIRequestContext) {\n    const tracing = (context as any)._tracing as Tracing;\n    await this._stopTracing(tracing);\n  }\n\n  async didFinishTestFunction() {\n    await this._screenshotRecorder.maybeCapture();\n  }\n\n  async didFinishTest() {\n    await this.didFinishTestFunction();\n\n    const leftoverContexts = this._playwright._allContexts().filter(context => !this._reusedContexts.has(context));\n    const leftoverApiRequests: APIRequestContext[] =  Array.from((this._playwright.request as any)._contexts as Set<APIRequestContext>);\n\n    // Collect traces/screenshots for remaining contexts.\n    await Promise.all(leftoverContexts.map(async context => {\n      await this._stopTracing(context.tracing);\n    }).concat(leftoverApiRequests.map(async context => {\n      const tracing = (context as any)._tracing as Tracing;\n      await this._stopTracing(tracing);\n    })));\n\n    await this._screenshotRecorder.persistTemporary();\n\n    const context = leftoverContexts[0];\n    if (context)\n      await this._takePageSnapshot(context);\n\n    if (this._pageSnapshot && this._testInfo.errors.length > 0 && !this._testInfo.attachments.some(a => a.name === 'error-context')) {\n      const lines = [\n        '# Page snapshot',\n        '',\n        '```yaml',\n        this._pageSnapshot,\n        '```',\n      ];\n      const filePath = this._testInfo.outputPath('error-context.md');\n      await fs.promises.writeFile(filePath, lines.join('\\n'), 'utf8');\n\n      this._testInfo._attach({\n        name: 'error-context',\n        contentType: 'text/markdown',\n        path: filePath,\n      }, undefined);\n    }\n  }\n\n  private async _startTraceChunkOnContextCreation(tracing: Tracing) {\n    const options = this._testInfo._tracing.traceOptions();\n    if (options) {\n      const title = this._testInfo._tracing.traceTitle();\n      const name = this._testInfo._tracing.generateNextTraceRecordingName();\n      if (!(tracing as any)[kTracingStarted]) {\n        await tracing.start({ ...options, title, name });\n        (tracing as any)[kTracingStarted] = true;\n      } else {\n        await tracing.startChunk({ title, name });\n      }\n    } else {\n      if ((tracing as any)[kTracingStarted]) {\n        (tracing as any)[kTracingStarted] = false;\n        await tracing.stop();\n      }\n    }\n  }\n\n  private async _stopTracing(tracing: Tracing) {\n    if ((tracing as any)[this._startedCollectingArtifacts])\n      return;\n    (tracing as any)[this._startedCollectingArtifacts] = true;\n    if (this._testInfo._tracing.traceOptions() && (tracing as any)[kTracingStarted])\n      await tracing.stopChunk({ path: this._testInfo._tracing.maybeGenerateNextTraceRecordingPath() });\n  }\n}\n\nfunction renderTitle(type: string, method: string, params: Record<string, string> | undefined, title?: string) {\n  const prefix = renderTitleForCall({ title, type, method, params });\n  let selector;\n  if (params?.['selector'] && typeof params.selector === 'string')\n    selector = asLocatorDescription('javascript', params.selector);\n  return prefix + (selector ? ` ${selector}` : '');\n}\n\nfunction tracing() {\n  return (test.info() as TestInfoImpl)._tracing;\n}\n\nexport const test = _baseTest.extend<TestFixtures, WorkerFixtures>(playwrightFixtures);\n\nexport { defineConfig } from './common/configLoader';\nexport { mergeTests } from './common/testType';\nexport { mergeExpects } from './matchers/expect';\n"],"names":["test","path","state","line","file","error","util","types","base","debug","options","EXPECTED_LABEL","RECEIVED_LABEL","index","colorName","require$$0","key","conversions","c","keyword","value","ansi","string","node","route","conversion","require$$1","colorConvert","module","browser","unescape","number","escape","chalk","styles","templates","ansiStyles","require$$2","builder","require$$3","source","build","iterator","config","indentation","printer","list","AsymmetricMatcher","Symbol","plugin","escapeHTML_1","escapeHTML","colors","text","reactIsModule","nodeInterop","cache","item","require$$4","require$$5","require$$6","require$$7","stack","plugins","constants","foundSubsequence","isCommon","diffs","normalizeDiffOptions_1","normalizeDiffOptions","aIndex","bIndex","diffStrings_1","diffStrings","getAlignedDiffs_1","getAlignedDiffs","DOMCollection","DOMElement","Immutable","ReactElement","ReactTestComponent","Replaceable_1","Replaceable","deepCyclicCopyReplaceable_1","deepCyclicCopyReplaceable","newDescriptors","array","EXPECTED_COLOR","RECEIVED_COLOR","INVERTED_COLOR","stringify","printReceived","matcherHint","diff","printLabel","expectedLine","receivedLine","pluralize","hasKey","keys","utils","a","b","object","subset","clearLine_1","clearLine","createDirectory_1","createDirectory","fs","ErrorWithStack_1","ErrorWithStack","deepCyclicCopy_1","deepCyclicCopy","createProcessObject_1","createProcessObject","process","proto","installCommonGlobals_1","installCommonGlobals","globals","interopRequireDefault_1","interopRequireDefault","isPromise_1","isPromise","setGlobal_1","setGlobal","convertDescriptorToString_1","convertDescriptorToString","replacePathSepForGlob_1","replacePathSepForGlob","testPathPatternToRegExp_1","testPathPatternToRegExp","input","token","peek","syntaxError","parse","opts","push","rest","parse_1","picomatch","globsToMatcher_1","globsToMatcher","matchers","pluralize_1","formatTime_1","formatTime","tryRealpath_1","tryRealpath","requireOrImportModule_1","requireOrImportModule","require","invariant_1","invariant","isNonNullable_1","isNonNullable","preRunMessage","specialChars","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","expect","getType","matcherUtils","iterableEquality","subsetEquality","equals","getObjectKeys","isA","printSubstring","printReceivedStringContainExpectedSubstring","printReceivedStringContainExpectedResult","isExpand","typeEquality","sparseArrayEquality","arrayBufferEquality","printExpected","DIM_COLOR","printDiffOrStringify","matcherErrorMessage","printWithType","ensureNoExpected","ensureNumbers","isPrimitive","pass","message","getLabelPrinter","SUGGEST_TO_CONTAIN_EQUAL","ensureExpectedIsNonNegativeInteger","pathAsArray","getPath","getObjectSubset","countReturns","jsTokens","nonASCIIidentifierStartChars","nonASCIIidentifierChars","nonASCIIidentifierStart","RegExp","nonASCIIidentifier","astralIdentifierStartCodes","astralIdentifierCodes","isInAstralSet","code","set","pos","i","length","isIdentifierStart","String","fromCharCode","isIdentifierChar","isIdentifierName","name","isFirst","cp","charCodeAt","trail","reservedWords","strict","strictBind","keywords","Set","reservedWordsStrictSet","reservedWordsStrictBindSet","isReservedWord","word","inModule","isStrictReservedWord","has","isStrictBindOnlyReservedWord","isStrictBindReservedWord","isKeyword","_identifier","_keyword","picocolors_browserModule","escapeStringRegexp","conversionsModule","_jsTokens","_helperValidatorIdentifier","_picocolors","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","default","get","n","__proto__","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","env","FORCE_COLOR","createColors","_colors","compose","f","g","v","sometimesKeywords","getDefs","cyan","capitalized","yellow","jsxIdentifier","punctuator","magenta","green","regex","comment","gray","invalid","white","bgRed","bold","NEWLINE","BRACKET","tokenize","JSX_TAG","getTokenType","offset","type","slice","toLowerCase","match","exec","matchToToken","highlightTokens","defs","highlighted","colorize","split","map","str","join","shouldHighlight","isColorSupported","forceColor","pcWithForcedColor","undefined","getColors","_pcWithForcedColor","highlight","chalkWithForcedColor","exports","_chalk","_chalkWithForcedColor","constructor","enabled","level","_highlight","deprecationWarningShown","gutter","marker","red","getMarkerLines","loc","startLoc","assign","column","start","endLoc","end","linesAbove","linesBelow","startLine","startColumn","endLine","endColumn","Math","max","min","lineDiff","markerLines","lineNumber","sourceLength","codeFrameColumns","rawLines","highlightCode","maybeHighlight","fmt","lines","hasColumns","numberMaxWidth","highlightedLines","frame","paddedNumber","hasMarker","lastMarkerLine","markerLine","Array","isArray","markerSpacing","replace","numberOfMarkers","repeat","reset","_default","colNumber","emitWarning","deprecationError","Error","console","warn","location","isNumber","transform","obj","cwd","stackUtils","isError","placeholder","formatStackTrace","separateMessageFromStack","createThrowMatcher","matcherUtils.RECEIVED_COLOR","matcherUtils.matcherErrorMessage","matcherUtils.matcherHint","matcherUtils.printWithType","matcherUtils.printReceived","matcherUtils.stringify","matcherUtils.ensureNoExpected","toThrowMatchers","fn","expectLibrary","mu.stringify","url","err","payload","editable","context","qualifiedMatcherName","apiPolyfills","assertVersion","api","range","throwVersionError","version","targets","assumption","addExternalDependency","declare","dirname","_clonedApi2","clonedApi","_clonedApi","copyApiObject","getPrototypeOf","Number","isInteger","limit","stackTraceLimit","_helperPluginUtils","deprecatedAssertSyntax","manipulateOptions","parserOpts","generatorOpts","_generatorOpts$import","importAttributesKeyword","importAssertionsPluginIndex","indexOf","splice","legacy","decoratorsBeforeExport","allowCallParenthesized","shallowEqual","actual","expected","warnings","deprecationWarning","oldName","newName","prefix","add","internal","trace","captureShortStackTrace","skip","prepareStackTrace","stackTrace","shortStackTrace","getFileName","_shallowEqual","_deprecationWarning","isArrayExpression","isAssignmentExpression","isBinaryExpression","isInterpreterDirective","isDirective","isDirectiveLiteral","isBlockStatement","isBreakStatement","isCallExpression","isCatchClause","isConditionalExpression","isContinueStatement","isDebuggerStatement","isDoWhileStatement","isEmptyStatement","isExpressionStatement","isFile","isForInStatement","isForStatement","isFunctionDeclaration","isFunctionExpression","isIdentifier","isIfStatement","isLabeledStatement","isStringLiteral","isNumericLiteral","isNullLiteral","isBooleanLiteral","isRegExpLiteral","isLogicalExpression","isMemberExpression","isNewExpression","isProgram","isObjectExpression","isObjectMethod","isObjectProperty","isRestElement","isReturnStatement","isSequenceExpression","isParenthesizedExpression","isSwitchCase","isSwitchStatement","isThisExpression","isThrowStatement","isTryStatement","isUnaryExpression","isUpdateExpression","isVariableDeclaration","isVariableDeclarator","isWhileStatement","isWithStatement","isAssignmentPattern","isArrayPattern","isArrowFunctionExpression","isClassBody","isClassExpression","isClassDeclaration","isExportAllDeclaration","isExportDefaultDeclaration","isExportNamedDeclaration","isExportSpecifier","isForOfStatement","isImportDeclaration","isImportDefaultSpecifier","isImportNamespaceSpecifier","isImportSpecifier","isImportExpression","isMetaProperty","isClassMethod","isObjectPattern","isSpreadElement","isSuper","isTaggedTemplateExpression","isTemplateElement","isTemplateLiteral","isYieldExpression","isAwaitExpression","isImport","isBigIntLiteral","isExportNamespaceSpecifier","isOptionalMemberExpression","isOptionalCallExpression","isClassProperty","isClassAccessorProperty","isClassPrivateProperty","isClassPrivateMethod","isPrivateName","isStaticBlock","isAnyTypeAnnotation","isArrayTypeAnnotation","isBooleanTypeAnnotation","isBooleanLiteralTypeAnnotation","isNullLiteralTypeAnnotation","isClassImplements","isDeclareClass","isDeclareFunction","isDeclareInterface","isDeclareModule","isDeclareModuleExports","isDeclareTypeAlias","isDeclareOpaqueType","isDeclareVariable","isDeclareExportDeclaration","isDeclareExportAllDeclaration","isDeclaredPredicate","isExistsTypeAnnotation","isFunctionTypeAnnotation","isFunctionTypeParam","isGenericTypeAnnotation","isInferredPredicate","isInterfaceExtends","isInterfaceDeclaration","isInterfaceTypeAnnotation","isIntersectionTypeAnnotation","isMixedTypeAnnotation","isEmptyTypeAnnotation","isNullableTypeAnnotation","isNumberLiteralTypeAnnotation","isNumberTypeAnnotation","isObjectTypeAnnotation","isObjectTypeInternalSlot","isObjectTypeCallProperty","isObjectTypeIndexer","isObjectTypeProperty","isObjectTypeSpreadProperty","isOpaqueType","isQualifiedTypeIdentifier","isStringLiteralTypeAnnotation","isStringTypeAnnotation","isSymbolTypeAnnotation","isThisTypeAnnotation","isTupleTypeAnnotation","isTypeofTypeAnnotation","isTypeAlias","isTypeAnnotation","isTypeCastExpression","isTypeParameter","isTypeParameterDeclaration","isTypeParameterInstantiation","isUnionTypeAnnotation","isVariance","isVoidTypeAnnotation","isEnumDeclaration","isEnumBooleanBody","isEnumNumberBody","isEnumStringBody","isEnumSymbolBody","isEnumBooleanMember","isEnumNumberMember","isEnumStringMember","isEnumDefaultedMember","isIndexedAccessType","isOptionalIndexedAccessType","isJSXAttribute","isJSXClosingElement","isJSXElement","isJSXEmptyExpression","isJSXExpressionContainer","isJSXSpreadChild","isJSXIdentifier","isJSXMemberExpression","isJSXNamespacedName","isJSXOpeningElement","isJSXSpreadAttribute","isJSXText","isJSXFragment","isJSXOpeningFragment","isJSXClosingFragment","isNoop","isPlaceholder","isV8IntrinsicIdentifier","isArgumentPlaceholder","isBindExpression","isImportAttribute","isDecorator","isDoExpression","isExportDefaultSpecifier","isRecordExpression","isTupleExpression","isDecimalLiteral","isModuleExpression","isTopicReference","isPipelineTopicExpression","isPipelineBareFunction","isPipelinePrimaryTopicReference","isTSParameterProperty","isTSDeclareFunction","isTSDeclareMethod","isTSQualifiedName","isTSCallSignatureDeclaration","isTSConstructSignatureDeclaration","isTSPropertySignature","isTSMethodSignature","isTSIndexSignature","isTSAnyKeyword","isTSBooleanKeyword","isTSBigIntKeyword","isTSIntrinsicKeyword","isTSNeverKeyword","isTSNullKeyword","isTSNumberKeyword","isTSObjectKeyword","isTSStringKeyword","isTSSymbolKeyword","isTSUndefinedKeyword","isTSUnknownKeyword","isTSVoidKeyword","isTSThisType","isTSFunctionType","isTSConstructorType","isTSTypeReference","isTSTypePredicate","isTSTypeQuery","isTSTypeLiteral","isTSArrayType","isTSTupleType","isTSOptionalType","isTSRestType","isTSNamedTupleMember","isTSUnionType","isTSIntersectionType","isTSConditionalType","isTSInferType","isTSParenthesizedType","isTSTypeOperator","isTSIndexedAccessType","isTSMappedType","isTSTemplateLiteralType","isTSLiteralType","isTSExpressionWithTypeArguments","isTSInterfaceDeclaration","isTSInterfaceBody","isTSTypeAliasDeclaration","isTSInstantiationExpression","isTSAsExpression","isTSSatisfiesExpression","isTSTypeAssertion","isTSEnumBody","isTSEnumDeclaration","isTSEnumMember","isTSModuleDeclaration","isTSModuleBlock","isTSImportType","isTSImportEqualsDeclaration","isTSExternalModuleReference","isTSNonNullExpression","isTSExportAssignment","isTSNamespaceExportDeclaration","isTSTypeAnnotation","isTSTypeParameterInstantiation","isTSTypeParameterDeclaration","isTSTypeParameter","isStandardized","expectedNode","isExpression","isBinary","isScopable","isBlockParent","isBlock","isStatement","isTerminatorless","isCompletionStatement","isConditional","isLoop","isWhile","isExpressionWrapper","isFor","isForXStatement","isFunction","isFunctionParent","isPureish","isDeclaration","isPatternLike","isLVal","isTSEntityName","isLiteral","isImmutable","isUserWhitespacable","isMethod","isObjectMember","isProperty","isUnaryLike","isPattern","isClass","isImportOrExportDeclaration","isExportDeclaration","isModuleSpecifier","isAccessor","isPrivate","isFlow","isFlowType","isFlowBaseAnnotation","isFlowDeclaration","isFlowPredicate","isEnumBody","isEnumMember","isJSX","isMiscellaneous","isTypeScript","isTSTypeElement","isTSType","isTSBaseType","isNumberLiteral","isRegexLiteral","isRestProperty","isSpreadProperty","isModuleDeclaration","_index","matchesPattern","member","allowPartial","parts","nodes","property","j","_matchesPattern","buildMatchMemberExpression","_buildMatchMemberExpression","isReactComponent","isCompatTag","tagName","isType","nodeType","targetType","ALIAS_KEYS","aliases","FLIPPED_ALIAS_KEYS","alias","isPlaceholderType","placeholderType","PLACEHOLDERS_ALIAS","_isType","_isPlaceholderType","is","matches","isValidIdentifier","reserved","isDigit","forbiddenNumericSeparatorSiblings","decBinOct","hex","isAllowedNumericSeparatorSibling","bin","ch","oct","dec","readStringContents","lineStart","curLine","errors","initialPos","initialLineStart","initialCurLine","out","firstInvalidLoc","chunkStart","unterminated","isStringEnd","res","readEscapedChar","containsInvalid","inTemplate","throwOnInvalid","readHexChar","readCodePoint","fromCodePoint","strictNumericEscape","startPos","octalStr","octal","parseInt","next","len","forceLen","readInt","invalidEscapeSequence","radix","allowNumSeparator","bailOnError","forbiddenSiblings","isAllowedSibling","total","Infinity","val","prev","numericSeparatorInEscapeSequence","isNaN","unexpectedNumericSeparator","_isDigit","invalidDigit","invalidCodePoint","LOGICAL_OPERATORS","BOOLEAN_NUMBER_BINARY_OPERATORS","EQUALITY_BINARY_OPERATORS","COMPARISON_BINARY_OPERATORS","BOOLEAN_BINARY_OPERATORS","NUMBER_BINARY_OPERATORS","op","BOOLEAN_UNARY_OPERATORS","NUMBER_UNARY_OPERATORS","STRING_UNARY_OPERATORS","optional","force","for","_is","_validate","VISITOR_KEYS","NODE_FIELDS","BUILDER_KEYS","DEPRECATED_KEYS","NODE_PARENT_VALIDATIONS","validate","validateType","typeNames","assertNodeType","validateOptional","validateOptionalType","arrayOf","elementType","chain","assertValueType","assertEach","arrayOfType","validateArrayOfType","callback","childValidator","BABEL_TYPES_8_BREAKING","validateChild","validator","subkey","each","assertOneOf","values","includes","TypeError","JSON","oneOf","oneOfNodeTypes","assertNodeOrValueType","oneOfNodeOrValueTypes","valid","assertShape","shape","validateField","shapeOf","assertOptionalChainStart","_current","current","callee","fns","args","chainOf","validTypeOpts","validFieldKeys","store","defineAliasedType","defined","_store$opts$inherits$","inherits","additional","filter","unshift","defineType","fields","getOwnPropertyNames","field","def","deprecated","visitor","k","deprecatedAlias","concat","forEach","_isValidIdentifier","_helperStringParser","_utils","elements","operator","identifier","ASSIGNMENT_OPERATORS","pattern","left","right","BINARY_OPERATORS","expression","inOp","directives","body","label","arguments","typeArguments","typeParameters","param","consequent","alternate","program","comments","tokens","init","update","functionCommon","params","generator","async","functionTypeAnnotationCommon","returnType","functionDeclarationCommon","id","predicate","parent","patternLikeCommon","typeAnnotation","decorators","parentKey","nonComp","computed","imported","meta","flags","normal","sourceType","interpreter","properties","kind","shorthand","argument","listKey","expressions","discriminant","cases","block","handler","finalizer","UNARY_OPERATORS","UPDATE_OPERATORS","declarations","withoutInit","decl","definite","superClass","implements","mixins","abstract","importAttributes","attributes","assertions","exportKind","declaration","specifiers","sourced","sourceless","local","exported","lval","await","phase","importKind","classMethodOrPropertyCommon","accessibility","static","override","classMethodOrDeclareMethodCommon","access","tag","quasi","raw","cooked","templateElementCookedValidator","unterminatedCalled","tail","quasis","delegate","readonly","variance","_core","defineInterfaceishType","extends","supertype","impltype","this","indexers","callProperties","internalSlots","exact","inexact","method","qualification","bound","explicitType","members","hasUnknownMembers","objectType","indexType","openingElement","closingElement","children","selfClosing","namespace","openingFragment","closingFragment","PLACEHOLDERS","Declaration","Pattern","PLACEHOLDERS_FLIPPED_ALIAS","_placeholders","bool","tSFunctionTypeAnnotationCommon","parameter","signatureDeclarationCommon","callConstructSignatureDeclaration","namedTypeElementCommon","parameters","tsKeywordTypes","fnOrCtrBase","typeName","parameterName","asserts","exprName","elementTypes","unionOrIntersection","checkType","extendsType","trueType","falseType","typeParameter","nameType","literal","unaryExpression","unaryOperator","TSTypeExpression","const","initializer","global","qualifier","isExport","moduleReference","in","constraint","ModuleDeclaration","_deprecatedAliases","DEPRECATED_ALIASES","validateInternal","maybeNode","_NODE_PARENT_VALIDATI","_NODE_PARENT_VALIDATI2","arrayExpression","ArrayExpression","assignmentExpression","AssignmentExpression","binaryExpression","BinaryExpression","interpreterDirective","InterpreterDirective","directive","Directive","directiveLiteral","DirectiveLiteral","blockStatement","BlockStatement","breakStatement","BreakStatement","callExpression","_arguments","CallExpression","catchClause","CatchClause","conditionalExpression","ConditionalExpression","continueStatement","ContinueStatement","debuggerStatement","doWhileStatement","DoWhileStatement","emptyStatement","expressionStatement","ExpressionStatement","File","forInStatement","ForInStatement","forStatement","ForStatement","functionDeclaration","FunctionDeclaration","functionExpression","FunctionExpression","Identifier","ifStatement","IfStatement","labeledStatement","LabeledStatement","stringLiteral","StringLiteral","numericLiteral","NumericLiteral","nullLiteral","booleanLiteral","BooleanLiteral","regExpLiteral","RegExpLiteral","logicalExpression","LogicalExpression","memberExpression","MemberExpression","newExpression","NewExpression","Program","objectExpression","ObjectExpression","objectMethod","ObjectMethod","objectProperty","ObjectProperty","restElement","RestElement","returnStatement","ReturnStatement","sequenceExpression","SequenceExpression","parenthesizedExpression","ParenthesizedExpression","switchCase","SwitchCase","switchStatement","SwitchStatement","thisExpression","throwStatement","ThrowStatement","tryStatement","TryStatement","UnaryExpression","updateExpression","UpdateExpression","variableDeclaration","VariableDeclaration","variableDeclarator","VariableDeclarator","whileStatement","WhileStatement","withStatement","WithStatement","assignmentPattern","AssignmentPattern","arrayPattern","ArrayPattern","arrowFunctionExpression","ArrowFunctionExpression","classBody","ClassBody","classExpression","ClassExpression","classDeclaration","ClassDeclaration","exportAllDeclaration","ExportAllDeclaration","exportDefaultDeclaration","ExportDefaultDeclaration","exportNamedDeclaration","ExportNamedDeclaration","exportSpecifier","ExportSpecifier","forOfStatement","_await","ForOfStatement","importDeclaration","ImportDeclaration","importDefaultSpecifier","ImportDefaultSpecifier","importNamespaceSpecifier","ImportNamespaceSpecifier","importSpecifier","ImportSpecifier","importExpression","ImportExpression","metaProperty","MetaProperty","classMethod","_static","ClassMethod","objectPattern","ObjectPattern","spreadElement","SpreadElement","_super","taggedTemplateExpression","TaggedTemplateExpression","templateElement","TemplateElement","templateLiteral","TemplateLiteral","yieldExpression","YieldExpression","awaitExpression","AwaitExpression","_import","bigIntLiteral","BigIntLiteral","exportNamespaceSpecifier","ExportNamespaceSpecifier","optionalMemberExpression","OptionalMemberExpression","optionalCallExpression","OptionalCallExpression","classProperty","ClassProperty","classAccessorProperty","ClassAccessorProperty","classPrivateProperty","ClassPrivateProperty","classPrivateMethod","ClassPrivateMethod","privateName","PrivateName","staticBlock","StaticBlock","anyTypeAnnotation","arrayTypeAnnotation","ArrayTypeAnnotation","booleanTypeAnnotation","booleanLiteralTypeAnnotation","BooleanLiteralTypeAnnotation","nullLiteralTypeAnnotation","classImplements","ClassImplements","declareClass","_extends","DeclareClass","declareFunction","DeclareFunction","declareInterface","DeclareInterface","declareModule","DeclareModule","declareModuleExports","DeclareModuleExports","declareTypeAlias","DeclareTypeAlias","declareOpaqueType","DeclareOpaqueType","declareVariable","DeclareVariable","declareExportDeclaration","DeclareExportDeclaration","declareExportAllDeclaration","DeclareExportAllDeclaration","declaredPredicate","DeclaredPredicate","existsTypeAnnotation","functionTypeAnnotation","FunctionTypeAnnotation","functionTypeParam","FunctionTypeParam","genericTypeAnnotation","GenericTypeAnnotation","inferredPredicate","interfaceExtends","InterfaceExtends","interfaceDeclaration","InterfaceDeclaration","interfaceTypeAnnotation","InterfaceTypeAnnotation","intersectionTypeAnnotation","IntersectionTypeAnnotation","mixedTypeAnnotation","emptyTypeAnnotation","nullableTypeAnnotation","NullableTypeAnnotation","numberLiteralTypeAnnotation","NumberLiteralTypeAnnotation","numberTypeAnnotation","objectTypeAnnotation","ObjectTypeAnnotation","objectTypeInternalSlot","ObjectTypeInternalSlot","objectTypeCallProperty","ObjectTypeCallProperty","objectTypeIndexer","ObjectTypeIndexer","objectTypeProperty","ObjectTypeProperty","objectTypeSpreadProperty","ObjectTypeSpreadProperty","opaqueType","OpaqueType","qualifiedTypeIdentifier","QualifiedTypeIdentifier","stringLiteralTypeAnnotation","StringLiteralTypeAnnotation","stringTypeAnnotation","symbolTypeAnnotation","thisTypeAnnotation","tupleTypeAnnotation","TupleTypeAnnotation","typeofTypeAnnotation","TypeofTypeAnnotation","typeAlias","TypeAlias","TypeAnnotation","typeCastExpression","TypeCastExpression","TypeParameter","typeParameterDeclaration","TypeParameterDeclaration","typeParameterInstantiation","TypeParameterInstantiation","unionTypeAnnotation","UnionTypeAnnotation","Variance","voidTypeAnnotation","enumDeclaration","EnumDeclaration","enumBooleanBody","EnumBooleanBody","enumNumberBody","EnumNumberBody","enumStringBody","EnumStringBody","enumSymbolBody","EnumSymbolBody","enumBooleanMember","EnumBooleanMember","enumNumberMember","EnumNumberMember","enumStringMember","EnumStringMember","enumDefaultedMember","EnumDefaultedMember","indexedAccessType","IndexedAccessType","optionalIndexedAccessType","OptionalIndexedAccessType","jsxAttribute","JSXAttribute","jsxClosingElement","JSXClosingElement","jsxElement","JSXElement","jsxEmptyExpression","jsxExpressionContainer","JSXExpressionContainer","jsxSpreadChild","JSXSpreadChild","JSXIdentifier","jsxMemberExpression","JSXMemberExpression","jsxNamespacedName","JSXNamespacedName","jsxOpeningElement","JSXOpeningElement","jsxSpreadAttribute","JSXSpreadAttribute","jsxText","JSXText","jsxFragment","JSXFragment","jsxOpeningFragment","jsxClosingFragment","noop","Placeholder","v8IntrinsicIdentifier","V8IntrinsicIdentifier","argumentPlaceholder","bindExpression","BindExpression","importAttribute","ImportAttribute","decorator","Decorator","doExpression","DoExpression","exportDefaultSpecifier","ExportDefaultSpecifier","recordExpression","RecordExpression","tupleExpression","TupleExpression","decimalLiteral","DecimalLiteral","moduleExpression","ModuleExpression","topicReference","pipelineTopicExpression","PipelineTopicExpression","pipelineBareFunction","PipelineBareFunction","pipelinePrimaryTopicReference","tsParameterProperty","TSParameterProperty","tsDeclareFunction","TSDeclareFunction","tsDeclareMethod","TSDeclareMethod","tsQualifiedName","TSQualifiedName","tsCallSignatureDeclaration","TSCallSignatureDeclaration","tsConstructSignatureDeclaration","TSConstructSignatureDeclaration","tsPropertySignature","TSPropertySignature","tsMethodSignature","TSMethodSignature","tsIndexSignature","TSIndexSignature","tsAnyKeyword","tsBooleanKeyword","tsBigIntKeyword","tsIntrinsicKeyword","tsNeverKeyword","tsNullKeyword","tsNumberKeyword","tsObjectKeyword","tsStringKeyword","tsSymbolKeyword","tsUndefinedKeyword","tsUnknownKeyword","tsVoidKeyword","tsThisType","tsFunctionType","TSFunctionType","tsConstructorType","TSConstructorType","tsTypeReference","TSTypeReference","tsTypePredicate","TSTypePredicate","tsTypeQuery","TSTypeQuery","tsTypeLiteral","TSTypeLiteral","tsArrayType","TSArrayType","tsTupleType","TSTupleType","tsOptionalType","TSOptionalType","tsRestType","TSRestType","tsNamedTupleMember","TSNamedTupleMember","tsUnionType","TSUnionType","tsIntersectionType","TSIntersectionType","tsConditionalType","TSConditionalType","tsInferType","TSInferType","tsParenthesizedType","TSParenthesizedType","tsTypeOperator","TSTypeOperator","tsIndexedAccessType","TSIndexedAccessType","tsMappedType","TSMappedType","tsTemplateLiteralType","TSTemplateLiteralType","tsLiteralType","TSLiteralType","tsExpressionWithTypeArguments","TSExpressionWithTypeArguments","tsInterfaceDeclaration","TSInterfaceDeclaration","tsInterfaceBody","TSInterfaceBody","tsTypeAliasDeclaration","TSTypeAliasDeclaration","tsInstantiationExpression","TSInstantiationExpression","tsAsExpression","TSAsExpression","tsSatisfiesExpression","TSSatisfiesExpression","tsTypeAssertion","TSTypeAssertion","tsEnumBody","TSEnumBody","tsEnumDeclaration","TSEnumDeclaration","tsEnumMember","TSEnumMember","tsModuleDeclaration","TSModuleDeclaration","tsModuleBlock","TSModuleBlock","tsImportType","TSImportType","tsImportEqualsDeclaration","TSImportEqualsDeclaration","tsExternalModuleReference","TSExternalModuleReference","tsNonNullExpression","TSNonNullExpression","tsExportAssignment","TSExportAssignment","tsNamespaceExportDeclaration","TSNamespaceExportDeclaration","tsTypeAnnotation","TSTypeAnnotation","tsTypeParameterInstantiation","TSTypeParameterInstantiation","tsTypeParameterDeclaration","TSTypeParameterDeclaration","tsTypeParameter","TSTypeParameter","NumberLiteral","RegexLiteral","RestProperty","SpreadProperty","_lowercase","enumerable","_uppercase","_index2","cleanJSXElementLiteralChild","child","lastNonEmptyLine","isFirstLine","isLastLine","isLastNonEmptyLine","trimmedLine","_cleanJSXElementLiteralChild","buildChildren","isNode","_isNode","assertNode","_node$type","assert","assertArrayExpression","assertAssignmentExpression","assertBinaryExpression","assertInterpreterDirective","assertDirective","assertDirectiveLiteral","assertBlockStatement","assertBreakStatement","assertCallExpression","assertCatchClause","assertConditionalExpression","assertContinueStatement","assertDebuggerStatement","assertDoWhileStatement","assertEmptyStatement","assertExpressionStatement","assertFile","assertForInStatement","assertForStatement","assertFunctionDeclaration","assertFunctionExpression","assertIdentifier","assertIfStatement","assertLabeledStatement","assertStringLiteral","assertNumericLiteral","assertNullLiteral","assertBooleanLiteral","assertRegExpLiteral","assertLogicalExpression","assertMemberExpression","assertNewExpression","assertProgram","assertObjectExpression","assertObjectMethod","assertObjectProperty","assertRestElement","assertReturnStatement","assertSequenceExpression","assertParenthesizedExpression","assertSwitchCase","assertSwitchStatement","assertThisExpression","assertThrowStatement","assertTryStatement","assertUnaryExpression","assertUpdateExpression","assertVariableDeclaration","assertVariableDeclarator","assertWhileStatement","assertWithStatement","assertAssignmentPattern","assertArrayPattern","assertArrowFunctionExpression","assertClassBody","assertClassExpression","assertClassDeclaration","assertExportAllDeclaration","assertExportDefaultDeclaration","assertExportNamedDeclaration","assertExportSpecifier","assertForOfStatement","assertImportDeclaration","assertImportDefaultSpecifier","assertImportNamespaceSpecifier","assertImportSpecifier","assertImportExpression","assertMetaProperty","assertClassMethod","assertObjectPattern","assertSpreadElement","assertSuper","assertTaggedTemplateExpression","assertTemplateElement","assertTemplateLiteral","assertYieldExpression","assertAwaitExpression","assertImport","assertBigIntLiteral","assertExportNamespaceSpecifier","assertOptionalMemberExpression","assertOptionalCallExpression","assertClassProperty","assertClassAccessorProperty","assertClassPrivateProperty","assertClassPrivateMethod","assertPrivateName","assertStaticBlock","assertAnyTypeAnnotation","assertArrayTypeAnnotation","assertBooleanTypeAnnotation","assertBooleanLiteralTypeAnnotation","assertNullLiteralTypeAnnotation","assertClassImplements","assertDeclareClass","assertDeclareFunction","assertDeclareInterface","assertDeclareModule","assertDeclareModuleExports","assertDeclareTypeAlias","assertDeclareOpaqueType","assertDeclareVariable","assertDeclareExportDeclaration","assertDeclareExportAllDeclaration","assertDeclaredPredicate","assertExistsTypeAnnotation","assertFunctionTypeAnnotation","assertFunctionTypeParam","assertGenericTypeAnnotation","assertInferredPredicate","assertInterfaceExtends","assertInterfaceDeclaration","assertInterfaceTypeAnnotation","assertIntersectionTypeAnnotation","assertMixedTypeAnnotation","assertEmptyTypeAnnotation","assertNullableTypeAnnotation","assertNumberLiteralTypeAnnotation","assertNumberTypeAnnotation","assertObjectTypeAnnotation","assertObjectTypeInternalSlot","assertObjectTypeCallProperty","assertObjectTypeIndexer","assertObjectTypeProperty","assertObjectTypeSpreadProperty","assertOpaqueType","assertQualifiedTypeIdentifier","assertStringLiteralTypeAnnotation","assertStringTypeAnnotation","assertSymbolTypeAnnotation","assertThisTypeAnnotation","assertTupleTypeAnnotation","assertTypeofTypeAnnotation","assertTypeAlias","assertTypeAnnotation","assertTypeCastExpression","assertTypeParameter","assertTypeParameterDeclaration","assertTypeParameterInstantiation","assertUnionTypeAnnotation","assertVariance","assertVoidTypeAnnotation","assertEnumDeclaration","assertEnumBooleanBody","assertEnumNumberBody","assertEnumStringBody","assertEnumSymbolBody","assertEnumBooleanMember","assertEnumNumberMember","assertEnumStringMember","assertEnumDefaultedMember","assertIndexedAccessType","assertOptionalIndexedAccessType","assertJSXAttribute","assertJSXClosingElement","assertJSXElement","assertJSXEmptyExpression","assertJSXExpressionContainer","assertJSXSpreadChild","assertJSXIdentifier","assertJSXMemberExpression","assertJSXNamespacedName","assertJSXOpeningElement","assertJSXSpreadAttribute","assertJSXText","assertJSXFragment","assertJSXOpeningFragment","assertJSXClosingFragment","assertNoop","assertPlaceholder","assertV8IntrinsicIdentifier","assertArgumentPlaceholder","assertBindExpression","assertImportAttribute","assertDecorator","assertDoExpression","assertExportDefaultSpecifier","assertRecordExpression","assertTupleExpression","assertDecimalLiteral","assertModuleExpression","assertTopicReference","assertPipelineTopicExpression","assertPipelineBareFunction","assertPipelinePrimaryTopicReference","assertTSParameterProperty","assertTSDeclareFunction","assertTSDeclareMethod","assertTSQualifiedName","assertTSCallSignatureDeclaration","assertTSConstructSignatureDeclaration","assertTSPropertySignature","assertTSMethodSignature","assertTSIndexSignature","assertTSAnyKeyword","assertTSBooleanKeyword","assertTSBigIntKeyword","assertTSIntrinsicKeyword","assertTSNeverKeyword","assertTSNullKeyword","assertTSNumberKeyword","assertTSObjectKeyword","assertTSStringKeyword","assertTSSymbolKeyword","assertTSUndefinedKeyword","assertTSUnknownKeyword","assertTSVoidKeyword","assertTSThisType","assertTSFunctionType","assertTSConstructorType","assertTSTypeReference","assertTSTypePredicate","assertTSTypeQuery","assertTSTypeLiteral","assertTSArrayType","assertTSTupleType","assertTSOptionalType","assertTSRestType","assertTSNamedTupleMember","assertTSUnionType","assertTSIntersectionType","assertTSConditionalType","assertTSInferType","assertTSParenthesizedType","assertTSTypeOperator","assertTSIndexedAccessType","assertTSMappedType","assertTSTemplateLiteralType","assertTSLiteralType","assertTSExpressionWithTypeArguments","assertTSInterfaceDeclaration","assertTSInterfaceBody","assertTSTypeAliasDeclaration","assertTSInstantiationExpression","assertTSAsExpression","assertTSSatisfiesExpression","assertTSTypeAssertion","assertTSEnumBody","assertTSEnumDeclaration","assertTSEnumMember","assertTSModuleDeclaration","assertTSModuleBlock","assertTSImportType","assertTSImportEqualsDeclaration","assertTSExternalModuleReference","assertTSNonNullExpression","assertTSExportAssignment","assertTSNamespaceExportDeclaration","assertTSTypeAnnotation","assertTSTypeParameterInstantiation","assertTSTypeParameterDeclaration","assertTSTypeParameter","assertStandardized","assertExpression","assertBinary","assertScopable","assertBlockParent","assertBlock","assertStatement","assertTerminatorless","assertCompletionStatement","assertConditional","assertLoop","assertWhile","assertExpressionWrapper","assertFor","assertForXStatement","assertFunction","assertFunctionParent","assertPureish","assertDeclaration","assertPatternLike","assertLVal","assertTSEntityName","assertLiteral","assertImmutable","assertUserWhitespacable","assertMethod","assertObjectMember","assertProperty","assertUnaryLike","assertPattern","assertClass","assertImportOrExportDeclaration","assertExportDeclaration","assertModuleSpecifier","assertAccessor","assertPrivate","assertFlow","assertFlowType","assertFlowBaseAnnotation","assertFlowDeclaration","assertFlowPredicate","assertEnumBody","assertEnumMember","assertJSX","assertMiscellaneous","assertTypeScript","assertTSTypeElement","assertTSType","assertTSBaseType","assertNumberLiteral","assertRegexLiteral","assertRestProperty","assertSpreadProperty","assertModuleDeclaration","createTypeAnnotationBasedOnTypeof","getQualifiedName","removeTypeDuplicates","nodesIn","from","generics","Map","bases","typeGroups","existing","baseType","genericName","_removeTypeDuplicates","createFlowUnionType","flattened","typeArgumentsKey","existingTypeArguments","createTSUnionType","typeAnnotations","buildUndefinedNode","hasOwn","Function","bind","prototype","cloneIfNode","deep","withoutLoc","commentsCache","cloneNodeInternal","cloneIfNodeOrArray","cloneNode","newNode","maybeCloneComments","leadingComments","innerComments","trailingComments","extra","ret","_cloneNode","clone","cloneDeep","cloneDeepWithoutLoc","cloneWithoutLoc","addComments","_addComments","addComment","content","inherit","Boolean","_inherit","inheritInnerComments","inheritLeadingComments","inheritTrailingComments","_inheritTrailingComments","_inheritLeadingComments","_inheritInnerComments","inheritsComments","removeComments","COMMENT_KEYS","IMPORTOREXPORTDECLARATION_TYPES","toBlock","blockNodes","_toBlock","ensureBlock","result","toIdentifier","codePointAt","toUpperCase","_toIdentifier","toBindingIdentifierName","toComputedKey","toExpression","traverseFast","enter","subNode","CLEAR_KEYS","CLEAR_KEYS_PLUS_COMMENTS","removeProperties","preserveComments","symbols","getOwnPropertySymbols","sym","_traverseFast","_removeProperties","removePropertiesDeep","tree","_removePropertiesDeep","toKeyAlias","increment","uid","MAX_SAFE_INTEGER","toStatement","ignore","mustHaveId","newType","valueToNode","objectToString","toString","isRegExp","isPlainObject","isFinite","abs","numerator","props","nodeKey","appendToMemberExpression","append","_inheritsComments","INHERIT_KEYS","prependToMemberExpression","prepend","getAssignmentIdentifiers","search","ids","create","pop","getBindingIdentifiers","duplicates","outerOnly","newBindingsOnly","shift","_ids","_getBindingIdentifiers","getOuterBindingIdentifiers","getNameFromLiteralId","getObjectMemberKey","getFunctionName","originalNode","traverse","handlers","exit","traverseSimpleImpl","ancestors","isBinding","grandparent","isLet","BLOCK_SCOPED_SYMBOL","_isLet","isBlockScoped","isNodesEquivalent","visitorKeys","val_a","val_b","isReferenced","isScope","isSpecifierDefault","specifier","RESERVED_WORDS_ES3_ONLY","isValidES3Identifier","isVar","_productions","gatherSequenceExpressions","declars","exprs","ensureLastUndefined","declar","bindings","_gatherSequenceExpressions","toSequenceExpression","scope","_isReactComponent","_isCompatTag","_buildChildren","_assertNode","_exportNames","_createTypeAnnotationBasedOnTypeof","_createFlowUnionType","_createTSUnionType","_clone","_cloneDeep","_cloneDeepWithoutLoc","_cloneWithoutLoc","_addComment","_removeComments","_index3","_index4","_ensureBlock","_toBindingIdentifierName","_toComputedKey","_toExpression","_toKeyAlias","_toStatement","_valueToNode","_index5","_appendToMemberExpression","_inherits","_prependToMemberExpression","_getAssignmentIdentifiers","_getOuterBindingIdentifiers","_getFunctionName","_traverse","_isBinding","_isBlockScoped","_isImmutable","_isNodesEquivalent","_isReferenced","_isScope","_isSpecifierDefault","_isValidES3Identifier","_isVar","_index6","_toSequenceExpression","_t","makeStatementFormatter","unwrap","ast","stmt","merge","placeholderWhitelist","placeholderPattern","syntacticPlaceholders","parser","_ref","_objectWithoutPropertiesLoose","_excluded","normalizeReplacements","replacements","reduce","acc","replacement","Position","col","SourceLocation","filename","identifierName","createPositionWithColumnOffset","position","columnOffset","ModuleErrors","ImportMetaOutsideModule","ImportOutsideModule","NodeDescriptions","FormalParameters","true","false","toNodeDescription","StandardErrors","AccessorIsGenerator","ArgumentsInClass","AsyncFunctionInSingleStatementContext","AwaitBindingIdentifier","AwaitBindingIdentifierInStaticBlock","AwaitExpressionFormalParameter","AwaitUsingNotInAsyncContext","AwaitNotInAsyncContext","AwaitNotInAsyncFunction","BadGetterArity","BadSetterArity","BadSetterRestParameter","ConstructorClassField","ConstructorClassPrivateField","ConstructorIsAccessor","ConstructorIsAsync","ConstructorIsGenerator","DeclarationMissingInitializer","DecoratorArgumentsOutsideParentheses","DecoratorBeforeExport","DecoratorsBeforeAfterExport","DecoratorConstructor","DecoratorExportClass","DecoratorSemicolon","DecoratorStaticBlock","DeferImportRequiresNamespace","DeletePrivateField","DestructureNamedImport","DuplicateConstructor","DuplicateDefaultExport","DuplicateExport","exportName","DuplicateProto","DuplicateRegExpFlags","DynamicImportPhaseRequiresImportExpressions","ElementAfterRest","EscapedCharNotAnIdentifier","ExportBindingIsString","localName","ExportDefaultFromAsIdentifier","ForInOfLoopInitializer","ForInUsing","ForOfAsync","ForOfLet","GeneratorInSingleStatementContext","IllegalBreakContinue","IllegalLanguageModeDirective","IllegalReturn","ImportAttributesUseAssert","ImportBindingIsString","importName","ImportCallArity","ImportCallNotNewExpression","ImportCallSpreadArgument","ImportJSONBindingNotDefault","ImportReflectionHasAssertion","ImportReflectionNotBinding","IncompatibleRegExpUVFlags","InvalidBigIntLiteral","InvalidCodePoint","InvalidCoverInitializedName","InvalidDecimal","InvalidDigit","InvalidEscapeSequence","InvalidEscapeSequenceTemplate","InvalidEscapedReservedWord","reservedWord","InvalidIdentifier","InvalidLhs","ancestor","InvalidLhsBinding","InvalidLhsOptionalChaining","InvalidNumber","InvalidOrMissingExponent","InvalidOrUnexpectedToken","unexpected","InvalidParenthesizedAssignment","InvalidPrivateFieldResolution","InvalidPropertyBindingPattern","InvalidRecordProperty","InvalidRestAssignmentPattern","LabelRedeclaration","labelName","LetInLexicalBinding","LineTerminatorBeforeArrow","MalformedRegExpFlags","MissingClassName","MissingEqInAssignment","MissingSemicolon","MissingPlugin","missingPlugin","MissingOneOfPlugins","MissingUnicodeEscape","MixingCoalesceWithLogical","ModuleAttributeDifferentFromType","ModuleAttributeInvalidValue","ModuleAttributesWithDuplicateKeys","ModuleExportNameHasLoneSurrogate","surrogateCharCode","ModuleExportUndefined","MultipleDefaultsInSwitch","NewlineAfterThrow","NoCatchOrFinally","NumberIdentifier","NumericSeparatorInEscapeSequence","ObsoleteAwaitStar","OptionalChainingNoNew","OptionalChainingNoTemplate","OverrideOnConstructor","ParamDupe","PatternHasAccessor","PatternHasMethod","PrivateInExpectedIn","PrivateNameRedeclaration","RecordExpressionBarIncorrectEndSyntaxType","RecordExpressionBarIncorrectStartSyntaxType","RecordExpressionHashIncorrectStartSyntaxType","RecordNoProto","RestTrailingComma","SloppyFunction","SloppyFunctionAnnexB","SourcePhaseImportRequiresDefault","StaticPrototype","SuperNotAllowed","SuperPrivateField","TrailingDecorator","TupleExpressionBarIncorrectEndSyntaxType","TupleExpressionBarIncorrectStartSyntaxType","TupleExpressionHashIncorrectStartSyntaxType","UnexpectedArgumentPlaceholder","UnexpectedAwaitAfterPipelineBody","UnexpectedDigitAfterHash","UnexpectedImportExport","UnexpectedKeyword","UnexpectedLeadingDecorator","UnexpectedLexicalDeclaration","UnexpectedNewTarget","UnexpectedNumericSeparator","UnexpectedPrivateField","UnexpectedReservedWord","UnexpectedSuper","UnexpectedToken","UnexpectedTokenUnaryExponentiation","UnexpectedUsingDeclaration","UnsupportedBind","UnsupportedDecoratorExport","UnsupportedDefaultExport","UnsupportedImport","UnsupportedMetaProperty","target","onlyValidPropertyName","UnsupportedParameterDecorator","UnsupportedPropertyDecorator","UnsupportedSuper","UnterminatedComment","UnterminatedRegExp","UnterminatedString","UnterminatedTemplate","UsingDeclarationExport","UsingDeclarationHasBindingPattern","VarRedeclaration","YieldBindingIdentifier","YieldInParameter","ZeroDigitNumericSeparator","StrictModeErrors","StrictDelete","StrictEvalArguments","referenceName","StrictEvalArgumentsBinding","bindingName","StrictFunction","StrictNumericEscape","StrictOctalLiteral","StrictWith","UnparenthesizedPipeBodyDescriptions","PipeBodyIsTighter","PipeTopicRequiresHackPipes","PipeTopicUnbound","PipeTopicUnconfiguredToken","PipeTopicUnused","PipeUnparenthesizedBody","PipelineBodyNoArrow","PipelineBodySequenceExpression","PipelineHeadSequenceExpression","PipelineTopicUnused","PrimaryTopicNotAllowed","PrimaryTopicRequiresSmartPipeline","defineHidden","configurable","toParseErrorConstructor","toMessage","reasonCode","syntaxPlugin","hasMissingPlugin","oldReasonCodes","AccessorCannotDeclareThisParameter","AccessorCannotHaveTypeParameters","ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference","SetAccessorCannotHaveOptionalParameter","SetAccessorCannotHaveRestParameter","SetAccessorCannotHaveReturnType","details","SyntaxError","overrides","_overrides$loc","writable","ParseErrorEnum","parseErrorTemplates","ParseErrorConstructors","template","Errors","PipelineOperatorErrors","createDefaultOptions","sourceFilename","startIndex","allowAwaitOutsideFunction","allowReturnOutsideFunction","allowNewTargetOutsideFunction","allowImportExportEverywhere","allowSuperOutsideMethod","allowUndeclaredExports","strictMode","ranges","createImportExpressions","createParenthesizedExpressions","errorRecovery","attachComment","annexB","getOptions","toUnenumerable","toESTreeLocation","estree","ESTreeParserMixin","optionFlags","parseRegExpLiteral","_","estreeParseLiteral","parseBigIntLiteral","bigInt","BigInt","_unused","bigint","parseDecimalLiteral","decimal","parseLiteral","parseStringLiteral","parseNumericLiteral","parseNullLiteral","parseBooleanLiteral","directiveToStmt","expressionValue","rawValue","initFunction","isAsync","checkDeclaration","getObjectOrClassMethodParams","isValidDirective","_stmt$expression$extr","parenthesized","parseBlockBody","allowDirectives","topLevel","afterBlockParse","directiveStatements","d","parsePrivateName","getPluginOption","convertPrivateNameToPrivateIdentifier","getPrivateNameSV","parseFunctionBody","allowExpression","parseMethod","isGenerator","isConstructor","allowDirectSuper","inClassScope","funcNode","startNode","resetStartLocationFromNode","finishNode","nameIsConstructor","parseClassProperty","propertyNode","parseClassPrivateProperty","parseObjectMethod","prop","parseObjectProperty","refExpressionErrors","isValidLVal","isUnparenthesizedInAssign","binding","isAssignable","toAssignable","isLHS","classScope","usePrivateName","toAssignableObjectExpressionProp","isLast","raise","finishCallExpression","unfinished","_ref2","toReferencedArguments","parseExport","exportStartLoc","lastTokStartLoc","_declaration$decorato","resetStartLocation","parseSubscript","noCalls","optionalChainMember","substring","stop","startNodeAtNode","hasPropertyAsPrivateName","finishNodeAt","resetEndLocation","lastTokEndLoc","TokContext","preserveSpace","brace","j_oTag","j_cTag","j_expr","beforeExpr","startsExpr","isAssign","postfix","ExportedTokenType","conf","rightAssociative","binop","updateContext","createKeyword","createToken","createBinop","tokenTypeCounter","tokenTypes","tokenLabels","tokenBinops","tokenBeforeExprs","tokenStartsExprs","tokenPrefixes","_options$binop","_options$beforeExpr","_options$startsExpr","_options$prefix","createKeywordLike","_options$binop2","_options$beforeExpr2","_options$startsExpr2","_options$prefix2","tt","bracketL","bracketHashL","bracketBarL","bracketR","bracketBarR","braceL","braceBarL","braceHashL","braceR","braceBarR","parenL","parenR","comma","semi","colon","doubleColon","dot","question","questionDot","arrow","ellipsis","backQuote","dollarBraceL","templateTail","templateNonTail","at","hash","eq","slashAssign","xorAssign","moduloAssign","incDec","bang","tilde","doubleCaret","doubleAt","pipeline","nullishCoalescing","logicalOR","logicalAND","bitwiseOR","bitwiseXOR","bitwiseAND","equality","lt","gt","relational","bitShift","bitShiftL","bitShiftR","plusMin","modulo","star","slash","exponent","_in","_instanceof","_break","_case","_catch","_continue","_debugger","_else","_finally","_function","_if","_return","_switch","_throw","_try","_var","_const","_with","_new","_this","_class","_export","_null","_true","_false","_typeof","_void","_delete","_do","_for","_while","_as","_assert","_async","_defer","_from","_get","_let","_meta","_of","_sent","_set","_source","_using","_yield","_asserts","_checks","_exports","_global","_implements","_intrinsic","_infer","_mixins","_proto","_require","_satisfies","_keyof","_readonly","_unique","_abstract","_declare","_enum","_module","_namespace","_interface","_type","_opaque","num","regexp","eof","jsxName","jsxTagStart","jsxTagEnd","tokenIsIdentifier","tokenKeywordOrIdentifierIsKeyword","tokenIsKeywordOrIdentifier","tokenIsLiteralPropertyName","tokenComesBeforeExpression","tokenCanStartExpression","tokenIsAssignment","tokenIsFlowInterfaceOrTypeOrOpaque","tokenIsLoop","tokenIsKeyword","tokenIsOperator","tokenIsPostfix","tokenIsPrefix","tokenIsTSTypeOperator","tokenIsTSDeclarationStart","tokenLabelName","tokenOperatorPrecedence","tokenIsRightAssociative","tokenIsTemplate","getExportedToken","tc","isIteratorStart","next2","reservedWordLikeSet","canBeReservedWord","Scope","names","firstLexicalName","ScopeHandler","scopeStack","undefinedExports","inTopLevel","currentScope","inFunction","currentVarScopeFlags","allowSuper","currentThisScopeFlags","inClass","inClassAndNotInNonArrowFunction","inStaticBlock","ScopeFlag","inNonArrowFunction","treatFunctionsAsVar","treatFunctionsAsVarInScope","createScope","declareName","bindingType","checkRedeclarationInScope","maybeExportDefined","delete","isRedeclaredInScope","checkLocalExport","topLevelScope","FlowScope","declareFunctions","FlowScopeHandler","BaseParser","sawUnambiguousESM","ambiguousScriptDifferentAst","sourceToOffsetPos","sourcePos","offsetToSourcePos","offsetPos","hasPlugin","pluginConfig","pluginName","pluginOptions","actualOptions","_this$plugins$get","setTrailingComments","setLeadingComments","setInnerComments","adjustInnerComments","commentWS","lastElement","CommentsParser","commentsLen","processComment","commentStack","commentStackLength","lastCommentWS","leadingNode","nodeStart","commentEnd","containingNode","finalizeComment","trailingNode","commentStart","finalizeRemainingComments","resetPreviousNodeTrailingComments","resetPreviousIdentifierLeadingComments","takeSurroundingComments","lineBreak","lineBreakG","isNewLine","hasNewLine","skipWhiteSpace","skipWhiteSpaceInLine","isWhitespace","State","potentialArrowAt","noArrowAt","noArrowParamsConversionAt","topicContext","maxNumOfResolvableTopics","maxTopicIndex","labels","ct","firstInvalidTemplateEscapePos","strictErrors","tokensLength","maybeInArrowParameters","inType","noAnonFunctionType","hasFlowComment","isAmbientContext","inAbstractClass","inDisallowConditionalTypesContext","soloAwait","inFSharpPipelineDirectBody","canStartJSXElement","containsEsc","hasTopLevelAwait","curPosition","buildPosition","VALID_REGEX_FLAGS","Token","Tokenizer","isLookahead","errorHandlers_readInt","errorBuilder","errorHandlers_readCodePoint","errorHandlers_readStringContents_string","recordStrictModeErrors","errorHandlers_readStringContents_template","pushToken","checkKeywordEscapes","nextToken","eat","createLookaheadState","curContext","lookahead","old","curr","nextTokenStart","nextTokenStartSince","lastIndex","lookaheadCharCode","nextTokenInLineStart","nextTokenInLineStartSince","lookaheadInLineCharCode","codePointAtPos","setStrict","toParseError","clear","skipSpace","finishToken","getTokenFromCode","skipBlockComment","skipLineComment","startSkip","spaceStart","loop","commentWhitespace","prevType","replaceToken","readToken_numberSign","readToken_interpreter","nextPos","expectPlugin","readWord1","finishOp","readToken_dot","readNumber","readToken_slash","readToken_mult_modulo","width","readToken_pipe_amp","readToken_caret","proposal","topicToken","lookaheadCh","readToken_atSign","readToken_plus_min","readToken_lt","readToken_gt","size","readToken_eq_excl","readToken_question","readTemplateToken","readRadixNumber","readString","readWord","readRegexp","escaped","mods","char","isBigInt","startsWithDot","isFloat","hasExponent","isOctal","hasLeadingZero","integer","underscorePos","isDecimal","parseFloat","quote","readTemplateContinuation","opening","firstCode","escStart","identifierCheck","esc","keywordTypes","raiseOverwrite","expectOnePlugin","pluginNames","some","ClassScope","privateNames","loneAccessors","undefinedPrivateNames","ClassScopeHandler","oldClassScope","declarePrivateName","redefined","accessor","oldStatic","newStatic","oldKind","newKind","ExpressionScope","canBeArrowParameterDeclaration","isCertainlyParameterDeclaration","ArrowHeadParsingScope","declarationErrors","recordDeclarationError","ParsingErrorClass","clearDeclarationError","iterateErrors","ExpressionScopeHandler","recordParameterInitializerError","origin","recordArrowParameterBindingError","recordAsyncArrowParametersError","validateAsPattern","newParameterDeclarationScope","newArrowHeadScope","newAsyncArrowScope","newExpressionScope","ProductionParameterHandler","stacks","currentFlags","hasAwait","hasYield","hasReturn","hasIn","functionFlags","UtilParser","addExtra","isContextual","isUnparsedContextual","nameStart","nameEnd","nextCh","isLookaheadContextual","eatContextual","expectContextual","canInsertSemicolon","hasPrecedingLineBreak","hasFollowingLineBreak","isLineTerminator","semicolon","allowAsi","tryParse","oldState","abortSignal","failState","thrown","aborted","checkExpressionErrors","andThrow","shorthandAssignLoc","doubleProtoLoc","privateKeyLoc","optionalParametersLoc","hasErrors","isLiteralPropertyName","initializeScopes","oldLabels","oldExportedIdentifiers","exportedIdentifiers","oldInModule","oldScope","getScopeHandler","oldProdParam","prodParam","oldExpressionScope","expressionScope","enterInitialScopes","paramFlags","checkDestructuringPrivate","ExpressionErrors","Node","NodePrototype","__clone","clonePlaceholder","cloneIdentifier","cloned","cloneStringLiteral","NodeUtils","startNodeAt","locationNode","reservedTypes","FlowErrors","AmbiguousConditionalArrow","AmbiguousDeclareModuleKind","AssignReservedType","reservedType","DeclareClassElement","DeclareClassFieldInitializer","DuplicateDeclareModuleExports","EnumBooleanMemberNotInitialized","memberName","enumName","EnumDuplicateMemberName","EnumInconsistentMemberValues","EnumInvalidExplicitType","invalidEnumType","EnumInvalidExplicitTypeUnknownSupplied","EnumInvalidMemberInitializerPrimaryType","EnumInvalidMemberInitializerSymbolType","EnumInvalidMemberInitializerUnknownType","EnumInvalidMemberName","suggestion","EnumNumberMemberNotInitialized","EnumStringMemberInconsistentlyInitialized","GetterMayNotHaveThisParam","ImportReflectionHasImportType","ImportTypeShorthandOnlyInPureImport","InexactInsideExact","InexactInsideNonObject","InexactVariance","InvalidNonTypeImportInDeclareModule","MissingTypeParamDefault","NestedDeclareModule","NestedFlowComment","PatternIsOptional","SetterMayNotHaveThisParam","SpreadVariance","ThisParamAnnotationRequired","ThisParamBannedInConstructor","ThisParamMayNotBeOptional","ThisParamMustBeFirst","ThisParamNoDefault","TypeBeforeInitializer","TypeCastInPattern","UnexpectedExplicitInexactInObject","UnexpectedReservedType","UnexpectedReservedUnderscore","UnexpectedSpaceBetweenModuloChecks","UnexpectedSpreadType","UnexpectedSubtractionOperand","UnexpectedTokenAfterTypeParameter","UnexpectedTypeParameterBeforeAsyncArrowFunction","UnsupportedDeclareExportKind","unsupportedExportKind","UnsupportedStatementInDeclareModule","UnterminatedFlowComment","isEsModuleType","bodyElement","hasTypeImportKind","exportSuggestions","let","interface","partition","list1","list2","FLOW_PRAGMA_REGEX","flow","FlowParserMixin","flowPragma","shouldParseTypes","flowParseTypeInitialiser","tok","oldInType","flowParseType","flowParsePredicate","moduloLoc","parseExpression","flowParseTypeAndPredicateInitialiser","flowParseDeclareClass","flowParseInterfaceish","flowParseDeclareFunction","parseIdentifier","typeNode","typeContainer","flowParseTypeParameterDeclaration","tmp","flowParseFunctionTypeParams","flowParseDeclare","insideModule","flowParseDeclareVariable","flowParseDeclareModuleExports","flowParseDeclareModule","flowParseDeclareTypeAlias","flowParseDeclareOpaqueType","flowParseDeclareInterface","flowParseDeclareExportDeclaration","flowParseTypeAnnotatableIdentifier","parseExprAtom","bodyNode","parseImport","hasModuleExport","flowParseTypeAnnotation","finished","flowParseTypeAlias","flowParseOpaqueType","flowParseRestrictedIdentifier","flowParseInterfaceExtends","flowParseObjectType","allowStatic","allowExact","allowSpread","allowProto","allowInexact","flowParseQualifiedTypeIdentifier","flowParseTypeParameterInstantiation","flowParseInterface","checkNotUnderscore","checkReservedType","liberal","flowParseTypeParameter","requireDefault","nodeStartLoc","flowParseVariance","ident","defaultRequired","flowInTopLevelContext","cb","oldContext","flowParseTypeParameterInstantiationInExpression","reScan_lt","oldNoAnonFunctionType","reScan_lt_gt","flowParseTypeParameterInstantiationCallOrNew","flowParseTypeOrImplicitInstantiation","flowParseInterfaceType","flowParseObjectPropertyKey","flowParseObjectTypeIndexer","isStatic","flowParseObjectTypeInternalSlot","flowParseObjectTypeMethodish","flowParseFunctionTypeParam","flowParseObjectTypeCallProperty","valueNode","endDelim","protoStartLoc","inexactStartLoc","propOrInexact","flowParseObjectTypeProperty","flowObjectTypeSemicolon","isInexactToken","flowCheckGetterSetterParams","paramCount","node2","flowParseGenericType","flowParseTypeofType","flowParsePrimaryType","flowParseTupleType","first","lh","isThis","reinterpretTypeAsFunctionTypeParam","flowIdentToTypeAnnotation","isGroupedType","parseLiteralAtNode","createIdentifier","flowParsePostfixType","seenOptionalIndexedAccess","flowParsePrefixType","flowParseAnonFunctionWithoutParens","flowParseIntersectionType","flowParseUnionType","allowPrimitiveOverride","typeCastToParameter","allowExpressionBody","forwardNoArrowParamsConversionAt","parseFunctionBodyAndFinish","parseStatementLike","flowParseEnumDeclaration","parseExpressionStatement","expr","shouldParseExportDeclaration","parseExportDefaultExpression","parseConditional","setOptionalParametersError","originalNoArrowAt","failed","tryParseConditionalConsequent","getArrowLikeExpressions","parseMaybeAssign","parseMaybeAssignAllowIn","disallowInvalid","arrows","finishArrowValidation","every","_node$extra","toAssignableList","trailingCommaLoc","checkParams","parseParenItem","typeCastNode","assertModuleNodeAllowed","parseExportDeclaration","declarationNode","parseExportSpecifiers","parseExportFrom","eatExportStar","maybeParseExportNamespaceSpecifier","hasNamespace","parseClassId","optionalId","parseClassMember","parseClassMemberFromModifier","isIterator","readIterator","fullWord","exprList","toReferencedList","isParenthesizedExpr","_expr$extra","parseArrayLike","close","canBePattern","isTuple","isParenthesized","isNonstaticConstructor","pushClassMethod","allowsDirectSuper","isThisParam","pushClassPrivateMethod","parseClassSuper","superTypeParameters","implemented","checkGetterSetterParams","parsePropertyNamePrefixOperator","parseObjPropValue","parseFunctionParamType","parseMaybeDefault","checkImportReflection","parseImportSpecifierLocal","finishImportSpecifier","isPotentialImportPhase","applyImportPhase","parseImportSpecifier","importedIsString","isInTypeOnlyImport","isMaybeTypeOnly","firstIdent","specifierTypeKind","as_ident","specifierIsTypeImport","checkReservedWord","parseBindingAtom","parseFunctionParams","parseVarId","parseAsyncArrowFromCallExpression","shouldParseAsyncArrow","afterLeftParse","_jsx","jsx","currentContext","_jsx2","_jsx3","abort","_arrowExpression$extr","arrowExpression","maybeUnwrapTypeCastExpression","parseArrow","shouldParseArrow","setArrowFunctionParameters","allowDuplicates","isArrowFunction","strictModeChanged","parseParenAndDistinguishExpression","canBeArrow","parseSubscripts","parseCallExpressionArguments","parseAsyncArrowWithTypeParameters","subscriptState","isLookaheadToken_lt","parseNewCallee","targs","parseArrowExpression","parseTopLevel","fileNode","skipFlowComment","hasFlowCommentCompletion","commentSkip","shiftToFirstNonWhiteSpace","ch2","ch3","flowEnumErrorBooleanMemberNotInitialized","flowEnumErrorInvalidMemberInitializer","enumContext","flowEnumErrorNumberMemberNotInitialized","flowEnumErrorStringMemberInconsistentlyInitialized","flowEnumMemberInit","endOfInit","flowEnumMemberRaw","flowEnumCheckExplicitTypeMismatch","expectedType","flowEnumMembers","seenNames","booleanMembers","numberMembers","stringMembers","defaultedMembers","memberNode","flowEnumStringMembers","initializedMembers","flowEnumParseExplicitType","flowEnumBody","nameLoc","empty","boolsLen","numsLen","strsLen","defaultedLen","jsxParseOpeningElementAfterName","afterNext","entities","quot","amp","apos","nbsp","iexcl","cent","pound","curren","yen","brvbar","sect","uml","copy","ordf","laquo","not","shy","reg","macr","deg","plusmn","sup2","sup3","acute","micro","para","middot","cedil","sup1","ordm","raquo","frac14","frac12","frac34","iquest","Agrave","Aacute","Acirc","Atilde","Auml","Aring","AElig","Ccedil","Egrave","Eacute","Ecirc","Euml","Igrave","Iacute","Icirc","Iuml","ETH","Ntilde","Ograve","Oacute","Ocirc","Otilde","Ouml","times","Oslash","Ugrave","Uacute","Ucirc","Uuml","Yacute","THORN","szlig","agrave","aacute","acirc","atilde","auml","aring","aelig","ccedil","egrave","eacute","ecirc","euml","igrave","iacute","icirc","iuml","eth","ntilde","ograve","oacute","ocirc","otilde","ouml","divide","oslash","ugrave","uacute","ucirc","uuml","yacute","thorn","yuml","OElig","oelig","Scaron","scaron","Yuml","fnof","circ","Alpha","Beta","Gamma","Delta","Epsilon","Zeta","Eta","Theta","Iota","Kappa","Lambda","Mu","Nu","Xi","Omicron","Pi","Rho","Sigma","Tau","Upsilon","Phi","Chi","Psi","Omega","alpha","beta","gamma","delta","epsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","omicron","pi","rho","sigmaf","sigma","tau","upsilon","phi","chi","psi","omega","thetasym","upsih","piv","ensp","emsp","thinsp","zwnj","zwj","lrm","rlm","ndash","mdash","lsquo","rsquo","sbquo","ldquo","rdquo","bdquo","dagger","Dagger","bull","hellip","permil","prime","Prime","lsaquo","rsaquo","oline","frasl","euro","image","weierp","real","trade","alefsym","larr","uarr","rarr","darr","harr","crarr","lArr","uArr","rArr","dArr","hArr","forall","part","exist","nabla","isin","notin","ni","prod","sum","minus","lowast","radic","infin","ang","and","or","cap","cup","int","there4","sim","cong","asymp","ne","equiv","le","ge","sub","sup","nsub","sube","supe","oplus","otimes","perp","sdot","lceil","rceil","lfloor","rfloor","lang","rang","loz","spades","clubs","hearts","diams","JsxErrors","AttributeIsEmpty","MissingClosingTagElement","openingTagName","MissingClosingTagFragment","UnexpectedSequenceExpression","HTMLEntity","UnsupportedJsxValue","UnterminatedJsxContent","UnwrappedAdjacentJSXElements","isFragment","getQualifiedJSXName","JSXParserMixin","jsxReadToken","jsxReadEntity","jsxReadNewLine","normalizeCRLF","jsxReadString","codePoint","count","desc","entity","XHTMLEntities","jsxReadWord","jsxParseIdentifier","jsxParseNamespacedName","jsxParseElementName","jsxParseAttributeValue","setContext","jsxParseExpressionContainer","jsxParseEmptyExpression","jsxParseSpreadChild","previousContext","jsxParseAttribute","jsxParseOpeningElementAt","jsxParseClosingElementAt","jsxParseElementAt","contents","jsxParseElement","newContext","TypeScriptScope","tsNames","TypeScriptScopeHandler","importsStack","hasImport","allowShadow","isConst","wasConst","unwrapParenthesizedExpression","LValParser","_node$extra3","last","_node$extra2","arg","checkToRestConversion","elt","toAssignableListItem","element","toReferencedListDeep","parseSpread","parseRestBinding","parseBindingList","ParseBindingListFlags","parseObjectLike","closeCharCode","allowEmpty","elts","checkCommaAfterRest","parseDecorator","parseBindingElement","parseBindingRestProperty","parseBindingProperty","parsePropertyName","checkLVal","checkClashes","hasParenthesizedAncestor","_expression$extra","checkIdentifier","validity","ParseErrorClass","nextAncestor","declareNameFromIdentifier","allowPattern","nonNull","x","TSErrors","AbstractMethodHasImplementation","methodName","AbstractPropertyHasInitializer","propertyName","AccessorCannotBeOptional","ClassMethodHasDeclare","ClassMethodHasReadonly","ConstructorHasTypeParameters","DeclareAccessor","DeclareClassFieldHasInitializer","DeclareFunctionHasImplementation","DuplicateAccessibilityModifier","modifier","DuplicateModifier","EmptyHeritageClauseType","EmptyTypeArguments","EmptyTypeParameters","ExpectedAmbientAfterExportDeclare","ImportAliasHasImportType","IncompatibleModifiers","modifiers","IndexSignatureHasAbstract","IndexSignatureHasAccessibility","IndexSignatureHasDeclare","IndexSignatureHasOverride","IndexSignatureHasStatic","InitializerNotAllowedInAmbientContext","InvalidHeritageClauseType","InvalidModifierOnTypeMember","InvalidModifierOnTypeParameter","InvalidModifierOnTypeParameterPositions","InvalidModifiersOrder","orderedModifiers","InvalidPropertyAccessAfterInstantiationExpression","InvalidTupleMemberLabel","MissingInterfaceName","NonAbstractClassHasAbstractMethod","NonClassMethodPropertyHasAbstractModifer","OptionalTypeBeforeRequired","OverrideNotInSubClass","PrivateElementHasAbstract","PrivateElementHasAccessibility","ReadonlyForMethodSignature","ReservedArrowTypeParam","ReservedTypeAssertion","SingleTypeParameterWithoutTrailingComma","typeParameterName","StaticBlockCannotHaveModifier","TupleOptionalAfterType","TypeAnnotationAfterAssign","TypeImportCannotSpecifyDefaultAndNamed","TypeModifierIsUsedInTypeExports","TypeModifierIsUsedInTypeImports","UnexpectedParameterModifier","UnexpectedReadonly","UnexpectedTypeAnnotation","UnexpectedTypeCastInParameter","UnsupportedImportTypeArgument","UnsupportedParameterPropertyKind","UnsupportedSignatureParameterKind","keywordTypeFromName","tsIsAccessModifier","tsIsVarianceAnnotations","typescript","TypeScriptParserMixin","tsParseInOutModifiers","tsParseModifiers","allowedModifiers","disallowedModifiers","errorTemplate","tsParseConstModifier","tsParseInOutConstModifiers","tsIsIdentifier","tsTokenCanFollowModifier","tsNextTokenOnSameLineAndCanFollowModifier","tsNextTokenCanFollowModifier","tsParseModifier","stopOnStartOfClassStaticBlock","tsIsStartOfStaticBlocks","tsTryParse","modified","enforceOrder","before","after","incompatible","mod1","mod2","tsIsListTerminator","tsParseList","parseElement","tsParseDelimitedList","refTrailingCommaPos","tsParseDelimitedListWorker","expectSuccess","trailingCommaPos","tsParseBracketedList","bracket","skipFirstToken","tsParseImportType","tsParseEntityName","tsParseEntityNameFlags","tsParseTypeArguments","tsParseTypeReference","tsParseThisTypePredicate","lhs","tsParseTypeAnnotation","tsParseThisTypeNode","tsParseTypeQuery","tsParseTypeParameter","parseModifiers","tsParseTypeParameterName","tsEatThenParseType","tsTryParseTypeParameters","tsParseTypeParameters","tsFillSignature","returnToken","signature","returnTokenRequired","paramsKey","returnTypeKey","tsParseBindingListForSignature","tsParseTypeOrTypePredicateAnnotation","tsParseTypeMemberSemicolon","tsParseSignatureMember","tsIsUnambiguouslyIndexSignature","tsTryParseIndexSignature","tsLookAhead","tsTryParseTypeAnnotation","tsParsePropertyOrMethodSignature","nodeAny","firstParameter","tsParseTypeMember","idx","tsParseTypeLiteral","tsParseObjectTypeMembers","tsIsStartOfMappedType","tsParseMappedType","tsExpectThenParseType","tsParseType","tsTryParseType","tsParseTupleType","tsParseTupleElementType","seenOptionalElement","elementNode","restStartLoc","labeled","isWord","chAfterWord","wordName","typeOrLabel","tsParseNonArrayType","labeledNode","optionalTypeNode","restNode","tsParseParenthesizedType","tsParseFunctionOrConstructorType","tsInAllowConditionalTypesContext","tsParseLiteralTypeNode","tsParseTemplateLiteralType","parseTemplate","parseTemplateSubstitution","tsParseThisTypeOrThisTypePredicate","thisKeyword","parseMaybeUnary","tsParseArrayTypeOrHigher","tsParseTypeOperator","tsParseTypeOperatorOrHigher","tsCheckTypeAnnotationForReadOnly","tsParseInferType","tsParseConstraintForInferType","tsInDisallowConditionalTypesContext","isTypeOperator","tsParseUnionOrIntersectionType","parseConstituentType","hasLeadingOperator","tsParseIntersectionTypeOrHigher","tsParseUnionTypeOrHigher","tsIsStartOfFunctionType","tsIsUnambiguouslyStartOfFunctionType","tsSkipParameterStart","previousErrorCount","_unused2","tsInType","tsParseTypePredicateAsserts","thisTypePredicate","typePredicateVariable","tsParseTypePredicatePrefix","tsTryParseTypeOrTypePredicateAnnotation","eatColon","tsParseNonConditionalType","isAbstractConstructorSignature","tsParseTypeAssertion","tsParseHeritageClause","originalStartLoc","delimitedList","tsParseInterfaceDeclaration","tsParseTypeAliasDeclaration","tsInTopLevelContext","oldInDisallowConditionalTypesContext","tsNextThenParseType","tsParseEnumMember","tsParseEnumDeclaration","tsParseEnumBody","tsParseModuleBlock","parseBlockOrModuleBlockBody","tsParseModuleOrNamespaceDeclaration","nested","inner","tsParseAmbientExternalModuleDeclaration","tsParseImportEqualsDeclaration","maybeDefaultIdentifier","tsParseModuleReference","tsIsExternalModuleReference","tsParseExternalModuleReference","tsTryParseAndCatch","tsTryParseDeclare","nany","startType","tsInAmbientContext","parseFunctionStatement","parseClass","parseVarStatement","tsParseDeclaration","tsTryParseExportDeclaration","tsParseExpressionStatement","mod","tsCheckLineTerminator","tsParseAbstractDeclaration","tsTryParseGenericAsyncArrowFunction","oldMaybeInArrowParameters","tsParseTypeArgumentsInExpression","tsIsDeclarationStart","pp","isSimpleParameter","tsDisallowOptionalPattern","bodilessType","registerFunctionStatementId","tsCheckForInvalidTypeCasts","items","isInParens","nonNullExpression","isOptionalCall","missingParenErrorLoc","atPossibleAsyncArrow","asyncArrowFn","parseTaggedTemplateExpression","tokenType","_callee$extra","parseExprOp","leftStartLoc","minPrec","isSatisfies","checkKeywords","checkDuplicateExports","importNode","parseMaybeImportPhase","parseImportSpecifiersAndAfter","nodeImportEquals","isAbstractClass","cls","allowMissingInitializer","isValidAmbientConstInitializer","parseStatementContent","parseAccessModifier","tsHasSomeModifiers","callParseClassMemberWithIsStatic","parseClassStaticBlock","parseClassMemberWithIsStatic","hadSuperClass","parsePostMemberNameModifiers","methodOrProp","isDeclare","parseClassPropertyAnnotation","parseClassAccessorProperty","declareClassPrivateMethodInScope","_typeCast","_typeCast2","typeCast","_typeParameters","reportReservedArrowTypeParam","trailingComma","sawUnary","toAssignableParenthesizedExpression","parseMaybeDecoratorArguments","canHaveLeadingDecorator","getGetterSetterExpectedParamCount","baseCount","firstParam","hasContextParam","parseCatchClauseParam","oldIsAmbientContext","oldStrict","oldInAbstractClass","maybeTakeDecorators","hasEstreePlugin","methodFn","shouldParseAsAmbientContext","getExpression","parseExportSpecifier","isString","isInTypeExport","parseTypeOnlyImportExportSpecifier","isInTypeOnlyImportExport","leftOfAsKey","rightOfAsKey","leftOfAs","rightOfAs","hasTypeSpecifier","canParseAsKeyword","firstAs","secondAs","parseModuleExportName","kindKey","isPossiblyLiteralEnum","isUncomputedMemberExpressionChain","isNegativeNumber","PlaceholderErrors","ClassNameIsRequired","UnexpectedSpace","placeholders","PlaceholdersParserMixin","parsePlaceholder","assertNoSpace","finishPlaceholder","chStartsBindingIdentifier","verifyBreakContinue","isBreak","parseStatementOrSloppyAnnexBFunctionDeclaration","stmtPlaceholder","parseBlock","createNewLexicalScope","parseFunctionId","requireId","parseClassBody","startsWith","maybeParseExportDefaultSpecifier","_specifiers","checkExport","hasStarImport","maybeParseStarImportSpecifier","parseNamedImportSpecifiers","parseImportSource","v8intrinsic","V8IntrinsicMixin","parseV8Intrinsic","v8IntrinsicStartLoc","parseIdentifierName","PIPELINE_PROPOSALS","TOPIC_TOKENS","validatePlugins","pluginsMap","_pluginsMap$get","proposalList","p","tupleSyntaxIsHash","syntaxType","tokenList","moduleAttributesVersionPluginOption","RECORD_AND_TUPLE_SYNTAX_TYPES","missingPlugins","mixinPlugins","mixinPluginNames","ExpressionParser","checkProto","isRecord","sawProto","shouldExitDescending","disallowIn","disallowInAnd","parseExpressionBase","allowInAnd","parseMaybeAssignDisallowIn","parseYield","ownExpressionErrors","parseMaybeConditional","parseExprOps","parseMaybeUnaryOrPrivate","prec","checkPipelineAtInfixOperator","logical","coalesce","parseExprOpRightExpr","finishedNode","nextOp","withTopicBindingContext","parseHackPipeBody","withSoloAwaitPermittingContext","parseFSharpPipelineBody","parseSmartPipelineBodyInStyle","parseExprOpBaseRightExpr","_body$extra","requiredParentheses","topicReferenceWasUsedInCurrentContext","checkExponentialAfterUnary","isAwait","recordAwaitIfAllowed","parseAwait","isDelete","parseUpdate","isAmbiguousAwait","updateExpressionNode","parseExprSubscripts","maybeAsyncArrow","parseBind","parseCoverCallAndAsyncArrowHead","parseMember","parseNoCallExpr","allowPlaceholder","nodeForExtra","oldInFSharpPipelineDirectBody","addTrailingCommaExtraToNode","parseExprListItem","_call$extra","parseSuper","parseImportMetaProperty","parseImportCall","parseDo","parseFunctionOrFunctionSent","parseDecorators","parseNewOrNewTarget","parseTopicReferenceThenEqualsSign","parseTopicReference","pipeProposal","parseModuleExpression","parseAsyncFunctionExpression","parseAsyncArrowUnaryFunction","topicTokenType","topicTokenValue","finishTopicReference","testTopicReferenceConfiguration","topicReferenceIsAllowedInCurrentContext","registerTopicReference","parseMetaProperty","parseFunction","isSource","innerStartLoc","spreadStartLoc","optionalCommaStartLoc","spreadNodeStartLoc","innerEndLoc","arrowNode","wrapParenthesis","parenExpression","metaProp","parseNew","parseExprList","parseTemplateElement","isTagged","elemStart","elem","isTail","endOffset","elemEnd","curElt","substitutions","parsePropertyDefinition","maybeAsyncOrAccessorProp","keyName","_params","finishedProp","hasStrictModeDirective","nonSimple","isSimpleParamList","formalParameters","reservedTest","isAwaitAllowed","delegating","childExpr","isSimpleReference","checkSmartPipeTopicBodyEarlyErrors","outerContextTopicState","withSmartMixTopicForbiddingContext","outerContextSoloAwaitState","prodParamToSet","ParamKind","prodParamToClear","revertScopes","parseProgram","loopLabel","switchLabel","loneSurrogate","keywordRelationalOperator","babel7CompatTokens","hashEndPos","hashEndLoc","backquoteEnd","backquoteEndLoc","startToken","templateValue","templateElementEnd","templateElementEndLoc","endToken","StatementParser","parseInterpreterDirective","finishedProgram","stmtToDirective","hasFollowingBindingAtom","endCh","chStartsBindingPattern","hasInLineFollowingBindingIdentifierOrBrace","startsUsingForOf","startsAwaitUsing","parseModuleItem","ParseStatementFlag","parseStatementListItem","allowLabeledFunction","parseStatement","allowDeclaration","allowFunctionDeclaration","parseBreakContinueStatement","parseDebuggerStatement","parseDoWhileStatement","parseForStatement","parseIfStatement","parseReturnStatement","parseSwitchStatement","parseThrowStatement","parseTryStatement","parseWhileStatement","parseWithStatement","parseEmptyStatement","nextTokenCharCode","isAsyncFunction","maybeName","parseLabeledStatement","decoratorsEnabledBeforeExport","maybeDecorators","classNode","exportNode","_classNode$decorators","allowExport","paramsStartLoc","lab","parseHeaderExpression","awaitAt","parseFor","startsWithLet","startsWithAwaitUsing","starsWithUsingDeclaration","isLetOrUsing","initNode","parseVar","isForIn","parseForIn","startsWithAsync","isForOf","isHangingDeclaration","ParseFunctionFlag","cur","sawDefault","isCase","clause","statementStart","parsedNonDirective","hangingDeclaration","hadConstructor","publicMethod","privateMethod","publicProp","privateProp","accessorProp","publicMember","parseClassElementName","maybeContextualKw","maybeQuestionTokenStartLoc","pushClassPrivateProperty","pushClassProperty","pushClassAccessorProperty","_member$decorators","parseInitializer","hasDefault","parseAfterDefault","hasStar","parseAfterNamespace","isFromRequired","hasSpecifiers","maybeParseExportNamedSpecifiers","hasDeclaration","maybeParseExportDeclaration","_node2$declaration","_ref$specifiers","isTypeExport","nextType","hasFrom","nextAfterFrom","maybeParseImportAttributes","checkJSONModuleImport","checkNames","isDefault","isFrom","_node$specifiers","_declaration$extra","surrogate","isJSONModuleImport","singleBindingType","_node$assertions","nonDefaultNamedSpecifier","find","phaseIdentifier","isImportPhase","isPrecedingIdImportPhase","parseImportSourceAndAttributes","maybeParseDefaultImportSpecifier","parseNext","_node$specifiers2","parseImportAttributes","attrs","attrNames","parseModuleAttributes","useWith","Parser","_options","getParser","moduleError","generateExportedTokenTypes","internalTokenTypes","tokTypes","getParserClass","parserClassCache","pluginList","picocolors","buildDefs","defsOn","defsOff","_parser","_codeFrame","PATTERN","parseAndBuildMetadata","formatter","parseWithCodeFrame","syntactic","placeholderNames","placeholderVisitorHandler","_state$placeholderWhi","hasSyntacticPlaceholders","resolve","resolveAncestors","isDuplicate","populatePlaceholders","metadata","placeholderName","reverse","applyReplacement","_parse","_populate","stringTemplate","literalTemplate","tpl","buildLiteralData","defaultReplacements","buildTemplateCode","_string","_literal","NO_PLACEHOLDER","createTemplateBuilder","defaultOpts","templateFnCache","templateAstCache","cachedOpts","extendedTrace","rootStack","formatters","_builder","smart","statement","statements","_template","helper","minVersion","freeze","helpers","OverloadYield","locals","_OverloadYield","exportBindingAssignments","dependencies","applyDecoratedDescriptor","_applyDecoratedDescriptor","applyDecs2311","checkInRHS","setFunctionName","toPropertyKey","arrayLikeToArray","_arrayLikeToArray","arrayWithHoles","_arrayWithHoles","arrayWithoutHoles","_arrayWithoutHoles","assertClassBrand","_assertClassBrand","assertThisInitialized","_assertThisInitialized","asyncGeneratorDelegate","_asyncGeneratorDelegate","asyncIterator","_asyncIterator","AsyncFromSyncIterator","asyncToGenerator","asyncGeneratorStep","_asyncToGenerator","awaitAsyncGenerator","_awaitAsyncGenerator","callSuper","_callSuper","isNativeReflectConstruct","possibleConstructorReturn","_checkInRHS","checkPrivateRedeclaration","_checkPrivateRedeclaration","classCallCheck","_classCallCheck","classNameTDZError","_classNameTDZError","classPrivateFieldGet2","_classPrivateFieldGet2","classPrivateFieldInitSpec","_classPrivateFieldInitSpec","classPrivateFieldLooseBase","_classPrivateFieldBase","classPrivateFieldLooseKey","_classPrivateFieldKey","classPrivateFieldSet2","_classPrivateFieldSet2","classPrivateGetter","_classPrivateGetter","classPrivateMethodInitSpec","_classPrivateMethodInitSpec","classPrivateSetter","_classPrivateSetter","classStaticPrivateMethodGet","_classStaticPrivateMethodGet","construct","_construct","setPrototypeOf","createClass","_defineProperties","_createClass","createForOfIteratorHelper","_createForOfIteratorHelper","unsupportedIterableToArray","createForOfIteratorHelperLoose","_createForOfIteratorHelperLoose","createSuper","_createSuper","decorate","_decorate","_getDecoratorsApi","_createElementDescriptor","_coalesceGetterSetter","_coalesceClassElements","_hasDecorators","_isDataDescriptor","_optionalCallableProperty","toArray","defaults","_defaults","defineAccessor","_defineAccessor","_defineProperty","superPropBase","_getPrototypeOf","identity","_identity","importDeferProxy","_importDeferProxy","inheritsLoose","_inheritsLoose","initializerDefineProperty","_initializerDefineProperty","initializerWarningHelper","_initializerWarningHelper","instanceof","_interopRequireDefault","interopRequireWildcard","isNativeFunction","_isNativeFunction","_isNativeReflectConstruct","iterableToArray","_iterableToArray","iterableToArrayLimit","_iterableToArrayLimit","REACT_ELEMENT_TYPE","_createRawReactElement","maybeArrayLike","_maybeArrayLike","newArrowCheck","_newArrowCheck","nonIterableRest","_nonIterableRest","nonIterableSpread","_nonIterableSpread","nullishReceiverError","_nullishReceiverError","objectDestructuringEmpty","_objectDestructuringEmpty","objectSpread2","ownKeys","_objectSpread2","objectWithoutProperties","_objectWithoutProperties","objectWithoutPropertiesLoose","_possibleConstructorReturn","readOnlyError","_readOnlyError","regeneratorRuntime","_regeneratorRuntime","_setPrototypeOf","skipFirstGeneratorNext","_skipFirstGeneratorNext","slicedToArray","_slicedToArray","_superPropBase","superPropGet","_superPropGet","superPropSet","_superPropSet","taggedTemplateLiteral","_taggedTemplateLiteral","taggedTemplateLiteralLoose","_taggedTemplateLiteralLoose","tdz","_tdzError","temporalRef","_temporalRef","temporalUndefined","_temporalUndefined","_toArray","toConsumableArray","_toConsumableArray","toPrimitive","toSetter","_toSetter","typeof","_unsupportedIterableToArray","usingCtx","_usingCtx","wrapAsyncGenerator","_wrapAsyncGenerator","AsyncGenerator","wrapNativeSuper","_wrapNativeSuper","wrapRegExp","_wrapRegExp","writeOnlyError","_writeOnlyError","AwaitValue","_AwaitValue","applyDecs","old_createMetadataMethodsForProperty","old_convertMetadataMapToFinal","old_createAddInitializerMethod","old_memberDec","old_assertNotFinished","old_assertMetadataKey","old_assertCallable","old_assertValidReturnValue","old_getInit","old_applyMemberDec","old_applyMemberDecs","old_pushInitializers","old_applyClassDecs","applyDecs2203","applyDecs2203Factory","applyDecs2203Impl","applyDecs2203R","applyDecs2203RFactory","applyDecs2301","applyDecs2301Factory","applyDecs2305","classApplyDescriptorDestructureSet","_classApplyDescriptorDestructureSet","classApplyDescriptorGet","_classApplyDescriptorGet","classApplyDescriptorSet","_classApplyDescriptorSet","classCheckPrivateStaticAccess","_classCheckPrivateStaticAccess","classCheckPrivateStaticFieldDescriptor","_classCheckPrivateStaticFieldDescriptor","classExtractFieldDescriptor","_classExtractFieldDescriptor","classPrivateFieldDestructureSet","_classPrivateFieldDestructureSet","classPrivateFieldGet","_classPrivateFieldGet","classPrivateFieldSet","_classPrivateFieldSet","classPrivateMethodGet","_classPrivateMethodGet","classPrivateMethodSet","_classPrivateMethodSet","classStaticPrivateFieldDestructureSet","_classStaticPrivateFieldDestructureSet","classStaticPrivateFieldSpecGet","_classStaticPrivateFieldSpecGet","classStaticPrivateFieldSpecSet","_classStaticPrivateFieldSpecSet","classStaticPrivateMethodSet","_classStaticPrivateMethodSet","defineEnumerableProperties","_defineEnumerableProperties","dispose","dispose_SuppressedError","_dispose","objectSpread","_objectSpread","using","_helpersGenerated","permuteHelperAST","localBindings","getDependency","adjustAst","paths","entries","o","ref","helperData","loadHelper","ReferenceError","getDependencies","nodeIsBlockScoped","nodeIsExpression","nodeIsFlow","nodeIsRestElement","nodeIsReferenced","nodeIsScope","nodeIsStatement","nodeIsVar","react","isReferencedIdentifier","parentPath","isReferencedMemberExpression","isBindingIdentifier","isUser","isGenerated","isPure","constantsOnly","_this$parentPath","_this$parentPath2","isForAwaitStatement","isExistentialTypeParam","isNumericLiteralTypeAnnotation","virtualTypes","virtualTypesValidators","_context","TYPES","__internal__deprecationWarning","isVirtualType","isExplodedVisitor","_exploded","explode$1","shouldIgnoreKey","verify$1","__esModule","ensureEntranceObjects","ensureCallbackArrays","wrapCheck","mergePair","deprecatedKey","_verified","validateVisitorMethods","visitors","visitorKey","states","wrapper","mergedVisitor","topVisitor","wrapWithStateOrWrapper","typeVisitor","nodeVisitor","oldVisitor","newVisitor","newFn","fnKey","apply","dest","src","_environmentVisitor","FunctionParent","requeueComputedKeyAndDecorators","Property","environmentVisitor","_traverseNode","_visitors","renameVisitor","ReferencedIdentifier","bindingIdentifierEquals","getBindingIdentifier","Renamer","maybeConvertFromExportDeclaration","parentDeclar","maybeExportDeclar","splitExportDeclaration","maybeConvertFromClassFunctionDeclaration","maybeConvertFromClassFunctionExpression","rename","bindingIds","blockToTraverse","skipKeys","traverseNode","explode","removeOwnBinding","Binding","constantViolations","constant","referencePaths","referenced","references","isDeclaredInLoop","reassign","clearValue","deoptValue","hasDeoptedValue","setValue","hasValue","reference","dereference","pathsCache","clearPath","clearScope","nullHub","getCachedPaths","hub","_pathsCache$get","getOrCreateCachedPaths","parents","_renamer","_binding","_globals","_cache","NOT_LOCAL_BINDING","gatherNodeParts","collectorVisitor","parentScope","getFunctionParent","getProgramParent","registerBinding","registerDeclaration","getBlockParent","ForXStatement","ExportDeclaration","getBinding","assignments","BlockScoped","inited","uids","data","crawling","cached","scopeCache","_parent","_path","shouldSkip","generateDeclaredUidIdentifier","generateUidIdentifier","generateUid","hasLabel","hasBinding","hasGlobal","hasReference","generateUidBasedOnNode","defaultName","generateUidIdentifierBasedOnNode","maybeGenerateMemoised","dontPush","checkBlockScopedCollisions","duplicate","buildError","renamer","dump","sep","log","violations","getLabel","registerLabel","isTypeDeclaration","isTypeSpecifier","registerConstantViolation","_this$getBinding","bindingPath","declarators","getOwnBinding","addGlobal","hasUid","_node$decorators","_node$decorators2","_node$decorators3","noGlobals","setData","getData","removeData","crawl","programParent","visit","typeVisitors","getPatternParent","unique","pushContainer","blockHoist","_blockHoist","dataKey","declarPath","unshiftContainer","declarator","getAllBindings","previousPath","_previousPath","_this$getBinding2","getOwnBindingIdentifier","hasOwnBinding","noUids","contextVariables","parentHasBinding","_this$parent","moveBindingTo","info","removeBinding","_this$getBinding3","hoistVariables","emit","seen","firstId","replaceWith","remove","builtin","_renameFromMap","_generateUid","arrayLikeIsIterable","isGenericType","helperName","addHelper","getAllBindingsOfKind","kinds","defineProperties","parentBlock","sort","UrlType","binarySearch","sourceIndex","generated","SetArray","put","encode","TraceMap","decodedMappings","_genMapping","_traceMapping","SourceMap","_opts$sourceFileName","_map","_rawMappings","_sourceFileName","_lastGenLine","_lastSourceLine","_lastSourceColumn","_inputMap","GenMapping","sourceRoot","sourceFileName","inputSourceMap","resolvedSources","_this$_inputMap$sourc","setSourceContent","sourcesContent","toEncodedMap","getDecoded","toDecodedMap","getRawMappings","allMappings","mark","identifierNamePos","_originalMapping","originalMapping","originalPositionFor","originalIdentifierMapping","maybeAddMapping","original","Buffer","indentChar","_buf","_str","_appendCount","_last","_queue","_queueCursor","_canMarkIdName","_indentChar","_fastIndentations","_position","_sourcePosition","_allocQueue","queue","_pushQueue","cursor","_popQueue","_flush","trimRight","decodedMap","__mergedMap","resultMap","rawMappings","mappings","maybeNewline","_append","appendChar","_appendChar","sourcePosition","queueIndentation","queueCursor","fastIndentation","_mark","_this$_map","removeTrailingNewline","removeLastSemicolon","getLastChar","getNewlineCount","endsWithCharAndNewline","lastCp","hasContent","exactSource","_normalizePosition","sourceWithOffset","getCurrentColumn","getCurrentLine","crawlInternal","hasCall","hasFunction","hasHelper","isHelper","Literal","_parent$properties","_parent$properties2","_parent$callPropertie","_parent$properties3","_parent$callPropertie2","_parent$indexers","amounts","PRECEDENCE","getBinaryPrecedence","isTSTypeExpression","isClassExtendsClause","parentType","hasPostfixPart","tokenContext","TokenContext","arrowFlowReturnType","needsParenBeforeExpressionBrace","arrowBody","Binary","parentPos","nodePos","inForStatementInit","exportDefault","UnaryLike","_inForInit","getRawIdentifier","rightType","isFollowedByBracket","forHead","forInHead","forOfHead","whitespace","parens","expandAliases","func","inForInit","_fn","expandedParens","expandedWhitespaceNodes","isOrHasCallExpression","needsWhitespace","_expandedWhitespaceNo","flag","needsWhitespaceBefore","needsWhitespaceAfter","needsParens","_expandedParens$get","isDecoratorMemberExpression","isLastChild","TokenMap","_tokens","_nodesToTokenIndexes","_nodesOccurrencesCountCache","_tokensCache","indexes","_getTokensIndexesOfNode","getIndexes","condition","findLastIndex","findMatching","occurrenceCount","matchesOriginal","startMatches","endMatches","_findTokensOfNode","low","childrenIterator","childTok","high","_findFirstTokenOfNode","_findLastTokenOfNode","mid","print","_printTemplate","partRaw","tokenMap","_catchUpTo","space","enterDelimited","rightParens","format","minified","printList","shouldPrintTrailingComma","ThisExpression","Super","_shouldPrintDecoratorsBeforeExport","newline","Import","printTerminatorless","EmptyStatement","_endsWithDiv","indent","dedent","rightBrace","printBlock","needsBlock","getLastStatement","printAndIndentOnComments","endsWith","enterForStatementInit","noIndentInnerCommentsHere","printStatementAfterKeyword","printSequence","addNewlines","leading","cas","DebuggerStatement","hasInits","inExport","printJoin","separator","classBodyEmptySemicolonsPrinter","nextLocIndex","advanceNextLocIndex","preserveFormat","_node$key$loc","catchUp","tsPrintClassMemberModifiers","_variance","_node$key$loc2","_classMethodHead","_node$key$loc3","_methodHead","idNode","parentNode","nameInfo","_getFuncIdName","sourceIdentifierName","_parameters","noLineTerminator","_noLineTerminator","paramLength","_param","_predicate","noLineTerminatorAfter","_functionHead","_endsWithInnerRaw","_shouldPrintArrowParamsParens","printInnerComments","_firstParam$leadingCo","_firstParam$trailingC","arrowToken","retainLines","_id$loc","_id$loc2","_id$loc3","_id$loc4","warningShown","_printAttributes","hasPreviousBrace","useAssertKeyword","_node$attributes","maybePrintDecoratorsBeforeExport","hasSpecial","hasBrace","_node$attributes2","_node$assertions2","_node$attributes3","_node$assertions3","isTypeKind","lowercase","hexadecimal","_jsesc","lastRawIdentNode","lastRawIdentResult","_getRawIdentifier","_originalCode","_node$loc","ArgumentPlaceholder","elems","recordAndTupleSyntaxType","NullLiteral","getPossibleRaw","jsescOption","numbers","jsesc","validTopicTokenSet","TopicReference","givenTopicTokenJSON","validTopics","PipelinePrimaryTopicReference","_modules","_types2","AnyTypeAnnotation","BooleanTypeAnnotation","NullLiteralTypeAnnotation","_interfaceish","InferredPredicate","FlowExportDeclaration","enumExplicitType","hasExplicitType","enumBody","enumInitializedMember","ExistsTypeAnnotation","_node$extends","_node$mixins","_node$implements","_node$variance","andSeparator","_node$extends2","MixedTypeAnnotation","EmptyTypeAnnotation","NumberTypeAnnotation","StringTypeAnnotation","ThisTypeAnnotation","SymbolTypeAnnotation","orSeparator","VoidTypeAnnotation","_node$directives","directivesLen","_node$directives$trai","_node$directives2","_node$directives$trai2","unescapedSingleQuoteRE","unescapedDoubleQuoteRE","open","spaceSeparator","JSXEmptyExpression","JSXOpeningFragment","JSXClosingFragment","printTrailingSeparator","tsPrintSignatureDeclarationBase","maybePrintTrailingCommaOrSemicolon","tsPrintPropertyOrMethodName","TSAnyKeyword","TSBigIntKeyword","TSUnknownKeyword","TSNumberKeyword","TSObjectKeyword","TSBooleanKeyword","TSStringKeyword","TSSymbolKeyword","TSVoidKeyword","TSUndefinedKeyword","TSNullKeyword","TSNeverKeyword","TSIntrinsicKeyword","TSThisType","tsPrintFunctionOrConstructorType","printBraced","tsPrintUnionOrIntersectionType","_printer$tokenMap","hasLeadingToken","tokenIfPlusMinus","self","TSClassImplements","extendz","_this$shouldPrintTrai","isPrivateField","isPublicField","printModifiersList","_printer$tokenMap2","modifiersSet","_templateLiterals","_expressions","_statements","_classes","_methods","_types","_flow","_base","_typescript","addDeprecatedGenerators","PrinterClass","deprecatedBabel7Generators","Noop","_buffer","_tokenMap","generatorFunctions","_deprecated","SCIENTIFIC_NOTATION","ZERO_DECIMAL_INTEGER","HAS_NEWLINE","HAS_NEWLINE_OR_BlOCK_COMMENT_END","commentIsNewline","Printer","originalCode","_currentNode","_indent","_indentRepeat","_insideAux","_noLineTerminatorAfterNode","_printAuxAfterOnNextUserNode","_printedComments","_endsWithInteger","_endsWithWord","_lastCommentLine","_indentInnerComments","_boundGetRawIdentifier","_printSemicolonBeforeNextNode","_printSemicolonBeforeNextToken","style","oldInForStatementInit","oldNoLineTerminatorAfterNode","generate","_maybeAddAuxComment","compact","concise","_space","_maybePrintInnerComments","_catchUpToCurrentToken","isNonDecimalLiteral","secondChar","lastChar","strFirst","tokenChar","_newline","_catchUp","_maybeIndent","firstChar","_getIndent","_shouldIndent","spacesCount","spaces","trailingCommentsLineOffset","_node$leadingComments","_node$leadingComments2","oldConcise","_compact","printMethod","oldInAux","shouldPrintParens","retainFunctionParens","indentParenthesized","oldInForStatementInitWasTrue","_node$trailingComment","_printLeadingComments","_printTrailingComments","enteredPositionlessNode","_printAuxBeforeComment","_printAuxAfterComment","auxiliaryCommentBefore","_printComment","auxiliaryCommentAfter","_nodes$0$loc","newlineOpts","nextNodeStartLine","boundSeparator","_printNewline","_node$trailingComment2","_nextNode$loc","nextNode","lineOffset","_printComments","nextTokenStr","nextTokenOccurrenceCount","_this$tokenMap","hasSpace","printedCommentsCount","commaSeparator","listEnd","listEndIndex","newLine","lastCommentLine","_shouldPrintComment","commentTok","shouldPrintComment","skipNewLines","isBlockComment","printNewLines","lastCharCode","adjustMultilineComment","_comment$loc","newlineRegex","indentSize","nodeLoc","hasLoc","nodeStartLine","nodeEndLine","lastLine","leadingCommentNewline","shouldPrint","commentStartLine","commentEndLine","singleLine","shouldSkipNewline","_sourceMap","_printer","normalizeOptions","experimental_preserveFormat","quotes","wrap","minimal","_opts$recordAndTupleS","json","jsonCompatibleStrings","CodeGenerator","_ast","_format","sourceMaps","findParent","getStatementParent","container","getEarliestCommonAncestorFrom","getDeepestCommonAncestorFrom","deepest","ancestries","earliest","ancestry","earliestKeyIndex","currentKeyIndex","minDepth","lastCommonIndex","lastCommon","depthLoop","shouldMatch","getAncestry","isAncestor","maybeDescendant","isDescendant","maybeAncestor","candidateTypes","createUnionTypeAnnotation","createUnionType","_util","getTypeAnnotationBindingConstantViolations","functionConstantViolations","getConstantViolationsBefore","testType","getConditionalAnnotation","testConstantViolations","violation","getTypeAnnotation","functions","status","_guessExecutionStatusRelativeTo","inferAnnotationFromBinaryExpression","typeofPath","typePath","typeValue","getParentConditionalPath","_infererReference","validParent","isBaseType","argumentTypes","Func","isArrayFrom","isObjectKeys","isObjectValues","isObjectEntries","resolveCall","inferers","_getTypeAnnotation","typeAnnotationInferringNodes","WeakSet","declarParent","_inferer","inferer","baseName","soft","_isBaseType","couldBeBaseType","type2","baseTypeStrictlyMatches","rightArg","removeParent","_removalHooks","_replacement","_modification","_this$opts","_assertUnremoved","resync","_callRemovalHooks","_markRemoved","noScope","_removeFromScope","shareCommentsWithSiblings","_remove","hooks","updateSiblingKeys","_replaceWith","_traverseFlags","SHOULD_SKIP","REMOVED","removed","buildCodeFrameError","_t2","referenceVisitor","breakOnScopePaths","mutableBinding","PathHoister","scopes","attachAfter","isCompatibleScope","getCompatibleScopes","getAttachmentPath","_getAttachmentPath","targetScope","bindingParentPath","getAttachmentParentForPath","violationPath","hasOwnParamBindings","bodies","getNextScopeAttachmentParent","run","attachTo","insertFn","attached","_removal","_hoister","insertBefore","nodes_","_verifyNodeList","isNodeType","replaceExpressionWithStatements","_containerInsertBefore","isStatementOrBlock","shouldInsertCurrentNode","_containerInsert","_this$context","to","getSibling","pushContext","contexts","_getQueueContexts","setScope","maybeQueue","_containerInsertAfter","arr","isHiddenInSequenceExpression","isAlmostConstantAssignment","blockScope","insertAfter","temp","fromIndex","incrementBy","msg","NodePath","verifiedNodes","replaceWithMultiple","hoist","hoister","FUNCTION_TYPES","_getCachedPaths","requeue","replaceWithSourceString","expressionAST","replacementPath","nodePath","canHaveVariableDeclarationOrExpression","canSwapBetweenExpressionAndStatement","oldNode","_getCachedPaths2","inList","nodesAsSingleExpression","functionParent","isParentAsync","isParentGenerator","completionRecords","getCompletionRecords","arrowFunctionToExpression","newCallee","needToAwaitFunction","hasType","needToYieldFunction","replaceInline","VALID_OBJECT_CALLEES","VALID_IDENTIFIER_CALLEES","INVALID_METHODS","isValidObjectCallee","isValidIdentifierCallee","isInvalidMethod","evaluateTruthy","evaluate","confident","deopt","deoptPath","Globals","NaN","evaluateCached","resolved","_evaluate","evaluateQuasis","testResult","bindingPathScope","hasUnsafeBlock","_scope$path$parentPat","elemValue","keyPath","valuePath","wasConfident","leftConfident","rightConfident","pow","super","stringPath","setup","unwrapFunctionEnvironment","hoistFunctionEnvironment","setType","allowInsertArrow","allowInsertArrowWithRest","noNewArrows","_arguments$","specCompliant","_self$ensureFunctionN","ensureFunctionName","thisBinding","fnPath","checkBinding","getSuperCallsVisitor","allSuperCalls","arrowParent","thisEnvFn","inConstructor","thisPaths","argumentsPaths","newTargetPaths","superProps","superCalls","getScopeInformation","superBinding","getSuperBinding","superCall","argumentsBinding","argumentsChild","argsRef","newTargetBinding","targetChild","targetRef","flatSuperProps","superProp","standardizeSuperProperty","superParentPath","isAssignment","isCall","isTaggedTemplate","getSuperPropBinding","getThisBinding","hasSuperClass","thisChild","thisRef","isLogicalOp","assignmentPath","isLogicalAssignment","rightExpression","updateExpr","computedKey","assignSuperThisVisitor","supers","argsBinding","propName","argsList","fnBody","valueIdent","cacheKey","getScopeInformationVisitor","standaloneDeclaration","exportExpr","needBindingRegistration","updatedDeclaration","updatedExportDeclaration","bindingIdentifiers","aliasDeclar","refersOuterBindingVisitor","needsRename","supportUnicodeId","getFunctionArity","findIndex","STATEMENT_OR_BLOCK_KEYS","_this$node","isnt","isCompletionRecord","allowInsideFunction","referencesImport","moduleSource","getSource","getCode","willIMaybeExecuteBefore","getOuterFunction","isExecutionUncertain","isExecutionUncertainInList","maxIndex","SYMBOL_CHECKING","_guessExecutionStatusRelativeToCached","funcParent","_guessExecutionStatusRelativeToDifferentFunctionsCached","commonPath","commonIndex","divergence","keyPosition","_guessExecutionStatusRelativeToDifferentFunctionsInternal","allStatus","childOfFunction","nodeMap","dangerous","_resolve","_resolved","targetKey","targetName","isConstantExpression","isInStrictMode","strictParent","NORMAL_COMPLETION","BREAK_COMPLETION","NormalCompletion","BreakCompletion","getOpposite","addCompletionRecords","records","_getCompletionRecords","completionRecordForSwitch","lastNormalCompletions","casePath","caseCompletions","normalCompletions","breakCompletions","normalCompletionToBreak","completions","replaceBreakStatementInBreakCompletion","reachable","getStatementListCompletion","canHaveBreak","inCaseClause","shouldPopulateBreak","statementCompletions","pathCompletions","getPrevSibling","getNextSibling","getAllNextSiblings","_key","sibling","siblings","getAllPrevSiblings","_getKey","_getPattern","getBindingIdentifierPaths","getOuterBindingIdentifierPaths","trailing","hasPrev","hasNext","removeIfExisting","toRemove","el","_debug","_generator","NodePath_ancestry","NodePath_inference","NodePath_replacement","NodePath_evaluation","NodePath_conversion","NodePath_introspection","NodePath_context","NodePath_removal","NodePath_modification","NodePath_family","NodePath_comments","NodePath_virtual_types_validator","buildDebug","NodePath_Final","shouldStop","targetNode","getScope","hasNode","getPathLocation","methods","isDenylisted","skipKey","arrowFunctionToShadowed","isBlacklisted","popContext","setKey","_guessExecutionStatusRelativeToDifferentFunctions","_call","_resyncParent","_resyncKey","_resyncList","_resyncRemoved","typeKey","TraversalContext","priorityQueue","shouldVisit","notPriority","visitMultiple","visitQueue","visitSingle","visited","visitIndex","visitSelf","_opts$this$node$type","then","_this$opts$denylist","denylist","blacklist","restoreContext","_this$opts$shouldSkip","SHOULD_STOP","_this$opts2","_this$scope","_path$opts","newContainer","pathToQueue","Hub","_hub","verify","cheap","clearNode","hasDenylistedType","denylistTypes","comp","versions","ImportBuilder","importedSource","_resultName","_importedSource","_scope","done","resultName","import","named","var","defaultInterop","_interop","wildcardInterop","fail","read","isModule","_importBuilder","_isModule","ImportInjector","_defaultOpts","importedType","importedInterop","importingInterop","ensureLiveReference","ensureNoContext","importPosition","programPath","_programPath","_programScope","_applyDefaults","addDefault","importedSourceIn","addNamed","_generateImport","addNamespace","addSideEffect","isInit","newOpts","nameHint","isNamed","isNamespace","isMod","isModuleForNode","isModuleForBabel","es6Default","_insertStatements","_insertStatementsAfter","_insertStatementsBefore","isValueImport","firstImportDecl","maybeAppendImportSpecifiers","targetPath","statementsSet","importDeclarations","lastImportPath","bodyStmt","newImports","hasNamespaceImport","hasDefaultImport","_importInjector","rewriteThisVisitor","rewriteThis","isInType","rewriteLiveReferences","wrapReference","requeueInParent","imports","importsNamespace","exportMeta","rewriteBindingInitVisitorState","rewriteBindingInitVisitor","rewriteReferencesVisitorState","buildImportReference","identNode","_wrapReference","_wrapReference2","interop","stringSpecifiers","rewriteReferencesVisitor","exportNames","buildBindingExportAssignmentExpression","localExpr","exportsObjectName","buildImportThrow","importData","localBinding","rootBinding","exportedNames","assignment","newExpr","programScopeIds","programScope","didTransformExport","importConstViolationName","loopBodyScope","bodyPath","newLoopId","hasExports","isSideEffectImport","reexports","reexportNamespace","reexportAll","validateImportInteropOption","importInterop","resolveImportInterop","normalizeModuleAndLoadMetadata","initializeReexports","getWrapperPayload","esNamespaceOnly","nameAnonymousExports","sources","getModuleMetadata","removeImportExportDeclarations","nameOfnamespace","resolvedInterop","exportNameListName","getExportSpecifierName","stringValue","localData","getLocalExportMetadata","importNodes","sourceData","sourceNode","basename","extname","lazy","spec","reexport","needsDefault","needsNamed","bindingKindLookup","localMetadata","getLocalMetadata","idPath","_child$splitExportDec","_normalizeAndLoadMetadata","toGetWrapperPayload","getDynamicImportSource","buildDynamicImport","deferToThen","wrapWithPromise","specifierToString","originalGetModuleName","getModuleName","rootOpts","pluginOpts","_pluginOpts$moduleId","_pluginOpts$moduleIds","_pluginOpts$getModule","_pluginOpts$moduleRoo","moduleId","moduleIds","getModuleId","moduleRoot","filenameRelative","moduleName","sourceRootReplacer","_helperModuleImports","_rewriteThis","_rewriteLiveReferences","Lazy","_dynamicImport","_getModuleName","rewriteModuleStatementsAndPrepareHeader","allowTopLevelThis","noInterop","constantReexports","loose","enumerableModuleMeta","noIncompleteNsImportDetection","hasStrict","headers","buildESModuleHeader","nameList","buildExportNameListDeclaration","buildExportInitializationStatements","ensureStatementsHoisted","header","wrapInterop","buildNamespaceInitStatements","sourceMetadata","srcNamespaceId","NAME","SOURCE","srcNamespace","buildReexportsFromMeta","EXPORTS","NAMESPACE","buildNamespaceReexport","ReexportTemplate","namespaceImport","constantComputed","astNodes","VERIFY_NAME_LIST","EXPORTS_LIST","exportedVars","hasReexport","initStatements","buildInitStatement","reexportsStatements","results","initStatement","chunkSize","uninitializedExportNames","InitTemplate","define","initExpr","_semver","_babel7Helpers","errorVisitor","inputMap","shebang","availableHelper","versionRange","semver","intersects","dep","added","_Error","txt","addImport","addTemplateObject","babel7","buildUmdWrapper","buildGlobal","allowlist","buildHelpers","buildModule","refs","buildUmd","FACTORY_PARAMETERS","BROWSER_ARGUMENTS","COMMON_ARGUMENTS","AMD_ARGUMENTS","FACTORY_BODY","UMD_ROOT","buildVar","getHelperReference","mapExportBindingAssignments","outputType","umd","findConfigUpwards","rootDir","findPackageData","filepath","directories","pkg","isPackage","findRelativeConfig","pkgData","envName","caller","findRootConfig","loadConfig","resolveShowConfigPath","resolvePlugin","resolvePreset","loadPlugin","loadPreset","getEnv","defaultValue","BABEL_ENV","NODE_ENV","gensync","_gensync","Promise","_next","runGenerator","sync","errback","maybeAsync","isThenable","withKind","_x","forwardAsync","action","adapted","arity","firstPause","completed","_x2","mergeOptions","targetObj","mergeDefaultFields","isIterableIterator","finalize","deepArr","flattenToSet","_deepArray","Plugin","externalDependencies","post","pre","parserOverride","generatorOverride","once","resultP","promiseReferenced","waitFor","ok","reject","rej","synchronize","gen","genTrue","makeWeakCache","makeCachedFunction","makeWeakCacheSync","makeStrongCache","makeStrongCacheSync","CallCache","callCacheSync","callCacheAsync","futureCache","cachedFunction","asyncContext","callCache","getCachedValueOrWait","CacheConfigurator","handlerResult","finishLock","onFirstPause","setupAsyncLocks","updateFunctionCache","release","getCachedValue","cachedValue","promise","Lock","configured","forever","deactivate","mode","_active","_never","_forever","_invalidate","_configured","_pairs","_data","simple","makeSimpleConfigurator","never","invalidate","pairs","cacheFn","assertSimpleType","released","browsers","browserVersions","agents","key2","sign","features","full","levenshtein","m","findSuggestion","distances","_findSuggestion","OptionValidator","descriptor","validateTopLevelOptions","TopLevelOptionShape","validOptionNames","option","formatMessage","validateBooleanOption","validateStringOption","_validator","safari","and_chr","and_ff","android","chrome","edge","firefox","ie","ie_mob","ios_saf","deno","op_mob","opera","samsung","_helperValidatorOption","_targets","versionRegExp","semverMin","second","semverify","isUnreleasedVersion","unreleasedLabel","unreleasedLabels","getLowestUnreleased","getHighestUnreleased","getLowestImplementedVersion","environment","ios","electron","rhino","opera_mobile","prettifyVersion","major","minor","patch","prettifyTargets","_pretty","getInclusionReasons","targetVersions","minVersions","targetVersion","minIsUnreleased","targetIsUnreleased","_plugins","targetsSupported","support","targetEnvironments","unsupportedEnvironments","lowestImplementedVersion","lowestTargetedVersion","isRequired","compatData","pluginsCompatData","excludes","filterItems","defaultIncludes","defaultExcludes","pluginSyntaxMap","shippedProposalsSyntax","_browserslist","_nativeModules","_lruCache","_filterItems","ESM_SUPPORT","browserModulesData","validateTargetNames","validTargets","TargetNames","isBrowsersQueryValid","validateBrowsers","getLowestVersions","all","browserName","browserVersion","browserNameMap","splitVersion","isSplitUnreleased","isUnreleased","parsedBrowserVersion","outputDecimalWarning","decimalTargets","semverifyTarget","nodeTargetParser","parsed","defaultTargetParser","generateTargets","inputTargets","esmodules","resolveTargets","queries","browserslist","mobileToDesktop","targetsCache","LruCache","resolveTargetsCached","getTargets","_browsers","_browsers2","configPath","onBrowserslistConfigFound","shouldParseBrowsers","hasTargets","shouldSearchForConfig","ignoreBrowserslistConfig","BROWSERSLIST","configFile","BROWSERSLIST_CONFIG","findConfigFile","browserslistEnv","queryBrowsers","esmSupportVersion","decimalWarnings","parsedTarget","parsedValue","_helperCompilationTargets","resolveBrowserslistConfigFile","browserslistConfigFile","configFilePath","root","optTargets","_functional","_item","_caching","_resolveTargets","isEqualDescriptor","_a$file","_b$file","_a$file2","_b$file2","ownPass","request","handlerOf","optionsWithResolvedBrowserslistConfigFile","createCachedDescriptors","presets","passPerPreset","createCachedPluginDescriptors","createCachedPresetDescriptors","createUncachedDescriptors","createPluginDescriptors","createPresetDescriptors","PRESET_DESCRIPTOR_CACHE","dir","descriptors","loadCachedDescriptor","PLUGIN_DESCRIPTOR_CACHE","DEFAULT_OPTIONS","cacheByOptions","possibilities","possibility","createDescriptors","createDescriptor","assertNoDuplicates","pair","getItemDescriptor","resolver","nameMap","conflicts","_configDescriptors","createItemFromDescriptor","ConfigItem","createConfigItem","CONFIG_ITEM_BRAND","_descriptor","auxiliaryComment","breakConfig","experimental","externalHelpers","jsxPragma","metadataUsedHelpers","modules","nonStandard","sourceMapName","stage","whitelist","resolveModuleSource","sourceMapTarget","assertRootMode","assertSourceMaps","assertCompact","assertSourceType","assertCallerMetadata","assertObject","propLoc","assertInputSourceMap","assertString","assertBoolean","assertArray","assertIgnoreList","assertIgnoreItem","assertConfigApplicableTest","checkValidTest","assertConfigFileSearch","assertBabelrcSearch","assertPluginList","assertPluginItem","assertPluginTarget","assertTargets","browsersLoc","esmodulesLoc","assertBrowsersList","subLoc","assertBrowserVersion","round","assertAssumptions","inPreset","assumptionsNames","ErrorToString","SUPPORTED","captureStackTrace","_Object$getOwnPropert","START_HIDING","STOP_HIDING","expectedErrors","virtualFrames","CallSite","isNative","isToplevel","getLineNumber","getColumnNumber","getMethodName","getTypeName","injectVirtualStackFrame","frames","expectedError","beginHiddenCallStack","setupPrepareStackTrace","endHiddenCallStack","defaultPrepareStackTrace","MIN_STACK_TRACE_LIMIT","stackTraceRewriter","newTrace","isExpected","_rewriteStackTrace","ConfigError","_removed","_optionAssertions","_configError","ROOT_VALIDATORS","rootMode","cloneInputAst","BABELRC_VALIDATORS","babelrc","babelrcRoots","NONPRESET_VALIDATORS","only","COMMON_VALIDATORS","assumptions","assertEnvSet","assertOverridesList","include","exclude","wrapPluginVisitorMethod","sourceMap","knownAssumptions","validateNested","configError","assertNoDuplicateSourcemap","optLoc","throwUnknownError","unknownOptErr","envLoc","objLoc","overridesLoc","checkNoUnwrappedItemOptionPairs","lastItem","thisItem","endSep","substitution","starPat","starPatLast","starStarPat","starStarPatLast","escapeRegExp","pathToPattern","ChainFormatter","Programmatic","Config","Formatter","title","callerName","optionsAndDescriptors","opt","pluginDescriptors","descriptorToConfig","presetDescriptors","_d$file","ConfigPrinter","_stack","configure","output","configs","s","_patternToRegex","buildPresetChain","buildPresetChainWalker","dedupDescriptors","files","makeChainWalker","preset","loadPresetDescriptors","loadPresetEnvDescriptors","loadPresetOverridesDescriptors","overridesEnv","loadPresetOverridesEnvDescriptors","createLogger","buildRootDescriptors","buildEnvDescriptors","buildOverrideDescriptors","buildOverrideEnvDescriptors","buildRootChain","configReport","babelRcReport","programmaticLogger","programmaticChain","loadProgrammaticChain","programmaticReport","babelrcRootsDirectory","configFileChain","emptyChain","configFileLogger","validatedFile","validateConfigFile","loadFileChain","mergeChain","ignoreFile","babelrcFile","isIgnored","fileChain","babelrcLoadEnabled","shouldIgnore","validateBabelrcFile","babelrcLogger","showConfig","fileHandling","absoluteRoot","babelrcPatterns","pat","pathPatternToRegex","directory","matchPattern","validateExtendFile","baseLogger","buildProgrammaticLogger","loadFileChainWalker","loadFileDescriptors","loadFileEnvDescriptors","loadFileOverridesDescriptors","loadFileOverridesEnvDescriptors","buildFileLogger","_context$caller","_options$env","_options$overrides","_options$overrides2","_override$env","chainWalker","flattenedConfigs","configIsApplicable","envOpts","overrideOps","overrideEnvOpts","logger","mergeExtendsChain","mergeChainOpts","configName","configFieldIsApplicable","patterns","matchesPatterns","ignoreListReplacer","_context$filename","_context$filename2","pathToTest","VALIDATORS","assertVisitorMap","assertVisitorHandler","validatePluginObject","rootPath","invalidPluginPropertyError","makeConfigAPI","entry","coreVersion","makePresetAPI","makePluginAPI","satisfies","_plugin","_configChain","_environment","resolveRootMode","upwardRootDir","ROOT_CONFIG_FILENAMES","loadPrivatePartialConfig","inputOpts","absoluteCwd","absoluteRootDir","showConfigPath","configChain","merged","loadPartialConfig","showIgnoredFiles","_opts","PartialConfig","babelignore","hasFilesystemConfig","_configApi","_partial","loadFullConfig","_opts$assumptions","optionDefaults","presetContext","toDescriptor","presetsDescriptors","initialPluginsDescriptors","pluginDescriptorsByPass","passes","ignored","enhanceError","recursePresetDescriptors","rawPresets","pluginDescriptorsPass","loadPresetDescriptor","pluginContext","loadPluginDescriptors","descs","loadPluginDescriptor","freezeDeepArray","arg1","arg2","makeDescriptorLoader","apiFactory","factory","pluginDescriptorLoader","presetDescriptorLoader","instantiatePlugin","pluginObj","inheritsDescriptor","chainMaybeAsync","needsFilename","validateIfOptionNeedsFilename","formattedPresetName","validatePreset","overrideOptions","instantiatePreset","_full","loadPartialConfigRunner","loadPartialConfigImpl","loadPartialConfigAsync","loadPartialConfigSync","loadOptionsImpl","_config$options","loadOptionsRunner","loadOptionsAsync","loadOptionsSync","loadOptions","createConfigItemRunner","createConfigItemImpl","createConfigItemAsync","createConfigItemSync","PluginPass","LOADED_PLUGIN","blockHoistPlugin","Block","performHoisting","hasChange","priority","stableSort","loadBlockHoistPlugin","buckets","bucket","relative","base64","pluginNameMap","asyncDoExpressions","syntax","doExpressions","exportDefaultFrom","functionBind","functionSent","pipelineOperator","recordAndTuple","throwExpressions","asyncGenerators","classProperties","classPrivateProperties","classPrivateMethods","classStaticBlock","dynamicImport","exportNamespaceFrom","importAssertions","importMeta","logicalAssignment","moduleStringNames","numericSeparator","nullishCoalescingOperator","objectRestSpread","optionalCatchBinding","optionalChaining","privateIn","regexpUnicodeSets","getNameURLCombination","generateMissingPluginMessage","missingPluginName","codeFrame","helpMessage","pluginInfo","transformPlugin","syntaxPluginInfo","transformPluginInfo","sectionType","msgFilename","_missingPluginHelper","pluginPasses","deepClone","allowCircle","structuredClone","_fs","_convertSourceMap","_file","INLINE_SOURCEMAP_REGEX","EXTERNAL_SOURCEMAP_REGEX","normalizeFile","convertSourceMap","fromObject","lastComment","extractComments","fromComment","inputMapContent","readFileSync","fromJSON","extractCommentsFromList","maybeAddSegment","traceSegment","_remapping","mergeSourceMap","found","remapping","rootless","ctx","_mergeMap","generateCode","toObject","outputCode","outputMap","toComment","_pluginPass","_blockHoistPlugin","_normalizeOpts","_normalizeFile","_generate","transformFile","_opts$filename","_opts$filename2","pluginPairs","passPairs","transformRunner","optsOrCallback","maybeCallback","transformSync","transformAsync","transformFileSync","transformFileAsync","transformFromAstRunner","transformFromAst","transformFromAstSync","transformFromAstAsync","parseRunner","parseSync","parseAsync","_buildExternalHelpers","resolvers","_transform","_transformFile","_transformAst","OptionManager","willPathCastToBoolean","maybeWrapped","AssignmentMemoiser","record","toNonOptional","isInDetachedTree","handle","memoise","noDocumentAll","endPath","willEndPathCastToBoolean","rootParentPath","isDeleteOperation","startingOptional","startingNode","baseNeedsMemoised","baseRef","parentIsOptionalCall","parentIsCall","optionalCall","boundGet","handleAssignment","regular","endParentPath","baseMemoised","nonNullishCheck","nullishCheck","endParent","simpleSet","seq","ref2","destructureSet","operatorTrunc","memberExpressionToFunctions","memoiser","optimiseCallExpression","thisNode","_helperMemberExpressionToFunctions","_helperOptimiseCallExpression","skipAllButComputedKey","unshadowSuperBindingVisitor","Scopable","refName","specHandlers","superMember","memo","_getPrototypeOfExpression","objectRef","getObjectRef","isPrivateMethod","isDerivedConstructor","argsNode","specHandlers_old","optimiseCall","looseHandlers","getSuperRef","_getSuperRef","_getSuperRef2","ReplaceSupers","_opts$constantSuper","methodPath","superRef","constantSuper","isLoose","refToPreserve","PURE_ANNOTATION","isPureAnnotated","annotateAsPure","pathOrNode","isTransparentExprWrapper","skipTransparentExprWrappers","skipTransparentExprWrapperNodes","assertFieldTransformed","_helperReplaceSupers","_helperAnnotateAsPure","_helperSkipTransparentExpressionWrappers","ts","newHelpers","buildPrivateNamesMap","className","privateFieldsAsSymbolsOrProperties","privateNamesMap","classBrandId","initAdded","_classBrandId","$","getId","getterDeclared","setId","setterDeclared","methodId","buildPrivateNamesNodes","privateFieldsAsProperties","privateFieldsAsSymbols","initNodes","injectedIds","isGetterOrSetter","privateNameVisitorFactory","nestedVisitor","privateNameVisitor","Class","visiblePrivateNames","redeclared","unshadow","innerBinding","buildCheckInRHS","rhs","inRHSIsObject","privateInVisitor","classRef","buildStaticPrivateFieldAccess","noUninitializedPrivateFieldAccess","autoInherits","privateNameHandlerSpec","receiver","cloneId","skipCheck","getCall","setCall","privateNameHandlerLoose","BASE","REF","PROP","transformPrivateNamesUsage","buildPrivateFieldInitLoose","inheritPropComments","buildPrivateInstanceFieldInitSpec","inheritLoc","buildPrivateStaticFieldInitSpec","buildPrivateStaticFieldInitSpecOld","buildPrivateMethodInitLoose","buildPrivateInstanceMethodInitSpec","buildPrivateAccessorInitialization","buildPrivateInstanceMethodInitialization","buildPublicFieldInitLoose","buildPublicFieldInitSpec","buildPrivateStaticMethodInitLoose","buildPrivateMethodDeclaration","isGetter","isSetter","thisArg","argumentsPath","thisContextVisitor","argumentsId","declId","needsClassRef","innerReferencesVisitor","replaceThisContext","innerBindingRef","_state$thisRef","isNameOrLength","buildFieldsInitNodes","setPublicClassFields","classRefFlags","injectSuperRef","staticNodes","instanceNodes","lastInstanceNodeReturnsThis","pureStaticNodes","classBindingNode","_injectSuperRef","classRefForInnerBinding","isInstance","isPublic","isField","replaced","blockBody","wrapClass","findBareSupers","handleClassTDZ","classBinding","throwNode","classFieldDefinitionEvaluationTDZVisitor","injectInitialization","lastReturnsThis","isDerived","newConstructor","bareSupers","bareSuper","allNodes","memoiseComputedKey","keyNode","hint","isUidReference","isMemoiseAssignment","extractComputedKeys","computedPaths","computedPath","computedNode","_fields","_misc","hasOwnDecorators","hasDecorators","incrementId","createPrivateUidGeneratorForClass","classPath","currentPrivateId","reifiedId","createLazyPrivateUidGeneratorForClass","replaceClassWithVar","varId","classId","generateLetUidIdentifier","newClassExpr","newPath","generateClassProperty","assignIdForAnonymousClass","addProxyAccessorsFor","getterKey","setterKey","isComputed","getterBody","setterBody","getter","setter","extractProxyAccessorsFor","getComputedKeyLastElement","getComputedKeyMemoiser","prependExpressionsToComputedKey","fieldPath","maybeSequenceExpression","appendExpressionsToComputedKey","completion","scopeParent","maybeAssignment","expressionSequence","completionParent","prependExpressionsToFieldInitializer","prependExpressionsToStaticBlock","blockPath","prependExpressionsToConstructor","constructorPath","isProtoInitCallExpression","protoInitCall","optimizeSuperCallAndExpressions","protoInitLocal","mergedSuperCall","insertExpressionsAfterSuperCallAndOptimize","newNodes","createConstructorFromExpressions","isDerivedClass","createStaticBlockFromExpressions","FIELD","ACCESSOR","METHOD","GETTER","SETTER","STATIC_OLD_VERSION","STATIC","DECORATORS_HAVE_THIS","getElementKind","toSortedDecoratorInfo","generateDecorationList","decoratorsThis","decsCount","haveOneThis","decs","haveThis","generateDecorationExprs","decorationInfo","decoratorsHaveThis","decoratorsArray","privateMethods","extractElementLocalAssignments","localIds","addCallAccessorsFor","movePrivateAccessor","methodLocalVar","isClassDecoratableElementPath","staticBlockToIIFE","staticBlockToFunctionClosure","fieldInitializerToClosure","createFunctionExpressionFromPrivateMethod","createSetFunctionNameCall","createToPropertyKeyCall","propertyKey","createPrivateBrandCheckClosure","brandName","usesPrivateField","convertToComputedKey","hasInstancePrivateAccess","containsInstancePrivateAccess","checkPrivateMethodUpdateError","decoratedPrivateMethods","parentParentPath","transformClass","ignoreFunctionLength","propertyVisitor","_path$node$id","_classDecorationsId","classDecorators","hasElementDecorators","hasComputedKeysSideEffects","elemDecsUseFnContext","generateClassPrivateUid","classAssignments","memoiseExpression","localEvaluatedId","staticInitLocal","classIdName","setClassName","usesFunctionContextOrYieldAwait","instancePrivateNames","isDecorated","_staticInitLocal","_protoInitLocal","newId","newField","elementDecoratorInfo","classInitLocal","classIdLocal","decoratorReceiverId","handleDecorators","hasSideEffects","usesFnContext","_decoratorReceiverId","willExtractSomeElemDecs","needsDeclaraionForClassBinding","classDecorationsFlag","classDecorations","classDecorationsId","computedKeyAssignments","classDecsUsePrivateName","lastInstancePrivateName","needsInstancePrivateBrandCheck","fieldInitializerExpressions","staticFieldInitializerExpressions","nameExpr","newFieldInitId","newValue","initId","callId","replaceSupers","initExtraId","initExtraCall","lastComputedElement","sortedElementDecoratorInfo","elementDecorations","elementLocals","classLocals","classInitInjected","classInitCall","originalClassPath","originalClass","staticClosures","statics","staticBlockClosureId","fieldValueClosureId","privateMethodDelegateId","staticsClass","constructorBody","applyDecoratorWrapper","applyDecsBody","firstPublicElement","createLocalsAssignment","classBindingInfo","classOuterBindingDelegateLocal","classOuterBindingLocal","maybePrivateBrandName","isProtoKey","shouldTransformElement","shouldTransformClass","NamedEvaluationVisitoryFactory","isAnonymous","handleComputedProperty","propertyPath","keyValue","isDecoratedAnonymousClassExpression","_assumption","_assumption2","VISITED","namedEvaluationVisitor","visitClass","_className","_node$id","_path$splitExportDecl","updatedVarDeclarationPath","_path$splitExportDecl2","takeDecorators","getKey","extractElementDescriptor","_path$ensureFunctionN","addDecorateHelper","buildDecoratedClass","initializeId","isStrict","superId","definitions","wrapperCall","classPathDesc","_decorators","FEATURES","staticBlocks","featuresSameLoose","featuresKey","looseKey","looseLowPriorityKey","canIgnoreLoose","feature","enableFeature","hasFeature","setLoose","resolvedLoose","mask","getBabelShowConfigForHint","higherPriorityPluginName","shouldTransform","decoratorPath","publicFieldPath","privateFieldPath","privateMethodPath","staticBlockPath","_decorators2","_features","versionKey","createClassFeaturePlugin","decoratorVersion","_api$assumption","createDecoratorTransform","_api","explicit","pathIsClassDeclaration","getName","setName","classRefForDefine","privateNamesNodes","keysNodes","wrappedPath","buildClassDecorator","buildClassPrototype","buildGetDescriptor","buildGetObjectInitializer","WARNING_CALLS","applyEnsureOrdering","identDecorators","applyClassDecorators","hasClassDecorators","CLASS_REF","DECORATOR","INNER","applyMethodDecorators","hasMethodDecorators","applyTargetDecorators","applyObjectDecorators","decoratedProps","TEMP","TARGET","PROPERTY","decoratedClassToExpression","varDeclPath","decoratedClass","decoratedObject","_pluginSyntaxDecorators","_helperCreateClassFeaturesPlugin","_transformerLegacy","syntaxDecorators","legacyVisitor","TOP_LEVEL_USING","isUsingDeclaration","transformUsingDeclarationsVisitor","tmpId","needsAwait","_ctx","isAwaitUsing","disposeCall","stackId","_stackId","errorId","hasErrorId","_ctx2","transformUsingDeclarationsVisitorSkipFn","innerBlockBody","shouldRemove","_varId","denyList","staticBlockPrivateId","staticBlockRef","remover","_extra$raw","_api$assumption2","pureGetters","findOutermostTransparentParent","isSimpleMemberExpression","needsMemoize","optionalPath","childPath","NULLISH_CHECK","NULLISH_CHECK_NO_DDA","NULLISH_CHECK_NEG","NULLISH_CHECK_NO_DDA_NEG","transformOptionalChain","ifNullish","wrapLast","optionals","checks","tmpVar","chainWithTypes","check","memoized","ifNullishBoolean","ifNullishFalse","ifNullishVoid","isEvaluationValueIgnored","logicalOp","_baseRef","lib","_exported$name","_pluginSyntaxJsx","DEFAULT","importSource","pragma","pragmaFrag","JSX_SOURCE_ANNOTATION_REGEX","JSX_RUNTIME_ANNOTATION_REGEX","JSX_ANNOTATION_REGEX","JSX_FRAG_ANNOTATION_REGEX","hasProto","createPlugin","development","pure","throwIfNamespace","runtime","RUNTIME_DEFAULT","IMPORT_SOURCE_DEFAULT","PRAGMA_DEFAULT","PRAGMA_FRAG_DEFAULT","useSpread","useBuiltIns","injectMetaPropertiesVisitor","isThisAllowed","makeSource","sourceSet","pragmaSet","pragmaFragSet","sourceMatches","runtimeMatches","jsxMatches","jsxFragMatches","createElement","toMemberExpression","fragment","createImportLazily","callExpr","buildCreateElementFragmentCall","buildJSXFragmentCall","shouldUseCreateElement","buildCreateElementCall","buildJSXElementCall","openingPath","seenPropsSpread","attr","convertJSXIdentifier","convertAttributeValue","accumulateAttribute","attribute","_value$extra","buildChildrenProperty","childrenNode","getTag","attribsArray","extracted","sourceSelfError","attribs","buildJSXOpeningElementAttributes","_extracted$key","__source","__self","buildCreateElementOpeningElementAttributes","tagExpr","objs","actualSource","fileNameIdentifier","makeTrace","column0Based","fileLineLiteral","fileColumnLiteral","_createPlugin","_helperModuleTransforms","requireNoInterop","requireInterop","transformDynamicImport","buildRequire","lazyImportsHook","buildRequireWrapper","commonJSHooksKey","defineCommonJSHook","hook","findMap","makeInvokers","_lazy","_hooks","_api$assumption3","strictNamespace","mjsStrictNamespace","allowCommonJSExports","getAssertion","moduleExportsVisitor","loadExpr","_header","removePlugin","indices","disallowAmbiguousJSXLike","dts","isTSX","ENUMS","buildEnumWrapper","transpileEnum","fill","enumFill","isGlobal","isSeen","ID","enumIIFE","INIT","toReplace","buildStringAssignment","buildNumericAssignment","buildEnumMember","enumValues","translateEnumValues","enumMembers","memberValue","isSyntacticallyString","ENUM","VALUE","ASSIGNMENTS","curScope","enumSelfReferenceVisitor","_ENUMS$get","bindingIdentifier","constValue","lastName","memberPath","initializerPath","computeConstantValue","lastRef","prevMembers","evaluateRef","evalUnaryExpression","evalBinaryExpression","EXPORTED_CONST_ENUMS_IN_NAMESPACE","transpileConstEnum","parentIsExport","isExported","entriesMap","GLOBAL_TYPES","isGlobalType","registerGlobalType","_globalTypes","_constEnum","getFirstIdentifier","transpileNamespace","allowNamespaces","handleNested","getDeclaration","getMemberExpression","itemName","handleVariableDeclaration","idName","buildNestedAmbientModuleError","parentExport","realName","namespaceTopLevel","isEmpty","transformed","fallthroughValue","memberExpr","_pluginSyntaxTypescript","NEEDS_EXPLICIT_ESM","PARSED_PARAMS","safeRemove","assertCjsTransformEnabled","wrong","JSX_PRAGMA_REGEX","jsxPragmaFrag","onlyRemoveTypeImports","optimizeConstEnums","allowDeclareFields","classMemberVisitors","assigns","paramPath","syntaxTypeScript","visitPattern","fileJsxPragma","fileJsxPragmaFrag","pragmaImportName","pragmaFragImportName","importsToRemove","specifiersLength","isAllSpecifiersElided","isImportTypeOnly","importPath","newExport","varKind","entityNameToExpr","sourceFileHasJsx","TopLevelOptions","ignoreExtensions","rewriteImportExtensions","allExtensions","normalized","maybeReplace","declarePreset","getPlugins","transformTypeScript","disableExtensionDetect","pluginRewriteTSImports","transformModulesCommonJS","babel.transform","babel.parse","buffer","partial","sourceFile","quickSort","needle","section","Module","stoppable","color","ansiColorsModule","readline","combos","prompt","timer","theme","choices","reorder","authenticate","form","completer","scale","interpolate","enquirer","prompts","json5Library","sourceMapSupport","playwrightLibrary.selectors","step","tracing"],"mappings":"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,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,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,IAAG,KAAI,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,IAAG,IAAG,GAAE,KAAI,IAAG,IAAG,GAAE,GAAE,IAAG,GAAE,IAAG,KAAI,GAAE,IAAG,KAAI,KAAI,KAAI,IAAG,KAAI,MAAK,IAAG,IAAG,MAAK,IAAG,GAAE,MAAK,KAAI,MAAK,KAAI,GAAE,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,GAAE,IAAG,IAAG,GAAE,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,MAAK,GAAE,MAAK,IAAG,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAI,MAAK,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,MAAK,IAAG,GAAE,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,IAAG,GAAE,KAAI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,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,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,KAAI,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,MAAK,GAAE,MAAK,IAAG,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAI,MAAK,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,MAAK,IAAG,GAAE,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,IAAG,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,GAAE,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,IAAG,IAAG,GAAE,GAAE,MAAK,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,MAAK,OAAM,IAAG,MAAK,GAAE,KAAI,GAAE,MAAK,IAAG,MAAK,IAAG,KAAI,MAAK,KAAI,MAAK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,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,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,KAAI,IAAG,GAAE,GAAE,IAAG,IAAG,IAAG,GAAE,GAAE,GAAE,IAAG,MAAK,GAAE,MAAK,IAAG,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,KAAI,MAAK,KAAI,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,MAAK,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,KAAI,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,GAAE,MAAK,IAAG,GAAE,GAAE,KAAI,IAAG,KAAI,IAAG,IAAG,GAAE,IAAG,GAAE,KAAI,IAAG,IAAG,IAAG,KAAI,IAAG,KAAI,IAAG,GAAE,GAAE,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,IAAG,IAAG,GAAE,GAAE,MAAK,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,MAAK,OAAM,IAAG,MAAK,GAAE,KAAI,GAAE,MAAK,IAAG,MAAK,IAAG,KAAI,MAAK,KAAI,MAAK,MAAK,GAAE,IAAI;AAEhkD,QAAMC,wBAAwB,CAAC,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,MAAK,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,KAAI,GAAE,KAAI,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,KAAI,GAAE,IAAG,GAAE,IAAG,IAAG,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,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,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,KAAI,GAAE,GAAE,GAAE,MAAK,GAAE,QAAO,GAAG;AAK90B,WAASC,cAAcC,OAAcC,KAAiC;AACpE,QAAIC,OAAM;AACV,aAASC,IAAI,GAAGC,SAASH,IAAIG,QAAQD,IAAIC,QAAQD,KAAK,GAAG;AACvDD,MAAAA,QAAOD,IAAIE,CAAC;AACZ,UAAID,OAAMF,MAAM,QAAO;AAEvBE,MAAAA,QAAOD,IAAIE,IAAI,CAAC;AAChB,UAAID,QAAOF,MAAM,QAAO;AAAA,IAC1B;AACA,WAAO;AAAA,EACT;AAIO,WAASK,kBAAkBL,OAAuB;AACvD,QAAIA,QAAI,GAAyB,QAAOA,UAA6B;AACrE,QAAIA,SAAI,GAA0B,QAAO;AACzC,QAAIA,QAAI,GAAyB,QAAOA,UAA6B;AACrE,QAAIA,SAAI,IAA0B,QAAO;AACzC,QAAIA,SAAQ,OAAQ;AAClB,aACEA,SAAQ,OAAQN,wBAAwBhN,KAAK4N,OAAOC,aAAaP,KAAI,CAAC;AAAA,IAE1E;AACA,WAAOD,cAAcC,OAAMH,0BAA0B;AAAA,EACvD;AAIO,WAASW,iBAAiBR,OAAuB;AACtD,QAAIA,QAAI,GAAqB,QAAOA,UAA6B;AACjE,QAAIA,QAAI,GAAoB,QAAO;AACnC,QAAIA,QAAI,GAAyB,QAAO;AACxC,QAAIA,SAAI,GAA0B,QAAO;AACzC,QAAIA,QAAI,GAAyB,QAAOA,UAA6B;AACrE,QAAIA,SAAI,IAA0B,QAAO;AACzC,QAAIA,SAAQ,OAAQ;AAClB,aAAOA,SAAQ,OAAQJ,mBAAmBlN,KAAK4N,OAAOC,aAAaP,KAAI,CAAC;AAAA,IAC1E;AACA,WACED,cAAcC,OAAMH,0BAA0B,KAC9CE,cAAcC,OAAMF,qBAAqB;AAAA,EAE7C;AClFA,QAAMiB,gBAAgB;AAAA,IACpBlN,SAAS,CACP,SACA,QACA,SACA,YACA,YACA,WACA,MACA,QACA,WACA,OACA,YACA,MACA,UACA,UACA,SACA,OACA,OACA,SACA,SACA,QACA,OACA,QACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,SACA,MACA,cACA,UACA,QACA,QAAQ;AAAA,IAEVmN,QAAQ,CACN,cACA,aACA,OACA,WACA,WACA,aACA,UACA,UACA,OAAO;AAAA,IAETC,YAAY,CAAC,QAAQ,WAAW;AAAA,EACjC;AACD,QAAMC,WAAW,IAAIC,IAAIJ,cAAclN,OAAO;AAC9C,QAAMuN,yBAAyB,IAAID,IAAIJ,cAAcC,MAAM;AAC3D,QAAMK,6BAA6B,IAAIF,IAAIJ,cAAcE,UAAU;AAK5D,WAASK,eAAeC,MAAcC,UAA4B;AACvE,WAAQA,YAAYD,SAAS,WAAYA,SAAS;AAAA,EACpD;AAOO,WAASE,qBAAqBF,MAAcC,UAA4B;AAC7E,WAAOF,eAAeC,MAAMC,QAAQ,KAAKJ,uBAAuBM,IAAIH,IAAI;AAAA,EAC1E;AAMO,WAASI,6BAA6BJ,MAAuB;AAClE,WAAOF,2BAA2BK,IAAIH,IAAI;AAAA,EAC5C;AAOO,WAASK,yBACdL,MACAC,UACS;AACT,WACEC,qBAAqBF,MAAMC,QAAQ,KAAKG,6BAA6BJ,IAAI;AAAA,EAE7E;AAEO,WAASM,UAAUN,MAAuB;AAC/C,WAAOL,SAASQ,IAAIH,IAAI;AAAA,EAC1B;AC9EO,WAAS41E,gBACd7rD,SACA5E,MACA0wD,OACS;AACT,WACE9rD,kBACA5E,eACArmB,kBAAkB+2E,KAAK;AAAA,EAE3B;AAOA,QAAMC,sBAAsB,oBAAIl2E,IAAI,CAClC,SACA,QACA,SACA,YACA,YACA,WACA,MACA,QACA,WACA,OACA,YACA,MACA,UACA,UACA,SACA,OACA,OACA,SACA,SACA,QACA,OACA,QACA,SACA,SACA,WACA,UACA,UACA,QACA,QACA,SACA,MACA,cACA,UACA,QACA,UAEA,cACA,aACA,OACA,WACA,WACA,aACA,UACA,UACA,SAEA,QACA,aAEA,QACA,OAAO,CACR;AAEM,WAASm2E,kBAAkB/1E,MAAuB;AACvD,WAAO81E,oBAAoB31E,IAAIH,IAAI;AAAA,EACrC;AAAA,EC1EO,MAAMg2E,MAAM;AAAA,IAKjBzwE,YAAY+oB,OAAkB;AAAA,WAJ9BA,QAAmB;AAAC,WACpB2nD,QAA+B,oBAAIluB,IAAK;AAAA,WACxCmuB,mBAAmB;AAGjB,WAAK5nD,QAAQA;AAAAA,IACf;AAAA,EACF;AAAA,EAIe,MAAM6nD,aAA2C;AAAA,IAM9D5wE,YAAYqvD,SAAmB30D,UAAmB;AAAA,WALlD20D,SAAM;AAAA,WACNwhB,aAA4B,CAAE;AAAA,WAC9Bn2E,WAAQ;AAAA,WACRo2E,mBAA0C,oBAAItuB,IAAK;AAGjD,WAAK6M,SAASA;AACd,WAAK30D,WAAWA;AAAAA,IAClB;AAAA,IAEA,IAAIq2E,aAAa;AACf,cAAQ,KAAKC,aAAc,EAACjoD,QAAyB,KAAI;AAAA,IAC3D;AAAA,IACA,IAAIkoD,aAAa;AACf,cAAQ,KAAKC,qBAAsB,IAAA,KAAyB;AAAA,IAC9D;AAAA,IACA,IAAIC,aAAa;AACf,cAAQ,KAAKC,sBAAuB,IAAA,MAAsB;AAAA,IAC5D;AAAA,IACA,IAAInP,mBAAmB;AACrB,cAAQ,KAAKmP,sBAAuB,IAAA,MAA6B;AAAA,IACnE;AAAA,IACA,IAAIC,UAAU;AACZ,cAAQ,KAAKD,sBAAuB,IAAA,MAAsB;AAAA,IAC5D;AAAA,IACA,IAAIE,kCAAkC;AACpC,YAAMvoD,QAAQ,KAAKqoD,sBAAuB;AAC1C,cAAQroD,QAAK,MAAsB,MAAMA,QAA0B,OAAM;AAAA,IAC3E;AAAA,IACA,IAAIwoD,gBAAgB;AAClB,eAASl4E,IAAI,KAAKw3E,WAAWv3E,SAAS,KAAKD,KAAK;AAC9C,cAAM;AAAA,UAAE0vB;AAAAA,QAAM,IAAI,KAAK8nD,WAAWx3E,CAAC;AACnC,YAAI0vB,aAAgC;AAClC,iBAAO;AAAA,QACT;AACA,YAAIA,SAASyoD,MAA+B,KAAG;AAE7C,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IACA,IAAIC,qBAAqB;AACvB,cAAQ,KAAKL,sBAAuB,IAAA,KAAyB;AAAA,IAC/D;AAAA,IACA,IAAIM,sBAAsB;AACxB,aAAO,KAAKC,2BAA2B,KAAKX,aAAY,CAAE;AAAA,IAC5D;AAAA,IAEAY,YAAY7oD,OAAyB;AACnC,aAAO,IAAI0nD,MAAM1nD,KAAK;AAAA,IACxB;AAAA,IAEA49B,MAAM59B,OAAkB;AAGtB,WAAK8nD,WAAWt8E,KAAK,KAAKq9E,YAAY7oD,KAAK,CAAC;AAAA,IAC9C;AAAA,IAEAqhC,OAAkB;AAChB,YAAM6B,SAAQ,KAAK4kB,WAAWxnB,IAAK;AACnC,aAAO4C,OAAMljC;AAAAA,IACf;AAAA,IAKA4oD,2BAA2B1lB,QAAwB;AACjD,aAAO,CAAC,EACNA,OAAMljC,SAASyoD,IAAAA,QACd,CAAC,KAAKniB,OAAO30D,YAAYuxD,OAAMljC;IAEpC;AAAA,IAEA8oD,YAAYj4E,MAAck4E,aAA0BrxE,KAAe;AACjE,UAAIwrD,SAAQ,KAAK+kB,aAAc;AAC/B,UACEc,cAAW,KACXA,kBACA;AACA,aAAKC,0BAA0B9lB,QAAOryD,MAAMk4E,aAAarxE,GAAG;AAE5D,YAAInC,OAAO2tD,OAAMykB,MAAM30E,IAAInC,IAAI,KAAK;AAEpC,YAAIk4E,kBAA0C;AAC5CxzE,iBAAOA,OAAwB;AAAA,QACjC,OAAO;AACL,cAAI,CAAC2tD,OAAM0kB,kBAAkB;AAC3B1kB,YAAAA,OAAM0kB,mBAAmB/2E;AAAAA,UAC3B;AACA0E,iBAAOA,OAAuB;AAAA,QAChC;AAEA2tD,QAAAA,OAAMykB,MAAMv3E,IAAIS,MAAM0E,IAAI;AAE1B,YAAIwzE,iBAAyC;AAC3C,eAAKE,mBAAmB/lB,QAAOryD,IAAI;AAAA,QACrC;AAAA,MACF,WAAWk4E,cAAW,GAA0B;AAC9C,iBAASz4E,IAAI,KAAKw3E,WAAWv3E,SAAS,GAAGD,KAAK,GAAG,EAAEA,GAAG;AACpD4yD,UAAAA,SAAQ,KAAK4kB,WAAWx3E,CAAC;AACzB,eAAK04E,0BAA0B9lB,QAAOryD,MAAMk4E,aAAarxE,GAAG;AAC5DwrD,UAAAA,OAAMykB,MAAMv3E,IAAIS,OAAOqyD,OAAMykB,MAAM30E,IAAInC,IAAI,KAAK,MAAiB;AACjE,eAAKo4E,mBAAmB/lB,QAAOryD,IAAI;AAEnC,cAAIqyD,OAAMljC,QAAK,IAAkB;AAAA,QACnC;AAAA,MACF;AACA,UAAI,KAAKsmC,OAAO30D,YAAYuxD,OAAMljC,QAAK,GAAsB;AAC3D,aAAK+nD,iBAAiBmB,OAAOr4E,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IAEAo4E,mBAAmB/lB,QAAeryD,MAAc;AAC9C,UAAI,KAAKy1D,OAAO30D,YAAYuxD,OAAMljC,QAAK,GAAsB;AAC3D,aAAK+nD,iBAAiBmB,OAAOr4E,IAAI;AAAA,MACnC;AAAA,IACF;AAAA,IAEAm4E,0BACE9lB,QACAryD,MACAk4E,aACArxE,KACA;AACA,UAAI,KAAKyxE,oBAAoBjmB,QAAOryD,MAAMk4E,WAAW,GAAG;AACtD,aAAKziB,OAAOoU,MAAMxF,OAAOlD,kBAAkBt6D,KAAK;AAAA,UAC9CyvD,gBAAgBt2D;AAAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEAs4E,oBACEjmB,QACAryD,MACAk4E,aACS;AACT,UAAI,EAAEA,cAAW,GAA4B,QAAO;AAEpD,UAAIA,iBAAyC;AAC3C,eAAO7lB,OAAMykB,MAAM91E,IAAIhB,IAAI;AAAA,MAC7B;AAEA,YAAM0E,OAAO2tD,OAAMykB,MAAM30E,IAAInC,IAAI;AAEjC,UAAIk4E,kBAA0C;AAC5C,gBACGxzE,OAAI,KAAuB,KAC3B,CAAC,KAAKqzE,2BAA2B1lB,MAAK,MAAM3tD,OAAI,KAAmB;AAAA,MAExE;AAEA,cACIA,OAAuB,KAAI,KAG3B,EACE2tD,OAAMljC,QAA8B,KACpCkjC,OAAM0kB,qBAAqB/2E,SAE9B,CAAC,KAAK+3E,2BAA2B1lB,MAAK,MACpC3tD,OAAI,KAAwB;AAAA,IAEnC;AAAA,IAEA6zE,iBAAiB/pD,IAAkB;AACjC,YAAM;AAAA,QAAExuB;AAAAA,MAAM,IAAGwuB;AACjB,YAAMgqD,gBAAgB,KAAKvB,WAAW,CAAC;AACvC,UAAI,CAACuB,cAAc1B,MAAM91E,IAAIhB,IAAI,GAAG;AAClC,aAAKk3E,iBAAiB33E,IAAIS,MAAMwuB,GAAG3nB,IAAII,KAAK;AAAA,MAC9C;AAAA,IACF;AAAA,IAEAmwE,eAAuB;AACrB,aAAO,KAAKH,WAAW,KAAKA,WAAWv3E,SAAS,CAAC;AAAA,IACnD;AAAA,IAEA43E,uBAAkC;AAChC,eAAS73E,IAAI,KAAKw3E,WAAWv3E,SAAS,KAAKD,KAAK;AAC9C,cAAM;AAAA,UAAE0vB;AAAAA,QAAM,IAAI,KAAK8nD,WAAWx3E,CAAC;AACnC,YAAI0vB,aAAuB;AACzB,iBAAOA;AAAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAGAqoD,wBAAmC;AACjC,eAAS/3E,IAAI,KAAKw3E,WAAWv3E,SAAS,KAAKD,KAAK;AAC9C,cAAM;AAAA,UAAE0vB;AAAAA,QAAM,IAAI,KAAK8nD,WAAWx3E,CAAC;AACnC,YACE0vB,SAASyoD,MAA+B,OACxC,EAAEzoD,QAAuB,IACzB;AACA,iBAAOA;AAAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EC5NA,MAAMspD,kBAAkB5B,MAAM;AAAA,IAAAzwE,eAAA2kB,MAAA;AAAA,YAAA,GAAAA,IAAA;AAAA,WAE5B2tD,mBAAgC,oBAAIj4E,IAAK;AAAA,IAAA;AAAA,EAC3C;AAAA,EAEe,MAAMk4E,yBAAyB3B,aAAwB;AAAA,IACpEgB,YAAY7oD,OAA6B;AACvC,aAAO,IAAIspD,UAAUtpD,KAAK;AAAA,IAC5B;AAAA,IAEA8oD,YAAYj4E,MAAck4E,aAA0BrxE,KAAe;AACjE,YAAMwrD,SAAQ,KAAK+kB,aAAc;AACjC,UAAIc,oBAAgD;AAClD,aAAKC,0BAA0B9lB,QAAOryD,MAAMk4E,aAAarxE,GAAG;AAC5D,aAAKuxE,mBAAmB/lB,QAAOryD,IAAI;AACnCqyD,QAAAA,OAAMqmB,iBAAiBxqE,IAAIlO,IAAI;AAC/B;AAAA,MACF;AAEA,YAAMi4E,YAAYj4E,MAAMk4E,aAAarxE,GAAG;AAAA,IAC1C;AAAA,IAEAyxE,oBACEjmB,QACAryD,MACAk4E,aACS;AACT,UAAI,MAAMI,oBAAoBjmB,QAAOryD,MAAMk4E,WAAW,EAAG,QAAO;AAEhE,UACEA,cAAW,QACX,CAAC7lB,OAAMqmB,iBAAiB13E,IAAIhB,IAAI,GAChC;AACA,cAAM0E,OAAO2tD,OAAMykB,MAAM30E,IAAInC,IAAI;AACjC,gBAAQ0E,OAAI,KAAwB,MAAMA,OAAuB,KAAI;AAAA,MACvE;AAEA,aAAO;AAAA,IACT;AAAA,IAEA6zE,iBAAiB/pD,IAAkB;AACjC,UAAI,CAAC,KAAKyoD,WAAW,CAAC,EAAEyB,iBAAiB13E,IAAIwtB,GAAGxuB,IAAI,GAAG;AACrD,cAAMu4E,iBAAiB/pD,EAAE;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAAA,ECrCe,MAAMoqD,WAAW;AAAA,IAAAxyE,cAAA;AAAA,WAe9ByyE,oBAA6B;AAAK,WAClCC,8BAAuC;AAAA,IAAK;AAAA,IAW5CC,kBAAkBC,WAAmB;AACnC,aAAOA,YAAY,KAAKvU;AAAAA,IAC1B;AAAA,IAEAwU,kBAAkBC,WAAmB;AACnC,aAAOA,YAAY,KAAKzU;AAAAA,IAC1B;AAAA,IAMA0U,UAAUC,cAAqC;AAC7C,UAAI,OAAOA,iBAAiB,UAAU;AACpC,eAAO,KAAKrjF,QAAQiL,IAAIo4E,YAAY;AAAA,MACtC,OAAO;AACL,cAAM,CAACC,YAAYC,aAAa,IAAIF;AACpC,YAAI,CAAC,KAAKD,UAAUE,UAAU,GAAG;AAC/B,iBAAO;AAAA,QACT;AACA,cAAME,gBAAgB,KAAKxjF,QAAQoM,IAAIk3E,UAAU;AACjD,mBAAWrmF,QAAOsP,OAAOnK,KACvBmhF,aACF,GAAqC;AACnC,eAAIC,iBAAAA,OAAAA,SAAAA,cAAgBvmF,IAAG,OAAMsmF,cAActmF,IAAG,GAAG;AAC/C,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA60E,gBAGE5yE,SAAoB+K,MAAkB;AAAA,UAAAw5E;AACtC,cAAAA,oBAAQ,KAAKzjF,QAAQoM,IAAIlN,OAAM,MAAC,OAAA,SAAzBukF,kBACLx5E,IAAI;AAAA,IAER;AAAA,EACF;ACvCA,WAASy5E,oBAAoBlmF,OAAoBs6B,WAA0B;AACzE,QAAIt6B,MAAKk3D,qBAAqB7kD,QAAW;AACvCrS,MAAAA,MAAKk3D,mBAAmB58B;AAAAA,IAC1B,OAAO;AACLt6B,MAAAA,MAAKk3D,iBAAiB/+B,QAAQ,GAAGmC,SAAQ;AAAA,IAC3C;AAAA,EACF;AAOA,WAAS6rD,mBAAmBnmF,OAAoBs6B,WAA0B;AACxE,QAAIt6B,MAAKg3D,oBAAoB3kD,QAAW;AACtCrS,MAAAA,MAAKg3D,kBAAkB18B;AAAAA,IACzB,OAAO;AACLt6B,MAAAA,MAAKg3D,gBAAgB7+B,QAAQ,GAAGmC,SAAQ;AAAA,IAC1C;AAAA,EACF;AAOO,WAAS8rD,iBACdpmF,OACAs6B,WACA;AACA,QAAIt6B,MAAKi3D,kBAAkB5kD,QAAW;AACpCrS,MAAAA,MAAKi3D,gBAAgB38B;AAAAA,IACvB,OAAO;AACLt6B,MAAAA,MAAKi3D,cAAc9+B,QAAQ,GAAGmC,SAAQ;AAAA,IACxC;AAAA,EACF;AAOA,WAAS+rD,oBACPrmF,OACAk5B,UACAotD,WACA;AACA,QAAIC,cAAc;AAClB,QAAIr6E,IAAIgtB,SAAS/sB;AACjB,WAAOo6E,gBAAgB,QAAQr6E,IAAI,GAAG;AACpCq6E,oBAAcrtD,SAAS,EAAEhtB,CAAC;AAAA,IAC5B;AACA,QAAIq6E,gBAAgB,QAAQA,YAAY7yE,QAAQ4yE,UAAU5yE,OAAO;AAC/D0yE,uBAAiBpmF,OAAMsmF,UAAUhsD,QAAQ;AAAA,IAC3C,OAAO;AACL4rD,0BAAoBK,aAAaD,UAAUhsD,QAAQ;AAAA,IACrD;AAAA,EACF;AAAA,EAEe,MAAMksD,uBAAuBnB,WAAW;AAAA,IACrDztB,WAAWrnD,SAAwB;AACjC,UAAI,KAAKuyD,SAAUvyD,SAAQ+C,IAAIwvD,WAAW,KAAKA;AAC/C,YAAM;AAAA,QAAE2jB;AAAAA,MAAa,IAAG,KAAK9nF;AAC7B,UAAI,KAAK27B,SAASnuB,WAAWs6E,aAAa;AACxC,aAAKnsD,SAASnuB,SAASs6E;AAAAA,MACzB;AACA,WAAKnsD,SAASlzB,KAAKmJ,OAAO;AAC1B,WAAK5R,MAAM8nF;AAAAA,IACb;AAAA,IAMAC,eAAe1mF,OAAkB;AAC/B,YAAM;AAAA,QAAE2mF;AAAAA,MAAc,IAAG,KAAKhoF;AAC9B,YAAMioF,qBAAqBD,aAAax6E;AACxC,UAAIy6E,uBAAuB,EAAG;AAC9B,UAAI16E,IAAI06E,qBAAqB;AAC7B,YAAMC,gBAAgBF,aAAaz6E,CAAC;AAEpC,UAAI26E,cAAcnzE,UAAU1T,MAAK4T,KAAK;AACpCizE,sBAAcC,cAAc9mF;AAC5BkM;AAAAA,MACF;AAEA,YAAM;AAAA,QAAEwH,OAAOqzE;AAAAA,MAAW,IAAG/mF;AAE7B,aAAOkM,KAAK,GAAGA,KAAK;AAClB,cAAMo6E,YAAYK,aAAaz6E,CAAC;AAChC,cAAM86E,aAAaV,UAAU1yE;AAC7B,YAAIozE,aAAaD,WAAW;AAO1BT,oBAAUW,iBAAiBjnF;AAC3B,eAAKknF,gBAAgBZ,SAAS;AAC9BK,uBAAa5sE,OAAO7N,GAAG,CAAC;AAAA,QAC1B,OAAO;AACL,cAAI86E,eAAeD,WAAW;AAC5BT,sBAAUa,eAAennF;AAAAA,UAC3B;AAEA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAMAknF,gBAAgBZ,WAA8B;AAC5C,YAAM;AAAA,QAAEhsD,UAAAA;AAAAA,MAAU,IAAGgsD;AACrB,UAAIA,UAAUQ,gBAAgB,QAAQR,UAAUa,iBAAiB,MAAM;AACrE,YAAIb,UAAUQ,gBAAgB,MAAM;AAClCZ,8BAAoBI,UAAUQ,aAAaxsD,SAAQ;AAAA,QACrD;AACA,YAAIgsD,UAAUa,iBAAiB,MAAM;AACnChB,6BAAmBG,UAAUa,cAAc7sD,SAAQ;AAAA,QACrD;AAAA,MACF,OAAO;AAEL,cAAM;AAAA,UAAE2sD,gBAAgBjnF;AAAAA,UAAM0T,OAAO0zE;AAAAA,QAAc,IAAGd;AACtD,YACE,KAAKx/E,MAAM8F,WAAW,KAAK84E,kBAAkB0B,YAAY,IAAI,CAAC,UAE9D;AAIA,kBAAQpnF,MAAKmR,MAAI;AAAA,YACf,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACHk1E,kCAAoBrmF,OAAMA,MAAKg8B,YAAYsqD,SAAS;AACpD;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACHD,kCAAoBrmF,OAAMA,MAAK+5B,WAAWusD,SAAS;AACnD;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACHD,kCAAoBrmF,OAAMA,MAAK26B,QAAQ2rD,SAAS;AAChD;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AACHD,kCAAoBrmF,OAAMA,MAAKk5B,UAAUotD,SAAS;AAClD;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AACHD,kCAAoBrmF,OAAMA,MAAK09B,YAAY4oD,SAAS;AACpD;AAAA,YACF,KAAK;AACgC;AACjCD,oCAAoBrmF,OAAMA,MAAKmgC,SAASmmD,SAAS;AAAA,cACnD;AAGA;AAAA,YACF,KAAK;AACHD,kCAAoBrmF,OAAMA,MAAKmgC,SAASmmD,SAAS;AACjD;AAAA,YACF,SAAS;AACPF,+BAAiBpmF,OAAMs6B,SAAQ;AAAA,YACjC;AAAA,UACF;AAAA,QACF,OAAO;AACL8rD,2BAAiBpmF,OAAMs6B,SAAQ;AAAA,QACjC;AAAA,MACF;AAAA,IACF;AAAA,IAQA+sD,4BAA4B;AAC1B,YAAM;AAAA,QAAEV;AAAAA,MAAc,IAAG,KAAKhoF;AAC9B,eAASuN,IAAIy6E,aAAax6E,SAAS,GAAGD,KAAK,GAAGA,KAAK;AACjD,aAAKg7E,gBAAgBP,aAAaz6E,CAAC,CAAC;AAAA,MACtC;AACA,WAAKvN,MAAMgoF,eAAe,CAAE;AAAA,IAC9B;AAAA,IAqBAW,kCAAkCtnF,OAAY;AAC5C,YAAM;AAAA,QAAE2mF;AAAAA,MAAc,IAAG,KAAKhoF;AAC9B,YAAM;AAAA,QAAEwN;AAAAA,MAAQ,IAAGw6E;AACnB,UAAIx6E,WAAW,EAAG;AAClB,YAAMm6E,YAAYK,aAAax6E,SAAS,CAAC;AACzC,UAAIm6E,UAAUQ,gBAAgB9mF,OAAM;AAClCsmF,kBAAUQ,cAAc;AAAA,MAC1B;AAAA,IACF;AAAA,IAsBAS,uCAAuCvnF,OAAkB;AACvD,YAAM;AAAA,QAAE2mF;AAAAA,MAAc,IAAG,KAAKhoF;AAC9B,YAAM;AAAA,QAAEwN;AAAAA,MAAQ,IAAGw6E;AACnB,UAAIx6E,WAAW,EAAG;AAElB,UAAIw6E,aAAax6E,SAAS,CAAC,EAAEg7E,iBAAiBnnF,OAAM;AAClD2mF,qBAAax6E,SAAS,CAAC,EAAEg7E,eAAe;AAAA,MAC1C,WAAWh7E,UAAU,KAAKw6E,aAAax6E,SAAS,CAAC,EAAEg7E,iBAAiBnnF,OAAM;AACxE2mF,qBAAax6E,SAAS,CAAC,EAAEg7E,eAAe;AAAA,MAC1C;AAAA,IACF;AAAA,IASAK,wBAAwBxnF,OAAY0T,OAAeE,KAAa;AAC9D,YAAM;AAAA,QAAE+yE;AAAAA,MAAc,IAAG,KAAKhoF;AAC9B,YAAMioF,qBAAqBD,aAAax6E;AACxC,UAAIy6E,uBAAuB,EAAG;AAC9B,UAAI16E,IAAI06E,qBAAqB;AAE7B,aAAO16E,KAAK,GAAGA,KAAK;AAClB,cAAMo6E,YAAYK,aAAaz6E,CAAC;AAChC,cAAM86E,aAAaV,UAAU1yE;AAC7B,cAAMwzE,eAAed,UAAU5yE;AAE/B,YAAI0zE,iBAAiBxzE,KAAK;AACxB0yE,oBAAUQ,cAAc9mF;AAAAA,QAC1B,WAAWgnF,eAAetzE,OAAO;AAC/B4yE,oBAAUa,eAAennF;AAAAA,QAC3B,WAAWgnF,aAAatzE,OAAO;AAC7B;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;ACjUO,QAAM+zE,YAAY;AAClB,QAAMC,aAAa,IAAIh8E,OAAO+7E,UAAUxmF,QAAQ,GAAG;AAGnD,WAAS0mF,UAAU57E,OAAuB;AAC/C,YAAQA,OAAI;AAAA,MACV,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AACE,eAAO;AAAA,MAET;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEO,WAAS67E,WAAW9gF,QAAe4M,OAAeE,KAAsB;AAC7E,aAAS1H,IAAIwH,OAAOxH,IAAI0H,KAAK1H,KAAK;AAChC,UAAIy7E,UAAU7gF,OAAM8F,WAAWV,CAAC,CAAC,GAAG;AAClC,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEO,QAAM27E,iBAAiB;AAEvB,QAAMC,uBACX;AAGK,WAASC,aAAah8E,OAAuB;AAClD,YAAQA,OAAI;AAAA,MACV,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAA;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MAET;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EChCe,MAAMi8E,MAAM;AAAA,IAAAn1E,cAAA;AAAA,WACZ+oB,QAAK;AAAA,WAIlBs1C,aAAU;AAAA,WACVhgD,UAAO;AAAA,WACPD,YAAS;AAAA,WAIT1d,WAAQ;AAAA,WACRI,SAAM;AAAA,WA0BNwd,SAA4B,CAAE;AAAA,WAG9B82D,mBAA2B;AAAE,WAM7BC,YAAsB,CAAE;AAAA,WAQxBC,4BAAsC,CAAE;AAAA,WAYxCC,eAAkC;AAAA,QAChCC,0BAA0B;AAAA,QAC1BC,eAAe;AAAA,MAChB;AAAA,WAODC,SAIK,CAAE;AAAA,WAEP9B,cAAc;AAAC,WAEfE,eAAyC,CAAE;AAAA,WAG3C16E,MAAc;AAAC,WAIfkF,OAAI;AAAA,WAGJtR,QAAa;AAAI,WAGjB6T,QAAgB;AAAC,WACjBE,MAAc;AAAC,WAIf6jE,gBAA0B;AAAI,WAE9BZ,kBAA4B;AAAI,WAIhC7+D,UAA6B,CAACwwE,OAAG5Q,KAAK;AAAC,WAYvC6Q,gCAAiD;AAAI,WAYrDC,eAA6D,oBAAIrzB,IAAK;AAAA,WAGtEszB,eAAuB;AAAA,IAAC;AAAA,IAAA,IArIV57E,SAAM;AAAA,cAAA,KAFP6uB,QAAK,KAAA;AAAA,IAAA;AAAA,IAAA,IAEJ7uB,OAAM6C,GAAA;AAAA,UAAAA,EAAA,MAFPgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAalBpB,KAAK;AAAA,MACHi3C;AAAAA,MACA31C;AAAAA,MACAo1C;AAAAA,MACAn9D;AAAAA,MACAC;AAAAA,IACO,GAAS;AAChB,WAAKjH,SACH0kE,eAAe,QACX,QACAA,eAAe,OACb,OACA31C,eAAe;AAEvB,WAAKo1C,aAAaA;AAClB,WAAKhgD,UAAUnd;AACf,WAAKkd,YAAY,CAACjd;AAClB,WAAKT,WAAW,KAAKI,SAAS,IAAIgvD,SAChC5uD,WACAC,aACAk9D,UACF;AAAA,IACF;AAAA,IAAC,IAsBa0X,yBAAsB;AAAA,cAAA,KAzDvBhtD,QAAK,KAAA;AAAA,IAAA;AAAA,IAAA,IAyDJgtD,uBAAsBh5E,GAAA;AAAA,UAAAA,EAAA,MAzDvBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA0DJitD,SAAM;AAAA,cAAA,KA1DPjtD,QAAK,KAAA;AAAA,IAAA;AAAA,IAAA,IA0DJitD,OAAMj5E,GAAA;AAAA,UAAAA,EAAA,MA1DPgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA2DJktD,qBAAkB;AAAA,cAAA,KA3DnBltD,QAAK,KAAA;AAAA,IAAA;AAAA,IAAA,IA2DJktD,mBAAkBl5E,GAAA;AAAA,UAAAA,EAAA,MA3DnBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA4DJmtD,iBAAc;AAAA,cAAA,KA5DfntD,QAAK,MAAA;AAAA,IAAA;AAAA,IAAA,IA4DJmtD,eAAcn5E,GAAA;AAAA,UAAAA,EAAA,MA5DfgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA6DJotD,mBAAgB;AAAA,cAAA,KA7DjBptD,QAAK,MAAA;AAAA,IAAA;AAAA,IAAA,IA6DJotD,iBAAgBp5E,GAAA;AAAA,UAAAA,EAAA,MA7DjBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA8DJqtD,kBAAe;AAAA,cAAA,KA9DhBrtD,QAAK,MAAA;AAAA,IAAA;AAAA,IAAA,IA8DJqtD,gBAAer5E,GAAA;AAAA,UAAAA,EAAA,MA9DhBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA+DJstD,oCAAiC;AAAA,cAAA,KA/DlCttD,QAAK,OAAA;AAAA,IAAA;AAAA,IAAA,IA+DJstD,kCAAiCt5E,GAAA;AAAA,UAAAA,EAAA,MA/DlCgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IAwEJutD,YAAS;AAAA,cAAA,KAxEVvtD,QAAK,OAAA;AAAA,IAAA;AAAA,IAAA,IAwEJutD,UAASv5E,GAAA;AAAA,UAAAA,EAAA,MAxEVgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IAyEJwtD,6BAA0B;AAAA,cAAA,KAzE3BxtD,QAAK,OAAA;AAAA,IAAA;AAAA,IAAA,IAyEJwtD,2BAA0Bx5E,GAAA;AAAA,UAAAA,EAAA,MAzE3BgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA+GJytD,qBAAkB;AAAA,cAAA,KA/GnBztD,QAAK,QAAA;AAAA,IAAA;AAAA,IAAA,IA+GJytD,mBAAkBz5E,GAAA;AAAA,UAAAA,EAAA,MA/GnBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IAoHJ0tD,cAAW;AAAA,cAAA,KApHZ1tD,QAAK,QAAA;AAAA,IAAA;AAAA,IAAA,IAoHJ0tD,YAAW15E,GAAA;AAAA,UAAAA,EAAA,MApHZgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IAAA,IA0HJ2tD,mBAAgB;AAAA,cAAA,KA1HjB3tD,QAAK,QAAA;AAAA,IAAA;AAAA,IAAA,IA0HJ2tD,iBAAgB35E,GAAA;AAAA,UAAAA,EAAA,MA1HjBgsB,SAAK;AAAA,UAAA,MAALA,SAAK;AAAA,IAAA;AAAA,IA8IlB4tD,cAAwB;AACtB,aAAO,IAAI7mB,SACT,KAAKzxC,SACL,KAAKjlB,MAAM,KAAKglB,WAChB,KAAKhlB,MAAM,KAAKilE,UAClB;AAAA,IACF;AAAA,IAEA5Z,QAAe;AACb,YAAM34D,SAAQ,IAAIqpF,MAAO;AACzBrpF,MAAAA,OAAMi9B,QAAQ,KAAKA;AACnBj9B,MAAAA,OAAMuyE,aAAa,KAAKA;AACxBvyE,MAAAA,OAAMuyB,UAAU,KAAKA;AACrBvyB,MAAAA,OAAMsyB,YAAY,KAAKA;AACvBtyB,MAAAA,OAAM4U,WAAW,KAAKA;AACtB5U,MAAAA,OAAMgV,SAAS,KAAKA;AACpBhV,MAAAA,OAAMwyB,SAAS,KAAKA,OAAO/f,MAAO;AAClCzS,MAAAA,OAAMspF,mBAAmB,KAAKA;AAC9BtpF,MAAAA,OAAMupF,YAAY,KAAKA,UAAU92E,MAAO;AACxCzS,MAAAA,OAAMwpF,4BAA4B,KAAKA,0BAA0B/2E,MAAO;AACxEzS,MAAAA,OAAMypF,eAAe,KAAKA;AAC1BzpF,MAAAA,OAAM4pF,SAAS,KAAKA,OAAOn3E,MAAO;AAClCzS,MAAAA,OAAM8nF,cAAc,KAAKA;AACzB9nF,MAAAA,OAAMgoF,eAAe,KAAKA,aAAav1E,MAAO;AAC9CzS,MAAAA,OAAMsN,MAAM,KAAKA;AACjBtN,MAAAA,OAAMwS,OAAO,KAAKA;AAClBxS,MAAAA,OAAMkB,QAAQ,KAAKA;AACnBlB,MAAAA,OAAM+U,QAAQ,KAAKA;AACnB/U,MAAAA,OAAMiV,MAAM,KAAKA;AACjBjV,MAAAA,OAAM84E,gBAAgB,KAAKA;AAC3B94E,MAAAA,OAAMk4E,kBAAkB,KAAKA;AAC7Bl4E,MAAAA,OAAMqZ,UAAU,KAAKA,QAAQ5G,MAAO;AACpCzS,MAAAA,OAAM8pF,gCAAgC,KAAKA;AAC3C9pF,MAAAA,OAAM+pF,eAAe,KAAKA;AAC1B/pF,MAAAA,OAAMgqF,eAAe,KAAKA;AAE1B,aAAOhqF;AAAAA,IACT;AAAA,EACF;iBCrNA,SAAS4xB,QAAQxkB,OAAM;AACrB,WAAOA,SAAI,MAAcA,SAAc;AAAA,EACxC;AAID,QAAMykB,oCAAoC;AAAA,IACxCC,WAAW,oBAAIvjB,IAAY,kCAS1B;AAAA,IACDwjB,KAAK,oBAAIxjB,IAAY,CAKpB,IAAA,IAAA,IAAA,GAAA,CAAA;AAAA,EACF;AAED,QAAMyjB,mCAAmC;AAAA,IAEvCC,KAAMC,QAAeA,OAAuB,MAAIA,OAAuB;AAAA,IAGvEC,KAAMD,QAAeA,MAAsB,MAAIA,MAAsB;AAAA,IAGrEE,KAAMF,QAAeA,MAAsB,MAAIA,MAAsB;AAAA,IAGrEH,KAAMG,QACHA,MAAsB,MAAIA,MAAsB,MAChDA,MAAE,MAA4BA,MAAE,MAChCA,MAAE,MAA4BA,MAAE;AAAA,EACpC;AAUM,WAASG,mBACd7f,MACArK,QACAmF,MACAglB,WACAC,SACAC,QACA;AACA,UAAMC,aAAanlB;AACnB,UAAMolB,mBAAmBJ;AACzB,UAAMK,iBAAiBJ;AAEvB,QAAIK,MAAM;AACV,QAAIC,kBAAkB;AACtB,QAAIC,aAAaxlB;AACjB,UAAM;AAAA,MAAEE;AAAAA,IAAQ,IAAGrF;AACnB,eAAS;AACP,UAAImF,QAAOE,QAAQ;AACjBglB,eAAOO,aAAaN,YAAYC,kBAAkBC,cAAc;AAChEC,eAAOzqB,OAAMsK,MAAMqgB,YAAYxlB,IAAG;AAClC;AAAA,MACF;AACA,YAAM4kB,KAAK/pB,OAAM8F,WAAWX,IAAG;AAC/B,UAAI0lB,YAAYxgB,MAAM0f,IAAI/pB,QAAOmF,IAAG,GAAG;AACrCslB,eAAOzqB,OAAMsK,MAAMqgB,YAAYxlB,IAAG;AAClC;AAAA,MACF;AACA,UAAI4kB,WAA4B;AAC9BU,eAAOzqB,OAAMsK,MAAMqgB,YAAYxlB,IAAG;AAClC,cAAM2lB,MAAMC,gBACV/qB,QACAmF,MACAglB,WACAC,SACA/f,SAAS,YACTggB,MACF;AACA,YAAIS,IAAIf,OAAO,QAAQ,CAACW,iBAAiB;AACvCA,4BAAkB;AAAA,YAAEvlB,KAAAA;AAAAA,YAAKglB;AAAAA,YAAWC;AAAAA,UAAS;AAAA,QAC/C,OAAO;AACLK,iBAAOK,IAAIf;AAAAA,QACb;AACA,SAAC;AAAA,UAAE5kB,KAAAA;AAAAA,UAAKglB;AAAAA,UAAWC;AAAAA,QAAS,IAAGU;AAC/BH,qBAAaxlB;AAAAA,MACd,WACC4kB,eACAA,aACA;AACA,UAAE5kB;AACF,UAAEilB;AACFD,oBAAYhlB;AAAAA,MACb,WAAU4kB,aAA6BA,WAAiC;AACvE,YAAI1f,SAAS,YAAY;AACvBogB,iBAAOzqB,OAAMsK,MAAMqgB,YAAYxlB,IAAG,IAAI;AACtC,YAAEA;AACF,cACE4kB,OAA+B,MAC/B/pB,OAAM8F,WAAWX,IAAG,MAAC,IACrB;AACA,cAAEA;AAAAA,UACJ;AACA,YAAEilB;AACFO,uBAAaR,YAAYhlB;AAAAA,QAC3B,OAAO;AACLklB,iBAAOO,aAAaN,YAAYC,kBAAkBC,cAAc;AAAA,QAClE;AAAA,MACF,OAAO;AACL,UAAErlB;AAAAA,MACJ;AAAA,IACF;AACA,WAEI;AAAA,MACEA,KAAAA;AAAAA,MACA8F,KAAKwf;AAAAA,MACLC;AAAAA,MACAP;AAAAA,MACAC;AAAAA,MACAY,iBAAiB,CAAC,CAACN;AAAAA,IACpB;AAAA,EACP;AAEA,WAASG,YACPxgB,MACA0f,IACA/pB,QACAmF,MACA;AACA,QAAIkF,SAAS,YAAY;AACvB,aACE0f,OAAE,MACDA,aACC/pB,OAAM8F,WAAWX,OAAM,CAAC,MAA+B;AAAA,IAE7D;AACA,WACE4kB,QAAQ1f,SAAS;EAErB;AAOA,WAAS0gB,gBACP/qB,QACAmF,MACAglB,WACAC,SACAa,YACAZ,QACA;AACA,UAAMa,iBAAiB,CAACD;AACxB9lB,IAAAA;AAEA,UAAM2lB,MAAOf,CAAAA,SAAuB;AAAA,MAAE5kB,KAAAA;AAAAA,MAAK4kB,IAAAA;AAAAA,MAAII;AAAAA,MAAWC;AAAAA,IAAQ;AAElE,UAAML,KAAK/pB,OAAM8F,WAAWX,MAAK;AACjC,YAAQ4kB,IAAE;AAAA,MACR,KAAA;AACE,eAAOe,IAAI,IAAI;AAAA,MACjB,KAAA;AACE,eAAOA,IAAI,IAAI;AAAA,MACjB,KAAA,KAA2B;AACzB,YAAI7lB;AACJ,SAAC;AAAA,UAAEA,MAAAA;AAAAA,UAAME,KAAAA;AAAAA,QAAI,IAAIgmB,YACfnrB,QACAmF,MACAglB,WACAC,SACA,GACA,OACAc,gBACAb,MACF;AACA,eAAOS,IAAI7lB,UAAS,OAAO,OAAOM,OAAOC,aAAaP,KAAI,CAAC;AAAA,MAC7D;AAAA,MACA,KAAA,KAA2B;AACzB,YAAIA;AACJ,SAAC;AAAA,UAAEA,MAAAA;AAAAA,UAAME,KAAAA;AAAAA,QAAI,IAAIimB,cACfprB,QACAmF,MACAglB,WACAC,SACAc,gBACAb,MACF;AACA,eAAOS,IAAI7lB,UAAS,OAAO,OAAOM,OAAO8lB,cAAcpmB,KAAI,CAAC;AAAA,MAC9D;AAAA,MACA,KAAA;AACE,eAAO6lB,IAAI,GAAI;AAAA,MACjB,KAAA;AACE,eAAOA,IAAI,IAAI;AAAA,MACjB,KAAA;AACE,eAAOA,IAAI,IAAQ;AAAA,MACrB,KAAA;AACE,eAAOA,IAAI,IAAI;AAAA,MACjB,KAAA;AACE,YAAI9qB,OAAM8F,WAAWX,IAAG,UAA0B;AAChD,YAAEA;AAAAA,QACJ;AAAA,MAEF,KAAA;AACEglB,oBAAYhlB;AACZ,UAAEilB;AAAAA,MAEJ,KAAA;AAAA,MACA,KAAA;AACE,eAAOU,IAAI,EAAE;AAAA,MACf,KAAA;AAAA,MACA,KAAA;AACE,YAAIG,YAAY;AACd,iBAAOH,IAAI,IAAI;AAAA,QACjB,OAAO;AACLT,iBAAOiB,oBAAoBnmB,OAAM,GAAGglB,WAAWC,OAAO;AAAA,QACxD;AAAA,MAEF;AACE,YAAIL,MAAE,MAAwBA,UAAwB;AACpD,gBAAMwB,WAAWpmB,OAAM;AACvB,gBAAMqF,QAAQ,UAAUC,KAAKzK,OAAMsK,MAAMihB,UAAUpmB,OAAM,CAAC,CAAC;AAE3D,cAAIqmB,WAAWhhB,MAAM,CAAC;AAEtB,cAAIihB,QAAQC,SAASF,UAAU,CAAC;AAChC,cAAIC,QAAQ,KAAK;AACfD,uBAAWA,SAASlhB,MAAM,GAAG,EAAE;AAC/BmhB,oBAAQC,SAASF,UAAU,CAAC;AAAA,UAC9B;AACArmB,UAAAA,QAAOqmB,SAASnmB,SAAS;AACzB,gBAAMsmB,OAAO3rB,OAAM8F,WAAWX,IAAG;AACjC,cACEqmB,aAAa,OACbG,SAAyB,MACzBA,SAAI,IACJ;AACA,gBAAIV,YAAY;AACd,qBAAOH,IAAI,IAAI;AAAA,YACjB,OAAO;AACLT,qBAAOiB,oBAAoBC,UAAUpB,WAAWC,OAAO;AAAA,YACzD;AAAA,UACF;AAEA,iBAAOU,IAAIvlB,OAAOC,aAAaimB,KAAK,CAAC;AAAA,QACvC;AAEA,eAAOX,IAAIvlB,OAAOC,aAAaukB,EAAE,CAAC;AAAA,IACtC;AAAA,EACF;AAOA,WAASoB,YACPnrB,QACAmF,MACAglB,WACAC,SACAwB,KACAC,UACAX,gBACAb,QACA;AACA,UAAMC,aAAanlB;AACnB,QAAI4C;AACJ,KAAC;AAAA,MAAEA;AAAAA,MAAG5C,KAAAA;AAAAA,IAAK,IAAG2mB,QACZ9rB,QACAmF,MACAglB,WACAC,SACA,IACAwB,KACAC,UACA,OACAxB,QACkB,CAACa,cACrB;AACA,QAAInjB,MAAM,MAAM;AACd,UAAImjB,gBAAgB;AAClBb,eAAO0B,sBAAsBzB,YAAYH,WAAWC,OAAO;AAAA,MAC7D,OAAO;AACLjlB,QAAAA,OAAMmlB,aAAa;AAAA,MACrB;AAAA,IACF;AACA,WAAO;AAAA,MAAErlB,MAAM8C;AAAAA,MAAG5C,KAAAA;AAAAA,IAAK;AAAA,EACzB;AAuBO,WAAS2mB,QACd9rB,QACAmF,MACAglB,WACAC,SACA4B,OACAJ,KACAC,UACAI,mBACA5B,QACA6B,aACA;AACA,UAAMtf,QAAQzH;AACd,UAAMgnB,oBACJH,UAAU,KACNtC,kCAAkCE,MAClCF,kCAAkCC;AACxC,UAAMyC,mBACJJ,UAAU,KACNnC,iCAAiCD,MACjCoC,UAAU,KACRnC,iCAAiCI,MACjC+B,UAAU,IACRnC,iCAAiCG,MACjCH,iCAAiCC;AAE3C,QAAIngB,UAAU;AACd,QAAI0iB,QAAQ;AAEZ,aAASjnB,IAAI,GAAGqC,IAAImkB,OAAO,OAAOU,WAAWV,KAAKxmB,IAAIqC,GAAG,EAAErC,GAAG;AAC5D,YAAMH,QAAOjF,OAAM8F,WAAWX,IAAG;AACjC,UAAIonB;AAEJ,UAAItnB,UAA6B,MAAIgnB,sBAAsB,QAAQ;AACjE,cAAMO,OAAOxsB,OAAM8F,WAAWX,OAAM,CAAC;AACrC,cAAMwmB,OAAO3rB,OAAM8F,WAAWX,OAAM,CAAC;AAErC,YAAI,CAAC8mB,mBAAmB;AACtB,cAAIC,YAAa,QAAO;AAAA,YAAEnkB,GAAG;AAAA,YAAM5C,KAAAA;AAAAA,UAAK;AACxCklB,iBAAOoC,iCAAiCtnB,MAAKglB,WAAWC,OAAO;AAAA,QACjE,WACEhY,OAAOsa,MAAMf,IAAI,KACjB,CAACS,iBAAiBT,IAAI,KACtBQ,kBAAkBxlB,IAAI6lB,IAAI,KAC1BL,kBAAkBxlB,IAAIglB,IAAI,GAC1B;AACA,cAAIO,YAAa,QAAO;AAAA,YAAEnkB,GAAG;AAAA,YAAM5C,KAAAA;AAAAA,UAAK;AACxCklB,iBAAOsC,2BAA2BxnB,MAAKglB,WAAWC,OAAO;AAAA,QAC3D;AAGA,UAAEjlB;AACF;AAAA,MACF;AAEA,UAAIF,aAA8B;AAChCsnB,cAAMtnB,QAAI,KAA4C;AAAA,MACxD,WAAWA,SAAI,IAA0B;AACvCsnB,cAAMtnB,QAAI,KAA4C;AAAA,MACxD,WAAW2nB,SAAkB3nB,KAAI,GAAG;AAClCsnB,cAAMtnB,QAAuB;AAAA,MAC/B,OAAO;AACLsnB,cAAMD;AAAAA,MACR;AACA,UAAIC,OAAOP,OAAO;AAGhB,YAAIO,OAAO,KAAKL,aAAa;AAC3B,iBAAO;AAAA,YAAEnkB,GAAG;AAAA,YAAM5C,KAAAA;AAAAA,UAAK;AAAA,QACzB,WACEonB,OAAO,KACPlC,OAAOwC,aAAa1nB,MAAKglB,WAAWC,SAAS4B,KAAK,GAClD;AACAO,gBAAM;AAAA,QACP,WAAUV,UAAU;AACnBU,gBAAM;AACN5iB,oBAAU;AAAA,QACZ,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,QAAExE;AACFknB,cAAQA,QAAQL,QAAQO;AAAAA,IAC1B;AACA,QAAIpnB,SAAQyH,SAAUgf,OAAO,QAAQzmB,OAAMyH,UAAUgf,OAAQjiB,SAAS;AACpE,aAAO;AAAA,QAAE5B,GAAG;AAAA,QAAM5C,KAAAA;AAAAA,MAAK;AAAA,IACzB;AAEA,WAAO;AAAA,MAAE4C,GAAGskB;AAAAA,MAAOlnB,KAAAA;AAAAA,IAAK;AAAA,EAC1B;AAMO,WAASimB,cACdprB,QACAmF,MACAglB,WACAC,SACAc,gBACAb,QACA;AACA,UAAMN,KAAK/pB,OAAM8F,WAAWX,IAAG;AAC/B,QAAIF;AAEJ,QAAI8kB,YAAiC;AACnC,QAAE5kB;AACF,OAAC;AAAA,QAAEF,MAAAA;AAAAA,QAAME,KAAAA;AAAAA,MAAK,IAAGgmB,YACfnrB,QACAmF,MACAglB,WACAC,SACApqB,OAAMgT,QAAQ,KAAK7N,IAAG,IAAIA,MAC1B,MACA+lB,gBACAb,MACF;AACA,QAAEllB;AACF,UAAIF,UAAS,QAAQA,QAAO,SAAU;AACpC,YAAIimB,gBAAgB;AAClBb,iBAAOyC,iBAAiB3nB,MAAKglB,WAAWC,OAAO;AAAA,QACjD,OAAO;AACL,iBAAO;AAAA,YAAEnlB,MAAM;AAAA,YAAME,KAAAA;AAAAA,UAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF,OAAO;AACL,OAAC;AAAA,QAAEF,MAAAA;AAAAA,QAAME,KAAAA;AAAAA,MAAI,IAAIgmB,YACfnrB,QACAmF,MACAglB,WACAC,SACA,GACA,OACAc,gBACAb,MACF;AAAA,IACF;AACA,WAAO;AAAA,MAAEplB,MAAAA;AAAAA,MAAME,KAAAA;AAAAA,IAAK;AAAA,EACtB;AC5ZA,WAASw9E,cAAcx9E,MAAaglB,WAAmBC,SAAiB;AACtE,WAAO,IAAIyxC,SAASzxC,SAASjlB,OAAMglB,WAAWhlB,IAAG;AAAA,EACnD;AAEA,QAAMy9E,oBAAoB,oBAAIx8E,IAAI,wCASjC;AAAA,EAMM,MAAMy8E,MAAM;AAAA,IACjB92E,YAAYlU,QAAc;AACxB,YAAMuyE,aAAavyE,OAAMuyE,cAAc;AACvC,WAAK//D,OAAOxS,OAAMwS;AAClB,WAAKtR,QAAQlB,OAAMkB;AACnB,WAAK6T,QAAQw9D,aAAavyE,OAAM+U;AAChC,WAAKE,MAAMs9D,aAAavyE,OAAMiV;AAC9B,WAAKN,MAAM,IAAIuvD,eAAelkE,OAAM4U,UAAU5U,OAAMgV,MAAM;AAAA,IAC5D;AAAA,EAOF;AAAA,EAIe,MAAei2E,kBAAkBpD,eAAe;AAAA,IAM7D3zE,YAAY1T,UAAkB2H,QAAe;AAC3C,YAAO;AAAC,WANV+iF,cAAW;AAAA,WAGXtvD,SAAmC,CAAE;AAAA,WA28CrCuvD,wBAA0C;AAAA,QACxCn2D,cAAcA,CAAC1nB,MAAKglB,WAAWC,SAAS4B,UAAU;AAChD,cAAI,EAAE,KAAKu/C,oBAA0C,QAAO;AAE5D,eAAKiE,MAAMxF,OAAOpJ,cAAc+hB,cAAcx9E,MAAKglB,WAAWC,OAAO,GAAG;AAAA,YACtE4B;AAAAA,UACF,CAAC;AAED,iBAAO;AAAA,QACR;AAAA,QACDS,kCAAkC,KAAKw2D,aACrCjZ,OAAO1G,gCACT;AAAA,QACA32C,4BAA4B,KAAKs2D,aAC/BjZ,OAAOzE,0BACT;AAAA,MACD;AAAA,WAED2d,8BAA2Bj7E,OAAAyE,OACtB,CAAA,GAAA,KAAKs2E,uBAAqB;AAAA,QAC7Bj3D,uBAAuB,KAAKk3D,aAAajZ,OAAOnJ,qBAAqB;AAAA,QACrE/zC,kBAAkB,KAAKm2D,aAAajZ,OAAOvJ,gBAAgB;AAAA,MAAC,CAAA;AAAA,WAG9D0iB,0CAAuCl7E,OAAAyE,OAClC,CAAA,GAAA,KAAKw2E,6BAA2B;AAAA,QACnC53D,qBAAqBA,CAACnmB,MAAKglB,WAAWC,YAAY;AAChD,eAAKg5D,uBACHpZ,OAAOvC,qBACPkb,cAAcx9E,MAAKglB,WAAWC,OAAO,CACvC;AAAA,QACD;AAAA,QACDQ,cAAcA,CAACzlB,MAAKglB,WAAWC,YAAY;AACzC,gBAAM,KAAKolD,MACTxF,OAAOtD,oBACPic,cAAcx9E,OAAM,GAAGglB,WAAWC,OAAO,CAC3C;AAAA,QACF;AAAA,MAAC,CAAA;AAAA,WAGHi5D,4CAAyCp7E,OAAAyE,OACpC,CAAA,GAAA,KAAKw2E,6BAA2B;AAAA,QACnC53D,qBAAqB,KAAK23D,aAAajZ,OAAOvC,mBAAmB;AAAA,QACjE78C,cAAcA,CAACzlB,MAAKglB,WAAWC,YAAY;AACzC,gBAAM,KAAKolD,MACTxF,OAAOrD,sBACPgc,cAAcx9E,MAAKglB,WAAWC,OAAO,CACvC;AAAA,QACF;AAAA,MAAC,CAAA;AAv/CD,WAAKvyB,QAAQ,IAAIqpF,MAAO;AACxB,WAAKrpF,MAAM67B,KAAKr7B,QAAO;AACvB,WAAK2H,QAAQA;AACb,WAAKqF,SAASrF,OAAMqF;AACpB,WAAKmuB,WAAW,CAAE;AAClB,WAAKuvD,cAAc;AAAA,IACrB;AAAA,IAEAO,UAAUrjF,QAA0B;AAGlC,WAAKwzB,OAAOpuB,SAAS,KAAKxN,MAAMgqF;AAChC,WAAKpuD,OAAOnzB,KAAKL,MAAK;AACtB,QAAE,KAAKpI,MAAMgqF;AAAAA,IACf;AAAA,IAIAl2D,OAAa;AACX,WAAK43D,oBAAqB;AAC1B,UAAI,KAAKhY,cAAW,KAAuB;AACzC,aAAK+X,UAAU,IAAIT,MAAM,KAAKhrF,KAAK,CAAC;AAAA,MACtC;AAEA,WAAKA,MAAM84E,gBAAgB,KAAK94E,MAAMgV;AACtC,WAAKhV,MAAMk4E,kBAAkB,KAAKl4E,MAAM4U;AACxC,WAAK+2E,UAAW;AAAA,IAClB;AAAA,IAEAC,IAAIp5E,MAA0B;AAC5B,UAAI,KAAKG,MAAMH,IAAI,GAAG;AACpB,aAAKshB,KAAM;AACX,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAKAnhB,MAAMH,MAA0B;AAC9B,aAAO,KAAKxS,MAAMwS,SAASA;AAAAA,IAC7B;AAAA,IAKAq5E,qBAAqB7rF,QAA8B;AACjD,aAAO;AAAA,QACLsN,KAAKtN,OAAMsN;AAAAA,QACXpM,OAAO;AAAA,QACPsR,MAAMxS,OAAMwS;AAAAA,QACZuC,OAAO/U,OAAM+U;AAAAA,QACbE,KAAKjV,OAAMiV;AAAAA,QACXoE,SAAS,CAAC,KAAKyyE,YAAY;AAAA,QAC3B5B,QAAQlqF,OAAMkqF;AAAAA,QACdt1E,UAAU5U,OAAM4U;AAAAA,QAChBkkE,eAAe94E,OAAM84E;AAAAA,QACrBvmD,SAASvyB,OAAMuyB;AAAAA,QACfD,WAAWtyB,OAAMsyB;AAAAA,QACjBu4D,aAAa7qF,OAAM6qF;AAAAA,MACpB;AAAA,IACH;AAAA,IAeAkB,YAA4B;AAC1B,YAAMC,MAAM,KAAKhsF;AAEjB,WAAKA,QAAQ,KAAK6rF,qBAAqBG,GAAG;AAE1C,WAAKd,cAAc;AACnB,WAAKS,UAAW;AAChB,WAAKT,cAAc;AAEnB,YAAMe,OAAO,KAAKjsF;AAClB,WAAKA,QAAQgsF;AACb,aAAOC;AAAAA,IACT;AAAA,IAEAC,iBAAyB;AACvB,aAAO,KAAKC,oBAAoB,KAAKnsF,MAAMsN,GAAG;AAAA,IAChD;AAAA,IAEA6+E,oBAAoB7+E,MAAqB;AACvC47E,qBAAekD,YAAY9+E;AAC3B,aAAO47E,eAAeppF,KAAK,KAAKqI,KAAK,IAAI+gF,eAAekD,YAAY9+E;AAAAA,IACtE;AAAA,IAEA++E,oBAA4B;AAC1B,aAAO,KAAKlkF,MAAM8F,WAAW,KAAKi+E,eAAc,CAAE;AAAA,IACpD;AAAA,IAQAI,uBAA+B;AAC7B,aAAO,KAAKC,0BAA0B,KAAKvsF,MAAMsN,GAAG;AAAA,IACtD;AAAA,IAEAi/E,0BAA0Bj/E,MAAqB;AAC7C67E,2BAAqBiD,YAAY9+E;AACjC,aAAO67E,qBAAqBrpF,KAAK,KAAKqI,KAAK,IACvCghF,qBAAqBiD,YACrB9+E;AAAAA,IACN;AAAA,IASAk/E,0BAAkC;AAChC,aAAO,KAAKrkF,MAAM8F,WAAW,KAAKq+E,qBAAoB,CAAE;AAAA,IAC1D;AAAA,IAEAG,eAAen/E,MAAqB;AAKlC,UAAIU,KAAK,KAAK7F,MAAM8F,WAAWX,IAAG;AAClC,WAAKU,KAAK,WAAY,SAAU,EAAEV,OAAM,KAAKnF,MAAMqF,QAAQ;AACzD,cAAMU,QAAQ,KAAK/F,MAAM8F,WAAWX,IAAG;AACvC,aAAKY,QAAQ,WAAY,OAAQ;AAC/BF,eAAK,UAAYA,KAAK,SAAU,OAAOE,QAAQ;AAAA,QACjD;AAAA,MACF;AACA,aAAOF;AAAAA,IACT;AAAA,IAKA0+E,UAAUt+E,QAAuB;AAC/B,WAAKpO,MAAMoO,SAASA;AACpB,UAAIA,QAAQ;AAKV,aAAKpO,MAAM+pF,aAAa5vD,QAAQ,CAAC,CAACwyD,cAAchQ,EAAE,MAChD,KAAKhF,MAAMgV,cAAchQ,EAAE,CAC7B;AACA,aAAK38E,MAAM+pF,aAAa6C,MAAO;AAAA,MACjC;AAAA,IACF;AAAA,IAEAd,aAAyB;AACvB,aAAO,KAAK9rF,MAAMqZ,QAAQ,KAAKrZ,MAAMqZ,QAAQ7L,SAAS,CAAC;AAAA,IACzD;AAAA,IAGAm+E,YAAkB;AAChB,WAAKkB,UAAW;AAChB,WAAK7sF,MAAM+U,QAAQ,KAAK/U,MAAMsN;AAC9B,UAAI,CAAC,KAAK49E,YAAa,MAAKlrF,MAAM4U,WAAW,KAAK5U,MAAM6qF,YAAa;AACrE,UAAI,KAAK7qF,MAAMsN,OAAO,KAAKE,QAAQ;AACjC,aAAKs/E,YAAW,GAAO;AACvB;AAAA,MACF;AAEA,WAAKC,iBAAiB,KAAKN,eAAe,KAAKzsF,MAAMsN,GAAG,CAAC;AAAA,IAC3D;AAAA,IAKA0/E,iBAAiB3E,YAAsD;AACrE,UAAIzzE;AACJ,UAAI,CAAC,KAAKs2E,YAAat2E,YAAW,KAAK5U,MAAM6qF,YAAa;AAC1D,YAAM91E,QAAQ,KAAK/U,MAAMsN;AACzB,YAAM2H,MAAM,KAAK9M,MAAMgT,QAAQktE,YAAYtzE,QAAQ,CAAC;AACpD,UAAIE,QAAQ,IAAI;AAId,cAAM,KAAK0iE,MAAMxF,OAAOxD,qBAAqB,KAAK3uE,MAAM6qF,aAAa;AAAA,MACvE;AAEA,WAAK7qF,MAAMsN,MAAM2H,MAAMozE,WAAW76E;AAClCu7E,iBAAWqD,YAAYr3E,QAAQ;AAC/B,aAAOg0E,WAAWjpF,KAAK,KAAKqI,KAAK,KAAK4gF,WAAWqD,aAAan3E,KAAK;AACjE,UAAE,KAAKjV,MAAMuyB;AACb,aAAKvyB,MAAMsyB,YAAYy2D,WAAWqD;AAAAA,MACpC;AAIA,UAAI,KAAKlB,YAAa;AAGtB,YAAMt5E,UAA0B;AAAA,QAC9BY,MAAM;AAAA,QACNtR,OAAO,KAAKiH,MAAMsK,MAAMsC,QAAQ,GAAGE,GAAG;AAAA,QACtCF,OAAO,KAAK8xE,kBAAkB9xE,KAAK;AAAA,QACnCE,KAAK,KAAK4xE,kBAAkB5xE,MAAMozE,WAAW76E,MAAM;AAAA,QACnDmH,KAAK,IAAIuvD,eAAetvD,UAAU,KAAK5U,MAAM6qF,YAAa,CAAA;AAAA,MAC3D;AACD,UAAI,KAAKnX,cAAgC,IAAE,MAAK+X,UAAU75E,OAAO;AACjE,aAAOA;AAAAA,IACT;AAAA,IAEAq7E,gBAAgBC,WAA8C;AAC5D,YAAMn4E,QAAQ,KAAK/U,MAAMsN;AACzB,UAAIsH;AACJ,UAAI,CAAC,KAAKs2E,YAAat2E,YAAW,KAAK5U,MAAM6qF,YAAa;AAC1D,UAAI34D,KAAK,KAAK/pB,MAAM8F,WAAY,KAAKjO,MAAMsN,OAAO4/E,SAAU;AAC5D,UAAI,KAAKltF,MAAMsN,MAAM,KAAKE,QAAQ;AAChC,eAAO,CAACw7E,UAAU92D,EAAE,KAAK,EAAE,KAAKlyB,MAAMsN,MAAM,KAAKE,QAAQ;AACvD0kB,eAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAAA,QAC3C;AAAA,MACF;AAIA,UAAI,KAAK49E,YAAa;AAEtB,YAAMj2E,MAAM,KAAKjV,MAAMsN;AACvB,YAAMpM,SAAQ,KAAKiH,MAAMsK,MAAMsC,QAAQm4E,WAAWj4E,GAAG;AAErD,YAAMrD,UAAyB;AAAA,QAC7BY,MAAM;AAAA,QACNtR,OAAAA;AAAAA,QACA6T,OAAO,KAAK8xE,kBAAkB9xE,KAAK;AAAA,QACnCE,KAAK,KAAK4xE,kBAAkB5xE,GAAG;AAAA,QAC/BN,KAAK,IAAIuvD,eAAetvD,UAAU,KAAK5U,MAAM6qF,YAAa,CAAA;AAAA,MAC3D;AACD,UAAI,KAAKnX,cAAgC,IAAE,MAAK+X,UAAU75E,OAAO;AACjE,aAAOA;AAAAA,IACT;AAAA,IAKAi7E,YAAkB;AAChB,YAAMM,aAAa,KAAKntF,MAAMsN;AAC9B,YAAMquB,YACJ,KAAK+3C,cAAuC,OAAG,CAAE,IAAG;AACtD0Z,WAAM,QAAO,KAAKptF,MAAMsN,MAAM,KAAKE,QAAQ;AACzC,cAAM0kB,KAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAC/C,gBAAQ4kB,IAAE;AAAA,UACR,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AACE,cAAE,KAAKlyB,MAAMsN;AACb;AAAA,UACF,KAAA;AACE,gBACE,KAAKnF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,UACxC;AACA,gBAAE,KAAKtN,MAAMsN;AAAAA,YACf;AAAA,UAEF,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AACE,cAAE,KAAKtN,MAAMsN;AACb,cAAE,KAAKtN,MAAMuyB;AACb,iBAAKvyB,MAAMsyB,YAAY,KAAKtyB,MAAMsN;AAClC;AAAA,UAEF,KAAA;AACE,oBAAQ,KAAKnF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,GAAC;AAAA,cAC/C,KAAA,IAAyB;AACvB,sBAAMsE,UAAU,KAAKo7E,iBAAiB,IAAI;AAC1C,oBAAIp7E,YAAY8B,QAAW;AACzB,uBAAKulD,WAAWrnD,OAAO;AACvB+pB,kBAAAA,qBAAAA,UAAUlzB,KAAKmJ,OAAO;AAAA,gBACxB;AACA;AAAA,cACF;AAAA,cAEA,KAAA,IAAsB;AACpB,sBAAMA,UAAU,KAAKq7E,gBAAgB,CAAC;AACtC,oBAAIr7E,YAAY8B,QAAW;AACzB,uBAAKulD,WAAWrnD,OAAO;AACvB+pB,kBAAAA,qBAAAA,UAAUlzB,KAAKmJ,OAAO;AAAA,gBACxB;AACA;AAAA,cACF;AAAA,cAEA;AACE,sBAAMw7E;AAAAA,YACV;AACA;AAAA,UAEF;AACE,gBAAIhE,aAAal3D,EAAE,GAAG;AACpB,gBAAE,KAAKlyB,MAAMsN;AAAAA,YACf,WACE4kB,OAAqB,MACrB,CAAC,KAAKtjB,YACN,KAAK8kE,oBACL;AACA,oBAAMpmE,OAAM,KAAKtN,MAAMsN;AACvB,kBACE,KAAKnF,MAAM8F,WAAWX,OAAM,CAAC,YAC7B,KAAKnF,MAAM8F,WAAWX,OAAM,CAAC,MAAC,OAC7B6/E,eAAe,KAAK,KAAKntF,MAAMsyB,YAAY66D,aAC5C;AAEA,sBAAMv7E,UAAU,KAAKq7E,gBAAgB,CAAC;AACtC,oBAAIr7E,YAAY8B,QAAW;AACzB,uBAAKulD,WAAWrnD,OAAO;AACvB+pB,kBAAAA,qBAAAA,UAAUlzB,KAAKmJ,OAAO;AAAA,gBACxB;AAAA,cACF,OAAO;AACL,sBAAMw7E;AAAAA,cACR;AAAA,YACF,WACEl7D,OAAyB,MACzB,CAAC,KAAKtjB,YACN,KAAK8kE,oBACL;AACA,oBAAMpmE,OAAM,KAAKtN,MAAMsN;AACvB,kBACE,KAAKnF,MAAM8F,WAAWX,OAAM,CAAC,MAA+B,MAC5D,KAAKnF,MAAM8F,WAAWX,OAAM,CAAC,MAAoB,MACjD,KAAKnF,MAAM8F,WAAWX,OAAM,CAAC,UAC7B;AAEA,sBAAMsE,UAAU,KAAKq7E,gBAAgB,CAAC;AACtC,oBAAIr7E,YAAY8B,QAAW;AACzB,uBAAKulD,WAAWrnD,OAAO;AACvB+pB,kBAAAA,qBAAAA,UAAUlzB,KAAKmJ,OAAO;AAAA,gBACxB;AAAA,cACF,OAAO;AACL,sBAAMw7E;AAAAA,cACR;AAAA,YACF,OAAO;AACL,oBAAMA;AAAAA,YACR;AAAA,QACJ;AAAA,MACF;AAEA,WAAIzxD,aAAAA,OAAAA,SAAAA,UAAUnuB,UAAS,GAAG;AACxB,cAAMyH,MAAM,KAAKjV,MAAMsN;AACvB,cAAM+/E,oBAAuC;AAAA,UAC3Ct4E,OAAO,KAAK8xE,kBAAkBsG,UAAU;AAAA,UACxCl4E,KAAK,KAAK4xE,kBAAkB5xE,GAAG;AAAA,UAC/B0mB,UAAAA;AAAAA,UACAwsD,aAAa;AAAA,UACbK,cAAc;AAAA,UACdF,gBAAgB;AAAA,QACjB;AACD,aAAKtoF,MAAMgoF,aAAav/E,KAAK4kF,iBAAiB;AAAA,MAChD;AAAA,IACF;AAAA,IAOAP,YAAYt6E,MAAiBkiB,KAAiB;AAC5C,WAAK10B,MAAMiV,MAAM,KAAKjV,MAAMsN;AAC5B,WAAKtN,MAAMgV,SAAS,KAAKhV,MAAM6qF,YAAa;AAC5C,YAAMyC,WAAW,KAAKttF,MAAMwS;AAC5B,WAAKxS,MAAMwS,OAAOA;AAClB,WAAKxS,MAAMkB,QAAQwzB;AAEnB,UAAI,CAAC,KAAKw2D,aAAa;AACrB,aAAKrR,cAAcyT,QAAQ;AAAA,MAC7B;AAAA,IACF;AAAA,IAEAC,aAAa/6E,MAAuB;AAClC,WAAKxS,MAAMwS,OAAOA;AAGlB,WAAKqnE,cAAe;AAAA,IACtB;AAAA,IAYA2T,uBAA6B;AAC3B,UAAI,KAAKxtF,MAAMsN,QAAQ,KAAK,KAAKmgF,yBAAyB;AACxD;AAAA,MACF;AAEA,YAAMC,UAAU,KAAK1tF,MAAMsN,MAAM;AACjC,YAAMwmB,OAAO,KAAK24D,eAAeiB,OAAO;AACxC,UAAI55D,QAAI,MAAwBA,YAA0B;AACxD,cAAM,KAAK6jD,MACTxF,OAAO/E,0BACP,KAAKptE,MAAM6qF,aACb;AAAA,MACF;AAEA,UACE/2D,SAAI,OACHA,SAAoC,MAAI,KAAKmzD,UAAU,gBAAgB,GACxE;AAKA,aAAK0G,aAAa,gBAAgB;AAClC,YAEE,KAAKhY,gBAAgB,kBAAkB,YAAY,MAAM,OACzD;AACA,gBAAM,KAAKgC,MACT7jD,SAAiC,MAC7Bq+C,OAAO9F,+CACP8F,OAAOlF,6CACX,KAAKjtE,MAAM6qF,YAAW,CACxB;AAAA,QACF;AAEA,aAAK7qF,MAAMsN,OAAO;AAClB,YAAIwmB,cAAmC;AAErC,eAAKg5D,YAAW,CAAc;AAAA,QAChC,OAAO;AAEL,eAAKA,YAAW,CAAgB;AAAA,QAClC;AAAA,MACF,WAAWr/E,kBAAkBqmB,IAAI,GAAG;AAClC,UAAE,KAAK9zB,MAAMsN;AACb,aAAKw/E,YAA4B,KAAA,KAAKc,UAAU95D,IAAI,CAAC;AAAA,MACvD,WAAWA,SAAI,IAA0B;AACvC,UAAE,KAAK9zB,MAAMsN;AACb,aAAKw/E,YAA4B,KAAA,KAAKc,UAAS,CAAE;AAAA,MACnD,OAAO;AACL,aAAKC,SAAkB,IAAA,CAAC;AAAA,MAC1B;AAAA,IACF;AAAA,IAEAC,gBAAsB;AACpB,YAAMh6D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UAAIwmB,QAAI,MAAwBA,YAA0B;AACxD,aAAKi6D,WAAW,IAAI;AACpB;AAAA,MACF;AAEA,UACEj6D,SAAsB,MACtB,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,UACxC;AACA,aAAKtN,MAAMsN,OAAO;AAClB,aAAKw/E,YAAW,EAAY;AAAA,MAC9B,OAAO;AACL,UAAE,KAAK9sF,MAAMsN;AACb,aAAKw/E,YAAW,EAAO;AAAA,MACzB;AAAA,IACF;AAAA,IAEAkB,kBAAwB;AACtB,YAAMl6D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UAAIwmB,aAA6B;AAC/B,aAAK+5D,SAAyB,IAAA,CAAC;AAAA,MACjC,OAAO;AACL,aAAKA,SAAmB,IAAA,CAAC;AAAA,MAC3B;AAAA,IACF;AAAA,IAEAJ,wBAAiC;AAC/B,UAAI,KAAKztF,MAAMsN,QAAQ,KAAK,KAAKE,SAAS,EAAG,QAAO;AAEpD,UAAI0kB,KAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACjD,UAAI4kB,OAAE,GAAgC,QAAO;AAE7C,YAAMnd,QAAQ,KAAK/U,MAAMsN;AACzB,WAAKtN,MAAMsN,OAAO;AAElB,aAAO,CAAC07E,UAAU92D,EAAE,KAAK,EAAE,KAAKlyB,MAAMsN,MAAM,KAAKE,QAAQ;AACvD0kB,aAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAAA,MAC3C;AAEA,YAAMpM,SAAQ,KAAKiH,MAAMsK,MAAMsC,QAAQ,GAAG,KAAK/U,MAAMsN,GAAG;AAExD,WAAKw/E,YAAqC5rF,IAAAA,MAAK;AAE/C,aAAO;AAAA,IACT;AAAA,IAEA+sF,sBAAsB7gF,OAAoB;AAExC,UAAIoF,OAAOpF,UAAI,KAA6C,KAAA;AAC5D,UAAI8gF,QAAQ;AACZ,UAAIp6D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAGnD,UAAIF,UAAI,MAA2B0mB,aAA6B;AAC9Do6D;AACAp6D,eAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAC/CkF,eAAkB;AAAA,MACpB;AAGA,UAAIshB,eAA+B,CAAC,KAAK9zB,MAAMkqF,QAAQ;AACrDgE;AAIA17E,eAAOpF,UAAI,KAAwD,KAAA;AAAA,MACrE;AAEA,WAAKygF,SAASr7E,MAAM07E,KAAK;AAAA,IAC3B;AAAA,IAEAC,mBAAmB/gF,OAAoB;AAErC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAErD,UAAIwmB,SAAS1mB,OAAM;AACjB,YAAI,KAAKjF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,UAA0B;AACpE,eAAKugF,SAAoB,IAAA,CAAC;AAAA,QAC5B,OAAO;AACL,eAAKA,SACHzgF,UAAI,MAAyD,KAAA,IAC7D,CACF;AAAA,QACF;AACA;AAAA,MACF;AAEA,UAAIA,eAAgC;AAElC,YAAI0mB,aAAgC;AAClC,eAAK+5D,SAAsB,IAAA,CAAC;AAC5B;AAAA,QACF;AAEA,YAEE,KAAK5G,UAAU,gBAAgB,KAC/BnzD,SAAI,KACJ;AACA,cAAI,KAAK6hD,gBAAgB,kBAAkB,YAAY,MAAM,OAAO;AAClE,kBAAM,KAAKgC,MACTxF,OAAOhG,2CACP,KAAKnsE,MAAM6qF,aACb;AAAA,UACF;AACA,eAAK7qF,MAAMsN,OAAO;AAClB,eAAKw/E,YAAW,CAAa;AAC7B;AAAA,QACF;AAGA,YAEE,KAAK7F,UAAU,gBAAgB,KAC/BnzD,SAAI,IACJ;AACA,cAAI,KAAK6hD,gBAAgB,kBAAkB,YAAY,MAAM,OAAO;AAClE,kBAAM,KAAKgC,MACTxF,OAAOpF,0CACP,KAAK/sE,MAAM6qF,aACb;AAAA,UACF;AACA,eAAK7qF,MAAMsN,OAAO;AAClB,eAAKw/E,YAAW,CAAe;AAC/B;AAAA,QACF;AAAA,MACF;AAEA,UAAIh5D,aAA6B;AAC/B,aAAK+5D,SAAoB,IAAA,CAAC;AAC1B;AAAA,MACF;AAEA,WAAKA,SACHzgF,UAAI,MAAyD,KAAA,IAC7D,CACF;AAAA,IACF;AAAA,IAEAghF,kBAAwB;AACtB,YAAMt6D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAGrD,UAAIwmB,eAA+B,CAAC,KAAK9zB,MAAMkqF,QAAQ;AAIrD,aAAK2D,SAAuB,IAAA,CAAC;AAAA,iBAI7B/5D,SAAwB,MAGxB,KAAKmzD,UAAU,CACb,oBACA;AAAA,QAAEoH,UAAU;AAAA,QAAQC,YAAY;AAAA,MAAM,CAAA,CACvC,GACD;AACA,aAAKT,SAAyB,IAAA,CAAC;AAG/B,cAAMU,cAAc,KAAKpmF,MAAMmyD,YAAY,KAAKt6D,MAAMsN,GAAG;AACzD,YAAIihF,oBAAiC;AACnC,eAAK3kB,WAAY;AAAA,QACnB;AAAA,MACF,OAEK;AACH,aAAKikB,SAAwB,IAAA,CAAC;AAAA,MAChC;AAAA,IACF;AAAA,IAEAW,mBAAyB;AACvB,YAAM16D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAGrD,UACEwmB,eACA,KAAKmzD,UAAU,CACb,oBACA;AAAA,QAAEoH,UAAU;AAAA,QAAQC,YAAY;AAAA,MAAM,CAAA,CACvC,GACD;AACA,aAAKT,SAAsB,IAAA,CAAC;AAAA,MAC9B,OAEK;AACH,aAAKA,SAAgB,IAAA,CAAC;AAAA,MACxB;AAAA,IACF;AAAA,IAEAY,mBAAmBrhF,OAAoB;AAErC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAErD,UAAIwmB,SAAS1mB,OAAM;AACjB,aAAKygF,SAAoB,IAAA,CAAC;AAC1B;AAAA,MACF;AAEA,UAAI/5D,aAA6B;AAC/B,aAAK+5D,SAAoB,IAAA,CAAC;AAAA,MAC5B,OAAO;AACL,aAAKA,SAAqB,IAAA,CAAC;AAAA,MAC7B;AAAA,IACF;AAAA,IAEAa,eAAqB;AAEnB,YAAM;AAAA,QAAEphF,KAAAA;AAAAA,MAAK,IAAG,KAAKtN;AACrB,YAAM8zB,OAAO,KAAK3rB,MAAM8F,WAAWX,OAAM,CAAC;AAE1C,UAAIwmB,aAA6B;AAC/B,YAAI,KAAK3rB,MAAM8F,WAAWX,OAAM,CAAC,MAAC,IAAyB;AACzD,eAAKugF,SAAoB,IAAA,CAAC;AAC1B;AAAA,QACF;AACA,aAAKA,SAAuB,IAAA,CAAC;AAC7B;AAAA,MACF;AAEA,UAAI/5D,aAA6B;AAE/B,aAAK+5D,SAAwB,IAAA,CAAC;AAC9B;AAAA,MACF;AAEA,WAAKA,SAAgB,IAAA,CAAC;AAAA,IACxB;AAAA,IAEAc,eAAqB;AAEnB,YAAM;AAAA,QAAErhF,KAAAA;AAAAA,MAAK,IAAG,KAAKtN;AACrB,YAAM8zB,OAAO,KAAK3rB,MAAM8F,WAAWX,OAAM,CAAC;AAE1C,UAAIwmB,aAAgC;AAClC,cAAM86D,OACJ,KAAKzmF,MAAM8F,WAAWX,OAAM,CAAC,MAAC,KAA6B,IAAI;AACjE,YAAI,KAAKnF,MAAM8F,WAAWX,OAAMshF,IAAI,MAAC,IAAyB;AAC5D,eAAKf,SAAQ,IAAYe,OAAO,CAAC;AACjC;AAAA,QACF;AACA,aAAKf,SAAuBe,IAAAA,IAAI;AAChC;AAAA,MACF;AAEA,UAAI96D,aAA6B;AAE/B,aAAK+5D,SAAwB,IAAA,CAAC;AAC9B;AAAA,MACF;AAEA,WAAKA,SAAgB,IAAA,CAAC;AAAA,IACxB;AAAA,IAEAgB,kBAAkBzhF,OAAoB;AAEpC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UAAIwmB,aAA6B;AAC/B,aAAK+5D,SAEH,IAAA,KAAK1lF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,WACpC,IACA,CACN;AACA;AAAA,MACF;AACA,UAAIF,UAAI,MAA2B0mB,aAAgC;AAEjE,aAAK9zB,MAAMsN,OAAO;AAClB,aAAKw/E,YAAW,EAAS;AACzB;AAAA,MACF;AACA,WAAKe,SAASzgF,UAAI,KAAyC,KAAA,IAAE,CAAC;AAAA,IAChE;AAAA,IAEA0hF,qBAA2B;AAEzB,YAAMh7D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,YAAMk3E,QAAQ,KAAKr8E,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACtD,UAAIwmB,aAAiC;AACnC,YAAI0wD,cAA8B;AAEhC,eAAKqJ,SAAoB,IAAA,CAAC;AAAA,QAC5B,OAAO;AAEL,eAAKA,SAA+B,IAAA,CAAC;AAAA,QACvC;AAAA,MACF,WACE/5D,SAAI,MACJ,EAAE0wD,SAAK,MAAwBA,SAAyB,KACxD;AAEA,aAAKxkF,MAAMsN,OAAO;AAClB,aAAKw/E,YAAW,EAAe;AAAA,MACjC,OAAO;AACL,UAAE,KAAK9sF,MAAMsN;AACb,aAAKw/E,YAAW,EAAY;AAAA,MAC9B;AAAA,IACF;AAAA,IAEAC,iBAAiB3/E,OAAoB;AACnC,cAAQA,OAAI;AAAA,QAIV,KAAA;AACE,eAAK0gF,cAAe;AACpB;AAAA,QAEF,KAAA;AACE,YAAE,KAAK9tF,MAAMsN;AACb,eAAKw/E,YAAW,EAAU;AAC1B;AAAA,QACF,KAAA;AACE,YAAE,KAAK9sF,MAAMsN;AACb,eAAKw/E,YAAW,EAAU;AAC1B;AAAA,QACF,KAAA;AACE,YAAE,KAAK9sF,MAAMsN;AACb,eAAKw/E,YAAW,EAAQ;AACxB;AAAA,QACF,KAAA;AACE,YAAE,KAAK9sF,MAAMsN;AACb,eAAKw/E,YAAW,EAAS;AACzB;AAAA,QACF,KAAA;AACE,cAEE,KAAK7F,UAAU,gBAAgB,KAC/B,KAAK9+E,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,MAAC,KACzC;AACA,gBAAI,KAAKqoE,gBAAgB,kBAAkB,YAAY,MAAM,OAAO;AAClE,oBAAM,KAAKgC,MACTxF,OAAOnF,4CACP,KAAKhtE,MAAM6qF,aACb;AAAA,YACF;AAGA,iBAAK7qF,MAAMsN,OAAO;AAClB,iBAAKw/E,YAAW,CAAe;AAAA,UACjC,OAAO;AACL,cAAE,KAAK9sF,MAAMsN;AACb,iBAAKw/E,YAAW,CAAY;AAAA,UAC9B;AACA;AAAA,QACF,KAAA;AACE,YAAE,KAAK9sF,MAAMsN;AACb,eAAKw/E,YAAW,CAAY;AAC5B;AAAA,QACF,KAAA;AACE,cAEE,KAAK7F,UAAU,gBAAgB,KAC/B,KAAK9+E,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,MAAC,KACzC;AACA,gBAAI,KAAKqoE,gBAAgB,kBAAkB,YAAY,MAAM,OAAO;AAClE,oBAAM,KAAKgC,MACTxF,OAAO/F,6CACP,KAAKpsE,MAAM6qF,aACb;AAAA,YACF;AAGA,iBAAK7qF,MAAMsN,OAAO;AAClB,iBAAKw/E,YAAW,CAAa;AAAA,UAC/B,OAAO;AACL,cAAE,KAAK9sF,MAAMsN;AACb,iBAAKw/E,YAAW,CAAU;AAAA,UAC5B;AACA;AAAA,QACF,KAAA;AACE,YAAE,KAAK9sF,MAAMsN;AACb,eAAKw/E,YAAW,CAAU;AAC1B;AAAA,QAEF,KAAA;AACE,cACE,KAAK7F,UAAU,cAAc,KAC7B,KAAK9+E,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,MAAC,IACzC;AACA,iBAAKugF,SAAyB,IAAA,CAAC;AAAA,UACjC,OAAO;AACL,cAAE,KAAK7tF,MAAMsN;AACb,iBAAKw/E,YAAW,EAAS;AAAA,UAC3B;AACA;AAAA,QAEF,KAAA;AACE,eAAKgC,mBAAoB;AACzB;AAAA,QAEF,KAAA;AACE,eAAKC,kBAAmB;AACxB;AAAA,QAEF,KAAA,IAAuB;AACrB,gBAAMj7D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AAErD,cAAIwmB,SAAI,OAA6BA,aAA+B;AAClE,iBAAKk7D,gBAAgB,EAAE;AACvB;AAAA,UACF;AAEA,cAAIl7D,SAAI,OAA6BA,aAA+B;AAClE,iBAAKk7D,gBAAgB,CAAC;AACtB;AAAA,UACF;AAEA,cAAIl7D,SAAI,MAA6BA,aAA+B;AAClE,iBAAKk7D,gBAAgB,CAAC;AACtB;AAAA,UACF;AAAA,QACF;AAAA,QAGA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AACE,eAAKjB,WAAW,KAAK;AACrB;AAAA,QAGF,KAAA;AAAA,QACA,KAAA;AACE,eAAKkB,WAAW7hF,KAAI;AACpB;AAAA,QAOF,KAAA;AACE,eAAK4gF,gBAAiB;AACtB;AAAA,QAEF,KAAA;AAAA,QACA,KAAA;AACE,eAAKC,sBAAsB7gF,KAAI;AAC/B;AAAA,QAEF,KAAA;AAAA,QACA,KAAA;AACE,eAAK+gF,mBAAmB/gF,KAAI;AAC5B;AAAA,QAEF,KAAA;AACE,eAAKghF,gBAAiB;AACtB;AAAA,QAEF,KAAA;AAAA,QACA,KAAA;AACE,eAAKK,mBAAmBrhF,KAAI;AAC5B;AAAA,QAEF,KAAA;AACE,eAAKshF,aAAc;AACnB;AAAA,QAEF,KAAA;AACE,eAAKC,aAAc;AACnB;AAAA,QAEF,KAAA;AAAA,QACA,KAAA;AACE,eAAKE,kBAAkBzhF,KAAI;AAC3B;AAAA,QAEF,KAAA;AACE,eAAKygF,SAAmB,IAAA,CAAC;AACzB;AAAA,QAEF,KAAA;AACE,eAAKW,iBAAkB;AACvB;AAAA,QAEF,KAAA;AACE,eAAKhB,qBAAsB;AAC3B;AAAA,QAEF,KAAA;AACE,eAAK0B,SAAU;AACf;AAAA,QAEF;AACE,cAAIzhF,kBAAkBL,KAAI,GAAG;AAC3B,iBAAK8hF,SAAS9hF,KAAI;AAClB;AAAA,UACF;AAAA,MACJ;AAEA,YAAM,KAAKuqE,MACTxF,OAAOxI,0BACP,KAAK3pE,MAAM6qF,eACX;AAAA,QACEjhB,YAAYl8D,OAAO8lB,cAAcpmB,KAAI;AAAA,MACvC,CACF;AAAA,IACF;AAAA,IAEAygF,SAASr7E,MAAiBo8E,MAAoB;AAC5C,YAAMx7E,MAAM,KAAKjL,MAAMsK,MAAM,KAAKzS,MAAMsN,KAAK,KAAKtN,MAAMsN,MAAMshF,IAAI;AAClE,WAAK5uF,MAAMsN,OAAOshF;AAClB,WAAK9B,YAAYt6E,MAAMY,GAAG;AAAA,IAC5B;AAAA,IAEA+7E,aAAmB;AACjB,YAAMv6E,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMG,QAAQ,KAAK/U,MAAM+U,QAAQ;AACjC,UAAIq6E,SAAS7J;AACb,UAAI;AAAA,QAAEj4E,KAAAA;AAAAA,MAAK,IAAG,KAAKtN;AACnB,eAAS,EAAEsN,MAAK;AACd,YAAIA,QAAO,KAAKE,QAAQ;AAEtB,gBAAM,KAAKmqE,MACTxF,OAAOvD,oBACPvK,+BAA+BzvD,UAAU,CAAC,CAC5C;AAAA,QACF;AACA,cAAMsd,KAAK,KAAK/pB,MAAM8F,WAAWX,IAAG;AACpC,YAAI07E,UAAU92D,EAAE,GAAG;AACjB,gBAAM,KAAKylD,MACTxF,OAAOvD,oBACPvK,+BAA+BzvD,UAAU,CAAC,CAC5C;AAAA,QACF;AACA,YAAIw6E,SAAS;AACXA,oBAAU;AAAA,QACZ,OAAO;AACL,cAAIl9D,WAAoC;AACtCqzD,sBAAU;AAAA,UACZ,WAAWrzD,OAAmC,MAAIqzD,SAAS;AACzDA,sBAAU;AAAA,UACX,WAAUrzD,aAA0B,CAACqzD,SAAS;AAC7C;AAAA,UACF;AACA6J,oBAAUl9D,OAA0B;AAAA,QACtC;AAAA,MACF;AACA,YAAMgnC,UAAU,KAAK/wD,MAAMsK,MAAMsC,OAAOzH,IAAG;AAC3C,QAAEA;AAEF,UAAI+hF,OAAO;AAEX,YAAM3B,UAAUA,MAEdrpB,+BAA+BzvD,UAAUtH,OAAM,IAAIyH,KAAK;AAE1D,aAAOzH,OAAM,KAAKE,QAAQ;AACxB,cAAMQ,KAAK,KAAKy+E,eAAen/E,IAAG;AAElC,cAAMgiF,OAAO5hF,OAAOC,aAAaK,EAAE;AAGnC,YAAI+8E,kBAAkBj8E,IAAId,EAAE,GAAG;AAC7B,cAAIA,YAA6B;AAC/B,gBAAIqhF,KAAKz3D,SAAS,GAAG,GAAG;AACtB,mBAAK+/C,MAAMxF,OAAOzJ,2BAA2BglB,QAAO,CAAE;AAAA,YACxD;AAAA,UACF,WAAW1/E,OAAE,KAA2B;AACtC,gBAAIqhF,KAAKz3D,SAAS,GAAG,GAAG;AACtB,mBAAK+/C,MAAMxF,OAAOzJ,2BAA2BglB,QAAO,CAAE;AAAA,YACxD;AAAA,UACF;AACA,cAAI2B,KAAKz3D,SAAS03D,IAAI,GAAG;AACvB,iBAAK3X,MAAMxF,OAAOjL,sBAAsBwmB,QAAO,CAAE;AAAA,UACnD;AAAA,QACD,WAAU9/E,iBAAiBI,EAAE,KAAKA,OAAE,IAA0B;AAC7D,eAAK2pE,MAAMxF,OAAO7H,sBAAsBojB,QAAO,CAAE;AAAA,QACnD,OAAO;AACL;AAAA,QACF;AAEA,UAAEpgF;AACF+hF,gBAAQC;AAAAA,MACV;AACA,WAAKtvF,MAAMsN,MAAMA;AAEjB,WAAKw/E,YAAuB,KAAA;AAAA,QAC1BnyD,SAASu+B;AAAAA,QACTj8B,OAAOoyD;AAAAA,MACT,CAAC;AAAA,IACH;AAAA,IAWAp7D,QACEE,OACAJ,KACAC,WAAoB,OACpBI,oBAAsC,MACvB;AACf,YAAM;AAAA,QAAElkB;AAAAA,QAAG5C,KAAAA;AAAAA,MAAI,IAAI2mB,QACjB,KAAK9rB,OACL,KAAKnI,MAAMsN,KACX,KAAKtN,MAAMsyB,WACX,KAAKtyB,MAAMuyB,SACX4B,OACAJ,KACAC,UACAI,mBACA,KAAK+2D,uBACa,KACpB;AACA,WAAKnrF,MAAMsN,MAAMA;AACjB,aAAO4C;AAAAA,IACT;AAAA,IAEA8+E,gBAAgB76D,OAAqB;AACnC,YAAMpf,QAAQ,KAAK/U,MAAMsN;AACzB,YAAMsH,WAAW,KAAK5U,MAAM6qF,YAAa;AACzC,UAAI0E,WAAW;AAEf,WAAKvvF,MAAMsN,OAAO;AAClB,YAAMonB,MAAM,KAAKT,QAAQE,KAAK;AAC9B,UAAIO,OAAO,MAAM;AACf,aAAKijD,MACHxF,OAAOpJ,cAEP1E,+BAA+BzvD,UAAU,CAAC,GAC1C;AAAA,UACEuf;AAAAA,QACF,CACF;AAAA,MACF;AACA,YAAML,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAEjD,UAAIwmB,cAA+B;AACjC,UAAE,KAAK9zB,MAAMsN;AACbiiF,mBAAW;AAAA,MACb,WAAWz7D,SAAI,KAA2B;AACxC,cAAM,KAAK6jD,MAAMxF,OAAOrJ,gBAAgBl0D,QAAQ;AAAA,MAClD;AAEA,UAAInH,kBAAkB,KAAKg/E,eAAe,KAAKzsF,MAAMsN,GAAG,CAAC,GAAG;AAC1D,cAAM,KAAKqqE,MAAMxF,OAAO3G,kBAAkB,KAAKxrE,MAAM6qF,aAAa;AAAA,MACpE;AAEA,UAAI0E,UAAU;AACZ,cAAMn8E,MAAM,KAAKjL,MAAMsK,MAAMsC,OAAO,KAAK/U,MAAMsN,GAAG,EAAE0J,QAAQ,SAAS,EAAE;AACvE,aAAK81E,YAAuB15E,KAAAA,GAAG;AAC/B;AAAA,MACF;AAEA,WAAK05E,YAAoBp4D,KAAAA,GAAG;AAAA,IAC9B;AAAA,IAIAq5D,WAAWyB,eAA8B;AACvC,YAAMz6E,QAAQ,KAAK/U,MAAMsN;AACzB,YAAMsH,WAAW,KAAK5U,MAAM6qF,YAAa;AACzC,UAAI4E,UAAU;AACd,UAAIF,WAAW;AACf,UAAIG,cAAc;AAClB,UAAIC,UAAU;AAEd,UAAI,CAACH,iBAAiB,KAAKv7D,QAAQ,EAAE,MAAM,MAAM;AAC/C,aAAK0jD,MAAMxF,OAAO1I,eAAe,KAAKzpE,MAAM6qF,aAAa;AAAA,MAC3D;AACA,YAAM+E,iBACJ,KAAK5vF,MAAMsN,MAAMyH,SAAS,KAC1B,KAAK5M,MAAM8F,WAAW8G,KAAK,MAAsB;AAEnD,UAAI66E,gBAAgB;AAClB,cAAMC,UAAU,KAAK1nF,MAAMsK,MAAMsC,OAAO,KAAK/U,MAAMsN,GAAG;AACtD,aAAKi+E,uBAAuBpZ,OAAOtC,oBAAoBj7D,QAAQ;AAC/D,YAAI,CAAC,KAAK5U,MAAMoO,QAAQ;AAEtB,gBAAM0hF,gBAAgBD,QAAQ10E,QAAQ,GAAG;AACzC,cAAI20E,gBAAgB,GAAG;AAErB,iBAAKnY,MACHxF,OAAO/C,2BACP/K,+BAA+BzvD,UAAUk7E,aAAa,CACxD;AAAA,UACF;AAAA,QACF;AACAH,kBAAUC,kBAAkB,CAAC,OAAO9vF,KAAK+vF,OAAO;AAAA,MAClD;AAEA,UAAI/7D,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAC/C,UAAIwmB,SAAI,MAAsB,CAAC67D,SAAS;AACtC,UAAE,KAAK3vF,MAAMsN;AACb,aAAK2mB,QAAQ,EAAE;AACfw7D,kBAAU;AACV37D,eAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAAA,MAC7C;AAEA,WACGwmB,SAA6B,MAAIA,SAA6B,QAC/D,CAAC67D,SACD;AACA77D,eAAO,KAAK3rB,MAAM8F,WAAW,EAAE,KAAKjO,MAAMsN,GAAG;AAC7C,YAAIwmB,SAAI,MAA2BA,aAAyB;AAC1D,YAAE,KAAK9zB,MAAMsN;AAAAA,QACf;AACA,YAAI,KAAK2mB,QAAQ,EAAE,MAAM,MAAM;AAC7B,eAAK0jD,MAAMxF,OAAOzI,0BAA0B90D,QAAQ;AAAA,QACtD;AACA66E,kBAAU;AACVC,sBAAc;AACd57D,eAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAAA,MAC7C;AAEA,UAAIwmB,cAA+B;AAGjC,YAAI27D,WAAWG,gBAAgB;AAC7B,eAAKjY,MAAMxF,OAAOxJ,sBAAsB/zD,QAAQ;AAAA,QAClD;AACA,UAAE,KAAK5U,MAAMsN;AACbiiF,mBAAW;AAAA,MACb;AAEA,UAAqCz7D,cAA+B;AAClE,aAAK65D,aAAa,WAAW,KAAK3tF,MAAM6qF,YAAW,CAAE;AACrD,YAAI6E,eAAeE,gBAAgB;AACjC,eAAKjY,MAAMxF,OAAOrJ,gBAAgBl0D,QAAQ;AAAA,QAC5C;AACA,UAAE,KAAK5U,MAAMsN;AAEb,YAAIyiF,YAAY;AAAA,MAClB;AAEA,UAAItiF,kBAAkB,KAAKg/E,eAAe,KAAKzsF,MAAMsN,GAAG,CAAC,GAAG;AAC1D,cAAM,KAAKqqE,MAAMxF,OAAO3G,kBAAkB,KAAKxrE,MAAM6qF,aAAa;AAAA,MACpE;AAGA,YAAMz3E,MAAM,KAAKjL,MAAMsK,MAAMsC,OAAO,KAAK/U,MAAMsN,GAAG,EAAE0J,QAAQ,UAAU,EAAE;AAExE,UAAIu4E,UAAU;AACZ,aAAKzC,YAAuB15E,KAAAA,GAAG;AAC/B;AAAA,MACF;AAEA,UAAqC28E,WAAW;AAC9C,aAAKjD,YAAwB15E,KAAAA,GAAG;AAChC;AAAA,MACF;AAEA,YAAMshB,MAAMi7D,UAAU97D,SAASzgB,KAAK,CAAC,IAAI48E,WAAW58E,GAAG;AACvD,WAAK05E,YAAoBp4D,KAAAA,GAAG;AAAA,IAC9B;AAAA,IAIAnB,cAAcF,gBAAwC;AACpD,YAAM;AAAA,QAAEjmB,MAAAA;AAAAA,QAAME,KAAAA;AAAAA,MAAI,IAAIimB,cACpB,KAAKprB,OACL,KAAKnI,MAAMsN,KACX,KAAKtN,MAAMsyB,WACX,KAAKtyB,MAAMuyB,SACXc,gBACA,KAAKg4D,2BACP;AACA,WAAKrrF,MAAMsN,MAAMA;AACjB,aAAOF;AAAAA,IACT;AAAA,IAEA6hF,WAAWgB,OAAqB;AAC9B,YAAM;AAAA,QAAE78E;AAAAA,QAAK9F,KAAAA;AAAAA,QAAKilB;AAAAA,QAASD;AAAAA,MAAU,IAAID,mBACvC49D,UAAK,KAA+B,WAAW,UAC/C,KAAK9nF,OACL,KAAKnI,MAAMsN,MAAM,GACjB,KAAKtN,MAAMsyB,WACX,KAAKtyB,MAAMuyB,SACX,KAAK+4D,uCACP;AACA,WAAKtrF,MAAMsN,MAAMA,OAAM;AACvB,WAAKtN,MAAMsyB,YAAYA;AACvB,WAAKtyB,MAAMuyB,UAAUA;AACrB,WAAKu6D,YAAuB15E,KAAAA,GAAG;AAAA,IACjC;AAAA,IAGA88E,2BAAiC;AAC/B,UAAI,CAAC,KAAKv9E,MAAK,CAAU,GAAG;AAC1B,aAAKi3D,WAAW,OAAe;AAAA,MACjC;AAEA,WAAK5pE,MAAMsN;AACX,WAAKyhF,kBAAmB;AAAA,IAC1B;AAAA,IAGAA,oBAA0B;AACxB,YAAMoB,UAAU,KAAKhoF,MAAM,KAAKnI,MAAMsN,GAAG;AACzC,YAAM;AAAA,QAAE8F;AAAAA,QAAKyf;AAAAA,QAAiBvlB,KAAAA;AAAAA,QAAKilB;AAAAA,QAASD;AAAAA,MAAU,IACpDD,mBACE,YACA,KAAKlqB,OACL,KAAKnI,MAAMsN,MAAM,GACjB,KAAKtN,MAAMsyB,WACX,KAAKtyB,MAAMuyB,SACX,KAAKi5D,yCACP;AACF,WAAKxrF,MAAMsN,MAAMA,OAAM;AACvB,WAAKtN,MAAMsyB,YAAYA;AACvB,WAAKtyB,MAAMuyB,UAAUA;AAErB,UAAIM,iBAAiB;AACnB,aAAK7yB,MAAM8pF,gCAAgC,IAAI9lB,SAC7CnxC,gBAAgBN,SAChBM,gBAAgBvlB,MAAMulB,gBAAgBP,WACtC,KAAKu0D,kBAAkBh0D,gBAAgBvlB,GAAG,CAC5C;AAAA,MACF;AAEA,UAAI,KAAKnF,MAAMmyD,YAAYhtD,IAAG,MAAC,IAA4B;AACzD,aAAKw/E,YAEHj6D,IAAAA,kBAAkB,OAAOs9D,UAAU/8E,MAAM,GAC3C;AAAA,MACF,OAAO;AACL,aAAKpT,MAAMsN;AACX,aAAKw/E,YAEHj6D,IAAAA,kBAAkB,OAAOs9D,UAAU/8E,MAAM,IAC3C;AAAA,MACF;AAAA,IACF;AAAA,IAEAm4E,uBAAuBoB,cAAmChQ,IAAc;AACtE,YAAMh8E,SAAQg8E,GAAGh8E;AAEjB,UAAI,KAAKX,MAAMoO,UAAU,CAAC,KAAKpO,MAAM+pF,aAAaj7E,IAAInO,MAAK,GAAG;AAC5D,aAAKg3E,MAAMgV,cAAchQ,EAAE;AAAA,MAC7B,OAAO;AACL,aAAK38E,MAAM+pF,aAAa18E,IAAI1M,QAAO,CAACgsF,cAAchQ,EAAE,CAAC;AAAA,MACvD;AAAA,IACF;AAAA,IAWAiR,UAAUwC,WAA4B;AACpC,WAAKpwF,MAAM2qF,cAAc;AACzB,UAAIh8E,OAAO;AACX,YAAMoG,QAAQ,KAAK/U,MAAMsN;AACzB,UAAIwlB,aAAa,KAAK9yB,MAAMsN;AAC5B,UAAI8iF,cAAc18E,QAAW;AAC3B,aAAK1T,MAAMsN,OAAO8iF,aAAa,QAAS,IAAI;AAAA,MAC9C;AAEA,aAAO,KAAKpwF,MAAMsN,MAAM,KAAKE,QAAQ;AACnC,cAAM0kB,KAAK,KAAKu6D,eAAe,KAAKzsF,MAAMsN,GAAG;AAC7C,YAAIM,iBAAiBskB,EAAE,GAAG;AACxB,eAAKlyB,MAAMsN,OAAO4kB,MAAM,QAAS,IAAI;AAAA,QACvC,WAAWA,OAAE,IAA0B;AACrC,eAAKlyB,MAAM2qF,cAAc;AAEzBh8E,kBAAQ,KAAKxG,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AACnD,gBAAM+iF,WAAW,KAAKrwF,MAAM6qF,YAAa;AACzC,gBAAMyF,kBACJ,KAAKtwF,MAAMsN,QAAQyH,QAAQtH,oBAAoBG;AAEjD,cAAI,KAAKzF,MAAM8F,WAAW,EAAE,KAAKjO,MAAMsN,GAAG,WAA4B;AACpE,iBAAKqqE,MAAMxF,OAAOtH,sBAAsB,KAAK7qE,MAAM6qF,aAAa;AAChE/3D,yBAAa,KAAK9yB,MAAMsN,MAAM;AAC9B;AAAA,UACF;AAEA,YAAE,KAAKtN,MAAMsN;AACb,gBAAMijF,MAAM,KAAKh9D,cAAc,IAAI;AACnC,cAAIg9D,QAAQ,MAAM;AAChB,gBAAI,CAACD,gBAAgBC,GAAG,GAAG;AACzB,mBAAK5Y,MAAMxF,OAAO9K,4BAA4BgpB,QAAQ;AAAA,YACxD;AAEA1hF,oBAAQjB,OAAO8lB,cAAc+8D,GAAG;AAAA,UAClC;AACAz9D,uBAAa,KAAK9yB,MAAMsN;AAAAA,QAC1B,OAAO;AACL;AAAA,QACF;AAAA,MACF;AACA,aAAOqB,OAAO,KAAKxG,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAAA,IAC3D;AAAA,IAKA4hF,SAASkB,WAA0B;AACjC,YAAMzhF,OAAO,KAAKi/E,UAAUwC,SAAS;AACrC,YAAM59E,OAAOg+E,WAAavgF,IAAItB,IAAI;AAClC,UAAI6D,SAASkB,QAAW;AAGtB,aAAKo5E,YAAYt6E,MAAMyxE,eAAezxE,IAAI,CAAC;AAAA,MAC7C,OAAO;AACL,aAAKs6E,YAAqBn+E,KAAAA,IAAI;AAAA,MAChC;AAAA,IACF;AAAA,IAEA+8E,sBAA4B;AAC1B,YAAM;AAAA,QAAEl5E;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAI2jF,eAAenxE,IAAI,KAAK,KAAKxS,MAAM2qF,aAAa;AAClD,aAAKhT,MAAMxF,OAAOjJ,4BAA4B,KAAKlpE,MAAM4U,UAAU;AAAA,UACjEu0D,cAAc8a,eAAezxE,IAAI;AAAA,QACnC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAcAmlE,MACEgV,cACAhQ,IACAjL,UAAwB,CAAA,GACE;AAC1B,YAAM/8D,MAAMgoE,cAAc3Y,WAAW2Y,KAAKA,GAAGhoE,IAAII;AACjD,YAAM5U,SAAQwsF,aAAah4E,KAAK+8D,OAAO;AAEvC,UAAI,EAAE,KAAKgC,oBAA0C,OAAMvzE;AAC3D,UAAI,CAAC,KAAK+qF,YAAa,MAAKlrF,MAAMwyB,OAAO/pB,KAAKtI,MAAK;AAEnD,aAAOA;AAAAA,IACT;AAAA,IAQAswF,eACE9D,cACAhQ,IACAjL,UAAwB,CAAA,GACU;AAClC,YAAM/8D,MAAMgoE,cAAc3Y,WAAW2Y,KAAKA,GAAGhoE,IAAII;AACjD,YAAMzH,OAAMqH,IAAIhU;AAChB,YAAM6xB,SAAS,KAAKxyB,MAAMwyB;AAE1B,eAASjlB,IAAIilB,OAAOhlB,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC3C,cAAMpN,SAAQqyB,OAAOjlB,CAAC;AACtB,YAAIpN,OAAMwU,IAAIhU,UAAU2M,MAAK;AAC3B,iBAAQklB,OAAOjlB,CAAC,IAAIo/E,aAAah4E,KAAK+8D,OAAO;AAAA,QAC/C;AACA,YAAIvxE,OAAMwU,IAAIhU,QAAQ2M,KAAK;AAAA,MAC7B;AAEA,aAAO,KAAKqqE,MAAMgV,cAAchQ,IAAIjL,OAAO;AAAA,IAC7C;AAAA,IAIAmI,cAAcyT,UAA2B;AAAA,IAAA;AAAA,IAGzC1jB,WAAWj1D,KAAuBnC,MAAwB;AACxD,YAAM,KAAKmlE,MACTxF,OAAOrE,iBACPn5D,OAAO,OAAOA,MAAM,KAAK3U,MAAM4U,UAC/B;AAAA,QACE8G,UAAUlJ,OAAOyxE,eAAezxE,IAAI,IAAI;AAAA,MAC1C,CACF;AAAA,IACF;AAAA,IAEAm7E,aAAaxG,YAAoBxyE,KAAsB;AACrD,UAAI,KAAKsyE,UAAUE,UAAU,GAAG;AAC9B,eAAO;AAAA,MACT;AAEA,YAAM,KAAKxP,MACTxF,OAAOzH,eACP/1D,OAAO,OAAOA,MAAM,KAAK3U,MAAM4U,UAC/B;AAAA,QACE+1D,eAAe,CAACwc,UAAU;AAAA,MAC5B,CACF;AAAA,IACF;AAAA,IAEAuJ,gBAAgBC,aAA6B;AAC3C,UAAI,CAACA,YAAYC,KAAK9iF,UAAQ,KAAKm5E,UAAUn5E,IAAI,CAAC,GAAG;AACnD,cAAM,KAAK6pE,MAAMxF,OAAOvH,qBAAqB,KAAK5qE,MAAM4U,UAAU;AAAA,UAChE+1D,eAAegmB;AAAAA,QACjB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEAvF,aAAajrF,QAAsC;AACjD,aAAO,CAACmN,MAAaglB,WAAmBC,YAAoB;AAC1D,aAAKolD,MAAMx3E,QAAO2qF,cAAcx9E,MAAKglB,WAAWC,OAAO,CAAC;AAAA,MACzD;AAAA,IACH;AAAA,EAoDF;AAAA,ECllDO,MAAMs+D,WAAW;AAAA,IAAA38E,cAAA;AAAA,WAEtB48E,eAA4B,oBAAIviF,IAAK;AAAA,WAGrCwiF,gBAA+C,oBAAIr6B,IAAK;AAAA,WAIxDs6B,wBAA+C,oBAAIt6B,IAAK;AAAA,IAAA;AAAA,EAC1D;AAAA,EAEe,MAAMu6B,kBAAkB;AAAA,IAKrC/8E,YAAYqvD,SAAmB;AAAA,WAJ/BA,SAAM;AAAA,WACN3/D,QAA2B,CAAE;AAAA,WAC7BotF,wBAA+C,oBAAIt6B,IAAK;AAGtD,WAAK6M,SAASA;AAAAA,IAChB;AAAA,IAEA7qC,UAAsB;AACpB,aAAO,KAAK90B,MAAM,KAAKA,MAAM4J,SAAS,CAAC;AAAA,IACzC;AAAA,IAEAqtD,QAAQ;AACN,WAAKj3D,MAAM6E,KAAK,IAAIooF,WAAU,CAAE;AAAA,IAClC;AAAA,IAEAvyB,OAAO;AACL,YAAM4yB,gBAAgB,KAAKttF,MAAM25D,IAAK;AAKtC,YAAM7kC,UAAU,KAAKA,QAAS;AAG9B,iBAAW,CAAC5qB,MAAM6G,GAAG,KAAKkC,MAAM2/C,KAAK06B,cAAcF,qBAAqB,GAAG;AACzE,YAAIt4D,SAAS;AACX,cAAI,CAACA,QAAQs4D,sBAAsBliF,IAAIhB,IAAI,GAAG;AAC5C4qB,oBAAQs4D,sBAAsB3jF,IAAIS,MAAM6G,GAAG;AAAA,UAC7C;AAAA,QACF,OAAO;AACL,eAAK4uD,OAAOoU,MAAMxF,OAAOrI,+BAA+Bn1D,KAAK;AAAA,YAC3DyvD,gBAAgBt2D;AAAAA,UAClB,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEAqjF,mBACErjF,MACA+oB,aACAliB,KACA;AACA,YAAM;AAAA,QAAEm8E;AAAAA,QAAcC;AAAAA,QAAeC;AAAAA,MAAsB,IACzD,KAAKt4D,QAAS;AAChB,UAAI04D,YAAYN,aAAahiF,IAAIhB,IAAI;AAErC,UAAI+oB,iBAA8C;AAChD,cAAMw6D,WAAWD,aAAaL,cAAc9gF,IAAInC,IAAI;AACpD,YAAIujF,UAAU;AACZ,gBAAMC,YAAYD,WAAuC;AACzD,gBAAME,YAAY16D,cAA0C;AAE5D,gBAAM26D,UAAUH,WAAyC;AACzD,gBAAMI,UAAU56D,cAA4C;AAK5Du6D,sBAAYI,YAAYC,WAAWH,cAAcC;AAEjD,cAAI,CAACH,UAAWL,eAAc5K,OAAOr4E,IAAI;AAAA,QAC3C,WAAW,CAACsjF,WAAW;AACrBL,wBAAc1jF,IAAIS,MAAM+oB,WAAW;AAAA,QACrC;AAAA,MACF;AAEA,UAAIu6D,WAAW;AACb,aAAK7tB,OAAOoU,MAAMxF,OAAOjG,0BAA0Bv3D,KAAK;AAAA,UACtDyvD,gBAAgBt2D;AAAAA,QAClB,CAAC;AAAA,MACH;AAEAgjF,mBAAa90E,IAAIlO,IAAI;AACrBkjF,4BAAsB7K,OAAOr4E,IAAI;AAAA,IACnC;AAAA,IAEA0pE,eAAe1pE,MAAc6G,KAAe;AAC1C,UAAI4iE;AACJ,WAAKA,cAAc,KAAK3zE,OAAO;AAC7B,YAAI2zE,WAAWuZ,aAAahiF,IAAIhB,IAAI,EAAG;AAAA,MACzC;AAEA,UAAIypE,YAAY;AACdA,mBAAWyZ,sBAAsB3jF,IAAIS,MAAM6G,GAAG;AAAA,MAChD,OAAO;AAEL,aAAK4uD,OAAOoU,MAAMxF,OAAOrI,+BAA+Bn1D,KAAK;AAAA,UAC3DyvD,gBAAgBt2D;AAAAA,QAClB,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAAA,ECrDA,MAAM4jF,gBAAgB;AAAA,IAGpBx9E,YAAY1B,OAAyB,GAAoC;AACvE,WAAKA,OAAOA;AAAAA,IACd;AAAA,IAEAm/E,iCAAgE;AAC9D,aACE,KAAKn/E,SAAI,KACT,KAAKA,SAA4D;AAAA,IAErE;AAAA,IAEAo/E,kCAAkC;AAChC,aAAO,KAAKp/E,SAAkD;AAAA,IAChE;AAAA,EACF;AAAA,EAUA,MAAMq/E,8BAA8BH,gBAAgB;AAAA,IAGlDx9E,YACE1B,MAGA;AACA,YAAMA,IAAI;AAAE,WAPds/E,oBACE,oBAAIp7B,IAAK;AAAA,IAOX;AAAA,IACAq7B,uBACEC,mBACArV,IACA;AACA,YAAMh8E,SAAQg8E,GAAGh8E;AAEjB,WAAKmxF,kBAAkBzkF,IAAI1M,QAAO,CAACqxF,mBAAmBrV,EAAE,CAAC;AAAA,IAC3D;AAAA,IACAsV,sBAAsBtxF,QAAe;AACnC,WAAKmxF,kBAAkB3L,OAAOxlF,MAAK;AAAA,IACrC;AAAA,IACAuxF,cACE1vF,WACA;AACA,WAAKsvF,kBAAkB33D,QAAQ33B,SAAQ;AAAA,IACzC;AAAA,EACF;AAAA,EAEe,MAAM2vF,uBAAuB;AAAA,IAI1Cj+E,YAAYqvD,SAAmB;AAAA,WAH/BA,SAAM;AAAA,WACN3/D,QAAgC,CAAC,IAAI8tF,iBAAiB;AAGpD,WAAKnuB,SAASA;AAAAA,IAChB;AAAA,IACA1I,MAAMsF,QAAwB;AAC5B,WAAKv8D,MAAM6E,KAAK03D,MAAK;AAAA,IACvB;AAAA,IAEA7B,OAAO;AACL,WAAK16D,MAAM25D,IAAK;AAAA,IAClB;AAAA,IASA60B,gCACEzF,cACAtrF,OACM;AACN,YAAMgxF,SAAShxF,MAAKsT,IAAII;AACxB,YAAM;AAAA,QAAEnR,OAAAA;AAAAA,MAAO,IAAG;AAClB,UAAI2J,IAAI3J,OAAM4J,SAAS;AACvB,UAAI2yD,SAAyBv8D,OAAM2J,CAAC;AACpC,aAAO,CAAC4yD,OAAMyxB,mCAAmC;AAC/C,YAAIzxB,OAAMwxB,kCAAkC;AAC1CxxB,UAAAA,OAAM4xB,uBAAuBpF,cAAc0F,MAAM;AAAA,QACnD,OAAO;AAGL;AAAA,QACF;AACAlyB,QAAAA,SAAQv8D,OAAM,EAAE2J,CAAC;AAAA,MACnB;AACA,WAAKg2D,OAAOoU,MAAMgV,cAAc0F,MAAM;AAAA,IACxC;AAAA,IAqBAC,iCACEnyF,QACAkB,OACM;AACN,YAAM;AAAA,QAAEuC,OAAAA;AAAAA,MAAO,IAAG;AAClB,YAAMu8D,SAAyBv8D,OAAMA,OAAM4J,SAAS,CAAC;AACrD,YAAM6kF,SAAShxF,MAAKsT,IAAII;AACxB,UAAIorD,OAAMyxB,mCAAmC;AAC3C,aAAKruB,OAAOoU,MAAMx3E,QAAOkyF,MAAM;AAAA,MACjC,WAAWlyB,OAAMwxB,kCAAkC;AACjDxxB,QAAAA,OAAM4xB,uBAAuB5xF,QAAOkyF,MAAM;AAAA,MAC5C,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAAA,IAQAE,gCAAgC5V,IAAoB;AAClD,YAAM;AAAA,QAAE/4E,OAAAA;AAAAA,MAAO,IAAG;AAClB,UAAI2J,IAAI3J,OAAM4J,SAAS;AACvB,UAAI2yD,SAAyBv8D,OAAM2J,CAAC;AACpC,aAAO4yD,OAAMwxB,kCAAkC;AAC7C,YACExxB,OAAM3tD,SAAI,GACV;AACA2tD,UAAAA,OAAM4xB,uBAAuB5f,OAAO/M,wBAAwBuX,EAAE;AAAA,QAChE;AACAxc,QAAAA,SAAQv8D,OAAM,EAAE2J,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,IAEAilF,oBAA0B;AACxB,YAAM;AAAA,QAAE5uF,OAAAA;AAAAA,MAAO,IAAG;AAClB,YAAMshF,eAAethF,OAAMA,OAAM4J,SAAS,CAAC;AAC3C,UAAI,CAAC03E,aAAayM,iCAAkC;AACpDzM,mBAAagN,cAAc,CAAC,CAACvF,cAAch4E,GAAG,MAAM;AAClD,aAAK4uD,OAAOoU,MAAMgV,cAAch4E,GAAG;AAEnC,YAAIpH,IAAI3J,OAAM4J,SAAS;AACvB,YAAI2yD,SAAQv8D,OAAM2J,CAAC;AACnB,eAAO4yD,OAAMwxB,kCAAkC;AAC7CxxB,UAAAA,OAAM8xB,sBAAsBt9E,IAAIhU,KAAK;AACrCw/D,UAAAA,SAAQv8D,OAAM,EAAE2J,CAAC;AAAA,QACnB;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEO,WAASklF,+BAA+B;AAC7C,WAAO,IAAIf,gBAAe,CAA0C;AAAA,EACtE;AAEO,WAASgB,oBAAoB;AAClC,WAAO,IAAIb,sBAAqB,CAEhC;AAAA,EACF;AAEO,WAASc,qBAAqB;AACnC,WAAO,IAAId,sBAAqB,CAEhC;AAAA,EACF;AAEO,WAASe,qBAAqB;AACnC,WAAO,IAAIlB,gBAAiB;AAAA,EAC9B;AAAA,EC1Me,MAAMmB,2BAA2B;AAAA,IAAA3+E,cAAA;AAAA,WAC9C4+E,SAA2B,CAAE;AAAA,IAAA;AAAA,IAC7Bj4B,MAAM59B,OAAkB;AACtB,WAAK61D,OAAOrqF,KAAKw0B,KAAK;AAAA,IACxB;AAAA,IAEAqhC,OAAO;AACL,WAAKw0B,OAAOv1B,IAAK;AAAA,IACnB;AAAA,IAEAw1B,eAA0B;AACxB,aAAO,KAAKD,OAAO,KAAKA,OAAOtlF,SAAS,CAAC;AAAA,IAC3C;AAAA,IAEA,IAAIwlF,WAAoB;AACtB,cAAQ,KAAKD,aAAc,IAAA,KAA4B;AAAA,IACzD;AAAA,IAEA,IAAIE,WAAoB;AACtB,cAAQ,KAAKF,aAAc,IAAA,KAA4B;AAAA,IACzD;AAAA,IAEA,IAAIG,YAAqB;AACvB,cAAQ,KAAKH,aAAc,IAAA,KAA6B;AAAA,IAC1D;AAAA,IAEA,IAAII,QAAiB;AACnB,cAAQ,KAAKJ,aAAc,IAAA,KAAyB;AAAA,IACtD;AAAA,EACF;AAEO,WAASK,cACdte,SACAmB,aACW;AACX,YACGnB,UAAkC,IAAA,MAClCmB,cAAW,IAA2B;AAAA,EAE3C;AAAA,ECxCe,MAAeod,mBAAmBpI,UAAU;AAAA,IAIzDqI,SACEjyF,OACAP,MACAI,QACA+gD,aAAsB,MAChB;AACN,UAAI,CAAC5gD,MAAM;AAEX,UAAI;AAAA,QAAEm3D;AAAAA,MAAO,IAAGn3D;AAChB,UAAIm3D,SAAS,MAAM;AACjBA,gBAAQ,CAAE;AACVn3D,QAAAA,MAAKm3D,QAAQA;AAAAA,MACf;AAEA,UAAIvW,YAAY;AACduW,cAAM13D,IAAG,IAAII;AAAAA,MACf,OAAO;AACLkP,eAAOC,eAAemoD,OAAO13D,MAAK;AAAA,UAAEmhD;AAAAA,UAAY/gD,OAAAA;AAAAA,QAAM,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IAIAqyF,aAAanrF,QAA2B;AACtC,aAAO,KAAKpI,MAAMwS,SAASpK,UAAS,CAAC,KAAKpI,MAAM2qF;AAAAA,IAClD;AAAA,IAEA6I,qBAAqBC,WAAmB3lF,MAAuB;AAC7D,YAAM4lF,UAAUD,YAAY3lF,KAAKN;AACjC,UAAI,KAAKrF,MAAMsK,MAAMghF,WAAWC,OAAO,MAAM5lF,MAAM;AACjD,cAAM6lF,SAAS,KAAKxrF,MAAM8F,WAAWylF,OAAO;AAC5C,eAAO,EACL9lF,iBAAiB+lF,MAAM,MAItBA,SAAS,WAAY;AAAA,MAE1B;AACA,aAAO;AAAA,IACT;AAAA,IAEAC,sBAAsB9lF,MAAuB;AAC3C,YAAMgmB,OAAO,KAAKo4D,eAAgB;AAClC,aAAO,KAAKsH,qBAAqB1/D,MAAMhmB,IAAI;AAAA,IAC7C;AAAA,IAIA+lF,cAAczrF,QAA2B;AACvC,UAAI,KAAKmrF,aAAanrF,MAAK,GAAG;AAC5B,aAAK0rB,KAAM;AACX,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAIAggE,iBACE1rF,QACAukF,cACM;AACN,UAAI,CAAC,KAAKkH,cAAczrF,MAAK,GAAG;AAC9B,YAAIukF,gBAAgB,MAAM;AACxB,gBAAM,KAAKhV,MAAMgV,cAAc,KAAK3sF,MAAM4U,QAAQ;AAAA,QACpD;AACA,aAAKg1D,WAAW,MAAMxhE,MAAK;AAAA,MAC7B;AAAA,IACF;AAAA,IAIA2rF,qBAA8B;AAC5B,aACE,KAAKphF,MAAY,GAAA,KACjB,KAAKA,MAAK,CAAU,KACpB,KAAKqhF,sBAAuB;AAAA,IAEhC;AAAA,IAEAA,wBAAiC;AAC/B,aAAO/K,WACL,KAAK9gF,OACL,KAAK4+E,kBAAkB,KAAK/mF,MAAM84E,cAAcn4E,KAAK,GACrD,KAAKX,MAAM+U,KACb;AAAA,IACF;AAAA,IAEAk/E,wBAAiC;AAC/B,aAAOhL,WAAW,KAAK9gF,OAAO,KAAKnI,MAAMiV,KAAK,KAAKi3E,gBAAgB;AAAA,IACrE;AAAA,IAEAgI,mBAA4B;AAC1B,aAAO,KAAKtI,IAAW,EAAA,KAAK,KAAKmI,mBAAoB;AAAA,IACvD;AAAA,IAKAI,UAAUC,WAAoB,MAAY;AACxC,UAAIA,WAAW,KAAKF,iBAAgB,IAAK,KAAKtI,IAAG,EAAQ,EAAG;AAC5D,WAAKjU,MAAMxF,OAAO1H,kBAAkB,KAAKzqE,MAAM84E,aAAa;AAAA,IAC9D;AAAA,IAKAnuE,OAAO6H,MAAiBmC,KAA6B;AACnD,UAAI,CAAC,KAAKi3E,IAAIp5E,IAAI,GAAG;AACnB,aAAKo3D,WAAWj1D,KAAKnC,IAAI;AAAA,MAC3B;AAAA,IACF;AAAA,IAIA6hF,SACEv7E,IACAw7E,WAAkB,KAAKt0F,MAAM24D,MAAK,GAIa;AAC/C,YAAM47B,cAEF;AAAA,QAAElzF,MAAM;AAAA,MAAM;AAClB,UAAI;AACF,cAAMA,QAAOyX,GAAG,CAACzX,QAAO,SAAS;AAC/BkzF,sBAAYlzF,OAAOA;AAEnB,gBAAMkzF;AAAAA,QACR,CAAC;AACD,YAAI,KAAKv0F,MAAMwyB,OAAOhlB,SAAS8mF,SAAS9hE,OAAOhlB,QAAQ;AACrD,gBAAMgnF,YAAY,KAAKx0F;AACvB,eAAKA,QAAQs0F;AAIb,eAAKt0F,MAAMgqF,eAAewK,UAAUxK;AACpC,iBAAO;AAAA,YACL3oF,MAAAA;AAAAA,YACAlB,OAAOq0F,UAAUhiE,OAAO8hE,SAAS9hE,OAAOhlB,MAAM;AAAA,YAC9CinF,QAAQ;AAAA,YACRC,SAAS;AAAA,YACTF;AAAAA,UACD;AAAA,QACH;AAEA,eAAO;AAAA,UACLnzF,MAAAA;AAAAA,UACAlB,OAAO;AAAA,UACPs0F,QAAQ;AAAA,UACRC,SAAS;AAAA,UACTF,WAAW;AAAA,QACZ;AAAA,MACF,SAAQr0F,QAAO;AACd,cAAMq0F,YAAY,KAAKx0F;AACvB,aAAKA,QAAQs0F;AACb,YAAIn0F,kBAAiBwxE,aAAa;AAEhC,iBAAO;AAAA,YAAEtwE,MAAM;AAAA,YAAMlB,OAAAA;AAAAA,YAAOs0F,QAAQ;AAAA,YAAMC,SAAS;AAAA,YAAOF;AAAAA,UAAW;AAAA,QACvE;AACA,YAAIr0F,WAAUo0F,aAAa;AACzB,iBAAO;AAAA,YACLlzF,MAAMkzF,YAAYlzF;AAAAA,YAClBlB,OAAO;AAAA,YACPs0F,QAAQ;AAAA,YACRC,SAAS;AAAA,YACTF;AAAAA,UACD;AAAA,QACH;AAEA,cAAMr0F;AAAAA,MACR;AAAA,IACF;AAAA,IAEAw0F,sBACE3d,qBACA4d,UACA;AACA,UAAI,CAAC5d,oBAAqB,QAAO;AACjC,YAAM;AAAA,QACJ6d;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,MACD,IAAGhe;AAEJ,YAAMie,YACJ,CAAC,CAACJ,sBACF,CAAC,CAACC,kBACF,CAAC,CAACE,yBACF,CAAC,CAACD;AAEJ,UAAI,CAACH,UAAU;AACb,eAAOK;AAAAA,MACT;AAEA,UAAIJ,sBAAsB,MAAM;AAC9B,aAAKld,MAAMxF,OAAOtJ,6BAA6BgsB,kBAAkB;AAAA,MACnE;AAEA,UAAIC,kBAAkB,MAAM;AAC1B,aAAKnd,MAAMxF,OAAOlL,gBAAgB6tB,cAAc;AAAA,MAClD;AAEA,UAAIC,iBAAiB,MAAM;AACzB,aAAKpd,MAAMxF,OAAOxE,wBAAwBonB,aAAa;AAAA,MACzD;AAEA,UAAIC,yBAAyB,MAAM;AACjC,aAAKprB,WAAWorB,qBAAqB;AAAA,MACvC;AAAA,IACF;AAAA,IAWAE,wBAAiC;AAC/B,aAAO7R,2BAA2B,KAAKrjF,MAAMwS,IAAI;AAAA,IACnD;AAAA,IAMAyP,cAAc5gB,OAAiC;AAC7C,aAAOA,MAAKmR,SAAS;AAAA,IACvB;AAAA,IAOAqjE,iBAAiBx0E,OAA2B;AAC1C,aAAOA,MAAKi7B,GAAGxuB;AAAAA,IACjB;AAAA,IAOA6qE,yBAAyBt3E,OAAqB;AAC5C,cACGA,MAAKmR,SAAS,sBACbnR,MAAKmR,SAAS,+BAChB,KAAKyP,cAAc5gB,MAAK+uB,QAAQ;AAAA,IAEpC;AAAA,IAEAtR,iBACEzd,OACmD;AACnD,aAAOA,MAAKmR,SAAS;AAAA,IACvB;AAAA,IAEAqM,eAAexd,OAAkC;AAC/C,aAAOA,MAAKmR,SAAS;AAAA,IACvB;AAAA,IAEA2iF,iBAEEvmF,WAAoB,KAAKpO,QAAQ28B,eAAe,UACpC;AAEZ,YAAMi4D,YAAY,KAAKp1F,MAAM4pF;AAC7B,WAAK5pF,MAAM4pF,SAAS,CAAE;AAEtB,YAAMyL,yBAAyB,KAAKC;AACpC,WAAKA,sBAAsB,oBAAI/mF,IAAK;AAGpC,YAAMgnF,cAAc,KAAK3mF;AACzB,WAAKA,WAAWA;AAEhB,YAAM4mF,WAAW,KAAKr1B;AACtB,YAAM2kB,gBAAe,KAAK2Q,gBAAiB;AAC3C,WAAKt1B,QAAQ,IAAI2kB,cAAa,MAAMl2E,QAAQ;AAE5C,YAAM8mF,eAAe,KAAKC;AAC1B,WAAKA,YAAY,IAAI9C,2BAA4B;AAEjD,YAAM3B,gBAAgB,KAAK3Z;AAC3B,WAAKA,aAAa,IAAI0Z,kBAAkB,IAAI;AAE5C,YAAM2E,qBAAqB,KAAKC;AAChC,WAAKA,kBAAkB,IAAI1D,uBAAuB,IAAI;AAEtD,aAAO,MAAM;AAEX,aAAKnyF,MAAM4pF,SAASwL;AACpB,aAAKE,sBAAsBD;AAG3B,aAAKzmF,WAAW2mF;AAChB,aAAKp1B,QAAQq1B;AACb,aAAKG,YAAYD;AACjB,aAAKne,aAAa2Z;AAClB,aAAK2E,kBAAkBD;AAAAA,MACxB;AAAA,IACH;AAAA,IAEAE,qBAAqB;AACnB,UAAIC,aAA4B;AAChC,UAAI,KAAKnnF,UAAU;AACjBmnF,sBAAmC;AAAA,MACrC;AACA,WAAK51B,MAAMtF,OAAuB;AAClC,WAAK86B,UAAU96B,MAAMk7B,UAAU;AAAA,IACjC;AAAA,IAEAC,0BAA0Bhf,qBAAuC;AAC/D,YAAM;AAAA,QAAE+d;AAAAA,MAAe,IAAG/d;AAC1B,UAAI+d,kBAAkB,MAAM;AAC1B,aAAKpH,aAAa,wBAAwBoH,aAAa;AAAA,MACzD;AAAA,IACF;AAAA,EACF;AAAA,EAeO,MAAMkB,iBAAiB;AAAA,IAAA/hF,cAAA;AAAA,WAC5B2gF,qBAAkD;AAAI,WACtDC,iBAA8C;AAAI,WAClDC,gBAA6C;AAAI,WACjDC,wBAAqD;AAAA,IAAI;AAAA,EAC3D;AAAA,EChYA,MAAMkB,KAAyB;AAAA,IAC7BhiF,YAAYqvD,SAAoBj2D,MAAaqH,KAAe;AAAA,WAQ5DnC,OAAe;AAPb,WAAKuC,QAAQzH;AACb,WAAK2H,MAAM;AACX,WAAKN,MAAM,IAAIuvD,eAAevvD,GAAG;AACjC,WAAI4uD,WAAM,OAAA,SAANA,QAAQmQ,eAAgC,GAAE,MAAKh6D,QAAQ,CAACpM,MAAK,CAAC;AAClE,UAAIi2D,WAAM,QAANA,QAAQY,SAAU,MAAKxvD,IAAIwvD,WAAWZ,QAAOY;AAAAA,IACnD;AAAA,EAaF;AACA,QAAMgyB,gBAAgBD,KAAKv+B;AAEQ;AAEjCw+B,kBAAcC,UAAU,WAAkB;AACxC,YAAMj+B,UAAU,IAAI+9B,KAAKxiF,QAAW,KAAKqB,OAAO,KAAKJ,IAAII,KAAK;AAC9D,YAAM9O,OAAOmK,OAAOnK,KAAK,IAAI;AAC7B,eAASsH,IAAI,GAAGC,SAASvH,KAAKuH,QAAQD,IAAIC,QAAQD,KAAK;AACrD,cAAMzM,OAAMmF,KAAKsH,CAAC;AAElB,YACEzM,SAAQ,qBACRA,SAAQ,sBACRA,SAAQ,iBACR;AAEAq3D,kBAAQr3D,IAAG,IAAI,KAAKA,IAAG;AAAA,QACzB;AAAA,MACF;AAEA,aAAOq3D;AAAAA,IACR;AAAA,EACH;AAEA,WAASk+B,iBAAiBh1F,OAAgB;AACxC,WAAOi1F,gBAAgBj1F,KAAI;AAAA,EAC7B;AAEO,WAASi1F,gBAAgBj1F,OAAgB;AAI9C,UAAM;AAAA,MAAEmR;AAAAA,MAAMuC;AAAAA,MAAOE;AAAAA,MAAKN;AAAAA,MAAK+E;AAAAA,MAAO8+C;AAAAA,MAAO1qD;AAAAA,IAAM,IAAGzM;AACtD,UAAMk1F,SAASnmF,OAAOktD,OAAO64B,aAAa;AAC1CI,WAAO/jF,OAAOA;AACd+jF,WAAOxhF,QAAQA;AACfwhF,WAAOthF,MAAMA;AACbshF,WAAO5hF,MAAMA;AACb4hF,WAAO78E,QAAQA;AACf68E,WAAO/9B,QAAQA;AACf+9B,WAAOzoF,OAAOA;AACd,QAAI0E,SAAS,eAAe;AAC1B+jF,aAAO/pE,eAAenrB,MAAKmrB;AAAAA,IAC7B;AACA,WAAO+pE;AAAAA,EACT;AAEO,WAASC,mBAAmBn1F,OAAgB;AACjD,UAAM;AAAA,MAAEmR;AAAAA,MAAMuC;AAAAA,MAAOE;AAAAA,MAAKN;AAAAA,MAAK+E;AAAAA,MAAO8+C;AAAAA,IAAO,IAAGn3D;AAChD,QAAImR,SAAS,eAAe;AAC1B,aAAO6jF,iBAAiBh1F,KAAI;AAAA,IAC9B;AACA,UAAMk1F,SAASnmF,OAAOktD,OAAO64B,aAAa;AAC1CI,WAAO/jF,OAAOA;AACd+jF,WAAOxhF,QAAQA;AACfwhF,WAAOthF,MAAMA;AACbshF,WAAO5hF,MAAMA;AACb4hF,WAAO78E,QAAQA;AACf,QAAIrY,MAAK2+B,QAAQtsB,QAAW;AAE1B6iF,aAAOv2D,MAAM3+B,MAAK2+B;AAAAA,IACpB,OAAO;AACLu2D,aAAO/9B,QAAQA;AAAAA,IACjB;AACA+9B,WAAOr1F,QAAQG,MAAKH;AACpB,WAAOq1F;AAAAA,EACT;AAAA,EAIO,MAAeE,kBAAkBpD,WAAW;AAAA,IACjD/c,YAAmD;AACjD,YAAM3hE,MAAM,KAAK3U,MAAM4U;AACvB,aAAO,IAAIshF,KAAK,MAAMvhF,IAAIhU,OAAOgU,GAAG;AAAA,IACtC;AAAA,IAEA+hF,YAAwC/hF,KAA0B;AAChE,aAAO,IAAIuhF,KAAK,MAAMvhF,IAAIhU,OAAOgU,GAAG;AAAA,IACtC;AAAA,IAGA+jE,gBACElmE,MACW;AACX,aAAO,KAAKkkF,YAAYlkF,KAAKmC,IAAII,KAAK;AAAA,IACxC;AAAA,IAIAyhE,WAA+Bn1E,OAAiBmR,MAAoB;AAClE,aAAO,KAAKomE,aAAav3E,OAAMmR,MAAM,KAAKxS,MAAM84E,aAAa;AAAA,IAC/D;AAAA,IAIAF,aACEv3E,OACAmR,MACAwC,QACG;AAOF3T,MAAAA,MAAWmR,OAAOA;AACnBnR,MAAAA,MAAK4T,MAAMD,OAAOrU;AAClBU,MAAAA,MAAKsT,IAAIM,MAAMD;AACf,UAAI,KAAK0+D,cAAW,GAAuBryE,CAAAA,MAAKqY,MAAM,CAAC,IAAI1E,OAAOrU;AAClE,UAAI,KAAK+yE,cAAW,MAA8B;AAChD,aAAKqU,eAAe1mF,KAAS;AAAA,MAC/B;AACA,aAAOA;AAAAA,IACT;AAAA,IAEA+2E,mBAAmB/2E,OAAgBuT,UAA0B;AAC3DvT,MAAAA,MAAK0T,QAAQH,SAASjU;AACtBU,MAAAA,MAAKsT,IAAII,QAAQH;AACjB,UAAI,KAAK8+D,cAAW,GAAuBryE,CAAAA,MAAKqY,MAAM,CAAC,IAAI9E,SAASjU;AAAAA,IACtE;AAAA,IAEAk4E,iBACEx3E,OACA2T,SAAmB,KAAKhV,MAAM84E,eACxB;AACNz3E,MAAAA,MAAK4T,MAAMD,OAAOrU;AAClBU,MAAAA,MAAKsT,IAAIM,MAAMD;AACf,UAAI,KAAK0+D,cAAW,GAAuBryE,CAAAA,MAAKqY,MAAM,CAAC,IAAI1E,OAAOrU;AAAAA,IACpE;AAAA,IAKA41E,2BAA2Bl1E,OAAgBs1F,cAA8B;AACvE,WAAKve,mBAAmB/2E,OAAMs1F,aAAahiF,IAAII,KAAK;AAAA,IACtD;AAAA,EACF;AC3IA,QAAM6hF,gBAAgB,oBAAIroF,IAAI,CAC5B,KACA,OACA,QACA,WACA,SACA,WACA,SACA,aACA,SACA,QACA,UACA,UACA,UACA,QACA,UACA,MAAM,CACP;AAID,QAAMsoF,aAAa9kB,qBAAqB;AAAA,IACtC+kB,2BACE;AAAA,IACFC,4BACE;AAAA,IAGFC,oBAAoBA,CAAC;AAAA,MAAEC;AAAAA,UACrB,kCAAkCA,YAAY;AAAA,IAChDC,qBACE;AAAA,IACFC,8BACE;AAAA,IACFC,+BACE;AAAA,IACFC,iCAAiCA,CAAC;AAAA,MAChCC;AAAAA,MACAC;AAAAA,IAIF,MACE,6DAA6DD,UAAU,mBAAmBA,UAAU,yBAAyBC,QAAQ;AAAA,IACvIC,yBAAyBA,CAAC;AAAA,MACxBF;AAAAA,MACAC;AAAAA,IAID,MACC,uDAAuDD,UAAU,6CAA6CC,QAAQ;AAAA,IACxHE,8BAA8BA,CAAC;AAAA,MAAEF;AAAAA,UAC/B,UAAUA,QAAQ;AAAA,IACpBG,yBAAyBA,CAAC;AAAA,MACxBC;AAAAA,MACAJ;AAAAA,IAID,MACC,eAAeI,eAAe,4FAA4FJ,QAAQ;AAAA,IACpIK,wCAAwCA,CAAC;AAAA,MACvCL;AAAAA,UAIA,4GAA4GA,QAAQ;AAAA,IAatHM,yCAAyCA,CAAC;AAAA,MACxCN;AAAAA,MACAD;AAAAA,MACA/1D;AAAAA,UAMA,UAAUg2D,QAAQ,iBAAiBh2D,YAAY,+BAA+B+1D,UAAU,oBAAoB/1D,YAAY;AAAA,IAC1Hu2D,wCAAwCA,CAAC;AAAA,MACvCP;AAAAA,MACAD;AAAAA,IAKD,MACC,oDAAoDA,UAAU,iBAAiBC,QAAQ;AAAA,IACzFQ,yCAAyCA,CAAC;AAAA,MACxCR;AAAAA,MACAD;AAAAA,IAKD,MACC,qCAAqCA,UAAU,4EAA4EC,QAAQ;AAAA,IACrIS,uBAAuBA,CAAC;AAAA,MACtBT;AAAAA,MACAD;AAAAA,MACAW;AAAAA,IAKF,MACE,qFAAqFX,UAAU,wBAAwBW,UAAU,iBAAiBV,QAAQ;AAAA,IAC5JW,gCAAgCA,CAAC;AAAA,MAC/BX;AAAAA,MACAD;AAAAA,IAID,MACC,sDAAsDA,UAAU,oBAAoBC,QAAQ;AAAA,IAC9FY,2CAA2CA,CAAC;AAAA,MAC1CZ;AAAAA,UAIA,2GAA2GA,QAAQ;AAAA,IACrHa,2BAA2B;AAAA,IAC3BC,+BACE;AAAA,IACFC,qCACE;AAAA,IACFC,oBACE;AAAA,IACFC,wBACE;AAAA,IACFC,iBAAiB;AAAA,IACjBC,qCACE;AAAA,IACFC,yBACE;AAAA,IACFC,qBACE;AAAA,IACFC,mBAAmB;AAAA,IACnBC,mBAAiB1oF,OAAAyE,OAAA;AAAA,MACf1I,SACE;AAAA,OAGE;AAAA,MAAE6kE,YAAY;AAAA,IAAyB,CAAC;AAAA,IAG9C+nB,2BAA2B;AAAA,IAC3BC,gBAAgB;AAAA,IAChBC,6BACE;AAAA,IACFC,8BACE;AAAA,IACFC,2BAA2B;AAAA,IAC3BC,sBACE;AAAA,IACFC,oBAAoB;AAAA,IACpBC,uBACE;AAAA,IACFC,mBACE;AAAA,IACFC,mCACE;AAAA,IACFC,wBAAwBA,CAAC;AAAA,MAAExC;AAAAA,UACzB,4BAA4BA,YAAY;AAAA,IAC1CyC,8BACE;AAAA,IACFC,oCACE;AAAA,IACFC,sBACE;AAAA,IACFC,8BACE;AAAA,IACFC,mCACE;AAAA,IACFC,iDACE;AAAA,IACFC,8BAA8BA,CAAC;AAAA,MAC7BC;AAAAA,MACAhC;AAAAA,IAID,MACC,oBAAoBgC,qBAAqB,8BAA8BhC,UAAU;AAAA,IACnFiC,qCACE;AAAA,IACFC,yBAAyB;AAAA,EAC3B,CAAC;AAGD,WAASC,eAAeC,aAA8B;AACpD,WACEA,YAAY7nF,SAAS,iCACpB6nF,YAAY7nF,SAAS,+BACnB,CAAC6nF,YAAYv7D,eACXu7D,YAAYv7D,YAAYtsB,SAAS,eAChC6nF,YAAYv7D,YAAYtsB,SAAS;AAAA,EAE3C;AAEA,WAAS8nF,kBACPj5F,OACS;AACT,WAAOA,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe;AAAA,EAC3D;AAEA,QAAMg7D,oBAAoB;AAAA,IACxBt2D,OAAO;AAAA,IACPu2D,KAAK;AAAA,IACLhoF,MAAM;AAAA,IACNioF,WAAW;AAAA,EACZ;AAGD,WAASC,UACP93F,OACA9C,OACY;AACZ,UAAM66F,QAAa,CAAE;AACrB,UAAMC,SAAa,CAAE;AACrB,aAASrtF,IAAI,GAAGA,IAAI3K,MAAK4K,QAAQD,KAAK;AACpC,OAACzN,MAAK8C,MAAK2K,CAAC,GAAGA,GAAG3K,KAAI,IAAI+3F,QAAQC,QAAOnyF,KAAK7F,MAAK2K,CAAC,CAAC;AAAA,IACvD;AACA,WAAO,CAACotF,OAAOC,MAAK;AAAA,EACtB;AAEA,QAAMC,oBAAoB;AAoC1B,MAAAC,QAAgBx8D,gBACd,MAAMy8D,wBAAwBz8D,WAA6B;AAAA,IAAApqB,eAAA2kB,MAAA;AAAA,YAAA,GAAAA,IAAA;AAAA,WAIzDmiE,aAA8CtnF;AAAAA,IAAS;AAAA,IAEvD+hF,kBAA0D;AACxD,aAAOhP;AAAAA,IACT;AAAA,IAEAwU,mBAA4B;AAC1B,aAAO,KAAKtlB,gBAAgB,QAAQ,KAAK,KAAK,KAAKqlB,eAAe;AAAA,IACpE;AAAA,IAEAlO,YAAYt6E,MAAiBkiB,KAAgB;AAC3C,UACEliB,gBACAA,eACAA,aACA;AACA,YAAI,KAAKwoF,eAAetnF,QAAW;AACjC,eAAKsnF,aAAa;AAAA,QACpB;AAAA,MACF;AACA,YAAMlO,YAAYt6E,MAAMkiB,GAAG;AAAA,IAC7B;AAAA,IAEAukC,WAAWrnD,SAA0B;AACnC,UAAI,KAAKopF,eAAetnF,QAAW;AAEjC,cAAM+d,UAAUopE,kBAAkBjoF,KAAKhB,QAAQ1Q,KAAK;AACpD,YAAI,CAACuwB,QAAS;AAAA,iBAEHA,QAAQ,CAAC,MAAM,QAAQ;AAChC,eAAKupE,aAAa;AAAA,QACnB,WAAUvpE,QAAQ,CAAC,MAAM,UAAU;AAClC,eAAKupE,aAAa;AAAA,QACpB,OAAO;AACL,gBAAM,IAAIxjF,MAAM,wBAAwB;AAAA,QAC1C;AAAA,MACF;AACA,YAAMyhD,WAAWrnD,OAAO;AAAA,IAC1B;AAAA,IAEAspF,yBAAyBC,KAA6B;AACpD,YAAMC,YAAY,KAAKp7F,MAAMkqF;AAC7B,WAAKlqF,MAAMkqF,SAAS;AACpB,WAAKv/E,OAAOwwF,SAAe;AAE3B,YAAM3oF,OAAO,KAAK6oF,cAAe;AACjC,WAAKr7F,MAAMkqF,SAASkR;AACpB,aAAO5oF;AAAAA,IACT;AAAA,IAEA8oF,qBAAsC;AACpC,YAAMj6F,QAAO,KAAKi1E,UAA4B;AAC9C,YAAMilB,YAAY,KAAKv7F,MAAM4U;AAC7B,WAAKkf,KAAM;AACX,WAAKggE,iBAAgB,GAAW;AAEhC,UAAI,KAAK9zF,MAAMk4E,gBAAgBv3E,QAAQ46F,UAAU56F,QAAQ,GAAG;AAC1D,aAAKg3E,MAAMkf,WAAW8C,oCAAoC4B,SAAS;AAAA,MACrE;AACA,UAAI,KAAK3P,IAAG,EAAU,GAAG;AACvBvqF,QAAAA,MAAKH,QAAQ,MAAMs6F,gBAAiB;AACpC,aAAK7wF,OAAM,EAAU;AACrB,eAAO,KAAK6rE,WAAWn1E,OAAM,mBAAmB;AAAA,MAClD,OAAO;AACL,eAAO,KAAKm1E,WAAWn1E,OAAM,mBAAmB;AAAA,MAClD;AAAA,IACF;AAAA,IAEAo6F,uCAGE;AACA,YAAML,YAAY,KAAKp7F,MAAMkqF;AAC7B,WAAKlqF,MAAMkqF,SAAS;AACpB,WAAKv/E,OAAM,EAAS;AACpB,UAAI6H,OAAO;AACX,UAAI+pB,YAAY;AAChB,UAAI,KAAK5pB,MAAK,EAAU,GAAG;AACzB,aAAK3S,MAAMkqF,SAASkR;AACpB7+D,oBAAY,KAAK++D,mBAAoB;AAAA,MACvC,OAAO;AACL9oF,eAAO,KAAK6oF,cAAe;AAC3B,aAAKr7F,MAAMkqF,SAASkR;AACpB,YAAI,KAAKzoF,MAAK,EAAU,GAAG;AACzB4pB,sBAAY,KAAK++D,mBAAoB;AAAA,QACvC;AAAA,MACF;AACA,aAAO,CAAC9oF,MAAM+pB,SAAS;AAAA,IACzB;AAAA,IAEAm/D,sBACEr6F,OACoB;AACpB,WAAKyyB,KAAM;AACX,WAAK6nE,sBAAsBt6F,OAAkB,IAAI;AACjD,aAAO,KAAKm1E,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAEAu6F,yBACEv6F,OACuB;AACvB,WAAKyyB,KAAM;AAEX,YAAMwI,KAAMj7B,MAAKi7B,KAAK,KAAKu/D,gBAAkB;AAE7C,YAAMC,WAAW,KAAKxlB,UAAyC;AAC/D,YAAMylB,gBAAgB,KAAKzlB,UAA6B;AAExD,UAAI,KAAK3jE,MAAK,EAAM,GAAG;AACrBmpF,iBAASxgE,iBAAiB,KAAK0gE,kCAAmC;AAAA,MACpE,OAAO;AACLF,iBAASxgE,iBAAiB;AAAA,MAC5B;AAEA,WAAK3wB,OAAM,EAAU;AACrB,YAAMsxF,MAAM,KAAKC,4BAA6B;AAC9CJ,eAAS9/D,SAASigE,IAAIjgE;AACtB8/D,eAASpzF,OAAOuzF,IAAIvzF;AACpBozF,eAASh7D,OAAOm7D,IAAIrc;AACpB,WAAKj1E,OAAM,EAAU;AAErB,OAACmxF,SAAS1/D,YAAY/6B,MAAKk7B,SAAS,IAClC,KAAKk/D,qCAAsC;AAE7CM,oBAAcr/D,iBAAiB,KAAK85C,WAClCslB,UACA,wBACF;AAEAx/D,SAAGI,iBAAiB,KAAK85C,WAAWulB,eAAe,gBAAgB;AAEnE,WAAKljB,iBAAiBv8C,EAAE;AACxB,WAAK63D,UAAW;AAEhB,WAAKh0B,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MAAI,MAEZzM,MAAKi7B,GAAG3nB,IAAII,KACd;AAEA,aAAO,KAAKyhE,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEA86F,iBACE96F,OACA+6F,cACe;AACf,UAAI,KAAKzpF,MAAK,EAAU,GAAG;AACzB,eAAO,KAAK+oF,sBAAsBr6F,KAAI;AAAA,MACvC,WAAU,KAAKsR,MAAK,EAAa,GAAG;AACnC,eAAO,KAAKipF,yBAAyBv6F,KAAI;AAAA,MAC1C,WAAU,KAAKsR,MAAK,EAAQ,GAAG;AAC9B,eAAO,KAAK0pF,yBAAyBh7F,KAAI;AAAA,MAC1C,WAAU,KAAKwyF,cAAa,GAAW,GAAG;AACzC,YAAI,KAAKlhF,MAAK,EAAO,GAAG;AACtB,iBAAO,KAAK2pF,8BAA8Bj7F,KAAI;AAAA,QAChD,OAAO;AACL,cAAI+6F,cAAc;AAChB,iBAAKzkB,MACHkf,WAAW+B,qBACX,KAAK54F,MAAMk4E,eACb;AAAA,UACF;AACA,iBAAO,KAAKqkB,uBAAuBl7F,KAAI;AAAA,QACzC;AAAA,MACD,WAAU,KAAKkyF,aAAY,GAAS,GAAG;AACtC,eAAO,KAAKiJ,0BAA0Bn7F,KAAI;AAAA,MAC3C,WAAU,KAAKkyF,aAAY,GAAW,GAAG;AACxC,eAAO,KAAKkJ,2BAA2Bp7F,KAAI;AAAA,MAC5C,WAAU,KAAKkyF,aAAY,GAAc,GAAG;AAC3C,eAAO,KAAKmJ,0BAA0Br7F,KAAI;AAAA,MAC3C,WAAU,KAAKsR,MAAK,EAAW,GAAG;AACjC,eAAO,KAAKgqF,kCAAkCt7F,OAAM+6F,YAAY;AAAA,MAClE,OAAO;AACL,aAAKxyB,WAAY;AAAA,MACnB;AAAA,IACF;AAAA,IAEAyyB,yBACEh7F,OACuB;AACvB,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAKi7B,KAAK,KAAKsgE,mCACc,IAC7B;AACA,WAAKz8B,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MAAI,GAEZzM,MAAKi7B,GAAG3nB,IAAII,KACd;AACA,WAAKo/E,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEAk7F,uBACEl7F,OACqB;AACrB,WAAK8+D,MAAMtF,OAAqB;AAEhC,UAAI,KAAKloD,MAAK,GAAU,GAAG;AACzBtR,QAAAA,MAAKi7B,KAAK,MAAMugE,cAAe;AAAA,MACjC,OAAO;AACLx7F,QAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAAA,MAClC;AAEA,YAAMiB,WAAYz7F,MAAK65B,OAAO,KAAKo7C,UAA8B;AAEjE,YAAMp7C,OAAQ4hE,SAAS5hE,OAAO,CAAG;AACjC,WAAKvwB,OAAM,CAAU;AACrB,aAAO,CAAC,KAAKgI,MAAK,CAAU,GAAG;AAC7B,YAAImqF,YAAW,KAAKxmB,UAAgC;AAEpD,YAAI,KAAK3jE,MAAK,EAAW,GAAG;AAC1B,eAAKmhB,KAAM;AACX,cAAI,CAAC,KAAKy/D,aAAqB,GAAA,KAAK,CAAC,KAAK5gF,MAAK,EAAW,GAAG;AAC3D,iBAAKglE,MACHkf,WAAW6B,qCACX,KAAK14F,MAAMk4E,eACb;AAAA,UACF;AACA,gBAAM6kB,YAAYD,SAAQ;AAAA,QAC5B,OAAO;AACL,eAAKhJ,iBAAgB,KAEnB+C,WAAWqD,mCACb;AAEA4C,UAAAA,YAAW,KAAKX,iBAAiBW,WAAU,IAAI;AAAA,QACjD;AAEA5hE,aAAKzyB,KAAKq0F,SAAQ;AAAA,MACpB;AAEA,WAAK38B,MAAM7B,KAAM;AAEjB,WAAK3zD,OAAM,CAAU;AAErB,WAAK6rE,WAAWsmB,UAAU,gBAAgB;AAE1C,UAAIx/D,OAAiC;AACrC,UAAI0/D,kBAAkB;AACtB9hE,WAAKf,QAAQkgE,iBAAe;AAC1B,YAAID,eAAeC,WAAW,GAAG;AAC/B,cAAI/8D,SAAS,YAAY;AACvB,iBAAKq6C,MAAMkf,WAAWE,4BAA4BsD,WAAW;AAAA,UAC/D;AACA/8D,iBAAO;AAAA,QACT,WAAW+8D,YAAY7nF,SAAS,wBAAwB;AACtD,cAAIwqF,iBAAiB;AACnB,iBAAKrlB,MAAMkf,WAAWO,+BAA+BiD,WAAW;AAAA,UAClE;AACA,cAAI/8D,SAAS,MAAM;AACjB,iBAAKq6C,MAAMkf,WAAWE,4BAA4BsD,WAAW;AAAA,UAC/D;AACA/8D,iBAAO;AACP0/D,4BAAkB;AAAA,QACpB;AAAA,MACF,CAAC;AAED37F,MAAAA,MAAKi8B,OAAOA,QAAQ;AACpB,aAAO,KAAKk5C,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEAs7F,kCACEt7F,OACA+6F,cACgC;AAChC,WAAKzxF,OAAM,EAAW;AAEtB,UAAI,KAAKihF,IAAG,EAAY,GAAG;AACzB,YAAI,KAAKj5E,MAAkB,EAAA,KAAK,KAAKA,MAAe,EAAA,GAAG;AAGrDtR,UAAAA,MAAKy9B,cAAc,KAAKq9D,iBAAiB,KAAK7lB,UAAS,CAAE;AAAA,QAC3D,OAAO;AAELj1E,UAAAA,MAAKy9B,cAAc,KAAKu8D,cAAe;AACvC,eAAKlH,UAAW;AAAA,QAClB;AACA9yF,QAAAA,MAAK2O,UAAU;AAEf,eAAO,KAAKwmE,WAAWn1E,OAAM,0BAA0B;AAAA,MACzD,OAAO;AACL,YACE,KAAKsR,MAAe,EAAA,KACpB,KAAKgsD,MAAK,MACR,KAAK40B,aAAY,GAAS,KAAK,KAAKA,aAAY,GAAc,MAC9D,CAAC6I,cACH;AACA,gBAAMjhE,QAAQ,KAAKn7B,MAAMkB;AAKzB,gBAAM,KAAKy2E,MACTkf,WAAWmD,8BACX,KAAKh6F,MAAM4U,UACX;AAAA,YACEqlF,uBAAuB9+D;AAAAA,YACvB88D,YAAYsC,kBAAkBp/D,KAAK;AAAA,UACrC,CACF;AAAA,QACF;AAEA,YACE,KAAKxoB,MAAK,EAAQ,KAClB,KAAKA,MAAkB,EAAA,KACvB,KAAKA,MAAK,EAAU,KACpB,KAAK4gF,aAAuB,GAAA,GAC5B;AACAlyF,UAAAA,MAAKy9B,cAAc,KAAKq9D,iBAAiB,KAAK7lB,UAAS,CAAE;AACzDj1E,UAAAA,MAAK2O,UAAU;AAEf,iBAAO,KAAKwmE,WAAWn1E,OAAM,0BAA0B;AAAA,QACzD,WACE,KAAKsR,MAAK,EAAQ,KAClB,KAAKA,MAAK,CAAU,KACpB,KAAK4gF,aAA0B,GAAA,KAC/B,KAAKA,aAAY,GAAS,KAC1B,KAAKA,aAAY,GAAW,GAC5B;AACAlyF,UAAAA,QAAO,KAAK22E,YACV32E,OACiB,IACnB;AACA,cAAIA,MAAKmR,SAAS,0BAA0B;AAC1CnR,YAAAA,MAAKmR,OAAO;AACZnR,YAAAA,MAAK2O,UAAU;AACf,mBAAO3O,MAAKw9B;AAAAA,UACd;AAEAx9B,UAAAA,MAAKmR,OAAO,YAAYnR,MAAKmR;AAE7B,iBAAOnR;AAAAA,QACT;AAAA,MACF;AAEA,WAAKuoE,WAAY;AAAA,IACnB;AAAA,IAEA0yB,8BACEj7F,OAC4B;AAC5B,WAAKyyB,KAAM;AACX,WAAKggE,iBAAgB,GAAY;AACjCzyF,MAAAA,MAAKq7B,iBAAiB,KAAKugE,wBAAyB;AACpD,WAAK9I,UAAW;AAEhB,aAAO,KAAK3d,WAAWn1E,OAAM,sBAAsB;AAAA,IACrD;AAAA,IAEAm7F,0BACEn7F,OACwB;AACxB,WAAKyyB,KAAM;AACX,YAAMopE,WAAW,KAAKC,mBACpB97F,KACF;AAEA67F,eAAS1qF,OAAO;AAChB,aAAO0qF;AAAAA,IACT;AAAA,IAEAT,2BACEp7F,OACyB;AACzB,WAAKyyB,KAAM;AACX,YAAMopE,WAAW,KAAKE,oBACpB/7F,OACA,IACF;AAEA67F,eAAS1qF,OAAO;AAChB,aAAO0qF;AAAAA,IACT;AAAA,IAEAR,0BACEr7F,OACwB;AACxB,WAAKyyB,KAAM;AACX,WAAK6nE,sBAAsBt6F,OAAoB,KAAK;AACpD,aAAO,KAAKm1E,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAIAs6F,sBAAsBt6F,OAA6BitB,SAAwB;AACzEjtB,MAAAA,MAAKi7B,KAAK,KAAK+gE,8BACC,CAAC/uE,SACG,IACpB;AAEA,WAAK6xC,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MACRwgB,UAAO,KAAA,MACPjtB,MAAKi7B,GAAG3nB,IAAII,KACd;AAEA,UAAI,KAAKpC,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE,OAAO;AACL36F,QAAAA,MAAKi6B,iBAAiB;AAAA,MACxB;AAEAj6B,MAAAA,MAAKs/B,UAAU,CAAE;AAEjB,UAAI,KAAKirD,IAAG,EAAY,GAAG;AACzB,WAAG;AACDvqF,UAAAA,MAAKs/B,QAAQl4B,KAAK,KAAK60F,0BAAyB,CAAE;AAAA,QACnD,SAAQ,CAAChvE,WAAW,KAAKs9D,MAAY;AAAA,MACxC;AAEA,UAAIt9D,SAAS;AACXjtB,QAAAA,MAAKk9B,aAAa,CAAE;AACpBl9B,QAAAA,MAAKm9B,SAAS,CAAE;AAEhB,YAAI,KAAKq1D,cAAa,GAAW,GAAG;AAClC,aAAG;AACDxyF,YAAAA,MAAKm9B,OAAO/1B,KAAK,KAAK60F,0BAAyB,CAAE;AAAA,UACnD,SAAS,KAAK1R,MAAY;AAAA,QAC5B;AAEA,YAAI,KAAKiI,cAAa,GAAe,GAAG;AACtC,aAAG;AACDxyF,YAAAA,MAAKk9B,WAAW91B,KAAK,KAAK60F,0BAAyB,CAAE;AAAA,UACvD,SAAS,KAAK1R,MAAY;AAAA,QAC5B;AAAA,MACF;AAEAvqF,MAAAA,MAAK65B,OAAO,KAAKqiE,oBAAoB;AAAA,QACnCC,aAAalvE;AAAAA,QACbmvE,YAAY;AAAA,QACZC,aAAa;AAAA,QACbC,YAAYrvE;AAAAA,QACZsvE,cAAc;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,IAEAN,4BAAoD;AAClD,YAAMj8F,QAAO,KAAKi1E,UAAmC;AAErDj1E,MAAAA,MAAKi7B,KAAK,KAAKuhE,iCAAkC;AACjD,UAAI,KAAKlrF,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAKwiE,oCAAqC;AAAA,MAClE,OAAO;AACLz8F,QAAAA,MAAKi6B,iBAAiB;AAAA,MACxB;AAEA,aAAO,KAAKk7C,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAEA08F,mBAAmB18F,OAAgD;AACjE,WAAKs6F,sBAAsBt6F,OAAoB,KAAK;AACpD,aAAO,KAAKm1E,WAAWn1E,OAAM,sBAAsB;AAAA,IACrD;AAAA,IAEA28F,mBAAmBrvF,MAAc;AAC/B,UAAIA,SAAS,KAAK;AAChB,aAAKgpE,MACHkf,WAAW6C,8BACX,KAAK15F,MAAM4U,QACb;AAAA,MACF;AAAA,IACF;AAAA,IAEAqpF,kBAAkBtvF,MAAciG,UAAoBkqB,aAAuB;AACzE,UAAI,CAAC83D,cAAc9nF,IAAIH,IAAI,EAAG;AAE9B,WAAKgpE,MACH74C,cACI+3D,WAAWG,qBACXH,WAAW4C,wBACf7kF,UACA;AAAA,QACEqiF,cAActoF;AAAAA,MAChB,CACF;AAAA,IACF;AAAA,IAEA0uF,8BACEa,SACAp/D,aACc;AACd,WAAKm/D,kBACH,KAAKj+F,MAAMkB,OACX,KAAKlB,MAAM4U,UACXkqB,WACF;AACA,aAAO,KAAK+8D,gBAAgBqC,OAAO;AAAA,IACrC;AAAA,IAIAf,mBAAmB97F,OAAgD;AACjEA,MAAAA,MAAKi7B,KAAK,KAAK+gE,8BACC,OACI,IACpB;AACA,WAAKl9B,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MAAI,MAEZzM,MAAKi7B,GAAG3nB,IAAII,KACd;AAEA,UAAI,KAAKpC,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE,OAAO;AACL36F,QAAAA,MAAKi6B,iBAAiB;AAAA,MACxB;AAEAj6B,MAAAA,MAAKw5B,QAAQ,KAAKqgE,2BAA8B;AAChD,WAAK/G,UAAW;AAEhB,aAAO,KAAK3d,WAAWn1E,OAAM,WAAW;AAAA,IAC1C;AAAA,IAEA+7F,oBACE/7F,OACA2Y,SACkB;AAClB,WAAK85E,iBAAgB,GAAS;AAC9BzyF,MAAAA,MAAKi7B,KAAK,KAAK+gE,8BACC,MACI,IACpB;AACA,WAAKl9B,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MAAI,MAEZzM,MAAKi7B,GAAG3nB,IAAII,KACd;AAEA,UAAI,KAAKpC,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE,OAAO;AACL36F,QAAAA,MAAKi6B,iBAAiB;AAAA,MACxB;AAGAj6B,MAAAA,MAAKu/B,YAAY;AACjB,UAAI,KAAKjuB,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAKu/B,YAAY,KAAKs6D,2BAAiC;AAAA,MACzD;AAEA75F,MAAAA,MAAKw/B,WAAW;AAChB,UAAI,CAAC7mB,SAAS;AACZ3Y,QAAAA,MAAKw/B,WAAW,KAAKq6D,2BAA8B;AAAA,MACrD;AACA,WAAK/G,UAAW;AAEhB,aAAO,KAAK3d,WAAWn1E,OAAM,YAAY;AAAA,IAC3C;AAAA,IAIA88F,uBAAuBC,iBAA0B,OAAwB;AACvE,YAAMC,eAAe,KAAKr+F,MAAM4U;AAEhC,YAAMvT,QAAO,KAAKi1E,UAA4B;AAE9C,YAAM91C,WAAW,KAAK89D,kBAAmB;AAEzC,YAAMC,QAAQ,KAAK3B,mCAAoC;AACvDv7F,MAAAA,MAAKyM,OAAOywF,MAAMzwF;AAElBzM,MAAAA,MAAKm/B,WAAWA;AAEhBn/B,MAAAA,MAAKigC,QAAQi9D,MAAM7hE;AAEnB,UAAI,KAAK/pB,MAAK,EAAM,GAAG;AACrB,aAAKi5E,IAAG,EAAM;AAEdvqF,QAAAA,MAAK2O,UAAU,KAAKqrF,cAAe;AAAA,MACrC,OAAO;AACL,YAAI+C,gBAAgB;AAClB,eAAKzmB,MAAMkf,WAAW8B,yBAAyB0F,YAAY;AAAA,QAC7D;AAAA,MACF;AAEA,aAAO,KAAK7nB,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEA26F,oCAAgE;AAC9D,YAAMZ,YAAY,KAAKp7F,MAAMkqF;AAC7B,YAAM7oF,QAAO,KAAKi1E,UAAuC;AACzDj1E,MAAAA,MAAK26B,SAAS,CAAE;AAEhB,WAAKh8B,MAAMkqF,SAAS;AAGpB,UAAI,KAAKv3E,MAAW,EAAA,KAAK,KAAKA,MAAoB,GAAA,GAAG;AACnD,aAAKmhB,KAAM;AAAA,MACb,OAAO;AACL,aAAK81C,WAAY;AAAA,MACnB;AAEA,UAAI40B,kBAAkB;AAEtB,SAAG;AACD,cAAM76D,gBAAgB,KAAKw6D,uBAAuBK,eAAe;AAEjEn9F,QAAAA,MAAK26B,OAAOvzB,KAAKk7B,aAAa;AAE9B,YAAIA,cAAc3zB,SAAS;AACzBwuF,4BAAkB;AAAA,QACpB;AAEA,YAAI,CAAC,KAAK7rF,MAAK,EAAM,GAAG;AACtB,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACD,SAAQ,CAAC,KAAKgI,QAAW;AAC1B,WAAKhI,OAAM,EAAM;AAEjB,WAAK3K,MAAMkqF,SAASkR;AAEpB,aAAO,KAAK5kB,WAAWn1E,OAAM,0BAA0B;AAAA,IACzD;AAAA,IAGAo9F,sBAAyBC,IAAgB;AACvC,UAAI,KAAK5S,iBAAiBxH,OAAGrL,OAAO;AAClC,cAAM0lB,aAAa,KAAK3+F,MAAMqZ;AAC9B,aAAKrZ,MAAMqZ,UAAU,CAACslF,WAAW,CAAC,CAAC;AACnC,YAAI;AACF,iBAAOD,GAAI;AAAA,QACb,UAAU;AACR,eAAK1+F,MAAMqZ,UAAUslF;AAAAA,QACvB;AAAA,MACF,OAAO;AACL,eAAOD,GAAI;AAAA,MACb;AAAA,IACF;AAAA,IAIAE,kDAEc;AACZ,UAAI,KAAKC,UAAW,SAAY;AAChC,aAAO,KAAKf,oCAAqC;AAAA,IACnD;AAAA,IAEAA,sCAAoE;AAClE,YAAMz8F,QAAO,KAAKi1E,UAAyC;AAC3D,YAAM8kB,YAAY,KAAKp7F,MAAMkqF;AAE7B,WAAKlqF,MAAMkqF,SAAS;AACpB7oF,MAAAA,MAAK26B,SAAS,CAAE;AAChB,WAAKyiE,sBAAsB,MAAM;AAC/B,aAAK9zF,OAAM,EAAM;AACjB,cAAMm0F,wBAAwB,KAAK9+F,MAAMmqF;AACzC,aAAKnqF,MAAMmqF,qBAAqB;AAChC,eAAO,CAAC,KAAKx3E,MAAK,EAAM,GAAG;AACzBtR,UAAAA,MAAK26B,OAAOvzB,KAAK,KAAK4yF,cAAa,CAAE;AACrC,cAAI,CAAC,KAAK1oF,MAAK,EAAM,GAAG;AACtB,iBAAKhI,OAAM,EAAS;AAAA,UACtB;AAAA,QACF;AACA,aAAK3K,MAAMmqF,qBAAqB2U;AAAAA,MAClC,CAAC;AAED,WAAK9+F,MAAMkqF,SAASkR;AACpB,UAAI,CAAC,KAAKp7F,MAAMkqF,UAAU,KAAK4B,WAAY,MAAKxH,OAAGrL,OAAO;AAGxD,aAAK8lB,aAAc;AAAA,MACrB;AACA,WAAKp0F,OAAM,EAAM;AAEjB,aAAO,KAAK6rE,WAAWn1E,OAAM,4BAA4B;AAAA,IAC3D;AAAA,IAEA29F,+CAA6E;AAC3E,UAAI,KAAKH,UAAW,SAAY;AAChC,YAAMx9F,QAAO,KAAKi1E,UAAyC;AAC3D,YAAM8kB,YAAY,KAAKp7F,MAAMkqF;AAC7B7oF,MAAAA,MAAK26B,SAAS,CAAE;AAEhB,WAAKh8B,MAAMkqF,SAAS;AAEpB,WAAKv/E,OAAM,EAAM;AACjB,aAAO,CAAC,KAAKgI,MAAK,EAAM,GAAG;AACzBtR,QAAAA,MAAK26B,OAAOvzB,KAAK,KAAKw2F,qCAAoC,CAAE;AAC5D,YAAI,CAAC,KAAKtsF,MAAK,EAAM,GAAG;AACtB,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AACA,WAAKA,OAAM,EAAM;AAEjB,WAAK3K,MAAMkqF,SAASkR;AAEpB,aAAO,KAAK5kB,WAAWn1E,OAAM,4BAA4B;AAAA,IAC3D;AAAA,IAEA69F,yBAA8C;AAC5C,YAAM79F,QAAO,KAAKi1E,UAAgC;AAClD,WAAKwd,iBAAgB,GAAc;AAEnCzyF,MAAAA,MAAKs/B,UAAU,CAAE;AACjB,UAAI,KAAKirD,IAAG,EAAY,GAAG;AACzB,WAAG;AACDvqF,UAAAA,MAAKs/B,QAAQl4B,KAAK,KAAK60F,0BAAyB,CAAE;AAAA,QACpD,SAAS,KAAK1R,MAAY;AAAA,MAC5B;AAEAvqF,MAAAA,MAAK65B,OAAO,KAAKqiE,oBAAoB;AAAA,QACnCC,aAAa;AAAA,QACbC,YAAY;AAAA,QACZC,aAAa;AAAA,QACbC,YAAY;AAAA,QACZC,cAAc;AAAA,MAChB,CAAC;AAED,aAAO,KAAKpnB,WAAWn1E,OAAM,yBAAyB;AAAA,IACxD;AAAA,IAEA89F,6BAA2C;AACzC,aAAO,KAAKxsF,MAAK,GAAO,KAAK,KAAKA,MAAe,GAAA,IAC7C,MAAMkqF,cAAa,IACnB,KAAKhB,gBAAgB,IAAI;AAAA,IAC/B;AAAA,IAEAuD,2BACE/9F,OACAg+F,UACA7+D,UACyB;AACzBn/B,MAAAA,MAAKq+B,SAAS2/D;AAGd,UAAI,KAAKtT,YAAYv5E,aAAmB;AACtCnR,QAAAA,MAAKi7B,KAAK,KAAK6iE,2BAA4B;AAC3C99F,QAAAA,MAAKP,MAAM,KAAKo6F,yBAA0B;AAAA,MAC5C,OAAO;AACL75F,QAAAA,MAAKi7B,KAAK;AACVj7B,QAAAA,MAAKP,MAAM,KAAKu6F,cAAe;AAAA,MACjC;AACA,WAAK1wF,OAAM,CAAY;AACvBtJ,MAAAA,MAAKH,QAAQ,KAAKg6F,yBAA0B;AAC5C75F,MAAAA,MAAKm/B,WAAWA;AAEhB,aAAO,KAAKg2C,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEAi+F,gCACEj+F,OACAg+F,UAC8B;AAC9Bh+F,MAAAA,MAAKq+B,SAAS2/D;AAEdh+F,MAAAA,MAAKi7B,KAAK,KAAK6iE,2BAA4B;AAC3C,WAAKx0F,OAAM,CAAY;AACvB,WAAKA,OAAM,CAAY;AACvB,UAAI,KAAKgI,MAAW,EAAA,KAAK,KAAKA,MAAe,EAAA,GAAG;AAC9CtR,QAAAA,MAAK+/B,SAAS;AACd//B,QAAAA,MAAKu0B,WAAW;AAChBv0B,QAAAA,MAAKH,QAAQ,KAAKq+F,6BAChB,KAAK7I,YAAYr1F,MAAKsT,IAAII,KAAK,CACjC;AAAA,MACF,OAAO;AACL1T,QAAAA,MAAK+/B,SAAS;AACd,YAAI,KAAKwqD,IAAG,EAAY,GAAG;AACzBvqF,UAAAA,MAAKu0B,WAAW;AAAA,QAClB;AACAv0B,QAAAA,MAAKH,QAAQ,KAAKg6F,yBAA0B;AAAA,MAC9C;AACA,aAAO,KAAK1kB,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAEAk+F,6BACEl+F,OAC8B;AAC9BA,MAAAA,MAAK26B,SAAS,CAAE;AAChB36B,MAAAA,MAAKqH,OAAO;AACZrH,MAAAA,MAAKi6B,iBAAiB;AACtBj6B,MAAAA,MAAKy/B,OAAO;AAEZ,UAAI,KAAKnuB,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE;AAEA,WAAKrxF,OAAM,EAAU;AACrB,UAAI,KAAKgI,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAKy/B,OAAO,KAAK0+D,2BAAuC,IAAI;AAE5Dn+F,QAAAA,MAAKy/B,KAAKhzB,OAAO;AACjB,YAAI,CAAC,KAAK6E,MAAK,EAAU,GAAG;AAC1B,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AACA,aAAO,CAAC,KAAKgI,MAAe,EAAA,KAAK,CAAC,KAAKA,MAAK,EAAY,GAAG;AACzDtR,QAAAA,MAAK26B,OAAOvzB,KAAK,KAAK+2F,2BAA2B,KAAK,CAAC;AACvD,YAAI,CAAC,KAAK7sF,MAAK,EAAU,GAAG;AAC1B,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AAEA,UAAI,KAAKihF,IAAG,EAAY,GAAG;AACzBvqF,QAAAA,MAAKqH,OAAO,KAAK82F,2BAA2B,KAAK;AAAA,MACnD;AACA,WAAK70F,OAAM,EAAU;AACrBtJ,MAAAA,MAAK+6B,aAAa,KAAK8+D,yBAA0B;AAEjD,aAAO,KAAK1kB,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAEAo+F,gCACEp+F,OACAg+F,UAC8B;AAC9B,YAAMK,YAAY,KAAKppB,UAAW;AAClCj1E,MAAAA,MAAKq+B,SAAS2/D;AACdh+F,MAAAA,MAAKH,QAAQ,KAAKq+F,6BAA6BG,SAAS;AACxD,aAAO,KAAKlpB,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAEAk8F,oBAAoB;AAAA,MAClBC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IAOF,GAA+B;AAC7B,YAAMxC,YAAY,KAAKp7F,MAAMkqF;AAC7B,WAAKlqF,MAAMkqF,SAAS;AAEpB,YAAM9B,YAAY,KAAK9R,UAAuC;AAE9D8R,gBAAUpnD,iBAAiB,CAAE;AAC7BonD,gBAAU/qD,aAAa,CAAE;AACzB+qD,gBAAUrnD,WAAW,CAAE;AACvBqnD,gBAAUnnD,gBAAgB,CAAE;AAE5B,UAAI0+D;AACJ,UAAIz+D;AACJ,UAAIC,UAAU;AACd,UAAIs8D,cAAc,KAAK9qF,MAAK,CAAa,GAAG;AAC1C,aAAKhI,OAAM,CAAa;AACxBg1F,mBAAuB;AACvBz+D,gBAAQ;AAAA,MACV,OAAO;AACL,aAAKv2B,OAAM,CAAU;AACrBg1F,mBAAoB;AACpBz+D,gBAAQ;AAAA,MACV;AAEAknD,gBAAUlnD,QAAQA;AAElB,aAAO,CAAC,KAAKvuB,MAAMgtF,QAAQ,GAAG;AAC5B,YAAIN,WAAW;AACf,YAAIO,gBAA6C;AACjD,YAAIC,kBAA+C;AACnD,cAAMx+F,QAAO,KAAKi1E,UAAW;AAE7B,YAAIqnB,cAAc,KAAKpK,aAAY,GAAU,GAAG;AAC9C,gBAAMxH,YAAY,KAAKA,UAAW;AAElC,cAAIA,UAAUv5E,SAAI,MAAiBu5E,UAAUv5E,SAAI,IAAkB;AACjE,iBAAKshB,KAAM;AACX8rE,4BAAgB,KAAK5/F,MAAM4U;AAC3B4oF,0BAAc;AAAA,UAChB;AAAA,QACF;AAEA,YAAIA,eAAe,KAAKjK,aAAY,GAAW,GAAG;AAChD,gBAAMxH,YAAY,KAAKA,UAAW;AAGlC,cAAIA,UAAUv5E,SAAI,MAAiBu5E,UAAUv5E,SAAI,IAAkB;AACjE,iBAAKshB,KAAM;AACXurE,uBAAW;AAAA,UACb;AAAA,QACF;AAEA,cAAM7+D,WAAW,KAAK89D,kBAAmB;AAEzC,YAAI,KAAK1S,IAAG,CAAY,GAAG;AACzB,cAAIgU,iBAAiB,MAAM;AACzB,iBAAKh2B,WAAWg2B,aAAa;AAAA,UAC/B;AACA,cAAI,KAAKhU,IAAG,CAAY,GAAG;AACzB,gBAAIprD,UAAU;AACZ,mBAAKopC,WAAWppC,SAAS7rB,IAAII,KAAK;AAAA,YACpC;AACAqzE,sBAAUnnD,cAAcx4B,KACtB,KAAK62F,gCAAgCj+F,OAAMg+F,QAAQ,CACrD;AAAA,UACF,OAAO;AACLjX,sBAAUrnD,SAASt4B,KACjB,KAAK22F,2BAA2B/9F,OAAMg+F,UAAU7+D,QAAQ,CAC1D;AAAA,UACF;AAAA,QACF,WAAW,KAAK7tB,MAAK,EAAU,KAAK,KAAKA,MAAK,EAAM,GAAG;AACrD,cAAIitF,iBAAiB,MAAM;AACzB,iBAAKh2B,WAAWg2B,aAAa;AAAA,UAC/B;AACA,cAAIp/D,UAAU;AACZ,iBAAKopC,WAAWppC,SAAS7rB,IAAII,KAAK;AAAA,UACpC;AACAqzE,oBAAUpnD,eAAev4B,KACvB,KAAKg3F,gCAAgCp+F,OAAMg+F,QAAQ,CACrD;AAAA,QACF,OAAO;AACL,cAAI/hE,OAAO;AAEX,cAAI,KAAKi2D,aAAoB,EAAA,KAAK,KAAKA,aAAoB,GAAA,GAAG;AAC5D,kBAAMxH,YAAY,KAAKA,UAAW;AAClC,gBAAI1I,2BAA2B0I,UAAUv5E,IAAI,GAAG;AAC9C8qB,qBAAO,KAAKt9B,MAAMkB;AAClB,mBAAK4yB,KAAM;AAAA,YACb;AAAA,UACF;AAEA,gBAAMgsE,gBAAgB,KAAKC,4BACzB1+F,OACAg+F,UACAO,eACAp/D,UACAlD,MACAogE,aACAE,uBAAAA,eAAgB,CAAC18D,KACnB;AAEA,cAAI4+D,kBAAkB,MAAM;AAC1B3+D,sBAAU;AACV0+D,8BAAkB,KAAK7/F,MAAMk4E;AAAAA,UAC/B,OAAO;AACLkQ,sBAAU/qD,WAAW50B,KAAKq3F,aAAa;AAAA,UACzC;AAAA,QACF;AAEA,aAAKE,wBAAyB;AAE9B,YACEH,mBACA,CAAC,KAAKltF,MAAK,CAAU,KACrB,CAAC,KAAKA,MAAK,CAAa,GACxB;AACA,eAAKglE,MACHkf,WAAW2C,mCACXqG,eACF;AAAA,QACF;AAAA,MACF;AAEA,WAAKl1F,OAAOg1F,QAAQ;AAOpB,UAAIjC,aAAa;AACftV,kBAAUjnD,UAAUA;AAAAA,MACtB;AAEA,YAAMvO,MAAM,KAAK4jD,WAAW4R,WAAW,sBAAsB;AAE7D,WAAKpoF,MAAMkqF,SAASkR;AAEpB,aAAOxoE;AAAAA,IACT;AAAA,IAEAmtE,4BACE1+F,OACAg+F,UACAO,eACAp/D,UACAlD,MACAogE,aACAE,cACkE;AAClE,UAAI,KAAKhS,IAAG,EAAY,GAAG;AACzB,cAAMqU,iBACJ,KAAKttF,MAAc,EAAA,KACnB,KAAKA,MAAK,EAAQ,KAClB,KAAKA,MAAe,CAAA,KACpB,KAAKA,MAAK,CAAa;AAEzB,YAAIstF,gBAAgB;AAClB,cAAI,CAACvC,aAAa;AAChB,iBAAK/lB,MACHkf,WAAW2B,wBACX,KAAKx4F,MAAMk4E,eACb;AAAA,UACF,WAAW,CAAC0lB,cAAc;AACxB,iBAAKjmB,MACHkf,WAAW0B,oBACX,KAAKv4F,MAAMk4E,eACb;AAAA,UACF;AACA,cAAI13C,UAAU;AACZ,iBAAKm3C,MAAMkf,WAAW4B,iBAAiBj4D,QAAQ;AAAA,UACjD;AAEA,iBAAO;AAAA,QACT;AAEA,YAAI,CAACk9D,aAAa;AAChB,eAAK/lB,MACHkf,WAAW+C,sBACX,KAAK55F,MAAMk4E,eACb;AAAA,QACF;AACA,YAAI0nB,iBAAiB,MAAM;AACzB,eAAKh2B,WAAWg2B,aAAa;AAAA,QAC/B;AACA,YAAIp/D,UAAU;AACZ,eAAKm3C,MAAMkf,WAAWmC,gBAAgBx4D,QAAQ;AAAA,QAChD;AAEAn/B,QAAAA,MAAKm8B,WAAW,KAAK69D,cAAe;AACpC,eAAO,KAAK7kB,WAAWn1E,OAAM,0BAA0B;AAAA,MACzD,OAAO;AACLA,QAAAA,MAAKP,MAAM,KAAKq+F,2BAA4B;AAC5C99F,QAAAA,MAAKq+B,SAAS2/D;AACdh+F,QAAAA,MAAK8F,QAAQy4F,iBAAiB;AAC9Bv+F,QAAAA,MAAKi8B,OAAOA;AAEZ,YAAI1H,WAAW;AACf,YAAI,KAAKjjB,MAAW,EAAA,KAAK,KAAKA,MAAe,EAAA,GAAG;AAE9CtR,UAAAA,MAAK+/B,SAAS;AAEd,cAAIw+D,iBAAiB,MAAM;AACzB,iBAAKh2B,WAAWg2B,aAAa;AAAA,UAC/B;AACA,cAAIp/D,UAAU;AACZ,iBAAKopC,WAAWppC,SAAS7rB,IAAII,KAAK;AAAA,UACpC;AAEA1T,UAAAA,MAAKH,QAAQ,KAAKq+F,6BAChB,KAAK7I,YAAYr1F,MAAKsT,IAAII,KAAK,CACjC;AACA,cAAIuoB,SAAS,SAASA,SAAS,OAAO;AACpC,iBAAK4iE,4BAA4B7+F,KAAI;AAAA,UACvC;AAEA,cACE,CAACq8F,eACDr8F,MAAKP,IAAIgN,SAAS,iBAClBzM,MAAKH,MAAM4/B,MACX;AACA,iBAAK62C,MACHkf,WAAWqC,8BACX73F,MAAKH,MAAM4/B,IACb;AAAA,UACF;AAAA,QACF,OAAO;AACL,cAAIxD,SAAS,OAAQ,MAAKssC,WAAY;AAEtCvoE,UAAAA,MAAK+/B,SAAS;AAEd,cAAI,KAAKwqD,IAAG,EAAY,GAAG;AACzBh2D,uBAAW;AAAA,UACb;AACAv0B,UAAAA,MAAKH,QAAQ,KAAKg6F,yBAA0B;AAC5C75F,UAAAA,MAAKm/B,WAAWA;AAAAA,QAClB;AAEAn/B,QAAAA,MAAKu0B,WAAWA;AAEhB,eAAO,KAAK4gD,WAAWn1E,OAAM,oBAAoB;AAAA,MACnD;AAAA,IACF;AAAA,IAIA6+F,4BACE9vE,UAGM;AACN,YAAM+vE,aAAa/vE,SAASkN,SAAS,QAAQ,IAAI;AACjD,YAAM9vB,SACJ4iB,SAASlvB,MAAM86B,OAAOxuB,UAAU4iB,SAASlvB,MAAMwH,OAAO,IAAI;AAE5D,UAAI0nB,SAASlvB,MAAM4/B,MAAM;AACvB,aAAK62C,MACHvnD,SAASkN,SAAS,QACdu5D,WAAWuB,4BACXvB,WAAWkC,2BACf3oE,SAASlvB,MAAM4/B,IACjB;AAAA,MACF;AAEA,UAAItzB,WAAW2yF,YAAY;AACzB,aAAKxoB,MACHvnD,SAASkN,SAAS,QACd60C,OAAOzM,iBACPyM,OAAOxM,gBACXv1C,QACF;AAAA,MACF;AAEA,UAAIA,SAASkN,SAAS,SAASlN,SAASlvB,MAAMwH,MAAM;AAClD,aAAKivE,MAAMxF,OAAOvM,wBAAwBx1C,QAAQ;AAAA,MACpD;AAAA,IACF;AAAA,IAEA4vE,0BAAgC;AAC9B,UACE,CAAC,KAAKpU,IAAG,EAAQ,KACjB,CAAC,KAAKA,IAAY,EAAA,KAClB,CAAC,KAAKj5E,MAAK,CAAU,KACrB,CAAC,KAAKA,MAAkB,CAAA,GACxB;AACA,aAAKi3D,WAAY;AAAA,MACnB;AAAA,IACF;AAAA,IAEAi0B,iCACEjpF,UACA0nB,IAC8C;AAC9C1nB,kBAAQ,OAARA,WAAAA,WAAa,KAAK5U,MAAM4U;AACxB,UAAIvT,QACFi7B,MAAM,KAAK+gE,8BAA8B,IAAI;AAE/C,aAAO,KAAKzR,IAAG,EAAO,GAAG;AACvB,cAAMwU,SAAQ,KAAK1J,YAA2C9hF,QAAQ;AACtEwrF,QAAAA,OAAM/+D,gBAAgBhgC;AACtB++F,QAAAA,OAAM9jE,KAAK,KAAK+gE,8BAA8B,IAAI;AAClDh8F,QAAAA,QAAO,KAAKm1E,WAAW4pB,QAAO,yBAAyB;AAAA,MACzD;AAEA,aAAO/+F;AAAAA,IACT;AAAA,IAEAg/F,qBACEzrF,UACA0nB,IAC6B;AAC7B,YAAMj7B,QAAO,KAAKq1F,YAAyC9hF,QAAQ;AAEnEvT,MAAAA,MAAKi6B,iBAAiB;AACtBj6B,MAAAA,MAAKi7B,KAAK,KAAKuhE,iCAAiCjpF,UAAU0nB,EAAE;AAE5D,UAAI,KAAK3pB,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAKwiE,oCAAqC;AAAA,MAClE;AAEA,aAAO,KAAKtnB,WAAWn1E,OAAM,uBAAuB;AAAA,IACtD;AAAA,IAEAi/F,sBAAkD;AAChD,YAAMj/F,QAAO,KAAKi1E,UAAuC;AACzD,WAAK3rE,OAAM,EAAW;AACtBtJ,MAAAA,MAAKm8B,WAAW,KAAK+iE,qBAAsB;AAC3C,aAAO,KAAK/pB,WAAWn1E,OAAM,sBAAsB;AAAA,IACrD;AAAA,IAEAm/F,qBAAgD;AAC9C,YAAMn/F,QAAO,KAAKi1E,UAAsC;AACxDj1E,MAAAA,MAAKhB,QAAQ,CAAE;AACf,WAAKsK,OAAM,CAAY;AAEvB,aAAO,KAAK3K,MAAMsN,MAAM,KAAKE,UAAU,CAAC,KAAKmF,MAAK,CAAY,GAAG;AAC/DtR,QAAAA,MAAKhB,MAAMoI,KAAK,KAAK4yF,cAAa,CAAE;AACpC,YAAI,KAAK1oF,MAAK,CAAY,EAAG;AAC7B,aAAKhI,OAAM,EAAS;AAAA,MACtB;AACA,WAAKA,OAAM,CAAY;AACvB,aAAO,KAAK6rE,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAEAm+F,2BAA2BiB,OAAyC;AAClE,UAAI3yF,OAAO;AACX,UAAI8nB,WAAW;AACf,UAAI8G,iBAAiB;AACrB,YAAMr7B,QAAO,KAAKi1E,UAAoC;AACtD,YAAMoqB,KAAK,KAAK3U,UAAW;AAC3B,YAAM4U,SAAS,KAAK3gG,MAAMwS,SAAiB;AAE3C,UAAIkuF,GAAGluF,SAAI,MAAiBkuF,GAAGluF,SAAI,IAAkB;AACnD,YAAImuF,UAAU,CAACF,OAAO;AACpB,eAAK9oB,MAAMkf,WAAWuC,sBAAsB/3F,KAAI;AAAA,QAClD;AACAyM,eAAO,KAAK+tF,gBAAgB8E,MAAM;AAClC,YAAI,KAAK/U,IAAG,EAAY,GAAG;AACzBh2D,qBAAW;AACX,cAAI+qE,QAAQ;AACV,iBAAKhpB,MAAMkf,WAAWsC,2BAA2B93F,KAAI;AAAA,UACvD;AAAA,QACF;AACAq7B,yBAAiB,KAAKw+D,yBAA0B;AAAA,MAClD,OAAO;AACLx+D,yBAAiB,KAAK2+D,cAAe;AAAA,MACvC;AACAh6F,MAAAA,MAAKyM,OAAOA;AACZzM,MAAAA,MAAKu0B,WAAWA;AAChBv0B,MAAAA,MAAKq7B,iBAAiBA;AACtB,aAAO,KAAK85C,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEAu/F,mCACEpuF,MACyB;AACzB,YAAMnR,QAAO,KAAKq1F,YAAqClkF,KAAKmC,IAAII,KAAK;AACrE1T,MAAAA,MAAKyM,OAAO;AACZzM,MAAAA,MAAKu0B,WAAW;AAChBv0B,MAAAA,MAAKq7B,iBAAiBlqB;AACtB,aAAO,KAAKgkE,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEA66F,4BAA4BlgE,SAAoC,IAI9D;AACA,UAAItzB,OAAmD;AACvD,UAAIk3E,QAAoD;AACxD,UAAI,KAAKjtE,MAAK,EAAS,GAAG;AACxBitE,gBAAQ,KAAK4f,2BAAuC,IAAI;AAExD5f,cAAM9xE,OAAO;AACb,YAAI,CAAC,KAAK6E,MAAK,EAAU,GAAG;AAC1B,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AACA,aAAO,CAAC,KAAKgI,MAAe,EAAA,KAAK,CAAC,KAAKA,MAAK,EAAY,GAAG;AACzDqpB,eAAOvzB,KAAK,KAAK+2F,2BAA2B,KAAK,CAAC;AAClD,YAAI,CAAC,KAAK7sF,MAAK,EAAU,GAAG;AAC1B,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AACA,UAAI,KAAKihF,IAAG,EAAY,GAAG;AACzBljF,eAAO,KAAK82F,2BAA2B,KAAK;AAAA,MAC9C;AACA,aAAO;AAAA,QAAExjE;AAAAA,QAAQtzB;AAAAA,QAAMk3E;AAAAA,MAAO;AAAA,IAChC;AAAA,IAEAihB,0BACEjsF,UACAvT,OACAi7B,IACY;AACZ,cAAQA,GAAGxuB,MAAI;AAAA,QACb,KAAK;AACH,iBAAO,KAAK0oE,WAAWn1E,OAAM,mBAAmB;AAAA,QAElD,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,uBAAuB;AAAA,QAEtD,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,qBAAqB;AAAA,QAEpD,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,qBAAqB;AAAA,QAEpD,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,sBAAsB;AAAA,QAErD,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,sBAAsB;AAAA,QAErD,KAAK;AACH,iBAAO,KAAKm1E,WAAWn1E,OAAM,sBAAsB;AAAA,QAErD;AACE,eAAK28F,mBAAmB1hE,GAAGxuB,IAAI;AAC/B,iBAAO,KAAKuyF,qBAAqBzrF,UAAU0nB,EAAE;AAAA,MACjD;AAAA,IACF;AAAA,IAKAikE,uBAAmC;AACjC,YAAM3rF,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMvT,QAAO,KAAKi1E,UAAsC;AACxD,UAAI2lB;AACJ,UAAIzpF;AACJ,UAAIsuF,gBAAgB;AACpB,YAAMhC,wBAAwB,KAAK9+F,MAAMmqF;AAEzC,cAAQ,KAAKnqF,MAAMwS,MAAI;AAAA,QACrB,KAAA;AACE,iBAAO,KAAK+qF,oBAAoB;AAAA,YAC9BC,aAAa;AAAA,YACbC,YAAY;AAAA,YACZC,aAAa;AAAA,YACbC,YAAY;AAAA,YACZC,cAAc;AAAA,UAChB,CAAC;AAAA,QAEH,KAAA;AACE,iBAAO,KAAKL,oBAAoB;AAAA,YAC9BC,aAAa;AAAA,YACbC,YAAY;AAAA,YACZC,aAAa;AAAA,YACbC,YAAY;AAAA,YACZC,cAAc;AAAA,UAChB,CAAC;AAAA,QAEH,KAAA;AACE,eAAK59F,MAAMmqF,qBAAqB;AAChC33E,iBAAO,KAAKguF,mBAAoB;AAChC,eAAKxgG,MAAMmqF,qBAAqB2U;AAChC,iBAAOtsF;AAAAA,QAET,KAAA,IAAY;AACV,gBAAMnR,QAAO,KAAKi1E,UAAyC;AAC3Dj1E,UAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAC9D,eAAKrxF,OAAM,EAAU;AACrBsxF,gBAAM,KAAKC,4BAA6B;AACxC76F,UAAAA,MAAK26B,SAASigE,IAAIjgE;AAClB36B,UAAAA,MAAKqH,OAAOuzF,IAAIvzF;AAChBrH,UAAAA,MAAKy/B,OAAOm7D,IAAIrc;AAChB,eAAKj1E,OAAM,EAAU;AAErB,eAAKA,OAAM,EAAS;AAEpBtJ,UAAAA,MAAK+6B,aAAa,KAAKi/D,cAAe;AAEtC,iBAAO,KAAK7kB,WAAWn1E,OAAM,wBAAwB;AAAA,QACvD;AAAA,QAEA,KAAA,IAAgB;AACd,gBAAMA,QAAO,KAAKi1E,UAAyC;AAC3D,eAAKxiD,KAAM;AAGX,cAAI,CAAC,KAAKnhB,MAAe,EAAA,KAAK,CAAC,KAAKA,MAAK,EAAY,GAAG;AACtD,gBAAIuwE,kBAAkB,KAAKljF,MAAMwS,IAAI,KAAK,KAAKG,MAAK,EAAS,GAAG;AAC9D,oBAAMvK,SAAQ,KAAK2jF,UAAS,EAAGv5E;AAC/BsuF,8BAAgB14F,WAAqB,MAAIA,WAAkB;AAAA,YAC7D,OAAO;AACL04F,8BAAgB;AAAA,YAClB;AAAA,UACF;AAEA,cAAIA,eAAe;AACjB,iBAAK9gG,MAAMmqF,qBAAqB;AAChC33E,mBAAO,KAAK6oF,cAAe;AAC3B,iBAAKr7F,MAAMmqF,qBAAqB2U;AAGhC,gBACE,KAAK9+F,MAAMmqF,sBACX,EACE,KAAKx3E,MAAc,EAAA,KAClB,KAAKA,MAAe,EAAA,KAAK,KAAKo5E,UAAS,EAAGv5E,SAAkB,KAE/D;AACA,mBAAK7H,OAAM,EAAU;AACrB,qBAAO6H;AAAAA,YACT,OAAO;AAEL,mBAAKo5E,IAAG,EAAS;AAAA,YACnB;AAAA,UACF;AAEA,cAAIp5E,MAAM;AACRypF,kBAAM,KAAKC,4BAA4B,CACrC,KAAK0E,mCAAmCpuF,IAAI,CAAC,CAC9C;AAAA,UACH,OAAO;AACLypF,kBAAM,KAAKC,4BAA6B;AAAA,UAC1C;AAEA76F,UAAAA,MAAK26B,SAASigE,IAAIjgE;AAClB36B,UAAAA,MAAKqH,OAAOuzF,IAAIvzF;AAChBrH,UAAAA,MAAKy/B,OAAOm7D,IAAIrc;AAEhB,eAAKj1E,OAAM,EAAU;AAErB,eAAKA,OAAM,EAAS;AAEpBtJ,UAAAA,MAAK+6B,aAAa,KAAKi/D,cAAe;AAEtCh6F,UAAAA,MAAKi6B,iBAAiB;AAEtB,iBAAO,KAAKk7C,WAAWn1E,OAAM,wBAAwB;AAAA,QACvD;AAAA,QAEA,KAAA;AACE,iBAAO,KAAKgzE,aACV,KAAKr0E,MAAMkB,OACX,6BACF;AAAA,QAEF,KAAA;AAAA,QACA,KAAA;AACEG,UAAAA,MAAKH,QAAQ,KAAKyR,QAAc;AAChC,eAAKmhB,KAAM;AACX,iBAAO,KAAK0iD,WACVn1E,OACA,8BACF;AAAA,QAEF,KAAA;AACE,cAAI,KAAKrB,MAAMkB,UAAU,KAAK;AAC5B,iBAAK4yB,KAAM;AACX,gBAAI,KAAKnhB,MAAK,GAAO,GAAG;AACtB,qBAAO,KAAKouF,mBACV,CAAC,KAAK/gG,MAAMkB,OACZ,+BACAG,KACF;AAAA,YACF;AAEA,gBAAI,KAAKsR,MAAK,GAAU,GAAG;AACzB,qBAAO,KAAKouF,mBACV,CAAC,KAAK/gG,MAAMkB,OACZ,+BACAG,KACF;AAAA,YACF;AAEA,kBAAM,KAAKs2E,MACTkf,WAAWgD,8BACX,KAAK75F,MAAM4U,QACb;AAAA,UACF;AACA,eAAKg1D,WAAY;AACjB;AAAA,QACF,KAAA;AACE,iBAAO,KAAKyK,aACV,KAAKr0E,MAAMkB,OACX,6BACF;AAAA,QAEF,KAAA;AACE,iBAAO,KAAKmzE,aACV,KAAKr0E,MAAMkB,OACX,6BACF;AAAA,QAEF,KAAA;AACE,eAAK4yB,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,oBAAoB;AAAA,QAEnD,KAAA;AACE,eAAKyyB,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,2BAA2B;AAAA,QAE1D,KAAA;AACE,eAAKyyB,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,oBAAoB;AAAA,QAEnD,KAAA;AACE,eAAKyyB,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,sBAAsB;AAAA,QAErD,KAAA;AACE,iBAAO,KAAKi/F,oBAAqB;AAAA,QAEnC;AACE,cAAI3c,eAAe,KAAK3jF,MAAMwS,IAAI,GAAG;AACnC,kBAAM2oB,QAAQ8oD,eAAe,KAAKjkF,MAAMwS,IAAI;AAC5C,iBAAKshB,KAAM;AACX,mBAAO,MAAMktE,iBAAiB3/F,OAA8B85B,KAAK;AAAA,UAClE,WAAU+nD,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AAC7C,gBAAI,KAAK+gF,aAAY,GAAc,GAAG;AACpC,qBAAO,KAAK2L,uBAAwB;AAAA,YACtC;AAEA,mBAAO,KAAK2B,0BACVjsF,UACAvT,OACA,KAAKw6F,iBACP;AAAA,UACF;AAAA,MACJ;AAEA,WAAKjyB,WAAY;AAAA,IACnB;AAAA,IAEAq3B,uBAAmC;AACjC,YAAMrsF,WAAW,KAAK5U,MAAM4U;AAC5B,UAAIpC,OAAO,KAAK+tF,qBAAsB;AACtC,UAAIW,4BAA4B;AAChC,cACG,KAAKvuF,MAAiB,CAAA,KAAK,KAAKA,MAAoB,EAAA,MACrD,CAAC,KAAKohF,mBAAkB,GACxB;AACA,cAAM1yF,QAAO,KAAKq1F,YAAuC9hF,QAAQ;AACjE,cAAMghB,WAAW,KAAKg2D,MAAkB;AACxCsV,oCAA4BA,6BAA6BtrE;AACzD,aAAKjrB,OAAM,CAAY;AACvB,YAAI,CAACirB,YAAY,KAAKjjB,MAAK,CAAY,GAAG;AACxCtR,UAAAA,MAAKw1B,cAAcrkB;AACnB,eAAKshB,KAAM;AACXthB,iBAAO,KAAKgkE,WAAWn1E,OAAM,qBAAqB;AAAA,QACpD,OAAO;AACLA,UAAAA,MAAKqgC,aAAalvB;AAClBnR,UAAAA,MAAKsgC,YAAY,KAAK05D,cAAe;AACrC,eAAK1wF,OAAM,CAAY;AACvB,cAAIu2F,2BAA2B;AAC7B7/F,YAAAA,MAAKu0B,WAAWA;AAChBpjB,mBAAO,KAAKgkE,WAEVn1E,OACA,2BACF;AAAA,UACF,OAAO;AACLmR,mBAAO,KAAKgkE,WAEVn1E,OACA,mBACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAOmR;AAAAA,IACT;AAAA,IAEA2uF,sBAAkC;AAChC,YAAM9/F,QAAO,KAAKi1E,UAAsC;AACxD,UAAI,KAAKsV,IAAG,EAAY,GAAG;AACzBvqF,QAAAA,MAAKq7B,iBAAiB,KAAKykE,oBAAqB;AAChD,eAAO,KAAK3qB,WAAWn1E,OAAM,wBAAwB;AAAA,MACvD,OAAO;AACL,eAAO,KAAK4/F,qBAAsB;AAAA,MACpC;AAAA,IACF;AAAA,IAEAG,qCAAiD;AAC/C,YAAM7lE,QAAQ,KAAK4lE,oBAAqB;AACxC,UAAI,CAAC,KAAKnhG,MAAMmqF,sBAAsB,KAAKyB,IAAY,EAAA,GAAG;AAExD,cAAMvqF,QAAO,KAAKq1F,YAChBn7D,MAAM5mB,IAAII,KACZ;AACA1T,QAAAA,MAAK26B,SAAS,CAAC,KAAK4kE,mCAAmCrlE,KAAK,CAAC;AAC7Dl6B,QAAAA,MAAKqH,OAAO;AACZrH,QAAAA,MAAKy/B,OAAO;AACZz/B,QAAAA,MAAK+6B,aAAa,KAAKi/D,cAAe;AACtCh6F,QAAAA,MAAKi6B,iBAAiB;AACtB,eAAO,KAAKk7C,WAAWn1E,OAAM,wBAAwB;AAAA,MACvD;AACA,aAAOk6B;AAAAA,IACT;AAAA,IAEA8lE,4BAAwC;AACtC,YAAMhgG,QAAO,KAAKi1E,UAAsC;AACxD,WAAKsV,IAAG,EAAc;AACtB,YAAMp5E,OAAO,KAAK4uF,mCAAoC;AACtD//F,MAAAA,MAAKhB,QAAQ,CAACmS,IAAI;AAClB,aAAO,KAAKo5E,IAAG,EAAc,GAAG;AAC9BvqF,QAAAA,MAAKhB,MAAMoI,KAAK,KAAK24F,mCAAkC,CAAE;AAAA,MAC3D;AACA,aAAO//F,MAAKhB,MAAMmN,WAAW,IACzBgF,OACA,KAAKgkE,WAAWn1E,OAAM,4BAA4B;AAAA,IACxD;AAAA,IAEAigG,qBAAiC;AAC/B,YAAMjgG,QAAO,KAAKi1E,UAAsC;AACxD,WAAKsV,IAAG,EAAa;AACrB,YAAMp5E,OAAO,KAAK6uF,0BAA2B;AAC7ChgG,MAAAA,MAAKhB,QAAQ,CAACmS,IAAI;AAClB,aAAO,KAAKo5E,IAAG,EAAa,GAAG;AAC7BvqF,QAAAA,MAAKhB,MAAMoI,KAAK,KAAK44F,0BAAyB,CAAE;AAAA,MAClD;AACA,aAAOhgG,MAAKhB,MAAMmN,WAAW,IACzBgF,OACA,KAAKgkE,WAAWn1E,OAAM,qBAAqB;AAAA,IACjD;AAAA,IAEAg6F,gBAA4B;AAC1B,YAAMD,YAAY,KAAKp7F,MAAMkqF;AAC7B,WAAKlqF,MAAMkqF,SAAS;AACpB,YAAM13E,OAAO,KAAK8uF,mBAAoB;AACtC,WAAKthG,MAAMkqF,SAASkR;AACpB,aAAO5oF;AAAAA,IACT;AAAA,IAEAysF,uCAAmD;AACjD,UAAI,KAAKj/F,MAAMwS,SAAgB,OAAI,KAAKxS,MAAMkB,UAAU,KAAK;AAC3D,cAAM0T,WAAW,KAAK5U,MAAM4U;AAC5B,cAAMvT,QAAO,KAAKw6F,gBAAiB;AACnC,eAAO,KAAKwE,qBAAqBzrF,UAAUvT,KAAI;AAAA,MACjD,OAAO;AACL,eAAO,KAAKg6F,cAAe;AAAA,MAC7B;AAAA,IACF;AAAA,IAEA4B,0BAA4C;AAC1C,YAAM57F,QAAO,KAAKi1E,UAA6B;AAC/Cj1E,MAAAA,MAAKq7B,iBAAiB,KAAKw+D,yBAA0B;AACrD,aAAO,KAAK1kB,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEAu7F,mCACE2E,wBACc;AACd,YAAMhD,QAAQgD,yBACV,KAAK1F,gBAAiB,IACtB,KAAKwB,8BAA+B;AACxC,UAAI,KAAK1qF,MAAK,EAAS,GAAG;AACxB4rF,cAAM7hE,iBAAiB,KAAKugE,wBAAyB;AACrD,aAAKpkB,iBAAiB0lB,KAAK;AAAA,MAC7B;AACA,aAAOA;AAAAA,IACT;AAAA,IAEAiD,oBAAoBngG,OAA0C;AAC3DA,MAAAA,MAAK05B,WAA4B2B,iBAAiBr7B,MAAKq7B;AAExD,WAAKm8C,iBAAiBx3E,MAAK05B,YAAY15B,MAAKq7B,eAAe/nB,IAAIM,GAAG;AAElE,aAAO5T,MAAK05B;AAAAA,IACd;AAAA,IAEAujE,oBAAuD;AACrD,UAAI99D,WAAW;AACf,UAAI,KAAK7tB,MAAK,EAAW,GAAG;AAC1B6tB,mBAAW,KAAK81C,UAA2B;AAC3C,YAAI,KAAKt2E,MAAMkB,UAAU,KAAK;AAC5Bs/B,mBAASlD,OAAO;AAAA,QAClB,OAAO;AACLkD,mBAASlD,OAAO;AAAA,QAClB;AACA,aAAKxJ,KAAM;AACX,eAAO,KAAK0iD,WAAWh2C,UAAU,UAAU;AAAA,MAC7C;AACA,aAAOA;AAAAA,IACT;AAAA,IAMAs1C,kBACEz0E,OACAogG,qBACAxzE,WAAoB,OACd;AACN,UAAIwzE,qBAAqB;AACvB,aAAKC,iCAAiCrgG,OAAM,MAC1C,MAAMy0E,kBAAkBz0E,OAAM,MAAM4sB,QAAQ,CAC9C;AACA;AAAA,MACF;AAEA,YAAM6nD,kBAAkBz0E,OAAM,OAAO4sB,QAAQ;AAAA,IAC/C;AAAA,IAEA0zE,2BAMEtgG,OAAiBmR,MAAiByb,WAAoB,OAAU;AAChE,UAAI,KAAKtb,MAAK,EAAS,GAAG;AACxB,cAAMmpF,WAAW,KAAKxlB,UAA6B;AAEnD,SACEwlB,SAASp/D,gBAETr7B,MAAKk7B,SAAS,IACZ,KAAKk/D,qCAAsC;AAE/Cp6F,QAAAA,MAAK+6B,aAAa0/D,SAASp/D,iBACvB,KAAK85C,WAAWslB,UAAU,gBAAgB,IAC1C;AAAA,MACN;AAEA,aAAO,MAAM6F,2BAA2BtgG,OAAMmR,MAAMyb,QAAQ;AAAA,IAC9D;AAAA,IAGA2zE,mBAAmB3kE,OAAwC;AAEzD,UAAI,KAAKj9B,MAAMoO,UAAU,KAAKmlF,aAA0B,GAAA,GAAG;AACzD,cAAMxH,YAAY,KAAKA,UAAW;AAClC,YAAI3I,2BAA2B2I,UAAUv5E,IAAI,GAAG;AAC9C,gBAAMnR,QAAO,KAAKi1E,UAA4B;AAC9C,eAAKxiD,KAAM;AACX,iBAAO,KAAKiqE,mBAAmB18F,KAAI;AAAA,QACrC;AAAA,MACD,WAAU,KAAKkyF,aAAY,GAAS,GAAG;AACtC,cAAMlyF,QAAO,KAAKi1E,UAAW;AAC7B,aAAKxiD,KAAM;AACX,eAAO,KAAK+tE,yBAAyBxgG,KAAI;AAAA,MAC3C;AACA,YAAM6hE,OAAO,MAAM0+B,mBAAmB3kE,KAAK;AAE3C,UAAI,KAAK+9D,eAAetnF,UAAa,CAAC,KAAKuhE,iBAAiB/R,IAAI,GAAG;AACjE,aAAK83B,aAAa;AAAA,MACpB;AACA,aAAO93B;AAAAA,IACT;AAAA,IAGA4+B,yBACEzgG,OACA0gG,MACAplE,aACuB;AACvB,UAAIolE,KAAKvvF,SAAS,cAAc;AAC9B,YAAIuvF,KAAKj0F,SAAS,WAAW;AAC3B,cACE,KAAK6E,MAAK,EAAU,KACpBuwE,kBAAkB,KAAKljF,MAAMwS,IAAI,KACjC,KAAKG,MAAkB,EAAA,KACvB,KAAKA,MAAK,EAAQ,KAClB,KAAKA,MAAK,EAAW,GACrB;AAEA,mBAAO,KAAKwpF,iBAAiB96F,KAAI;AAAA,UACnC;AAAA,QACD,WAAU6hF,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AAC7C,cAAIuvF,KAAKj0F,SAAS,aAAa;AAE7B,mBAAO,KAAKiwF,mBAAmB18F,KAAI;AAAA,UACrC,WAAW0gG,KAAKj0F,SAAS,QAAQ;AAE/B,mBAAO,KAAKqvF,mBAAmB97F,KAAI;AAAA,UACrC,WAAW0gG,KAAKj0F,SAAS,UAAU;AAEjC,mBAAO,KAAKsvF,oBAAoB/7F,OAAM,KAAK;AAAA,UAC7C;AAAA,QACF;AAAA,MACF;AAEA,aAAO,MAAMygG,yBAAyBzgG,OAAM0gG,MAAMplE,WAAU;AAAA,IAC9D;AAAA,IAGAqlE,+BAAwC;AACtC,YAAM;AAAA,QAAExvF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,SAAiB,OAAIixE,mCAAmCjxE,IAAI,GAAG;AACjE,eAAO,CAAC,KAAKxS,MAAM2qF;AAAAA,MACrB;AACA,aAAO,MAAMqX,6BAA8B;AAAA,IAC7C;AAAA,IAEAr6E,2BAAoC;AAClC,YAAM;AAAA,QAAEnV;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,SAAiB,OAAIixE,mCAAmCjxE,IAAI,GAAG;AACjE,eAAO,KAAKxS,MAAM2qF;AAAAA,MACpB;AAEA,aAAO,MAAMhjE,yBAA0B;AAAA,IACzC;AAAA,IAEAs6E,+BAA+B;AAC7B,UAAI,KAAK1O,aAAY,GAAS,GAAG;AAC/B,cAAMlyF,QAAO,KAAKi1E,UAAW;AAC7B,aAAKxiD,KAAM;AACX,eAAO,KAAK+tE,yBAAyBxgG,KAAI;AAAA,MAC3C;AACA,aAAO,MAAM4gG,6BAA8B;AAAA,IAC7C;AAAA,IAEAC,iBACEH,MAEAntF,UACAoiE,qBACc;AACd,UAAI,CAAC,KAAKrkE,QAAiB,EAAG,QAAOovF;AAErC,UAAI,KAAK/hG,MAAMiqF,wBAAwB;AACrC,cAAM0J,SAAS,KAAKtH,kBAAmB;AAIvC,YACEsH,WAA0B,MAC1BA,WAAM,MACNA,WAA0B,MAC1BA,WAAM,IACN;AAEA,eAAKwO,2BAA2BnrB,mBAAmB;AACnD,iBAAO+qB;AAAAA,QACT;AAAA,MACF;AAEA,WAAKp3F,OAAM,EAAY;AACvB,YAAM3K,SAAQ,KAAKA,MAAM24D,MAAO;AAChC,YAAMypC,oBAAoB,KAAKpiG,MAAMupF;AACrC,YAAMloF,QAAO,KAAKq1F,YAAqC9hF,QAAQ;AAC/D,UAAI;AAAA,QAAE4mB;AAAAA,QAAY6mE;AAAAA,MAAO,IAAI,KAAKC,8BAA+B;AACjE,UAAI,CAACnqE,OAAOrmB,OAAO,IAAI,KAAKywF,wBAAwB/mE,UAAU;AAE9D,UAAI6mE,UAAUvwF,QAAQtE,SAAS,GAAG;AAChC,cAAM+7E,YAAY,CAAC,GAAG6Y,iBAAiB;AAEvC,YAAItwF,QAAQtE,SAAS,GAAG;AACtB,eAAKxN,QAAQA;AACb,eAAKA,MAAMupF,YAAYA;AAEvB,mBAASh8E,IAAI,GAAGA,IAAIuE,QAAQtE,QAAQD,KAAK;AACvCg8E,sBAAU9gF,KAAKqJ,QAAQvE,CAAC,EAAEwH,KAAK;AAAA,UACjC;AAEA,WAAC;AAAA,YAAEymB;AAAAA,YAAY6mE;AAAAA,UAAO,IAAI,KAAKC,8BAA+B;AAC9D,WAACnqE,OAAOrmB,OAAO,IAAI,KAAKywF,wBAAwB/mE,UAAU;AAAA,QAC5D;AAEA,YAAI6mE,UAAUlqE,MAAM3qB,SAAS,GAAG;AAM9B,eAAKmqE,MAAMkf,WAAWC,2BAA2B92F,OAAM4U,QAAQ;AAAA,QACjE;AAEA,YAAIytF,UAAUlqE,MAAM3qB,WAAW,GAAG;AAChC,eAAKxN,QAAQA;AACbupF,oBAAU9gF,KAAK0vB,MAAM,CAAC,EAAEpjB,KAAK;AAC7B,eAAK/U,MAAMupF,YAAYA;AACvB,WAAC;AAAA,YAAE/tD;AAAAA,YAAY6mE;AAAAA,UAAO,IAAI,KAAKC,8BAA+B;AAAA,QAChE;AAAA,MACF;AAEA,WAAKC,wBAAwB/mE,YAAY,IAAI;AAE7C,WAAKx7B,MAAMupF,YAAY6Y;AACvB,WAAKz3F,OAAM,EAAS;AAEpBtJ,MAAAA,MAAKvB,OAAOiiG;AACZ1gG,MAAAA,MAAKm6B,aAAaA;AAClBn6B,MAAAA,MAAKo6B,YAAY,KAAKimE,iCAAiCrgG,OAAM,MAC3D,KAAKmhG,iBAAiB9uF,QAAWA,MAAS,CAC5C;AAEA,aAAO,KAAK8iE,WAAWn1E,OAAM,uBAAuB;AAAA,IACtD;AAAA,IAEAihG,gCAGE;AACA,WAAKtiG,MAAMwpF,0BAA0B/gF,KAAK,KAAKzI,MAAM+U,KAAK;AAE1D,YAAMymB,aAAa,KAAKinE,wBAAyB;AACjD,YAAMJ,SAAS,CAAC,KAAK1vF,QAAc;AAEnC,WAAK3S,MAAMwpF,0BAA0BjsB,IAAK;AAE1C,aAAO;AAAA,QAAE/hC;AAAAA,QAAY6mE;AAAAA,MAAQ;AAAA,IAC/B;AAAA,IASAE,wBACElhG,OACAqhG,iBAC4D;AAC5D,YAAM9+F,SAAQ,CAACvC,KAAI;AACnB,YAAMshG,SAAsC,CAAE;AAE9C,aAAO/+F,OAAM4J,WAAW,GAAG;AACzB,cAAMnM,QAAOuC,OAAM25D,IAAK;AACxB,YACEl8D,MAAKmR,SAAS,6BACdnR,MAAK65B,KAAK1oB,SAAS,kBACnB;AACA,cAAInR,MAAKi6B,kBAAkB,CAACj6B,MAAK+6B,YAAY;AAE3C,iBAAKwmE,sBAAsBvhG,KAAI;AAAA,UACjC,OAAO;AACLshG,mBAAOl6F,KAAKpH,KAAI;AAAA,UAClB;AACAuC,UAAAA,OAAM6E,KAAKpH,MAAK65B,IAAI;AAAA,QACtB,WAAW75B,MAAKmR,SAAS,yBAAyB;AAChD5O,UAAAA,OAAM6E,KAAKpH,MAAKm6B,UAAU;AAC1B53B,UAAAA,OAAM6E,KAAKpH,MAAKo6B,SAAS;AAAA,QAC3B;AAAA,MACF;AAEA,UAAIinE,iBAAiB;AACnBC,eAAOxoE,QAAQ94B,CAAAA,UAAQ,KAAKuhG,sBAAsBvhG,KAAI,CAAC;AACvD,eAAO,CAACshG,QAAQ,EAAE;AAAA,MACpB;AAEA,aAAOjI,UAAUiI,QAAQthG,CAAAA,UACvBA,MAAK26B,OAAO6mE,MAAMtnE,WAAS,KAAK67C,aAAa77C,OAAO,IAAI,CAAC,CAC3D;AAAA,IACF;AAAA,IAEAqnE,sBAAsBvhG,OAAiC;AAAA,UAAAyhG;AACrD,WAAKC,iBAGH1hG,MAAK26B,SAAM8mE,cACXzhG,MAAKm3D,UAALsqC,OAAAA,SAAAA,YAAYE,kBACA,KACd;AAEA,WAAK7iC,MAAMtF,MAAM6qB,KAAoC;AAErD,YAAMud,YAAY5hG,OAAM,OAAO,IAAI;AACnC,WAAK8+D,MAAM7B,KAAM;AAAA,IACnB;AAAA,IAEAojC,iCACErgG,OACAkH,QACG;AACH,UAAI6xD;AACJ,UACE,KAAKp6D,MAAMwpF,0BAA0B5xD,SACnC,KAAKmvD,kBAAkB1lF,MAAK0T,KAAK,CACnC,GACA;AACA,aAAK/U,MAAMwpF,0BAA0B/gF,KAAK,KAAKzI,MAAM+U,KAAK;AAC1DqlD,iBAAS7xD,OAAO;AAChB,aAAKvI,MAAMwpF,0BAA0BjsB,IAAK;AAAA,MAC5C,OAAO;AACLnD,iBAAS7xD,OAAO;AAAA,MAClB;AAEA,aAAO6xD;AAAAA,IACT;AAAA,IAEA8oC,eACE7hG,OACAuT,UACmD;AACnD,YAAMujD,UAAU,MAAM+qC,eAAe7hG,OAAMuT,QAAQ;AACnD,UAAI,KAAKg3E,IAAG,EAAY,GAAG;AACxBzzB,gBAAyBviC,WAAW;AAIrC,aAAKijD,iBAAiBx3E,KAAI;AAAA,MAC5B;AAEA,UAAI,KAAKsR,MAAK,EAAS,GAAG;AACxB,cAAMwwF,eAAe,KAAKzM,YAAkC9hF,QAAQ;AACpEuuF,qBAAapoE,aAAao9B;AAC1BgrC,qBAAazmE,iBAAiB,KAAKugE,wBAAyB;AAE5D,eAAO,KAAKzmB,WAAW2sB,cAAc,oBAAoB;AAAA,MAC3D;AAEA,aAAOhrC;AAAAA,IACT;AAAA,IAEAirC,wBAAwB/hG,OAAc;AACpC,UACGA,MAAKmR,SAAS,wBACZnR,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe,aACpDl+B,MAAKmR,SAAS,4BACbnR,MAAKw9B,eAAe,UACrBx9B,MAAKmR,SAAS,0BAA0BnR,MAAKw9B,eAAe,QAC7D;AAGA;AAAA,MACF;AAEA,YAAMukE,wBAAwB/hG,KAAI;AAAA,IACpC;AAAA,IAEAgiG,uBACEhiG,OACkC;AAClC,UAAI,KAAKkyF,aAAY,GAAS,GAAG;AAC/BlyF,QAAAA,MAAKw9B,aAAa;AAElB,cAAMykE,kBAAkB,KAAKhtB,UAAW;AACxC,aAAKxiD,KAAM;AAEX,YAAI,KAAKnhB,MAAK,CAAU,GAAG;AAEzBtR,UAAAA,MAAK09B,aAAa,KAAKwkE,sBACA,IACvB;AACA,gBAAMC,gBAAgBniG,KAAI;AAC1B,iBAAO;AAAA,QACT,OAAO;AAGL,iBAAO,KAAK87F,mBAAmBmG,eAAe;AAAA,QAChD;AAAA,MACD,WAAU,KAAK/P,aAAY,GAAW,GAAG;AACxClyF,QAAAA,MAAKw9B,aAAa;AAElB,cAAMykE,kBAAkB,KAAKhtB,UAAW;AACxC,aAAKxiD,KAAM;AAGX,eAAO,KAAKspE,oBAAoBkG,iBAAiB,KAAK;AAAA,MACvD,WAAU,KAAK/P,aAAY,GAAc,GAAG;AAC3ClyF,QAAAA,MAAKw9B,aAAa;AAClB,cAAMykE,kBAAkB,KAAKhtB,UAAW;AACxC,aAAKxiD,KAAM;AAEX,eAAO,KAAKiqE,mBAAmBuF,eAAe;AAAA,MAC/C,WAAU,KAAK/P,aAAY,GAAS,GAAG;AACtClyF,QAAAA,MAAKw9B,aAAa;AAClB,cAAMykE,kBAAkB,KAAKhtB,UAAW;AACxC,aAAKxiD,KAAM;AAEX,eAAO,KAAK+tE,yBAAyByB,eAAe;AAAA,MACtD,OAAO;AACL,eAAO,MAAMD,uBAAuBhiG,KAAI;AAAA,MAC1C;AAAA,IACF;AAAA,IAEAoiG,cACEpiG,OACmE;AACnE,UAAI,MAAMoiG,cAAcpiG,KAAI,EAAG,QAAO;AAEtC,UAAI,KAAKkyF,aAAY,GAAS,KAAK,KAAKxH,UAAW,EAACv5E,aAAkB;AAElEnR,QAAAA,MACAw9B,aAAa;AACf,aAAK/K,KAAM;AACX,aAAKA,KAAM;AACX,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IAEA4vE,mCACEriG,OAC0C;AAC1C,YAAM;AAAA,QAAEuT;AAAAA,MAAU,IAAG,KAAK5U;AAC1B,YAAM2jG,eAAe,MAAMD,mCAAmCriG,KAAI;AAClE,UAAIsiG,gBAAgBtiG,MAAKw9B,eAAe,QAAQ;AAC9C,aAAK+qC,WAAWh1D,QAAQ;AAAA,MAC1B;AACA,aAAO+uF;AAAAA,IACT;AAAA,IAEAC,aACEviG,OACAyrB,aACA+2E,YACA;AACA,YAAMD,aAAaviG,OAAMyrB,aAAa+2E,UAAU;AAChD,UAAI,KAAKlxF,MAAK,EAAM,GAAG;AACrBtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE;AAAA,IACF;AAAA,IAEA8H,iBACEz4D,WACArb,QACAhwB,QACM;AACN,YAAM;AAAA,QAAE4U;AAAAA,MAAU,IAAG,KAAK5U;AAC1B,UAAI,KAAKuzF,aAAY,GAAY,GAAG;AAClC,YAAI,MAAMwQ,6BAA6B14D,WAAWrb,MAAM,GAAG;AAEzD;AAAA,QACF;AAEAA,eAAOhW,UAAU;AAAA,MACnB;AAEA,YAAM8pF,iBAAiBz4D,WAAWrb,QAAQhwB,MAAK;AAE/C,UAAIgwB,OAAOhW,SAAS;AAClB,YACEgW,OAAOxd,SAAS,mBAChBwd,OAAOxd,SAAS,0BAChBwd,OAAOxd,SAAS,sBAChB;AACA,eAAKmlE,MAAMkf,WAAWK,qBAAqBtiF,QAAQ;AAAA,QACrD,WAAWob,OAAO9uB,OAAO;AACvB,eAAKy2E,MAAMkf,WAAWM,8BAA8BnnE,OAAO9uB,KAAK;AAAA,QAClE;AAAA,MACF;AAAA,IACF;AAAA,IAEA8iG,WAAWr1F,MAAuB;AAChC,aAAOA,SAAS,cAAcA,SAAS;AAAA,IACzC;AAAA,IAEAs1F,eAAqB;AACnB,YAAMt1F,OAAO,MAAMi/E,UAAW;AAC9B,YAAMsW,WAAW,OAAOv1F;AAGxB,UAAI,CAAC,KAAKq1F,WAAWr1F,IAAI,KAAK,CAAC,KAAK3O,MAAMkqF,QAAQ;AAChD,aAAKvS,MAAMxF,OAAO/I,mBAAmB,KAAKppE,MAAM6qF,eAAe;AAAA,UAC7DzmB,gBAAgB8/B;AAAAA,QAClB,CAAC;AAAA,MACH;AAEA,WAAKpX,YAAqBoX,KAAAA,QAAQ;AAAA,IACpC;AAAA,IAGAnX,iBAAiB3/E,OAAoB;AACnC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UAAIF,UAAI,OAAiC0mB,cAAgC;AACvE,aAAK+5D,SAAuB,GAAA,CAAC;AAAA,MAC/B,WACE,KAAK7tF,MAAMkqF,WACV98E,UAA8B,MAAIA,UAAI,KACvC;AACA,aAAKygF,SAASzgF,UAAI,KAA0C,KAAA,IAAE,CAAC;AAAA,MAChE,WAAU,KAAKpN,MAAMkqF,UAAU98E,UAAI,IAA6B;AAC/D,YAAI0mB,aAAwB;AAC1B,eAAK+5D,SAAyB,IAAA,CAAC;AAAA,QACjC,OAAO;AAEL,eAAKA,SAAsB,IAAA,CAAC;AAAA,QAC9B;AAAA,MACD,WACCtJ,gBAAgBn3E,OAAM0mB,MAAM,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,CAAC,GACrE;AACA,aAAKtN,MAAMsN,OAAO;AAClB,aAAK22F,aAAc;AAAA,MACrB,OAAO;AACL,cAAMlX,iBAAiB3/E,KAAI;AAAA,MAC7B;AAAA,IACF;AAAA,IAEAgqE,aAAa/1E,OAAco9D,YAA8B;AACvD,UAAIp9D,MAAKmR,SAAS,sBAAsB;AACtC,eAAO,KAAK4kE,aAAa/1E,MAAK05B,YAAY0jC,UAAS;AAAA,MACrD,OAAO;AACL,eAAO,MAAM2Y,aAAa/1E,OAAMo9D,UAAS;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA4Y,aAAah2E,OAAci2E,QAAiB,OAAa;AACvD,UACE,CAACA,SACDj2E,MAAKmR,SAAS,0BACdnR,MAAKu5B,KAAKpoB,SAAS,sBACnB;AACAnR,QAAAA,MAAKu5B,OAAO,KAAK4mE,oBAAoBngG,MAAKu5B,IAAI;AAAA,MAChD;AACA,YAAMy8C,aAAah2E,OAAMi2E,KAAK;AAAA,IAChC;AAAA,IAGAyrB,iBACEoB,UACAnB,kBACA1rB,OACM;AACN,eAAS/pE,IAAI,GAAGA,IAAI42F,SAAS32F,QAAQD,KAAK;AACxC,cAAMw0F,OAAOoC,SAAS52F,CAAC;AACvB,aAAIw0F,QAAAA,OAAAA,SAAAA,KAAMvvF,UAAS,sBAAsB;AACvC2xF,mBAAS52F,CAAC,IAAI,KAAKi0F,oBAAoBO,IAAI;AAAA,QAC7C;AAAA,MACF;AACA,YAAMgB,iBAAiBoB,UAAUnB,kBAAkB1rB,KAAK;AAAA,IAC1D;AAAA,IAIA8sB,iBACED,UAGAE,qBAG8C;AAC9C,eAAS92F,IAAI,GAAGA,IAAI42F,SAAS32F,QAAQD,KAAK;AAAA,YAAA+2F;AACxC,cAAMvC,OAAOoC,SAAS52F,CAAC;AACvB,YACEw0F,QACAA,KAAKvvF,SAAS,wBACd,GAAA8xF,cAACvC,KAAKvpC,UAAL8rC,QAAAA,YAAYnvB,mBACZgvB,SAAS32F,SAAS,KAAK,CAAC62F,sBACzB;AACA,eAAK1sB,MAAMkf,WAAW0C,mBAAmBwI,KAAKrlE,cAAc;AAAA,QAC9D;AAAA,MACF;AAEA,aAAOynE;AAAAA,IACT;AAAA,IAEAI,eACEC,OACAC,cACAC,SACA1tB,qBACuC;AACvC,YAAM31E,QAAO,MAAMkjG,eACjBC,OACAC,cACAC,SACA1tB,mBACF;AAOA,UAAIytB,gBAAgB,CAAC,KAAKzkG,MAAMiqF,wBAAwB;AACtD,aAAKma,iBAAiB/iG,MAAKk5B,QAAQ;AAAA,MACrC;AAEA,aAAOl5B;AAAAA,IACT;AAAA,IAEA41E,YAAYzkE,MAAcmyF,iBAA0BxtB,UAAsB;AACxE,aACE3kE,SAAS,wBACT,MAAMykE,YAAYzkE,MAAMmyF,iBAAiBxtB,QAAO;AAAA,IAEpD;AAAA,IAGAT,mBAAmBr1E,OAAwC;AACzD,UAAI,KAAKsR,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAKq7B,iBAAiB,KAAKugE,wBAAyB;AAAA,MACtD;AACA,aAAO,MAAMvmB,mBAAmBr1E,KAAI;AAAA,IACtC;AAAA,IAEAu1E,0BACEv1E,OACwB;AACxB,UAAI,KAAKsR,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAKq7B,iBAAiB,KAAKugE,wBAAyB;AAAA,MACtD;AACA,aAAO,MAAMrmB,0BAA0Bv1E,KAAI;AAAA,IAC7C;AAAA,IAGA0f,gBAAyB;AACvB,aAAO,KAAKpO,MAAW,EAAA,KAAK,MAAMoO,cAAe;AAAA,IACnD;AAAA,IAGAc,kBAA2B;AACzB,aAAO,KAAKlP,MAAc,EAAA,KAAK,MAAMkP,gBAAiB;AAAA,IACxD;AAAA,IAEA+iF,uBAAuBxjE,QAAkD;AACvE,aAAO,CAAC,KAAKzuB,MAAc,EAAA,KAAK,MAAMiyF,uBAAuBxjE,MAAM;AAAA,IACrE;AAAA,IAGAyjE,gBACEx5D,WACAjK,QACA60C,aACAnB,SACAoB,eACA4uB,mBACM;AACN,UAAK1jE,OAAeZ,UAAU;AAC5B,aAAKopC,WAAYxoC,OAAeZ,SAAS7rB,IAAII,KAAK;AAAA,MACpD;AACA,aAAQqsB,OAAeZ;AACvB,UAAI,KAAK7tB,MAAK,EAAM,GAAG;AACrByuB,eAAO9F,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAClE;AAEA,YAAM6I,gBACJx5D,WACAjK,QACA60C,aACAnB,SACAoB,eACA4uB,iBACF;AAEA,UAAI1jE,OAAOpF,UAAUk6C,eAAe;AAClC,cAAMl6C,SAASoF,OAAOpF;AACtB,YAAIA,OAAOxuB,SAAS,KAAK,KAAKu3F,YAAY/oE,OAAO,CAAC,CAAC,GAAG;AACpD,eAAK27C,MAAMkf,WAAWqC,8BAA8B93D,MAAM;AAAA,QAC5D;AAAA,MAEF,WAEEA,OAAO5uB,SAAS,sBAChB0jE,iBAEA90C,OAAOlgC,MAAM86B,QACb;AAEA,cAAMA,SAASoF,OAAOlgC,MAAM86B;AAC5B,YAAIA,OAAOxuB,SAAS,KAAK,KAAKu3F,YAAY/oE,OAAO,CAAC,CAAC,GAAG;AACpD,eAAK27C,MAAMkf,WAAWqC,8BAA8B93D,MAAM;AAAA,QAC5D;AAAA,MACF;AAAA,IACF;AAAA,IAEA4jE,uBACE35D,WACAjK,QACA60C,aACAnB,SACM;AACN,UAAK1zC,OAAeZ,UAAU;AAC5B,aAAKopC,WAAYxoC,OAAeZ,SAAS7rB,IAAII,KAAK;AAAA,MACpD;AACA,aAAQqsB,OAAeZ;AACvB,UAAI,KAAK7tB,MAAK,EAAM,GAAG;AACrByuB,eAAO9F,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAClE;AAEA,YAAMgJ,uBAAuB35D,WAAWjK,QAAQ60C,aAAanB,OAAO;AAAA,IACtE;AAAA,IAGAmwB,gBAAgB5jG,OAAqB;AACnC,YAAM4jG,gBAAgB5jG,KAAI;AAC1B,UACEA,MAAKi9B,eACJ,KAAK3rB,MAAK,EAAM,KAEf,KAAKA,MAAkB,EAAA,IACzB;AAIO;AACLtR,UAAAA,MAAK6jG,sBACH,KAAKtG,gDAAiD;AAAA,QAC1D;AAAA,MACF;AACA,UAAI,KAAKrL,aAAY,GAAe,GAAG;AACrC,aAAKz/D,KAAM;AACX,cAAMqxE,cAAwC9jG,MAAKk9B,aAAa,CAAG;AACnE,WAAG;AACD,gBAAMl9B,QAAO,KAAKi1E,UAAkC;AACpDj1E,UAAAA,MAAKi7B,KAAK,KAAK+gE,8BAA0C,IAAI;AAC7D,cAAI,KAAK1qF,MAAK,EAAM,GAAG;AACrBtR,YAAAA,MAAKi6B,iBAAiB,KAAKwiE,oCAAqC;AAAA,UAClE,OAAO;AACLz8F,YAAAA,MAAKi6B,iBAAiB;AAAA,UACxB;AACA6pE,sBAAY18F,KAAK,KAAK+tE,WAAWn1E,OAAM,iBAAiB,CAAC;AAAA,QAC3D,SAAS,KAAKuqF,MAAY;AAAA,MAC5B;AAAA,IACF;AAAA,IAEAwZ,wBAAwBhkE,QAA8C;AACpE,YAAMgkE,wBAAwBhkE,MAAM;AACpC,YAAMpF,SAAS,KAAKg5C,6BAA6B5zC,MAAM;AACvD,UAAIpF,OAAOxuB,SAAS,GAAG;AACrB,cAAM+tB,QAAQS,OAAO,CAAC;AACtB,YAAI,KAAK+oE,YAAYxpE,KAAK,KAAK6F,OAAO9D,SAAS,OAAO;AACpD,eAAKq6C,MAAMkf,WAAWuB,2BAA2B78D,KAAK;AAAA,QACvD,WAAU,KAAKwpE,YAAYxpE,KAAK,GAAG;AAClC,eAAKo8C,MAAMkf,WAAWkC,2BAA2Bx9D,KAAK;AAAA,QACxD;AAAA,MACF;AAAA,IACF;AAAA,IAEA8pE,gCACEhkG,OACM;AACNA,MAAAA,MAAKm/B,WAAW,KAAK89D,kBAAmB;AAAA,IAC1C;AAAA,IAGAgH,kBACExuB,MACAliE,UACAqhE,aACAnB,SACAzmD,WACAK,YACAsoD,qBACG;AACH,UAAKF,KAAat2C,UAAU;AAC1B,aAAKopC,WAAYkN,KAAat2C,SAAS7rB,IAAII,KAAK;AAAA,MAClD;AACA,aAAQ+hE,KAAat2C;AAErB,UAAIlF;AAGJ,UAAI,KAAK3oB,MAAK,EAAM,KAAK,CAAC+b,YAAY;AACpC4M,yBAAiB,KAAK0gE,kCAAmC;AACzD,YAAI,CAAC,KAAKrpF,MAAK,EAAU,EAAG,MAAKi3D,WAAY;AAAA,MAC/C;AAEA,YAAMxP,SAAS,MAAMkrC,kBACnBxuB,MACAliE,UACAqhE,aACAnB,SACAzmD,WACAK,YACAsoD,mBACF;AAGA,UAAI17C,gBAAgB;AAElB,SAAC8+B,OAAOl5D,SAASk5D,QAAQ9+B,iBAAiBA;AAAAA,MAC5C;AACA,aAAO8+B;AAAAA,IACT;AAAA,IAEAmrC,uBAAuBhqE,OAA6B;AAClD,UAAI,KAAKqwD,IAAG,EAAY,GAAG;AACzB,YAAIrwD,MAAM/oB,SAAS,cAAc;AAC/B,eAAKmlE,MAAMkf,WAAWiC,mBAAmBv9D,KAAK;AAAA,QAChD;AACA,YAAI,KAAKwpE,YAAYxpE,KAAK,GAAG;AAC3B,eAAKo8C,MAAMkf,WAAWsC,2BAA2B59D,KAAK;AAAA,QACxD;AAECA,cAA8B3F,WAAW;AAAA,MAC5C;AACA,UAAI,KAAKjjB,MAAK,EAAS,GAAG;AACxB4oB,cAAMmB,iBAAiB,KAAKugE,wBAAyB;AAAA,MACtD,WAAU,KAAK8H,YAAYxpE,KAAK,GAAG;AAClC,aAAKo8C,MAAMkf,WAAWoC,6BAA6B19D,KAAK;AAAA,MAC1D;AAEA,UAAI,KAAK5oB,MAAK,EAAM,KAAK,KAAKoyF,YAAYxpE,KAAK,GAAG;AAChD,aAAKo8C,MAAMkf,WAAWwC,oBAAoB99D,KAAK;AAAA,MACjD;AAEA,WAAKs9C,iBAAiBt9C,KAAK;AAC3B,aAAOA;AAAAA,IACT;AAAA,IAEAiqE,kBACE5wF,UACAgmB,MACW;AACX,YAAMv5B,QAAO,MAAMmkG,kBAAkB5wF,UAAUgmB,IAAI;AAEnD,UACEv5B,MAAKmR,SAAS,uBACdnR,MAAKq7B,kBACLr7B,MAAKw5B,MAAM9lB,QAAQ1T,MAAKq7B,eAAe3nB,OACvC;AACA,aAAK4iE,MAAMkf,WAAWyC,uBAAuBj4F,MAAKq7B,cAAc;AAAA,MAClE;AAEA,aAAOr7B;AAAAA,IACT;AAAA,IAEAokG,sBAAsBpkG,OAAmC;AACvD,YAAMokG,sBAAsBpkG,KAAI;AAChC,UAAIA,MAAKK,UAAUL,MAAKk+B,eAAe,SAAS;AAC9C,aAAKo4C,MACHkf,WAAWwB,+BACXh3F,MAAK09B,WAAW,CAAC,EAAEpqB,IAAII,KACzB;AAAA,MACF;AAAA,IACF;AAAA,IAEA2wF,0BAKErkG,OAA2Bi+D,WAAsB9sD,MAAuB;AACxE8sD,gBAAUpgC,QAAQo7D,kBAAkBj5F,KAAI,IACpC,KAAKg8F,8BACW,MACI,IACpB,IACA,KAAKxB,gBAAiB;AAE1Bx6F,MAAAA,MAAK09B,WAAWt2B,KAAK,KAAKk9F,sBAAsBrmC,WAAW9sD,IAAI,CAAC;AAAA,IAClE;AAAA,IAEAozF,uBAAuBvhE,UAA4B;AACjD,UAAI,MAAMuhE,uBAAuBvhE,QAAQ,EAAG,QAAO;AACnD,UAAI,KAAKkvD,aAAY,GAAS,GAAG;AAC/B,YAAI,CAAClvD,SAAU,QAAO;AACtB,cAAMnS,KAAK,KAAKm6D,kBAAmB;AACnC,eAAOn6D,OAAE,OAAiCA,OAAyB;AAAA,MACrE;AACA,aAAO,CAACmS,YAAY,KAAKkvD,eAAuB;AAAA,IAClD;AAAA,IAEAsS,iBACExkG,OACAgjC,UACA/E,OACA3qB,KACM;AACN,YAAMkxF,iBAAiBxkG,OAAMgjC,UAAU/E,OAAO3qB,GAAG;AACjD,UAAI0vB,UAAU;AACZ,YAAI,CAAC/E,SAAS,KAAK3sB,MAAK,EAAY,GAAG;AAErC;AAAA,QACF;AACCtR,QAAAA,MAAkCw9B,aACjCS,UAAU,SAASA,QAAQ;AAAA,MAC/B,OAAO;AACL,YAAIA,UAAU,UAAU,KAAK3sB,MAAa,EAAA,EAAG,MAAKi3D,WAAY;AAC7DvoE,QAAAA,MAA6Bk+B,aAC5BD,UAAU,UAAUA,UAAU,WAAWA,QAAQ;AAAA,MACrD;AAAA,IACF;AAAA,IAGAwmE,qBACExmC,WACAymC,kBACAC,oBAEAC,iBAEAjgB,aACmB;AACnB,YAAMkgB,aAAa5mC,UAAUviC;AAE7B,UAAIopE,oBAAoB;AACxB,UAAID,WAAW1zF,SAAS,cAAc;AACpC,YAAI0zF,WAAWp4F,SAAS,QAAQ;AAC9Bq4F,8BAAoB;AAAA,QACtB,WAAWD,WAAWp4F,SAAS,UAAU;AACvCq4F,8BAAoB;AAAA,QACtB;AAAA,MACF;AAEA,UAAI1nC,aAAY;AAChB,UAAI,KAAK80B,aAAY,EAAO,KAAK,CAAC,KAAKK,sBAAsB,IAAI,GAAG;AAClE,cAAMwS,WAAW,KAAKvK,gBAAgB,IAAI;AAC1C,YACEsK,sBAAsB,QACtB,CAAC/iB,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAC3C;AAEA8sD,oBAAUviC,WAAWqpE;AACrB9mC,oBAAU//B,aAAa4mE;AACvB7mC,oBAAUpgC,QAAQo3D,gBAAgB8P,QAAQ;AAAA,QAC5C,OAAO;AAEL9mC,oBAAUviC,WAAWmpE;AACrB5mC,oBAAU//B,aAAa;AACvB+/B,oBAAUpgC,QAAQ,KAAK28D,gBAAiB;AAAA,QAC1C;AAAA,MACF,OAAO;AACL,YACEsK,sBAAsB,QACtB/iB,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAC1C;AAEA8sD,oBAAUviC,WAAW,KAAK8+D,gBAAgB,IAAI;AAC9Cv8B,oBAAU//B,aAAa4mE;AAAAA,QACzB,OAAO;AACL,cAAIJ,kBAAkB;AAEpB,kBAAM,KAAKpuB,MAAMxF,OAAOjK,uBAAuB5I,WAAW;AAAA,cACxD6I,YAAY+9B,WAAWhlG;AAAAA,YACzB,CAAC;AAAA,UACH;AAEAo+D,oBAAUviC,WAAWmpE;AACrB5mC,oBAAU//B,aAAa;AAAA,QACzB;AAEA,YAAI,KAAKs0D,cAAa,EAAO,GAAG;AAC9Bv0B,oBAAUpgC,QAAQ,KAAK28D,gBAAiB;AAAA,QAC1C,OAAO;AACLp9B,UAAAA,aAAY;AACZa,oBAAUpgC,QAAQo3D,gBAAgBh3B,UAAUviC,QAAQ;AAAA,QACtD;AAAA,MACF;AAEA,YAAMspE,wBAAwB/L,kBAAkBh7B,SAAS;AAEzD,UAAI0mC,sBAAsBK,uBAAuB;AAC/C,aAAK1uB,MAAMkf,WAAWyB,qCAAqCh5B,SAAS;AAAA,MACtE;AAEA,UAAI0mC,sBAAsBK,uBAAuB;AAC/C,aAAKpI,kBACH3+B,UAAUpgC,MAAMpxB,MAChBwxD,UAAUpgC,MAAMvqB,IAAII,OACF,IACpB;AAAA,MACF;AAEA,UAAI0pD,cAAa,CAACunC,sBAAsB,CAACK,uBAAuB;AAC9D,aAAKC,kBACHhnC,UAAUpgC,MAAMpxB,MAChBwxD,UAAU3qD,IAAII,OACd,MACA,IACF;AAAA,MACF;AAEA,aAAO,KAAK4wF,sBAAsBrmC,WAAW,iBAAiB;AAAA,IAChE;AAAA,IAEAinC,mBAA8B;AAC5B,cAAQ,KAAKvmG,MAAMwS,MAAI;AAAA,QACrB,KAAA;AAEE,iBAAO,KAAKqpF,gBAA8B,IAAI;AAAA,QAChD;AACE,iBAAO,MAAM0K,iBAAkB;AAAA,MACnC;AAAA,IACF;AAAA,IAGAC,oBACEnlG,OACA60E,eACM;AAEN,YAAM54C,OAAOj8B,MAAKi8B;AAClB,UAAIA,SAAS,SAASA,SAAS,SAAS,KAAK3qB,MAAK,EAAM,GAAG;AACzDtR,QAAAA,MAAKi6B,iBAAiB,KAAK0gE,kCAAmC;AAAA,MAChE;AACA,YAAMwK,oBAAoBnlG,OAAM60E,aAAa;AAAA,IAC/C;AAAA,IAGAuwB,WACEroE,MACAd,MACM;AACN,YAAMmpE,WAAWroE,MAAMd,IAAI;AAC3B,UAAI,KAAK3qB,MAAK,EAAS,GAAG;AACxByrB,aAAK9B,GAAGI,iBAAiB,KAAKugE,wBAAyB;AACvD,aAAKpkB,iBAAiBz6C,KAAK9B,EAAE;AAAA,MAC/B;AAAA,IACF;AAAA,IAGAoqE,kCACErlG,OACAoP,MAC2B;AAC3B,UAAI,KAAKkC,MAAK,EAAS,GAAG;AACxB,cAAMmsF,wBAAwB,KAAK9+F,MAAMmqF;AACzC,aAAKnqF,MAAMmqF,qBAAqB;AAChC9oF,QAAAA,MAAK+6B,aAAa,KAAK6gE,wBAAyB;AAChD,aAAKj9F,MAAMmqF,qBAAqB2U;AAAAA,MAClC;AAEA,aAAO,MAAM4H,kCAAkCrlG,OAAMoP,IAAI;AAAA,IAC3D;AAAA,IAGAk2F,wBAAiC;AAC/B,aAAO,KAAKh0F,MAAc,EAAA,KAAK,MAAMg0F,sBAAuB;AAAA,IAC9D;AAAA,IAYAnE,iBACExrB,qBACA4vB,gBACc;AAAA,UAAAC;AACd,UAAI7mG,SAAQ;AAEZ,UAAI8mG;AAEJ,UACE,KAAK7f,UAAU,KAAK,MACnB,KAAKt0E,MAAoB,GAAA,KAAK,KAAKA,MAAW,EAAA,IAC/C;AACA3S,QAAAA,SAAQ,KAAKA,MAAM24D,MAAO;AAE1BmuC,QAAAA,OAAM,KAAKzS,SACT,MAAM,MAAMmO,iBAAiBxrB,qBAAqB4vB,cAAc,GAChE5mG,MACF;AAIA,YAAI,CAAC8mG,KAAI3mG,MAAO,QAAO2mG,KAAIzlG;AAK3B,cAAM;AAAA,UAAEgY,SAAAA;AAAAA,QAAS,IAAG,KAAKrZ;AACzB,cAAM+mG,iBAAiB1tF,SAAQA,SAAQ7L,SAAS,CAAC;AACjD,YAAIu5F,mBAAmBziB,OAAGpL,UAAU6tB,mBAAmBziB,OAAGlL,QAAQ;AAChE//D,UAAAA,SAAQkkD,IAAK;AAAA,QACf;AAAA,MACF;AAEA,WAAIspC,OAAAC,iBAAAD,KAAK1mG,SAAS,KAAKwS,MAAK,EAAM,GAAG;AAAA,YAAAq0F,OAAAC;AACnCjnG,QAAAA,SAAQA,UAAS,KAAKA,MAAM24D,MAAO;AAEnC,YAAIr9B;AAEJ,cAAM+gD,QAAQ,KAAKgY,SAAU6S,WAAuB;AAAA,cAAAC;AAClD7rE,2BAAiB,KAAK0gE,kCAAmC;AAEzD,gBAAMoL,mBAAkB,KAAK1F,iCAC3BpmE,gBACA,MAAM;AACJ,kBAAM8+B,SAAS,MAAMooC,iBACnBxrB,qBACA4vB,cACF;AAEA,iBAAKrwB,2BAA2Bnc,QAAQ9+B,cAAc;AAEtD,mBAAO8+B;AAAAA,UACT,CACF;AAIA,eAAA+sC,wBAAIC,iBAAgB5uC,UAAK,QAArB2uC,sBAAuBhyB,cAAe+xB,OAAO;AAKjD,gBAAMnF,OAAO,KAAKsF,8BAA8BD,gBAAe;AAE/D,cAAIrF,KAAKvvF,SAAS,0BAA2B00F,OAAO;AAEpDnF,eAAKzmE,iBAAiBA;AACtB,eAAKi7C,2BAA2BwrB,MAAMzmE,cAAc;AAEpD,iBAAO8rE;AAAAA,QACR,GAAEpnG,MAAK;AAER,YAAIonG,kBAIO;AAEX,YACE/qB,MAAMh7E,QACN,KAAKgmG,8BAA8BhrB,MAAMh7E,IAAI,EAAEmR,SAC7C,2BACF;AACA,cAAI,CAAC6pE,MAAMl8E,SAAS,CAACk8E,MAAMqY,SAAS;AAGlC,gBAAIrY,MAAMh7E,KAAK66B,OAAO;AAEpB,mBAAKy7C,MACHkf,WAAWkD,iDACXz+D,cACF;AAAA,YACF;AACA,mBAAO+gD,MAAMh7E;AAAAA,UACf;AAGA+lG,4BAAkB/qB,MAAMh7E;AAAAA,QAC1B;AAQA,aAAA2lG,QAAIF,iBAAAE,MAAK3lG,MAAM;AAEb,eAAKrB,QAAQ8mG,KAAItS;AACjB,iBAAOsS,KAAIzlG;AAAAA,QACb;AAEA,YAAI+lG,iBAAiB;AAEnB,eAAKpnG,QAAQq8E,MAAMmY;AACnB,iBAAO4S;AAAAA,QACT;AAEA,aAAAH,QAAIH,SAAAG,QAAAA,MAAKxS,OAAQ,OAAMqS,KAAI3mG;AAC3B,YAAIk8E,MAAMoY,OAAQ,OAAMpY,MAAMl8E;AAG9B,cAAM,KAAKw3E,MACTkf,WAAWiD,mCACXx+D,cACF;AAAA,MACF;AAEA,aAAO,MAAMknE,iBAAiBxrB,qBAAqB4vB,cAAc;AAAA,IACnE;AAAA,IAGAU,WACEjmG,OACsD;AACtD,UAAI,KAAKsR,MAAK,EAAS,GAAG;AAExB,cAAMynD,SAAS,KAAKi6B,SAA2B,MAAM;AACnD,gBAAMyK,wBAAwB,KAAK9+F,MAAMmqF;AACzC,eAAKnqF,MAAMmqF,qBAAqB;AAEhC,gBAAM2R,WAAW,KAAKxlB,UAA6B;AAEnD,WACEwlB,SAASp/D,gBAETr7B,MAAKk7B,SAAS,IACZ,KAAKk/D,qCAAsC;AAE/C,eAAKz7F,MAAMmqF,qBAAqB2U;AAEhC,cAAI,KAAK/K,qBAAsB,MAAKnqB,WAAY;AAChD,cAAI,CAAC,KAAKj3D,MAAK,EAAS,EAAG,MAAKi3D,WAAY;AAE5C,iBAAOkyB;AAAAA,QACT,CAAC;AAED,YAAI1hC,OAAOq6B,OAAQ,QAAO;AAG1B,YAAIr6B,OAAOj6D,MAAO,MAAKH,QAAQo6D,OAAOo6B;AAItCnzF,QAAAA,MAAK+6B,aAAag+B,OAAO/4D,KAAKq7B,iBAC1B,KAAK85C,WAAWpc,OAAO/4D,MAAM,gBAAgB,IAC7C;AAAA,MACN;AAEA,aAAO,MAAMimG,WAAWjmG,KAAI;AAAA,IAC9B;AAAA,IAEAkmG,iBAAiBvrE,QAAgC;AAC/C,aAAO,KAAKrpB,MAAc,EAAA,KAAK,MAAM40F,iBAAiBvrE,MAAM;AAAA,IAC9D;AAAA,IAEAwrE,2BACEnmG,OACA26B,QAGM;AACN,UACE,KAAKh8B,MAAMwpF,0BAA0B5xD,SACnC,KAAKmvD,kBAAkB1lF,MAAK0T,KAAK,CACnC,GACA;AACA1T,QAAAA,MAAK26B,SAASA;AAAAA,MAChB,OAAO;AACL,cAAMwrE,2BAA2BnmG,OAAM26B,MAAM;AAAA,MAC/C;AAAA,IACF;AAAA,IAEAinE,YACE5hG,OACAomG,iBACAC,iBACAC,oBAA6B,MACvB;AACN,UACED,mBACA,KAAK1nG,MAAMwpF,0BAA0B5xD,SACnC,KAAKmvD,kBAAkB1lF,MAAK0T,KAAK,CACnC,GACA;AACA;AAAA,MACF;AAGA,eAASxH,IAAI,GAAGA,IAAIlM,MAAK26B,OAAOxuB,QAAQD,KAAK;AAC3C,YAAI,KAAKw3F,YAAY1jG,MAAK26B,OAAOzuB,CAAC,CAAC,KAAKA,IAAI,GAAG;AAC7C,eAAKoqE,MAAMkf,WAAWuC,sBAAsB/3F,MAAK26B,OAAOzuB,CAAC,CAAC;AAAA,QAC5D;AAAA,MACF;AAEA,YAAM01F,YACJ5hG,OACAomG,iBACAC,iBACAC,iBACF;AAAA,IACF;AAAA,IAEAC,mCAAmCC,YAAmC;AACpE,aAAO,MAAMD,mCACXC,cACE,CAAC,KAAK7nG,MAAMupF,UAAU3xD,SACpB,KAAKivD,kBAAkB,KAAK7mF,MAAM+U,KAAK,CACzC,CACJ;AAAA,IACF;AAAA,IAEA+yF,gBACExnG,OACAsU,UACA0jE,SACc;AACd,UACEh4E,MAAKkS,SAAS,gBACdlS,MAAKwN,SAAS,WACd,KAAK9N,MAAMupF,UAAU3xD,SAAShjB,SAASjU,KAAK,GAC5C;AACA,aAAKmzB,KAAM;AAEX,cAAMzyB,QAAO,KAAKq1F,YAA8B9hF,QAAQ;AACxDvT,QAAAA,MAAKs3B,SAASr4B;AACde,QAAAA,MAAK+5B,YAAY,MAAM2sE,+BAAsC;AAC7DznG,QAAAA,QAAO,KAAKk2E,WAAWn1E,OAAM,gBAAgB;AAAA,MAC9C,WACCf,MAAKkS,SAAS,gBACdlS,MAAKwN,SAAS,WACd,KAAK6E,MAAK,EAAM,GAChB;AACA,cAAM3S,SAAQ,KAAKA,MAAM24D,MAAO;AAChC,cAAM0jB,QAAQ,KAAKgY,SACjB6S,WAAS,KAAKc,kCAAkCpzF,QAAQ,KAAKsyF,MAAO,GACpElnG,MACF;AAIA,YAAI,CAACq8E,MAAMl8E,SAAS,CAACk8E,MAAMqY,QAAS,QAAOrY,MAAMh7E;AAEjD,cAAM+4D,SAAS,KAAKi6B,SAClB,MAAM,MAAMyT,gBAAgBxnG,OAAMsU,UAAU0jE,OAAO,GACnDt4E,MACF;AAEA,YAAIo6D,OAAO/4D,QAAQ,CAAC+4D,OAAOj6D,MAAO,QAAOi6D,OAAO/4D;AAEhD,YAAIg7E,MAAMh7E,MAAM;AACd,eAAKrB,QAAQq8E,MAAMmY;AAEnB,iBAAOnY,MAAMh7E;AAAAA,QACf;AAEA,YAAI+4D,OAAO/4D,MAAM;AACf,eAAKrB,QAAQo6D,OAAOo6B;AACpB,iBAAOp6B,OAAO/4D;AAAAA,QAChB;AAEA,cAAMg7E,MAAMl8E,SAASi6D,OAAOj6D;AAAAA,MAC9B;AAEA,aAAO,MAAM2nG,gBAAgBxnG,OAAMsU,UAAU0jE,OAAO;AAAA,IACtD;AAAA,IAEAD,eACE/3E,OAEAsU,UACA0jE,SACA2vB,gBACc;AACd,UAAI,KAAKt1F,MAAoB,EAAA,KAAK,KAAKu1F,oBAAmB,GAAI;AAC5DD,uBAAe1vB,sBAAsB;AACrC,YAAID,SAAS;AACX2vB,yBAAexvB,OAAO;AACtB,iBAAOn4E;AAAAA,QACT;AACA,aAAKwzB,KAAM;AACX,cAAMzyB,QAAO,KAAKq1F,YAAsC9hF,QAAQ;AAChEvT,QAAAA,MAAKs3B,SAASr4B;AACde,QAAAA,MAAKg6B,gBACH,KAAKujE,gDAAiD;AACxD,aAAKj0F,OAAM,EAAU;AACrBtJ,QAAAA,MAAK+5B,YAAY,KAAK2sE,+BAAsC;AAC5D1mG,QAAAA,MAAKu0B,WAAW;AAChB,eAAO,KAAKgiD,qBAAqBv2E,OAAqB,IAAI;AAAA,MAC3D,WACC,CAACi3E,WACD,KAAK2iB,iBAAkB,MACtB,KAAKtoF,MAAW,EAAA,KAEf,KAAKA,MAAK,EAAa,IACzB;AACA,cAAMtR,QAAO,KAAKq1F,YAEhB9hF,QAAQ;AACVvT,QAAAA,MAAKs3B,SAASr4B;AAEd,cAAM85D,SAAS,KAAKi6B,SAAS,MAAM;AACjChzF,UAAAA,MAAKg6B,gBACH,KAAK2jE,6CAA8C;AACrD,eAAKr0F,OAAM,EAAU;AACrBtJ,UAAAA,MAAK+5B,YAAY,MAAM2sE,+BAAsC;AAC7D,cAAIE,eAAe1vB,qBAAqB;AACrCl3E,YAAAA,MAA0Cu0B,WAAW;AAAA,UACxD;AACA,iBAAO,KAAKgiD,qBACVv2E,OACA4mG,eAAe1vB,mBACjB;AAAA,QACF,CAAC;AAED,YAAIne,OAAO/4D,MAAM;AACf,cAAI+4D,OAAOj6D,MAAO,MAAKH,QAAQo6D,OAAOo6B;AACtC,iBAAOp6B,OAAO/4D;AAAAA,QAChB;AAAA,MACF;AAEA,aAAO,MAAMg3E,eACX/3E,OAEAsU,UACA0jE,SACA2vB,cACF;AAAA,IACF;AAAA,IAEAE,eAAe9mG,OAA6B;AAC1C,YAAM8mG,eAAe9mG,KAAI;AAEzB,UAAI+mG,QAAQ;AACZ,UAAI,KAAKnN,iBAAkB,KAAI,KAAKtoF,MAAW,EAAA,GAAG;AAChDy1F,gBAAQ,KAAK/T,SAAS,MACpB,KAAK2K,6CACP,CAAA,EAAE39F;AAAAA,MACJ;AACAA,MAAAA,MAAKg6B,gBAAgB+sE;AAAAA,IACvB;AAAA,IAEAJ,kCACEpzF,UAC8C;AAC9C,YAAMvT,QAAO,KAAKq1F,YAAuC9hF,QAAQ;AACjE,WAAK4xF,oBAAoBnlG,OAAM,KAAK;AACpC,UAAI,CAAC,KAAKimG,WAAWjmG,KAAI,EAAG;AAC5B,aAAO,MAAMgnG,qBACXhnG,OACaqS,QACC,IAChB;AAAA,IACF;AAAA,IAEAu6E,sBAAsB7gF,OAAoB;AACxC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UACEF,UAA2B,MAC3B0mB,SAAI,MACJ,KAAK9zB,MAAMoqF,gBACX;AACA,aAAKpqF,MAAMoqF,iBAAiB;AAC5B,aAAKpqF,MAAMsN,OAAO;AAClB,aAAKq+E,UAAW;AAChB;AAAA,MACF;AAEA,YAAMsC,sBAAsB7gF,KAAI;AAAA,IAClC;AAAA,IAEA+gF,mBAAmB/gF,OAAoB;AACrC,YAAM0mB,OAAO,KAAK3rB,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC;AACrD,UACEF,UAAI,OACJ0mB,cACA;AAEA,aAAK+5D,SAAuB,GAAA,CAAC;AAC7B;AAAA,MACF;AAEA,YAAMM,mBAAmB/gF,KAAI;AAAA,IAC/B;AAAA,IAEAk7F,cAAcpoG,OAAcw7B,SAA4B;AACtD,YAAM6sE,WAAW,MAAMD,cAAcpoG,OAAMw7B,OAAO;AAClD,UAAI,KAAK17B,MAAMoqF,gBAAgB;AAC7B,aAAKzS,MACHkf,WAAWsD,yBACX,KAAKn6F,MAAM6qF,aACb;AAAA,MACF;AACA,aAAO0d;AAAAA,IACT;AAAA,IAEAvb,mBAA+C;AAC7C,UAAI,KAAK/F,UAAU,cAAc,KAAK,KAAKuhB,gBAAe,GAAI;AAC5D,YAAI,KAAKxoG,MAAMoqF,gBAAgB;AAC7B,gBAAM,KAAKzS,MAAMkf,WAAWgC,mBAAmB,KAAK74F,MAAM4U,QAAQ;AAAA,QACpE;AACA,aAAK6zF,yBAA0B;AAC/B,cAAMC,cAAc,KAAKF,gBAAiB;AAC1C,YAAIE,aAAa;AACf,eAAK1oG,MAAMsN,OAAOo7F;AAClB,eAAK1oG,MAAMoqF,iBAAiB;AAAA,QAC9B;AACA;AAAA,MACF;AAEA,aAAO,MAAM4C,iBAAiB,KAAKhtF,MAAMoqF,iBAAiB,QAAQ,IAAI;AAAA,IACxE;AAAA,IAEAoe,kBAAkC;AAChC,YAAM;AAAA,QAAEl7F,KAAAA;AAAAA,MAAK,IAAG,KAAKtN;AACrB,UAAI2oG,4BAA4B;AAChC,aACE,CAAgC,IAAA,CAAA,EAAC/wE,SAE/B,KAAKzvB,MAAM8F,WAAWX,OAAMq7F,yBAAyB,CACvD,GACA;AACAA;AAAAA,MACF;AAEA,YAAMC,MAAM,KAAKzgG,MAAM8F,WAAW06F,4BAA4Br7F,IAAG;AACjE,YAAMu7F,MAAM,KAAK1gG,MAAM8F,WAAW06F,4BAA4Br7F,OAAM,CAAC;AAErE,UAAIs7F,QAAG,MAAwBC,YAAyB;AACtD,eAAOF,4BAA4B;AAAA,MACrC;AACA,UACE,KAAKxgG,MAAMsK,MACTk2F,4BAA4Br7F,MAC5Bq7F,4BAA4Br7F,OAAM,EACpC,MAAM,gBACN;AACA,eAAOq7F,4BAA4B;AAAA,MACrC;AACA,UAAIC,QAAG,MAAwBC,YAAyB;AACtD,eAAOF;AAAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEAF,2BAAiC;AAC/B,YAAMxzF,MAAM,KAAK9M,MAAMgT,QAAQ,MAAM,KAAKnb,MAAMsN,GAAG;AACnD,UAAI2H,QAAQ,IAAI;AACd,cAAM,KAAK0iE,MAAMxF,OAAOxD,qBAAqB,KAAK3uE,MAAM6qF,aAAa;AAAA,MACvE;AAAA,IACF;AAAA,IAIAie,yCACEn0F,KACA;AAAA,MACE4iF;AAAAA,MACAD;AAAAA,IAIF,GACM;AACN,WAAK3f,MAAMkf,WAAWQ,iCAAiC1iF,KAAK;AAAA,QAC1D2iF;AAAAA,QACAC;AAAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEAwR,sCACEp0F,KACAq0F,aACA;AACA,aAAO,KAAKrxB,MACV,CAACqxB,YAAYznE,eACTs1D,WAAWkB,0CACXiR,YAAYznE,iBAAiB,WAC3Bs1D,WAAWiB,yCACXjB,WAAWgB,yCACjBljF,KACAq0F,WACF;AAAA,IACF;AAAA,IAEAC,wCACEt0F,KACA+8D,SAIM;AACN,WAAKiG,MAAMkf,WAAWqB,gCAAgCvjF,KAAK+8D,OAAO;AAAA,IACpE;AAAA,IAEAw3B,mDACE7nG,OACAqwE,SAGM;AACN,WAAKiG,MACHkf,WAAWsB,2CACX92F,OACAqwE,OACF;AAAA,IACF;AAAA,IAEAy3B,qBAAqC;AACnC,YAAMv0F,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMw0F,YAAYA,MAAM,KAAKz2F,MAAc,EAAA,KAAK,KAAKA,OAAe;AACpE,cAAQ,KAAK3S,MAAMwS,MAAI;AAAA,QACrB,KAAA,KAAa;AACX,gBAAMqxB,WAAU,KAAK0wC,oBAAoB,KAAKv0E,MAAMkB,KAAK;AACzD,cAAIkoG,UAAS,GAAI;AACf,mBAAO;AAAA,cAAE52F,MAAM;AAAA,cAAUmC,KAAKkvB,SAAQlvB,IAAII;AAAAA,cAAO7T,OAAO2iC;AAAAA,YAAS;AAAA,UACnE;AACA,iBAAO;AAAA,YAAErxB,MAAM;AAAA,YAAWmC,KAAKC;AAAAA,UAAU;AAAA,QAC3C;AAAA,QACA,KAAA,KAAgB;AACd,gBAAMivB,WAAU,KAAKywC,mBAAmB,KAAKt0E,MAAMkB,KAAK;AACxD,cAAIkoG,UAAS,GAAI;AACf,mBAAO;AAAA,cAAE52F,MAAM;AAAA,cAAUmC,KAAKkvB,SAAQlvB,IAAII;AAAAA,cAAO7T,OAAO2iC;AAAAA,YAAS;AAAA,UACnE;AACA,iBAAO;AAAA,YAAErxB,MAAM;AAAA,YAAWmC,KAAKC;AAAAA,UAAU;AAAA,QAC3C;AAAA,QACA,KAAA;AAAA,QACA,KAAA,IAAgB;AACd,gBAAMivB,WAAU,KAAK4wC,oBAAoB,KAAK9hE,MAAc,EAAA,CAAC;AAC7D,cAAIy2F,UAAS,GAAI;AACf,mBAAO;AAAA,cACL52F,MAAM;AAAA,cACNmC,KAAKkvB,SAAQlvB,IAAII;AAAAA,cACjB7T,OAAO2iC;AAAAA,YACR;AAAA,UACH;AACA,iBAAO;AAAA,YAAErxB,MAAM;AAAA,YAAWmC,KAAKC;AAAAA,UAAU;AAAA,QAC3C;AAAA,QACA;AACE,iBAAO;AAAA,YAAEpC,MAAM;AAAA,YAAWmC,KAAKC;AAAAA,UAAU;AAAA,MAC7C;AAAA,IACF;AAAA,IAEAy0F,oBAGE;AACA,YAAM10F,MAAM,KAAK3U,MAAM4U;AACvB,YAAM0nB,KAAK,KAAKu/D,gBAAgB,IAAI;AACpC,YAAMhgE,OAAO,KAAK+vD,IAAG,EAAM,IACvB,KAAKud,uBACL;AAAA,QAAE32F,MAAM;AAAA,QAAiBmC;AAAAA,MAAK;AAClC,aAAO;AAAA,QAAE2nB;AAAAA,QAAIT;AAAAA,MAAM;AAAA,IACrB;AAAA,IAEAytE,kCACE30F,KACA0E,UACAkwF,cACM;AACN,YAAM;AAAA,QAAEhoE;AAAAA,MAAc,IAAGloB;AACzB,UAAIkoB,iBAAiB,MAAM;AACzB;AAAA,MACF;AACA,UAAIA,iBAAiBgoE,cAAc;AACjC,aAAKR,sCAAsCp0F,KAAK0E,QAAO;AAAA,MACzD;AAAA,IACF;AAAA,IAEAmwF,gBAAgB;AAAA,MACdjS;AAAAA,MACAh2D;AAAAA,IAIF,GAoBE;AACA,YAAMkoE,YAAY,oBAAIl7F,IAAK;AAC3B,YAAMizB,UAAU;AAAA,QAEdkoE,gBAAgB,CAAE;AAAA,QAElBC,eAAe,CAAE;AAAA,QAEjBC,eAAe,CAAE;AAAA,QAEjBC,kBAAkB,CAAA;AAAA,MACnB;AACD,UAAIpoE,oBAAoB;AACxB,aAAO,CAAC,KAAK9uB,MAAK,CAAU,GAAG;AAC7B,YAAI,KAAKi5E,IAAG,EAAY,GAAG;AACzBnqD,8BAAoB;AACpB;AAAA,QACF;AACA,cAAMqoE,aAAa,KAAKxzB,UAA6B;AACrD,cAAM;AAAA,UAAEh6C;AAAAA,UAAIT;AAAAA,QAAK,IAAI,KAAKwtE,kBAAmB;AAC7C,cAAM/R,aAAah7D,GAAGxuB;AACtB,YAAIwpF,eAAe,IAAI;AACrB;AAAA,QACF;AACA,YAAI,SAASx3F,KAAKw3F,UAAU,GAAG;AAC7B,eAAK3f,MAAMkf,WAAWmB,uBAAuB17D,IAAI;AAAA,YAC/Cg7D;AAAAA,YACAW,YAAYX,WAAW,CAAC,EAAE/8B,YAAW,IAAK+8B,WAAW7kF,MAAM,CAAC;AAAA,YAC5D8kF;AAAAA,UACF,CAAC;AAAA,QACH;AACA,YAAIkS,UAAU36F,IAAIwoF,UAAU,GAAG;AAC7B,eAAK3f,MAAMkf,WAAWW,yBAAyBl7D,IAAI;AAAA,YACjDg7D;AAAAA,YACAC;AAAAA,UACF,CAAC;AAAA,QACH;AACAkS,kBAAUztF,IAAIs7E,UAAU;AACxB,cAAMj+E,WAAU;AAAA,UAAEk+E;AAAAA,UAAUh2D;AAAAA,UAAc+1D;AAAAA,QAAY;AACtDwS,mBAAWxtE,KAAKA;AAChB,gBAAQT,KAAKrpB,MAAI;AAAA,UACf,KAAK,WAAW;AACd,iBAAK82F,kCACHztE,KAAKlnB,KACL0E,UACA,SACF;AACAywF,uBAAWjuE,OAAOA,KAAK36B;AACvBsgC,oBAAQkoE,eAAejhG,KACrB,KAAK+tE,WAAWszB,YAAY,mBAAmB,CACjD;AACA;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,iBAAKR,kCAAkCztE,KAAKlnB,KAAK0E,UAAS,QAAQ;AAClEywF,uBAAWjuE,OAAOA,KAAK36B;AACvBsgC,oBAAQmoE,cAAclhG,KACpB,KAAK+tE,WAAWszB,YAAY,kBAAkB,CAChD;AACA;AAAA,UACF;AAAA,UACA,KAAK,UAAU;AACb,iBAAKR,kCAAkCztE,KAAKlnB,KAAK0E,UAAS,QAAQ;AAClEywF,uBAAWjuE,OAAOA,KAAK36B;AACvBsgC,oBAAQooE,cAAcnhG,KACpB,KAAK+tE,WAAWszB,YAAY,kBAAkB,CAChD;AACA;AAAA,UACF;AAAA,UACA,KAAK,WAAW;AACd,kBAAM,KAAKf,sCAAsCltE,KAAKlnB,KAAK0E,QAAO;AAAA,UACpE;AAAA,UACA,KAAK,QAAQ;AACX,oBAAQkoB,cAAY;AAAA,cAClB,KAAK;AACH,qBAAKunE,yCACHjtE,KAAKlnB,KACL0E,QACF;AACA;AAAA,cACF,KAAK;AACH,qBAAK4vF,wCAAwCptE,KAAKlnB,KAAK0E,QAAO;AAC9D;AAAA,cACF;AACEmoB,wBAAQqoE,iBAAiBphG,KACvB,KAAK+tE,WAAWszB,YAAY,qBAAqB,CACnD;AAAA,YACJ;AAAA,UACF;AAAA,QACF;AAEA,YAAI,CAAC,KAAKn3F,MAAK,CAAU,GAAG;AAC1B,eAAKhI,OAAM,EAAS;AAAA,QACtB;AAAA,MACF;AACA,aAAO;AAAA,QAAE62B;AAAAA,QAASC;AAAAA,MAAmB;AAAA,IACvC;AAAA,IAEAsoE,sBACEC,oBACAH,kBACA;AAAA,MACEtS;AAAAA,IAGF,GACe;AACf,UAAIyS,mBAAmBx8F,WAAW,GAAG;AACnC,eAAOq8F;AAAAA,MACT,WAAWA,iBAAiBr8F,WAAW,GAAG;AACxC,eAAOw8F;AAAAA,MACR,WAAUH,iBAAiBr8F,SAASw8F,mBAAmBx8F,QAAQ;AAC9D,mBAAWwiB,UAAUg6E,oBAAoB;AACvC,eAAKd,mDAAmDl5E,QAAQ;AAAA,YAC9DunE;AAAAA,UACF,CAAC;AAAA,QACH;AACA,eAAOsS;AAAAA,MACT,OAAO;AACL,mBAAW75E,UAAU65E,kBAAkB;AACrC,eAAKX,mDAAmDl5E,QAAQ;AAAA,YAC9DunE;AAAAA,UACF,CAAC;AAAA,QACH;AACA,eAAOyS;AAAAA,MACT;AAAA,IACF;AAAA,IAEAC,0BAA0B;AAAA,MACxB1S;AAAAA,IAGF,GAAqB;AACnB,UAAI,CAAC,KAAK1D,iBAAoB,EAAG,QAAO;AAExC,UAAI,CAAC3Q,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AACvC,cAAM,KAAKmlE,MACTkf,WAAWe,wCACX,KAAK53F,MAAM4U,UACX;AAAA,UACE2iF;AAAAA,QACF,CACF;AAAA,MACF;AAEA,YAAM;AAAA,QAAEr2F,OAAAA;AAAAA,MAAO,IAAG,KAAKlB;AACvB,WAAK8zB,KAAM;AAEX,UACE5yB,WAAU,aACVA,WAAU,YACVA,WAAU,YACVA,WAAU,UACV;AACA,aAAKy2E,MAAMkf,WAAWa,yBAAyB,KAAK13F,MAAM4U,UAAU;AAAA,UAClE2iF;AAAAA,UACAI,iBAAiBz2F;AAAAA,QACnB,CAAC;AAAA,MACH;AAEA,aAAOA;AAAAA,IACT;AAAA,IAEAgpG,aAAa7oG,OAA8Bi7B,IAA0B;AACnE,YAAMi7D,WAAWj7D,GAAGxuB;AACpB,YAAMq8F,UAAU7tE,GAAG3nB,IAAII;AACvB,YAAMwsB,eAAe,KAAK0oE,0BAA0B;AAAA,QAAE1S;AAAAA,MAAS,CAAC;AAChE,WAAK5sF,OAAM,CAAU;AACrB,YAAM;AAAA,QAAE62B;AAAAA,QAASC;AAAAA,MAAkB,IAAI,KAAK+nE,gBAAgB;AAAA,QAC1DjS;AAAAA,QACAh2D;AAAAA,MACF,CAAC;AACDlgC,MAAAA,MAAKogC,oBAAoBA;AAEzB,cAAQF,cAAY;AAAA,QAClB,KAAK;AACHlgC,UAAAA,MAAKkgC,eAAe;AACpBlgC,UAAAA,MAAKmgC,UAAUA,QAAQkoE;AACvB,eAAK/+F,OAAM,CAAU;AACrB,iBAAO,KAAK6rE,WAAWn1E,OAAM,iBAAiB;AAAA,QAChD,KAAK;AACHA,UAAAA,MAAKkgC,eAAe;AACpBlgC,UAAAA,MAAKmgC,UAAUA,QAAQmoE;AACvB,eAAKh/F,OAAM,CAAU;AACrB,iBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,QAC/C,KAAK;AACHA,UAAAA,MAAKkgC,eAAe;AACpBlgC,UAAAA,MAAKmgC,UAAU,KAAKuoE,sBAClBvoE,QAAQooE,eACRpoE,QAAQqoE,kBACR;AAAA,YAAEtS;AAAAA,UAAS,CACb;AACA,eAAK5sF,OAAM,CAAU;AACrB,iBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,QAC/C,KAAK;AACHA,UAAAA,MAAKmgC,UAAUA,QAAQqoE;AACvB,eAAKl/F,OAAM,CAAU;AACrB,iBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,QAC/C,SAAS;AAEP,gBAAM+oG,QAAQA,MAAM;AAClB/oG,YAAAA,MAAKmgC,UAAU,CAAE;AACjB,iBAAK72B,OAAM,CAAU;AACrB,mBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,UAC9C;AACDA,UAAAA,MAAKkgC,eAAe;AAEpB,gBAAM8oE,WAAW7oE,QAAQkoE,eAAel8F;AACxC,gBAAM88F,UAAU9oE,QAAQmoE,cAAcn8F;AACtC,gBAAM+8F,UAAU/oE,QAAQooE,cAAcp8F;AACtC,gBAAMg9F,eAAehpE,QAAQqoE,iBAAiBr8F;AAE9C,cAAI,CAAC68F,YAAY,CAACC,WAAW,CAACC,WAAW,CAACC,cAAc;AACtD,mBAAOJ,MAAO;AAAA,UAChB,WAAW,CAACC,YAAY,CAACC,SAAS;AAChCjpG,YAAAA,MAAKmgC,UAAU,KAAKuoE,sBAClBvoE,QAAQooE,eACRpoE,QAAQqoE,kBACR;AAAA,cAAEtS;AAAAA,YAAS,CACb;AACA,iBAAK5sF,OAAM,CAAU;AACrB,mBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,UAC9C,WAAU,CAACipG,WAAW,CAACC,WAAWF,YAAYG,cAAc;AAC3D,uBAAWx6E,UAAUwR,QAAQqoE,kBAAkB;AAC7C,mBAAKf,yCAAyC94E,OAAOrb,IAAII,OAAO;AAAA,gBAC9DwiF;AAAAA,gBACAD,YAAYtnE,OAAOsM,GAAGxuB;AAAAA,cACxB,CAAC;AAAA,YACH;AACAzM,YAAAA,MAAKmgC,UAAUA,QAAQkoE;AACvB,iBAAK/+F,OAAM,CAAU;AACrB,mBAAO,KAAK6rE,WAAWn1E,OAAM,iBAAiB;AAAA,UAC/C,WAAU,CAACgpG,YAAY,CAACE,WAAWD,WAAWE,cAAc;AAC3D,uBAAWx6E,UAAUwR,QAAQqoE,kBAAkB;AAC7C,mBAAKZ,wCAAwCj5E,OAAOrb,IAAII,OAAO;AAAA,gBAC7DwiF;AAAAA,gBACAD,YAAYtnE,OAAOsM,GAAGxuB;AAAAA,cACxB,CAAC;AAAA,YACH;AACAzM,YAAAA,MAAKmgC,UAAUA,QAAQmoE;AACvB,iBAAKh/F,OAAM,CAAU;AACrB,mBAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,UAC/C,OAAO;AACL,iBAAKs2E,MAAMkf,WAAWY,8BAA8B0S,SAAS;AAAA,cAC3D5S;AAAAA,YACF,CAAC;AACD,mBAAO6S,MAAO;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAvI,yBACExgG,OACuB;AACvB,YAAMi7B,KAAK,KAAKu/D,gBAAiB;AACjCx6F,MAAAA,MAAKi7B,KAAKA;AACVj7B,MAAAA,MAAK65B,OAAO,KAAKgvE,aAAa,KAAK5zB,UAAW,GAAEh6C,EAAE;AAClD,aAAO,KAAKk6C,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEAopG,gCACEppG,OACqB;AACrB,UAAI,KAAK45F,oBAAoB;AAC3B,YAAI,KAAKtoF,MAAW,EAAA,KAAK,KAAKA,MAAkB,EAAA,GAAG;AACjDtR,UAAAA,MAAKg6B,gBACH,KAAKujE,gDAAiD;AAAA,QAC1D;AAAA,MACF;AAEA,aAAO,MAAM6L,gCAAgCppG,KAAI;AAAA,IACnD;AAAA,IAGA6mG,sBAA+B;AAC7B,YAAMp0E,OAAO,KAAKo4D,eAAgB;AAClC,UAAI,KAAK/jF,MAAM8F,WAAW6lB,IAAI,MAAC,IAAyB;AACtD,cAAM42E,YAAY,KAAKviG,MAAM8F,WAAW6lB,OAAO,CAAC;AAChD,eACE42E,cAAS,MAA2BA,cAAgC;AAAA,MAExE;AACA,aAAO;AAAA,IACT;AAAA,IAGA3L,eAAe;AACb,YAAM;AAAA,QAAEvsF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,aAAgB;AAClB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKohF,aAAc;AAAA,MACrB,WAAWl8E,SAAI,IAAY;AACzB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKqhF,aAAc;AAAA,MACrB;AAAA,IACF;AAAA,IAEAkQ,YAAY;AACV,YAAM;AAAA,QAAErsF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,aAAuB;AACzB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKugF,SAAgB,IAAA,CAAC;AACtB,eAAA;AAAA,MACF;AACA,aAAOr7E;AAAAA,IACT;AAAA,IAEA60F,8BAA8BhmG,OAAc;AAC1C,aAAOA,MAAKmR,SAAS,uBAAuBnR,MAAK05B,aAAa15B;AAAAA,IAChE;AAAA,EACD;AClzHH,QAAMspG,WAGF;AAAA,IACFx6F,WAAW;AAAA,IACXy6F,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNhtB,IAAI;AAAA,IACJC,IAAI;AAAA,IACJgtB,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNl0B,OAAO;AAAA,IACPm0B,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,SAAS;AAAA,IACTC,IAAI;AAAA,IACJC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,KAAK;AAAA,IACLC,SAAS;AAAA,IACTC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,SAAS;AAAA,IACTC,IAAI;AAAA,IACJC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,KAAK;AAAA,IACLC,SAAS;AAAA,IACTC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,UAAU;AAAA,IACVC,OAAO;AAAA,IACPC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,SAAS;AAAA,IACTC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPnN,OAAO;AAAA,IACPoN,OAAO;AAAA,IACPC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,IAAI;AAAA,IACJC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPlhC,MAAM;AAAA,IACNmhC,OAAO;AAAA,IACPC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,IAAI;AAAA,IACJC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,IAAI;AAAA,IACJC,OAAO;AAAA,IACPC,IAAI;AAAA,IACJC,IAAI;AAAA,IACJC,KAAK;AAAA,IACLC,KAAK;AAAA,IACLC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,OAAO;AAAA,IACPC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,MAAM;AAAA,IACNC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPC,QAAQ;AAAA,IACRC,OAAO;AAAA,EACC;AC5OV,QAAMC,YAAYroC,oBAAoB;AAAA,IACpCsoC,kBACE;AAAA,IACFC,0BAA0BA,CAAC;AAAA,MAAEC;AAAAA,UAC3B,+CAA+CA,cAAc;AAAA,IAC/DC,2BAA2B;AAAA,IAC3BC,8BACE;AAAA,IAEF3sC,iBAAiBA,CAAC;AAAA,MAChBlE;AAAAA,MACA8wC;AAAAA,IAIF,MACE,sBAAsB9wC,UAAU,sBAAsB8wC,UAAU,aAAa9wC,UAAU;AAAA,IACzF+wC,qBACE;AAAA,IACFC,wBAAwB;AAAA,IACxBC,8BACE;AAAA,EACJ,CAAC;AAID,WAASC,WAAWz0G,QAAsD;AACxE,WAAOA,SACHA,OAAOmM,SAAS,wBACdnM,OAAOmM,SAAS,uBAClB;AAAA,EACN;AAIA,WAASuoG,oBACP10G,QACQ;AACR,QAAIA,OAAOmM,SAAS,iBAAiB;AACnC,aAAOnM,OAAOyH;AAAAA,IAChB;AAEA,QAAIzH,OAAOmM,SAAS,qBAAqB;AACvC,aAAOnM,OAAO27B,UAAUl0B,OAAO,MAAMzH,OAAOyH,KAAKA;AAAAA,IACnD;AAEA,QAAIzH,OAAOmM,SAAS,uBAAuB;AACzC,aACEuoG,oBAAoB10G,OAAOA,MAAM,IACjC,MACA00G,oBAAoB10G,OAAO+pB,QAAQ;AAAA,IAEvC;AAIA,UAAM,IAAI5Y,MAAM,+BAA+BnR,OAAOmM,IAAI;AAAA,EAC5D;AAeA,MAAAs0F,OAAgBxoE,gBACd,MAAM08E,uBAAuB18E,WAA8C;AAAA,IAGzE28E,eAAqB;AACnB,UAAIroF,MAAM;AACV,UAAIE,aAAa,KAAK9yB,MAAMsN;AAC5B,iBAAS;AACP,YAAI,KAAKtN,MAAMsN,OAAO,KAAKE,QAAQ;AACjC,gBAAM,KAAKmqE,MACTyiC,UAAUQ,wBACV,KAAK56G,MAAM4U,QACb;AAAA,QACF;AAEA,cAAMsd,KAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAE/C,gBAAQ4kB,IAAE;AAAA,UACR,KAAA;AAAA,UACA,KAAA;AACE,gBAAI,KAAKlyB,MAAMsN,QAAQ,KAAKtN,MAAM+U,OAAO;AACvC,kBAAImd,aAA6B,KAAKlyB,MAAM0qF,oBAAoB;AAC9D,kBAAE,KAAK1qF,MAAMsN;AACb,qBAAKw/E,YAAW,GAAe;AAAA,cACjC,OAAO;AACL,sBAAMC,iBAAiB76D,EAAE;AAAA,cAC3B;AACA;AAAA,YACF;AACAU,mBAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAClD,iBAAKw/E,YAAwBl6D,KAAAA,GAAG;AAChC;AAAA,UAEF,KAAA;AACEA,mBAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAClDslB,mBAAO,KAAKsoF,cAAe;AAC3BpoF,yBAAa,KAAK9yB,MAAMsN;AACxB;AAAA,UAEF,KAAA;AAAA,UACA,KAAA;AAAA,UAUA;AACE,gBAAI07E,UAAU92D,EAAE,GAAG;AACjBU,qBAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAClDslB,qBAAO,KAAKuoF,eAAe,IAAI;AAC/BroF,2BAAa,KAAK9yB,MAAMsN;AAAAA,YAC1B,OAAO;AACL,gBAAE,KAAKtN,MAAMsN;AAAAA,YACf;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,IAEA6tG,eAAeC,eAAgC;AAC7C,YAAMlpF,KAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAC/C,UAAIslB;AACJ,QAAE,KAAK5yB,MAAMsN;AACb,UACE4kB,OAA+B,MAC/B,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG,UACpC;AACA,UAAE,KAAKtN,MAAMsN;AACbslB,cAAMwoF,gBAAgB,OAAO;AAAA,MAC/B,OAAO;AACLxoF,cAAMllB,OAAOC,aAAaukB,EAAE;AAAA,MAC9B;AACA,QAAE,KAAKlyB,MAAMuyB;AACb,WAAKvyB,MAAMsyB,YAAY,KAAKtyB,MAAMsN;AAElC,aAAOslB;AAAAA,IACT;AAAA,IAEAyoF,cAAcprB,OAAqB;AACjC,UAAIr9D,MAAM;AACV,UAAIE,aAAa,EAAE,KAAK9yB,MAAMsN;AAC9B,iBAAS;AACP,YAAI,KAAKtN,MAAMsN,OAAO,KAAKE,QAAQ;AACjC,gBAAM,KAAKmqE,MAAMxF,OAAOtD,oBAAoB,KAAK7uE,MAAM4U,QAAQ;AAAA,QACjE;AAEA,cAAMsd,KAAK,KAAK/pB,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG;AAC/C,YAAI4kB,OAAO+9D,MAAO;AAClB,YAAI/9D,WAA4B;AAC9BU,iBAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAClDslB,iBAAO,KAAKsoF,cAAe;AAC3BpoF,uBAAa,KAAK9yB,MAAMsN;AAAAA,QAC1B,WAAW07E,UAAU92D,EAAE,GAAG;AACxBU,iBAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,GAAG;AAClDslB,iBAAO,KAAKuoF,eAAe,KAAK;AAChCroF,uBAAa,KAAK9yB,MAAMsN;AAAAA,QAC1B,OAAO;AACL,YAAE,KAAKtN,MAAMsN;AAAAA,QACf;AAAA,MACF;AACAslB,aAAO,KAAKzqB,MAAMsK,MAAMqgB,YAAY,KAAK9yB,MAAMsN,KAAK;AACpD,WAAKw/E,YAAuBl6D,KAAAA,GAAG;AAAA,IACjC;AAAA,IAEAsoF,gBAAwB;AACtB,YAAMxnF,WAAW,EAAE,KAAK1zB,MAAMsN;AAC9B,UAAI,KAAKm/E,eAAe,KAAKzsF,MAAMsN,GAAG,MAAC,IAA2B;AAChE,UAAE,KAAKtN,MAAMsN;AAEb,YAAI6mB,QAAQ;AACZ,YAAI,KAAKs4D,eAAe,KAAKzsF,MAAMsN,GAAG,MAAC,KAA2B;AAChE6mB,kBAAQ;AACR,YAAE,KAAKn0B,MAAMsN;AAAAA,QACf;AAEA,cAAMguG,YAAY,KAAKrnF,QACrBE,OACUzgB,QACK,OACS,MAC1B;AACA,YACE4nG,cAAc,QACd,KAAK7uB,eAAe,KAAKzsF,MAAMsN,GAAG,UAClC;AACA,YAAE,KAAKtN,MAAMsN;AACb,iBAAOI,OAAO8lB,cAAc8nF,SAAS;AAAA,QACvC;AAAA,MACF,OAAO;AACL,YAAIC,QAAQ;AACZ,YAAIx/B,OAAO;AACX,eACEw/B,UAAU,MACV,KAAKv7G,MAAMsN,MAAM,KAAKE,UACtB,EAAEuuE,OAAO,KAAK0Q,eAAe,KAAKzsF,MAAMsN,GAAG,MAAC,KAC5C;AACA,YAAE,KAAKtN,MAAMsN;AAAAA,QACf;AAEA,YAAIyuE,MAAM;AACR,gBAAMy/B,OAAO,KAAKrzG,MAAMsK,MAAMihB,UAAU,KAAK1zB,MAAMsN,GAAG;AACtD,gBAAMmuG,SAASC,SAAcF,IAAI;AACjC,YAAE,KAAKx7G,MAAMsN;AAEb,cAAImuG,QAAQ;AACV,mBAAOA;AAAAA,UACT;AAAA,QACF;AAAA,MACF;AAGA,WAAKz7G,MAAMsN,MAAMomB;AACjB,aAAO;AAAA,IACT;AAAA,IASAioF,cAAoB;AAClB,UAAIzpF;AACJ,YAAMnd,QAAQ,KAAK/U,MAAMsN;AACzB,SAAG;AACD4kB,aAAK,KAAK/pB,MAAM8F,WAAW,EAAE,KAAKjO,MAAMsN,GAAG;AAAA,MAC5C,SAAQM,iBAAiBskB,EAAE,KAAKA,OAAqB;AACtD,WAAK46D,YAAW,KAAa,KAAK3kF,MAAMsK,MAAMsC,OAAO,KAAK/U,MAAMsN,GAAG,CAAC;AAAA,IACtE;AAAA,IAIAsuG,qBAAsC;AACpC,YAAMv6G,QAAO,KAAKi1E,UAA4B;AAC9C,UAAI,KAAK3jE,MAAK,GAAW,GAAG;AAC1BtR,QAAAA,MAAKyM,OAAO,KAAK9N,MAAMkB;AAAAA,MACxB,WAAUyiF,eAAe,KAAK3jF,MAAMwS,IAAI,GAAG;AAC1CnR,QAAAA,MAAKyM,OAAOm2E,eAAe,KAAKjkF,MAAMwS,IAAI;AAAA,MAC5C,OAAO;AACL,aAAKo3D,WAAY;AAAA,MACnB;AACA,WAAK91C,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAIAw6G,yBAAgE;AAC9D,YAAMjnG,WAAW,KAAK5U,MAAM4U;AAC5B,YAAM9G,OAAO,KAAK8tG,mBAAoB;AACtC,UAAI,CAAC,KAAKhwB,MAAY,EAAG,QAAO99E;AAEhC,YAAMzM,QAAO,KAAKq1F,YAAiC9hF,QAAQ;AAC3DvT,MAAAA,MAAK2gC,YAAYl0B;AACjBzM,MAAAA,MAAKyM,OAAO,KAAK8tG,mBAAoB;AACrC,aAAO,KAAKplC,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAKAy6G,sBAG0B;AACxB,YAAMlnG,WAAW,KAAK5U,MAAM4U;AAC5B,UAAIvT,QACF,KAAKw6G,uBAAwB;AAC/B,UAAIx6G,MAAKmR,SAAS,qBAAqB;AACrC,eAAOnR;AAAAA,MACT;AACA,aAAO,KAAKuqF,IAAG,EAAO,GAAG;AACvB,cAAMzzB,UAAU,KAAKu+B,YAAmC9hF,QAAQ;AAChEujD,gBAAQ9xD,SAAShF;AACjB82D,gBAAQ/nC,WAAW,KAAKwrF,mBAAoB;AAC5Cv6G,QAAAA,QAAO,KAAKm1E,WAAWre,SAAS,qBAAqB;AAAA,MACvD;AACA,aAAO92D;AAAAA,IACT;AAAA,IAIA06G,yBAGoB;AAClB,UAAI16G;AACJ,cAAQ,KAAKrB,MAAMwS,MAAI;AAAA,QACrB,KAAA;AACEnR,UAAAA,QAAO,KAAKi1E,UAAW;AACvB,eAAK0lC,WAAW13B,OAAGrL,KAAK;AACxB,eAAKnlD,KAAM;AACXzyB,UAAAA,QAAO,KAAK46G,4BAA4B56G,OAAMijF,OAAGpL,MAAM;AACvD,cAAI73E,MAAK05B,WAAWvoB,SAAS,sBAAsB;AACjD,iBAAKmlE,MAAMyiC,UAAUC,kBAAkBh5G,KAAI;AAAA,UAC7C;AACA,iBAAOA;AAAAA,QAET,KAAA;AAAA,QACA,KAAA;AACE,iBAAO,KAAKw7F,cAAe;AAAA,QAE7B;AACE,gBAAM,KAAKllB,MAAMyiC,UAAUO,qBAAqB,KAAK36G,MAAM4U,QAAQ;AAAA,MACvE;AAAA,IACF;AAAA,IAMAsnG,0BAAgD;AAC9C,YAAM76G,QAAO,KAAKq1F,YAAY,KAAK12F,MAAM84E,aAAa;AACtD,aAAO,KAAKF,aAAav3E,OAAM,sBAAsB,KAAKrB,MAAM4U,QAAQ;AAAA,IAC1E;AAAA,IAIAunG,oBAAoB96G,OAAkD;AACpE,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAK05B,aAAa,KAAKygE,gBAAiB;AACxC,WAAKwgB,WAAW13B,OAAGlL,MAAM;AACzB,WAAKp5E,MAAM0qF,qBAAqB;AAChC,WAAK//E,OAAM,CAAU;AAErB,aAAO,KAAK6rE,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAIA46G,4BACE56G,OACA+6G,iBAC0B;AAC1B,UAAI,KAAKzpG,MAAK,CAAU,GAAG;AACzBtR,QAAAA,MAAK05B,aAAa,KAAKmhF,wBAAyB;AAAA,MAClD,OAAO;AACL,cAAMnhF,aAAa,KAAKygE,gBAAiB;AAczCn6F,QAAAA,MAAK05B,aAAaA;AAAAA,MACpB;AACA,WAAKihF,WAAWI,eAAe;AAC/B,WAAKp8G,MAAM0qF,qBAAqB;AAChC,WAAK//E,OAAM,CAAU;AAErB,aAAO,KAAK6rE,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAIAg7G,oBAA2D;AACzD,YAAMh7G,QAAO,KAAKi1E,UAAkD;AACpE,UAAI,KAAK3jE,MAAK,CAAU,GAAG;AACzB,aAAKqpG,WAAW13B,OAAGrL,KAAK;AACxB,aAAKnlD,KAAM;AACX,aAAKnpB,OAAM,EAAY;AACvBtJ,QAAAA,MAAKm8B,WAAW,KAAKilE,wBAAyB;AAC9C,aAAKuZ,WAAW13B,OAAGpL,MAAM;AACzB,aAAKl5E,MAAM0qF,qBAAqB;AAChC,aAAK//E,OAAM,CAAU;AACrB,eAAO,KAAK6rE,WAAWn1E,OAAM,oBAAoB;AAAA,MACnD;AACAA,MAAAA,MAAKyM,OAAO,KAAK+tG,uBAAwB;AACzCx6G,MAAAA,MAAKH,QAAQ,KAAK0qF,IAAG,EAAM,IAAI,KAAKmwB,uBAAsB,IAAK;AAC/D,aAAO,KAAKvlC,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAIAi7G,yBACE1nG,UAC4C;AAC5C,YAAMvT,QAAO,KAAKq1F,YAChB9hF,QACF;AACA,UAAI,KAAKg3E,IAAG,GAAa,GAAG;AAC1B,eAAO,KAAKpV,WAAWn1E,OAAM,oBAAoB;AAAA,MACnD;AACAA,MAAAA,MAAKyM,OAAO,KAAKguG,oBAAqB;AACtC,aAAO,KAAKrR,gCACVppG,KACF;AAAA,IACF;AAAA,IAEAopG,gCACEppG,OACqB;AACrB,YAAMs9B,aAAwD,CAAE;AAChE,aAAO,CAAC,KAAKhsB,MAAc,EAAA,KAAK,CAAC,KAAKA,MAAK,GAAa,GAAG;AACzDgsB,mBAAWl2B,KAAK,KAAK4zG,mBAAmB;AAAA,MAC1C;AACAh7G,MAAAA,MAAKs9B,aAAaA;AAClBt9B,MAAAA,MAAK0gC,cAAc,KAAK6pD,MAAY;AACpC,WAAKjhF,OAAM,GAAa;AACxB,aAAO,KAAK6rE,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAIAk7G,yBACE3nG,UAC4C;AAC5C,YAAMvT,QAAO,KAAKq1F,YAChB9hF,QACF;AACA,UAAI,KAAKg3E,IAAG,GAAa,GAAG;AAC1B,eAAO,KAAKpV,WAAWn1E,OAAM,oBAAoB;AAAA,MACnD;AACAA,MAAAA,MAAKyM,OAAO,KAAKguG,oBAAqB;AACtC,WAAKnxG,OAAM,GAAa;AACxB,aAAO,KAAK6rE,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAKAm7G,kBAAkB5nG,UAAkD;AAClE,YAAMvT,QAAO,KAAKq1F,YAA0C9hF,QAAQ;AACpE,YAAMktB,WAAW,CAAE;AACnB,YAAMF,iBAAiB,KAAK06E,yBAAyB1nG,QAAQ;AAC7D,UAAIitB,iBAAiB;AAErB,UAAI,CAACD,eAAeG,aAAa;AAC/B06E,iBAAU,YAAS;AACjB,kBAAQ,KAAKz8G,MAAMwS,MAAI;AAAA,YACrB,KAAA;AACEoC,yBAAW,KAAK5U,MAAM4U;AACtB,mBAAKkf,KAAM;AACX,kBAAI,KAAK83D,IAAG,EAAS,GAAG;AACtB/pD,iCAAiB,KAAK06E,yBAAyB3nG,QAAQ;AACvD,sBAAM6nG;AAAAA,cACR;AACA36E,uBAASr5B,KAAK,KAAK+zG,kBAAkB5nG,QAAQ,CAAC;AAC9C;AAAA,YAEF,KAAA;AACEktB,uBAASr5B,KAAK,KAAK4rE,aAAa,KAAKr0E,MAAMkB,OAAO,SAAS,CAAC;AAC5D;AAAA,YAEF,KAAA,GAAgB;AACd,oBAAMG,QAAO,KAAKi1E,UAEf;AACH,mBAAK0lC,WAAW13B,OAAGrL,KAAK;AACxB,mBAAKnlD,KAAM;AACX,kBAAI,KAAKnhB,MAAK,EAAY,GAAG;AAC3BmvB,yBAASr5B,KAAK,KAAK0zG,oBAAoB96G,KAAI,CAAC;AAAA,cAC9C,OAAO;AACLygC,yBAASr5B,KACP,KAAKwzG,4BAA4B56G,OAAMijF,OAAGlL,MAAM,CAClD;AAAA,cACF;AAEA;AAAA,YACF;AAAA,YAEA;AACE,mBAAKxP,WAAY;AAAA,UACrB;AAAA,QACF;AAEA,YACEkxC,WAAWl5E,cAAc,KACzB,CAACk5E,WAAWj5E,cAAc,KAC1BA,mBAAmB,MACnB;AACA,eAAK81C,MAAMyiC,UAAUI,2BAA2B34E,cAAc;AAAA,QAChE,WAAW,CAACi5E,WAAWl5E,cAAc,KAAKk5E,WAAWj5E,cAAc,GAAG;AACpE,eAAK81C,MAAMyiC,UAAUE,0BAA0Bz4E,gBAAgB;AAAA,YAC7D04E,gBAAgBQ,oBAAoBn5E,eAAe9zB,IAAI;AAAA,UACzD,CAAC;AAAA,QACH,WAAW,CAACgtG,WAAWl5E,cAAc,KAAK,CAACk5E,WAAWj5E,cAAc,GAAG;AACrE,cACEk5E,oBAAoBl5E,eAAe/zB,IAAI,MACvCitG,oBAAoBn5E,eAAe9zB,IAAI,GACvC;AACA,iBAAK6pE,MAAMyiC,UAAUE,0BAA0Bz4E,gBAAgB;AAAA,cAC7D04E,gBAAgBQ,oBAAoBn5E,eAAe9zB,IAAI;AAAA,YACzD,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAEA,UAAIgtG,WAAWl5E,cAAc,GAAG;AAC9BvgC,QAAAA,MAAK4gC,kBAAkBL;AACvBvgC,QAAAA,MAAK6gC,kBAAkBL;AAAAA,MACzB,OAAO;AACLxgC,QAAAA,MAAKugC,iBAAiBA;AACtBvgC,QAAAA,MAAKwgC,iBAAiBA;AAAAA,MACxB;AACAxgC,MAAAA,MAAKygC,WAAWA;AAChB,UAAI,KAAKnvB,MAAK,EAAM,GAAG;AACrB,cAAM,KAAKglE,MACTyiC,UAAUS,8BACV,KAAK76G,MAAM4U,QACb;AAAA,MACF;AAEA,aAAOkmG,WAAWl5E,cAAc,IAC5B,KAAK40C,WAAWn1E,OAAM,aAAa,IACnC,KAAKm1E,WAAWn1E,OAAM,YAAY;AAAA,IACxC;AAAA,IAIAq7G,kBAAgD;AAC9C,YAAM9nG,WAAW,KAAK5U,MAAM4U;AAC5B,WAAKkf,KAAM;AACX,aAAO,KAAK0oF,kBAAkB5nG,QAAQ;AAAA,IACxC;AAAA,IAEAonG,WAAWW,YAAwB;AACjC,YAAM;AAAA,QAAEtjG,SAAAA;AAAAA,MAAS,IAAG,KAAKrZ;AACzBqZ,MAAAA,SAAQA,SAAQ7L,SAAS,CAAC,IAAImvG;AAAAA,IAChC;AAAA,IAMA9f,cAAc7lB,qBAA6D;AACzE,UAAI,KAAKrkE,MAAK,GAAe,GAAG;AAC9B,eAAO,KAAK+pG,gBAAiB;AAAA,MAC9B,WACC,KAAK/pG,MAAW,EAAA,KAChB,KAAKxK,MAAM8F,WAAW,KAAKjO,MAAMsN,GAAG,MAAC,IACrC;AAGA,aAAKigF,aAAY,GAAe;AAChC,eAAO,KAAKmvB,gBAAiB;AAAA,MAC/B,OAAO;AACL,eAAO,MAAM7f,cAAc7lB,mBAAmB;AAAA,MAChD;AAAA,IACF;AAAA,IAEA6V,YAAY;AACV,YAAMf,aAAa,KAAKA,WAAY;AACpC,UAAI,CAACA,WAAW9S,cAAe,OAAM6T,UAAW;AAAA,IAClD;AAAA,IAEAE,iBAAiB3/E,OAAoB;AACnC,YAAMiM,WAAU,KAAKyyE,WAAY;AAEjC,UAAIzyE,aAAYirE,OAAGlL,QAAQ;AACzB,aAAK6hC,aAAc;AACnB;AAAA,MACF;AAEA,UAAI5hG,aAAYirE,OAAGpL,UAAU7/D,aAAYirE,OAAGnL,QAAQ;AAClD,YAAI1rE,kBAAkBL,KAAI,GAAG;AAC3B,eAAKuuG,YAAa;AAClB;AAAA,QACF;AAEA,YAAIvuG,cAAgC;AAClC,YAAE,KAAKpN,MAAMsN;AACb,eAAKw/E,YAAW,GAAa;AAC7B;AAAA,QACF;AAEA,aACG1/E,UAAgC,MAAIA,UAAI,OACzCiM,aAAYirE,OAAGpL,QACf;AACA,eAAKmiC,cAAcjuG,KAAI;AACvB;AAAA,QACF;AAAA,MACF;AAEA,UACEA,UAA2B,MAC3B,KAAKpN,MAAM0qF,sBACX,KAAKviF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,MAAC,IACzC;AACA,UAAE,KAAKtN,MAAMsN;AACb,aAAKw/E,YAAW,GAAe;AAC/B;AAAA,MACF;AAEA,YAAMC,iBAAiB3/E,KAAI;AAAA,IAC7B;AAAA,IAEAysE,cAAcyT,UAA2B;AACvC,YAAM;AAAA,QAAEj0E,SAAAA;AAAAA,QAAS7G;AAAAA,MAAM,IAAG,KAAKxS;AAC/B,UAAIwS,SAAI,MAAiB86E,kBAA6B;AAGpDj0E,QAAAA,SAAQ+B,OAAO,IAAI,GAAGkpE,OAAGnL,MAAM;AAC/B,aAAKn5E,MAAM0qF,qBAAqB;AAAA,MAClC,WAAWl4E,SAAI,KAAqB;AAElC6G,QAAAA,SAAQ5Q,KAAK67E,OAAGpL,MAAM;AAAA,MACxB,WAAW1mE,SAAI,KAAmB;AAChC,cAAMogB,MAAMvZ,SAAQA,SAAQ7L,SAAS,CAAC;AACtC,YAAKolB,QAAQ0xD,OAAGpL,UAAUoU,aAAqB,MAAK16D,QAAQ0xD,OAAGnL,QAAQ;AACrE9/D,UAAAA,SAAQkkD,IAAK;AACb,eAAKv9D,MAAM0qF,qBACTrxE,SAAQA,SAAQ7L,SAAS,CAAC,MAAM82E,OAAGlL;AAAAA,QACvC,OAAO;AACL,eAAK4iC,WAAW13B,OAAGlL,MAAM;AACzB,eAAKp5E,MAAM0qF,qBAAqB;AAAA,QAClC;AAAA,MACF,OAAO;AACL,aAAK1qF,MAAM0qF,qBAAqBpH,2BAA2B9wE,IAAI;AAAA,MACjE;AAAA,IACF;AAAA,EACD;AAAA,EC5nBH,MAAMoqG,wBAAwBj4B,MAAM;AAAA,IAAAzwE,eAAA2kB,MAAA;AAAA,YAAA,GAAAA,IAAA;AAAA,WAClCgkF,UAAmC,oBAAInmD,IAAK;AAAA,IAAA;AAAA,EAC9C;AAAA,EAKe,MAAMomD,+BAA+Bh4B,aAA8B;AAAA,IAAA5wE,eAAA2kB,MAAA;AAAA,YAAA,GAAAA,IAAA;AAAA,WAChFkkF,eAA8B,CAAE;AAAA,IAAA;AAAA,IAEhCj3B,YAAY7oD,OAAmC;AAC7C,WAAK8/E,aAAat0G,KAAK,oBAAI8F,IAAG,CAAE;AAEhC,aAAO,IAAIquG,gBAAgB3/E,KAAK;AAAA,IAClC;AAAA,IAEA49B,MAAM59B,OAAwB;AAC5B,UAAIA,eAA+B;AACjC,aAAK8/E,aAAat0G,KAAK,oBAAI8F,IAAG,CAAE;AAAA,MAClC;AAEA,YAAMssD,MAAM59B,KAAK;AAAA,IACnB;AAAA,IAEAqhC,OAAO;AACL,YAAMrhC,QAAQ,MAAMqhC,KAAM;AAE1B,UAAIrhC,eAA+B;AACjC,aAAK8/E,aAAax/C,IAAK;AAAA,MACzB;AAEA,aAAOtgC;AAAAA,IACT;AAAA,IAEA+/E,UAAUlvG,MAAcmvG,aAAuB;AAC7C,YAAMlpF,MAAM,KAAKgpF,aAAavvG;AAC9B,UAAI,KAAKuvG,aAAahpF,MAAM,CAAC,EAAEjlB,IAAIhB,IAAI,GAAG;AACxC,eAAO;AAAA,MACT;AACA,UAAI,CAACmvG,eAAelpF,MAAM,GAAG;AAC3B,iBAASxmB,IAAI,GAAGA,IAAIwmB,MAAM,GAAGxmB,KAAK;AAChC,cAAI,KAAKwvG,aAAaxvG,CAAC,EAAEuB,IAAIhB,IAAI,EAAG,QAAO;AAAA,QAC7C;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEAi4E,YAAYj4E,MAAck4E,aAA0BrxE,KAAe;AACjE,UAAIqxE,oBAA0C;AAC5C,YAAI,KAAKg3B,UAAUlvG,MAAM,IAAI,GAAG;AAC9B,eAAKy1D,OAAOoU,MAAMxF,OAAOlD,kBAAkBt6D,KAAK;AAAA,YAC9CyvD,gBAAgBt2D;AAAAA,UAClB,CAAC;AAAA,QACH;AACA,aAAKivG,aAAa,KAAKA,aAAavvG,SAAS,CAAC,EAAEwO,IAAIlO,IAAI;AACxD;AAAA,MACF;AAEA,YAAMqyD,SAAQ,KAAK+kB,aAAc;AACjC,UAAI1yE,OAAO2tD,OAAM08C,QAAQ5sG,IAAInC,IAAI,KAAK;AAEtC,UAAIk4E,oBAA+C;AACjD,aAAKE,mBAAmB/lB,QAAOryD,IAAI;AACnCqyD,QAAAA,OAAM08C,QAAQxvG,IAAIS,MAAM0E,OAAI,EAAgC;AAC5D;AAAA,MACF;AAEA,YAAMuzE,YAAYj4E,MAAMk4E,aAAarxE,GAAG;AAExC,UAAIqxE,iBAAqC;AACvC,YAAI,EAAEA,cAAoC,IAAG;AAE3C,eAAKC,0BAA0B9lB,QAAOryD,MAAMk4E,aAAarxE,GAAG;AAC5D,eAAKuxE,mBAAmB/lB,QAAOryD,IAAI;AAAA,QACrC;AACA0E,eAAOA,OAAuB;AAAA,MAChC;AACA,UAAIwzE,mBAAwC;AAC1CxzE,eAAOA,OAAuB;AAAA,MAChC;AACA,UAAIwzE,mBAA8C;AAChDxzE,eAAOA,OAA4B;AAAA,MACrC;AACA,UAAIwzE,mBAAsC;AACxCxzE,eAAOA,OAAyB;AAAA,MAClC;AACA,UAAIA,KAAM2tD,CAAAA,OAAM08C,QAAQxvG,IAAIS,MAAM0E,IAAI;AAAA,IACxC;AAAA,IAEA4zE,oBACEjmB,QACAryD,MACAk4E,aACS;AACT,YAAMxzE,OAAO2tD,OAAM08C,QAAQ5sG,IAAInC,IAAI;AACnC,WAAK0E,OAAuB,KAAI,GAAG;AACjC,YAAIwzE,mBAAwC;AAG1C,gBAAMk3B,UAAU,CAAC,EAAEl3B;AACnB,gBAAMm3B,YAAY3qG,OAAI,KAA4B;AAClD,iBAAO0qG,YAAYC;AAAAA,QACrB;AACA,eAAO;AAAA,MACT;AACA,UACEn3B,sBACCxzE,OAAI,KAAyB,GAC9B;AACA,YAAI2tD,OAAMykB,MAAM30E,IAAInC,IAAI,IAAC,GAAqB;AAE5C,iBAAO,CAAC,EAAEk4E,cAAW;AAAA,QACvB,OAAO;AAEL,iBAAO;AAAA,QACT;AAAA,MACF;AACA,UAAIA,oBAAwCxzE,OAAI,KAAuB,GAAG;AACxE,eAAO;AAAA,MACT;AAEA,aAAO,MAAM4zE,oBAAoBjmB,QAAOryD,MAAMk4E,WAAW;AAAA,IAC3D;AAAA,IAEAK,iBAAiB/pD,IAAkB;AACjC,YAAM;AAAA,QAAExuB;AAAAA,MAAM,IAAGwuB;AAEjB,UAAI,KAAK0gF,UAAUlvG,IAAI,EAAG;AAE1B,YAAMimB,MAAM,KAAKgxD,WAAWv3E;AAC5B,eAASD,IAAIwmB,MAAM,GAAGxmB,KAAK,GAAGA,KAAK;AACjC,cAAM4yD,SAAQ,KAAK4kB,WAAWx3E,CAAC;AAC/B,cAAMiF,OAAO2tD,OAAM08C,QAAQ5sG,IAAInC,IAAI;AACnC,aACG0E,OAAI,KAAuB,MAC3BA,OAAI,MAAoC,GACzC;AACA;AAAA,QACF;AAAA,MACF;AAEA,YAAM6zE,iBAAiB/pD,EAAE;AAAA,IAC3B;AAAA,EACF;AClIA,QAAM8gF,gCAAiC/7G,CAAAA,UAAqB;AAC1D,WAAOA,MAAKmR,SAAS,4BACjB4qG,8BAA8B/7G,MAAK05B,UAAU,IAC7C15B;AAAAA,EACL;AAAA,EAQc,MAAeg8G,mBAAmB5mB,UAAU;AAAA,IAmDzDpf,aAAah2E,OAAYi2E,QAAiB,OAAmC;AAAA,UAAAwrB,aAAAwa;AAC3E,UAAInoC,gBAAgBzhE;AACpB,UAAIrS,MAAKmR,SAAS,8BAAyBswF,cAAIzhG,MAAKm3D,UAAK,QAAVsqC,YAAY3tB,eAAe;AACxEA,wBAAgBioC,8BAA8B/7G,KAAI;AAClD,YAAIi2E,OAAO;AAKT,cAAInC,cAAc3iE,SAAS,cAAc;AACvC,iBAAKqjF,gBAAgBvD,iCACnBngB,OAAOtI,gCACPxoE,KACF;AAAA,UACF,WACE8zE,cAAc3iE,SAAS,sBACvB,CAAC,KAAKmP,2BAA2BwzD,aAAa,GAC9C;AAIA,iBAAKwC,MAAMxF,OAAOtI,gCAAgCxoE,KAAI;AAAA,UACxD;AAAA,QACF,OAAO;AACL,eAAKs2E,MAAMxF,OAAOtI,gCAAgCxoE,KAAI;AAAA,QACxD;AAAA,MACF;AAEA,cAAQA,MAAKmR,MAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QAEF,KAAK;AACFnR,UAAAA,MAAcmR,OAAO;AACtB,mBACMjF,IAAI,GAAGC,SAASnM,MAAKg8B,WAAW7vB,QAAQ+vG,OAAO/vG,SAAS,GAC5DD,IAAIC,QACJD,KACA;AAAA,gBAAAiwG;AACA,kBAAM1mC,OAAOz1E,MAAKg8B,WAAW9vB,CAAC;AAC9B,kBAAMmqE,SAASnqE,MAAMgwG;AACrB,iBAAK9lC,iCAAiCX,MAAMY,QAAQJ,KAAK;AAEzD,gBACEI,UACCZ,KAActkE,SAAS,kBAAagrG,eACrCn8G,MAAKm3D,kBAALglD,aAAYxa,kBACZ;AACA,mBAAKrrB,MAAMxF,OAAO5F,mBAAmBlrE,MAAKm3D,MAAMwqC,gBAAgB;AAAA,YAClE;AAAA,UACF;AACA;AAAA,QAEF,KAAK,kBAAkB;AACrB,gBAAM;AAAA,YAAEliG,KAAAA;AAAAA,YAAKI,OAAAA;AAAAA,UAAO,IAAGG;AACvB,cAAI,KAAK4gB,cAAcnhB,IAAG,GAAG;AAC3B,iBAAKy2E,WAAWC,eACd,KAAK3B,iBAAiB/0E,IAAG,GACzBA,KAAI6T,IAAII,KACV;AAAA,UACF;AACA,eAAKsiE,aAAan2E,QAAOo2E,KAAK;AAC9B;AAAA,QACF;AAAA,QAEA,KAAK,iBAAiB;AACpB,gBAAM,IAAI9/D,MACR,8HAEF;AAAA,QACF;AAAA,QAEA,KAAK;AACFnW,UAAAA,MAAcmR,OAAO;AACtB,eAAKuwF,iBACH1hG,MAAKk5B,WAAQ+iF,eACbj8G,MAAKm3D,UAAL8kD,OAAAA,SAAAA,aAAYta,kBACZ1rB,KACF;AACA;AAAA,QAEF,KAAK;AACH,cAAIj2E,MAAKm5B,aAAa,KAAK;AACzB,iBAAKm9C,MAAMxF,OAAO3H,uBAAuBnpE,MAAKu5B,KAAKjmB,IAAIM,GAAG;AAAA,UAC5D;AAEC5T,UAAAA,MAAcmR,OAAO;AACtB,iBAAOnR,MAAKm5B;AACZ,eAAK68C,aAAah2E,MAAKu5B,MAAM08C,KAAK;AAClC;AAAA,QAEF,KAAK;AAEH,eAAKD,aAAalC,eAAemC,KAAK;AACtC;AAAA,MAKJ;AAAA,IACF;AAAA,IAEAG,iCACEX,MACAY,QACAJ,OACA;AACA,UAAIR,KAAKtkE,SAAS,gBAAgB;AAChC,aAAKmlE,MACHb,KAAKx5C,SAAS,SAASw5C,KAAKx5C,SAAS,QACjC60C,OAAOpG,qBACPoG,OAAOnG,kBACX8K,KAAKh2E,GACP;AAAA,MACF,WAAWg2E,KAAKtkE,SAAS,iBAAiB;AACvCskE,aAActkE,OAAO;AACtB,cAAMirG,MAAM3mC,KAAKt5C;AACjB,aAAKkgF,sBAAsBD,KAAwB,KAAK;AACxD,aAAKpmC,aAAaomC,KAAKnmC,KAAK;AAE5B,YAAI,CAACI,QAAQ;AACX,eAAKC,MAAMxF,OAAO5F,mBAAmBuK,IAAI;AAAA,QAC3C;AAAA,MACF,OAAO;AACL,aAAKO,aAAaP,MAAMQ,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,IAIAyrB,iBACEoB,UACAnB,kBACA1rB,OACM;AACN,YAAMriE,MAAMkvF,SAAS32F,SAAS;AAE9B,eAASD,IAAI,GAAGA,KAAK0H,KAAK1H,KAAK;AAC7B,cAAMowG,MAAMxZ,SAAS52F,CAAC;AACtB,YAAI,CAACowG,IAAK;AAEV,aAAKC,qBAAqBzZ,UAAU52F,GAAG+pE,KAAK;AAE5C,YAAIqmC,IAAInrG,SAAS,eAAe;AAC9B,cAAIjF,IAAI0H,KAAK;AACX,iBAAK0iE,MAAMxF,OAAO5F,mBAAmBoxC,GAAG;AAAA,UACzC,WAAU3a,kBAAkB;AAC3B,iBAAKrrB,MAAMxF,OAAO5F,mBAAmBy2B,gBAAgB;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA4a,qBACEzZ,UACAxjG,QACA22E,OACM;AACN,YAAMj2E,QAAO8iG,SAASxjG,MAAK;AAC3B,UAAIU,MAAKmR,SAAS,iBAAiB;AAChCnR,QAAAA,MAAgCmR,OAAO;AACxC,cAAMirG,MAAMp8G,MAAKm8B;AACjB,aAAKkgF,sBAAsBD,KAAwB,IAAI;AACvD,aAAKpmC,aAAaomC,KAAKnmC,KAAK;AAAA,MAC9B,OAAO;AACL,aAAKD,aAAah2E,OAAMi2E,KAAK;AAAA,MAC/B;AAAA,IACF;AAAA,IAEAF,aAAa/1E,OAAYo9D,YAA8B;AACrD,cAAQp9D,MAAKmR,MAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QAET,KAAK,oBAAoB;AACvB,gBAAM+qG,OAAOl8G,MAAKg8B,WAAW7vB,SAAS;AACtC,iBAAOnM,MAAKg8B,WAAWwlE,MAAM,CAAC/rB,MAAMvpE,MAAM;AACxC,mBACEupE,KAAKtkE,SAAS,mBACbjF,MAAMgwG,QAAQzmC,KAAKtkE,SAAS,oBAC7B,KAAK4kE,aAAaN,IAAI;AAAA,UAE1B,CAAC;AAAA,QACH;AAAA,QAEA,KAAK;AACH,iBAAO,KAAKM,aAAa/1E,MAAKH,KAAK;AAAA,QAErC,KAAK;AACH,iBAAO,KAAKk2E,aAAa/1E,MAAKm8B,QAAQ;AAAA,QAExC,KAAK;AACH,iBAAOn8B,MAAKk5B,SAASsoE,MACnBgb,aAAWA,YAAY,QAAQ,KAAKzmC,aAAaymC,OAAO,CAC1D;AAAA,QAEF,KAAK;AACH,iBAAOx8G,MAAKm5B,aAAa;AAAA,QAE3B,KAAK;AACH,iBAAO,KAAK48C,aAAa/1E,MAAK05B,UAAU;AAAA,QAE1C,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,CAAC0jC;AAAAA,QAEV;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAAA,IAIA2lC,iBACED,UAIAE,qBAG0C;AAC1C,aAAOF;AAAAA,IACT;AAAA,IAEA2Z,qBACE3Z,UAGAE,qBACM;AACN,WAAKD,iBAAiBD,UAAUE,mBAAmB;AAEnD,iBAAWtC,QAAQoC,UAAU;AAC3B,aAAIpC,QAAAA,OAAAA,SAAAA,KAAMvvF,UAAS,mBAAmB;AACpC,eAAKsrG,qBAAqB/b,KAAKxnE,QAAQ;AAAA,QACzC;AAAA,MACF;AAAA,IACF;AAAA,IAIAwjF,YAEE/mC,qBACe;AACf,YAAM31E,QAAO,KAAKi1E,UAA0B;AAC5C,WAAKxiD,KAAM;AACXzyB,MAAAA,MAAKm8B,WAAW,KAAKilE,wBACnBzrB,qBACAtjE,MACF;AACA,aAAO,KAAK8iE,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAIA28G,mBAA4C;AAC1C,YAAM38G,QAAO,KAAKi1E,UAAwB;AAC1C,WAAKxiD,KAAM;AACXzyB,MAAAA,MAAKm8B,WAAW,KAAK+oE,iBAAkB;AACvC,aAAO,KAAK/vB,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAGAklG,mBAAwC;AAEtC,cAAQ,KAAKvmG,MAAMwS,MAAI;AAAA,QACrB,KAAA,GAAkB;AAChB,gBAAMnR,QAAO,KAAKi1E,UAAyB;AAC3C,eAAKxiD,KAAM;AAEXzyB,UAAAA,MAAKk5B,WAAW,KAAK0jF,iBAGnBC,GAAAA,IAAAA,CACF;AACA,iBAAO,KAAK1nC,WAAWn1E,OAAM,cAAc;AAAA,QAC7C;AAAA,QAEA,KAAA;AACE,iBAAO,KAAK88G,gBAAe,GAAY,IAAI;AAAA,MAC/C;AAGA,aAAO,KAAKtiB,gBAAiB;AAAA,IAC/B;AAAA,IAGAoiB,iBAEEzZ,OACA4Z,eACAnhF,OACsC;AACtC,YAAMohF,aAAaphF,QAAyC;AAE5D,YAAMqhF,OAA6C,CAAE;AACrD,UAAI7d,QAAQ;AACZ,aAAO,CAAC,KAAK7U,IAAI4Y,KAAK,GAAG;AACvB,YAAI/D,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAAM,EAAS;AAAA,QACtB;AACA,YAAI0zG,cAAc,KAAK1rG,MAAK,EAAS,GAAG;AACtC2rG,eAAK71G,KAAK,IAAI;AAAA,QACf,WAAU,KAAKmjF,IAAI4Y,KAAK,GAAG;AAC1B;AAAA,QACD,WAAU,KAAK7xF,MAAK,EAAY,GAAG;AAClC,cAAIjK,OAAgB,KAAKs1G,iBAAkB;AAC3C,cACoC,KAAK/2B,UAAU,MAAM,KACvDhqD,QAAK,GACL;AACAv0B,mBAAO,KAAK68F,uBAAuB78F,IAAI;AAAA,UACzC;AACA41G,eAAK71G,KAAKC,IAAI;AACd,cAAI,CAAC,KAAK61G,oBAAoBH,aAAa,GAAG;AAC5C,iBAAKzzG,OAAO65F,KAAK;AACjB;AAAA,UACF;AAAA,QACF,OAAO;AACL,gBAAM7nE,cAAa,CAAE;AACrB,cAAIM,WAAkD;AACpD,gBAAI,KAAKtqB,MAAK,EAAM,KAAK,KAAKs0E,UAAU,YAAY,GAAG;AACrD,mBAAKtP,MACHxF,OAAO3D,+BACP,KAAKxuE,MAAM4U,QACb;AAAA,YACF;AAEA,mBAAO,KAAKjC,MAAK,EAAM,GAAG;AACxBgqB,cAAAA,YAAWl0B,KAAK,KAAK+1G,gBAAgB;AAAA,YACvC;AAAA,UACF;AACAF,eAAK71G,KAAK,KAAKg2G,oBAAoBxhF,OAAON,WAAU,CAAC;AAAA,QACvD;AAAA,MACF;AACA,aAAO2hF;AAAAA,IACT;AAAA,IAGAI,yBAEE5nC,MACa;AACb,WAAKhjD,KAAM;AAEXgjD,WAAKt5C,WAAW,KAAKq+D,gBAAiB;AACtC,WAAK0iB,oBAAmB,GAA0B;AAClD,aAAO,KAAK/nC,WAAWM,MAAM,aAAa;AAAA,IAC5C;AAAA,IAGA6nC,uBAAqE;AACnE,YAAM;AAAA,QAAEnsG;AAAAA,QAAMoC;AAAAA,MAAU,IAAG,KAAK5U;AAChC,UAAIwS,aAAsB;AACxB,eAAO,KAAKksG,yBAAyB,KAAKpoC,UAAS,CAAE;AAAA,MACvD;AAEA,YAAMQ,OAAO,KAAKR,UAA+B;AACjD,UAAI9jE,cAAyB;AAC3B,aAAKm7E,aAAa,wBAAwB/4E,QAAQ;AAClD,aAAK2iE,WAAWC,eAAe,KAAKx3E,MAAMkB,OAAO0T,QAAQ;AACzDkiE,aAAKh2E,MAAM,KAAK40E,iBAAkB;AAAA,MACpC,OAAO;AACL,aAAKkpC,kBAAkB9nC,IAAI;AAAA,MAC7B;AACAA,WAAK11C,SAAS;AACd,aAAO,KAAKkkE,kBACVxuB,MACAliE,UACA,OACA,OACA,MACA,KACF;AAAA,IACF;AAAA,IAGA6pG,oBAEExhF,OACAN,aAC+B;AAC/B,YAAM/B,OAAO,KAAK4qE,kBAAmB;AACrC,UACoC,KAAKve,UAAU,MAAM,KACvDhqD,QAAK,GACL;AACA,aAAKsoE,uBAAuB3qE,IAAI;AAAA,MAClC;AACA,YAAM+iF,MAAM,KAAKnY,kBAAkB5qE,KAAKjmB,IAAII,OAAO6lB,IAAI;AACvD,UAAI+B,YAAWnvB,QAAQ;AACrBotB,aAAK+B,aAAaA;AAAAA,MACpB;AACA,aAAOghF;AAAAA,IACT;AAAA,IAGApY,uBAAuBhqE,OAAyB;AAC9C,aAAOA;AAAAA,IACT;AAAA,IAIAiqE,kBAEE5wF,UACAgmB,MACS;AACThmB,kBAAQ,OAARA,WAAAA,WAAa,KAAK5U,MAAM4U;AACxBgmB,aAAOA,QAAAA,OAAAA,OAAQ,KAAK2rE,iBAAkB;AACtC,UAAI,CAAC,KAAK3a,MAAS,EAAG,QAAOhxD;AAE7B,YAAMv5B,QAAO,KAAKq1F,YAA+B9hF,QAAQ;AACzDvT,MAAAA,MAAKu5B,OAAOA;AACZv5B,MAAAA,MAAKw5B,QAAQ,KAAK4nE,wBAAyB;AAC3C,aAAO,KAAKjsB,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IA8BA41E,YACEzkE,MAEA0kE,2BAEAC,UACsC;AACtC,cAAQ3kE,MAAI;AAAA,QACV,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,MACX;AACA,aAAO;AAAA,IACT;AAAA,IAGAmP,2BAA2BoZ,YAA2B;AACpD,aAAOA,WAAWvoB,SAAS;AAAA,IAC7B;AAAA,IA0BAqsG,UACE9jF,YAMAuuC,UACA6N,eACA2nC,eAAoC,OACpCnX,oBAA6B,OAC7BoX,2BAAoC,OAC9B;AAAA,UAAAC;AACN,YAAMxsG,OAAOuoB,WAAWvoB;AAKxB,UAAI,KAAKqM,eAAekc,UAAU,EAAG;AAErC,YAAMpZ,6BACJ,KAAKA,2BAA2BoZ,UAAU;AAE5C,UAAIpZ,8BAA8BnP,SAAS,oBAAoB;AAC7D,YAAImP,4BAA4B;AAC9B,eAAKgsE,aAAa,0BAA0B5yD,WAAWpmB,IAAII,KAAK;AAChE,cAAIu0D,SAAS92D,SAAS,wBAAwB;AAC5C,iBAAKmlE,MAAMxF,OAAO3I,4BAA4BzuC,YAAY;AAAA,cACxDuuC;AAAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAI6N,iBAAmC;AACrC,eAAKQ,MAAMxF,OAAOpI,+BAA+BhvC,UAAU;AAAA,QAC7D;AACA;AAAA,MACF;AAEA,UAAIvoB,SAAS,cAAc;AACzB,aAAKysG,gBAAgBlkF,YAAYo8C,UAASwwB,iBAAiB;AAE3D,cAAM;AAAA,UAAE75F;AAAAA,QAAM,IAAGitB;AAEjB,YAAI+jF,cAAc;AAChB,cAAIA,aAAahwG,IAAIhB,IAAI,GAAG;AAC1B,iBAAK6pE,MAAMxF,OAAOrG,WAAW/wC,UAAU;AAAA,UACzC,OAAO;AACL+jF,yBAAa9iG,IAAIlO,IAAI;AAAA,UACvB;AAAA,QACF;AAEA;AAAA,MACF;AAEA,YAAMoxG,WAAW,KAAKjoC,YACpBzkE,MACA,EAAEusG,6BAAwBC,oBAAIjkF,WAAWy9B,UAAXwmD,QAAAA,kBAAkB7pC,kBAC9C7L,SAAS92D,SAAS,wBACpB2kE,QACF;AAEA,UAAI+nC,aAAa,KAAM;AACvB,UAAIA,aAAa,OAAO;AACtB,cAAMC,kBACJhoC,aAAiC,KAC7BhF,OAAO9I,aACP8I,OAAO5I;AAEb,aAAKoO,MAAMwnC,iBAAiBpkF,YAAY;AAAA,UAAEuuC;AAAAA,QAAS,CAAC;AACpD;AAAA,MACF;AAEA,UAAIxoE,MAAaoe;AACjB,UAAI,OAAOggG,aAAa,UAAU;AAChCp+G,QAAAA,OAAMo+G;AACNhgG,oCAA4B1M,SAAS;AAAA,MACvC,OAAO;AACL,SAAC1R,MAAKoe,yBAAyB,IAAIggG;AAAAA,MACrC;AAEA,YAAME,eACJ5sG,SAAS,kBAAkBA,SAAS,kBAC/B;AAAA,QAAEA;AAAAA,MAAM,IACT82D;AAGN,YAAM50C,MAAMqG,WAAWj6B,IAAG;AAC1B,UAAI+V,MAAMC,QAAQ4d,GAAG,GAAG;AACtB,mBAAW2tB,SAAS3tB,KAAK;AACvB,cAAI2tB,OAAO;AACT,iBAAKw8D,UACHx8D,OACA+8D,cACAjoC,UACA2nC,cACAnX,mBACAzoF,yBACF;AAAA,UACF;AAAA,QACF;AAAA,MACD,WAAUwV,KAAK;AACd,aAAKmqF,UACHnqF,KACA0qF,cACAjoC,UACA2nC,cACAnX,mBACAzoF,yBACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA+/F,gBACEtiC,IACAqJ,aACA2hB,oBAA6B,OAC7B;AACA,UACE,KAAK3nG,MAAMoO,WACVu5F,oBACG34F,yBAAyB2tE,GAAG7uE,MAAM,KAAKc,QAAQ,IAC/CG,6BAA6B4tE,GAAG7uE,IAAI,IACxC;AACA,YAAIk4E,oBAAuC;AACzC,eAAKrO,MAAMxF,OAAO5C,qBAAqBoN,IAAI;AAAA,YAAEnN,eAAemN,GAAG7uE;AAAAA,UAAK,CAAC;AAAA,QACvE,OAAO;AACL,eAAK6pE,MAAMxF,OAAO1C,4BAA4BkN,IAAI;AAAA,YAChDjN,aAAaiN,GAAG7uE;AAAAA,UAClB,CAAC;AAAA,QACH;AAAA,MACF;AAEA,UAAIk4E,sBAAoDrJ,GAAG7uE,SAAS,OAAO;AACzE,aAAK6pE,MAAMxF,OAAO/H,qBAAqBuS,EAAE;AAAA,MAC3C;AAEA,UAAI,EAAEqJ,cAAmC,KAAG;AAC1C,aAAKq5B,0BAA0B1iC,IAAIqJ,WAAW;AAAA,MAChD;AAAA,IACF;AAAA,IAEAq5B,0BAA0B5kF,aAAwB08C,UAAsB;AACtE,WAAKhX,MAAM4lB,YAAYtrD,YAAW3sB,MAAMqpE,UAAS18C,YAAW9lB,IAAII,KAAK;AAAA,IACvE;AAAA,IAEA2oG,sBAAsBr8G,OAAYi+G,cAA6B;AAC7D,cAAQj+G,MAAKmR,MAAI;AAAA,QACf,KAAK;AACH,eAAKkrG,sBAAsBr8G,MAAK05B,YAAYukF,YAAY;AACxD;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AACH,cAAIA,aAAc;AAAA,QAEpB;AACE,eAAK3nC,MAAMxF,OAAOlI,8BAA8B5oE,KAAI;AAAA,MACxD;AAAA,IACF;AAAA,IAEAk9G,oBACE/Z,OACS;AACT,UAAI,CAAC,KAAK7xF,MAAK,EAAS,GAAG;AACzB,eAAO;AAAA,MACT;AAEA,WAAKglE,MACH,KAAK0U,kBAAiB,MAAOmY,QACzBryB,OAAO5F,oBACP4F,OAAO/K,kBACX,KAAKpnE,MAAM4U,QACb;AAEA,aAAO;AAAA,IACT;AAAA,EACF;AC3uBA,WAAS2qG,QAAWC,GAAiB;AACnC,QAAIA,KAAK,MAAM;AACb,YAAM,IAAIhoG,MAAM,cAAcgoG,CAAC,SAAS;AAAA,IAC1C;AACA,WAAOA;AAAAA,EACT;AAEA,WAASv8D,OAAOu8D,GAAkB;AAChC,QAAI,CAACA,GAAG;AACN,YAAM,IAAIhoG,MAAM,aAAa;AAAA,IAC/B;AAAA,EACF;AAgBA,QAAMioG,WAAW1tC,2BAA2B;AAAA,IAC1C2tC,iCAAiCA,CAAC;AAAA,MAAEC;AAAAA,UAClC,WAAWA,UAAU;AAAA,IACvBC,gCAAgCA,CAAC;AAAA,MAC/BC;AAAAA,UAIA,aAAaA,YAAY;AAAA,IAC3BC,0BACE;AAAA,IACF1uC,oCACE;AAAA,IACFC,kCAAkC;AAAA,IAClC0uC,uBAAuB;AAAA,IACvBC,wBAAwB;AAAA,IACxB1uC,oEACE;AAAA,IACF2uC,8BACE;AAAA,IACFC,iBAAiBA,CAAC;AAAA,MAAE5iF;AAAAA,UAClB,+BAA+BA,IAAI;AAAA,IACrC6iF,iCACE;AAAA,IACFC,kCACE;AAAA,IACFC,gCAGEA,CAAC;AAAA,MAAEC;AAAAA,IAAyC,MAC1C;AAAA,IACJC,mBAAmBA,CAAC;AAAA,MAAED;AAAAA,UACpB,wBAAwBA,QAAQ;AAAA,IAGlCE,yBAAyBA,CAAC;AAAA,MAAEp4G,OAAAA;AAAAA,UAC1B,IAAIA,MAAK;AAAA,IACXq4G,oBAAoB;AAAA,IACpBC,qBAAqB;AAAA,IACrBC,mCACE;AAAA,IACFC,0BAA0B;AAAA,IAC1BvoB,+BACE;AAAA,IACFwoB,uBAAuBA,CAAC;AAAA,MACtBC;AAAAA,UAIA,IAAIA,UAAU,CAAC,CAAC,mCAAmCA,UAAU,CAAC,CAAC;AAAA,IACjEC,2BACE;AAAA,IACFC,gCAAgCA,CAAC;AAAA,MAC/BV;AAAAA,UAIA,4DAA4DA,QAAQ;AAAA,IACtEW,0BACE;AAAA,IACFC,2BACE;AAAA,IACFC,yBACE;AAAA,IACFC,uCACE;AAAA,IACFC,2BAA2BA,CAAC;AAAA,MAAEj5G,OAAAA;AAAAA,UAC5B,IAAIA,MAAK;AAAA,IACXk5G,6BAA6BA,CAAC;AAAA,MAAEhB;AAAAA,UAC9B,IAAIA,QAAQ;AAAA,IACdiB,gCAAgCA,CAAC;AAAA,MAAEjB;AAAAA,UACjC,IAAIA,QAAQ;AAAA,IACdkB,yCAAyCA,CAAC;AAAA,MACxClB;AAAAA,UAIA,IAAIA,QAAQ;AAAA,IACdmB,uBAAuBA,CAAC;AAAA,MACtBC;AAAAA,UAIA,IAAIA,iBAAiB,CAAC,CAAC,4BAA4BA,iBAAiB,CAAC,CAAC;AAAA,IACxEC,mDACE;AAAA,IAEFC,yBACE;AAAA,IACFC,sBACE;AAAA,IACFC,mCACE;AAAA,IACFC,0CACE;AAAA,IACFC,4BACE;AAAA,IACFC,uBACE;AAAA,IACFnpB,mBACE;AAAA,IACFopB,2BACE;AAAA,IACFC,gCAAgCA,CAAC;AAAA,MAC/B7B;AAAAA,UAIA,4DAA4DA,QAAQ;AAAA,IACtE8B,4BACE;AAAA,IACFC,wBACE;AAAA,IACFC,uBACE;AAAA,IACF/wC,wCACE;AAAA,IACFC,oCACE;AAAA,IACFC,iCACE;AAAA,IACF8wC,yCAAyCA,CAAC;AAAA,MACxCC;AAAAA,IAGD,MACC,yBAAyBA,iBAAiB,kDAAkDA,iBAAiB;AAAA,IAC/GC,+BACE;AAAA,IACFC,wBACE;AAAA,IACFC,2BACE;AAAA,IACFC,wCACE;AAAA,IACFC,iCACE;AAAA,IACFC,iCACE;AAAA,IACFC,6BACE;AAAA,IACFC,oBACE;AAAA,IACFC,0BAA0B;AAAA,IAC1BC,+BAA+B;AAAA,IAC/BC,+BACE;AAAA,IACFC,kCACE;AAAA,IACFC,mCAAmCA,CAAC;AAAA,MAAE7wG;AAAAA,IAAwB,MAC5D,yFAAyFA,IAAI;AAAA,EACjG,CAAC;AAMD,WAAS8wG,oBAAoBpiH,QAAgD;AAC3E,YAAQA,QAAK;AAAA,MACX,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAOwS;AAAAA,IACX;AAAA,EACF;AAEA,WAAS6vG,mBAAmBjD,UAA+C;AACzE,WACEA,aAAa,aAAaA,aAAa,YAAYA,aAAa;AAAA,EAEpE;AAEA,WAASkD,wBACPlD,UACmC;AACnC,WAAOA,aAAa,QAAQA,aAAa;AAAA,EAC3C;AA0BA,MAAAmD,cAAgBnlF,gBACd,MAAMolF,8BAA8BplF,WAA6B;AAAA,IAAApqB,eAAA2kB,MAAA;AAAA,YAAA,GAAAA,IAAA;AAAA,WAsa/D8qF,wBAAwB,KAAKC,iBAAiBlsD,KAAK,MAAM;AAAA,QACvDmsD,kBAAkB,CAAC,MAAM,KAAK;AAAA,QAC9BC,qBAAqB,CACnB,SACA,UACA,WACA,aACA,YACA,WACA,YACA,UAAU;AAAA,QAEZC,eAAetE,SAAS8B;AAAAA,MAC1B,CAAC;AAAC,WAEFyC,uBAAuB,KAAKJ,iBAAiBlsD,KAAK,MAAM;AAAA,QACtDmsD,kBAAkB,CAAC,OAAO;AAAA,QAE1BC,qBAAqB,CAAC,MAAM,KAAK;AAAA,QACjCC,eAAetE,SAAS+B;AAAAA,MAC1B,CAAC;AAAC,WAEFyC,6BAA6B,KAAKL,iBAAiBlsD,KAAK,MAAM;AAAA,QAC5DmsD,kBAAkB,CAAC,MAAM,OAAO,OAAO;AAAA,QACvCC,qBAAqB,CACnB,UACA,WACA,aACA,YACA,WACA,YACA,UAAU;AAAA,QAEZC,eAAetE,SAAS8B;AAAAA,MAC1B,CAAC;AAAA,IAAC;AAAA,IAvcF9rB,kBAAgE;AAC9D,aAAOqnB;AAAAA,IACT;AAAA,IAEAoH,iBAA0B;AAGxB,aAAOhhC,kBAAkB,KAAKljF,MAAMwS,IAAI;AAAA,IAC1C;AAAA,IAEA2xG,2BAA2B;AACzB,aACE,KAAKxxG,MAAK,CAAY,KACtB,KAAKA,OAAe,KACpB,KAAKA,MAAa,EAAA,KAClB,KAAKA,MAAiB,EAAA,KACtB,KAAKA,MAAK,GAAe,KACzB,KAAKuiF,sBAAuB;AAAA,IAEhC;AAAA,IAEAkvB,4CAA4C;AAC1C,WAAKtwF,KAAM;AACX,UAAI,KAAKkgE,yBAAyB;AAChC,eAAO;AAAA,MACT;AACA,aAAO,KAAKmwB,yBAA0B;AAAA,IACxC;AAAA,IAEAE,+BAA+B;AAI7B,UAAI,KAAK1xG,MAAK,GAAW,GAAG;AAC1B,aAAKmhB,KAAM;AACX,eAAO,KAAKqwF,yBAA0B;AAAA,MACxC;AACA,aAAO,KAAKC,0CAA2C;AAAA,IACzD;AAAA,IAGAE,gBACET,kBACAU,+BACsB;AACtB,UACE,CAACrhC,kBAAkB,KAAKljF,MAAMwS,IAAI,KAClC,KAAKxS,MAAMwS,SAAI,MACf,KAAKxS,MAAMwS,SAAI,IACf;AACA,eAAOkB;AAAAA,MACT;AAEA,YAAM4sG,WAAW,KAAKtgH,MAAMkB;AAC5B,UAAI2iH,iBAAiBjsF,SAAS0oF,QAAQ,GAAG;AACvC,YAAIiE,iCAAiC,KAAKC,2BAA2B;AACnE,iBAAO9wG;AAAAA,QACT;AACA,YAAI,KAAK+wG,WAAW,KAAKJ,6BAA6B3sD,KAAK,IAAI,CAAC,GAAG;AACjE,iBAAO4oD;AAAAA,QACT;AAAA,MACF;AACA,aAAO5sG;AAAAA,IACT;AAAA,IAOAkwG,iBACE;AAAA,MACEC;AAAAA,MACAC;AAAAA,MACAS;AAAAA,MACAR,gBAAgBtE,SAAS6B;AAAAA,IAM1B,GACDoD,UACM;AACN,YAAMC,eAAeA,CACnBhwG,KACA2rG,UACAsE,QACAC,UACG;AACH,YAAIvE,aAAasE,UAAUF,SAASG,KAAK,GAAG;AAC1C,eAAKltC,MAAM8nC,SAASgC,uBAAuB9sG,KAAK;AAAA,YAC9C+sG,kBAAkB,CAACkD,QAAQC,KAAK;AAAA,UAClC,CAAC;AAAA,QACH;AAAA,MACD;AACD,YAAMC,eAAeA,CACnBnwG,KACA2rG,UACAyE,MACAC,SACG;AACH,YACGN,SAASK,IAAI,KAAKzE,aAAa0E,QAC/BN,SAASM,IAAI,KAAK1E,aAAayE,MAChC;AACA,eAAKptC,MAAM8nC,SAASoB,uBAAuBlsG,KAAK;AAAA,YAC9CmsG,WAAW,CAACiE,MAAMC,IAAI;AAAA,UACxB,CAAC;AAAA,QACH;AAAA,MACD;AAED,iBAAS;AACP,cAAM;AAAA,UAAEpwG;AAAAA,QAAU,IAAG,KAAK5U;AAC1B,cAAMsgH,WAA0C,KAAKgE,gBACnDT,iBAAiB3pF,OAAO4pF,8BAAAA,sBAAuB,CAAE,CAAA,GACjDS,6BACF;AAEA,YAAI,CAACjE,SAAU;AAEf,YAAIiD,mBAAmBjD,QAAQ,GAAG;AAChC,cAAIoE,SAASjlF,eAAe;AAC1B,iBAAKk4C,MAAM8nC,SAASY,gCAAgCzrG,UAAU;AAAA,cAC5D0rG;AAAAA,YACF,CAAC;AAAA,UACH,OAAO;AACLqE,yBAAa/vG,UAAU0rG,UAAUA,UAAU,UAAU;AACrDqE,yBAAa/vG,UAAU0rG,UAAUA,UAAU,QAAQ;AACnDqE,yBAAa/vG,UAAU0rG,UAAUA,UAAU,UAAU;AAErDoE,qBAASjlF,gBAAgB6gF;AAAAA,UAC3B;AAAA,QACF,WAAWkD,wBAAwBlD,QAAQ,GAAG;AAC5C,cAAIoE,SAASpE,QAAQ,GAAG;AACtB,iBAAK3oC,MAAM8nC,SAASc,mBAAmB3rG,UAAU;AAAA,cAAE0rG;AAAAA,YAAS,CAAC;AAAA,UAC/D;AACAoE,mBAASpE,QAAQ,IAAI;AAErBqE,uBAAa/vG,UAAU0rG,UAAU,MAAM,KAAK;AAAA,QAC9C,OAAO;AACL,cAAI9vG,eAAAC,KAAci0G,UAAUpE,QAAQ,GAAG;AACrC,iBAAK3oC,MAAM8nC,SAASc,mBAAmB3rG,UAAU;AAAA,cAAE0rG;AAAAA,YAAS,CAAC;AAAA,UAC/D,OAAO;AACLqE,yBAAa/vG,UAAU0rG,UAAU,UAAU,UAAU;AACrDqE,yBAAa/vG,UAAU0rG,UAAU,UAAU,UAAU;AACrDqE,yBAAa/vG,UAAU0rG,UAAU,YAAY,UAAU;AACvDqE,yBAAa/vG,UAAU0rG,UAAU,YAAY,UAAU;AAEvDwE,yBAAalwG,UAAU0rG,UAAU,WAAW,UAAU;AACtDwE,yBAAalwG,UAAU0rG,UAAU,UAAU,UAAU;AAAA,UACvD;AACAoE,mBAASpE,QAAQ,IAAI;AAAA,QACvB;AAEA,YAAIwD,+BAAAA,oBAAqBlsF,SAAS0oF,QAAQ,GAAG;AAC3C,eAAK3oC,MAAMosC,eAAenvG,UAAU;AAAA,YAClC0rG;AAAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAAA,IAEA2E,mBAAmB3nF,MAA+B;AAChD,cAAQA,MAAI;AAAA,QACV,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK3qB,MAAK,CAAU;AAAA,QAC7B,KAAK;AACH,iBAAO,KAAKA,MAAK,CAAU;AAAA,QAC7B,KAAK;AACH,iBAAO,KAAKA,MAAK,CAAY;AAAA,QAC/B,KAAK;AACH,iBAAO,KAAKA,MAAK,EAAM;AAAA,MAC3B;AAAA,IACF;AAAA,IAEAuyG,YACE5nF,MACA6nF,cACK;AACL,YAAM/qD,SAAc,CAAE;AACtB,aAAO,CAAC,KAAK6qD,mBAAmB3nF,IAAI,GAAG;AAErC88B,eAAO3xD,KAAK08G,cAAc;AAAA,MAC5B;AACA,aAAO/qD;AAAAA,IACT;AAAA,IAEAgrD,qBACE9nF,MACA6nF,cACAE,qBAGK;AACL,aAAO9F,QACL,KAAK+F,2BACHhoF,MACA6nF,cACoB,MACpBE,mBACF,CACF;AAAA,IACF;AAAA,IAMAC,2BACEhoF,MACA6nF,cACAI,eACAF,qBAGiB;AACjB,YAAMjrD,SAAc,CAAE;AACtB,UAAIorD,mBAAmB;AAEvB,iBAAS;AACP,YAAI,KAAKP,mBAAmB3nF,IAAI,GAAG;AACjC;AAAA,QACF;AACAkoF,2BAAmB;AAEnB,cAAM3H,UAAUsH,aAAc;AAC9B,YAAItH,WAAW,MAAM;AACnB,iBAAOnqG;AAAAA,QACT;AACA0mD,eAAO3xD,KAAKo1G,OAAO;AAEnB,YAAI,KAAKjyB,IAAG,EAAS,GAAG;AACtB45B,6BAAmB,KAAKxlH,MAAMk4E,gBAAgBv3E;AAC9C;AAAA,QACF;AAEA,YAAI,KAAKskH,mBAAmB3nF,IAAI,GAAG;AACjC;AAAA,QACF;AAEA,YAAIioF,eAAe;AAEjB,eAAK56G,OAAM,EAAS;AAAA,QACtB;AACA,eAAO+I;AAAAA,MACT;AAEA,UAAI2xG,qBAAqB;AACvBA,4BAAoBnkH,QAAQskH;AAAAA,MAC9B;AAEA,aAAOprD;AAAAA,IACT;AAAA,IAEAqrD,qBACEnoF,MACA6nF,cACAO,SACAC,gBACAN,qBAGK;AACL,UAAI,CAACM,gBAAgB;AACnB,YAAID,SAAS;AACX,eAAK/6G,OAAM,CAAY;AAAA,QACzB,OAAO;AACL,eAAKA,OAAM,EAAM;AAAA,QACnB;AAAA,MACF;AAEA,YAAMyvD,SAAS,KAAKgrD,qBAClB9nF,MACA6nF,cACAE,mBACF;AAEA,UAAIK,SAAS;AACX,aAAK/6G,OAAM,CAAY;AAAA,MACzB,OAAO;AACL,aAAKA,OAAM,EAAM;AAAA,MACnB;AAEA,aAAOyvD;AAAAA,IACT;AAAA,IAEAwrD,oBAAoC;AAClC,YAAMvkH,QAAO,KAAKi1E,UAA2B;AAC7C,WAAK3rE,OAAM,EAAW;AACtB,WAAKA,OAAM,EAAU;AACrB,UAAI,CAAC,KAAKgI,MAAK,GAAU,GAAG;AAC1B,aAAKglE,MAAM8nC,SAAS0D,+BAA+B,KAAKnjH,MAAM4U,QAAQ;AAI/D;AACLvT,UAAAA,MAAKm8B,WAAW,MAAMq/D,cAAsB;AAAA,QAC9C;AAAA,MACF,OAAO;AAGE;AAELx7F,UAAAA,MAAKm8B,WAAW,KAAK82C,mBAAmB,KAAKt0E,MAAMkB,KAAK;AAAA,QAC1D;AAAA,MACF;AACA,UAAI,KAAK0qF,IAAG,EAAS,KAAK,CAAC,KAAKj5E,MAAe,EAAA,GAAG;AAChDtR,QAAAA,MAAKb,UAAU,MAAMiiG,wBAAyB;AAC9C,aAAK7W,IAAG,EAAS;AAAA,MACnB,OAAO;AACLvqF,QAAAA,MAAKb,UAAU;AAAA,MACjB;AACA,WAAKmK,OAAM,EAAU;AAErB,UAAI,KAAKihF,IAAG,EAAO,GAAG;AAGpBvqF,QAAAA,MAAK+iC,YAAY,KAAKyhF,kBACpBC,KAEF;AAAA,MACF;AACA,UAAI,KAAKnzG,MAAK,EAAM,GAAG;AAGd;AACLtR,UAAAA,MAAKi6B,iBAAiB,KAAKyqF,qBAAsB;AAAA,QACnD;AAAA,MACF;AACA,aAAO,KAAKvvC,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAEAwkH,kBAAkB5oF,OAA+C;AAC/D,UAAIw+E;AACJ,UACEx+E,aACA,KAAKtqB,MAAc,EAAA,GACnB;AACA,YAAIsqB,WAA2D;AAC7Dw+E,mBAAS,KAAK5f,gBAAgB,IAAI;AAAA,QACpC,OAAO;AACL,gBAAMx6F,QAAO,KAAKi1E,UAA6B;AAC/C,eAAKxiD,KAAM;AACX2nF,mBAAS,KAAKjlC,WAAWn1E,OAAM,gBAAgB;AAAA,QACjD;AAAA,MACF,OAAO;AACLo6G,iBAAS,KAAK5f,gBACZ,CAAC,EAAE5+D,QAAmD,EACxD;AAAA,MACF;AACA,aAAO,KAAK2uD,IAAG,EAAO,GAAG;AACvB,cAAMvqF,QACJ,KAAKq3E,gBAAmC+iC,MAAM;AAChDp6G,QAAAA,MAAKu5B,OAAO6gF;AACZp6G,QAAAA,MAAKw5B,QAAQ,KAAKghE,gBAChB,CAAC,EAAE5+D,QAAmD,EACxD;AACAw+E,iBAAS,KAAKjlC,WAAWn1E,OAAM,iBAAiB;AAAA,MAClD;AACA,aAAOo6G;AAAAA,IACT;AAAA,IAEAuK,uBAA0C;AACxC,YAAM3kH,QAAO,KAAKi1E,UAA8B;AAChDj1E,MAAAA,MAAK4hC,WAAW,KAAK4iF,mBAErB;AACA,UAAI,CAAC,KAAK7xB,sBAAqB,KAAM,KAAKrhF,MAAW,EAAA,GAAG;AAG/C;AACLtR,UAAAA,MAAKi6B,iBAAiB,KAAKyqF,qBAAsB;AAAA,QACnD;AAAA,MACF;AACA,aAAO,KAAKvvC,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEA4kH,yBAAyBC,KAAsC;AAC7D,WAAKpyF,KAAM;AACX,YAAMzyB,QAAO,KAAKq3E,gBAAmCwtC,GAAG;AACxD7kH,MAAAA,MAAK6hC,gBAAgBgjF;AACrB7kH,MAAAA,MAAKq7B,iBAAiB,KAAKypF,sBAAqC,KAAK;AACrE9kH,MAAAA,MAAK8hC,UAAU;AACf,aAAO,KAAKqzC,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEA+kH,sBAAoC;AAClC,YAAM/kH,QAAO,KAAKi1E,UAAyB;AAC3C,WAAKxiD,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,YAAY;AAAA,IAC3C;AAAA,IAEAglH,mBAAkC;AAChC,YAAMhlH,QAAO,KAAKi1E,UAA0B;AAC5C,WAAK3rE,OAAM,EAAW;AACtB,UAAI,KAAKgI,MAAK,EAAW,GAAG;AAC1BtR,QAAAA,MAAK+hC,WAAW,KAAKwiF,kBAAmB;AAAA,MAC1C,OAAO;AAKE;AACLvkH,UAAAA,MAAK+hC,WAAW,KAAKyiF,kBACnBC,KAEF;AAAA,QACF;AAAA,MACF;AACA,UAAI,CAAC,KAAK9xB,sBAAqB,KAAM,KAAKrhF,MAAW,EAAA,GAAG;AAG/C;AACLtR,UAAAA,MAAKi6B,iBAAiB,KAAKyqF,qBAAsB;AAAA,QACnD;AAAA,MACF;AACA,aAAO,KAAKvvC,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAsCAilH,qBACEC,gBACmB;AACnB,YAAMllH,QAAO,KAAKi1E,UAA8B;AAEhDiwC,qBAAellH,KAAI;AAEnBA,MAAAA,MAAKyM,OAAO,KAAK04G,yBAA0B;AAC3CnlH,MAAAA,MAAKmjC,aAAa,KAAKiiF,qBAA8B;AACrDplH,MAAAA,MAAK2O,UAAU,KAAKy2G,qBAAwB;AAC5C,aAAO,KAAKjwC,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEAqlH,yBACEH,gBACiD;AACjD,UAAI,KAAK5zG,MAAK,EAAM,GAAG;AACrB,eAAO,KAAKg0G,sBAAsBJ,cAAc;AAAA,MAClD;AAAA,IACF;AAAA,IAEAI,sBAAsBJ,gBAAmD;AACvE,YAAMllH,QAAO,KAAKi1E,UAAyC;AAE3D,UAAI,KAAK3jE,MAAW,EAAA,KAAK,KAAKA,MAAoB,GAAA,GAAG;AACnD,aAAKmhB,KAAM;AAAA,MACb,OAAO;AACL,aAAK81C,WAAY;AAAA,MACnB;AAEA,YAAMy7C,sBAAsB;AAAA,QAAEnkH,OAAO;AAAA,MAAI;AAEzCG,MAAAA,MAAK26B,SAAS,KAAKypF,qBACjB,6BACA,KAAKa,qBAAqB5uD,KAAK,MAAM6uD,cAAc,GACrC,OACO,MACrBlB,mBACF;AACA,UAAIhkH,MAAK26B,OAAOxuB,WAAW,GAAG;AAC5B,aAAKmqE,MAAM8nC,SAASiB,qBAAqBr/G,KAAI;AAAA,MAC/C;AACA,UAAIgkH,oBAAoBnkH,UAAU,IAAI;AACpC,aAAKoyF,SAASjyF,OAAM,iBAAiBgkH,oBAAoBnkH,KAAK;AAAA,MAChE;AACA,aAAO,KAAKs1E,WAAWn1E,OAAM,4BAA4B;AAAA,IAC3D;AAAA,IAIAulH,gBACEC,aACAC,WACM;AAEN,YAAMC,sBAAsBF,gBAAwB;AAGpD,YAAMG,YAAsD;AAC5D,YAAMC,gBAEF;AAEJH,gBAAUxrF,iBAAiB,KAAKorF,yBAC9B,KAAK1C,oBACP;AACA,WAAKr5G,OAAM,EAAU;AACrBm8G,gBAAUE,SAAS,IAAI,KAAKE,+BAAgC;AAC5D,UAAIH,qBAAqB;AACvBD,kBAAUG,aAAa,IACrB,KAAKE,qCAAqCN,WAAW;AAAA,MACxD,WAAU,KAAKl0G,MAAMk0G,WAAW,GAAG;AAClCC,kBAAUG,aAAa,IACrB,KAAKE,qCAAqCN,WAAW;AAAA,MACzD;AAAA,IACF;AAAA,IAEAK,iCAEE;AACA,YAAMtkH,QAAO,MAAMq7G,iBAGjBC,IAAAA,IAAAA,CACF;AACA,iBAAWvjF,WAAW/3B,OAAM;AAC1B,cAAM;AAAA,UAAE4P;AAAAA,QAAM,IAAGmoB;AACjB,YAAInoB,SAAS,uBAAuBA,SAAS,uBAAuB;AAClE,eAAKmlE,MAAM8nC,SAAS4D,mCAAmC1oF,SAAS;AAAA,YAC9DnoB;AAAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF;AACA,aAAO5P;AAAAA,IAIT;AAAA,IAEAwkH,6BAAmC;AACjC,UAAI,CAAC,KAAKx7B,IAAY,EAAA,KAAK,CAAC,KAAKsI,oBAAoB;AACnD,aAAKvpF,OAAM,EAAQ;AAAA,MACrB;AAAA,IACF;AAAA,IAEA08G,uBACE/pF,MACAj8B,OAGkE;AAClE,WAAKulH,gBAA0BvlH,IAAAA,KAAI;AACnC,WAAK+lH,2BAA4B;AACjC,aAAO,KAAK5wC,WAAWn1E,OAAMi8B,IAAI;AAAA,IACnC;AAAA,IAEAgqF,kCAAkC;AAChC,WAAKxzF,KAAM;AACX,UAAIovD,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AACtC,aAAKshB,KAAM;AACX,eAAO,KAAKnhB,MAAK,EAAS;AAAA,MAC5B;AACA,aAAO;AAAA,IACT;AAAA,IAEA40G,yBACElmH,OACgC;AAChC,UACE,EACE,KAAKsR,OAAiB,KACtB,KAAK60G,YAAY,KAAKF,gCAAgC5vD,KAAK,IAAI,CAAC,IAElE;AACA;AAAA,MACF;AAEA,WAAK/sD,OAAM,CAAY;AACvB,YAAM2xB,KAAK,KAAKu/D,gBAAiB;AACjCv/D,SAAGI,iBAAiB,KAAKypF,sBAAuB;AAChD,WAAKttC,iBAAiBv8C,EAAE;AAExB,WAAK3xB,OAAM,CAAY;AACvBtJ,MAAAA,MAAKyhC,aAAa,CAACxG,EAAE;AAErB,YAAM9pB,OAAO,KAAKi1G,yBAA0B;AAC5C,UAAIj1G,KAAMnR,CAAAA,MAAKq7B,iBAAiBlqB;AAChC,WAAK40G,2BAA4B;AACjC,aAAO,KAAK5wC,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAEAqmH,iCACErmH,OACAk/B,UAC6C;AAC7C,UAAI,KAAKqrD,IAAe,EAAA,EAAGvqF,CAAAA,MAAKu0B,WAAW;AAC3C,YAAM+xF,UAAetmH;AAErB,UAAI,KAAKsR,MAAe,EAAA,KAAK,KAAKA,MAAW,EAAA,GAAG;AAC9C,YAAI4tB,UAAU;AACZ,eAAKo3C,MAAM8nC,SAAS2C,4BAA4B/gH,KAAI;AAAA,QACtD;AACA,cAAM+/B,SAA8BumF;AACpC,YAAIvmF,OAAO9D,QAAQ,KAAK3qB,MAAW,EAAA,GAAG;AACpC,eAAKglE,MACH8nC,SAASpuC,kCACT,KAAKrxE,MAAM6qF,aACb;AAAA,QACF;AACA,aAAK+7B,gBAA0BxlF,IAAAA,MAAM;AACrC,aAAKgmF,2BAA4B;AACjC,cAAMJ,YAEF;AACJ,cAAMC,gBAEF;AACJ,YAAI7lF,OAAO9D,SAAS,OAAO;AACzB,cAAI8D,OAAO4lF,SAAS,EAAEx5G,SAAS,GAAG;AAChC,iBAAKmqE,MAAMxF,OAAOzM,gBAAgB,KAAK1lE,MAAM6qF,aAAa;AAC1D,gBAAI,KAAKka,YAAY3jE,OAAO4lF,SAAS,EAAE,CAAC,CAAC,GAAG;AAC1C,mBAAKrvC,MACH8nC,SAASruC,oCACT,KAAKpxE,MAAM6qF,aACb;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAWzpD,OAAO9D,SAAS,OAAO;AAChC,cAAI8D,OAAO4lF,SAAS,EAAEx5G,WAAW,GAAG;AAClC,iBAAKmqE,MAAMxF,OAAOxM,gBAAgB,KAAK3lE,MAAM6qF,aAAa;AAAA,UAC5D,OAAO;AACL,kBAAM+8B,iBAAiBxmF,OAAO4lF,SAAS,EAAE,CAAC;AAC1C,gBAAI,KAAKjiB,YAAY6iB,cAAc,GAAG;AACpC,mBAAKjwC,MACH8nC,SAASruC,oCACT,KAAKpxE,MAAM6qF,aACb;AAAA,YACF;AACA,gBACE+8B,eAAep1G,SAAS,gBACxBo1G,eAAehyF,UACf;AACA,mBAAK+hD,MACH8nC,SAASluC,wCACT,KAAKvxE,MAAM6qF,aACb;AAAA,YACF;AACA,gBAAI+8B,eAAep1G,SAAS,eAAe;AACzC,mBAAKmlE,MACH8nC,SAASjuC,oCACT,KAAKxxE,MAAM6qF,aACb;AAAA,YACF;AAAA,UACF;AACA,cAAIzpD,OAAO6lF,aAAa,GAAG;AACzB,iBAAKtvC,MACH8nC,SAAShuC,iCACTrwC,OAAO6lF,aAAa,CACtB;AAAA,UACF;AAAA,QACF,OAAO;AACL7lF,iBAAO9D,OAAO;AAAA,QAChB;AACA,eAAO,KAAKk5C,WAAWp1C,QAAQ,mBAAmB;AAAA,MACpD,OAAO;AACL,cAAMhR,WAAkCu3F;AACxC,YAAIpnF,SAAUnQ,UAASmQ,WAAW;AAClC,cAAM/tB,OAAO,KAAKi1G,yBAA0B;AAC5C,YAAIj1G,KAAM4d,UAASsM,iBAAiBlqB;AACpC,aAAK40G,2BAA4B;AACjC,eAAO,KAAK5wC,WAAWpmD,UAAU,qBAAqB;AAAA,MACxD;AAAA,IACF;AAAA,IAEAy3F,oBAAqC;AACnC,YAAMxmH,QAAY,KAAKi1E,UAAW;AAElC,UAAI,KAAK3jE,MAAe,EAAA,KAAK,KAAKA,MAAW,EAAA,GAAG;AAC9C,eAAO,KAAK00G,uBAAuB,8BAA8BhmH,KAAI;AAAA,MACvE;AAEA,UAAI,KAAKsR,MAAK,EAAQ,GAAG;AACvB,cAAM2pB,KAAK,KAAKg6C,UAAyB;AACzC,aAAKxiD,KAAM;AACX,YAAI,KAAKnhB,MAAe,EAAA,KAAK,KAAKA,MAAW,EAAA,GAAG;AAC9C,iBAAO,KAAK00G,uBACV,mCACAhmH,KACF;AAAA,QACF,OAAO;AACLA,UAAAA,MAAKP,MAAM,KAAKkgG,iBAAiB1kE,IAAI,KAAK;AAC1C,iBAAO,KAAKorF,iCAAiCrmH,OAAM,KAAK;AAAA,QAC1D;AAAA,MACF;AAEA,WAAKuiH,iBACH;AAAA,QACEC,kBAAkB,CAAC,UAAU;AAAA,QAC7BC,qBAAqB,CACnB,WACA,YACA,WACA,aACA,UACA,UACA,UAAU;AAAA,MAEb,GACDziH,KACF;AAEA,YAAMymH,MAAM,KAAKP,yBAAyBlmH,KAAI;AAC9C,UAAIymH,KAAK;AACP,eAAOA;AAAAA,MACT;AAEA,YAAMlJ,kBAAkBv9G,KAAI;AAC5B,UACE,CAACA,MAAKy7B,YACNz7B,MAAKP,IAAI0R,SAAS,iBACjBnR,MAAKP,IAAIgN,SAAS,SAASzM,MAAKP,IAAIgN,SAAS,UAC9C,KAAKq2G,4BACL;AACA9iH,QAAAA,MAAKi8B,OAAOj8B,MAAKP,IAAIgN;AACrB,cAAM8wG,kBAAkBv9G,KAAI;AAAA,MAC9B;AACA,aAAO,KAAKqmH,iCAAiCrmH,OAAM,CAAC,CAACA,MAAKk/B,QAAQ;AAAA,IACpE;AAAA,IAEAwnF,qBAAsC;AACpC,YAAM1mH,QAAO,KAAKi1E,UAA4B;AAC9Cj1E,MAAAA,MAAKmgC,UAAU,KAAKwmF,yBAA0B;AAC9C,aAAO,KAAKxxC,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEA2mH,2BAAmD;AACjD,WAAKr9G,OAAM,CAAU;AACrB,YAAM62B,UAAU,KAAK0jF,YACnB,eACA,KAAK2C,kBAAkBnwD,KAAK,IAAI,CAClC;AACA,WAAK/sD,OAAM,CAAU;AACrB,aAAO62B;AAAAA,IACT;AAAA,IAEAymF,wBAAiC;AAC/B,WAAKn0F,KAAM;AACX,UAAI,KAAK83D,IAAG,EAAW,GAAG;AACxB,eAAO,KAAK2H,aAAY,GAAa;AAAA,MACvC;AACA,UAAI,KAAKA,aAAY,GAAa,GAAG;AACnC,aAAKz/D,KAAM;AAAA,MACb;AACA,UAAI,CAAC,KAAKnhB,MAAK,CAAY,GAAG;AAC5B,eAAO;AAAA,MACT;AACA,WAAKmhB,KAAM;AACX,UAAI,CAAC,KAAKowF,kBAAkB;AAC1B,eAAO;AAAA,MACT;AACA,WAAKpwF,KAAM;AACX,aAAO,KAAKnhB,MAAK,EAAO;AAAA,IAC1B;AAAA,IAEAu1G,oBAAoC;AAClC,YAAM7mH,QAAO,KAAKi1E,UAA2B;AAE7C,WAAK3rE,OAAM,CAAU;AAErB,UAAI,KAAKgI,MAAK,EAAW,GAAG;AAC1BtR,QAAAA,MAAKk/B,WAAW,KAAKvgC,MAAMkB;AAC3B,aAAK4yB,KAAM;AACX,aAAKggE,iBAAgB,GAAa;AAAA,MACnC,WAAU,KAAKD,cAAa,GAAa,GAAG;AAC3CxyF,QAAAA,MAAKk/B,WAAW;AAAA,MAClB;AAEA,WAAK51B,OAAM,CAAY;AAIhB;AACL,cAAMg5B,gBAAgB,KAAK2yC,UAA8B;AACzD3yC,sBAAc71B,OAAO,KAAK04G,yBAA0B;AACpD7iF,sBAAca,aAAa,KAAK2jF,wBAA4B;AAE5D9mH,QAAAA,MAAKsiC,gBAAgB,KAAK6yC,WAAW7yC,eAAe,iBAAiB;AAAA,MACvE;AACAtiC,MAAAA,MAAKuiC,WAAW,KAAKiwD,cAAa,EAAO,IAAI,KAAKu0B,YAAW,IAAK;AAElE,WAAKz9G,OAAM,CAAY;AAEvB,UAAI,KAAKgI,MAAK,EAAW,GAAG;AAC1BtR,QAAAA,MAAKu0B,WAAW,KAAK51B,MAAMkB;AAC3B,aAAK4yB,KAAM;AACX,aAAKnpB,OAAM,EAAY;AAAA,MACxB,WAAU,KAAKihF,IAAG,EAAY,GAAG;AAChCvqF,QAAAA,MAAKu0B,WAAW;AAAA,MAClB;AAEAv0B,MAAAA,MAAKq7B,iBAAiB,KAAK2rF,eAAgB;AAC3C,WAAKl0B,UAAW;AAChB,WAAKxpF,OAAM,CAAU;AAErB,aAAO,KAAK6rE,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAEAinH,mBAAkC;AAChC,YAAMjnH,QAAO,KAAKi1E,UAA0B;AAC5Cj1E,MAAAA,MAAKgiC,eAAe,KAAKoiF,qBACvB,qBACA,KAAK8C,wBAAwB7wD,KAAK,IAAI,GACxB,MACO,KACvB;AAIA,UAAI8wD,sBAAsB;AAC1BnnH,MAAAA,MAAKgiC,aAAalJ,QAAQsuF,iBAAe;AACvC,cAAM;AAAA,UAAEj2G;AAAAA,QAAM,IAAGi2G;AAEjB,YACED,uBACAh2G,SAAS,gBACTA,SAAS,oBACT,EAAEA,SAAS,wBAAwBi2G,YAAY7yF,WAC/C;AACA,eAAK+hD,MAAM8nC,SAASuC,4BAA4ByG,WAAW;AAAA,QAC7D;AAEAD,gCAAAA,sBACGh2G,SAAS,wBAAwBi2G,YAAY7yF,YAC9CpjB,SAAS;AAAA,MACb,CAAC;AAED,aAAO,KAAKgkE,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAEAknH,0BAA2D;AAGzD,YAAMG,eAAe,KAAK1oH,MAAM4U;AAEhC,YAAMlM,OAAO,KAAKkjF,MAAe;AACjC,YAAM;AAAA,QAAEh3E;AAAAA,MAAU,IAAG,KAAK5U;AAE1B,UAAI2oH;AACJ,UAAIxtF;AACJ,UAAIvF;AACJ,UAAIpjB;AAEJ,YAAMo2G,SAASxlC,2BAA2B,KAAKpjF,MAAMwS,IAAI;AACzD,YAAMq2G,cAAcD,SAAS,KAAKv8B,kBAAmB,IAAG;AACxD,UAAIw8B,oBAAiC;AACnCF,kBAAU;AACV/yF,mBAAW;AACXuF,gBAAQ,KAAK0gE,gBAAgB,IAAI;AACjC,aAAKlxF,OAAM,EAAS;AACpB6H,eAAO,KAAK41G,YAAa;AAAA,MAC3B,WAAWS,gBAAW,IAA6B;AACjDjzF,mBAAW;AACX,cAAMkzF,WAAW,KAAK9oH,MAAMkB;AAC5B,cAAM6nH,cAAc,KAAKC,oBAAqB;AAE9C,YAAI,KAAK38B,kBAAmB,UAAsB;AAChDs8B,oBAAU;AACVxtF,kBAAQ,KAAK6lE,iBACX,KAAKtK,YAA0B9hF,QAAQ,GACvCk0G,QACF;AACA,eAAKn+G,OAAM,EAAY;AACvB,eAAKA,OAAM,EAAS;AACpB6H,iBAAO,KAAK41G,YAAa;AAAA,QAC3B,OAAO;AACLO,oBAAU;AACVn2G,iBAAOu2G;AACP,eAAKp+G,OAAM,EAAY;AAAA,QACzB;AAAA,MACF,OAAO;AACL6H,eAAO,KAAK41G,YAAa;AACzBxyF,mBAAW,KAAKg2D,MAAe;AAI/B+8B,kBAAU,KAAK/8B,MAAY;AAAA,MAC7B;AAEA,UAAI+8B,SAAS;AACX,YAAIM;AACJ,YAAI9tF,OAAO;AACT8tF,wBAAc,KAAKvyB,YAAkC9hF,QAAQ;AAC7Dq0G,sBAAYrzF,WAAWA;AACvBqzF,sBAAY9tF,QAAQA;AACpB8tF,sBAAYpyF,cAAcrkB;AAE1B,cAAI,KAAKo5E,IAAG,EAAY,GAAG;AACzBq9B,wBAAYrzF,WAAW;AACvB,iBAAK+hD,MACH8nC,SAASiD,wBACT,KAAK1iH,MAAMk4E,eACb;AAAA,UACF;AAAA,QACF,OAAO;AACL+wC,wBAAc,KAAKvyB,YAAkC9hF,QAAQ;AAC7Dq0G,sBAAYrzF,WAAWA;AACvB,eAAK+hD,MAAM8nC,SAASmC,yBAAyBpvG,IAAI;AAGjDy2G,sBAAY9tF,QAAQ3oB;AACpBy2G,sBAAYpyF,cAAc,KAAKuxF,YAAa;AAAA,QAC9C;AACA51G,eAAO,KAAKgkE,WAAWyyC,aAAa,oBAAoB;AAAA,MACzD,WAAUrzF,UAAU;AACnB,cAAMszF,mBAAmB,KAAKxyB,YAA8B9hF,QAAQ;AACpEs0G,yBAAiBxsF,iBAAiBlqB;AAClCA,eAAO,KAAKgkE,WAAW0yC,kBAAkB,gBAAgB;AAAA,MAC3D;AAEA,UAAIxgH,MAAM;AACR,cAAMygH,WAAW,KAAKzyB,YAA0BgyB,YAAY;AAC5DS,iBAASzsF,iBAAiBlqB;AAC1BA,eAAO,KAAKgkE,WAAW2yC,UAAU,YAAY;AAAA,MAC/C;AAEA,aAAO32G;AAAAA,IACT;AAAA,IAEA42G,2BAAkD;AAChD,YAAM/nH,QAAO,KAAKi1E,UAAkC;AACpD,WAAK3rE,OAAM,EAAU;AACrBtJ,MAAAA,MAAKq7B,iBAAiB,KAAK0rF,YAAa;AACxC,WAAKz9G,OAAM,EAAU;AACrB,aAAO,KAAK6rE,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAEAgoH,iCACE72G,MACAisB,UAC+B;AAC/B,YAAMp9B,QAAO,KAAKi1E,UAEf;AACH,UAAI9jE,SAAS,qBAAqB;AAC/BnR,QAAAA,MAAqCo9B,WAAW,CAAC,CAACA;AACnD,YAAIA,SAAU,MAAK3K,KAAM;AACzB,aAAKA,KAAM;AAAA,MACb;AACA,WAAKw1F,iCAAiC,MACpC,KAAK1C,gBAAe,IAAWvlH,KAAI,CACrC;AACA,aAAO,KAAKm1E,WAAWn1E,OAAMmR,IAAI;AAAA,IACnC;AAAA,IAEA+2G,yBAA0C;AACxC,YAAMloH,QAAO,KAAKi1E,UAA4B;AAC9C,cAAQ,KAAKt2E,MAAMwS,MAAI;AAAA,QACrB,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAGEnR,UAAAA,MAAKwiC,UAAU,MAAMg5D,cAAe;AACpC;AAAA,QACF;AACE,eAAKjzB,WAAY;AAAA,MACrB;AACA,aAAO,KAAK4M,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEAmoH,6BAAwE;AAwB/D;AACL,cAAMnoH,QAAO,KAAKi1E,UAA4B;AAC9Cj1E,QAAAA,MAAKwiC,UAAU,MAAM4lF,cAAc,KAAK;AACxC,eAAO,KAAKjzC,WAAWn1E,OAAM,eAAe;AAAA,MAC9C;AAAA,IACF;AAAA,IAEAqoH,4BAAqD;AACnD,UAAI,KAAK1pH,MAAMkqF,OAAQ,QAAO,KAAKk+B,YAAa;AAChD,aAAO,MAAMsB,0BAA2B;AAAA,IAC1C;AAAA,IAEAC,qCAAuE;AACrE,YAAMC,cAAc,KAAKxD,oBAAqB;AAC9C,UAAI,KAAK7yB,aAAY,GAAO,KAAK,CAAC,KAAKS,yBAAyB;AAC9D,eAAO,KAAKiyB,yBAAyB2D,WAAW;AAAA,MAClD,OAAO;AACL,eAAOA;AAAAA,MACT;AAAA,IACF;AAAA,IAEAZ,sBAAgC;AAC9B,cAAQ,KAAKhpH,MAAMwS,MAAI;AAAA,QACrB,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA;AACE,iBAAO,KAAK+2G,uBAAwB;AAAA,QACtC,KAAA;AACE,cAAI,KAAKvpH,MAAMkB,UAAU,KAAK;AAC5B,kBAAMG,QAAO,KAAKi1E,UAA4B;AAC9C,kBAAMqV,YAAY,KAAKI,UAAW;AAClC,gBAAIJ,UAAUn5E,SAAI,OAAem5E,UAAUn5E,SAAI,KAAgB;AAC7D,mBAAKo3D,WAAY;AAAA,YACnB;AAEAvoE,YAAAA,MAAKwiC,UAAU,KAAKgmF,gBAAiB;AACrC,mBAAO,KAAKrzC,WAAWn1E,OAAM,eAAe;AAAA,UAC9C;AACA;AAAA,QACF,KAAA;AACE,iBAAO,KAAKsoH,mCAAoC;AAAA,QAClD,KAAA;AACE,iBAAO,KAAKtD,iBAAkB;AAAA,QAChC,KAAA;AACE,iBAAO,KAAKT,kBAAmB;AAAA,QACjC,KAAA;AACE,iBAAO,KAAK4B,YAAY,KAAKS,sBAAsBvwD,KAAK,IAAI,CAAC,IACzD,KAAKwwD,sBACL,KAAKH,mBAAoB;AAAA,QAC/B,KAAA;AACE,iBAAO,KAAKO,iBAAkB;AAAA,QAChC,KAAA;AAeE,iBAAO,KAAKc,yBAA0B;AAAA,QACxC,KAAA;AAAA,QACA,KAAA;AACE,iBAAO,KAAKI,2BAA4B;AAAA,QAC1C,SAAS;AACP,gBAAM;AAAA,YAAEh3G;AAAAA,UAAM,IAAG,KAAKxS;AACtB,cACEkjF,kBAAkB1wE,IAAI,KACtBA,SAAiB,MACjBA,SAAI,IACJ;AACA,kBAAMqe,WACJre,SAAI,KACA,kBACAA,SAAI,KACF,kBACA8wG,oBAAoB,KAAKtjH,MAAMkB,KAAK;AAC5C,gBACE2vB,aAAand,UACb,KAAK24E,kBAAiB,MAAE,IACxB;AACA,oBAAMhrF,QAAO,KAAKi1E,UAA4B;AAC9C,mBAAKxiD,KAAM;AACX,qBAAO,KAAK0iD,WAAWn1E,OAAMwvB,QAAQ;AAAA,YACvC;AACA,mBAAO,KAAKm1F,qBAAsB;AAAA,UACpC;AAAA,QACF;AAAA,MACF;AAEA,WAAKp8C,WAAY;AAAA,IACnB;AAAA,IAEAkgD,2BAAqC;AACnC,YAAM;AAAA,QAAEl1G;AAAAA,MAAU,IAAG,KAAK5U;AAC1B,UAAIwS,OAAO,KAAKw2G,oBAAqB;AACrC,aAAO,CAAC,KAAKh1B,sBAAqB,KAAM,KAAKpI,IAAe,CAAA,GAAG;AAC7D,YAAI,KAAKj5E,MAAK,CAAY,GAAG;AAC3B,gBAAMtR,QAAO,KAAKq1F,YAA2B9hF,QAAQ;AACrDvT,UAAAA,MAAKw1B,cAAcrkB;AACnB,eAAK7H,OAAM,CAAY;AACvB6H,iBAAO,KAAKgkE,WAAWn1E,OAAM,aAAa;AAAA,QAC5C,OAAO;AACL,gBAAMA,QAAO,KAAKq1F,YAAmC9hF,QAAQ;AAC7DvT,UAAAA,MAAKqgC,aAAalvB;AAClBnR,UAAAA,MAAKsgC,YAAY,KAAKymF,YAAa;AACnC,eAAKz9G,OAAM,CAAY;AACvB6H,iBAAO,KAAKgkE,WAAWn1E,OAAM,qBAAqB;AAAA,QACpD;AAAA,MACF;AACA,aAAOmR;AAAAA,IACT;AAAA,IAEAu3G,sBAAwC;AACtC,YAAM1oH,QAAO,KAAKi1E,UAA6B;AAC/C,YAAM97C,WAAW,KAAKx6B,MAAMkB;AAC5B,WAAK4yB,KAAM;AACXzyB,MAAAA,MAAKm5B,WAAWA;AAChBn5B,MAAAA,MAAKq7B,iBAAiB,KAAKstF,4BAA6B;AAExD,UAAIxvF,aAAa,YAAY;AAC3B,aAAKyvF,iCAAiC5oH,KAAI;AAAA,MAC5C;AAEA,aAAO,KAAKm1E,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEA4oH,iCAAiC5oH,OAAgC;AAC/D,cAAQA,MAAKq7B,eAAelqB,MAAI;AAAA,QAC9B,KAAK;AAAA,QACL,KAAK;AACH;AAAA,QACF;AACE,eAAKmlE,MAAM8nC,SAASuD,oBAAoB3hH,KAAI;AAAA,MAChD;AAAA,IACF;AAAA,IAEA6oH,mBAAkC;AAChC,YAAM7oH,QAAO,KAAKi1E,UAA0B;AAC5C,WAAKwd,iBAAgB,GAAU;AAC/B,YAAMnwD,gBAAgB,KAAK2yC,UAA8B;AACzD3yC,oBAAc71B,OAAO,KAAK04G,yBAA0B;AACpD7iF,oBAAca,aAAa,KAAKigF,WAAW,MACzC,KAAK0F,+BACP;AACA9oH,MAAAA,MAAKsiC,gBAAgB,KAAK6yC,WAAW7yC,eAAe,iBAAiB;AACrE,aAAO,KAAK6yC,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAEA8oH,gCAAgC;AAC9B,UAAI,KAAKv+B,IAAG,EAAY,GAAG;AACzB,cAAMpnD,aAAa,KAAK4lF,oCAAoC,MAC1D,KAAKhC,YAAW,CAClB;AACA,YACE,KAAKpoH,MAAMuqF,qCACX,CAAC,KAAK53E,MAAiB,EAAA,GACvB;AACA,iBAAO6xB;AAAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAEAwlF,8BAAwC;AACtC,YAAMK,iBACJtmC,sBAAsB,KAAK/jF,MAAMwS,IAAI,KAAK,CAAC,KAAKxS,MAAM2qF;AACxD,aAAO0/B,iBACH,KAAKN,oBAAqB,IAC1B,KAAKx2B,aAAY,GAAU,IACzB,KAAK22B,iBAAkB,IACvB,KAAKZ,iCAAiC,MACpC,KAAKQ,0BACP;AAAA,IACR;AAAA,IAEAQ,+BACEhtF,MACAitF,sBACA/vF,UACU;AACV,YAAMn5B,QAAO,KAAKi1E,UAAiD;AACnE,YAAMk0C,qBAAqB,KAAK5+B,IAAIpxD,QAAQ;AAC5C,YAAMn6B,SAAQ,CAAE;AAChB,SAAG;AACDA,QAAAA,OAAMoI,KAAK8hH,sBAAsB;AAAA,MACnC,SAAS,KAAK3+B,IAAIpxD,QAAQ;AAC1B,UAAIn6B,OAAMmN,WAAW,KAAK,CAACg9G,oBAAoB;AAC7C,eAAOnqH,OAAM,CAAC;AAAA,MAChB;AACAgB,MAAAA,MAAKhB,QAAQA;AACb,aAAO,KAAKm2E,WAAWn1E,OAAMi8B,IAAI;AAAA,IACnC;AAAA,IAEAmtF,kCAA4C;AAC1C,aAAO,KAAKH,+BACV,sBACA,KAAKN,4BAA4BtyD,KAAK,IAAI,KAE5C;AAAA,IACF;AAAA,IAEAgzD,2BAA2B;AACzB,aAAO,KAAKJ,+BACV,eACA,KAAKG,gCAAgC/yD,KAAK,IAAI,KAEhD;AAAA,IACF;AAAA,IAEAizD,0BAA0B;AACxB,UAAI,KAAKh4G,MAAK,EAAM,GAAG;AACrB,eAAO;AAAA,MACT;AACA,aACE,KAAKA,QAAe,KACpB,KAAK60G,YAAY,KAAKoD,qCAAqClzD,KAAK,IAAI,CAAC;AAAA,IAEzE;AAAA,IAEAmzD,uBAAgC;AAC9B,UAAI3nC,kBAAkB,KAAKljF,MAAMwS,IAAI,KAAK,KAAKG,MAAK,EAAS,GAAG;AAC9D,aAAKmhB,KAAM;AACX,eAAO;AAAA,MACT;AAEA,UAAI,KAAKnhB,MAAK,CAAU,GAAG;AAEzB,cAAM;AAAA,UAAE6f;AAAAA,QAAQ,IAAG,KAAKxyB;AACxB,cAAM8qH,qBAAqBt4F,OAAOhlB;AAClC,YAAI;AACF,eAAK2wG,gBAA2B,GAAA,IAAI;AACpC,iBAAO3rF,OAAOhlB,WAAWs9G;AAAAA,QAC1B,SAAC72C,SAAM;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,KAAKthE,MAAK,CAAY,GAAG;AAC3B,aAAKmhB,KAAM;AAEX,cAAM;AAAA,UAAEtB;AAAAA,QAAQ,IAAG,KAAKxyB;AACxB,cAAM8qH,qBAAqBt4F,OAAOhlB;AAClC,YAAI;AACF,gBAAMywG,iBAAgB,GAAA,KAItB;AACA,iBAAOzrF,OAAOhlB,WAAWs9G;AAAAA,QAC1B,SAACC,UAAM;AACN,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEAH,uCAAgD;AAC9C,WAAK92F,KAAM;AACX,UAAI,KAAKnhB,MAAe,EAAA,KAAK,KAAKA,MAAiB,EAAA,GAAG;AAGpD,eAAO;AAAA,MACT;AACA,UAAI,KAAKk4G,wBAAwB;AAC/B,YACE,KAAKl4G,MAAK,EAAS,KACnB,KAAKA,MAAc,EAAA,KACnB,KAAKA,MAAK,EAAY,KACtB,KAAKA,MAAW,EAAA,GAChB;AAKA,iBAAO;AAAA,QACT;AACA,YAAI,KAAKA,MAAK,EAAU,GAAG;AACzB,eAAKmhB,KAAM;AACX,cAAI,KAAKnhB,MAAK,EAAS,GAAG;AAExB,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEAw0G,qCACEN,aACoB;AACpB,aAAO,KAAKmE,SAAS,MAAM;AACzB,cAAMj7G,IAAI,KAAKumE,UAA+B;AAC9C,aAAK3rE,OAAOk8G,WAAW;AAEvB,cAAMxlH,QAAO,KAAKi1E,UAA8B;AAEhD,cAAMnzC,UAAU,CAAC,CAAC,KAAKshF,WACrB,KAAKwG,4BAA4BvzD,KAAK,IAAI,CAC5C;AAEA,YAAIv0B,WAAW,KAAKxwB,MAAK,EAAS,GAAG;AAGnC,cAAIu4G,oBAAoB,KAAKvB,mCAAoC;AAGjE,cAAIuB,kBAAkB14G,SAAS,cAAc;AAC3CnR,YAAAA,MAAK6hC,gBAAgBgoF;AACrB7pH,YAAAA,MAAK8hC,UAAU;AACd9hC,YAAAA,MAA2Bq7B,iBAAiB;AAC7CwuF,gCAAoB,KAAK10C,WAAWn1E,OAAM,iBAAiB;AAAA,UAC7D,OAAO;AACL,iBAAKk1E,2BAA2B20C,mBAAmB7pH,KAAI;AACvD6pH,8BAAkB/nF,UAAU;AAAA,UAC9B;AACApzB,YAAE2sB,iBAAiBwuF;AACnB,iBAAO,KAAK10C,WAAWzmE,GAAG,kBAAkB;AAAA,QAC9C;AAEA,cAAMo7G,wBACJ,KAAKjH,eAAc,KACnB,KAAKO,WAAW,KAAK2G,2BAA2B1zD,KAAK,IAAI,CAAC;AAE5D,YAAI,CAACyzD,uBAAuB;AAC1B,cAAI,CAAChoF,SAAS;AAEZ,mBAAO,KAAKgjF,sBAAqC,OAAOp2G,CAAC;AAAA,UAC3D;AAGA1O,UAAAA,MAAK6hC,gBAAgB,KAAK24D,gBAAiB;AAC3Cx6F,UAAAA,MAAK8hC,UAAUA;AACd9hC,UAAAA,MAA2Bq7B,iBAAiB;AAC7C3sB,YAAE2sB,iBAAiB,KAAK85C,WAAWn1E,OAAM,iBAAiB;AAC1D,iBAAO,KAAKm1E,WAAWzmE,GAAG,kBAAkB;AAAA,QAC9C;AAGA,cAAMyC,OAAO,KAAK2zG,sBAAqC,KAAK;AAC5D9kH,QAAAA,MAAK6hC,gBAAgBioF;AACrB9pH,QAAAA,MAAKq7B,iBAAiBlqB;AACtBnR,QAAAA,MAAK8hC,UAAUA;AACfpzB,UAAE2sB,iBAAiB,KAAK85C,WAAWn1E,OAAM,iBAAiB;AAC1D,eAAO,KAAKm1E,WAAWzmE,GAAG,kBAAkB;AAAA,MAC9C,CAAC;AAAA,IACH;AAAA,IAEAs7G,0CAA0E;AACxE,UAAI,KAAK14G,MAAK,EAAS,GAAG;AACxB,eAAO,KAAKw0G,qCAAoC,EAAS;AAAA,MAC3D;AAAA,IACF;AAAA,IAEAM,2BAA2D;AACzD,UAAI,KAAK90G,MAAK,EAAS,GAAG;AACxB,eAAO,KAAKwzG,sBAAuB;AAAA,MACrC;AAAA,IACF;AAAA,IAEAkC,iBAAuC;AACrC,aAAO,KAAK5B,mBAAkB,EAAS;AAAA,IACzC;AAAA,IAEA2E,6BAAuD;AACrD,YAAM9uF,KAAK,KAAKu/D,gBAAiB;AACjC,UAAI,KAAKtI,aAAY,GAAO,KAAK,CAAC,KAAKS,yBAAyB;AAC9D,aAAKlgE,KAAM;AACX,eAAOwI;AAAAA,MACT;AAAA,IACF;AAAA,IAEA2uF,8BAAuC;AACrC,UAAI,KAAKjrH,MAAMwS,cAAsB;AACnC,eAAO;AAAA,MACT;AACA,YAAMm4E,cAAc,KAAK3qF,MAAM2qF;AAC/B,WAAK72D,KAAM;AACX,UAAI,CAACovD,kBAAkB,KAAKljF,MAAMwS,IAAI,KAAK,CAAC,KAAKG,MAAK,EAAS,GAAG;AAChE,eAAO;AAAA,MACT;AAEA,UAAIg4E,aAAa;AACf,aAAKhT,MACHxF,OAAOjJ,4BACP,KAAKlpE,MAAMk4E,iBACX;AAAA,UACE/O,cAAc;AAAA,QAChB,CACF;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEAg9C,sBACEmF,WAAW,MACXv7G,IAAgC,KAAKumE,UAAS,GAC1B;AACpB,WAAK00C,SAAS,MAAM;AAClB,YAAIM,SAAU,MAAK3gH,SAAe;AAClCoF,UAAE2sB,iBAAiB,KAAK0rF,YAAa;AAAA,MACvC,CAAC;AACD,aAAO,KAAK5xC,WAAWzmE,GAAG,kBAAkB;AAAA,IAC9C;AAAA,IAGAq4G,cAAwB;AAEtBnlE,aAAO,KAAKjjD,MAAMkqF,MAAM;AACxB,YAAM13E,OAAO,KAAK+4G,0BAA2B;AAE7C,UACE,KAAKvrH,MAAMuqF,qCACX,KAAKyJ,sBAAuB,KAC5B,CAAC,KAAKpI,IAAG,EAAY,GACrB;AACA,eAAOp5E;AAAAA,MACT;AACA,YAAMnR,QAAO,KAAKq3E,gBAAqClmE,IAAI;AAC3DnR,MAAAA,MAAKkiC,YAAY/wB;AAEjBnR,MAAAA,MAAKmiC,cAAc,KAAK4mF,oCAAoC,MAC1D,KAAKmB,2BACP;AAEA,WAAK5gH,OAAM,EAAY;AACvBtJ,MAAAA,MAAKoiC,WAAW,KAAK6lF,iCAAiC,MACpD,KAAKlB,aACP;AAEA,WAAKz9G,OAAM,EAAS;AACpBtJ,MAAAA,MAAKqiC,YAAY,KAAK4lF,iCAAiC,MACrD,KAAKlB,aACP;AAEA,aAAO,KAAK5xC,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEAmqH,iCAA0C;AACxC,aACE,KAAKj4B,aAAY,GAAa,KAAK,KAAKxH,UAAS,EAAGv5E,SAAgB;AAAA,IAExE;AAAA,IAEA+4G,4BAAsC;AACpC,UAAI,KAAKZ,2BAA2B;AAClC,eAAO,KAAKtB,iCAAiC,gBAAgB;AAAA,MAC/D;AACA,UAAI,KAAK12G,MAAK,EAAQ,GAAG;AAEvB,eAAO,KAAK02G,iCAAiC,mBAAmB;AAAA,MAClE,WAAW,KAAKmC,kCAAkC;AAEhD,eAAO,KAAKnC,iCACV,qBACe,IACjB;AAAA,MACF;AACA,aAAO,KAAKqB,yBAA0B;AAAA,IACxC;AAAA,IAEAe,uBAA0C;AACxC,UAAI,KAAK91C,gBAAgB,cAAc,0BAA0B,GAAG;AAClE,aAAKgC,MAAM8nC,SAAS6C,uBAAuB,KAAKtiH,MAAM4U,QAAQ;AAAA,MAChE;AAEA,YAAMvT,QAAO,KAAKi1E,UAA8B;AAChDj1E,MAAAA,MAAKq7B,iBAAiB,KAAKsuF,SAAS,MAAM;AACxC,aAAKl3F,KAAM;AACX,eAAO,KAAKnhB,MAAe,EAAA,IACvB,KAAKqzG,qBAAsB,IAC3B,KAAKoC,YAAa;AAAA,MACxB,CAAC;AACD,WAAKz9G,OAAM,EAAM;AACjBtJ,MAAAA,MAAK05B,aAAa,KAAK8uF,gBAAiB;AACxC,aAAO,KAAKrzC,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAIAqqH,sBACEtjH,QAC2D;AAC3D,YAAMujH,mBAAmB,KAAK3rH,MAAM4U;AAEpC,YAAMg3G,gBAAgB,KAAKxG,qBACzB,yBACA,MAAM;AA2BG;AACL,gBAAM/jH,QAAO,KAAKi1E,UAEf;AAEHj1E,UAAAA,MAAK05B,aAAa,KAAK8qF,kBACrBC,KAEF;AACA,cAAI,KAAKnzG,MAAK,EAAM,GAAG;AAErBtR,YAAAA,MAAKi6B,iBAAiB,KAAKyqF,qBAAsB;AAAA,UACnD;AAEA,iBAAO,KAAKvvC,WACVn1E,OAEA,+BACF;AAAA,QACF;AAAA,MACF,CACF;AAEA,UAAI,CAACuqH,cAAcp+G,QAAQ;AACzB,aAAKmqE,MAAM8nC,SAASe,yBAAyBmL,kBAAkB;AAAA,UAC7DvjH,OAAAA;AAAAA,QACF,CAAC;AAAA,MACH;AAEA,aAAOwjH;AAAAA,IAGT;AAAA,IAEAC,4BACExqH,OACAg8B,aAEI,IAC6B;AACjC,UAAI,KAAK42D,sBAAuB,EAAE,QAAO;AACzC,WAAKH,iBAAgB,GAAc;AACnC,UAAIz2D,WAAWrjB,QAAS3Y,CAAAA,MAAK2Y,UAAU;AACvC,UAAIkpE,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AACtCnR,QAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAChC,aAAKojB,gBAAgB59G,MAAKi7B,OAAiC;AAAA,MAC7D,OAAO;AACLj7B,QAAAA,MAAKi7B,KAAK;AACV,aAAKq7C,MAAM8nC,SAASoC,sBAAsB,KAAK7hH,MAAM4U,QAAQ;AAAA,MAC/D;AAEAvT,MAAAA,MAAKi6B,iBAAiB,KAAKorF,yBACzB,KAAKzC,0BACP;AACA,UAAI,KAAKr4B,IAAG,EAAY,GAAG;AACzBvqF,QAAAA,MAAKs/B,UAAU,KAAK+qF,sBAAsB,SAAS;AAAA,MACrD;AACA,YAAMxwF,OAAO,KAAKo7C,UAA8B;AAChDp7C,WAAKA,OAAO,KAAK8vF,SAAS,KAAKhD,yBAAyBtwD,KAAK,IAAI,CAAC;AAClEr2D,MAAAA,MAAK65B,OAAO,KAAKs7C,WAAWt7C,MAAM,iBAAiB;AACnD,aAAO,KAAKs7C,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAEAyqH,4BACEzqH,OAC0B;AAC1BA,MAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAChC,WAAKojB,gBAAgB59G,MAAKi7B,KAA4B;AAEtDj7B,MAAAA,MAAKq7B,iBAAiB,KAAKsuF,SAAS,MAAM;AACxC3pH,QAAAA,MAAKi6B,iBAAiB,KAAKorF,yBACzB,KAAK/C,qBACP;AAEA,aAAKh5G,OAAM,EAAM;AAEjB,YACE,KAAK4oF,aAAY,GAAc,KAC/B,KAAKxH,UAAW,EAACv5E,aACjB;AACA,gBAAMnR,QAAO,KAAKi1E,UAA4B;AAC9C,eAAKxiD,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,oBAAoB;AAAA,QACnD;AAEA,eAAO,KAAK+mH,YAAa;AAAA,MAC3B,CAAC;AAED,WAAKj0B,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,wBAAwB;AAAA,IACvD;AAAA,IAGA0qH,oBAAuBrtB,IAAgB;AACrC,UAAI,KAAK5S,iBAAiBxH,OAAGrL,OAAO;AAClC,cAAM0lB,aAAa,KAAK3+F,MAAMqZ;AAC9B,aAAKrZ,MAAMqZ,UAAU,CAACslF,WAAW,CAAC,CAAC;AACnC,YAAI;AACF,iBAAOD,GAAI;AAAA,QACb,UAAU;AACR,eAAK1+F,MAAMqZ,UAAUslF;AAAAA,QACvB;AAAA,MACF,OAAO;AACL,eAAOD,GAAI;AAAA,MACb;AAAA,IACF;AAAA,IAOAssB,SAAYtsB,IAAgB;AAC1B,YAAMtD,YAAY,KAAKp7F,MAAMkqF;AAC7B,WAAKlqF,MAAMkqF,SAAS;AACpB,UAAI;AACF,eAAOwU,GAAI;AAAA,MACb,UAAU;AACR,aAAK1+F,MAAMkqF,SAASkR;AAAAA,MACtB;AAAA,IACF;AAAA,IAEAgvB,oCAAuC1rB,IAAgB;AACrD,YAAMstB,uCACJ,KAAKhsH,MAAMuqF;AACb,WAAKvqF,MAAMuqF,oCAAoC;AAC/C,UAAI;AACF,eAAOmU,GAAI;AAAA,MACb,UAAU;AACR,aAAK1+F,MAAMuqF,oCACTyhC;AAAAA,MACJ;AAAA,IACF;AAAA,IAEA1C,iCAAoC5qB,IAAgB;AAClD,YAAMstB,uCACJ,KAAKhsH,MAAMuqF;AACb,WAAKvqF,MAAMuqF,oCAAoC;AAC/C,UAAI;AACF,eAAOmU,GAAI;AAAA,MACb,UAAU;AACR,aAAK1+F,MAAMuqF,oCACTyhC;AAAAA,MACJ;AAAA,IACF;AAAA,IAEAvF,mBAAmBr+G,QAAwC;AACzD,UAAI,KAAKuK,MAAMvK,MAAK,GAAG;AACrB,eAAO,KAAK6jH,oBAAqB;AAAA,MACnC;AAAA,IACF;AAAA,IAEA9D,sBAAsB//G,QAA4B;AAChD,aAAO,KAAK4iH,SAAS,MAAM;AACzB,aAAKrgH,OAAOvC,MAAK;AACjB,eAAO,KAAKggH,YAAa;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA6D,sBAAgC;AAC9B,aAAO,KAAKjB,SAAS,MAAM;AACzB,aAAKl3F,KAAM;AACX,eAAO,KAAKs0F,YAAa;AAAA,MAC3B,CAAC;AAAA,IACH;AAAA,IAEA8D,oBAAoC;AAClC,YAAM7qH,QAAO,KAAKi1E,UAA2B;AAE7Cj1E,MAAAA,MAAKi7B,KAAK,KAAK3pB,MAAe,GAAA,IAC1B,MAAM2hE,mBAAmB,KAAKt0E,MAAMkB,KAAK,IACzC,KAAK26F,gBAA8B,IAAI;AAC3C,UAAI,KAAKjQ,IAAG,EAAM,GAAG;AACnBvqF,QAAAA,MAAK6iC,cAAc,MAAMu+D,wBAAyB;AAAA,MACpD;AACA,aAAO,KAAKjsB,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAEA8qH,uBACE9qH,OACAg8B,aAGI,IACiB;AACrB,UAAIA,WAAW4G,MAAO5iC,CAAAA,MAAK4iC,QAAQ;AACnC,UAAI5G,WAAWrjB,QAAS3Y,CAAAA,MAAK2Y,UAAU;AACvC,WAAK85E,iBAAgB,GAAS;AAC9BzyF,MAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAChC,WAAKojB,gBACH59G,MAAKi7B,IACLj7B,MAAK4iC,QAAK,OAAA,IACZ;AAIO;AACL,aAAKt5B,OAAM,CAAU;AACrBtJ,QAAAA,MAAKmgC,UAAU,KAAK4jF,qBAClB,eACA,KAAK8G,kBAAkBx0D,KAAK,IAAI,CAClC;AACA,aAAK/sD,OAAM,CAAU;AAAA,MACvB;AACA,aAAO,KAAK6rE,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEA+qH,kBAAgC;AAC9B,YAAM/qH,QAAO,KAAKi1E,UAAyB;AAC3C,WAAK3rE,OAAM,CAAU;AACrBtJ,MAAAA,MAAKmgC,UAAU,KAAK4jF,qBAClB,eACA,KAAK8G,kBAAkBx0D,KAAK,IAAI,CAClC;AACA,WAAK/sD,OAAM,CAAU;AACrB,aAAO,KAAK6rE,WAAWn1E,OAAM,YAAY;AAAA,IAC3C;AAAA,IAEAgrH,qBAAsC;AACpC,YAAMhrH,QAAO,KAAKi1E,UAA4B;AAC9C,WAAKnW,MAAMtF,OAAqB;AAEhC,WAAKlwD,OAAM,CAAU;AAErB,YAAM2hH,4BACHjrH,MAAK65B,OAAO,CAAA,GACIxnB,QACF,OAEjB;AACA,WAAKysD,MAAM7B,KAAM;AACjB,aAAO,KAAKkY,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEAkrH,oCACElrH,OACAmrH,SAAkB,OACK;AACvBnrH,MAAAA,MAAKi7B,KAED,KAAKu/D,gBAAiB;AAE1B,UACiE,CAAC2wB,QAChE;AAEA,aAAKvN,gBAAgB59G,MAAKi7B,QAAiC;AAAA,MAC7D;AAEA,UAAqC,KAAKsvD,IAAG,EAAO,GAAG;AACrD,cAAM6gC,QAAQ,KAAKn2C,UAAkC;AACrD,aAAKi2C,oCAAoCE,OAAO,IAAI;AAEpDprH,QAAAA,MAAK65B,OAAOuxF;AAAAA,MACd,OAAO;AACL,aAAKtsD,MAAMtF,SAAyB;AACpC,aAAK86B,UAAU96B,OAAqB;AACpCx5D,QAAAA,MAAK65B,OAAO,KAAKmxF,mBAAoB;AACrC,aAAK12B,UAAUr3B,KAAM;AACrB,aAAK6B,MAAM7B,KAAM;AAAA,MACnB;AACA,aAAO,KAAKkY,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAEAqrH,wCACErrH,OACuB;AACvB,UAAI,KAAKkyF,aAAY,GAAW,GAAG;AACjClyF,QAAAA,MAAKi8B,OAAO;AACuB;AACjCj8B,UAAAA,MAAK8iC,SAAS;AAAA,QAChB;AACA9iC,QAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAAA,MACjC,WAAU,KAAKlpF,MAAK,GAAU,GAAG;AAChCtR,QAAAA,MAAKi8B,OAAO;AACZj8B,QAAAA,MAAKi7B,KAAK,MAAMg4C,mBAAmB,KAAKt0E,MAAMkB,KAAK;AAAA,MACrD,OAAO;AACL,aAAK0oE,WAAY;AAAA,MACnB;AACA,UAAI,KAAKj3D,MAAK,CAAU,GAAG;AACzB,aAAKwtD,MAAMtF,SAAyB;AACpC,aAAK86B,UAAU96B,OAAqB;AACpCx5D,QAAAA,MAAK65B,OAAO,KAAKmxF,mBAAoB;AACrC,aAAK12B,UAAUr3B,KAAM;AACrB,aAAK6B,MAAM7B,KAAM;AAAA,MACnB,OAAO;AACL,aAAK61B,UAAW;AAAA,MAClB;AAEA,aAAO,KAAK3d,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAEAsrH,+BACEtrH,OACAurH,wBACAvoF,UAC6B;AACM;AACjChjC,QAAAA,MAAKgjC,WAAWA,YAAY;AAAA,MAC9B;AACAhjC,MAAAA,MAAKi7B,KAAKswF,0BAA0B,KAAK/wB,gBAAiB;AAC1D,WAAKojB,gBAAgB59G,MAAKi7B,QAAoC;AAC9D,WAAK3xB,OAAM,EAAM;AACjB,YAAM25B,kBAAkB,KAAKuoF,uBAAwB;AACrD,UACExrH,MAAKk+B,eAAe,UACpB+E,gBAAgB9xB,SAAS,6BACzB;AACA,aAAKmlE,MAAM8nC,SAASmB,0BAA0Bt8E,eAAe;AAAA,MAC/D;AACAjjC,MAAAA,MAAKijC,kBAAkBA;AACvB,WAAK6vD,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,2BAA2B;AAAA,IAC1D;AAAA,IAEAyrH,8BAAuC;AACrC,aACE,KAAKv5B,aAAwB,GAAA,KAC7B,KAAKlH,kBAAiB,MAAgC;AAAA,IAE1D;AAAA,IAEAwgC,yBAA8C;AAC5C,aAAO,KAAKC,4BAA2B,IACnC,KAAKC,+BAA8B,IACnC,KAAKlH,mBAA6C;AAAA,IACxD;AAAA,IAEAkH,iCAA8D;AAC5D,YAAM1rH,QAAO,KAAKi1E,UAAwC;AAC1D,WAAKwd,iBAAgB,GAAY;AACjC,WAAKnpF,OAAM,EAAU;AACrB,UAAI,CAAC,KAAKgI,MAAK,GAAU,GAAG;AAC1B,aAAKi3D,WAAY;AAAA,MACnB;AAEAvoE,MAAAA,MAAK05B,aAAa,MAAM8hE,cAAkC;AAC1D,WAAKlyF,OAAM,EAAU;AACrB,WAAKg8E,oBAAoB;AACzB,aAAO,KAAKnQ,WAAWn1E,OAAM,2BAA2B;AAAA,IAC1D;AAAA,IAIAmmH,YAAez2G,GAAe;AAC5B,YAAM/Q,SAAQ,KAAKA,MAAM24D,MAAO;AAChC,YAAM1lC,MAAMliB,EAAG;AACf,WAAK/Q,QAAQA;AACb,aAAOizB;AAAAA,IACT;AAAA,IAEA+5F,mBACEj8G,GACsB;AACtB,YAAMqpD,SAAS,KAAKi6B,SAClB6S,WAEEn2F,EAAC,KAAMm2F,OACX;AAEA,UAAI9sC,OAAOs6B,WAAW,CAACt6B,OAAO/4D,KAAM;AACpC,UAAI+4D,OAAOj6D,MAAO,MAAKH,QAAQo6D,OAAOo6B;AAEtC,aAAOp6B,OAAO/4D;AAAAA,IAChB;AAAA,IAEAojH,WAAc1zG,GAA+C;AAC3D,YAAM/Q,SAAQ,KAAKA,MAAM24D,MAAO;AAChC,YAAMyB,SAASrpD,EAAG;AAClB,UAAIqpD,WAAW1mD,UAAa0mD,WAAW,OAAO;AAC5C,eAAOA;AAAAA,MACT;AACA,WAAKp6D,QAAQA;AAAAA,IACf;AAAA,IAEAitH,kBAAkBC,MAAW;AAC3B,UAAI,KAAKh5B,oBAAoB;AAC3B;AAAA,MACF;AACA,UAAIi5B,YAAY,KAAKntH,MAAMwS;AAC3B,UAAI8qB;AAEJ,UAAI,KAAKi2D,aAAY,GAAQ,GAAG;AAC9B45B,oBAAmB;AACnB7vF,eAAO;AAAA,MACT;AAEA,aAAO,KAAK8vF,mBAAmB,MAAM;AACnC,gBAAQD,WAAS;AAAA,UACf,KAAA;AACED,iBAAKlzG,UAAU;AACf,mBAAO,MAAMqzG,uBACXH,MACY,OACe,KAC7B;AAAA,UACF,KAAA;AAGEA,iBAAKlzG,UAAU;AACf,mBAAO,KAAKszG,WACVJ,MACkB,MACD,KACnB;AAAA,UACF,KAAA;AACE,mBAAO,KAAKf,uBAAuBe,MAAM;AAAA,cAAElzG,SAAS;AAAA,YAAK,CAAC;AAAA,UAC5D,KAAA;AACE,mBAAO,KAAK0yG,wCAAwCQ,IAAI;AAAA,UAC1D,KAAA;AAAA,UACA,KAAA;AACE,gBAAI,CAAC,KAAKv6G,QAAe,KAAK,CAAC,KAAKihF,sBAAsB,MAAM,GAAG;AACjEs5B,mBAAKlzG,UAAU;AACf,qBAAO,KAAKuzG,kBACVL,MACA5vF,QAAQ,KAAKt9B,MAAMkB,OACnB,IACF;AAAA,YACF;AAGA,iBAAKyJ,OAAM,EAAU;AACrB,mBAAO,KAAKwhH,uBAAuBe,MAAM;AAAA,cACvCjpF,OAAO;AAAA,cACPjqB,SAAS;AAAA,YACX,CAAC;AAAA,UACH,KAAA,KAAoB;AAClB,kBAAMogD,SAAS,KAAKyxD,4BAA4BqB,MAAM;AAAA,cACpDlzG,SAAS;AAAA,YACX,CAAC;AACD,gBAAIogD,OAAQ,QAAOA;AAAAA,UACrB;AAAA,UAEA;AACE,gBAAI8oB,kBAAkBiqC,SAAS,GAAG;AAChC,qBAAO,KAAKK,mBACVN,MACA,KAAKltH,MAAMkB,OACA,MACM,IACnB;AAAA,YACF;AAAA,QACJ;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAGAusH,8BAAyD;AACvD,aAAO,KAAKD,mBACV,KAAKl3C,UAAS,GACd,KAAKt2E,MAAMkB,OACA,MACM,IACnB;AAAA,IACF;AAAA,IAEAwsH,2BACErsH,OACA0gG,MACAplE,aAC2B;AAC3B,cAAQolE,KAAKj0F,MAAI;AAAA,QACf,KAAK,WAAW;AACd,gBAAMgxB,cAAc,KAAKmuF,kBAAkB5rH,KAAI;AAC/C,cAAIy9B,aAAa;AACfA,wBAAY9kB,UAAU;AAAA,UACxB;AACA,iBAAO8kB;AAAAA,QACT;AAAA,QACA,KAAK;AAGH,cAAI,KAAKnsB,MAAK,CAAU,GAAG;AACzB,iBAAKwtD,MAAMtF,SAAyB;AACpC,iBAAK86B,UAAU96B,OAAqB;AACpC,kBAAM8yD,MAAMtsH;AACZssH,gBAAIrwF,OAAO;AACwB;AACjCj8B,cAAAA,MAAK8iC,SAAS;AAAA,YAChB;AACAwpF,gBAAIrxF,KAAKylE;AACT4rB,gBAAIzyF,OAAO,KAAKmxF,mBAAoB;AACpC,iBAAKlsD,MAAM7B,KAAM;AACjB,iBAAKq3B,UAAUr3B,KAAM;AACrB,mBAAO,KAAKkY,WAAWm3C,KAAK,qBAAqB;AAAA,UACnD;AACA;AAAA,QAEF;AACE,iBAAO,KAAKH,mBACVnsH,OACA0gG,KAAKj0F,MACM,OACX6uB,WACF;AAAA,MACJ;AAAA,IACF;AAAA,IAGA6wF,mBACEnsH,OACAH,QACA4yB,MACA6I,aACA;AAEA,cAAQz7B,QAAK;AAAA,QACX,KAAK;AACH,cACE,KAAK0sH,sBAAsB95F,IAAI,MAC9B,KAAKnhB,MAAK,EAAU,KAAKuwE,kBAAkB,KAAKljF,MAAMwS,IAAI,IAC3D;AACA,mBAAO,KAAKq7G,2BAA2BxsH,OAAMs7B,WAAU;AAAA,UACzD;AACA;AAAA,QAEF,KAAK;AACH,cAAI,KAAKixF,sBAAsB95F,IAAI,GAAG;AACpC,gBAAI,KAAKnhB,MAAK,GAAU,GAAG;AACzB,qBAAO,KAAK+5G,wCAAwCrrH,KAAI;AAAA,YACzD,WAAU6hF,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AAC7CnR,cAAAA,MAAKi8B,OAAO;AACZ,qBAAO,KAAKivF,oCAAoClrH,KAAI;AAAA,YACtD;AAAA,UACF;AACA;AAAA,QAEF,KAAK;AACH,cACE,KAAKusH,sBAAsB95F,IAAI,KAC/BovD,kBAAkB,KAAKljF,MAAMwS,IAAI,GACjC;AACAnR,YAAAA,MAAKi8B,OAAO;AACZ,mBAAO,KAAKivF,oCAAoClrH,KAAI;AAAA,UACtD;AACA;AAAA,QAEF,KAAK;AACH,cACE,KAAKusH,sBAAsB95F,IAAI,KAC/BovD,kBAAkB,KAAKljF,MAAMwS,IAAI,GACjC;AACA,mBAAO,KAAKs5G,4BAA4BzqH,KAAI;AAAA,UAC9C;AACA;AAAA,MACJ;AAAA,IACF;AAAA,IAEAusH,sBAAsB95F,MAAe;AACnC,UAAIA,MAAM;AACR,YAAI,KAAKmgE,sBAAuB,EAAE,QAAO;AACzC,aAAKngE,KAAM;AACX,eAAO;AAAA,MACT;AACA,aAAO,CAAC,KAAKogE,iBAAkB;AAAA,IACjC;AAAA,IAEA45B,oCACEl5G,UACuC;AACvC,UAAI,CAAC,KAAKjC,MAAK,EAAM,EAAG;AAExB,YAAMo7G,4BAA4B,KAAK/tH,MAAMiqF;AAC7C,WAAKjqF,MAAMiqF,yBAAyB;AAEpC,YAAMh3D,MACJ,KAAK+5F,mBAAmB,MAAM;AAC5B,cAAM3rH,QAAO,KAAKq1F,YAAuC9hF,QAAQ;AACjEvT,QAAAA,MAAKi6B,iBAAiB,KAAKqrF,sBACzB,KAAK3C,oBACP;AAEA,cAAMxd,oBAAoBnlG,KAAI;AAC9BA,QAAAA,MAAK+6B,aAAa,KAAKivF,wCAAyC;AAChE,aAAK1gH,OAAM,EAAS;AACpB,eAAOtJ;AAAAA,MACT,CAAC;AAEH,WAAKrB,MAAMiqF,yBAAyB8jC;AAEpC,UAAI,CAAC96F,IAAK;AAEV,aAAO,MAAMo1E,qBACXp1E,KAC6B,MACjB,IACd;AAAA,IACF;AAAA,IAIA+6F,mCAEc;AACZ,UAAI,KAAKnvB,UAAW,SAAY;AAChC,aAAO,KAAKknB,qBAAsB;AAAA,IACpC;AAAA,IAEAA,uBAAuD;AACrD,YAAM1kH,QAAO,KAAKi1E,UAA2C;AAC7Dj1E,MAAAA,MAAK26B,SAAS,KAAKgvF,SAAS,MAC1B,KAAKe,oBAAoB,MAAM;AAC7B,aAAKphH,OAAM,EAAM;AACjB,eAAO,KAAKy6G,qBACV,6BACA,KAAKgD,YAAY1wD,KAAK,IAAI,CAC5B;AAAA,MACD,CAAA,CACH;AACA,UAAIr2D,MAAK26B,OAAOxuB,WAAW,GAAG;AAC5B,aAAKmqE,MAAM8nC,SAASgB,oBAAoBp/G,KAAI;AAAA,MAC9C,WAAW,CAAC,KAAKrB,MAAMkqF,UAAU,KAAK4B,WAAU,MAAOxH,OAAGrL,OAAO;AAG/D,aAAK8lB,aAAc;AAAA,MACrB;AACA,WAAKp0F,OAAM,EAAM;AACjB,aAAO,KAAK6rE,WAAWn1E,OAAM,8BAA8B;AAAA,IAC7D;AAAA,IAEA4sH,uBAAgC;AAC9B,aAAOjqC,0BAA0B,KAAKhkF,MAAMwS,IAAI;AAAA,IAClD;AAAA,IAMAmV,2BAAoC;AAClC,UAAI,KAAKsmG,qBAAsB,EAAE,QAAO;AACxC,aAAO,MAAMtmG,yBAA0B;AAAA,IACzC;AAAA,IAEA82F,oBACExhF,OACAN,aACmC;AAEnC,YAAM/nB,WAAW,KAAK5U,MAAM4U;AAE5B,YAAM8vG,WAAyB,CAAE;AACjC,WAAKd,iBACH;AAAA,QACEC,kBAAkB,CAChB,UACA,WACA,aACA,YACA,UAAU;AAAA,MAEb,GACDa,QACF;AACA,YAAMjlF,gBAAgBilF,SAASjlF;AAC/B,YAAME,WAAW+kF,SAAS/kF;AAC1B,YAAMY,WAAWmkF,SAASnkF;AAC1B,UACE,EAAEtD,QAAK,OACNwC,iBAAiBc,YAAYZ,WAC9B;AACA,aAAKg4C,MAAM8nC,SAASsD,6BAA6BnuG,QAAQ;AAAA,MAC3D;AAEA,YAAMgmB,OAAO,KAAK4qE,kBAAmB;AACrC,UAAIvoE,WAAkD;AACpD,aAAKsoE,uBAAuB3qE,IAAI;AAAA,MAClC;AACA,YAAM+iF,MAAM,KAAKnY,kBAAkB5qE,KAAKjmB,IAAII,OAAO6lB,IAAI;AACvD,UAAI6E,iBAAiBc,YAAYZ,UAAU;AACzC,cAAMuuF,KAAK,KAAKx3B,YAAmC9hF,QAAQ;AAC3D,YAAI+nB,YAAWnvB,QAAQ;AACrB0gH,aAAGvxF,aAAaA;AAAAA,QAClB;AACA,YAAI8C,cAAeyuF,IAAGzuF,gBAAgBA;AACtC,YAAIc,SAAU2tF,IAAG3tF,WAAWA;AAC5B,YAAIZ,SAAUuuF,IAAGvuF,WAAWA;AAC5B,YAAIg+E,IAAInrG,SAAS,gBAAgBmrG,IAAInrG,SAAS,qBAAqB;AACjE,eAAKmlE,MAAM8nC,SAAS2D,kCAAkC8K,EAAE;AAAA,QAC1D;AACAA,WAAGxrF,YAAYi7E;AACf,eAAO,KAAKnnC,WAAW03C,IAAI,qBAAqB;AAAA,MAClD;AAEA,UAAIvxF,YAAWnvB,QAAQ;AACrBotB,aAAK+B,aAAaA;AAAAA,MACpB;AAEA,aAAOghF;AAAAA,IACT;AAAA,IAEAwQ,kBAAkB9sH,OAAkD;AAClE,aACGA,MAAKmR,SAAS,yBACb,MAAM27G,kBAAkB9sH,MAAKqhC,SAAS,KACxC,MAAMyrF,kBAAkB9sH,KAAI;AAAA,IAEhC;AAAA,IAEA+sH,0BAA0B/sH,OAA0B;AAClD,iBAAWk6B,SAASl6B,MAAK26B,QAAQ;AAC/B,YACET,MAAM/oB,SAAS,gBACd+oB,MAAc3F,YACf,CAAC,KAAK51B,MAAMqqF,kBACZ;AACA,eAAK1S,MAAM8nC,SAAS3mB,mBAAmBv9D,KAAK;AAAA,QAC9C;AAAA,MACF;AAAA,IACF;AAAA,IAEAisE,2BACEnmG,OACA26B,QACAgnE,kBACM;AACN,YAAMwE,2BAA2BnmG,OAAM26B,QAAQgnE,gBAAgB;AAC/D,WAAKorB,0BAA0B/sH,KAAI;AAAA,IACrC;AAAA,IAEAsgG,2BAMEtgG,OAAiBmR,MAAiByb,WAAoB,OAAU;AAChE,UAAI,KAAKtb,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAK+6B,aAAa,KAAK+qF,uCAA6C;AAAA,MACtE;AAEA,YAAMkH,eACJ77G,SAAS,wBACL,sBACAA,SAAS,iBAAiBA,SAAS,uBACjC,oBACAkB;AACR,UAAI26G,gBAAgB,CAAC,KAAK17G,MAAK,CAAU,KAAK,KAAKuhF,oBAAoB;AACrE,eAAO,KAAK1d,WAAWn1E,OAAMgtH,YAAY;AAAA,MAC3C;AACA,UAAIA,iBAAiB,uBAAuB,KAAKruH,MAAMqqF,kBAAkB;AACvE,aAAK1S,MAAM8nC,SAASW,kCAAkC/+G,KAAI;AAC1D,YAAKA,MAAuC2Y,SAAS;AACnD,iBAAO,MAAM2nF,2BAA2BtgG,OAAMgtH,cAAcpgG,QAAQ;AAAA,QACtE;AAAA,MACF;AACA,WAAKmgG,0BAA0B/sH,KAAI;AAEnC,aAAO,MAAMsgG,2BAA2BtgG,OAAMmR,MAAMyb,QAAQ;AAAA,IAC9D;AAAA,IAEAqgG,4BAA4BjtH,OAAwB;AAClD,UAAI,CAACA,MAAK65B,QAAQ75B,MAAKi7B,IAAI;AAGzB,aAAK2iF,gBAAgB59G,MAAKi7B,QAA+B;AAAA,MAC3D,OAAO;AACL,cAAMgyF,4BAA4BjtH,KAAI;AAAA,MACxC;AAAA,IACF;AAAA,IAEAktH,2BAA2BC,OAA8C;AACvEA,YAAMr0F,QAAQ94B,CAAAA,UAAQ;AACpB,aAAIA,SAAAA,OAAAA,SAAAA,MAAMmR,UAAS,wBAAwB;AACzC,eAAKmlE,MAAM8nC,SAASwD,0BAA0B5hH,MAAKq7B,cAAc;AAAA,QACnE;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA0nE,iBACED,UAEAsqB,YACwC;AAKxC,WAAKF,2BAA2BpqB,QAAQ;AACxC,aAAOA;AAAAA,IACT;AAAA,IAEAI,eACEC,OACAC,cACAC,SACA1tB,qBACuC;AACvC,YAAM31E,QAAO,MAAMkjG,eACjBC,OACAC,cACAC,SACA1tB,mBACF;AAEA,UAAI31E,MAAKmR,SAAS,mBAAmB;AACnC,aAAK+7G,2BAA2BltH,MAAKk5B,QAAQ;AAAA,MAC/C;AAEA,aAAOl5B;AAAAA,IACT;AAAA,IAEAg3E,eACE/3E,OAEAsU,UACA0jE,SACAt4E,QACc;AACd,UAAI,CAAC,KAAKg0F,sBAAqB,KAAM,KAAKrhF,MAAa,EAAA,GAAG;AAIxD,aAAK3S,MAAM0qF,qBAAqB;AAChC,aAAK52D,KAAM;AAEX,cAAM46F,oBACJ,KAAKh4B,YAAmC9hF,QAAQ;AAClD85G,0BAAkB3zF,aAAaz6B;AAC/B,eAAO,KAAKk2E,WAAWk4C,mBAAmB,qBAAqB;AAAA,MACjE;AAEA,UAAIC,iBAAiB;AACrB,UACE,KAAKh8G,MAAK,EAAe,KACzB,KAAK05E,kBAAmB,MAAA,IACxB;AACA,YAAI/T,SAAS;AACXt4E,UAAAA,OAAMy4E,OAAO;AACb,iBAAOn4E;AAAAA,QACT;AACAN,QAAAA,OAAMu4E,sBAAsBo2C,iBAAiB;AAC7C,aAAK76F,KAAM;AAAA,MACb;AAGA,UAAI,KAAKnhB,MAAW,EAAA,KAAK,KAAKA,MAAkB,EAAA,GAAG;AACjD,YAAIi8G;AAIJ,cAAMx0D,SAAS,KAAK4yD,mBAAmB,MAAM;AAC3C,cAAI,CAAC10C,WAAW,KAAKu2C,qBAAqBvuH,KAAI,GAAG;AAG/C,kBAAMwuH,eACJ,KAAKhB,oCAAoCl5G,QAAQ;AACnD,gBAAIk6G,cAAc;AAChB,qBAAOA;AAAAA,YACT;AAAA,UACF;AAEA,gBAAMzzF,gBAAgB,KAAK2yF,iCAAkC;AAC7D,cAAI,CAAC3yF,cAAe;AAEpB,cAAIszF,kBAAkB,CAAC,KAAKh8G,MAAK,EAAU,GAAG;AAC5Ci8G,mCAAuB,KAAK5uH,MAAM6qF,YAAa;AAC/C;AAAA,UACF;AAEA,cAAIzG,gBAAgB,KAAKpkF,MAAMwS,IAAI,GAAG;AACpC,kBAAM4nD,UAAS,MAAM20D,8BACnBzuH,OACAsU,UACA5U,MACF;AAGO;AACLo6D,cAAAA,QAAO9+B,iBAAiBD;AAAAA,YAC1B;AACA,mBAAO++B;AAAAA,UACT;AAEA,cAAI,CAACke,WAAW,KAAKsT,IAAG,EAAU,GAAG;AACnC,kBAAMvqF,QAAO,KAAKq1F,YAEhB9hF,QAAQ;AACVvT,YAAAA,MAAKs3B,SAASr4B;AAEde,YAAAA,MAAK+5B,YAAY,KAAK2sE,+BAAsC;AAG5D,iBAAKwmB,2BAA2BltH,MAAK+5B,SAAS;AAIvC;AACL/5B,cAAAA,MAAKi6B,iBAAiBD;AAAAA,YACxB;AAEA,gBAAIr7B,OAAMu4E,qBAAqB;AAC5Bl3E,cAAAA,MAA0Cu0B,WACzC+4F;AAAAA,YACJ;AAEA,mBAAO,KAAK/2C,qBAAqBv2E,OAAMrB,OAAMu4E,mBAAmB;AAAA,UAClE;AAEA,gBAAMy2C,YAAY,KAAKhvH,MAAMwS;AAC7B,cAEEw8G,oBAEAA,oBAECA,oBACCzrC,wBAAwByrC,SAAS,KACjC,CAAC,KAAKh7B,sBAAqB,GAC7B;AAEA;AAAA,UACF;AAEA,gBAAM3yF,QAAO,KAAKq1F,YAAyC9hF,QAAQ;AACnEvT,UAAAA,MAAK05B,aAAaz6B;AAGX;AACLe,YAAAA,MAAKi6B,iBAAiBD;AAAAA,UACxB;AACA,iBAAO,KAAKm7C,WAAWn1E,OAAM,2BAA2B;AAAA,QAC1D,CAAC;AAED,YAAIutH,sBAAsB;AACxB,eAAKhlD,WAAWglD,wBAA+B;AAAA,QACjD;AAEA,YAAIx0D,QAAQ;AACV,cACEA,OAAO5nD,SAAS,gCACf,KAAKG,MAAK,EAAO,KACf,KAAKA,MAAoB,EAAA,KACxB,KAAK05E,kBAAmB,MAA+B,KAC3D;AACA,iBAAK1U,MACH8nC,SAASkC,mDACT,KAAK3hH,MAAM4U,QACb;AAAA,UACF;AACA,iBAAOwlD;AAAAA,QACT;AAAA,MACF;AAEA,aAAO,MAAMie,eAAe/3E,OAAMsU,UAAU0jE,SAASt4E,MAAK;AAAA,IAC5D;AAAA,IAEAmoG,eAAe9mG,OAA6B;AAAA,UAAA4tH;AAC1C,YAAM9mB,eAAe9mG,KAAI;AAEzB,YAAM;AAAA,QAAEs3B;AAAAA,MAAQ,IAAGt3B;AACnB,UACEs3B,OAAOnmB,SAAS,+BAChB,GAAAy8G,gBAACt2F,OAAO6/B,UAAK,QAAZy2D,cAAc95C,gBACf;AAGO;AACL9zE,UAAAA,MAAKi6B,iBAAiB3C,OAAO2C;AAAAA,QAC/B;AACAj6B,QAAAA,MAAKs3B,SAASA,OAAOoC;AAAAA,MACvB;AAAA,IACF;AAAA,IAEAm0F,YACEt0F,MACAu0F,cACAC,SACc;AACd,UAAIC;AACJ,UACEnrC,wBAAuB,EAAO,IAAIkrC,WAClC,CAAC,KAAKp7B,4BACL,KAAKT,aAAmB,EAAA,MACtB87B,cAAc,KAAK97B,aAA0B,GAAA,KAChD;AACA,cAAMlyF,QAAO,KAAKq1F,YAEhBy4B,YAAY;AACd9tH,QAAAA,MAAK05B,aAAaH;AAClBv5B,QAAAA,MAAKq7B,iBAAiB,KAAKsuF,SAAS,MAAM;AACxC,eAAKl3F,KAAM;AACX,cAAI,KAAKnhB,MAAK,EAAU,GAAG;AACzB,gBAAI08G,aAAa;AACf,mBAAK13C,MAAMxF,OAAO7E,mBAAmB,KAAKttE,MAAM4U,UAAU;AAAA,gBACxD3T,SAAS;AAAA,cACX,CAAC;AAAA,YACH;AACA,mBAAO,KAAK+kH,qBAAsB;AAAA,UACpC;AAEA,iBAAO,KAAKoC,YAAa;AAAA,QAC3B,CAAC;AACD,aAAK5xC,WACHn1E,OACAguH,cAAc,0BAA0B,gBAC1C;AAEA,aAAKtwB,aAAc;AACnB,eAAO,KAAKmwB,YAEV7tH,OACA8tH,cACAC,OACF;AAAA,MACF;AAEA,aAAO,MAAMF,YAAYt0F,MAAMu0F,cAAcC,OAAO;AAAA,IACtD;AAAA,IAEA9oB,kBACE33F,MACAiG,UACA06G,eACA7wD,YACM;AAGN,UAAI,CAAC,KAAKz+D,MAAMqqF,kBAAkB;AAChC,cAAMic,kBAAkB33F,MAAMiG,UAAU06G,eAAe7wD,UAAS;AAAA,MAClE;AAAA,IACF;AAAA,IAEAgnC,sBAAsBpkG,OAAmC;AACvD,YAAMokG,sBAAsBpkG,KAAI;AAChC,UAAIA,MAAKK,UAAUL,MAAKk+B,eAAe,SAAS;AAC9C,aAAKo4C,MACH8nC,SAASpnB,+BACTh3F,MAAK09B,WAAW,CAAC,EAAEpqB,IAAII,KACzB;AAAA,MACF;AAAA,IACF;AAAA,IAWAw6G,wBAAwB;AAAA,IAAA;AAAA,IAExB3pB,uBAAuBvhE,UAA4B;AACjD,UAAI,MAAMuhE,uBAAuBvhE,QAAQ,EAAG,QAAO;AACnD,UAAI,KAAKkvD,aAAY,GAAS,GAAG;AAC/B,cAAMrhE,KAAK,KAAKm6D,kBAAmB;AACnC,eAAOhoD,WACHnS,OAAE,OAAiCA,OAAE,KACrCA,OAAyB;AAAA,MAC/B;AACA,aAAO,CAACmS,YAAY,KAAKkvD,eAAuB;AAAA,IAClD;AAAA,IAEAsS,iBACExkG,OACAgjC,UACA/E,OACA3qB,KACM;AACN,YAAMkxF,iBAAiBxkG,OAAMgjC,UAAU/E,OAAO3qB,GAAG;AACjD,UAAI0vB,UAAU;AACXhjC,QAAAA,MAAkCw9B,aACjCS,UAAU,SAAS,SAAS;AAAA,MAChC,OAAO;AACJj+B,QAAAA,MAA6Bk+B,aAC5BD,UAAU,UAAUA,UAAU,WAAWA,QAAQ;AAAA,MACrD;AAAA,IACF;AAAA,IAEAy9D,YACE17F,OACa;AACb,UAAI,KAAKsR,MAAK,GAAU,GAAG;AACzBtR,QAAAA,MAAKk+B,aAAa;AAClB,eAAO,MAAMw9D,YAAY17F,KAAmC;AAAA,MAC9D;AAEA,UAAImuH;AACJ,UACEtsC,kBAAkB,KAAKljF,MAAMwS,IAAI,KACjC,KAAK65E,kBAAmB,UACxB;AACAhrF,QAAAA,MAAKk+B,aAAa;AAClB,eAAO,KAAKotF,+BACVtrH,KACF;AAAA,MACD,WAAU,KAAKkyF,aAAY,GAAS,GAAG;AACtC,cAAMq5B,yBAAyB,KAAK6C,sBAClCpuH,OACe,KACjB;AACA,YAAI,KAAKgrF,kBAAmB,UAAyB;AACnD,iBAAO,KAAKsgC,+BACVtrH,OACAurH,sBACF;AAAA,QACF,OAAO;AACL4C,uBAAa,MAAME,8BACjBruH,OACAurH,sBACF;AAAA,QACF;AAAA,MACF,OAAO;AACL4C,qBAAa,MAAMzyB,YAAY17F,KAAmC;AAAA,MACpE;AAIA,UACEmuH,WAAWjwF,eAAe,UAE1BiwF,WAAWzwF,WAAWvxB,SAAS,KAE/BgiH,WAAWzwF,WAAW,CAAC,EAAEvsB,SAAS,0BAClC;AACA,aAAKmlE,MAAM8nC,SAASmD,wCAAwC4M,UAAU;AAAA,MACxE;AAEA,aAAOA;AAAAA,IACT;AAAA,IAEAx3C,YACE32E,OAKAs7B,aACa;AACb,UAAI,KAAKhqB,MAAK,EAAW,GAAG;AAE1B,cAAMg9G,mBAEDtuH;AACL,aAAKyyB,KAAM;AACX,YAAI84F,yBAA8C;AAClD,YACE,KAAKr5B,aAAY,GAAS,KAE1B,KAAKqS,uBAAsC,KAAK,GAChD;AACAgnB,mCAAyB,KAAK6C,sBAC5BE,kBACe,KACjB;AAAA,QACF,OAAO;AACLA,2BAAiBpwF,aAAa;AAAA,QAChC;AACA,cAAMT,cAAc,KAAK6tF,+BACvBgD,kBACA/C,wBACe,IACjB;AAKO;AACL,iBAAO9tF;AAAAA,QACT;AAAA,MACD,WAAU,KAAK8sD,IAAG,EAAM,GAAG;AAE1B,cAAM/2E,SAASxT;AACfwT,eAAOkmB,aAAa,MAAMygE,gBAAiB;AAC3C,aAAKrH,UAAW;AAChB,aAAKxN,oBAAoB;AACzB,eAAO,KAAKnQ,WAAW3hE,QAAQ,oBAAoB;AAAA,MACpD,WAAU,KAAKg/E,cAAa,EAAO,GAAG;AAErC,cAAMz1D,OAAO/8B;AAEb,aAAKyyF,iBAAgB,GAAc;AACnC11D,aAAK9B,KAAK,KAAKu/D,gBAAiB;AAChC,aAAK1H,UAAW;AAChB,eAAO,KAAK3d,WAAWp4C,MAAM,8BAA8B;AAAA,MAC7D,OAAO;AACL,eAAO,MAAM45C,YACX32E,OACAs7B,WACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAizF,kBAA2B;AACzB,aACE,KAAKr8B,aAAY,GAAa,KAAK,KAAKxH,UAAS,EAAGv5E,SAAkB;AAAA,IAE1E;AAAA,IAEAyvF,+BAA0E;AACxE,UAAI,KAAK2tB,mBAAmB;AAC1B,cAAMC,MAAM,KAAKv5C,UAAoB;AACrC,aAAKxiD,KAAM;AACX+7F,YAAIpxF,WAAW;AACf,eAAO,KAAK6uF,WAAWuC,KAAK,MAAM,IAAI;AAAA,MACxC;AAIA,UAAI,KAAKl9G,MAAK,GAAc,GAAG;AAC7B,cAAMynD,SAAS,KAAKyxD,4BAClB,KAAKv1C,UAAS,CAChB;AACA,YAAIlc,OAAQ,QAAOA;AAAAA,MACrB;AAEA,aAAO,MAAM6nC,6BAA8B;AAAA,IAC7C;AAAA,IAEAsrB,kBACElsH,OACAi8B,MACAwyF,0BAAmC,OACnC;AACA,YAAM;AAAA,QAAEzlC;AAAAA,MAAkB,IAAG,KAAKrqF;AAClC,YAAM8+B,cAAc,MAAMyuF,kBACxBlsH,OACAi8B,MACAwyF,2BAA2BzlC,gBAC7B;AAEA,UAAI,CAACA,iBAAkB,QAAOvrD;AAE9B,iBAAW;AAAA,QAAExC;AAAAA,QAAIT;AAAAA,MAAK,KAAKiD,YAAYZ,cAAc;AAEnD,YAAI,CAACrC,KAAM;AAGX,YAAIyB,SAAS,WAAW,CAAC,CAAChB,GAAGI,gBAAgB;AAC3C,eAAKi7C,MAAM8nC,SAAS2B,uCAAuCvlF,IAAI;AAAA,QACjE,WACE,CAACk0F,+BAA+Bl0F,MAAM,KAAKorD,UAAU,QAAQ,CAAC,GAC9D;AACA,eAAKtP,MACH8nC,SAASnuC,oEACTz1C,IACF;AAAA,QACF;AAAA,MACF;AAEA,aAAOiD;AAAAA,IACT;AAAA,IAEAkxF,sBACE/yF,OACAN,aACa;AACb,UAAI,KAAKhqB,MAAK,EAAU,KAAK,KAAKihF,sBAAsB,MAAM,GAAG;AAC/D,cAAMvyF,QAAO,KAAKi1E,UAAgC;AAClD,aAAK3rE,OAAM,EAAU;AACrB,eAAO,KAAKwhH,uBAAuB9qH,OAAM;AAAA,UAAE4iC,OAAO;AAAA,QAAK,CAAC;AAAA,MAC1D;AAEA,UAAI,KAAKsvD,aAAY,GAAS,GAAG;AAC/B,eAAO,KAAK44B,uBACV,KAAK71C,UAAS,CAChB;AAAA,MACF;AAEA,UAAI,KAAKid,aAAY,GAAc,GAAG;AACpC,cAAMn5B,SAAS,KAAKyxD,4BAA4B,KAAKv1C,UAAS,CAAE;AAChE,YAAIlc,OAAQ,QAAOA;AAAAA,MACrB;AAEA,aAAO,MAAM41D,sBAAsB/yF,OAAON,WAAU;AAAA,IACtD;AAAA,IAEAszF,sBAA0D;AACxD,aAAO,KAAK3L,gBAAgB,CAAC,UAAU,aAAa,SAAS,CAAC;AAAA,IAChE;AAAA,IAEA4L,mBAAmBlgG,QAAa8wF,WAA2C;AACzE,aAAOA,UAAUlwB,KAAK0vB,cAAY;AAChC,YAAIiD,mBAAmBjD,QAAQ,GAAG;AAChC,iBAAOtwF,OAAOyP,kBAAkB6gF;AAAAA,QAClC;AACA,eAAO,CAAC,CAACtwF,OAAOswF,QAAQ;AAAA,MAC1B,CAAC;AAAA,IACH;AAAA,IAEAkE,0BAA0B;AACxB,aACE,KAAKjxB,aAAuB,GAAA,KAC5B,KAAKlH,kBAAiB,MAA+B;AAAA,IAEzD;AAAA,IAEAyX,iBACEz4D,WACArb,QACAhwB,QACM;AACN,YAAM8gH,YAAY,CAChB,WACA,WACA,UACA,aACA,YACA,YACA,YACA,QAAQ;AAEV,WAAK8C,iBACH;AAAA,QACEC,kBAAkB/C;AAAAA,QAClBgD,qBAAqB,CAAC,MAAM,KAAK;AAAA,QACjCS,+BAA+B;AAAA,QAC/BR,eAAetE,SAAS+B;AAAAA,MACzB,GACDxxF,MACF;AAEA,YAAMmgG,mCAAmCA,MAAM;AAC7C,YAAI,KAAK3L,2BAA2B;AAClC,eAAK1wF,KAAM;AACX,eAAKA,KAAM;AACX,cAAI,KAAKo8F,mBAAmBlgG,QAAQ8wF,SAAS,GAAG;AAC9C,iBAAKnpC,MACH8nC,SAASgD,+BACT,KAAKziH,MAAM6qF,aACb;AAAA,UACF;AACA,gBAAMulC,sBAAsB/kF,WAAWrb,MAAuB;AAAA,QAChE,OAAO;AACL,eAAKqgG,6BACHhlF,WACArb,QACAhwB,QACA,CAAC,CAACgwB,OAAO0P,MACX;AAAA,QACF;AAAA,MACD;AACD,UAAI1P,OAAOhW,SAAS;AAClB,aAAKozG,mBAAmB+C,gCAAgC;AAAA,MAC1D,OAAO;AACLA,yCAAkC;AAAA,MACpC;AAAA,IACF;AAAA,IAEAE,6BACEhlF,WACArb,QACAhwB,QACAq/F,UACM;AACN,YAAMyoB,MAAM,KAAKP,yBACfv3F,MACF;AACA,UAAI83F,KAAK;AACPz8E,kBAAUnQ,KAAKzyB,KAAKq/G,GAAG;AAEvB,YAAK93F,OAAeyO,UAAU;AAC5B,eAAKk5C,MAAM8nC,SAASsB,2BAA2B/wF,MAAM;AAAA,QACvD;AACA,YAAKA,OAAeyP,eAAe;AACjC,eAAKk4C,MAAM8nC,SAASuB,gCAAgChxF,QAAQ;AAAA,YAC1DswF,UAAWtwF,OAAeyP;AAAAA,UAC5B,CAAC;AAAA,QACH;AACA,YAAKzP,OAAehW,SAAS;AAC3B,eAAK29D,MAAM8nC,SAASwB,0BAA0BjxF,MAAM;AAAA,QACtD;AACA,YAAKA,OAAe2P,UAAU;AAC5B,eAAKg4C,MAAM8nC,SAASyB,2BAA2BlxF,MAAM;AAAA,QACvD;AAEA;AAAA,MACF;AAEA,UAAI,CAAC,KAAKhwB,MAAMsqF,mBAAoBt6D,OAAeyO,UAAU;AAC3D,aAAKk5C,MAAM8nC,SAASqC,mCAAmC9xF,MAAM;AAAA,MAC/D;AAEA,UAAKA,OAAe2P,UAAU;AAC5B,YAAI,CAAC3/B,OAAMswH,eAAe;AACxB,eAAK34C,MAAM8nC,SAASwC,uBAAuBjyF,MAAM;AAAA,QACnD;AAAA,MACF;AAIA,YAAMqgG,6BACJhlF,WACArb,QACAhwB,QACAq/F,QACF;AAAA,IACF;AAAA,IAEAkxB,6BACEC,cACM;AACN,YAAM56F,WAAW,KAAKg2D,MAAe;AACrC,UAAIh2D,SAAU46F,cAAa56F,WAAW;AAEtC,UAAK46F,aAAqBjwF,YAAY,KAAK5tB,MAAe,EAAA,GAAG;AAC3D,aAAKglE,MAAM8nC,SAASO,wBAAwBwQ,YAAY;AAAA,MAC1D;AAEA,UAAKA,aAAqBx2G,WAAW,KAAKrH,MAAe,EAAA,GAAG;AAC1D,aAAKglE,MAAM8nC,SAASM,uBAAuByQ,YAAY;AAAA,MACzD;AAAA,IACF;AAAA,IAOA1uB,yBACEzgG,OACA0gG,MACAplE,aACa;AACb,YAAMyB,OACJ2jE,KAAKvvF,SAAS,eAEV,KAAKk7G,2BAA2BrsH,OAAM0gG,MAAMplE,WAAU,IACtDjpB;AACN,aAAO0qB,QAAQ,MAAM0jE,yBAAyBzgG,OAAM0gG,MAAMplE,WAAU;AAAA,IACtE;AAAA,IAIAqlE,+BAAwC;AACtC,UAAI,KAAKisB,qBAAsB,EAAE,QAAO;AACxC,aAAO,MAAMjsB,6BAA8B;AAAA,IAC7C;AAAA,IAGAE,iBACEH,MAEAntF,UACAoiE,qBACc;AACd,UAAI,CAAC,KAAKrkE,QAAiB,EAAG,QAAOovF;AAErC,UAAI,KAAK/hG,MAAMiqF,wBAAwB;AACrC,cAAM0J,SAAS,KAAKtH,kBAAmB;AAIvC,YACEsH,WAA0B,MAC1BA,WAAM,MACNA,WAA0B,MAC1BA,WAAM,IACN;AAEA,eAAKwO,2BAA2BnrB,mBAAmB;AACnD,iBAAO+qB;AAAAA,QACT;AAAA,MACF;AAEA,aAAO,MAAMG,iBAAiBH,MAAMntF,UAAUoiE,mBAAmB;AAAA,IACnE;AAAA,IAIAksB,eACE7hG,OACAuT,UAC4B;AAC5B,YAAMujD,UAAU,MAAM+qC,eAAe7hG,OAAMuT,QAAQ;AACnD,UAAI,KAAKg3E,IAAG,EAAY,GAAG;AACxBzzB,gBAAyBviC,WAAW;AAIrC,aAAKijD,iBAAiBx3E,KAAI;AAAA,MAC5B;AAEA,UAAI,KAAKsR,MAAK,EAAS,GAAG;AACxB,cAAMwwF,eAAe,KAAKzM,YAAoC9hF,QAAQ;AACtEuuF,qBAAapoE,aAAa15B;AAC1B8hG,qBAAazmE,iBAAiB,KAAKypF,sBAAuB;AAE1D,eAAO,KAAK3vC,WAAW2sB,cAAc,sBAAsB;AAAA,MAC7D;AAEA,aAAO9hG;AAAAA,IACT;AAAA,IAEAgiG,uBACEhiG,OACkC;AAClC,UAAI,CAAC,KAAKrB,MAAMqqF,oBAAoB,KAAKkJ,aAAwB,GAAA,GAAG;AAClE,eAAO,KAAK65B,mBAAmB,MAAM,KAAK/pB,uBAAuBhiG,KAAI,CAAC;AAAA,MACxE;AAGA,YAAMuT,WAAW,KAAK5U,MAAM4U;AAE5B,YAAM67G,YAAY,KAAK58B,iBAAyB;AAEhD,UACE48B,cACC,KAAKl9B,aAAwB,GAAA,KAAK,CAAC,KAAKyO,6BAA4B,IACrE;AACA,cAAM,KAAKrqB,MACT8nC,SAASkB,mCACT,KAAK3gH,MAAM4U,QACb;AAAA,MACF;AAEA,YAAMoJ,eAAeklE,kBAAkB,KAAKljF,MAAMwS,IAAI;AACtD,YAAMssB,cACH9gB,gBAAgB,KAAKyvG,4BAA2B,KACjD,MAAMpqB,uBAAuBhiG,KAAI;AAEnC,UAAI,CAACy9B,YAAa,QAAO;AAEzB,UACEA,YAAYtsB,SAAS,4BACrBssB,YAAYtsB,SAAS,4BACrBi+G,WACA;AACApvH,QAAAA,MAAKw9B,aAAa;AAAA,MACpB;AAEA,UAAI4xF,aAAa3xF,YAAYtsB,SAAS,6BAA6B;AAEjE,aAAK4lE,mBAAmBt5C,aAAalqB,QAAQ;AAE7CkqB,oBAAY9kB,UAAU;AAAA,MACxB;AAEA,aAAO8kB;AAAAA,IACT;AAAA,IAEA8kE,aACEviG,OACAyrB,aACA+2E,YAEA7d,aACM;AACN,WAAK,CAACl5D,eAAe+2E,eAAe,KAAKtQ,aAA2B,GAAA,GAAG;AACrE;AAAA,MACF;AAEA,YAAMqQ,aACJviG,OACAyrB,aACA+2E,YACCxiG,MAAa2Y,qBAGhB;AACA,YAAMshB,iBAAiB,KAAKorF,yBAC1B,KAAKzC,0BACP;AACA,UAAI3oF,eAAgBj6B,CAAAA,MAAKi6B,iBAAiBA;AAAAA,IAC5C;AAAA,IAEAo1F,6BACErvH,OACM;AACN,UAAI,CAACA,MAAKu0B,UAAU;AAClB,YAAI,KAAKg2D,IAAG,EAAQ,GAAG;AACrBvqF,UAAAA,MAAKg9B,WAAW;AAAA,QACjB,WAAU,KAAKutD,IAAG,EAAY,GAAG;AAChCvqF,UAAAA,MAAKu0B,WAAW;AAAA,QAClB;AAAA,MACF;AAEA,YAAMpjB,OAAO,KAAKi1G,yBAA0B;AAC5C,UAAIj1G,KAAMnR,CAAAA,MAAKq7B,iBAAiBlqB;AAAAA,IAClC;AAAA,IAEAkkE,mBAAmBr1E,OAAwC;AACzD,WAAKqvH,6BAA6BrvH,KAAI;AAEtC,UACE,KAAKrB,MAAMqqF,oBACX,EAAEhpF,MAAKk/B,YAAY,CAACl/B,MAAKq7B,mBACzB,KAAK/pB,MAAW,EAAA,GAChB;AACA,aAAKglE,MACH8nC,SAASU,iCACT,KAAKngH,MAAM4U,QACb;AAAA,MACF;AACA,UAAIvT,MAAKo9B,YAAY,KAAK9rB,MAAW,EAAA,GAAG;AACtC,cAAM;AAAA,UAAE7R,KAAAA;AAAAA,QAAK,IAAGO;AAChB,aAAKs2E,MACH8nC,SAASG,gCACT,KAAK5/G,MAAM4U,UACX;AAAA,UACEirG,cACE/+G,KAAI0R,SAAS,gBAAgB,CAACnR,MAAKy7B,WAC/Bh8B,KAAIgN,OACJ,IAAI,KAAK3F,MAAMsK,MAAM,KAAKs0E,kBAAkBjmF,KAAIiU,KAAK,GAAG,KAAKgyE,kBAAkBjmF,KAAImU,GAAG,CAAC,CAAC;AAAA,QAChG,CACF;AAAA,MACF;AAEA,aAAO,MAAMyhE,mBAAmBr1E,KAAI;AAAA,IACtC;AAAA,IAEAu1E,0BACEv1E,OACwB;AACxB,UAAIA,MAAKo9B,UAAU;AACjB,aAAKk5C,MAAM8nC,SAASyC,2BAA2B7gH,KAAI;AAAA,MACrD;AAEA,UAAIA,MAAKo+B,eAAe;AACtB,aAAKk4C,MAAM8nC,SAAS0C,gCAAgC9gH,OAAM;AAAA,UACxDi/G,UAAUj/G,MAAKo+B;AAAAA,QACjB,CAAC;AAAA,MACH;AAEA,WAAKixF,6BAA6BrvH,KAAI;AACtC,aAAO,MAAMu1E,0BAA0Bv1E,KAAI;AAAA,IAC7C;AAAA,IAEAsvH,2BACEtvH,OACyB;AACzB,WAAKqvH,6BAA6BrvH,KAAI;AACtC,UAAIA,MAAKu0B,UAAU;AACjB,aAAK+hD,MAAM8nC,SAASK,0BAA0Bz+G,KAAI;AAAA,MACpD;AACA,aAAO,MAAMsvH,2BAA2BtvH,KAAI;AAAA,IAC9C;AAAA,IAEAwjG,gBACEx5D,WACAjK,QACA60C,aACAnB,SACAoB,eACA4uB,mBACM;AACN,YAAMxpE,iBAAiB,KAAKorF,yBAC1B,KAAK1C,oBACP;AACA,UAAI1oF,kBAAkB46C,eAAe;AACnC,aAAKyB,MAAM8nC,SAASQ,8BAA8B3kF,cAAc;AAAA,MAClE;AAGA,YAAM;AAAA,QAAEthB,UAAU;AAAA,QAAOsjB;AAAAA,MAAM,IAAG8D;AAElC,UAAIpnB,YAAYsjB,SAAS,SAASA,SAAS,QAAQ;AACjD,aAAKq6C,MAAM8nC,SAASS,iBAAiB9+E,QAAQ;AAAA,UAAE9D;AAAAA,QAAK,CAAC;AAAA,MACvD;AACA,UAAIhC,eAAgB8F,QAAO9F,iBAAiBA;AAC5C,YAAMupE,gBACJx5D,WACAjK,QACA60C,aACAnB,SACAoB,eACA4uB,iBACF;AAAA,IACF;AAAA,IAEAE,uBACE35D,WACAjK,QACA60C,aACAnB,SACM;AACN,YAAMx5C,iBAAiB,KAAKorF,yBAC1B,KAAK1C,oBACP;AACA,UAAI1oF,eAAgB8F,QAAO9F,iBAAiBA;AAC5C,YAAM0pE,uBAAuB35D,WAAWjK,QAAQ60C,aAAanB,OAAO;AAAA,IACtE;AAAA,IAEA87C,iCACEvvH,OACAi8B,MACA;AACA,UAAIj8B,MAAKmR,SAAS,kBAAmB;AAErC,UACGnR,MAAgBmR,SAAS,sBAC1B,CAAChC,eAAAC,KACEpP,MAA6CH,OAC9C,MACF,GACA;AACA;AAAA,MACF;AAEA,YAAM0vH,iCAAiCvvH,OAAMi8B,IAAI;AAAA,IACnD;AAAA,IAEA2nE,gBAAgB5jG,OAAqB;AACnC,YAAM4jG,gBAAgB5jG,KAAI;AAE1B,UAAIA,MAAKi9B,eAAe,KAAK3rB,MAAK,EAAM,KAAK,KAAKA,MAAkB,EAAA,IAAI;AAG/D;AACLtR,UAAAA,MAAK6jG,sBAAsB,KAAK8oB,iCAAkC;AAAA,QACpE;AAAA,MACF;AACA,UAAI,KAAKn6B,cAAa,GAAe,GAAG;AACtCxyF,QAAAA,MAAKk9B,aAAa,KAAKmtF,sBAAsB,YAAY;AAAA,MAC3D;AAAA,IACF;AAAA,IAEApmB,kBACExuB,MACAliE,UACAqhE,aACAnB,SACAzmD,WACAK,YACAsoD,qBACG;AACH,YAAM17C,iBAAiB,KAAKorF,yBAC1B,KAAK1C,oBACP;AACA,UAAI1oF,eAAgBw7C,MAAKx7C,iBAAiBA;AAE1C,aAAO,MAAMgqE,kBACXxuB,MAEAliE,UACAqhE,aACAnB,SACAzmD,WACAK,YACAsoD,mBACF;AAAA,IACF;AAAA,IAEAwvB,oBAAoBnlG,OAAkB60E,eAA8B;AAClE,YAAM56C,iBAAiB,KAAKorF,yBAC1B,KAAK1C,oBACP;AACA,UAAI1oF,eAAgBj6B,CAAAA,MAAKi6B,iBAAiBA;AAC1C,YAAMkrE,oBAAoBnlG,OAAM60E,aAAa;AAAA,IAC/C;AAAA,IAGAuwB,WACEroE,MACAd,MACM;AACN,YAAMmpE,WAAWroE,MAAMd,IAAI;AAC3B,UACEc,KAAK9B,GAAG9pB,SAAS,gBACjB,CAAC,KAAKwhF,2BACN,KAAKpI,IAAG,EAAQ,GAChB;AACAxtD,aAAKC,WAAW;AAAA,MAClB;AAEA,YAAM7rB,OAAO,KAAKi1G,yBAA0B;AAC5C,UAAIj1G,MAAM;AACR4rB,aAAK9B,GAAGI,iBAAiBlqB;AACzB,aAAKqmE,iBAAiBz6C,KAAK9B,EAAE;AAAA,MAC/B;AAAA,IACF;AAAA,IAGAoqE,kCACErlG,OACAoP,MAC2B;AAC3B,UAAI,KAAKkC,MAAK,EAAS,GAAG;AACxBtR,QAAAA,MAAK+6B,aAAa,KAAK+pF,sBAAuB;AAAA,MAChD;AACA,aAAO,MAAMzf,kCAAkCrlG,OAAMoP,IAAI;AAAA,IAC3D;AAAA,IAEA+xF,iBACExrB,qBACA4vB,gBACc;AAAA,UAAAC,MAAAG,OAAA6pB,WAAA5pB,OAAA6pB;AAGd,UAAI9wH;AACJ,UAAI8mG;AACJ,UAAIiqB;AAEJ,UACE,KAAK9pC,UAAU,KAAK,MACnB,KAAKt0E,MAAoB,GAAA,KAAK,KAAKA,MAAW,EAAA,IAC/C;AAEA3S,QAAAA,SAAQ,KAAKA,MAAM24D,MAAO;AAE1BmuC,QAAAA,OAAM,KAAKzS,SACT,MAAM,MAAMmO,iBAAiBxrB,qBAAqB4vB,cAAc,GAChE5mG,MACF;AAIA,YAAI,CAAC8mG,KAAI3mG,MAAO,QAAO2mG,KAAIzlG;AAK3B,cAAM;AAAA,UAAEgY,SAAAA;AAAAA,QAAS,IAAG,KAAKrZ;AACzB,cAAM+mG,iBAAiB1tF,SAAQA,SAAQ7L,SAAS,CAAC;AACjD,YAAIu5F,mBAAmBziB,OAAGpL,UAAU6tB,mBAAmBziB,OAAGlL,QAAQ;AAChE//D,UAAAA,SAAQkkD,IAAK;AAAA,QACf;AAAA,MACF;AAEA,UAAI,GAAAspC,OAACC,SAAG,QAAHD,KAAK1mG,UAAS,CAAC,KAAKwS,MAAK,EAAM,GAAG;AACrC,eAAO,MAAM6vF,iBAAiBxrB,qBAAqB4vB,cAAc;AAAA,MACnE;AAOA,UAAI,CAAC5mG,UAASA,WAAU,KAAKA,MAAOA,CAAAA,SAAQ,KAAKA,MAAM24D,MAAO;AAE9D,UAAIr9B;AAEJ,YAAM+gD,QAAQ,KAAKgY,SAAU6S,WAAuB;AAAA,YAAA5C,aAAA0sB;AAElD11F,yBAAiB,KAAKqrF,sBAAsB,KAAK3C,oBAAoB;AACrE,cAAMjiB,OAAO,MAAMS,iBACjBxrB,qBACA4vB,cACF;AAEA,YACE7E,KAAKvvF,SAAS,8BAAyB8xF,cACvCvC,KAAKvpC,UAAK,QAAV8rC,YAAYnvB,eACZ;AACA+xB,gBAAO;AAAA,QACT;AAGA,cAAI8pB,kBAAA11F,mBAAA01F,OAAAA,SAAAA,gBAAgBh1F,OAAOxuB,YAAW,GAAG;AACvC,eAAK+oE,2BAA2BwrB,MAAMzmE,cAAc;AAAA,QACtD;AACAymE,aAAKzmE,iBAAiBA;AA2BtB,eAAOymE;AAAAA,MACR,GAAE/hG,MAAK;AAGR,UAAI,CAACq8E,MAAMl8E,SAAS,CAACk8E,MAAMqY,SAAS;AAIlC,YAAIp5D,eAAgB,MAAK21F,6BAA6B31F,cAAc;AACpE,eAAO+gD,MAAMh7E;AAAAA,MACf;AAEA,UAAI,CAACylG,MAAK;AAIR7jD,eAAO,CAAC,KAAKgkC,UAAU,KAAK,CAAC;AAI7B8pC,mBAAW,KAAK18B,SACd,MAAM,MAAMmO,iBAAiBxrB,qBAAqB4vB,cAAc,GAChE5mG,MACF;AAGA,YAAI,CAAC+wH,SAAS5wH,MAAO,QAAO4wH,SAAS1vH;AAAAA,MACvC;AAEA,WAAA2lG,QAAIF,iBAAAE,MAAK3lG,MAAM;AAEb,aAAKrB,QAAQ8mG,KAAItS;AACjB,eAAOsS,KAAIzlG;AAAAA,MACb;AAEA,UAAIg7E,MAAMh7E,MAAM;AAEd,aAAKrB,QAAQq8E,MAAMmY;AACnB,YAAIl5D,eAAgB,MAAK21F,6BAA6B31F,cAAc;AACpE,eAAO+gD,MAAMh7E;AAAAA,MACf;AAEA,WAAAwvH,YAAIE,qBAAAF,UAAUxvH,MAAM;AAElB,aAAKrB,QAAQ+wH,SAASv8B;AACtB,eAAOu8B,SAAS1vH;AAAAA,MAClB;AAEA,cAAM4lG,QAAAH,SAAAG,OAAAA,SAAAA,MAAK9mG,UAASk8E,MAAMl8E,WAAK2wH,aAAIC,aAAAD,OAAAA,SAAAA,WAAU3wH;AAAAA,IAC/C;AAAA,IAEA8wH,6BAA6B5vH,OAAW;AAAA,UAAAm8G;AACtC,UACEn8G,MAAK26B,OAAOxuB,WAAW,KACvB,CAACnM,MAAK26B,OAAO,CAAC,EAAEwI,cAChB,GAAAg5E,eAACn8G,MAAKm3D,UAAK,QAAVglD,aAAY0T,kBACb,KAAKv7C,gBAAgB,cAAc,0BAA0B,GAC7D;AACA,aAAKgC,MAAM8nC,SAAS4C,wBAAwBhhH,KAAI;AAAA,MAClD;AAAA,IACF;AAAA,IAGAwoH,gBACE7yC,qBACAm6C,UACc;AACd,UAAI,CAAC,KAAKlqC,UAAU,KAAK,KAAK,KAAKt0E,MAAK,EAAM,GAAG;AAC/C,eAAO,KAAK84G,qBAAsB;AAAA,MACpC;AACA,aAAO,MAAM5B,gBAAgB7yC,qBAAqBm6C,QAAQ;AAAA,IAC5D;AAAA,IAEA7pB,WACEjmG,OACsD;AACtD,UAAI,KAAKsR,MAAK,EAAS,GAAG;AAIxB,cAAMynD,SAAS,KAAKi6B,SAAS6S,WAAS;AACpC,gBAAM9qE,aAAa,KAAK+qF,uCAExB;AACA,cAAI,KAAKpzB,wBAAwB,CAAC,KAAKphF,MAAc,EAAA,EAAGu0F,OAAO;AAC/D,iBAAO9qE;AAAAA,QACT,CAAC;AAED,YAAIg+B,OAAOs6B,QAAS;AAEpB,YAAI,CAACt6B,OAAOq6B,QAAQ;AAClB,cAAIr6B,OAAOj6D,MAAO,MAAKH,QAAQo6D,OAAOo6B;AAEtCnzF,UAAAA,MAAK+6B,aAAag+B,OAAO/4D;AAAAA,QAC3B;AAAA,MACF;AAEA,aAAO,MAAMimG,WAAWjmG,KAAI;AAAA,IAC9B;AAAA,IAGAkkG,uBAAuBhqE,OAAkB;AACvC,UAAI,KAAKqwD,IAAG,EAAY,GAAG;AACxBrwD,cAA8B3F,WAAW;AAAA,MAC5C;AACA,YAAMpjB,OAAO,KAAKi1G,yBAA0B;AAC5C,UAAIj1G,KAAM+oB,OAAMmB,iBAAiBlqB;AACjC,WAAKqmE,iBAAiBt9C,KAAK;AAE3B,aAAOA;AAAAA,IACT;AAAA,IAEA67C,aAAa/1E,OAAco9D,YAA8B;AACvD,cAAQp9D,MAAKmR,MAAI;AAAA,QACf,KAAK;AACH,iBAAO,KAAK4kE,aAAa/1E,MAAK05B,YAAY0jC,UAAS;AAAA,QACrD,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO,MAAM2Y,aAAa/1E,OAAMo9D,UAAS;AAAA,MAC7C;AAAA,IACF;AAAA,IAEA4Y,aAAah2E,OAAci2E,QAAiB,OAAa;AACvD,cAAQj2E,MAAKmR,MAAI;AAAA,QACf,KAAK;AACH,eAAK4+G,oCAAoC/vH,OAAMi2E,KAAK;AACpD;AAAA,QACF,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,cAAIA,OAAO;AACT,iBAAKue,gBAAgBvD,iCACnBmtB,SAASyD,+BACT7hH,KACF;AAAA,UACF,OAAO;AACL,iBAAKs2E,MAAM8nC,SAASyD,+BAA+B7hH,KAAI;AAAA,UACzD;AACA,eAAKg2E,aAAah2E,MAAK05B,YAAYu8C,KAAK;AACxC;AAAA,QACF,KAAK;AACH,cAAI,CAACA,SAASj2E,MAAKu5B,KAAKpoB,SAAS,wBAAwB;AACvDnR,YAAAA,MAAKu5B,OAAO,KAAK4mE,oBAAoBngG,MAAKu5B,IAAI;AAAA,UAChD;AAAA,QAEF;AACE,gBAAMy8C,aAAah2E,OAAMi2E,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,IAEA85C,oCACE/vH,OACAi2E,OACM;AACN,cAAQj2E,MAAK05B,WAAWvoB,MAAI;AAAA,QAC1B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,eAAK6kE,aAAah2E,MAAK05B,YAAYu8C,KAAK;AACxC;AAAA,QACF;AACE,gBAAMD,aAAah2E,OAAMi2E,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,IAEAomC,sBAAsBr8G,OAAci+G,cAA6B;AAC/D,cAAQj+G,MAAKmR,MAAI;AAAA,QACf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,eAAKkrG,sBAAsBr8G,MAAK05B,YAAY,KAAK;AACjD;AAAA,QACF;AACE,gBAAM2iF,sBAAsBr8G,OAAMi+G,YAAY;AAAA,MAClD;AAAA,IACF;AAAA,IAEAroC,YACEzkE,MAQA0kE,2BACAC,UACA;AACA,cAAQ3kE,MAAI;AAAA,QAIV,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,kBACG2kE,aAAO,MAA8B,CAACD,8BACtC,CAAC,cAAc,IAAI;AAAA,QAExB;AACE,iBAAO,MAAMD,YAAYzkE,MAAM0kE,2BAA2BC,QAAO;AAAA,MACrE;AAAA,IACF;AAAA,IAEAovB,mBAA8B;AAC5B,UAAI,KAAKvmG,MAAMwS,aAAmB;AAChC,eAAO,KAAKqpF,gBAA8B,IAAI;AAAA,MAChD;AACA,aAAO,MAAM0K,iBAAkB;AAAA,IACjC;AAAA,IAEA8qB,6BACEtvB,MACAntF,UACc;AAEd,UAAI,KAAKjC,MAAW,EAAA,KAAK,KAAKA,MAAkB,EAAA,GAAG;AACjD,cAAM0oB,gBAAgB,KAAK2yF,iCAAkC;AAE7D,YAAI,KAAKr7G,MAAK,EAAU,GAAG;AACzB,gBAAMlC,OAAO,MAAM4gH,6BACjBtvB,MACAntF,QACF;AAGO;AACLnE,iBAAK6qB,iBAAiBD;AAAAA,UACxB;AAEA,iBAAO5qB;AAAAA,QACT;AAEA,aAAKm5D,WAAW,QAAe;AAAA,MACjC;AAEA,aAAO,MAAMynD,6BAA6BtvB,MAAMntF,QAAQ;AAAA,IAC1D;AAAA,IAEA2pG,oBACE/Z,OACS;AACT,UACE,KAAKxkG,MAAMqqF,oBACX,KAAK13E,QAAc,KACnB,KAAK05E,kBAAmB,MAAKmY,OAC7B;AACA,aAAK1wE,KAAM;AACX,eAAO;AAAA,MACT;AACA,aAAO,MAAMyqF,oBAAoB/Z,KAAK;AAAA,IACxC;AAAA,IAOAzjF,gBAAyB;AACvB,aAAO,KAAKpO,MAAW,EAAA,KAAK,MAAMoO,cAAe;AAAA,IACnD;AAAA,IAEAc,kBAA2B;AACzB,aACE,KAAKlP,MAAa,EAAA,KAAK,KAAKA,MAAK,EAAS,KAAK,MAAMkP,gBAAiB;AAAA,IAE1E;AAAA,IAEA2jF,kBACE5wF,UACAgmB,MACW;AACX,YAAMv5B,QAAO,MAAMmkG,kBAAkB5wF,UAAUgmB,IAAI;AAEnD,UACEv5B,MAAKmR,SAAS,uBACdnR,MAAKq7B,kBACLr7B,MAAKw5B,MAAM9lB,QAAQ1T,MAAKq7B,eAAe3nB,OACvC;AACA,aAAK4iE,MAAM8nC,SAASkD,2BAA2BthH,MAAKq7B,cAAc;AAAA,MACpE;AAEA,aAAOr7B;AAAAA,IACT;AAAA,IAGA0rF,iBAAiB3/E,OAAoB;AACnC,UAAI,KAAKpN,MAAMkqF,QAAQ;AACrB,YAAI98E,cAAgC;AAClC,eAAKygF,SAAgB,IAAA,CAAC;AACtB;AAAA,QACF;AACA,YAAIzgF,cAA6B;AAC/B,eAAKygF,SAAgB,IAAA,CAAC;AACtB;AAAA,QACF;AAAA,MACF;AACA,YAAMd,iBAAiB3/E,KAAI;AAAA,IAC7B;AAAA,IAGA2xF,eAAe;AACb,YAAM;AAAA,QAAEvsF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,aAAgB;AAClB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKohF,aAAc;AAAA,MACrB,WAAWl8E,SAAI,IAAY;AACzB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKqhF,aAAc;AAAA,MACrB;AAAA,IACF;AAAA,IAEAkQ,YAAY;AACV,YAAM;AAAA,QAAErsF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,aAAuB;AACzB,aAAKxS,MAAMsN,OAAO;AAClB,aAAKugF,SAAgB,IAAA,CAAC;AACtB,eAAA;AAAA,MACF;AACA,aAAOr7E;AAAAA,IACT;AAAA,IAEAorG,qBACEzZ,UACAxjG,QACA22E,OACM;AACN,YAAMj2E,QAAO8iG,SAASxjG,MAAK;AAC3B,UAAIU,MAAKmR,SAAS,wBAAwB;AACxC2xF,iBAASxjG,MAAK,IAAI,KAAK6gG,oBAAoBngG,KAAI;AAAA,MACjD;AACA,YAAMu8G,qBAAqBzZ,UAAUxjG,QAAO22E,KAAK;AAAA,IACnD;AAAA,IAEAkqB,oBAAoBngG,OAA4C;AAC7DA,MAAAA,MAAK05B,WAA4B2B,iBAAiBr7B,MAAKq7B;AAExD,WAAKm8C,iBAAiBx3E,MAAK05B,YAAY15B,MAAKq7B,eAAe/nB,IAAIM,GAAG;AAElE,aAAO5T,MAAK05B;AAAAA,IACd;AAAA,IAEAwsE,iBAAiBvrE,QAAuB;AACtC,UAAI,KAAKrpB,MAAK,EAAS,GAAG;AACxB,eAAOqpB,OAAO6mE,MAAMd,UAAQ,KAAK3qB,aAAa2qB,MAAM,IAAI,CAAC;AAAA,MAC3D;AACA,aAAO,MAAMwF,iBAAiBvrE,MAAM;AAAA,IACtC;AAAA,IAEA2qE,wBAAiC;AAC/B,aAAO,KAAKh0F,MAAc,EAAA,KAAK,MAAMg0F,sBAAuB;AAAA,IAC9D;AAAA,IAEA2qB,0BAA0B;AAExB,aAAO,MAAMA,6BAA6B,KAAK1B,gBAAiB;AAAA,IAClE;AAAA,IAEAnlB,gCACEppG,OACqB;AAErB,UAAI,KAAKsR,MAAW,EAAA,KAAK,KAAKA,MAAkB,EAAA,GAAG;AACjD,cAAM0oB,gBAAgB,KAAK2xF,mBAAmB,MAC5C,KAAKgB,iCAAgC,CACvC;AACA,YAAI3yF,eAAe;AAGV;AACLh6B,YAAAA,MAAKi6B,iBAAiBD;AAAAA,UACxB;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAMovE,gCAAgCppG,KAAI;AAAA,IACnD;AAAA,IAEAkwH,kCACEnwF,QACQ;AACR,YAAMowF,YAAY,MAAMD,kCAAkCnwF,MAAM;AAChE,YAAMpF,SAAS,KAAKg5C,6BAA6B5zC,MAAM;AACvD,YAAMqwF,aAAaz1F,OAAO,CAAC;AAC3B,YAAM01F,kBAAkBD,cAAc,KAAK1sB,YAAY0sB,UAAU;AAEjE,aAAOC,kBAAkBF,YAAY,IAAIA;AAAAA,IAC3C;AAAA,IAEAG,wBAAmC;AACjC,YAAMp2F,QAAQ,MAAMo2F,sBAAuB;AAC3C,YAAMn/G,OAAO,KAAKi1G,yBAA0B;AAE5C,UAAIj1G,MAAM;AACR+oB,cAAMmB,iBAAiBlqB;AACvB,aAAKqmE,iBAAiBt9C,KAAK;AAAA,MAC7B;AAEA,aAAOA;AAAAA,IACT;AAAA,IAEA6xF,mBAAsB1uB,IAAgB;AACpC,YAAM;AAAA,QAAErU,kBAAkBunC;AAAAA,QAAqBxjH,QAAQyjH;AAAAA,MAAW,IAChE,KAAK7xH;AACP,WAAKA,MAAMqqF,mBAAmB;AAC9B,WAAKrqF,MAAMoO,SAAS;AACpB,UAAI;AACF,eAAOswF,GAAI;AAAA,MACb,UAAU;AACR,aAAK1+F,MAAMqqF,mBAAmBunC;AAC9B,aAAK5xH,MAAMoO,SAASyjH;AAAAA,MACtB;AAAA,IACF;AAAA,IAEAvE,WACEjsH,OACAyrB,aACA+2E,YACG;AACH,YAAMiuB,qBAAqB,KAAK9xH,MAAMsqF;AACtC,WAAKtqF,MAAMsqF,kBAAkB,CAAC,CAAEjpF,MAAao9B;AAC7C,UAAI;AACF,eAAO,MAAM6uF,WAAWjsH,OAAMyrB,aAAa+2E,UAAU;AAAA,MACvD,UAAU;AACR,aAAK7jG,MAAMsqF,kBAAkBwnC;AAAAA,MAC/B;AAAA,IACF;AAAA,IAEAjE,2BACExsH,OACAs7B,aACkE;AAClE,UAAI,KAAKhqB,MAAK,EAAU,GAAG;AACzBtR,QAAAA,MAAKo9B,WAAW;AAChB,eAAO,KAAKszF,oBACVp1F,aACA,KAAK2wF,WACHjsH,OACkB,MACD,KACnB,CACF;AAAA,MACD,WAAU,KAAKkyF,aAAY,GAAc,GAAG;AAM3C,YAAI,CAAC,KAAKU,yBAAyB;AACjC5yF,UAAAA,MAAKo9B,WAAW;AAChB,eAAKk5C,MAAM8nC,SAASsC,0CAA0C1gH,KAAI;AAClE,iBAAO,KAAKwqH,4BACVxqH,KACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,aAAKuoE,WAAW,QAAe;AAAA,MACjC;AAAA,IACF;AAAA,IAEAoM,YAGE30E,OACA40E,aACAnB,SACAoB,eACAC,kBACA3jE,MACA4jE,cACA;AACA,YAAMh1C,SAAS,MAAM40C,YACnB30E,OACA40E,aACAnB,SACAoB,eACAC,kBACA3jE,MACA4jE,YACF;AAEA,UAAIh1C,OAAO3C,UAAU;AACnB,cAAMuzF,kBAAkB,KAAK/qC,UAAU,QAAQ;AAC/C,cAAMgrC,WAAWD,kBAEb5wF,OAAOlgC,QACPkgC;AACJ,YAAI6wF,SAAS/2F,MAAM;AACjB,gBAAM;AAAA,YAAEp6B,KAAAA;AAAAA,UAAK,IAAGsgC;AAChB,eAAKu2C,MAAM8nC,SAASC,iCAAiCt+E,QAAQ;AAAA,YAC3Du+E,YACE7+G,KAAI0R,SAAS,gBAAgB,CAAC4uB,OAAOtE,WACjCh8B,KAAIgN,OACJ,IAAI,KAAK3F,MAAMsK,MAAM,KAAKs0E,kBAAkBjmF,KAAIiU,KAAK,GAAG,KAAKgyE,kBAAkBjmF,KAAImU,GAAG,CAAC,CAAC;AAAA,UAChG,CAAC;AAAA,QACH;AAAA,MACF;AACA,aAAOmsB;AAAAA,IACT;AAAA,IAEAolF,2BAAkD;AAChD,YAAMvjF,WAAyB,KAAK44D,gBAAiB;AACrD,aAAiD54D,SAASn1B;AAAAA,IAC5D;AAAA,IAEAokH,8BAAuC;AACrC,aAAO,CAAC,CAAC,KAAKv8C,gBAAgB,cAAc,KAAK;AAAA,IACnD;AAAA,IAEAptE,QAAQ;AACN,UAAI,KAAK2pH,+BAA+B;AACtC,aAAKlyH,MAAMqqF,mBAAmB;AAAA,MAChC;AACA,aAAO,MAAM9hF,MAAO;AAAA,IACtB;AAAA,IAEA4pH,gBAAgB;AACd,UAAI,KAAKD,+BAA+B;AACtC,aAAKlyH,MAAMqqF,mBAAmB;AAAA,MAChC;AACA,aAAO,MAAM8nC,cAAe;AAAA,IAC9B;AAAA,IAEAC,qBACE/wH,OACAgxH,WACAC,gBACArsB,iBACA;AACA,UAAI,CAACosB,aAAYpsB,iBAAiB;AAChC,aAAKssB,mCACHlxH,OACe,OACfixH,cACF;AACA,eAAO,KAAK97C,WAA8Bn1E,OAAM,iBAAiB;AAAA,MACnE;AACAA,MAAAA,MAAKw9B,aAAa;AAClB,aAAO,MAAMuzF,qBACX/wH,OACAgxH,WACAC,gBACArsB,eACF;AAAA,IACF;AAAA,IAEAH,qBACExmC,WACAymC,kBACAC,oBACAC,iBAEAjgB,aACmB;AACnB,UAAI,CAAC+f,oBAAoBE,iBAAiB;AACxC,aAAKssB,mCACHjzD,WACe,MACf0mC,kBACF;AACA,eAAO,KAAKxvB,WAA8BlX,WAAW,iBAAiB;AAAA,MACxE;AACAA,gBAAU//B,aAAa;AACvB,aAAO,MAAMumE,qBACXxmC,WACAymC,kBACAC,oBACAC,iBACAD,gCAGF;AAAA,IACF;AAAA,IAEAusB,mCACElxH,OACAmgB,UACAgxG,0BACM;AACN,YAAMC,cAAcjxG,WAAW,aAAa;AAC5C,YAAMkxG,eAAelxG,WAAW,UAAU;AAE1C,UAAImxG,WAAWtxH,MAAKoxH,WAAW;AAC/B,UAAIG;AAEJ,UAAIC,mBAAmB;AACvB,UAAIC,oBAAoB;AAExB,YAAMn+G,MAAMg+G,SAASh+G,IAAII;AAOzB,UAAI,KAAKw+E,aAAY,EAAO,GAAG;AAE7B,cAAMw/B,UAAU,KAAKl3B,gBAAiB;AACtC,YAAI,KAAKtI,aAAY,EAAO,GAAG;AAE7B,gBAAMy/B,WAAW,KAAKn3B,gBAAiB;AACvC,cAAIzY,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAAG;AAE/CqgH,+BAAmB;AACnBF,uBAAWI;AACXH,wBAAYpxG,WACR,KAAKq6E,gBAAe,IACpB,KAAKo3B,sBAAuB;AAChCH,gCAAoB;AAAA,UACtB,OAAO;AAELF,wBAAYI;AACZF,gCAAoB;AAAA,UACtB;AAAA,QACD,WAAU1vC,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAAG;AAEtDsgH,8BAAoB;AACpBF,sBAAYpxG,WACR,KAAKq6E,gBAAe,IACpB,KAAKo3B,sBAAuB;AAAA,QAClC,OAAO;AAELJ,6BAAmB;AACnBF,qBAAWI;AAAAA,QACb;AAAA,MACD,WAAU3vC,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAAG;AAEtDqgH,2BAAmB;AACnB,YAAIrxG,UAAU;AACZmxG,qBAAW,KAAK92B,gBAAgB,IAAI;AACpC,cAAI,CAAC,KAAKtI,aAAY,EAAO,GAAG;AAC9B,iBAAK+S,kBACHqsB,SAAS7kH,MACT6kH,SAASh+G,IAAII,OACb,MACA,IACF;AAAA,UACF;AAAA,QACF,OAAO;AACL49G,qBAAW,KAAKM,sBAAuB;AAAA,QACzC;AAAA,MACF;AACA,UAAIJ,oBAAoBL,0BAA0B;AAChD,aAAK76C,MACHn2D,WACIi+F,SAASqD,kCACTrD,SAASoD,iCACbluG,GACF;AAAA,MACF;AAEAtT,MAAAA,MAAKoxH,WAAW,IAAIE;AACpBtxH,MAAAA,MAAKqxH,YAAY,IAAIE;AAErB,YAAMM,UAAU1xG,WAAW,eAAe;AAC1CngB,MAAAA,MAAK6xH,OAAO,IAAIL,mBAAmB,SAAS;AAE5C,UAAIC,qBAAqB,KAAKj/B,cAAa,EAAO,GAAG;AACnDxyF,QAAAA,MAAKqxH,YAAY,IAAIlxG,WACjB,KAAKq6E,gBAAiB,IACtB,KAAKo3B,sBAAuB;AAAA,MAClC;AACA,UAAI,CAAC5xH,MAAKqxH,YAAY,GAAG;AACvBrxH,QAAAA,MAAKqxH,YAAY,IAAIp8B,gBAAgBj1F,MAAKoxH,WAAW,CAAC;AAAA,MACxD;AACA,UAAIjxG,UAAU;AACZ,aAAKy9F,gBACH59G,MAAKqxH,YAAY,GACjBG,mBAAgB,OAAA,IAGlB;AAAA,MACF;AAAA,IACF;AAAA,EACD;AAEH,WAASM,sBAAsBp4F,YAAmC;AAChE,QAAIA,WAAWvoB,SAAS,mBAAoB,QAAO;AAEnD,UAAM;AAAA,MAAEsqB;AAAAA,MAAU1M;AAAAA,IAAU,IAAG2K;AAE/B,QACE+B,YACA1M,SAAS5d,SAAS,oBACjB4d,SAAS5d,SAAS,qBAAqB4d,SAASsN,YAAYlwB,SAAS,IACtE;AACA,aAAO;AAAA,IACT;AAEA,WAAO4lH,kCAAkCr4F,WAAW10B,MAAM;AAAA,EAC5D;AAQA,WAAS0pH,+BACPh1F,YACAy4C,SACS;AAAA,QAAAwrC;AACT,UAAM;AAAA,MAAExsG;AAAAA,IAAM,IAAGuoB;AACjB,SAAAikF,oBAAIjkF,WAAWy9B,UAAXwmD,QAAAA,kBAAkB7pC,eAAe;AACnC,aAAO;AAAA,IACT;AACA,QAAI3B,SAAQ;AACV,UAAIhhE,SAAS,WAAW;AACtB,cAAM;AAAA,UAAEtR,OAAAA;AAAAA,QAAO,IAAG65B;AAClB,YAAI,OAAO75B,WAAU,YAAY,OAAOA,WAAU,WAAW;AAC3D,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAIsR,SAAS,mBAAmBA,SAAS,kBAAkB;AACzD,eAAO;AAAA,MACT;AAAA,IACF;AACA,QAAIoF,UAASmjB,YAAYy4C,OAAM,KAAK6/C,iBAAiBt4F,YAAYy4C,OAAM,GAAG;AACxE,aAAO;AAAA,IACT;AACA,QAAIhhE,SAAS,qBAAqBuoB,WAAW2C,YAAYlwB,WAAW,GAAG;AACrE,aAAO;AAAA,IACT;AACA,QAAI2lH,sBAAsBp4F,UAAU,GAAG;AACrC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEA,WAASnjB,UAASmjB,YAA0By4C,SAA0B;AACpE,QAAIA,SAAQ;AACV,aACEz4C,WAAWvoB,SAAS,cACnB,OAAOuoB,WAAW75B,UAAU,YAAY,YAAY65B;AAAAA,IAEzD;AACA,WACEA,WAAWvoB,SAAS,oBAAoBuoB,WAAWvoB,SAAS;AAAA,EAEhE;AAEA,WAAS6gH,iBAAiBt4F,YAA0By4C,SAA0B;AAC5E,QAAIz4C,WAAWvoB,SAAS,mBAAmB;AACzC,YAAM;AAAA,QAAEgoB;AAAAA,QAAUgD;AAAAA,MAAU,IAAGzC;AAC/B,UAAIP,aAAa,OAAO5iB,UAAS4lB,UAAUg2C,OAAM,GAAG;AAClD,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEA,WAAS4/C,kCAAkCr4F,YAAmC;AAC5E,QAAIA,WAAWvoB,SAAS,aAAc,QAAO;AAC7C,QAAIuoB,WAAWvoB,SAAS,sBAAsBuoB,WAAW+B,UAAU;AACjE,aAAO;AAAA,IACT;AAEA,WAAOs2F,kCAAkCr4F,WAAW10B,MAAM;AAAA,EAC5D;ACh1IA,QAAMitH,oBAAoBvhD,6BAA6B;AAAA,IACrDwhD,qBAAqB;AAAA,IACrBC,iBAAiB;AAAA,EACnB,CAAC;AAED,MAAAC,gBAAgBn1F,gBACd,MAAMo1F,gCAAgCp1F,WAA6B;AAAA,IACjEq1F,iBACEnnG,cACuD;AACvD,UAAI,KAAK7Z,MAAK,GAAe,GAAG;AAC9B,cAAMtR,QAAO,KAAKi1E,UAA6B;AAC/C,aAAKxiD,KAAM;AACX,aAAK8/F,cAAe;AAIpBvyH,QAAAA,MAAKyM,OAAO,MAAM+tF,gBAA8B,IAAI;AAEpD,aAAK+3B,cAAe;AACpB,aAAKjpH,OAAM,GAAe;AAC1B,eAAO,KAAKkpH,kBAAkBxyH,OAAMmrB,YAAY;AAAA,MAClD;AAAA,IACF;AAAA,IAEAqnG,kBACExyH,OACAmrB,cAC0C;AAC1C,UAAItU,eAAc7W;AAElB,UAAI,CAAC6W,aAAYsU,gBAAgB,CAACtU,aAAY1F,MAAM;AAClD0F,QAAAA,eAAc,KAAKs+D,WACjBt+D,cACA,aACF;AAAA,MACF;AAEAA,MAAAA,aAAYsU,eAAeA;AAC3B,aAAOtU;AAAAA,IACT;AAAA,IAMA60E,iBAAiB3/E,OAAc;AAC7B,UACEA,UAA8B,MAC9B,KAAKjF,MAAM8F,WAAW,KAAKjO,MAAMsN,MAAM,CAAC,UACxC;AACA,aAAKugF,SAAyB,KAAA,CAAC;AAAA,MACjC,OAAO;AACL,cAAMd,iBAAiB3/E,KAAI;AAAA,MAC7B;AAAA,IACF;AAAA,IAMAyvF,cACE7lB,qBACgC;AAChC,aACE,KAAK28C,iBAAiB,YAAY,KAClC,MAAM92B,cAAc7lB,mBAAmB;AAAA,IAE3C;AAAA,IAEA6kB,gBAAgBqC,SAAmD;AAKjE,aACE,KAAKy1B,iBAAiB,YAAY,KAAK,MAAM93B,gBAAgBqC,OAAO;AAAA,IAExE;AAAA,IAEAoI,kBACE33F,MACAiG,UACA06G,eACA7wD,YACA;AAIA,UAAI9vD,SAAS+E,QAAW;AACtB,cAAM4yF,kBAAkB33F,MAAMiG,UAAU06G,eAAe7wD,UAAS;AAAA,MAClE;AAAA,IACF;AAAA,IAMA8nC,mBAAgD;AAC9C,aAAO,KAAKotB,iBAAiB,SAAS,KAAK,MAAMptB,iBAAkB;AAAA,IACrE;AAAA,IAEAtvB,YAAYzkE,MAAcmyF,iBAA0BxtB,UAAsB;AACxE,aACE3kE,SAAS,iBACT,MAAMykE,YAAYzkE,MAAMmyF,iBAAiBxtB,QAAO;AAAA,IAEpD;AAAA,IAEAE,aAAah2E,OAAci2E,OAAsB;AAC/C,UACEj2E,SACAA,MAAKmR,SAAS,iBACdnR,MAAKmrB,iBAAiB,cACtB;AACAnrB,QAAAA,MAAKmrB,eAAe;AAAA,MACtB,OAAO;AACL,cAAM6qD,aAAah2E,OAAMi2E,KAAK;AAAA,MAChC;AAAA,IACF;AAAA,IAMAw8C,0BAA0B5hG,IAAY5kB,MAAsB;AAC1D,UAAI,MAAMwmH,0BAA0B5hG,IAAI5kB,IAAG,GAAG;AAC5C,eAAO;AAAA,MACT;AAIA,YAAMq+E,YAAY,KAAKI,UAAW;AAClC,UAAIJ,UAAUn5E,SAAI,KAAqB;AACrC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IAEAuhH,oBACE1yH,OACA2yH,SACA;AAEA,UAAI3yH,MAAK85B,SAAS95B,MAAK85B,MAAM3oB,SAAS,cAAe;AACrD,YAAMuhH,oBAAoB1yH,OAAM2yH,OAAO;AAAA,IACzC;AAAA,IAGAlyB,yBACEzgG,OACA0gG,MAC+B;AAAA,UAAAuC;AAE/B,UAAIvC,KAAKvvF,SAAS,kBAAa8xF,cAAIvC,KAAKvpC,UAAK,QAAV8rC,YAAYnvB,eAAe;AAE5D,eAAO,MAAM2sB,yBAAyBzgG,OAAM0gG,IAAI;AAAA,MAClD;AAEA,UAAI,KAAKpvF,MAAK,EAAS,GAAG;AAExB,cAAMuwD,OAA2B7hE;AACjC6hE,aAAK/nC,QAAQ,KAAK04F,kBAAkB9xB,MAAM,YAAY;AACtD,aAAKjuE,KAAM;AACXovC,aAAKhoC,OAAO,MAAM+4F,gDAAiD;AACnE,eAAO,KAAKz9C,WAAWtT,MAAM,kBAAkB;AAAA,MACjD;AAEA,WAAKixB,UAAW;AAChB,YAAM+/B,kBAAkB7yH;AACxB6yH,sBAAgBpmH,OAAQi0F,KAAuBj0F;AAC/C,aAAO,KAAK+lH,kBAAkBK,iBAAiB,WAAW;AAAA,IAC5D;AAAA,IAEAC,WACE9+C,iBACA++C,uBACA7+C,iBACoC;AACpC,aACE,KAAKo+C,iBAAiB,gBAAgB,KACtC,MAAMQ,WACJ9+C,iBACA++C,uBACA7+C,eACF;AAAA,IAEJ;AAAA,IAEA8+C,gBACEC,WACmD;AACnD,aACE,KAAKX,iBAAiB,YAAY,KAAK,MAAMU,gBAAgBC,SAAS;AAAA,IAE1E;AAAA,IAEAhH,WACEjsH,OACAyrB,aACA+2E,YACG;AACH,YAAMrxF,OAAOsa,cAAc,qBAAqB;AAEhD,WAAKgH,KAAM;AACX,YAAM+9F,YAAY,KAAK7xH,MAAMoO;AAE7B,YAAM8J,eAAc,KAAKy7G,iBAAiB,YAAY;AACtD,UAAIz7G,cAAa;AACf,YACE,KAAKvF,MAAiB,EAAA,KACtB,KAAKA,MAAK,GAAe,KACzB,KAAKA,MAAK,CAAU,GACpB;AACAtR,UAAAA,MAAKi7B,KAAKpkB;AAAAA,QACZ,WAAW2rF,cAAc,CAAC/2E,aAAa;AACrCzrB,UAAAA,MAAKi7B,KAAK;AACVj7B,UAAAA,MAAK65B,OAAO,KAAK24F,kBAAkB37G,cAAa,WAAW;AAC3D,iBAAO,KAAKs+D,WAAWn1E,OAAMmR,IAAI;AAAA,QACnC,OAAO;AACL,gBAAM,KAAKmlE,MACT27C,kBAAkBC,qBAClB,KAAKvzH,MAAM4U,QACb;AAAA,QACF;AAAA,MACF,OAAO;AACL,aAAKgvF,aAAaviG,OAAMyrB,aAAa+2E,UAAU;AAAA,MACjD;AAEA,YAAMoB,gBAAgB5jG,KAAI;AAC1BA,MAAAA,MAAK65B,OACH,KAAKy4F,iBAAiB,WAAW,KACjC,MAAMY,eAAe,CAAC,CAAClzH,MAAKi9B,YAAYuzF,SAAS;AACnD,aAAO,KAAKr7C,WAAWn1E,OAAMmR,IAAI;AAAA,IACnC;AAAA,IAEAwlE,YACE32E,OAKAs7B,aACa;AACb,YAAMzkB,eAAc,KAAKy7G,iBAAiB,YAAY;AACtD,UAAI,CAACz7G,aAAa,QAAO,MAAM8/D,YAAY32E,OAAMs7B,WAAU;AAE3D,YAAMyjE,SAAQ/+F;AAEd,UAAI,CAAC,KAAKkyF,aAAqB,EAAA,KAAK,CAAC,KAAK5gF,MAAK,EAAS,GAAG;AAEzDytF,QAAAA,OAAMrhE,aAAa,CAAE;AACrBqhE,QAAAA,OAAM99F,SAAS;AACf89F,QAAAA,OAAMthE,cAAc,KAAK+0F,kBAAkB37G,cAAa,aAAa;AACrE,eAAO,KAAKs+D,WAAW4pB,QAAO,wBAAwB;AAAA,MACxD;AAGA,WAAKzS,aAAa,mBAAmB;AACrC,YAAMruB,YAAY,KAAKgX,UAAqC;AAC5DhX,gBAAUngC,WAAWjnB;AACrBkoF,MAAAA,OAAMrhE,aAAa,CAAC,KAAKy3C,WAAWlX,WAAW,wBAAwB,CAAC;AAExE,aAAO,MAAM0Y,YAAYooB,QAAOzjE,WAAU;AAAA,IAC5C;AAAA,IAEAhV,2BAAoC;AAClC,UAAI,KAAKhV,MAAK,EAAY,GAAG;AAC3B,cAAMmhB,OAAO,KAAKo4D,eAAgB;AAClC,YAAI,KAAKsH,qBAAqB1/D,MAAM,MAAM,GAAG;AAC3C,cACE,KAAK3rB,MAAMqsH,WACTvwC,eAA6B,GAAA,GAC7B,KAAKkI,oBAAoBr4D,OAAO,CAAC,CACnC,GACA;AACA,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF;AACA,aAAO,MAAMnM,yBAA0B;AAAA,IACzC;AAAA,IAEA8sG,iCACEpzH,OAKAurH,wBAC0C;AAAA,UAAA8H;AAC1C,WAAAA,cAAKrzH,MAAkC09B,eAAnC21F,QAAAA,YAA+ClnH,QAAQ;AAEzD,eAAO;AAAA,MACT;AACA,aAAO,MAAMinH,iCACXpzH,OACAurH,sBACF;AAAA,IACF;AAAA,IAEA+H,YAAYtzH,OAAsC;AAChD,YAAM;AAAA,QAAE09B;AAAAA,MAAY,IAAG19B;AACvB,UAAI09B,cAAU,QAAVA,WAAYvxB,QAAQ;AACtBnM,QAAAA,MAAK09B,aAAaA,WAAWxF,OAE3Bl4B,CAAAA,UAAQA,MAAK89B,SAAS3sB,SAAS,aACjC;AAAA,MACF;AACA,YAAMmiH,YAAYtzH,KAAI;AACtBA,MAAAA,MAAK09B,aAAaA;AAAAA,IACpB;AAAA,IAEAg+D,YACE17F,OACmD;AACnD,YAAM6W,eAAc,KAAKy7G,iBAAiB,YAAY;AACtD,UAAI,CAACz7G,aAAa,QAAO,MAAM6kF,YAAY17F,KAAI;AAE/CA,MAAAA,MAAK09B,aAAa,CAAE;AAEpB,UAAI,CAAC,KAAKw0D,aAAqB,EAAA,KAAK,CAAC,KAAK5gF,MAAK,EAAS,GAAG;AAEzDtR,QAAAA,MAAKiB,SAAS,KAAKuxH,kBAAkB37G,cAAa,eAAe;AACjE,aAAKi8E,UAAW;AAChB,eAAO,KAAK3d,WAAWn1E,OAAM,mBAAmB;AAAA,MAClD;AAGA,YAAMi+D,YACJ,KAAKoZ,gBAA0CxgE,YAAW;AAC5DonD,gBAAUpgC,QAAQhnB;AAClB7W,MAAAA,MAAK09B,WAAWt2B,KACd,KAAK+tE,WAAWlX,WAAW,wBAAwB,CACrD;AAEA,UAAI,KAAKssB,IAAG,EAAS,GAAG;AAEtB,cAAMgpC,gBAAgB,KAAKC,8BAA8BxzH,KAAI;AAG7D,YAAI,CAACuzH,cAAe,MAAKE,2BAA2BzzH,KAAI;AAAA,MAC1D;AAEA,WAAKyyF,iBAAgB,EAAS;AAC9BzyF,MAAAA,MAAKiB,SAAS,KAAKyyH,kBAAmB;AACtC,WAAK5gC,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEA0zH,oBAAuD;AAGrD,aACE,KAAKpB,iBAAiB,eAAe,KAAK,MAAMoB,kBAAmB;AAAA,IAEvE;AAAA,IAGAnB,gBAAsB;AACpB,UACE,KAAK5zH,MAAM+U,QACX,KAAKgyE,kBAAkB,KAAK/mF,MAAM84E,cAAcn4E,KAAK,GACrD;AACA,aAAKg3E,MAAM27C,kBAAkBE,iBAAiB,KAAKxzH,MAAM84E,aAAa;AAAA,MACxE;AAAA,IACF;AAAA,EACD;AC3YH,MAAAk8C,cAAgB12F,gBACd,MAAM22F,yBAAyB32F,WAA6B;AAAA,IAC1D42F,mBAAiC;AAC/B,UAAI,KAAKviH,MAAK,EAAU,GAAG;AACzB,cAAMwiH,sBAAsB,KAAKn1H,MAAM4U;AAEvC,cAAMvT,QAAO,KAAKi1E,UAAyB;AAC3C,aAAKxiD,KAAM;AACX,YAAIovD,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AACtC,gBAAM1E,OAAO,KAAKsnH,oBAAqB;AACvC,gBAAM36F,cAAa,KAAKumE,iBAAiB3/F,OAAMyM,IAAI;AAEnD2sB,UAAAA,YAAWjoB,OAAO;AAClB,cAAI,KAAKG,MAAK,EAAU,GAAG;AACzB,mBAAO8nB;AAAAA,UACT;AAAA,QACF;AACA,aAAKmvC,WAAWurD,mBAAmB;AAAA,MACrC;AAAA,IACF;AAAA,IAMAt4B,cAAc7lB,qBAA6D;AACzE,aACE,KAAKk+C,iBAAgB,KAAM,MAAMr4B,cAAc7lB,mBAAmB;AAAA,IAEtE;AAAA,EACD;AC1BH,QAAMq+C,qBAEF,CAAC,WAAW,UAAU,QAAQ,OAAO;AACzC,QAAMC,eAAe,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG;AAExC,WAASC,gBAAgBC,YAA8B;AAC5D,QAAIA,WAAW1mH,IAAI,YAAY,GAAG;AAChC,UAAI0mH,WAAW1mH,IAAI,mBAAmB,GAAG;AACvC,cAAM,IAAI0I,MACR,iEACF;AAAA,MACF;AAEA,YAAM8D,yBACJk6G,WAAWvlH,IAAI,YAAY,EAAEqL;AAC/B,UACEA,0BAA0B,QAC1B,OAAOA,2BAA2B,WAClC;AACA,cAAM,IAAI9D,MACR,2DACF;AAAA,MACF;AAEA,YAAM+D,yBACJi6G,WAAWvlH,IAAI,YAAY,EAAEsL;AAC/B,UACEA,0BAA0B,QAC1B,OAAOA,2BAA2B,WAClC;AACA,cAAM,IAAI/D,MAAM,6CAA6C;AAAA,MAC/D;AAAA,IACF;AAEA,QAAIg+G,WAAW1mH,IAAI,MAAM,KAAK0mH,WAAW1mH,IAAI,YAAY,GAAG;AAC1D,YAAM,IAAI0I,MAAM,6CAA6C;AAAA,IAC/D;AAEA,QAAIg+G,WAAW1mH,IAAI,cAAc,KAAK0mH,WAAW1mH,IAAI,aAAa,GAAG;AACnE,YAAM,IAAI0I,MAAM,sDAAsD;AAAA,IACxE;AAEA,QAAIg+G,WAAW1mH,IAAI,kBAAkB,GAAG;AAAA,UAAA2mH;AACtC,YAAMpnC,WAAWmnC,WAAWvlH,IAAI,kBAAkB,EAAEo+E;AAEpD,UAAI,CAACgnC,mBAAmBz9F,SAASy2D,QAAQ,GAAG;AAC1C,cAAMqnC,eAAeL,mBAAmBliH,IAAIwiH,OAAK,IAAIA,CAAC,GAAG,EAAEtiH,KAAK,IAAI;AACpE,cAAM,IAAImE,MACR,6EAA6Ek+G,YAAY,GAC3F;AAAA,MACF;AAEA,YAAME,sBAEFH,kBAAAD,WAAWvlH,IAAI,gBAAgB,MAA/BwlH,OAAAA,SAAAA,gBAAkCI,gBAAe;AAErD,UAAIxnC,aAAa,QAAQ;AACvB,YAAImnC,WAAW1mH,IAAI,cAAc,GAAG;AAClC,gBAAM,IAAI0I,MACR,0DACF;AAAA,QACF;AAEA,YAAIg+G,WAAW1mH,IAAI,aAAa,GAAG;AACjC,gBAAM,IAAI0I,MACR,yDACF;AAAA,QACF;AAEA,cAAM82E,aAAaknC,WAAWvlH,IAAI,kBAAkB,EAAEq+E;AAEtD,YAAI,CAACgnC,aAAa19F,SAAS02D,UAAU,GAAG;AACtC,gBAAMwnC,YAAYR,aAAaniH,IAAIpD,OAAK,IAAIA,CAAC,GAAG,EAAEsD,KAAK,IAAI;AAE3D,gBAAM,IAAImE,MACR,iHAAiHs+G,SAAS,GAC5H;AAAA,QACF;AAEA,YAAIxnC,eAAe,OAAOsnC,mBAAmB;AAC3C,gBAAM,IAAIp+G,MACR,iGAAiGsgB,KAAKtyB,UAAU,CAAC,kBAAkBgwH,WAAWvlH,IAAI,gBAAgB,CAAC,CAAC,CAAC,KACvK;AAAA,QACF;AAAA,MACF,WAEEo+E,aAAa,WACbunC,mBACA;AACA,cAAM,IAAIp+G,MACR,iFAAiFsgB,KAAKtyB,UAAU,CAAC,kBAAkBgwH,WAAWvlH,IAAI,gBAAgB,CAAC,CAAC,CAAC,KACvJ;AAAA,MACF;AAAA,IACF;AAEA,QAAIulH,WAAW1mH,IAAI,kBAAkB,GAAG;AAK/B;AACL,YACE0mH,WAAW1mH,IAAI,wBAAwB,KACvC0mH,WAAW1mH,IAAI,kBAAkB,GACjC;AACA,gBAAM,IAAI0I,MACR,uFACF;AAAA,QACF;AACA,cAAMu+G,sCACJP,WAAWvlH,IAAI,kBAAkB,EAAE2J;AACrC,YAAIm8G,wCAAwC,YAAY;AACtD,gBAAM,IAAIv+G,MACR,sJAGF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,QAAIg+G,WAAW1mH,IAAI,kBAAkB,GAAG;AAM/B,UAAI0mH,WAAW1mH,IAAI,wBAAwB,GAAG;AACnD,cAAM,IAAI0I,MACR,qEACF;AAAA,MACF;AAAA,IACF;AACA,QACE,CAACg+G,WAAW1mH,IAAI,wBAAwB,KACxC0mH,WAAW1mH,IAAI,kBAAkB,KACjC0mH,WAAWvlH,IAAI,kBAAkB,EAAE2K,wBACnC;AAMO;AACL46G,mBAAWnoH,IAAI,0BAA0B,EAAE;AAAA,MAC7C;AAAA,IACF;AAEA,QAAImoH,WAAW1mH,IAAI,gBAAgB,GAAG;AACpC,YAAM+mH,aAAaL,WAAWvlH,IAAI,gBAAgB,EAAE4lH;AACpD,UAAIA,cAAc,MAAM;AAWf;AACL,gBAAMG,gCAAgC,CAAC,QAAQ,KAAK;AACpD,cAAI,CAACA,8BAA8Bp+F,SAASi+F,UAAU,GAAG;AACvD,kBAAM,IAAIr+G,MACR,4EACEw+G,8BAA8B7iH,IAAIwiH,OAAK,IAAIA,CAAC,GAAG,EAAEtiH,KAAK,IAAI,CAC9D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QACEmiH,WAAW1mH,IAAI,oBAAoB,KACnC,CAAC0mH,WAAW1mH,IAAI,eAAe,GAC/B;AACA,YAAM3O,SAAQ,IAAIqX,MAChB,8FACF;AAEArX,MAAAA,OAAM81H,iBAAiB;AACvB,YAAM91H;AAAAA,IACR;AAEA,QACEq1H,WAAW1mH,IAAI,wBAAwB,KACvC0mH,WAAWvlH,IAAI,wBAAwB,EAAE2J,YAAY,WACrD;AACA,YAAM,IAAIpC,MACR,2JAGF;AAAA,IACF;AAAA,EAeF;AAYO,QAAM0+G,eAAe;AAAA,IAC1B1iD;AAAAA,IACAszB,KAAAA;AAAAA,IACAhM,MAAAA;AAAAA,IACA2oB,YAAAA;AAAAA,IACAuR;AAAAA,IACAvB,cAAAA;AAAAA,EACD;AAEM,QAAM0C,mBAAmB/lH,OAAOnK,KAAKiwH,YAAY;AAAA,EC1KzC,MAAeE,yBAAyB/Y,WAAW;AAAA,IAuChEgZ,WACEv/C,MACAw/C,UACAC,UACAv/C,qBACS;AACT,UACEF,KAAKtkE,SAAS,mBACd,KAAKqM,eAAei4D,IAAI,KACxBA,KAAKh6C,YACLg6C,KAAKv5C,WACL;AACA,eAAOg5F;AAAAA,MACT;AAEA,YAAMz1H,OAAMg2E,KAAKh2E;AAMjB,YAAMgN,OAAOhN,KAAI0R,SAAS,eAAe1R,KAAIgN,OAAOhN,KAAII;AAExD,UAAI4M,SAAS,aAAa;AACxB,YAAIwoH,UAAU;AACZ,eAAK3+C,MAAMxF,OAAO7F,eAAexrE,IAAG;AACpC,iBAAO;AAAA,QACT;AACA,YAAIy1H,UAAU;AACZ,cAAIv/C,qBAAqB;AAGvB,gBAAIA,oBAAoB8d,mBAAmB,MAAM;AAC/C9d,kCAAoB8d,iBAAiBh0F,KAAI6T,IAAII;AAAAA,YAC/C;AAAA,UACF,OAAO;AACL,iBAAK4iE,MAAMxF,OAAOlL,gBAAgBnmE,IAAG;AAAA,UACvC;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,aAAOy1H;AAAAA,IACT;AAAA,IAEAC,qBACEz0B,MACAzY,kBACmC;AACnC,aACEyY,KAAKvvF,SAAS,6BACd,KAAKu0E,kBAAkBgb,KAAKhtF,KAAK,MAAMu0E;AAAAA,IAE3C;AAAA,IAGA6oC,gBAA2D;AACzD,WAAKr8B,mBAAoB;AACzB,WAAKnK,UAAW;AAChB,YAAMoW,OAAO,KAAKvG,gBAAkD;AACpE,UAAI,CAAC,KAAK7oF,MAAK,GAAO,GAAG;AACvB,aAAKi3D,WAAY;AAAA,MACnB;AAGA,WAAK8e,0BAA2B;AAChCqZ,WAAKpmE,WAAW,KAAKA;AACrBomE,WAAKvvE,SAAS,KAAKxyB,MAAMwyB;AACzB,UAAI,KAAKkhD,cAAW,KAAuB;AACzCquB,aAAKnmE,SAAS,KAAKA;AAAAA,MACrB;AACA,aAAOmmE;AAAAA,IACT;AAAA,IAqBAvG,gBAEEi7B,YACAz/C,qBACc;AACd,UAAIy/C,YAAY;AACd,eAAO,KAAKC,cAAc,MACxB,KAAKC,oBAAoB3/C,mBAAmB,CAC9C;AAAA,MACF;AACA,aAAO,KAAK4/C,WAAW,MAAM,KAAKD,oBAAoB3/C,mBAAmB,CAAC;AAAA,IAC5E;AAAA,IAGA2/C,oBAEE3/C,qBACc;AACd,YAAMpiE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMmtF,OAAO,KAAKS,iBAAiBxrB,mBAAmB;AACtD,UAAI,KAAKrkE,MAAK,EAAS,GAAG;AACxB,cAAMtR,QAAO,KAAKq1F,YAAkC9hF,QAAQ;AAC5DvT,QAAAA,MAAKq8B,cAAc,CAACqkE,IAAI;AACxB,eAAO,KAAKnW,IAAG,EAAS,GAAG;AACzBvqF,UAAAA,MAAKq8B,YAAYj1B,KAAK,KAAK+5F,iBAAiBxrB,mBAAmB,CAAC;AAAA,QAClE;AACA,aAAKotB,iBAAiB/iG,MAAKq8B,WAAW;AACtC,eAAO,KAAK84C,WAAWn1E,OAAM,oBAAoB;AAAA,MACnD;AACA,aAAO0gG;AAAAA,IACT;AAAA,IAGA80B,2BAEE7/C,qBACA4vB,gBACA;AACA,aAAO,KAAK8vB,cAAc,MACxB,KAAKl0B,iBAAiBxrB,qBAAqB4vB,cAAc,CAC3D;AAAA,IACF;AAAA,IAGAnE,wBAEEzrB,qBACA4vB,gBACA;AACA,aAAO,KAAKgwB,WAAW,MACrB,KAAKp0B,iBAAiBxrB,qBAAqB4vB,cAAc,CAC3D;AAAA,IACF;AAAA,IAIAzE,2BAA2BnrB,qBAAuC;AAChEA,0BAAoBge,wBAAwB,KAAKh1F,MAAM4U;AAAAA,IACzD;AAAA,IAKA4tF,iBAEExrB,qBACA4vB,gBACc;AACd,YAAMhyF,WAAW,KAAK5U,MAAM4U;AAC5B,UAAI,KAAK2+E,aAAY,GAAU,GAAG;AAChC,YAAI,KAAKoC,UAAU1C,UAAU;AAC3B,cAAIr4D,QAAO,KAAKk8F,WAAY;AAC5B,cAAIlwB,gBAAgB;AAClBhsE,YAAAA,QAAOgsE,eAAen2F,KAAK,MAAMmqB,OAAMhmB,QAAQ;AAAA,UACjD;AACA,iBAAOgmB;AAAAA,QACT;AAAA,MACF;AAEA,UAAIm8F;AACJ,UAAI//C,qBAAqB;AACvB+/C,8BAAsB;AAAA,MACxB,OAAO;AACL//C,8BAAsB,IAAIif,iBAAkB;AAC5C8gC,8BAAsB;AAAA,MACxB;AACA,YAAM;AAAA,QAAEvkH;AAAAA,MAAM,IAAG,KAAKxS;AAEtB,UAAIwS,SAAkB,MAAI0wE,kBAAkB1wE,IAAI,GAAG;AACjD,aAAKxS,MAAMspF,mBAAmB,KAAKtpF,MAAM+U;AAAAA,MAC3C;AAEA,UAAI6lB,OAAO,KAAKo8F,sBAAsBhgD,mBAAmB;AACzD,UAAI4vB,gBAAgB;AAClBhsE,eAAOgsE,eAAen2F,KAAK,MAAMmqB,MAAMhmB,QAAQ;AAAA,MACjD;AACA,UAAI4uE,kBAAkB,KAAKxjF,MAAMwS,IAAI,GAAG;AACtC,cAAMnR,QAAO,KAAKq1F,YAAoC9hF,QAAQ;AAC9D,cAAM4lB,WAAW,KAAKx6B,MAAMkB;AAC5BG,QAAAA,MAAKm5B,WAAWA;AAEhB,YAAI,KAAK7nB,MAAK,EAAM,GAAG;AACrB,eAAK0kE,aAAaz8C,MAAkB,IAAI;AACxCv5B,UAAAA,MAAKu5B,OAAOA;AAEZ,gBAAM23C,aAAa39D,SAASjU;AAC5B,cACEq2E,oBAAoB8d,kBAAkB,QACtC9d,oBAAoB8d,eAAen0F,SAAS4xE,YAC5C;AACAyE,gCAAoB8d,iBAAiB;AAAA,UACvC;AACA,cACE9d,oBAAoB6d,sBAAsB,QAC1C7d,oBAAoB6d,mBAAmBl0F,SAAS4xE,YAChD;AACAyE,gCAAoB6d,qBAAqB;AAAA,UAC3C;AACA,cACE7d,oBAAoB+d,iBAAiB,QACrC/d,oBAAoB+d,cAAcp0F,SAAS4xE,YAC3C;AACA,iBAAKyjB,0BAA0Bhf,mBAAmB;AAClDA,gCAAoB+d,gBAAgB;AAAA,UACtC;AAAA,QACF,OAAO;AACL1zF,UAAAA,MAAKu5B,OAAOA;AAAAA,QACd;AAEA,aAAK9G,KAAM;AACXzyB,QAAAA,MAAKw5B,QAAQ,KAAK2nE,iBAAkB;AACpC,aAAKqc,UAAUjkF,MAAM,KAAK47C,WAAWn1E,OAAM,sBAAsB,CAAC;AAElE,eAAOA;AAAAA,MACR,WAAU01H,qBAAqB;AAC9B,aAAKpiC,sBAAsB3d,qBAAqB,IAAI;AAAA,MACtD;AAEA,aAAOp8C;AAAAA,IACT;AAAA,IAKAo8F,sBAEEhgD,qBACc;AACd,YAAMpiE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAM00E,mBAAmB,KAAKtpF,MAAMspF;AACpC,YAAMyY,OAAO,KAAKk1B,aAAajgD,mBAAmB;AAElD,UAAI,KAAKw/C,qBAAqBz0B,MAAMzY,gBAAgB,GAAG;AACrD,eAAOyY;AAAAA,MACT;AAEA,aAAO,KAAKG,iBAAiBH,MAAMntF,UAAUoiE,mBAAmB;AAAA,IAClE;AAAA,IAEAkrB,iBAEEH,MACAntF,UAEAoiE,qBACc;AACd,UAAI,KAAK4U,IAAG,EAAY,GAAG;AACzB,cAAMvqF,QAAO,KAAKq1F,YAAqC9hF,QAAQ;AAC/DvT,QAAAA,MAAKvB,OAAOiiG;AACZ1gG,QAAAA,MAAKm6B,aAAa,KAAKinE,wBAAyB;AAChD,aAAK93F,OAAM,EAAS;AACpBtJ,QAAAA,MAAKo6B,YAAY,KAAK+mE,iBAAkB;AACxC,eAAO,KAAKhsB,WAAWn1E,OAAM,uBAAuB;AAAA,MACtD;AACA,aAAO0gG;AAAAA,IACT;AAAA,IAEAm1B,yBAEElgD,qBAC8B;AAC9B,aAAO,KAAKrkE,MAAoB,GAAA,IAC5B,KAAK+iE,qBACL,KAAKm0C,gBAAgB7yC,mBAAmB;AAAA,IAC9C;AAAA,IAKAigD,aAEEjgD,qBACc;AACd,YAAMpiE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAM00E,mBAAmB,KAAKtpF,MAAMspF;AACpC,YAAMyY,OAAO,KAAKm1B,yBAAyBlgD,mBAAmB;AAE9D,UAAI,KAAKw/C,qBAAqBz0B,MAAMzY,gBAAgB,GAAG;AACrD,eAAOyY;AAAAA,MACT;AAEA,aAAO,KAAKmtB,YAAYntB,MAAMntF,UAAU,EAAE;AAAA,IAC5C;AAAA,IAQAs6G,YAEEt0F,MACAu0F,cACAC,SACc;AACd,UAAI,KAAKntG,cAAc2Y,IAAI,GAAG;AAK5B,cAAM15B,SAAQ,KAAK20E,iBAAiBj7C,IAAI;AAExC,YACEw0F,WAAWlrC,wBAAuB,EAAO,KACzC,CAAC,KAAKyR,UAAUxC,SAChB,CAAC,KAAKxgF,MAAK,EAAO,GAClB;AACA,eAAKglE,MAAMxF,OAAOlG,qBAAqBrxC,MAAM;AAAA,YAC3CwpC,gBAAgBljE;AAAAA,UAClB,CAAC;AAAA,QACH;AAEA,aAAKq2E,WAAWC,eAAet2E,QAAO05B,KAAKjmB,IAAII,KAAK;AAAA,MACtD;AAEA,YAAMygB,KAAK,KAAKx1B,MAAMwS;AACtB,UAAIoxE,gBAAgBpuD,EAAE,MAAM,KAAKmgE,UAAUxC,SAAS,CAAC,KAAKxgF,MAAY,EAAA,IAAI;AACxE,YAAIwkH,OAAOjzC,wBAAwB1uD,EAAE;AACrC,YAAI2hG,OAAO/H,SAAS;AAClB,cAAI55F,WAAoB;AACtB,iBAAKm4D,aAAa,kBAAkB;AACpC,gBAAI,KAAK3tF,MAAMyqF,4BAA4B;AAEzC,qBAAO7vD;AAAAA,YACT;AACA,iBAAKw8F,6BAA6Bx8F,MAAsBu0F,YAAY;AAAA,UACtE;AACA,gBAAM9tH,QAAO,KAAKq1F,YAChBy4B,YACF;AACA9tH,UAAAA,MAAKu5B,OAAOA;AACZv5B,UAAAA,MAAKm5B,WAAW,KAAKx6B,MAAMkB;AAE3B,gBAAMm2H,UAAU7hG,OAAmB,MAAIA,OAAoB;AAC3D,gBAAM8hG,WAAW9hG,OAA2B;AAE5C,cAAI8hG,UAAU;AAGZH,mBAAOjzC,wBAAuB,EAAc;AAAA,UAC9C;AAEA,eAAKpwD,KAAM;AAEX,cAEE0B,aAEA,KAAKyxD,UAAU,CAAC,oBAAoB;AAAA,YAAEoH,UAAU;AAAA,UAAW,CAAA,CAAC,GAC5D;AACA,gBAAI,KAAKruF,MAAMwS,SAAI,MAAkB,KAAKmjF,UAAU3C,UAAU;AAC5D,oBAAM,KAAKrb,MACTxF,OAAOhF,kCACP,KAAKntE,MAAM4U,QACb;AAAA,YACF;AAAA,UACF;AAEAvT,UAAAA,MAAKw5B,QAAQ,KAAK08F,qBAAqB/hG,IAAI2hG,IAAI;AAC/C,gBAAMK,eAAe,KAAKhhD,WACxBn1E,OACAg2H,WAAWC,WAAW,sBAAsB,kBAC9C;AAMA,gBAAMG,SAAS,KAAKz3H,MAAMwS;AAC1B,cACG8kH,aAAaG,WAAM,MAAqBA,WAAwB,OAChEJ,WAAWI,eACZ;AACA,kBAAM,KAAK9/C,MACTxF,OAAOrH,2BACP,KAAK9qE,MAAM4U,QACb;AAAA,UACF;AAEA,iBAAO,KAAKs6G,YAAYsI,cAAcrI,cAAcC,OAAO;AAAA,QAC7D;AAAA,MACF;AAEA,aAAOx0F;AAAAA,IACT;AAAA,IAKA28F,qBAEE/hG,IACA2hG,MACc;AACd,YAAMviH,WAAW,KAAK5U,MAAM4U;AAC5B,cAAQ4gB,IAAE;AAAA,QACR,KAAA;AACE,kBAAQ,KAAKmgD,gBAAgB,oBAAoB,UAAU,GAAC;AAAA,YAC1D,KAAK;AACH,qBAAO,KAAK+hD,wBAAwB,MAAM;AACxC,uBAAO,KAAKC,kBAAmB;AAAA,cACjC,CAAC;AAAA,YAEH,KAAK;AACH,qBAAO,KAAKC,+BAA+B,MAAM;AAC/C,uBAAO,KAAKC,wBAAwBV,IAAI;AAAA,cAC1C,CAAC;AAAA,UACL;AAEA,cAGE,KAAKxhD,gBAAgB,oBAAoB,UAAU,MAAM,SACzD;AACA,mBAAO,KAAK+hD,wBAAwB,MAAM;AACxC,kBAAI,KAAK/hC,UAAU1C,YAAY,KAAKM,aAAsB,GAAA,GAAG;AAC3D,sBAAM,KAAK5b,MAAMxF,OAAOnC,mBAAmB,KAAKhwE,MAAM4U,QAAQ;AAAA,cAChE;AACA,qBAAO,KAAKkjH,8BACV,KAAKC,yBAAyBviG,IAAI2hG,IAAI,GACtCviH,QACF;AAAA,YACF,CAAC;AAAA,UACH;AAAA,QAGF;AACE,iBAAO,KAAKmjH,yBAAyBviG,IAAI2hG,IAAI;AAAA,MACjD;AAAA,IACF;AAAA,IAKAY,yBAEEviG,IACA2hG,MACc;AACd,YAAMviH,WAAW,KAAK5U,MAAM4U;AAE5B,aAAO,KAAKs6G,YACV,KAAKgI,yBAAwB,GAC7BtiH,UACAuvE,wBAAwB3uD,EAAE,IAAI2hG,OAAO,IAAIA,IAC3C;AAAA,IACF;AAAA,IAEAQ,oBAA8C;AAAA,UAAAK;AAC5C,YAAM;AAAA,QAAEpjH;AAAAA,MAAU,IAAG,KAAK5U;AAC1B,YAAMk7B,OAAO,KAAKsnE,iBAAkB;AACpC,YAAMy1B,sBAAsBloD,oCAAoCjhE,IAE9DosB,KAAK1oB,IACP;AAGA,UAAIylH,uBAAuB,GAAAD,cAAC98F,KAAKs9B,UAALw/D,QAAAA,YAAY7iD,gBAAe;AACrD,aAAKwC,MAAMxF,OAAO9B,yBAAyBz7D,UAAU;AAAA,UACnDpC,MAAM0oB,KAAK1oB;AAAAA,QACb,CAAC;AAAA,MACH;AACA,UAAI,CAAC,KAAK0lH,yCAAyC;AAEjD,aAAKvgD,MAAMxF,OAAO/B,iBAAiBx7D,QAAQ;AAAA,MAC7C;AAEA,aAAOsmB;AAAAA,IACT;AAAA,IAEAi9F,2BACE92H,OACA;AACA,UAAI,KAAKsR,MAAK,EAAY,GAAG;AAC3B,aAAKglE,MAAMxF,OAAOpE,oCAAoC1sE,MAAKm8B,QAAQ;AAAA,MACrE;AAAA,IACF;AAAA,IAIAqsF,gBAEE7yC,qBACAm6C,UACc;AACd,YAAMv8G,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMwjH,UAAU,KAAK7kC,eAAsB;AAE3C,UAAI6kC,WAAW,KAAKC,wBAAwB;AAC1C,aAAKvkG,KAAM;AACX,cAAMiuE,QAAO,KAAKu2B,WAAW1jH,QAAQ;AACrC,YAAI,CAACu8G,SAAU,MAAKgH,2BAA2Bp2B,KAAI;AACnD,eAAOA;AAAAA,MACT;AACA,YAAMjmE,SAAS,KAAKnpB,QAAe;AACnC,YAAMtR,QAAO,KAAKi1E,UAAmD;AACrE,UAAIwN,cAAc,KAAK9jF,MAAMwS,IAAI,GAAG;AAClCnR,QAAAA,MAAKm5B,WAAW,KAAKx6B,MAAMkB;AAC3BG,QAAAA,MAAK0a,SAAS;AAEd,YAAI,KAAKpJ,MAAK,EAAU,GAAG;AACzB,eAAKg7E,aAAa,kBAAkB;AAAA,QACtC;AACA,cAAM4qC,WAAW,KAAK5lH,QAAgB;AACtC,aAAKmhB,KAAM;AAEXzyB,QAAAA,MAAKm8B,WAAW,KAAKqsF,gBAAgB,MAAM,IAAI;AAE/C,aAAKl1B,sBAAsB3d,qBAAqB,IAAI;AAEpD,YAAI,KAAKh3E,MAAMoO,UAAUmqH,UAAU;AACjC,gBAAM9a,MAAMp8G,MAAKm8B;AAEjB,cAAIigF,IAAIjrG,SAAS,cAAc;AAC7B,iBAAKmlE,MAAMxF,OAAO7C,cAAcjuE,KAAI;AAAA,UACrC,WAAU,KAAKs3E,yBAAyB8kC,GAAG,GAAG;AAC7C,iBAAK9lC,MAAMxF,OAAOxL,oBAAoBtlE,KAAI;AAAA,UAC5C;AAAA,QACF;AAEA,YAAI,CAACy6B,QAAQ;AACX,cAAI,CAACq1F,UAAU;AACb,iBAAKgH,2BAA2B92H,KAAiC;AAAA,UACnE;AACA,iBAAO,KAAKm1E,WAAWn1E,OAAM,iBAAiB;AAAA,QAChD;AAAA,MACF;AAEA,YAAM0gG,OAAO,KAAKy2B,YAEhBn3H,OACAy6B,QACAk7C,mBACF;AAEA,UAAIohD,SAAS;AACX,cAAM;AAAA,UAAE5lH;AAAAA,QAAM,IAAG,KAAKxS;AACtB,cAAMs5E,cAAa,KAAK2N,UAAU,aAAa,IAC3C1D,wBAAwB/wE,IAAI,IAC5B+wE,wBAAwB/wE,IAAI,KAAK,CAAC,KAAKG,MAAK,EAAU;AAC1D,YAAI2mE,eAAc,CAAC,KAAKm/C,oBAAoB;AAC1C,eAAKhoC,eAAete,OAAO3M,wBAAwB5wD,QAAQ;AAC3D,iBAAO,KAAK0jH,WAAW1jH,QAAQ;AAAA,QACjC;AAAA,MACF;AAEA,aAAOmtF;AAAAA,IACT;AAAA,IAGAy2B,YAEEn3H,OACAy6B,QACAk7C,qBACc;AACd,UAAIl7C,QAAQ;AACV,cAAM48F,uBAAuBr3H;AAC7B,aAAKw9G,UACH6Z,qBAAqBl7F,UACrB,KAAKg5C,WAAWkiD,sBAAsB,kBAAkB,CAC1D;AACA,eAAOr3H;AAAAA,MACT;AAEA,YAAMuT,WAAW,KAAK5U,MAAM4U;AAC5B,UAAImtF,OAAO,KAAK42B,oBAAoB3hD,mBAAmB;AACvD,UAAI,KAAK2d,sBAAsB3d,qBAAqB,KAAK,EAAG,QAAO+qB;AACnE,aAAOle,eAAe,KAAK7jF,MAAMwS,IAAI,KAAK,CAAC,KAAKuhF,sBAAsB;AACpE,cAAM1yF,QAAO,KAAKq1F,YAAgC9hF,QAAQ;AAC1DvT,QAAAA,MAAKm5B,WAAW,KAAKx6B,MAAMkB;AAC3BG,QAAAA,MAAK0a,SAAS;AACd1a,QAAAA,MAAKm8B,WAAWukE;AAChB,aAAKjuE,KAAM;AACX,aAAK+qF,UAAU9c,MAAOA,OAAO,KAAKvrB,WAAWn1E,OAAM,kBAAkB,CAAE;AAAA,MACzE;AACA,aAAO0gG;AAAAA,IACT;AAAA,IAIA42B,oBAEE3hD,qBACc;AACd,YAAMpiE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAM00E,mBAAmB,KAAKtpF,MAAMspF;AACpC,YAAMyY,OAAO,KAAKlF,cAAc7lB,mBAAmB;AAEnD,UAAI,KAAKw/C,qBAAqBz0B,MAAMzY,gBAAgB,GAAG;AACrD,eAAOyY;AAAAA,MACT;AAEA,aAAO,KAAK+F,gBAAgB/F,MAAMntF,QAAQ;AAAA,IAC5C;AAAA,IAEAkzF,gBAEExnG,OACAsU,UACA0jE,SACc;AACd,YAAMt4E,SAAQ;AAAA,QACZu4E,qBAAqB;AAAA,QACrBqgD,iBAAiB,KAAK/J,qBAAqBvuH,KAAI;AAAA,QAC/Cm4E,MAAM;AAAA,MACP;AACD,SAAG;AACDn4E,QAAAA,QAAO,KAAK+3E,eAAe/3E,OAAMsU,UAAU0jE,SAASt4E,MAAK;AAGzDA,QAAAA,OAAM44H,kBAAkB;AAAA,MAC1B,SAAS,CAAC54H,OAAMy4E;AAChB,aAAOn4E;AAAAA,IACT;AAAA,IAMA+3E,eAEE/3E,OACAsU,UACA0jE,SACAt4E,QACc;AACd,YAAM;AAAA,QAAEwS;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAI,CAACs4E,WAAW9lE,aAAyB;AACvC,eAAO,KAAKqmH,UAAUv4H,OAAMsU,UAAU0jE,SAASt4E,MAAK;AAAA,MACtD,WAAWokF,gBAAgB5xE,IAAI,GAAG;AAChC,eAAO,KAAKu8G,8BAA8BzuH,OAAMsU,UAAU5U,MAAK;AAAA,MACjE;AAEA,UAAI41B,WAAW;AAEf,UAAIpjB,aAAyB;AAC3B,YAAI8lE,SAAS;AACX,eAAKX,MAAMxF,OAAOxG,uBAAuB,KAAK3rE,MAAM4U,QAAQ;AAC5D,cAAI,KAAKy3E,kBAAmB,UAAgC;AAE1DrsF,YAAAA,OAAMy4E,OAAO;AACb,mBAAOn4E;AAAAA,UACT;AAAA,QACF;AACAN,QAAAA,OAAMu4E,sBAAsB3iD,WAAW;AACvC,aAAK9B,KAAM;AAAA,MACb;AAEA,UAAI,CAACwkD,WAAW,KAAK3lE,MAAK,EAAU,GAAG;AACrC,eAAO,KAAKmmH,gCACVx4H,OACAsU,UACA5U,QACA41B,QACF;AAAA,MACF,OAAO;AACL,cAAMkH,WAAW,KAAK8uD,KAAe;AACrC,YAAI9uD,YAAYlH,YAAY,KAAKg2D,IAAU,EAAA,GAAG;AAC5C,iBAAO,KAAKmtC,YAAYz4H,OAAMsU,UAAU5U,QAAO88B,UAAUlH,QAAQ;AAAA,QACnE,OAAO;AACL51B,UAAAA,OAAMy4E,OAAO;AACb,iBAAOn4E;AAAAA,QACT;AAAA,MACF;AAAA,IACF;AAAA,IAMAy4H,YAEEz4H,OACAsU,UACA5U,QACA88B,UACAlH,UACiD;AACjD,YAAMv0B,QAAO,KAAKq1F,YAEhB9hF,QAAQ;AACVvT,MAAAA,MAAKgF,SAAS/F;AACde,MAAAA,MAAKy7B,WAAWA;AAChB,UAAIA,UAAU;AACZz7B,QAAAA,MAAK+uB,WAAW,KAAKorE,gBAAiB;AACtC,aAAK7wF,OAAM,CAAY;AAAA,MACxB,WAAU,KAAKgI,MAAK,GAAe,GAAG;AACrC,YAAIrS,MAAKkS,SAAS,SAAS;AACzB,eAAKmlE,MAAMxF,OAAOtF,mBAAmBj4D,QAAQ;AAAA,QAC/C;AACA,aAAK2iE,WAAWC,eAAe,KAAKx3E,MAAMkB,OAAO,KAAKlB,MAAM4U,QAAQ;AACpEvT,QAAAA,MAAK+uB,WAAW,KAAKslD,iBAAkB;AAAA,MACzC,OAAO;AACLr0E,QAAAA,MAAK+uB,WAAW,KAAKyrE,gBAAgB,IAAI;AAAA,MAC3C;AAEA,UAAI77F,OAAMu4E,qBAAqB;AAC5Bl3E,QAAAA,MAAoCu0B,WAAWA;AAChD,eAAO,KAAK4gD,WAAWn1E,OAAM,0BAA0B;AAAA,MACzD,OAAO;AACL,eAAO,KAAKm1E,WAAWn1E,OAAM,kBAAkB;AAAA,MACjD;AAAA,IACF;AAAA,IAGAw3H,UAEEv4H,OACAsU,UACA0jE,SACAt4E,QACc;AACd,YAAMqB,QAAO,KAAKq1F,YAA8B9hF,QAAQ;AACxDvT,MAAAA,MAAKgF,SAAS/F;AACd,WAAKwzB,KAAM;AACXzyB,MAAAA,MAAKs3B,SAAS,KAAKqgG,gBAAiB;AACpCh5H,MAAAA,OAAMy4E,OAAO;AACb,aAAO,KAAKqvB,gBACV,KAAKtxB,WAAWn1E,OAAM,gBAAgB,GACtCuT,UACA0jE,OACF;AAAA,IACF;AAAA,IAMAwgD,gCAEEx4H,OACAsU,UACA5U,QACA41B,UACc;AACd,YAAMm4F,4BAA4B,KAAK/tH,MAAMiqF;AAC7C,UAAIjT,sBAA+C;AAEnD,WAAKh3E,MAAMiqF,yBAAyB;AACpC,WAAKn2D,KAAM;AAEX,YAAMzyB,QAAO,KAAKq1F,YAChB9hF,QACF;AACAvT,MAAAA,MAAKs3B,SAASr4B;AACd,YAAM;AAAA,QAAEs4H;AAAAA,QAAiBrgD;AAAAA,MAAqB,IAAGv4E;AAEjD,UAAI44H,iBAAiB;AACnB,aAAK/iC,gBAAgBh7B,MAAM83B,oBAAoB;AAC/C3b,8BAAsB,IAAIif,iBAAkB;AAAA,MAC9C;AAEA,UAAI1d,qBAAqB;AAEvBl3E,QAAAA,MAAKu0B,WAAWA;AAAAA,MAClB;AAEA,UAAIA,UAAU;AACZv0B,QAAAA,MAAK+5B,YAAY,KAAK2sE,+BAAsC;AAAA,MAC9D,OAAO;AACL1mG,QAAAA,MAAK+5B,YAAY,KAAK2sE,6BAEpBznG,IAAAA,MAAKkS,SAAS,SACdnR,OACA21E,mBACF;AAAA,MACF;AACA,UAAIwgD,eAG4B,KAAK5/C,qBACnCv2E,OACAk3E,mBACF;AAEA,UAAIqgD,mBAAmB,KAAKjyB,sBAAuB,KAAI,CAAC/wE,UAAU;AAEhE51B,QAAAA,OAAMy4E,OAAO;AACb,aAAKud,0BAA0Bhf,mBAAmB;AAClD,aAAK6e,gBAAgBrD,kBAAmB;AACxC,aAAKqD,gBAAgBv3B,KAAM;AAC3Bk5D,uBAAe,KAAK9wB,kCAClB,KAAKhQ,YAAuC9hF,QAAQ,GACpD4iH,YACF;AAAA,MACF,OAAO;AACL,YAAIoB,iBAAiB;AACnB,eAAKjkC,sBAAsB3d,qBAAqB,IAAI;AACpD,eAAK6e,gBAAgBv3B,KAAM;AAAA,QAC7B;AACA,aAAKyZ,sBAAsBy/C,YAAY;AAAA,MACzC;AAEA,WAAKx3H,MAAMiqF,yBAAyB8jC;AAEpC,aAAOyJ;AAAAA,IACT;AAAA,IAEAz/C,sBACE12E,OACAgjG,qBACA;AACA,WAAKyZ,qBAAqBz8G,MAAK+5B,WAAWipE,mBAAmB;AAAA,IAC/D;AAAA,IAIA0qB,8BAEEzuH,OACAsU,UACA5U,QAC4B;AAC5B,YAAMqB,QAAO,KAAKq1F,YAAwC9hF,QAAQ;AAClEvT,MAAAA,MAAKy+B,MAAMx/B;AACXe,MAAAA,MAAK0+B,QAAQ,KAAK0pF,cAAc,IAAI;AACpC,UAAIzpH,OAAMu4E,qBAAqB;AAC7B,aAAKZ,MAAMxF,OAAOvG,4BAA4Bh3D,QAAQ;AAAA,MACxD;AACA,aAAO,KAAK4hE,WAAWn1E,OAAM,0BAA0B;AAAA,IACzD;AAAA,IAEAwtH,qBAAqBvuH,OAA6B;AAChD,aACEA,MAAKkS,SAAS,gBACdlS,MAAKwN,SAAS,WACd,KAAK9N,MAAM84E,cAAcn4E,UAAUL,MAAK2U,OACxC,CAAC,KAAK8+E,mBAAkB,KAExBzzF,MAAK2U,MAAM3U,MAAKyU,UAAU,KAC1B,KAAKgyE,kBAAkBzmF,MAAKyU,KAAK,MAAM,KAAK/U,MAAMspF;AAAAA,IAEtD;AAAA,IAEA1R,qBACEv2E,OACAu0B,UACG;AACH,UAAIv0B,MAAKs3B,OAAOnmB,SAAS,UAAU;AACjC,YAAInR,MAAK+5B,UAAU5tB,WAAW,KAAKnM,MAAK+5B,UAAU5tB,SAAS,GAAG;AAC5D,eAAKmqE,MAAMxF,OAAO/J,iBAAiB/mE,KAAI;AAAA,QACzC,OAAO;AACL,qBAAWo8G,OAAOp8G,MAAK+5B,WAAW;AAChC,gBAAIqiF,IAAIjrG,SAAS,iBAAiB;AAChC,mBAAKmlE,MAAMxF,OAAO7J,0BAA0Bm1C,GAAG;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO,KAAKjnC,WACVn1E,OACAu0B,WAAW,2BAA2B,gBACxC;AAAA,IACF;AAAA,IAEAmyE,6BAEEvD,OACAy0B,kBACAC,cACAliD,qBACqB;AACrB,YAAMsnC,OAAuB,CAAE;AAC/B,UAAI7d,QAAQ;AACZ,YAAM04B,gCAAgC,KAAKn5H,MAAMyqF;AACjD,WAAKzqF,MAAMyqF,6BAA6B;AAExC,aAAO,CAAC,KAAKmB,IAAI4Y,KAAK,GAAG;AACvB,YAAI/D,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAAM,EAAS;AACpB,cAAI,KAAKgI,MAAM6xF,KAAK,GAAG;AACrB,gBAAI00B,cAAc;AAChB,mBAAKE,4BAA4BF,YAAY;AAAA,YAC/C;AACA,iBAAKplG,KAAM;AACX;AAAA,UACF;AAAA,QACF;AAEAwqF,aAAK71G,KACH,KAAK4wH,kBAAkB,OAAOriD,qBAAqBiiD,gBAAgB,CACrE;AAAA,MACF;AAEA,WAAKj5H,MAAMyqF,6BAA6B0uC;AAExC,aAAO7a;AAAAA,IACT;AAAA,IAEA3X,wBAAiC;AAC/B,aAAO,KAAKh0F,MAAc,EAAA,KAAK,CAAC,KAAKohF,mBAAoB;AAAA,IAC3D;AAAA,IAEA2S,kCAEErlG,OACAoP,MAC2B;AAAA,UAAA6oH;AAC3B,WAAK3wC,kCAAkCl4E,IAAI;AAC3C,WAAK9F,OAAM,EAAS;AACpB,WAAK09F,qBACHhnG,OACAoP,KAAK2qB,WACL,OAAIk+F,cACJ7oH,KAAK+nD,0BAAL8gE,YAAYt2B,gBACd;AAEA,UAAIvyF,KAAK6nD,eAAe;AACtBmvB,yBAAiBpmF,OAAMoP,KAAK6nD,aAAa;AAAA,MAC3C;AAEA,UAAI7nD,KAAKkoB,OAAO4/B,kBAAkB;AAChCkvB,yBAAiBpmF,OAAMoP,KAAKkoB,OAAO4/B,gBAAgB;AAAA,MACrD;AACA,aAAOl3D;AAAAA,IACT;AAAA,IAIA23H,kBAA4C;AAC1C,YAAMpkH,WAAW,KAAK5U,MAAM4U;AAC5B,aAAO,KAAKkzF,gBAAgB,KAAKjL,cAAe,GAAEjoF,UAAU,IAAI;AAAA,IAClE;AAAA,IAcAioF,cAEE7lB,qBACc;AACd,UAAI31E;AACJ,UAAIs7B,cAAmC;AAEvC,YAAM;AAAA,QAAEnqB;AAAAA,MAAM,IAAG,KAAKxS;AACtB,cAAQwS,MAAI;AAAA,QACV,KAAA;AACE,iBAAO,KAAK+mH,WAAY;AAAA,QAE1B,KAAA;AACEl4H,UAAAA,QAAO,KAAKi1E,UAA2D;AACvE,eAAKxiD,KAAM;AAEX,cAAI,KAAKnhB,MAAK,EAAO,GAAG;AACtB,mBAAO,KAAK6mH,wBAAwBn4H,KAA8B;AAAA,UACpE;AAEA,cAAI,KAAKsR,MAAK,EAAU,GAAG;AACzB,gBAAI,KAAK+gE,cAAW,KAAwC;AAC1D,qBAAO,KAAK+lD,gBAAgBp4H,KAAkC;AAAA,YAChE,OAAO;AACL,qBAAO,KAAKm1E,WAAWn1E,OAAM,QAAQ;AAAA,YACvC;AAAA,UACF,OAAO;AACL,iBAAKs2E,MAAMxF,OAAO/D,mBAAmB,KAAKpuE,MAAMk4E,eAAe;AAC/D,mBAAO,KAAK1B,WAAWn1E,OAAM,QAAQ;AAAA,UACvC;AAAA,QAEF,KAAA;AACEA,UAAAA,QAAO,KAAKi1E,UAA6B;AACzC,eAAKxiD,KAAM;AACX,iBAAO,KAAK0iD,WAAWn1E,OAAM,gBAAgB;AAAA,QAE/C,KAAA,IAAa;AACX,iBAAO,KAAKq4H,QAAQ,KAAKpjD,UAAS,GAAI,KAAK;AAAA,QAC7C;AAAA,QAEA,KAAA;AAAA,QACA,KAAA,IAAqB;AACnB,eAAK6Y,WAAY;AACjB,iBAAO,KAAKxb,mBAAmB,KAAK3zE,MAAMkB,KAAK;AAAA,QACjD;AAAA,QAEA,KAAA;AACE,iBAAO,KAAKqzE,oBAAoB,KAAKv0E,MAAMkB,KAAK;AAAA,QAElD,KAAA;AACE,iBAAO,KAAK4yE,mBAAmB,KAAK9zE,MAAMkB,KAAK;AAAA,QAEjD,KAAA;AACE,iBAAO,KAAKozE,mBAAmB,KAAKt0E,MAAMkB,KAAK;AAAA,QAEjD,KAAA;AACE,iBAAO,KAAKszE,iBAAkB;AAAA,QAEhC,KAAA;AACE,iBAAO,KAAKC,oBAAoB,IAAI;AAAA,QACtC,KAAA;AACE,iBAAO,KAAKA,oBAAoB,KAAK;AAAA,QAEvC,KAAA,IAAgB;AACd,gBAAMozB,aAAa,KAAK7nG,MAAMspF,qBAAqB,KAAKtpF,MAAM+U;AAC9D,iBAAO,KAAK6yF,mCAAmCC,UAAU;AAAA,QAC3D;AAAA,QAEA,KAAA;AAAA,QACA,KAAA,GAAsB;AACpB,iBAAO,KAAKtD,eACV,KAAKvkG,MAAMwS,SAAuB,IAA+B,IAAA,GAC9C,OACL,IAChB;AAAA,QACF;AAAA,QACA,KAAA,GAAkB;AAChB,iBAAO,KAAK+xF,eAAc,GAEL,MACL,OACdvtB,mBACF;AAAA,QACF;AAAA,QACA,KAAA;AAAA,QACA,KAAA,GAAoB;AAClB,iBAAO,KAAKmnC,gBACV,KAAKn+G,MAAMwS,SAAqB,IAA2B,IAAA,GAC3C,OACD,IACjB;AAAA,QACF;AAAA,QACA,KAAA,GAAgB;AACd,iBAAO,KAAK2rG,gBAAe,GAET,OACD,OACfnnC,mBACF;AAAA,QACF;AAAA,QACA,KAAA;AACE,iBAAO,KAAK2iD,4BAA6B;AAAA,QAE3C,KAAA;AACEh9F,UAAAA,cAAa,KAAKi9F,gBAAiB;AAAA,QAErC,KAAA;AACE,iBAAO,KAAKtM,WACV,KAAKyE,oBACHp1F,aACA,KAAK25C,WACP,GACA,KACF;AAAA,QAEF,KAAA;AACE,iBAAO,KAAKujD,oBAAqB;AAAA,QAEnC,KAAA;AAAA,QACA,KAAA;AACE,iBAAO,KAAKpQ,cAAc,KAAK;AAAA,QAIjC,KAAA,IAAqB;AACnBpoH,UAAAA,QAAO,KAAKi1E,UAA6B;AACzC,eAAKxiD,KAAM;AACXzyB,UAAAA,MAAKgF,SAAS;AACd,gBAAMsyB,SAAUt3B,MAAKs3B,SAAS,KAAKqgG,gBAAkB;AACrD,cAAIrgG,OAAOnmB,SAAS,oBAAoB;AACtC,mBAAO,KAAKgkE,WAAWn1E,OAAM,gBAAgB;AAAA,UAC/C,OAAO;AACL,kBAAM,KAAKs2E,MAAMxF,OAAOlE,iBAAiBt1C,MAAM;AAAA,UACjD;AAAA,QACF;AAAA,QAEA,KAAA,KAAqB;AAOnB,eAAKg/C,MAAMxF,OAAOlG,qBAAqB,KAAKjsE,MAAM4U,UAAU;AAAA,YAC1DwvD,gBAAgB,KAAKpkE,MAAMkB;AAAAA,UAC7B,CAAC;AACD,iBAAO,KAAKw0E,iBAAkB;AAAA,QAChC;AAAA,QAEA,KAAA,IAAsB;AACpB,iBAAO,KAAKokD,kCAAiC,IAAY,GAAG;AAAA,QAC9D;AAAA,QAEA,KAAA,IAAmB;AACjB,iBAAO,KAAKA,kCAAiC,IAAgB,GAAG;AAAA,QAClE;AAAA,QAEA,KAAA;AAAA,QACA,KAAA,IAAkB;AAChB,iBAAO,KAAKC,oBAAoB,MAAM;AAAA,QACxC;AAAA,QAEA,KAAA;AAAA,QACA,KAAA;AAAA,QACA,KAAA,IAAc;AACZ,gBAAMC,eAAe,KAAKrkD,gBACxB,oBACA,UACF;AAEA,cAAIqkD,cAAc;AAChB,mBAAO,KAAKD,oBAAoBC,YAAY;AAAA,UAC9C;AACA,eAAKpwD,WAAY;AACjB;AAAA,QACF;AAAA,QAEA,KAAA,IAAY;AACV,gBAAM2kB,cAAc,KAAKpmF,MAAMmyD,YAAY,KAAK4xB,gBAAgB;AAChE,cACEz+E,kBAAkB8gF,WAAW,KAC7BA,oBACA;AACA,iBAAKmC,gBAAgB,CAAC,OAAO,QAAQ,YAAY,CAAC;AAAA,UACpD,OAAO;AACL,iBAAK9mB,WAAY;AAAA,UACnB;AACA;AAAA,QACF;AAAA,QAEA;AACE,cAAqCp3D,cAAqB;AACxD,mBAAO,KAAK2hE,oBAAoB,KAAKn0E,MAAMkB,KAAK;AAAA,UAClD;AAEA,cAAIgiF,kBAAkB1wE,IAAI,GAAG;AAC3B,gBACE,KAAK+gF,aAAY,GAAW,KAC5B,KAAK/G,wBAAyB,MAAA,KAC9B;AACA,qBAAO,KAAKytC,sBAAuB;AAAA,YACrC;AACA,kBAAMpyB,aAAa,KAAK7nG,MAAMspF,qBAAqB,KAAKtpF,MAAM+U;AAC9D,kBAAM41E,cAAc,KAAK3qF,MAAM2qF;AAC/B,kBAAMruD,KAAK,KAAKu/D,gBAAiB;AAEjC,gBACE,CAAClR,eACDruD,GAAGxuB,SAAS,WACZ,CAAC,KAAKimF,sBACN;AACA,oBAAM;AAAA,gBAAEvhF,MAAAA;AAAAA,cAAM,IAAG,KAAKxS;AACtB,kBAAIwS,cAAuB;AACzB,qBAAKm2E,kCAAkCrsD,EAAE;AACzC,qBAAKxI,KAAM;AACX,uBAAO,KAAKomG,6BACV,KAAKxhD,gBAAgBp8C,EAAE,CACzB;AAAA,cACF,WAAW4mD,kBAAkB1wE,KAAI,GAAG;AAIlC,oBAAI,KAAK65E,kBAAmB,UAAyB;AAInD,yBAAO,KAAK8tC,6BACV,KAAKzhD,gBAAgBp8C,EAAE,CACzB;AAAA,gBACF,OAAO;AAGL,yBAAOA;AAAAA,gBACT;AAAA,cACF,WAAW9pB,UAAI,IAAa;AAC1B,qBAAKm2E,kCAAkCrsD,EAAE;AACzC,uBAAO,KAAKo9F,QAAQ,KAAKhhD,gBAAgBp8C,EAAE,GAAG,IAAI;AAAA,cACpD;AAAA,YACF;AAEA,gBACEurE,cACA,KAAKl1F,MAAc,EAAA,KACnB,CAAC,KAAKohF,sBACN;AACA,mBAAKjgE,KAAM;AACX,qBAAO,KAAKu0E,qBACV,KAAK3vB,gBAAgBp8C,EAAE,GACvB,CAACA,EAAE,GACH,KACF;AAAA,YACF;AAEA,mBAAOA;AAAAA,UACT,OAAO;AACL,iBAAKstC,WAAY;AAAA,UACnB;AAAA,MACJ;AAAA,IACF;AAAA,IAYAkwD,kCACEM,gBACAC,iBACc;AACd,YAAML,eAAe,KAAKrkD,gBAAgB,oBAAoB,UAAU;AAExE,UAAIqkD,cAAc;AAKhB,aAAKh6H,MAAMwS,OAAO4nH;AAClB,aAAKp6H,MAAMkB,QAAQm5H;AAGnB,aAAKr6H,MAAMsN;AACX,aAAKtN,MAAMiV;AAGX,aAAKjV,MAAMgV,SAASqvD,+BAA+B,KAAKrkE,MAAMgV,QAAQ,EAAE;AAExE,eAAO,KAAK+kH,oBAAoBC,YAAY;AAAA,MAC9C,OAAO;AACL,aAAKpwD,WAAY;AAAA,MACnB;AAAA,IACF;AAAA,IAQAmwD,oBAAoBC,cAAoC;AACtD,YAAM34H,QAAO,KAAKi1E,UAA6B;AAC/C,YAAM1hE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAMo6G,YAAY,KAAKhvH,MAAMwS;AAG7B,WAAKshB,KAAM;AAKX,aAAO,KAAKwmG,qBAAqBj5H,OAAMuT,UAAUolH,cAAchL,SAAS;AAAA,IAC1E;AAAA,IAeAsL,qBAGEj5H,OACAuT,UACAolH,cACAhL,WACG;AACH,UACE,KAAKuL,gCAAgCP,cAAcplH,UAAUo6G,SAAS,GACtE;AAIA,YAAoCgL,iBAAiB,QAAQ;AAC3D,cAAI,CAAC,KAAKQ,2CAA2C;AACnD,iBAAK7iD,MAAMxF,OAAOjC,kBAAkBt7D,QAAQ;AAAA,UAC9C;AAIA,eAAK6lH,uBAAwB;AAE7B,iBAAO,KAAKjkD,WAAWn1E,OAAM,gBAAgB;AAAA,QAC/C,OAAO;AAGL,cAAI,CAAC,KAAKm5H,2CAA2C;AACnD,iBAAK7iD,MAAMxF,OAAOzB,wBAAwB97D,QAAQ;AAAA,UACpD;AACA,eAAK6lH,uBAAwB;AAC7B,iBAAO,KAAKjkD,WAAWn1E,OAAM,+BAA+B;AAAA,QAC9D;AAAA,MACF,OAAO;AAEL,cAAM,KAAKs2E,MAAMxF,OAAOhC,4BAA4Bv7D,UAAU;AAAA,UAC5DxM,OAAO67E,eAAe+qC,SAAS;AAAA,QACjC,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAWAuL,gCACEP,cACAplH,UACAo6G,WACS;AACT,cAAQgL,cAAY;AAAA,QAClB,KAAK,QAAQ;AACX,iBAAO,KAAK/yC,UAAU,CACpB,oBACA;AAAA,YAEEqH,YAAYrK,eAAe+qC,SAAS;AAAA,UACrC,CAAA,CACF;AAAA,QACH;AAAA,QACA,KAAK;AACH,iBAAOA,cAAqB;AAAA,QAC9B;AACE,gBAAM,KAAKr3C,MAAMxF,OAAOlC,4BAA4Br7D,QAAQ;AAAA,MAChE;AAAA,IACF;AAAA,IAGAulH,6BAEE94H,OAC2B;AAG3B,WAAKs0F,UAAU96B,MAAMu4B,cAAc,MAAM,KAAKuC,UAAU1C,QAAQ,CAAC;AACjE,YAAMj3D,SAAS,CAAC,KAAK6/D,iBAAiB;AACtC,WAAKlG,UAAUr3B,KAAM;AACrB,UAAI,KAAK01B,yBAAyB;AAChC,aAAKrc,MAAMxF,OAAO9H,2BAA2B,KAAKrqE,MAAM6qF,aAAa;AAAA,MACvE;AACA,WAAKlgF,OAAM,EAAS;AAEpB,aAAO,KAAK09F,qBAAqBhnG,OAAM26B,QAAQ,IAAI;AAAA,IACrD;AAAA,IAIA09F,QAEEr4H,OACAyzE,SACgB;AAChB,WAAK6Y,aAAa,eAAe;AACjC,UAAI7Y,SAAS;AACX,aAAK6Y,aAAa,oBAAoB;AAAA,MACxC;AACAtsF,MAAAA,MAAK66B,QAAQ44C;AACb,WAAKhhD,KAAM;AACX,YAAMshE,YAAY,KAAKp1F,MAAM4pF;AAC7B,WAAK5pF,MAAM4pF,SAAS,CAAE;AACtB,UAAI9U,SAAS;AAGX,aAAK6gB,UAAU96B,OAA2B;AAC1Cx5D,QAAAA,MAAK65B,OAAO,KAAKi5F,WAAY;AAC7B,aAAKx+B,UAAUr3B,KAAM;AAAA,MACvB,OAAO;AACLj9D,QAAAA,MAAK65B,OAAO,KAAKi5F,WAAY;AAAA,MAC/B;AAEA,WAAKn0H,MAAM4pF,SAASwL;AACpB,aAAO,KAAK5e,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAGAk4H,aAAsB;AACpB,YAAMl4H,QAAO,KAAKi1E,UAAoB;AACtC,WAAKxiD,KAAM;AACX,UACE,KAAKnhB,MAAK,EAAU,KACpB,CAAC,KAAKwtD,MAAMgW,oBACZ,EAAE,KAAKzC,cAAW,KAClB;AACA,aAAKiE,MAAMxF,OAAOvF,iBAAiBvrE,KAAI;AAAA,MACzC,WACE,CAAC,KAAK8+D,MAAMklB,cACZ,EAAE,KAAK3R,cAAW,KAClB;AACA,aAAKiE,MAAMxF,OAAOtE,iBAAiBxsE,KAAI;AAAA,MACzC;AAEA,UACE,CAAC,KAAKsR,QAAe,KACrB,CAAC,KAAKA,MAAiB,CAAA,KACvB,CAAC,KAAKA,MAAK,EAAO,GAClB;AACA,aAAKglE,MAAMxF,OAAOzD,kBAAkBrtE,KAAI;AAAA,MAC1C;AAEA,aAAO,KAAKm1E,WAAWn1E,OAAM,OAAO;AAAA,IACtC;AAAA,IAEAq0E,mBAAkC;AAChC,YAAMr0E,QAAO,KAAKi1E,UAA0B;AAC5C,YAAMh6C,KAAK,KAAKo6D,YAGdryB,+BAA+B,KAAKrkE,MAAM4U,UAAU,CAAC,CACvD;AACA,YAAM9G,OAAO,KAAK9N,MAAMkB;AACxB,WAAK4yB,KAAM;AACXzyB,MAAAA,MAAKi7B,KAAK,KAAK0kE,iBAAiB1kE,IAAIxuB,IAAI;AACxC,aAAO,KAAK0oE,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAEAs4H,8BAEyC;AACvC,YAAMt4H,QAAO,KAAKi1E,UAAkD;AAOpE,WAAKxiD,KAAM;AAEX,UAAI,KAAK6hE,UAAU1C,YAAY,KAAKtgF,MAAY,EAAA,GAAG;AACjD,cAAMqqB,OAAO,KAAKgkE,iBAChB,KAAKtoB,gBAA8Br3E,KAAI,GACvC,UACF;AACA,aAAKyyB,KAAM;AAEX,YAAI,KAAKnhB,MAAK,GAAS,GAAG;AACxB,eAAKg7E,aAAa,cAAc;AAAA,QACjC,WAAU,CAAC,KAAK1G,UAAU,cAAc,GAAG;AAE1C,eAAKrd,WAAY;AAAA,QACnB;AACA,eAAO,KAAK8wD,kBACVr5H,OACA27B,MACA,MACF;AAAA,MACF;AACA,aAAO,KAAK29F,cAAct5H,KAAoC;AAAA,IAChE;AAAA,IAEAq5H,kBACEr5H,OACA27B,MACA6iF,cACgB;AAChBx+G,MAAAA,MAAK27B,OAAOA;AAEZ,YAAM2tD,cAAc,KAAK3qF,MAAM2qF;AAE/BtpF,MAAAA,MAAK+uB,WAAW,KAAKyrE,gBAAgB,IAAI;AAEzC,UAAIx6F,MAAK+uB,SAAStiB,SAAS+xG,gBAAgBl1B,aAAa;AACtD,aAAKhT,MAAMxF,OAAO9D,yBAAyBhtE,MAAK+uB,UAAU;AAAA,UACxDk+C,QAAQtxC,KAAKlvB;AAAAA,UACbygE,uBAAuBsxC;AAAAA,QACzB,CAAC;AAAA,MACH;AAEA,aAAO,KAAKrpC,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAGAm4H,wBAEEn4H,OACqC;AACrC,YAAMi7B,KAAK,KAAK0kE,iBACd,KAAKtoB,gBAA8Br3E,KAAI,GACvC,QACF;AACA,WAAKyyB,KAAM;AAEX,UAAI,KAAKy/D,aAAY,GAAS,GAAG;AAC/B,YAAI,CAAC,KAAK3kF,UAAU;AAClB,eAAK+oE,MAAMxF,OAAO1N,yBAAyBnoC,EAAE;AAAA,QAC/C;AACA,aAAKqqD,oBAAoB;AAAA,MAC3B,WAAW,KAAK4M,aAAY,GAAW,KAAK,KAAKA,aAAY,EAAU,GAAG;AACxE,cAAMqnC,WAAW,KAAKrnC,gBAAuB;AAE7C,aAAK5F,aACHitC,WAAW,uBAAuB,0BACpC;AACA,YAAI,EAAE,KAAKlnD,cAAW,MAAyC;AAC7D,gBAAM,KAAKiE,MACTxF,OAAOhL,6CACP,KAAKnnE,MAAM4U,UACX;AAAA,YACE0qB,OAAO,KAAKt/B,MAAMkB;AAAAA,UACpB,CACF;AAAA,QACF;AACA,aAAK4yB,KAAM;AACVzyB,QAAAA,MAAoCi+B,QAAQs7F,WACzC,WACA;AACJ,eAAO,KAAKnB,gBAAgBp4H,KAAkC;AAAA,MAChE;AAEA,aAAO,KAAKq5H,kBAAkBr5H,OAAgCi7B,IAAI,MAAM;AAAA,IAC1E;AAAA,IAEAykE,mBACE7/F,QACAsR,MACAnR,OACG;AACH,WAAKiyF,SAASjyF,OAAM,YAAYH,MAAK;AACrC,WAAKoyF,SACHjyF,OACA,OACA,KAAK8G,MAAMsK,MAAM,KAAKs0E,kBAAkB1lF,MAAK0T,KAAK,GAAG,KAAK/U,MAAMiV,GAAG,CACrE;AACA5T,MAAAA,MAAKH,QAAQA;AACb,WAAK4yB,KAAM;AACX,aAAO,KAAK0iD,WAAcn1E,OAAMmR,IAAI;AAAA,IACtC;AAAA,IAEA6hE,aAA+BnzE,QAAYsR,MAAoB;AAC7D,YAAMnR,QAAO,KAAKi1E,UAAW;AAC7B,aAAO,KAAKyqB,mBAAmB7/F,QAAOsR,MAAMnR,KAAI;AAAA,IAClD;AAAA,IAEAizE,mBAAmBpzE,QAAY;AAC7B,aAAO,KAAKmzE,aAA8BnzE,QAAO,eAAe;AAAA,IAClE;AAAA,IAEAqzE,oBAAoBrzE,QAAY;AAC9B,aAAO,KAAKmzE,aAA+BnzE,QAAO,gBAAgB;AAAA,IACpE;AAAA,IAEA4yE,mBAAmB5yE,QAAY;AAC7B,aAAO,KAAKmzE,aAA8BnzE,QAAO,eAAe;AAAA,IAClE;AAAA,IAGAizE,oBAAoBjzE,QAAY;AAC9B,aAAO,KAAKmzE,aAA+BnzE,QAAO,gBAAgB;AAAA,IACpE;AAAA,IAEAyyE,mBAAmBzyE,QAIhB;AACD,YAAMG,QAAO,KAAKi1E,UAA4B;AAC9C,WAAKgd,SACHjyF,OACA,OACA,KAAK8G,MAAMsK,MAAM,KAAKs0E,kBAAkB1lF,MAAK0T,KAAK,GAAG,KAAK/U,MAAMiV,GAAG,CACrE;AACA5T,MAAAA,MAAKs5B,UAAUz5B,OAAMy5B;AACrBt5B,MAAAA,MAAK47B,QAAQ/7B,OAAM+7B;AACnB,WAAKnJ,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEAozE,oBAAoBvzE,QAAgB;AAClC,YAAMG,QAAO,KAAKi1E,UAA6B;AAC/Cj1E,MAAAA,MAAKH,QAAQA;AACb,WAAK4yB,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEAmzE,mBAAmB;AACjB,YAAMnzE,QAAO,KAAKi1E,UAA0B;AAC5C,WAAKxiD,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAGAumG,mCAEEC,YACc;AACd,YAAMjzF,WAAW,KAAK5U,MAAM4U;AAE5B,UAAI8f;AACJ,WAAKZ,KAAM;AACX,WAAK+hE,gBAAgBh7B,MAAM63B,mBAAmB;AAE9C,YAAMq7B,4BAA4B,KAAK/tH,MAAMiqF;AAC7C,YAAMkvC,gCAAgC,KAAKn5H,MAAMyqF;AACjD,WAAKzqF,MAAMiqF,yBAAyB;AACpC,WAAKjqF,MAAMyqF,6BAA6B;AAExC,YAAMowC,gBAAgB,KAAK76H,MAAM4U;AACjC,YAAMuvF,WAA6C,CAAE;AACrD,YAAMntB,sBAAsB,IAAIif,iBAAkB;AAClD,UAAIwK,QAAQ;AACZ,UAAIq6B;AACJ,UAAIC;AAEJ,aAAO,CAAC,KAAKpoH,MAAK,EAAU,GAAG;AAC7B,YAAI8tF,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAEHqsE,IAAAA,oBAAoBge,0BAA0B,OAC1C,OACAhe,oBAAoBge,qBAC1B;AACA,cAAI,KAAKriF,MAAK,EAAU,GAAG;AACzBooH,oCAAwB,KAAK/6H,MAAM4U;AACnC;AAAA,UACF;AAAA,QACF;AAEA,YAAI,KAAKjC,MAAK,EAAY,GAAG;AAC3B,gBAAMqoH,qBAAqB,KAAKh7H,MAAM4U;AACtCkmH,2BAAiB,KAAK96H,MAAM4U;AAC5BuvF,mBAAS17F,KACP,KAAKy6F,eAAe,KAAK8a,iBAAgB,GAAIgd,kBAAkB,CACjE;AAEA,cAAI,CAAC,KAAKzc,oBAAmB,EAA2B,GAAG;AACzD;AAAA,UACF;AAAA,QACF,OAAO;AACLpa,mBAAS17F,KACP,KAAKg6F,wBACHzrB,qBACA,KAAKksB,cACP,CACF;AAAA,QACF;AAAA,MACF;AAEA,YAAM+3B,cAAc,KAAKj7H,MAAM84E;AAC/B,WAAKnuE,OAAM,EAAU;AAErB,WAAK3K,MAAMiqF,yBAAyB8jC;AACpC,WAAK/tH,MAAMyqF,6BAA6B0uC;AAExC,UAAI+B,YAAY,KAAKxkC,YAAuC9hF,QAAQ;AACpE,UACEizF,cACA,KAAKN,iBAAiBpD,QAAQ,MAC7B+2B,YAAY,KAAK5zB,WAAW4zB,SAAS,IACtC;AACA,aAAKllC,0BAA0Bhf,mBAAmB;AAClD,aAAK6e,gBAAgBrD,kBAAmB;AACxC,aAAKqD,gBAAgBv3B,KAAM;AAC3B,aAAK+pC,qBAAqB6yB,WAAW/2B,UAAU,KAAK;AAEpD,eAAO+2B;AAAAA,MACT;AACA,WAAKrlC,gBAAgBv3B,KAAM;AAE3B,UAAI,CAAC6lC,SAAS32F,QAAQ;AACpB,aAAKo8D,WAAW,KAAK5pE,MAAMk4E,eAAe;AAAA,MAC5C;AACA,UAAI6iD,sBAAuB,MAAKnxD,WAAWmxD,qBAAqB;AAChE,UAAID,eAAgB,MAAKlxD,WAAWkxD,cAAc;AAClD,WAAKnmC,sBAAsB3d,qBAAqB,IAAI;AAEpD,WAAK8mC,qBAAqB3Z,UAAoC,IAAI;AAClE,UAAIA,SAAS32F,SAAS,GAAG;AACvBknB,cAAM,KAAKgiE,YAAkCmkC,aAAa;AAC1DnmG,YAAIgJ,cAAcymE;AAElB,aAAK3tB,WAAW9hD,KAAK,oBAAoB;AACzC,aAAKmkD,iBAAiBnkD,KAAKumG,WAAW;AAAA,MACxC,OAAO;AACLvmG,cAAMyvE,SAAS,CAAC;AAAA,MAClB;AAEA,aAAO,KAAKg3B,gBACVvmH,UAEA8f,GACF;AAAA,IACF;AAAA,IAEAymG,gBAAgBvmH,UAAoBmmB,YAAwC;AAC1E,UAAI,EAAE,KAAK24C,cAAW,MAAgD;AACpE,aAAK4f,SAASv4D,YAAY,iBAAiB,IAAI;AAC/C,aAAKu4D,SAASv4D,YAAY,cAAcnmB,SAASjU,KAAK;AAEtD,aAAKkoF,wBACH9tD,YACAnmB,SAASjU,OACT,KAAKX,MAAM84E,cAAcn4E,KAC3B;AAEA,eAAOo6B;AAAAA,MACT;AAEA,YAAMqgG,kBACJ,KAAK1kC,YAAuC9hF,QAAQ;AACtDwmH,sBAAgBrgG,aAAaA;AAC7B,aAAO,KAAKy7C,WAAW4kD,iBAAiB,yBAAyB;AAAA,IACnE;AAAA,IAGA7zB,iBAAiBvrE,QAAgC;AAC/C,aAAO,CAAC,KAAK+3D,mBAAoB;AAAA,IACnC;AAAA,IAEAuT,WACEjmG,OAC+C;AAC/C,UAAI,KAAKuqF,IAAG,EAAS,GAAG;AACtB,eAAOvqF;AAAAA,MACT;AAAA,IACF;AAAA,IAEA6hG,eACE7hG,OAEAuT,UACmD;AACnD,aAAOvT;AAAAA,IACT;AAAA,IAEAw4H,sBAAoE;AAClE,YAAMx4H,QAAO,KAAKi1E,UAA6C;AAC/D,WAAKxiD,KAAM;AACX,UAAI,KAAKnhB,MAAK,EAAO,GAAG;AAEtB,cAAMqqB,OAAO,KAAKgkE,iBAChB,KAAKtoB,gBAA8Br3E,KAAI,GACvC,KACF;AACA,aAAKyyB,KAAM;AACX,cAAMunG,WAAW,KAAKX,kBACpBr5H,OACA27B,MACA,QACF;AAEA,YACE,CAAC,KAAKmjC,MAAMwlB,sBACZ,CAAC,KAAKxlB,MAAMolB,WACZ,EAAE,KAAK7R,cAAW,IAClB;AACA,eAAKiE,MAAMxF,OAAO1E,qBAAqB4tD,QAAQ;AAAA,QACjD;AAEA,eAAOA;AAAAA,MACT;AAEA,aAAO,KAAKC,SAASj6H,KAA+B;AAAA,IACtD;AAAA,IAQAi6H,SAAuBj6H,OAAgD;AACrE,WAAK8mG,eAAe9mG,KAAI;AAExB,UAAI,KAAKuqF,IAAG,EAAU,GAAG;AACvB,cAAM/yD,OAAO,KAAK0iG,gBAAuB;AACzC,aAAKn3B,iBAAiBvrE,IAAI;AAE1Bx3B,QAAAA,MAAK+5B,YAAYvC;AAAAA,MACnB,OAAO;AACLx3B,QAAAA,MAAK+5B,YAAY,CAAE;AAAA,MACrB;AAEA,aAAO,KAAKo7C,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEA8mG,eAA6B9mG,OAAqC;AAChE,YAAMmgB,WAAW,KAAK7O,QAAgB;AACtC,YAAMgmB,SAAS,KAAKqgG,gBAAiB;AACrC33H,MAAAA,MAAKs3B,SAASA;AACd,UACEnX,aACCmX,OAAOnmB,SAAS,YAAYmmB,OAAOnmB,SAAS,qBAC7C;AACA,aAAKmlE,MAAMxF,OAAO9J,4BAA4B1vC,MAAM;AAAA,MACtD;AAAA,IACF;AAAA,IAIA6iG,qBAAqBC,UAAsC;AACzD,YAAM;AAAA,QAAE1mH;AAAAA,QAAOH;AAAAA,QAAUK;AAAAA,QAAK/T,OAAAA;AAAAA,MAAO,IAAG,KAAKlB;AAC7C,YAAM07H,YAAY3mH,QAAQ;AAC1B,YAAM4mH,OAAO,KAAKjlC,YAChBryB,+BAA+BzvD,UAAU,CAAC,CAC5C;AACA,UAAI1T,WAAU,MAAM;AAClB,YAAI,CAACu6H,UAAU;AACb,eAAK9jD,MACHxF,OAAOlJ,+BAEP5E,+BACE,KAAKrkE,MAAM8pF,+BACX,CACF,CACF;AAAA,QACF;AAAA,MACF;AAEA,YAAM8xC,SAAS,KAAKjpH,QAAqB;AACzC,YAAMkpH,YAAYD,SAAS,KAAK;AAChC,YAAME,UAAU7mH,MAAM4mH;AACtBF,WAAKz6H,QAAQ;AAAA,QACX8+B,KAAK,KAAK73B,MAAMsK,MAAMipH,WAAWI,OAAO,EAAE9kH,QAAQ,UAAU,IAAI;AAAA,QAChEipB,QAAQ/+B,WAAU,OAAO,OAAOA,OAAMuR,MAAM,GAAGopH,SAAS;AAAA,MACzD;AACDF,WAAKv7F,OAAOw7F;AACZ,WAAK9nG,KAAM;AACX,YAAM0jG,eAAe,KAAKhhD,WAAWmlD,MAAM,iBAAiB;AAC5D,WAAK9iD,iBACH2+C,cACAnzD,+BAA+B,KAAKrkE,MAAM84E,eAAe+iD,SAAS,CACpE;AACA,aAAOrE;AAAAA,IACT;AAAA,IAGA/N,cAA4BgS,UAAsC;AAChE,YAAMp6H,QAAO,KAAKi1E,UAA8B;AAChD,UAAIylD,SAAS,KAAKP,qBAAqBC,QAAQ;AAC/C,YAAMp7F,SAAS,CAAC07F,MAAM;AACtB,YAAMC,gBAAgB,CAAE;AACxB,aAAO,CAACD,OAAO37F,MAAM;AACnB47F,sBAAcvzH,KAAK,KAAKihH,2BAA2B;AACnD,aAAKx5B,yBAA0B;AAC/B7vD,eAAO53B,KAAMszH,SAAS,KAAKP,qBAAqBC,QAAQ,CAAE;AAAA,MAC5D;AAGAp6H,MAAAA,MAAKq8B,cAAcs+F;AACnB36H,MAAAA,MAAKg/B,SAASA;AACd,aAAO,KAAKm2C,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAGAqoH,4BAAiE;AAC/D,aAAO,KAAKluB,gBAAiB;AAAA,IAC/B;AAAA,IAsBA2iB,gBAEE3Z,OACAn2E,WACAioG,UACAt/C,qBACG;AACH,UAAIs/C,UAAU;AACZ,aAAK3oC,aAAa,gBAAgB;AAAA,MACpC;AACA,YAAMwrC,gCAAgC,KAAKn5H,MAAMyqF;AACjD,WAAKzqF,MAAMyqF,6BAA6B;AACxC,UAAI8rC,WAAW;AACf,UAAI91B,QAAQ;AACZ,YAAMp/F,QAAO,KAAKi1E,UAEf;AAEHj1E,MAAAA,MAAKg8B,aAAa,CAAE;AACpB,WAAKvJ,KAAM;AAEX,aAAO,CAAC,KAAKnhB,MAAM6xF,KAAK,GAAG;AACzB,YAAI/D,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAAM,EAAS;AACpB,cAAI,KAAKgI,MAAM6xF,KAAK,GAAG;AACrB,iBAAK40B,4BAA4B/3H,KAAI;AACrC;AAAA,UACF;AAAA,QACF;AAEA,YAAIy1E;AACJ,YAAIzoD,WAAW;AACbyoD,iBAAO,KAAK6nC,qBAAsB;AAAA,QACpC,OAAO;AACL7nC,iBAAO,KAAKmlD,wBAAwBjlD,mBAAmB;AACvDu/C,qBAAW,KAAKF,WACdv/C,MACAw/C,UACAC,UACAv/C,mBACF;AAAA,QACF;AAEA,YACEs/C,YACA,CAAC,KAAKx3G,iBAAiBg4D,IAAI,KAC3BA,KAAKtkE,SAAS,iBACd;AACA,eAAKmlE,MAAMxF,OAAOnI,uBAAuB8M,IAAI;AAAA,QAC/C;AAEmC;AAEjC,cAAIA,KAAKv5C,WAAW;AAClB,iBAAK+1D,SAASxc,MAAM,aAAa,IAAI;AAAA,UACvC;AAAA,QACF;AAGAz1E,QAAAA,MAAKg8B,WAAW50B,KAAKquE,IAAI;AAAA,MAC3B;AAEA,WAAKhjD,KAAM;AAEX,WAAK9zB,MAAMyqF,6BAA6B0uC;AACxC,UAAI3mH,OAAO;AACX,UAAI6b,WAAW;AACb7b,eAAO;AAAA,MACR,WAAU8jH,UAAU;AACnB9jH,eAAO;AAAA,MACT;AAEA,aAAO,KAAKgkE,WAAWn1E,OAAMmR,IAAI;AAAA,IACnC;AAAA,IAEA4mH,4BAA4B/3H,OAA4B;AACtD,WAAKiyF,SAASjyF,OAAM,iBAAiB,KAAKrB,MAAMk4E,gBAAgBv3E,KAAK;AACrE,WAAK2yF,SAASjyF,OAAM,oBAAoB,KAAKrB,MAAMk4E,iBAAiB,KAAK;AAAA,IAC3E;AAAA,IAKAgkD,yBACEplD,MAC6C;AAC7C,aACE,CAACA,KAAKh6C,YACNg6C,KAAKh2E,IAAI0R,SAAS,iBACjB,KAAK0iF,sBAAqB,KACzB,KAAKviF,MAAK,CAAY,KACtB,KAAKA,MAAK,EAAQ;AAAA,IAExB;AAAA,IAGAspH,wBAEEjlD,qBACkC;AAClC,UAAIr6C,cAAa,CAAE;AACnB,UAAI,KAAKhqB,MAAK,EAAM,GAAG;AACrB,YAAI,KAAKs0E,UAAU,YAAY,GAAG;AAChC,eAAKtP,MAAMxF,OAAO1D,8BAA8B,KAAKzuE,MAAM4U,QAAQ;AAAA,QACrE;AAIA,eAAO,KAAKjC,MAAK,EAAM,GAAG;AACxBgqB,UAAAA,YAAWl0B,KAAK,KAAK+1G,gBAAgB;AAAA,QACvC;AAAA,MACF;AAEA,YAAM1nC,OAAO,KAAKR,UAA6B;AAC/C,UAAIxB,UAAU;AACd,UAAIpmD,aAAa;AACjB,UAAI9Z;AAEJ,UAAI,KAAKjC,MAAK,EAAY,GAAG;AAC3B,YAAIgqB,YAAWnvB,OAAQ,MAAKo8D,WAAY;AACxC,eAAO,KAAKm0C,YAAa;AAAA,MAC3B;AAEA,UAAIphF,YAAWnvB,QAAQ;AACrBspE,aAAKn6C,aAAaA;AAClBA,QAAAA,cAAa,CAAE;AAAA,MACjB;AAEAm6C,WAAK11C,SAAS;AAEd,UAAI41C,qBAAqB;AACvBpiE,mBAAW,KAAK5U,MAAM4U;AAAAA,MACxB;AAEA,UAAIqhE,cAAc,KAAK2V,MAAW;AAClC,WAAKyZ,gCAAgCvuB,IAAI;AACzC,YAAM6T,cAAc,KAAK3qF,MAAM2qF;AAC/B,WAAKi0B,kBAAkB9nC,MAAME,mBAAmB;AAEhD,UAAI,CAACf,eAAe,CAAC0U,eAAe,KAAKuxC,yBAAyBplD,IAAI,GAAG;AACvE,cAAM;AAAA,UAAEh2E,KAAAA;AAAAA,QAAK,IAAGg2E;AAChB,cAAMqlD,UAAUr7H,KAAIgN;AAGpB,YAAIquH,YAAY,WAAW,CAAC,KAAKnoC,sBAAqB,GAAI;AACxDlf,oBAAU;AACV,eAAK6T,kCAAkC7nF,IAAG;AAC1Cm1E,wBAAc,KAAK2V,MAAW;AAC9B,eAAKgzB,kBAAkB9nC,IAAI;AAAA,QAC7B;AAGA,YAAIqlD,YAAY,SAASA,YAAY,OAAO;AAC1CztG,uBAAa;AACb,eAAKi6D,kCAAkC7nF,IAAG;AAC1Cg2E,eAAKx5C,OAAO6+F;AACZ,cAAI,KAAKxpH,MAAK,EAAQ,GAAG;AACvBsjE,0BAAc;AACd,iBAAK0B,MAAMxF,OAAOlN,qBAAqB,KAAKjlE,MAAM6qF,eAAe;AAAA,cAC/DvtD,MAAM6+F;AAAAA,YACR,CAAC;AACD,iBAAKroG,KAAM;AAAA,UACb;AACA,eAAK8qF,kBAAkB9nC,IAAI;AAAA,QAC7B;AAAA,MACF;AAEA,aAAO,KAAKwuB,kBACVxuB,MACAliE,UACAqhE,aACAnB,SACA,OACApmD,YACAsoD,mBACF;AAAA,IACF;AAAA,IAEAu6C,kCACEnwF,QACQ;AACR,aAAOA,OAAO9D,SAAS,QAAQ,IAAI;AAAA,IACrC;AAAA,IAGA03C,6BAA6B5zC,QAAwC;AACnE,aAAOA,OAAOpF;AAAAA,IAChB;AAAA,IAIAopE,wBAAwBhkE,QAA8C;AAAA,UAAAg7F;AACpE,YAAMj8B,aAAa,KAAKoxB,kCAAkCnwF,MAAM;AAChE,YAAMpF,SAAS,KAAKg5C,6BAA6B5zC,MAAM;AAEvD,UAAIpF,OAAOxuB,WAAW2yF,YAAY;AAChC,aAAKxoB,MACHv2C,OAAO9D,SAAS,QAAQ60C,OAAOzM,iBAAiByM,OAAOxM,gBACvDvkC,MACF;AAAA,MACF;AAEA,UACEA,OAAO9D,SAAS,WAChB8+F,UAAApgG,OAAOA,OAAOxuB,SAAS,CAAC,MAAC,OAAA,SAAzB4uH,QAA2B5pH,UAAS,eACpC;AACA,aAAKmlE,MAAMxF,OAAOvM,wBAAwBxkC,MAAM;AAAA,MAClD;AAAA,IACF;AAAA,IAGAy1C,kBAEEC,MACAb,aACAnB,SACAzmD,WACAK,YACmC;AACnC,UAAIA,YAAY;AAEd,cAAM2tG,eAAe,KAAKrmD,YACxBc,MAGAb,aACc,OACM,OACpB,OACA,cACF;AACA,aAAKmvB,wBAAwBi3B,YAAY;AACzC,eAAOA;AAAAA,MACT;AAEA,UAAIvnD,WAAWmB,eAAe,KAAKtjE,MAAe,EAAA,GAAG;AACnD,YAAI0b,UAAW,MAAKu7C,WAAY;AAChCkN,aAAKx5C,OAAO;AACZw5C,aAAK11C,SAAS;AACd,eAAO,KAAK40C,YACVc,MACAb,aACAnB,SACoB,OACpB,OACA,cACF;AAAA,MACF;AAAA,IACF;AAAA,IAIAiC,oBAEED,MACAliE,UACAyZ,WACA2oD,qBACqC;AACrCF,WAAKv5C,YAAY;AAEjB,UAAI,KAAKquD,IAAG,EAAS,GAAG;AACtB9U,aAAK51E,QAAQmtB,YACT,KAAKm3E,kBAAkB,KAAKxlG,MAAM4U,QAAQ,IAC1C,KAAK6tF,wBAAwBzrB,mBAAmB;AAEpD,eAAO,KAAKR,WAAWM,MAAM,gBAAgB;AAAA,MAC/C;AAEA,UAAI,CAACA,KAAKh6C,YAAYg6C,KAAKh2E,IAAI0R,SAAS,cAAc;AAKpD,aAAK8zF,kBAAkBxvB,KAAKh2E,IAAIgN,MAAMgpE,KAAKh2E,IAAI6T,IAAII,OAAO,MAAM,KAAK;AAErE,YAAIsZ,WAAW;AACbyoD,eAAK51E,QAAQ,KAAKskG,kBAChB5wF,UACA0hF,gBAAgBxf,KAAKh2E,GAAG,CAC1B;AAAA,QACD,WAAU,KAAK6R,MAAK,EAAM,GAAG;AAC5B,gBAAMkiF,qBAAqB,KAAK70F,MAAM4U;AACtC,cAAIoiE,uBAAuB,MAAM;AAC/B,gBAAIA,oBAAoB6d,uBAAuB,MAAM;AACnD7d,kCAAoB6d,qBAAqBA;AAAAA,YAC3C;AAAA,UACF,OAAO;AACL,iBAAKld,MAAMxF,OAAOtJ,6BAA6BgsB,kBAAkB;AAAA,UACnE;AACA/d,eAAK51E,QAAQ,KAAKskG,kBAChB5wF,UACA0hF,gBAAgBxf,KAAKh2E,GAAG,CAC1B;AAAA,QACF,OAAO;AACLg2E,eAAK51E,QAAQo1F,gBAAgBxf,KAAKh2E,GAAG;AAAA,QACvC;AACAg2E,aAAKv5C,YAAY;AAEjB,eAAO,KAAKi5C,WAAWM,MAAM,gBAAgB;AAAA,MAC/C;AAAA,IACF;AAAA,IAEAwuB,kBAEExuB,MACAliE,UACAqhE,aACAnB,SACAzmD,WACAK,YACAsoD,qBACG;AACH,YAAM31E,QAAQ,KAAKw1E,kBACjBC,MACAb,aACAnB,SACAzmD,WACAK,UACF,KACE,KAAKqoD,oBACHD,MACAliE,UACAyZ,WACA2oD,mBACF;AAEF,UAAI,CAAC31E,MAAM,MAAKuoE,WAAY;AAE5B,aAAOvoE;AAAAA,IACT;AAAA,IAKAu9G,kBAEE9nC,MAGAE,qBACM;AACN,UAAI,KAAK4U,IAAG,CAAY,GAAG;AACxB9U,aAAuCh6C,WAAW;AACnDg6C,aAAKh2E,MAAM,KAAK2hG,wBAAyB;AACzC,aAAK93F,OAAM,CAAY;AAAA,MACzB,OAAO;AAEL,cAAM;AAAA,UAAE6H;AAAAA,UAAMtR,OAAAA;AAAAA,QAAO,IAAG,KAAKlB;AAC7B,YAAIc;AAEJ,YAAIsiF,2BAA2B5wE,IAAI,GAAG;AACpC1R,UAAAA,OAAM,KAAK+6F,gBAAgB,IAAI;AAAA,QACjC,OAAO;AACL,kBAAQrpF,MAAI;AAAA,YACV,KAAA;AACE1R,cAAAA,OAAM,KAAKyzE,oBAAoBrzE,MAAK;AACpC;AAAA,YACF,KAAA;AACEJ,cAAAA,OAAM,KAAKwzE,mBAAmBpzE,MAAK;AACnC;AAAA,YACF,KAAA;AACEJ,cAAAA,OAAM,KAAKgzE,mBAAmB5yE,MAAK;AACnC;AAAA,YACF,KAAA,KAAqB;AAEnB,oBAAM6zF,gBAAgB,KAAK/0F,MAAM4U;AACjC,kBAAIoiE,uBAAuB,MAAM;AAC/B,oBAAIA,oBAAoB+d,kBAAkB,MAAM;AAC9C/d,sCAAoB+d,gBAAgBA;AAAAA,gBACtC;AAAA,cACF,OAAO;AACL,qBAAKpd,MAAMxF,OAAOxE,wBAAwBonB,aAAa;AAAA,cACzD;AACAj0F,cAAAA,OAAM,KAAK40E,iBAAkB;AAC7B;AAAA,YACF;AAAA,YACA;AACE,kBAAqCljE,cAAqB;AACxD1R,gBAAAA,OAAM,KAAKqzE,oBAAoBjzE,MAAK;AACpC;AAAA,cACF;AAEA,mBAAK0oE,WAAY;AAAA,UACrB;AAAA,QACF;AACCkN,aAAah2E,MAAMA;AACpB,YAAI0R,cAAyB;AAE3BskE,eAAKh6C,WAAW;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAAA,IAIA+3C,aAAaxzE,OAAsCyzE,SAAwB;AACzEzzE,MAAAA,MAAKi7B,KAAK;AACVj7B,MAAAA,MAAK46B,YAAY;AACjB56B,MAAAA,MAAK66B,QAAQ44C;AAAAA,IACf;AAAA,IAIAkB,YAEE30E,OACA40E,aACAnB,SACAoB,eACAC,kBACA3jE,MACA4jE,eAAwB,OACrB;AACH,WAAKvB,aAAaxzE,OAAMyzE,OAAO;AAC/BzzE,MAAAA,MAAK46B,YAAYg6C;AACjB,WAAK9V,MAAMtF,MACT6qB,UAEGtP,eAAiC,KAAA,MACjCD,mBAA4C,KAAA,EACjD;AACA,WAAKwf,UAAU96B,MAAMu4B,cAActe,SAASzzE,MAAK46B,SAAS,CAAC;AAC3D,WAAKuqE,oBAAoBnlG,OAAM60E,aAAa;AAC5C,YAAMshD,eAAe,KAAK71B,2BAA2BtgG,OAAMmR,MAAM,IAAI;AACrE,WAAKmjF,UAAUr3B,KAAM;AACrB,WAAK6B,MAAM7B,KAAM;AAEjB,aAAOk5D;AAAAA,IACT;AAAA,IAKAjzB,eAEEC,OACAC,cACAC,SACA1tB,qBACuC;AACvC,UAAI0tB,SAAS;AACX,aAAK/W,aAAa,gBAAgB;AAAA,MACpC;AACA,YAAMwrC,gCAAgC,KAAKn5H,MAAMyqF;AACjD,WAAKzqF,MAAMyqF,6BAA6B;AACxC,YAAMppF,QAAO,KAAKi1E,UAAkD;AACpE,WAAKxiD,KAAM;AACXzyB,MAAAA,MAAKk5B,WAAW,KAAKghG,cACnB/2B,OACiB,CAACE,SAClB1tB,qBAEA31E,KACF;AACA,WAAKrB,MAAMyqF,6BAA6B0uC;AACxC,aAAO,KAAK3iD,WACVn1E,OACAqjG,UAAU,oBAAoB,iBAChC;AAAA,IACF;AAAA,IAKA2D,qBAEEhnG,OACA26B,QAGA84C,SACAkuB,kBAC2B;AAC3B,WAAK7iC,MAAMtF,MAAM6qB,KAAoC;AACrD,UAAIzoD,QAAQm2D,cAActe,SAAS,KAAK;AAIxC,UAAI,CAAC,KAAKniE,MAAe,CAAA,KAAK,KAAKgjF,UAAUxC,OAAO;AAClDl2D,iBAA2B;AAAA,MAC7B;AACA,WAAK04D,UAAU96B,MAAM59B,KAAK;AAC1B,WAAK43C,aAAaxzE,OAAMyzE,OAAO;AAC/B,YAAMi5C,4BAA4B,KAAK/tH,MAAMiqF;AAE7C,UAAIjuD,QAAQ;AACV,aAAKh8B,MAAMiqF,yBAAyB;AACpC,aAAKud,2BAA2BnmG,OAAM26B,QAAQgnE,gBAAgB;AAAA,MAChE;AACA,WAAKhjG,MAAMiqF,yBAAyB;AACpC,WAAKnU,kBAAkBz0E,OAAM,IAAI;AAEjC,WAAKs0F,UAAUr3B,KAAM;AACrB,WAAK6B,MAAM7B,KAAM;AACjB,WAAKt+D,MAAMiqF,yBAAyB8jC;AAEpC,aAAO,KAAKv3C,WAAWn1E,OAAM,yBAAyB;AAAA,IACxD;AAAA,IAEAmmG,2BACEnmG,OACA26B,QAGAgnE,kBACM;AACN,WAAKD,iBAAiB/mE,QAAQgnE,kBAAkB,KAAK;AACrD3hG,MAAAA,MAAK26B,SAASA;AAAAA,IAChB;AAAA,IAEA2lE,2BAMEtgG,OAAiBmR,MAAiByb,WAAoB,OAAU;AAEhE,WAAK6nD,kBAAkBz0E,OAAM,OAAO4sB,QAAQ;AAC5C,aAAO,KAAKuoD,WAAWn1E,OAAMmR,IAAI;AAAA,IACnC;AAAA,IAGAsjE,kBAEEz0E,OACA00E,iBACA9nD,WAAoB,OACd;AACN,YAAMxB,eAAespD,mBAAmB,CAAC,KAAKpjE,MAAK,CAAU;AAC7D,WAAKkjF,gBAAgBh7B,MAAM+3B,oBAAoB;AAE/C,UAAInmE,cAAc;AAEfprB,QAAAA,MAA2C65B,OAC1C,KAAKsnE,iBAAkB;AACzB,aAAKS,YAAY5hG,OAAM,OAAO00E,iBAAiB,KAAK;AAAA,MACtD,OAAO;AACL,cAAM87C,YAAY,KAAK7xH,MAAMoO;AAG7B,cAAMgnF,YAAY,KAAKp1F,MAAM4pF;AAC7B,aAAK5pF,MAAM4pF,SAAS,CAAE;AAItB,aAAK+L,UAAU96B,MACb,KAAK86B,UAAU5C,aAAc,KAC/B;AACA1xF,QAAAA,MAAK65B,OAAO,KAAKi5F,WACf,MACA,OAECmI,4BAAoC;AACnC,gBAAMC,YAAY,CAAC,KAAKC,kBAAkBn7H,MAAK26B,MAAM;AAErD,cAAIsgG,0BAA0BC,WAAW;AAEvC,iBAAK5kD,MACHxF,OAAOpK,+BAEN1mE,MAAKi8B,SAAS,YAAYj8B,MAAKi8B,SAAS,kBAEvC,CAAC,CAACj8B,MAAKP,MAELO,MAAKP,IAAI6T,IAAIM,MACb5T,KACN;AAAA,UACF;AAEA,gBAAMsmG,oBAAoB,CAACkqB,aAAa,KAAK7xH,MAAMoO;AAInD,eAAK60F,YACH5hG,OACA,CAAC,KAAKrB,MAAMoO,UAAU,CAAC2nE,mBAAmB,CAAC9nD,YAAY,CAACsuG,WACxDxmD,iBACA4xB,iBACF;AAGA,cAAI,KAAK3nG,MAAMoO,UAAU/M,MAAKi7B,IAAI;AAChC,iBAAK2iF,gBACH59G,MAAKi7B,IAAE,IAEPqrE,iBACF;AAAA,UACF;AAAA,QACF,CACF;AACA,aAAKhS,UAAUr3B,KAAM;AACrB,aAAKt+D,MAAM4pF,SAASwL;AAAAA,MACtB;AACA,WAAKS,gBAAgBv3B,KAAM;AAAA,IAC7B;AAAA,IAEA6vD,kBAAkB9sH,OAAkD;AAClE,aAAOA,MAAKmR,SAAS;AAAA,IACvB;AAAA,IAEAgqH,kBACExgG,QACS;AACT,eAASzuB,IAAI,GAAGwmB,MAAMiI,OAAOxuB,QAAQD,IAAIwmB,KAAKxmB,KAAK;AACjD,YAAI,CAAC,KAAK4gH,kBAAkBnyF,OAAOzuB,CAAC,CAAC,EAAG,QAAO;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAAA,IAEA01F,YACE5hG,OACAomG,iBACAC,iBACAC,oBAA6B,MACvB;AACN,YAAMmX,eAAe,CAACrX,mBAAmB,oBAAIl5F,IAAa;AAO1D,YAAMkuH,mBAAmB;AAAA,QAAEjqH,MAAM;AAAA,MAA6B;AAC9D,iBAAW+oB,SAASl6B,MAAK26B,QAAQ;AAC/B,aAAK6iF,UACHtjF,OACAkhG,kBAEA3d,GAAAA,cACAnX,iBACF;AAAA,MACF;AAAA,IACF;AAAA,IAQA4zB,cAEE/2B,OACA6Z,YACArnC,qBACAkiD,cACyB;AACzB,YAAM5a,OAAgC,CAAE;AACxC,UAAI7d,QAAQ;AAEZ,aAAO,CAAC,KAAK7U,IAAI4Y,KAAK,GAAG;AACvB,YAAI/D,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAAM,EAAS;AACpB,cAAI,KAAKgI,MAAM6xF,KAAK,GAAG;AACrB,gBAAI00B,cAAc;AAChB,mBAAKE,4BAA4BF,YAAY;AAAA,YAC/C;AACA,iBAAKplG,KAAM;AACX;AAAA,UACF;AAAA,QACF;AAEAwqF,aAAK71G,KAAK,KAAK4wH,kBAAkBhb,YAAYrnC,mBAAmB,CAAC;AAAA,MACnE;AACA,aAAOsnC;AAAAA,IACT;AAAA,IAcA+a,kBAEEhb,YACArnC,qBACAiiD,kBAC+D;AAC/D,UAAItb;AACJ,UAAI,KAAKhrG,MAAK,EAAS,GAAG;AACxB,YAAI,CAAC0rG,YAAY;AACf,eAAK1mC,MAAMxF,OAAOrE,iBAAiB,KAAK9tE,MAAM6qF,eAAe;AAAA,YAC3DjhB,YAAY;AAAA,UACd,CAAC;AAAA,QACH;AACA+zC,cAAM;AAAA,MACP,WAAU,KAAKhrG,MAAK,EAAY,GAAG;AAClC,cAAMqoH,qBAAqB,KAAKh7H,MAAM4U;AAEtC+oG,cAAM,KAAKza,eACT,KAAK6a,YAAY/mC,mBAAmB,GACpCgkD,kBACF;AAAA,MACD,WAAU,KAAKroH,MAAK,EAAY,GAAG;AAClC,aAAKg7E,aAAa,oBAAoB;AACtC,YAAI,CAACsrC,kBAAkB;AACrB,eAAKthD,MAAMxF,OAAOjF,+BAA+B,KAAKltE,MAAM4U,QAAQ;AAAA,QACtE;AACA,cAAMvT,QAAO,KAAKi1E,UAAkC;AACpD,aAAKxiD,KAAM;AACX6pF,cAAM,KAAKnnC,WAAWn1E,OAAM,qBAAqB;AAAA,MACnD,OAAO;AACLs8G,cAAM,KAAKlb,wBACTzrB,qBACA,KAAKksB,cACP;AAAA,MACF;AACA,aAAOya;AAAAA,IACT;AAAA,IAQA9hB,gBAAgBqC,SAAiC;AAC/C,YAAM78F,QAAO,KAAKi1E,UAAyB;AAC3C,YAAMxoE,OAAO,KAAKsnH,oBAAoBl3B,OAAO;AAE7C,aAAO,KAAK8C,iBAAiB3/F,OAAMyM,IAAI;AAAA,IACzC;AAAA,IAEAkzF,iBACE3/F,OACAyM,MACc;AACdzM,MAAAA,MAAKyM,OAAOA;AACZzM,MAAAA,MAAKsT,IAAIyvD,iBAAiBt2D;AAE1B,aAAO,KAAK0oE,WAAWn1E,OAAM,YAAY;AAAA,IAC3C;AAAA,IAEA+zH,oBAAoBl3B,SAA2B;AAC7C,UAAIpwF;AAEJ,YAAM;AAAA,QAAE8G;AAAAA,QAAUpC;AAAAA,MAAM,IAAG,KAAKxS;AAEhC,UAAIojF,2BAA2B5wE,IAAI,GAAG;AACpC1E,eAAO,KAAK9N,MAAMkB;AAAAA,MACpB,OAAO;AACL,aAAK0oE,WAAY;AAAA,MACnB;AAEA,YAAM+Z,kBAAiBR,kCAAkC3wE,IAAI;AAE7D,UAAI0rF,SAAS;AAGX,YAAIva,iBAAgB;AAClB,eAAK4J,aAAY,GAAQ;AAAA,QAC3B;AAAA,MACF,OAAO;AACL,aAAK+Y,kBAAkBx4F,MAAM8G,UAAU+uE,iBAAgB,KAAK;AAAA,MAC9D;AAEA,WAAK7vD,KAAM;AAEX,aAAOhmB;AAAAA,IACT;AAAA,IAEAw4F,kBACE33F,MACAiG,UACA06G,eACA7wD,YACM;AAEN,UAAI9vD,KAAKnB,SAAS,IAAI;AACpB;AAAA,MACF;AAGA,UAAI,CAACk3E,kBAAkB/1E,IAAI,GAAG;AAC5B;AAAA,MACF;AAEA,UAAI2gH,iBAAiBrgH,UAAUN,IAAI,GAAG;AACpC,aAAKgpE,MAAMxF,OAAO7E,mBAAmB14D,UAAU;AAAA,UAC7C3T,SAAS0N;AAAAA,QACX,CAAC;AACD;AAAA,MACF;AAEA,YAAM+tH,eAAe,CAAC,KAAK18H,MAAMoO,SAC7BM,iBACA+vD,aACEzvD,2BACAH;AAEN,UAAI6tH,aAAa/tH,MAAM,KAAKC,QAAQ,GAAG;AACrC,aAAK+oE,MAAMxF,OAAOvE,wBAAwBh5D,UAAU;AAAA,UAClDu0D,cAAcx6D;AAAAA,QAChB,CAAC;AACD;AAAA,MACF,WAAWA,SAAS,SAAS;AAC3B,YAAI,KAAKgnF,UAAU1C,UAAU;AAC3B,eAAKtb,MAAMxF,OAAOjD,wBAAwBt6D,QAAQ;AAClD;AAAA,QACF;AAAA,MACF,WAAWjG,SAAS,SAAS;AAC3B,YAAI,KAAKgnF,UAAU3C,UAAU;AAC3B,eAAKrb,MAAMxF,OAAO/M,wBAAwBxwD,QAAQ;AAClD;AAAA,QACF;AAEA,YAAI,KAAKurD,MAAMslB,eAAe;AAC5B,eAAK9N,MAAMxF,OAAO9M,qCAAqCzwD,QAAQ;AAC/D;AAAA,QACF;AAEA,aAAKihF,gBAAgBtD,gCAAgC39E,QAAQ;AAAA,MAC/D,WAAWjG,SAAS,aAAa;AAC/B,YAAI,KAAKwxD,MAAMqlB,iCAAiC;AAC9C,eAAK7N,MAAMxF,OAAOjN,kBAAkBtwD,QAAQ;AAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAIAyjH,uBAAgC;AAC9B,YAAMsE,iBACJ,KAAKhnC,UAAU3C,YACd,KAAKtf,mBACJ,CAAC,KAAKvT,MAAMglB;AAEhB,UAAIw3C,kBAAkB,CAAC,KAAKx8D,MAAMglB,YAAY;AAC5C,aAAKnlF,MAAM4qF,mBAAmB;AAAA,MAChC;AAEA,aAAO+xC;AAAAA,IACT;AAAA,IAIArE,WAAyB1jH,UAAuC;AAC9D,YAAMvT,QAAO,KAAKq1F,YAA+B9hF,QAAQ;AAEzD,WAAKihF,gBAAgBzD,gCACnBjgB,OAAO7M,gCACPjkE,KACF;AAEA,UAAI,KAAKuqF,IAAG,EAAQ,GAAG;AACrB,aAAKjU,MAAMxF,OAAOzG,mBAAmBrqE,KAAI;AAAA,MAC3C;AAEA,UACE,CAAC,KAAK8+D,MAAMglB,cACZ,EAAE,KAAKzR,cAAW,IAClB;AACA,YAAI,KAAK+kD,oBAAoB;AAC3B,eAAK7xC,8BAA8B;AAAA,QACrC,OAAO;AACL,eAAKD,oBAAoB;AAAA,QAC3B;AAAA,MACF;AAEA,UAAI,CAAC,KAAK3mF,MAAMwqF,WAAW;AACzBnpF,QAAAA,MAAKm8B,WAAW,KAAKqsF,gBAAgB,MAAM,IAAI;AAAA,MACjD;AAEA,aAAO,KAAKrzC,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEAo3H,mBAA4B;AAC1B,UAAI,KAAKzkC,sBAAuB,EAAE,QAAO;AACzC,YAAM;AAAA,QAAExhF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,aAGEwS,SAAmB,MACnBA,SAAI,MACJA,SAAI,KACJ4xE,gBAAgB5xE,IAAI,KACnBA,gBAAmB,CAAC,KAAKxS,MAAM2qF,eAGhCn4E,SAAkB,OAClBA,SAAiB,MAGhB,KAAKy0E,UAAU,aAAa,KAAKz0E,SAAI;AAAA,IAE1C;AAAA,IAIAskH,aAA4C;AAC1C,YAAMz1H,QAAO,KAAKi1E,UAA8B;AAEhD,WAAKuf,gBAAgBzD,gCACnBjgB,OAAOhD,kBACP9tE,KACF;AAEA,WAAKyyB,KAAM;AACX,UAAI8oG,aAAa;AACjB,UAAIp/F,WAAgC;AACpC,UAAI,CAAC,KAAKw2D,yBAAyB;AACjC4oC,qBAAa,KAAKhxC,MAAW;AAC7B,gBAAQ,KAAK5rF,MAAMwS,MAAI;AAAA,UACrB,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAAA,UACA,KAAA;AAIE,gBAAI,CAACoqH,WAAY;AAAA,UAEnB;AACEp/F,uBAAW,KAAKglE,iBAAkB;AAAA,QACtC;AAAA,MACF;AACAnhG,MAAAA,MAAKi/B,WAAWs8F;AAChBv7H,MAAAA,MAAKm8B,WAAWA;AAChB,aAAO,KAAKg5C,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAGAo4H,gBAEEp4H,OACoB;AACpB,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAKiB,SAAS,KAAKmgG,wBAAyB;AAC5CphG,MAAAA,MAAKb,UAAU;AACf,UAAI,KAAKorF,IAAG,EAAS,GAAG;AACtB,YAAI,CAAC,KAAKj5E,MAAK,EAAU,GAAG;AAC1BtR,UAAAA,MAAKb,UAAU,KAAKiiG,wBAAyB;AAE7C,cAAI,KAAK7W,IAAG,EAAS,KAAK,CAAC,KAAKj5E,MAAe,EAAA,GAAG;AAGhD,eAAG;AACD,mBAAK8vF,wBAAyB;AAAA,YAChC,SAAS,KAAK7W,IAAY,EAAA,KAAK,CAAC,KAAKj5E,MAAK,EAAU;AAEpD,iBAAKglE,MAAMxF,OAAO/J,iBAAiB/mE,KAAI;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AACA,WAAKsJ,OAAM,EAAU;AACrB,aAAO,KAAK6rE,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAKA+1H,6BAA6Bx8F,MAAoBu0F,cAAwB;AAEvE,UAAI,KAAKloC,UAAU,CAAC,oBAAoB;AAAA,QAAEoH,UAAU;AAAA,MAAS,CAAA,CAAC,GAAG;AAC/D,YAAIzzD,KAAKpoB,SAAS,sBAAsB;AAGtC,eAAKmlE,MAAMxF,OAAO3B,gCAAgC2+C,YAAY;AAAA,QAChE;AAAA,MACF;AAAA,IACF;AAAA,IAEA2I,8BAA8B+E,WAAyBjoH,UAAoB;AACzE,UAAI,KAAKkoH,kBAAkBD,SAAS,GAAG;AACrC,cAAM//B,WAAW,KAAKpG,YAAoC9hF,QAAQ;AAClEkoF,iBAASnkE,SAASkkG;AAClB,eAAO,KAAKrmD,WAAWsmB,UAAU,sBAAsB;AAAA,MACzD,OAAO;AACL,cAAMA,WAAW,KAAKpG,YAAuC9hF,QAAQ;AACrE,aAAKmoH,mCAAmCnoH,QAAQ;AAChDkoF,iBAAS/hE,aAAa8hG;AACtB,eAAO,KAAKrmD,WAAWsmB,UAAU,yBAAyB;AAAA,MAC5D;AAAA,IACF;AAAA,IAEAggC,kBAAkB/hG,YAAmC;AACnD,cAAQA,WAAWvoB,MAAI;AAAA,QACrB,KAAK;AACH,iBACE,CAACuoB,WAAW+B,YAAY,KAAKggG,kBAAkB/hG,WAAW10B,MAAM;AAAA,QAEpE,KAAK;AACH,iBAAO;AAAA,QACT;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAAA,IAMA02H,mCAAmCnoH,UAA0B;AAO3D,UAAI,KAAKjC,MAAK,EAAS,GAAG;AACxB,cAAM,KAAKglE,MAAMxF,OAAO7B,qBAAqB,KAAKtwE,MAAM4U,QAAQ;AAAA,MAClE;AAGA,UAAI,CAAC,KAAKsjH,yCAAyC;AACjD,aAAKvgD,MAAMxF,OAAO1B,qBAAqB77D,QAAQ;AAAA,MACjD;AAAA,IACF;AAAA,IAQA8iH,wBAA2BvgG,UAAsB;AAC/C,YAAM6lG,yBAAyB,KAAKh9H,MAAMypF;AAC1C,WAAKzpF,MAAMypF,eAAe;AAAA,QAExBC,0BAA0B;AAAA,QAE1BC,eAAe;AAAA,MAChB;AAED,UAAI;AACF,eAAOxyD,SAAU;AAAA,MACnB,UAAU;AACR,aAAKn3B,MAAMypF,eAAeuzC;AAAAA,MAC5B;AAAA,IACF;AAAA,IAUAC,mCAAsC9lG,UAAsB;AAG1D,UAGE,KAAK8vD,UAAU,CAAC,oBAAoB;AAAA,QAAEoH,UAAU;AAAA,MAAS,CAAA,CAAC,GAC1D;AAEA,cAAM2uC,yBAAyB,KAAKh9H,MAAMypF;AAC1C,aAAKzpF,MAAMypF,eAAe;AAAA,UAExBC,0BAA0B;AAAA,UAE1BC,eAAe;AAAA,QAChB;AAED,YAAI;AACF,iBAAOxyD,SAAU;AAAA,QACnB,UAAU;AACR,eAAKn3B,MAAMypF,eAAeuzC;AAAAA,QAC5B;AAAA,MACF,OAAO;AAKL,eAAO7lG,SAAU;AAAA,MACnB;AAAA,IACF;AAAA,IAEAygG,+BAAkCzgG,UAAsB;AACtD,YAAM+lG,6BAA6B,KAAKl9H,MAAMwqF;AAC9C,WAAKxqF,MAAMwqF,YAAY;AAEvB,UAAI;AACF,eAAOrzD,SAAU;AAAA,MACnB,UAAU;AACR,aAAKn3B,MAAMwqF,YAAY0yC;AAAAA,MACzB;AAAA,IACF;AAAA,IAEAtG,WAAcz/F,UAAsB;AAClC,YAAM8F,QAAQ,KAAK04D,UAAU5C,aAAc;AAC3C,YAAMoqC,iBAAiBC,IAAqB,CAACngG;AAC7C,UAAIkgG,gBAAgB;AAClB,aAAKxnC,UAAU96B,MAAM59B,SAA0B;AAC/C,YAAI;AACF,iBAAO9F,SAAU;AAAA,QACnB,UAAU;AACR,eAAKw+D,UAAUr3B,KAAM;AAAA,QACvB;AAAA,MACF;AACA,aAAOnnC,SAAU;AAAA,IACnB;AAAA,IAEAu/F,cAAiBv/F,UAAsB;AACrC,YAAM8F,QAAQ,KAAK04D,UAAU5C,aAAc;AAC3C,YAAMsqC,mBAAmBD,IAAqBngG;AAC9C,UAAIogG,kBAAkB;AACpB,aAAK1nC,UAAU96B,MAAM59B,QAAQ,EAAmB;AAChD,YAAI;AACF,iBAAO9F,SAAU;AAAA,QACnB,UAAU;AACR,eAAKw+D,UAAUr3B,KAAM;AAAA,QACvB;AAAA,MACF;AACA,aAAOnnC,SAAU;AAAA,IACnB;AAAA,IAIAsjG,yBAA+B;AAC7B,WAAKz6H,MAAMypF,aAAaE,gBAAgB;AAAA,IAC1C;AAAA,IAEA6wC,0CAAmD;AACjD,aAAO,KAAKx6H,MAAMypF,aAAaC,4BAA4B;AAAA,IAC7D;AAAA,IAEAwuC,wCAAiD;AAC/C,aACE,KAAKl4H,MAAMypF,aAAaE,iBAAiB,QACzC,KAAK3pF,MAAMypF,aAAaE,iBAAiB;AAAA,IAE7C;AAAA,IAEAkuC,wBAAsCV,MAA4B;AAChE,YAAMviH,WAAW,KAAK5U,MAAM4U;AAE5B,WAAK5U,MAAMspF,mBAAmB,KAAKtpF,MAAM+U;AACzC,YAAMokH,gCAAgC,KAAKn5H,MAAMyqF;AACjD,WAAKzqF,MAAMyqF,6BAA6B;AAExC,YAAMhyB,MAAM,KAAKy2D,YACf,KAAKgI,yBAA0B,GAC/BtiH,UACAuiH,IACF;AAEA,WAAKn3H,MAAMyqF,6BAA6B0uC;AAExC,aAAO1gE;AAAAA,IACT;AAAA,IAGAwhE,wBAAwD;AACtD,WAAKtsC,aAAa,cAAc;AAChC,YAAMtsF,QAAO,KAAKi1E,UAA+B;AACjD,WAAKxiD,KAAM;AACX,UAAI,CAAC,KAAKnhB,MAAK,CAAU,GAAG;AAC1B,aAAKi3D,WAAW,OAAe;AAAA,MACjC;AAEA,YAAMluC,UAAU,KAAKg7D,YAAuB,KAAK12F,MAAMgV,MAAM;AAC7D,WAAK8e,KAAM;AAEX,YAAMwpG,eAAe,KAAKnoC,iBAAiC,IAAI;AAC/D,WAAKW,mBAAoB;AAEzB,UAAI;AACFz0F,QAAAA,MAAK65B,OAAO,KAAKqiG,aAAa7hG,SAAoB,GAAA,QAAQ;AAAA,MAC5D,UAAU;AACR4hG,qBAAc;AAAA,MAChB;AACA,aAAO,KAAK9mD,WAA+Bn1E,OAAM,kBAAkB;AAAA,IACrE;AAAA,IAGAgkG,gCAEEvuB,MACM;AAAA,IAAA;AAAA,EACV;ACzlGA,QAAM0mD,YAAY;AAAA,IAAElgG,MAAI;AAAA,EAA+B,GACrDmgG,cAAc;AAAA,IAAEngG,MAAI;AAAA,EAAiC;AAkBvD,QAAMogG,gBAAgB;AAEtB,QAAMC,4BAA4B;AAUlC,WAASC,mBACPhiG,QACAzzB,QACAoqE,YACA;AACA,aAAShlE,IAAI,GAAGA,IAAIquB,OAAOpuB,QAAQD,KAAK;AACtC,YAAMnF,SAAQwzB,OAAOruB,CAAC;AACtB,YAAM;AAAA,QAAEiF;AAAAA,MAAM,IAAGpK;AACjB,UAAI,OAAOoK,SAAS,UAAU;AACO;AACjC,cAAIA,cAAyB;AAC3B,kBAAM;AAAA,cAAEmC;AAAAA,cAAKI;AAAAA,cAAO7T,OAAAA;AAAAA,cAAO+T;AAAAA,YAAK,IAAG7M;AACnC,kBAAMy1H,aAAa9oH,QAAQ;AAC3B,kBAAM+oH,aAAaz5D,+BAA+B1vD,IAAII,OAAO,CAAC;AAC9D6mB,mBAAOxgB,OACL7N,GACA,GACA,IAAIy9E,MAAM;AAAA,cAERx4E,MAAM6xE,iBAAgB,EAAQ;AAAA,cAC9BnjF,OAAO;AAAA,cACP6T;AAAAA,cACAE,KAAK4oH;AAAAA,cACLjpH,UAAUD,IAAII;AAAAA,cACdC,QAAQ8oH;AAAAA,YACV,CAAC,GACD,IAAI9yC,MAAM;AAAA,cAERx4E,MAAM6xE,iBAAgB,GAAQ;AAAA,cAC9BnjF,OAAOA;AAAAA,cACP6T,OAAO8oH;AAAAA,cACP5oH;AAAAA,cACAL,UAAUkpH;AAAAA,cACV9oH,QAAQL,IAAIM;AAAAA,YACb,CAAA,CACH;AACA1H;AACA;AAAA,UACF;AAEA,cAAI62E,gBAAgB5xE,IAAI,GAAG;AACzB,kBAAM;AAAA,cAAEmC;AAAAA,cAAKI;AAAAA,cAAO7T,OAAAA;AAAAA,cAAO+T;AAAAA,YAAK,IAAG7M;AACnC,kBAAM21H,eAAehpH,QAAQ;AAC7B,kBAAMipH,kBAAkB35D,+BAA+B1vD,IAAII,OAAO,CAAC;AACnE,gBAAIkpH;AACJ,gBAAI91H,OAAM8F,WAAW8G,QAAQw9D,UAAU,MAAC,IAA4B;AAClE0rD,2BAAa,IAAIjzC,MAAM;AAAA,gBAErBx4E,MAAM6xE,iBAAgB,EAAa;AAAA,gBACnCnjF,OAAO;AAAA,gBACP6T;AAAAA,gBACAE,KAAK8oH;AAAAA,gBACLnpH,UAAUD,IAAII;AAAAA,gBACdC,QAAQgpH;AAAAA,cACV,CAAC;AAAA,YACH,OAAO;AACLC,2BAAa,IAAIjzC,MAAM;AAAA,gBAErBx4E,MAAM6xE,iBAAgB,CAAU;AAAA,gBAChCnjF,OAAO;AAAA,gBACP6T;AAAAA,gBACAE,KAAK8oH;AAAAA,gBACLnpH,UAAUD,IAAII;AAAAA,gBACdC,QAAQgpH;AAAAA,cACV,CAAC;AAAA,YACH;AACA,gBAAIE,eACFC,oBACAC,uBACAC;AACF,gBAAI7rH,aAA0B;AAE5B2rH,mCAAqBlpH,MAAM;AAC3BmpH,sCAAwB/5D,+BAA+B1vD,IAAIM,KAAK,EAAE;AAClEipH,8BAAgBh9H,WAAU,OAAO,OAAOA,OAAMuR,MAAM,GAAG,EAAE;AACzD4rH,yBAAW,IAAIrzC,MAAM;AAAA,gBAEnBx4E,MAAM6xE,iBAAgB,EAAa;AAAA,gBACnCnjF,OAAO;AAAA,gBACP6T,OAAOopH;AAAAA,gBACPlpH;AAAAA,gBACAL,UAAUwpH;AAAAA,gBACVppH,QAAQL,IAAIM;AAAAA,cACd,CAAC;AAAA,YACH,OAAO;AAELkpH,mCAAqBlpH,MAAM;AAC3BmpH,sCAAwB/5D,+BAA+B1vD,IAAIM,KAAK,EAAE;AAClEipH,8BAAgBh9H,WAAU,OAAO,OAAOA,OAAMuR,MAAM,GAAG,EAAE;AACzD4rH,yBAAW,IAAIrzC,MAAM;AAAA,gBAEnBx4E,MAAM6xE,iBAAgB,EAAgB;AAAA,gBACtCnjF,OAAO;AAAA,gBACP6T,OAAOopH;AAAAA,gBACPlpH;AAAAA,gBACAL,UAAUwpH;AAAAA,gBACVppH,QAAQL,IAAIM;AAAAA,cACd,CAAC;AAAA,YACH;AACA2mB,mBAAOxgB,OACL7N,GACA,GACA0wH,YACA,IAAIjzC,MAAM;AAAA,cAERx4E,MAAM6xE,iBAAgB,EAAY;AAAA,cAClCnjF,OAAOg9H;AAAAA,cACPnpH,OAAOgpH;AAAAA,cACP9oH,KAAKkpH;AAAAA,cACLvpH,UAAUopH;AAAAA,cACVhpH,QAAQopH;AAAAA,YACT,CAAA,GACDC,QACF;AACA9wH,iBAAK;AACL;AAAA,UACF;AAAA,QACF;AAEAnF,QAAAA,OAAMoK,OAAO6xE,iBAAiB7xE,IAAI;AAAA,MACpC;AAAA,IACF;AACA,WAAOopB;AAAAA,EACT;AAAA,EACe,MAAe0iG,wBAAwBlI,iBAAiB;AAAA,IAQrE9tB,cAEEpoG,OACAw7B,SACQ;AACRx7B,MAAAA,MAAKw7B,UAAU,KAAK6hG,aAAa7hG,OAAO;AACxCx7B,MAAAA,MAAKy7B,WAAW,KAAKA;AAErB,UAAI,KAAK+3C,cAAW,KAAuB;AACzCxzE,QAAAA,MAAK07B,SAASgiG,mBACZ,KAAKhiG,QACL,KAAKzzB,OACL,KAAKoqE,UACP;AAAA,MACF;AAEA,aAAO,KAAKiE,WAAWt2E,OAAM,MAAM;AAAA,IACrC;AAAA,IAEAq9H,aAEE7hG,SACAzmB,MAAuB,KACvBkoB,aAAyB,KAAK38B,QAAQ28B,YAC3B;AACXzB,cAAQyB,aAAaA;AACrBzB,cAAQ0B,cAAc,KAAKmhG,0BAA2B;AACtD,WAAKnpD,eAAe15C,SAAS,MAAM,MAAMzmB,GAAG;AAC5C,UAAI,KAAKrG,UAAU;AACjB,YACE,EAAE,KAAK8kE,cAAW,OAClB,KAAKvT,MAAM6kB,iBAAiB4J,OAAO,GACnC;AACA,qBAAW,CAACrnB,WAAWoV,EAAE,KAAK9lE,MAAM2/C,KAAK,KAAK2J,MAAM6kB,gBAAgB,GAAG;AACrE,iBAAKrN,MAAMxF,OAAO/G,uBAAuBuR,IAAI;AAAA,cAAEpV;AAAAA,YAAU,CAAC;AAAA,UAC5D;AAAA,QACF;AACA,aAAK+rB,SAAS53D,SAAS,iBAAiB,KAAK17B,MAAM4qF,gBAAgB;AAAA,MACrE;AACA,UAAI4zC;AACJ,UAAIvpH,aAAgB;AAElBupH,0BAAkB,KAAKhoD,WAAW96C,SAAS,SAAS;AAAA,MACtD,OAAO;AAEL8iG,0BAAkB,KAAK5lD,aACrBl9C,SACA,WACA2oC,+BAA+B,KAAKrkE,MAAM4U,UAAU,EAAE,CACxD;AAAA,MACF;AACA,aAAO4pH;AAAAA,IACT;AAAA,IAKAC,gBAAgBv7D,MAAgC;AAC9C,YAAM19B,YAAY09B;AAClB19B,gBAAUhzB,OAAO;AACjBgzB,gBAAUtkC,QAAQskC,UAAUzK;AAC5B,aAAOyK,UAAUzK;AAEjB,YAAM2K,mBAAmBF,UAAUtkC;AACnC,YAAMyzE,kBAAkBjvC,iBAAiBxkC;AACzC,YAAM8+B,MAAM,KAAK73B,MAAMsK,MACrB,KAAKs0E,kBAAkBrhD,iBAAiB3wB,KAAK,GAC7C,KAAKgyE,kBAAkBrhD,iBAAiBzwB,GAAG,CAC7C;AACA,YAAMyf,MAAOgR,iBAAiBxkC,QAAQ8+B,IAAIvtB,MAAM,GAAG,EAAE;AAErD,WAAK6gF,SAAS5tD,kBAAkB,OAAO1F,GAAG;AAC1C,WAAKszD,SAAS5tD,kBAAkB,YAAYhR,GAAG;AAC/C,WAAK4+D,SAAS5tD,kBAAkB,mBAAmBivC,eAAe;AAElEjvC,uBAAiBlzB,OAAO;AAExB,aAAOgzB;AAAAA,IACT;AAAA,IAEA+4F,4BAA2D;AACzD,UAAI,CAAC,KAAK5rH,MAAK,EAAwB,GAAG;AACxC,eAAO;AAAA,MACT;AAEA,YAAMtR,QAAO,KAAKi1E,UAAmC;AACrDj1E,MAAAA,MAAKH,QAAQ,KAAKlB,MAAMkB;AACxB,WAAK4yB,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,sBAAsB;AAAA,IACrD;AAAA,IAEAs9D,QAAiB;AACf,UAAI,CAAC,KAAK40B,aAAY,GAAQ,GAAG;AAC/B,eAAO;AAAA,MACT;AACA,aAAO,KAAKmrC,wBAAyB;AAAA,IACvC;AAAA,IAEA5K,0BAA0B5hG,IAAY5kB,MAAa;AACjD,UAAIG,kBAAkBykB,EAAE,GAAG;AACzByrG,kCAA0BvxC,YAAY9+E;AACtC,YAAIqwH,0BAA0B79H,KAAK,KAAKqI,KAAK,GAAG;AAG9C,gBAAMw2H,QAAQ,KAAKlyC,eAAekxC,0BAA0BvxC,SAAS;AACrE,cAAI,CAACx+E,iBAAiB+wH,KAAK,KAAKA,cAA+B;AAC7D,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT,WAAWzsG,OAAE,IAA0B;AACrC,eAAO;AAAA,MACT,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEA0sG,uBAAuB1sG,IAAY;AACjC,aACEA,OAAE,MAAoCA,OAA+B;AAAA,IAEzE;AAAA,IAMAwsG,0BAAmC;AACjC,YAAM5qG,OAAO,KAAKo4D,eAAgB;AAClC,YAAMyH,SAAS,KAAKlH,eAAe34D,IAAI;AACvC,aACE,KAAK8qG,uBAAuBjrC,MAAM,KAClC,KAAKmgC,0BAA0BngC,QAAQ7/D,IAAI;AAAA,IAE/C;AAAA,IAOA+qG,6CAAsD;AACpD,YAAM/qG,OAAO,KAAKw4D,qBAAsB;AACxC,YAAMqH,SAAS,KAAKlH,eAAe34D,IAAI;AACvC,aACE6/D,WAAmC,OACnC,KAAKmgC,0BAA0BngC,QAAQ7/D,IAAI;AAAA,IAE/C;AAAA,IAEAgrG,mBAA4B;AAC1B,YAAM;AAAA,QAAEtsH;AAAAA,QAAMm4E;AAAAA,MAAY,IAAI,KAAKoB,UAAW;AAC9C,UAAIv5E,SAAI,OAAe,CAACm4E,aAAa;AAEnC,eAAO;AAAA,MACT,WAAWzH,kBAAkB1wE,IAAI,KAAK,CAAC,KAAKyhF,sBAAqB,GAAI;AACnE,aAAKtG,aAAa,4BAA4B;AAC9C,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEAoxC,mBAA4B;AAC1B,UAAIjrG,OAAO,KAAKw4D,qBAAsB;AACtC,UAAI,KAAKkH,qBAAqB1/D,MAAM,OAAO,GAAG;AAC5CA,eAAO,KAAKy4D,0BAA0Bz4D,OAAO,CAAC;AAC9C,cAAM6/D,SAAS,KAAKlH,eAAe34D,IAAI;AACvC,YAAI,KAAKggG,0BAA0BngC,QAAQ7/D,IAAI,GAAG;AAChD,eAAK65D,aAAa,4BAA4B;AAC9C,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAGAqxC,kBAA8B;AAC5B,aAAO,KAAKp9B,mBACVq9B,IACqC,IAAA,KAKvC;AAAA,IACF;AAAA,IAGAC,yBAAqC;AACnC,aAAO,KAAKt9B,mBACVq9B,SAEG,CAAC,KAAKz+H,QAAQ4yE,UAAU,KAAKpzE,MAAMoO,SAChC,IACuC,EAC/C;AAAA,IACF;AAAA,IAEA6lH,gDAEEkL,uBAAgC,OAChC;AACA,UAAIliG,QAA4D;AAChE,UAAI,KAAKz8B,QAAQ4yE,UAAU,CAAC,KAAKpzE,MAAMoO,QAAQ;AAC7C6uB,iBAAoD;AACpD,YAAIkiG,sBAAsB;AACxBliG,mBAAgD;AAAA,QAClD;AAAA,MACF;AACA,aAAO,KAAK2kE,mBAAmB3kE,KAAK;AAAA,IACtC;AAAA,IASAmiG,iBAA6B;AAC3B,aAAO,KAAKx9B,mBAAkB,CAAiC;AAAA,IACjE;AAAA,IAIAA,mBAEE3kE,OAOyB;AACzB,UAAIN,cAAmC;AAEvC,UAAI,KAAKhqB,MAAK,EAAM,GAAG;AACrBgqB,QAAAA,cAAa,KAAKi9F,gBAAgB,IAAI;AAAA,MACxC;AACA,aAAO,KAAK5J,sBAAsB/yF,OAAON,WAAU;AAAA,IACrD;AAAA,IAEAqzF,sBAEE/yF,OACAN,aACa;AACb,YAAMwwF,YAAY,KAAKntH,MAAMwS;AAC7B,YAAMnR,QAAO,KAAKi1E,UAAW;AAC7B,YAAM+oD,mBAAmB,CAAC,EAAEpiG;AAC5B,YAAMqiG,2BAA2B,CAAC,EAChCriG;AAEF,YAAMq4C,WAAWr4C,QAA4C;AAM7D,cAAQkwF,WAAS;AAAA,QACf,KAAA;AACE,iBAAO,KAAKoS,4BAA4Bl+H,OAAoB,IAAI;AAAA,QAClE,KAAA;AACE,iBAAO,KAAKk+H,4BAA4Bl+H,OAAoB,KAAK;AAAA,QACnE,KAAA;AACE,iBAAO,KAAKm+H,uBAAuBn+H,KAAmC;AAAA,QACxE,KAAA;AACE,iBAAO,KAAKo+H,sBAAsBp+H,KAAkC;AAAA,QACtE,KAAA;AACE,iBAAO,KAAKq+H,kBAAkBr+H,KAA8B;AAAA,QAC9D,KAAA;AACE,cAAI,KAAKgrF,kBAAmB,SAAoB;AAChD,cAAI,CAACizC,0BAA0B;AAC7B,iBAAK3nD,MACH,KAAK33E,MAAMoO,SACP+jE,OAAOxC,iBACP,KAAKnvE,QAAQ4yE,SACXjB,OAAO1F,uBACP0F,OAAO3F,gBACb,KAAKxsE,MAAM4U,QACb;AAAA,UACF;AACA,iBAAO,KAAKy4G,uBACVhsH,OACA,OACA,CAACg+H,oBAAoBC,wBACvB;AAAA,QACF,KAAA;AACE,cAAI,CAACD,iBAAkB,MAAKz1D,WAAY;AACxC,iBAAO,KAAK0jD,WACV,KAAKyE,oBACHp1F,aACAt7B,KACF,GACA,IACF;AAAA,QAEF,KAAA;AACE,iBAAO,KAAKs+H,iBAAiBt+H,KAA6B;AAAA,QAC5D,KAAA;AACE,iBAAO,KAAKu+H,qBAAqBv+H,KAAiC;AAAA,QACpE,KAAA;AACE,iBAAO,KAAKw+H,qBAAqBx+H,KAAiC;AAAA,QACpE,KAAA;AACE,iBAAO,KAAKy+H,oBAAoBz+H,KAAgC;AAAA,QAClE,KAAA;AACE,iBAAO,KAAK0+H,kBAAkB1+H,KAA8B;AAAA,QAE9D,KAAA;AAEE,cAAI,CAAC,KAAKrB,MAAM2qF,eAAe,KAAKo0C,iBAAgB,GAAI;AACtD,gBAAI,CAAC,KAAK1G,wBAAwB;AAChC,mBAAK1gD,MAAMxF,OAAO5M,6BAA6BlkE,KAAI;AAAA,YACrD,WAAW,CAACg+H,kBAAkB;AAC5B,mBAAK1nD,MAAMxF,OAAO3E,8BAA8BnsE,KAAI;AAAA,YACtD;AACA,iBAAKyyB,KAAM;AACX,mBAAO,KAAKy5F,kBACVlsH,OACA,aACF;AAAA,UACF;AACA;AAAA,QACF,KAAA;AAEE,cACE,KAAKrB,MAAM2qF,eACX,CAAC,KAAKk0C,2CAA0C,GAChD;AACA;AAAA,UACF;AACA,eAAKlxC,aAAa,4BAA4B;AAC9C,cAAI,CAAC,KAAKxtB,MAAMvxD,YAAY,KAAKuxD,MAAM8kB,YAAY;AACjD,iBAAKtN,MAAMxF,OAAOnE,4BAA4B,KAAKhuE,MAAM4U,QAAQ;AAAA,UACnE,WAAW,CAACyqH,kBAAkB;AAC5B,iBAAK1nD,MAAMxF,OAAO3E,8BAA8B,KAAKxtE,MAAM4U,QAAQ;AAAA,UACrE;AACA,iBAAO,KAAK24G,kBACVlsH,OACA,OACF;AAAA,QACF,KAAA,KAAc;AACZ,cAAI,KAAKrB,MAAM2qF,aAAa;AAC1B;AAAA,UACF;AAGA,gBAAM72D,OAAO,KAAKo4D,eAAgB;AAClC,gBAAMyH,SAAS,KAAKlH,eAAe34D,IAAI;AACvC,cAAI6/D,eAAwC;AAC1C,gBAAI,CAAC0rC,oBAAoB,KAAKprC,wBAAyB;AACvD,gBACE,CAAC,KAAK6/B,0BAA0BngC,QAAQ7/D,IAAI,KAC5C6/D,WAAM,KACN;AACA;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,QAEA,KAAA,IAAgB;AACd,cAAI,CAAC0rC,kBAAkB;AACrB,iBAAK1nD,MAAMxF,OAAO3E,8BAA8B,KAAKxtE,MAAM4U,QAAQ;AAAA,UACrE;AAAA,QACF;AAAA,QAEA,KAAA,IAAc;AACZ,gBAAM0oB,OAAO,KAAKt9B,MAAMkB;AACxB,iBAAO,KAAKqsH,kBACVlsH,OACAi8B,IACF;AAAA,QACF;AAAA,QACA,KAAA;AACE,iBAAO,KAAK0iG,oBAAoB3+H,KAAgC;AAAA,QAClE,KAAA;AACE,iBAAO,KAAK4+H,mBAAmB5+H,KAA+B;AAAA,QAChE,KAAA;AACE,iBAAO,KAAK8yH,WAAY;AAAA,QAC1B,KAAA;AACE,iBAAO,KAAK+L,oBAAoB7+H,KAAgC;AAAA,QAClE,KAAA,IAAiB;AACf,gBAAM8+H,oBAAoB,KAAK9zC,kBAAmB;AAClD,cACE8zC,sBAAiB,MACjBA,0BACA;AACA;AAAA,UACF;AAAA,QACF;AAAA,QAEA,KAAA,IAAiB;AACf,cACE,EAAE,KAAKzsD,oBACP,CAAC4B,UACD;AACA,iBAAKqC,MAAMxF,OAAO9E,wBAAwB,KAAKrtE,MAAM4U,QAAQ;AAAA,UAC/D;AAEA,eAAKkf,KAAM;AAEX,cAAIsmC;AACJ,cAAI+yD,kBAA0B;AAC5B/yD,qBAAS,KAAK2iC,YAAY17F,KAAmC;AAAA,UAC/D,OAAO;AACL+4D,qBAAS,KAAK4d,YACZ32E,OAKAs7B,WACF;AAAA,UACF;AAEA,eAAKymE,wBAAwBhpC,MAAM;AAEnC,iBAAOA;AAAAA,QACT;AAAA,QAEA,SAAS;AACP,cAAI,KAAKgmE,mBAAmB;AAC1B,gBAAI,CAACf,kBAAkB;AACrB,mBAAK1nD,MACHxF,OAAOhN,uCACP,KAAKnlE,MAAM4U,QACb;AAAA,YACF;AACA,iBAAKkf,KAAM;AACX,mBAAO,KAAKu5F,uBACVhsH,OACA,MACA,CAACg+H,oBAAoBC,wBACvB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAOA,YAAMe,YAAY,KAAKrgI,MAAMkB;AAC7B,YAAM6gG,OAAO,KAAKvG,gBAAiB;AAEnC,UACEtY,kBAAkBiqC,SAAS,KAC3BprB,KAAKvvF,SAAS,gBACd,KAAKo5E,IAAG,EAAS,GACjB;AACA,eAAO,KAAK00C,sBACVj/H,OACAg/H,WACAt+B,MACA9kE,KACF;AAAA,MACF,OAAO;AACL,eAAO,KAAK6kE,yBACVzgG,OACA0gG,MACAplE,WACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAymE,wBAAwB/hG,OAAoB;AAC1C,UACE,EAAE,KAAKqyE,cAAW,MAClB,CAAC,KAAK9kE,UACN;AACA,aAAK+oE,MAAMxF,OAAOzN,qBAAqBrjE,KAAI;AAAA,MAC7C;AAAA,IACF;AAAA,IAEAk/H,gCAAyC;AACvC,UAAI,KAAKt5C,UAAU,mBAAmB,EAAG,QAAO;AAChD,aACE,KAAKA,UAAU,YAAY,KAC3B,KAAKtR,gBAAgB,cAAc,wBAAwB,MAAM;AAAA,IAErE;AAAA,IAQAo8C,oBACEyO,iBACAC,WACAC,YACG;AACH,UAAIF,iBAAiB;AAAA,YAAAG;AACnB,aAAAA,wBAAIF,UAAU9jG,eAAVgkG,QAAAA,sBAAsBnzH,QAAQ;AAGhC,cACE,OAAO,KAAKmoE,gBACV,cACA,wBACF,MAAM,WACN;AAIA,iBAAKgC,MACHxF,OAAO9L,6BACPo6D,UAAU9jG,WAAW,CAAC,CACxB;AAAA,UACF;AACA8jG,oBAAU9jG,WAAWnD,QAAQ,GAAGgnG,eAAe;AAAA,QACjD,OAAO;AACLC,oBAAU9jG,aAAa6jG;AAAAA,QACzB;AACA,aAAKjqD,2BAA2BkqD,WAAWD,gBAAgB,CAAC,CAAC;AAC7D,YAAIE,WAAY,MAAKnqD,2BAA2BmqD,YAAYD,SAAS;AAAA,MACvE;AACA,aAAOA;AAAAA,IACT;AAAA,IAEAnP,0BAAmC;AACjC,aAAO,KAAK3+G,MAAK,EAAU;AAAA,IAC7B;AAAA,IAEAinH,gBAA8BgH,aAAsC;AAClE,YAAMjkG,cAAa,CAAE;AACrB,SAAG;AACDA,QAAAA,YAAWl0B,KAAK,KAAK+1G,gBAAgB;AAAA,MACvC,SAAS,KAAK7rG,QAAW;AAEzB,UAAI,KAAKA,MAAK,EAAW,GAAG;AAC1B,YAAI,CAACiuH,aAAa;AAChB,eAAKh3D,WAAY;AAAA,QACnB;AAEA,YAAI,CAAC,KAAK22D,iCAAiC;AACzC,eAAK5oD,MAAMxF,OAAO5L,sBAAsB,KAAKvmE,MAAM4U,QAAQ;AAAA,QAC7D;AAAA,MACD,WAAU,CAAC,KAAK08G,2BAA2B;AAC1C,cAAM,KAAK35C,MAAMxF,OAAO5E,4BAA4B,KAAKvtE,MAAM4U,QAAQ;AAAA,MACzE;AAEA,aAAO+nB;AAAAA,IACT;AAAA,IAEA6hF,iBAA0C;AACxC,WAAK9tB,gBAAgB,CAAC,cAAc,mBAAmB,CAAC;AAExD,YAAMrvF,QAAO,KAAKi1E,UAAwB;AAC1C,WAAKxiD,KAAM;AAEX,UAAI,KAAKmzD,UAAU,YAAY,GAAG;AAChC,cAAMryE,WAAW,KAAK5U,MAAM4U;AAC5B,YAAImtF;AAEJ,YAAI,KAAKpvF,MAAK,EAAU,GAAG;AACzB,gBAAMiC,YAAW,KAAK5U,MAAM4U;AAC5B,eAAKkf,KAAM;AACXiuE,iBAAO,KAAKvG,gBAAiB;AAC7B,eAAK7wF,OAAM,EAAU;AACrBo3F,iBAAO,KAAKo5B,gBAAgBvmH,WAAUmtF,IAAI;AAE1C,gBAAM8+B,iBAAiB,KAAK7gI,MAAM4U;AAClCvT,UAAAA,MAAK05B,aAAa,KAAKs2F,6BAA6BtvB,MAAMntF,SAAQ;AAClE,cACE,KAAK+gE,gBAAgB,cAAc,wBAAwB,MACzD,SACFt0E,MAAK05B,eAAegnE,MACpB;AACA,iBAAKpqB,MACHxF,OAAOhM,sCACP06D,cACF;AAAA,UACF;AAAA,QACF,OAAO;AACL9+B,iBAAO,KAAKlG,gBAAgB,KAAK;AAEjC,iBAAO,KAAKjQ,IAAG,EAAO,GAAG;AACvB,kBAAMvqF,QAAO,KAAKq1F,YAAgC9hF,QAAQ;AAC1DvT,YAAAA,MAAKgF,SAAS07F;AACd,gBAAI,KAAKpvF,MAAK,GAAe,GAAG;AAC9B,mBAAK4kE,WAAWC,eACd,KAAKx3E,MAAMkB,OACX,KAAKlB,MAAM4U,QACb;AACAvT,cAAAA,MAAK+uB,WAAW,KAAKslD,iBAAkB;AAAA,YACzC,OAAO;AACLr0E,cAAAA,MAAK+uB,WAAW,KAAKyrE,gBAAgB,IAAI;AAAA,YAC3C;AACAx6F,YAAAA,MAAKy7B,WAAW;AAChBilE,mBAAO,KAAKvrB,WAAWn1E,OAAM,kBAAkB;AAAA,UACjD;AAEAA,UAAAA,MAAK05B,aAAa,KAAKs2F,6BAA6BtvB,MAAMntF,QAAQ;AAAA,QACpE;AAAA,MACF,OAAO;AACLvT,QAAAA,MAAK05B,aAAa,KAAK49F,oBAAqB;AAAA,MAC9C;AACA,aAAO,KAAKniD,WAAWn1E,OAAM,WAAW;AAAA,IAC1C;AAAA,IAEAgwH,6BAEEtvB,MACAntF,UACc;AACd,UAAI,KAAKg3E,IAAG,EAAU,GAAG;AACvB,cAAMvqF,QAAO,KAAKq1F,YAA8B9hF,QAAQ;AACxDvT,QAAAA,MAAKs3B,SAASopE;AACd1gG,QAAAA,MAAK+5B,YAAY,KAAK2sE,+BAAsC;AAC5D,aAAK3D,iBAAiB/iG,MAAK+5B,SAAS;AACpC,eAAO,KAAKo7C,WAAWn1E,OAAM,gBAAgB;AAAA,MAC/C;AAEA,aAAO0gG;AAAAA,IACT;AAAA,IAUAw9B,4BACEl+H,OACA2yH,SACwC;AACxC,WAAKlgG,KAAM;AAEX,UAAI,KAAKogE,oBAAoB;AAC3B7yF,QAAAA,MAAK85B,QAAQ;AAAA,MACf,OAAO;AACL95B,QAAAA,MAAK85B,QAAQ,KAAK0gE,gBAAiB;AACnC,aAAK1H,UAAW;AAAA,MAClB;AAEA,WAAK4/B,oBAAoB1yH,OAAM2yH,OAAO;AAEtC,aAAO,KAAKx9C,WACVn1E,OACA2yH,UAAU,mBAAmB,mBAC/B;AAAA,IACF;AAAA,IAEAD,oBACE1yH,OACA2yH,SACA;AACA,UAAIzmH;AACJ,WAAKA,IAAI,GAAGA,IAAI,KAAKvN,MAAM4pF,OAAOp8E,QAAQ,EAAED,GAAG;AAC7C,cAAMuzH,MAAM,KAAK9gI,MAAM4pF,OAAOr8E,CAAC;AAC/B,YAAIlM,MAAK85B,SAAS,QAAQ2lG,IAAIhzH,SAASzM,MAAK85B,MAAMrtB,MAAM;AACtD,cAAIgzH,IAAIxjG,QAAQ,SAAS02F,WAAW8M,IAAIxjG,SAAI,IAA0B;AACpE;AAAA,UACF;AACA,cAAIj8B,MAAK85B,SAAS64F,QAAS;AAAA,QAC7B;AAAA,MACF;AACA,UAAIzmH,MAAM,KAAKvN,MAAM4pF,OAAOp8E,QAAQ;AAClC,cAAMgF,OAAOwhH,UAAU,mBAAmB;AAC1C,aAAKr8C,MAAMxF,OAAOrK,sBAAsBzmE,OAAM;AAAA,UAAEmR;AAAAA,QAAK,CAAC;AAAA,MACxD;AAAA,IACF;AAAA,IAEAgtH,uBACEn+H,OACqB;AACrB,WAAKyyB,KAAM;AACX,WAAKqgE,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEA0/H,wBAAkD;AAChD,WAAKp2H,OAAM,EAAU;AACrB,YAAM+pB,MAAM,KAAK8mE,gBAAiB;AAClC,WAAK7wF,OAAM,EAAU;AACrB,aAAO+pB;AAAAA,IACT;AAAA,IAGA+qG,sBAEEp+H,OACoB;AACpB,WAAKyyB,KAAM;AACX,WAAK9zB,MAAM4pF,OAAOnhF,KAAK+0H,SAAS;AAGhCn8H,MAAAA,MAAK65B,OAIH,KAAK+hG,mCAAmC,MAEtC,KAAKmC,gBACP;AAEF,WAAKp/H,MAAM4pF,OAAOrsB,IAAK;AAEvB,WAAK5yD,OAAM,EAAU;AACrBtJ,MAAAA,MAAKvB,OAAO,KAAKihI,sBAAuB;AACxC,WAAKn1C,IAAG,EAAQ;AAChB,aAAO,KAAKpV,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAUAq+H,kBAEEr+H,OACW;AACX,WAAKyyB,KAAM;AACX,WAAK9zB,MAAM4pF,OAAOnhF,KAAK+0H,SAAS;AAEhC,UAAIwD,UAAU;AAEd,UAAI,KAAKztC,aAAsB,EAAA,KAAK,KAAK8kC,qBAAoB,GAAI;AAC/D2I,kBAAU,KAAKhhI,MAAM4U;AACrB,aAAKkf,KAAM;AAAA,MACb;AACA,WAAKqsC,MAAMtF,OAAqB;AAChC,WAAKlwD,OAAM,EAAU;AAErB,UAAI,KAAKgI,MAAK,EAAQ,GAAG;AACvB,YAAIquH,YAAY,MAAM;AACpB,eAAKp3D,WAAWo3D,OAAO;AAAA,QACzB;AACA,eAAO,KAAKC,SAAS5/H,OAAgC,IAAI;AAAA,MAC3D;AAEA,YAAM6/H,gBAAgB,KAAK3tC,gBAAoB;AAC/C;AACE,cAAM4tC,uBACJ,KAAK5tC,aAAY,EAAU,KAAK,KAAKwrC,iBAAkB;AACzD,cAAMqC,4BACJD,wBACC,KAAK5tC,aAAsB,GAAA,KAAK,KAAKurC,iBAAmB;AAC3D,cAAMuC,eACHH,iBAAiB,KAAKxC,wBAAyB,KAChD0C;AAEF,YAAI,KAAKzuH,MAAK,EAAQ,KAAK,KAAKA,MAAK,EAAU,KAAK0uH,cAAc;AAChE,gBAAMC,WAAW,KAAKhrD,UAAkC;AACxD,cAAIh5C;AACJ,cAAI6jG,sBAAsB;AACxB7jG,mBAAO;AACP,gBAAI,CAAC,KAAK+6F,wBAAwB;AAChC,mBAAK1gD,MAAMxF,OAAO5M,6BAA6B,KAAKvlE,MAAM4U,QAAQ;AAAA,YACpE;AACA,iBAAKkf,KAAM;AAAA,UACb,OAAO;AACLwJ,mBAAO,KAAKt9B,MAAMkB;AAAAA,UACpB;AACA,eAAK4yB,KAAM;AACX,eAAKytG,SAASD,UAAU,MAAMhkG,IAAI;AAClC,gBAAMzB,QAAO,KAAK26C,WAAW8qD,UAAU,qBAAqB;AAE5D,gBAAME,UAAU,KAAK7uH,QAAY;AACjC,cAAI6uH,WAAWJ,2BAA2B;AACxC,iBAAKzpD,MAAMxF,OAAOzK,YAAY7rC,KAAI;AAAA,UACpC;AACA,eACG2lG,WAAW,KAAKjuC,aAAmB,GAAA,MACpC13D,MAAKqC,aAAa1wB,WAAW,GAC7B;AACA,mBAAO,KAAKi0H,WAAWpgI,OAA2Bw6B,OAAMmlG,OAAO;AAAA,UACjE;AACA,cAAIA,YAAY,MAAM;AACpB,iBAAKp3D,WAAWo3D,OAAO;AAAA,UACzB;AACA,iBAAO,KAAKC,SAAS5/H,OAAgCw6B,KAAI;AAAA,QAC3D;AAAA,MACF;AAIA,YAAM6lG,kBAAkB,KAAKnuC,eAAsB;AAEnD,YAAMvc,sBAAsB,IAAIif,iBAAkB;AAClD,YAAMp6D,OAAO,KAAK2/D,gBAAgB,MAAMxkB,mBAAmB;AAC3D,YAAM2qD,UAAU,KAAKpuC,gBAAmB;AACxC,UAAIouC,SAAS;AAEX,YAAIT,eAAe;AACjB,eAAKvpD,MAAMxF,OAAOvK,UAAU/rC,IAAI;AAAA,QAClC;AAEA,YAEEmlG,YAAY,QACZU,mBACA7lG,KAAKrpB,SAAS,cACd;AAKA,eAAKmlE,MAAMxF,OAAOxK,YAAY9rC,IAAI;AAAA,QACpC;AAAA,MACF;AACA,UAAI8lG,WAAW,KAAKhvH,MAAK,EAAO,GAAG;AACjC,aAAKqjF,0BAA0Bhf,mBAAmB;AAClD,aAAKK,aAAax7C,MAAkB,IAAI;AACxC,cAAMrpB,OAAOmvH,UAAU,mBAAmB;AAC1C,aAAK9iB,UAAUhjF,MAAM;AAAA,UAAErpB;AAAAA,QAAK,CAAC;AAC7B,eAAO,KAAKivH,WACVpgI,OAEAw6B,MACAmlG,OACF;AAAA,MACF,OAAO;AACL,aAAKrsC,sBAAsB3d,qBAAqB,IAAI;AAAA,MACtD;AACA,UAAIgqD,YAAY,MAAM;AACpB,aAAKp3D,WAAWo3D,OAAO;AAAA,MACzB;AACA,aAAO,KAAKC,SAAS5/H,OAAgCw6B,IAAI;AAAA,IAC3D;AAAA,IAGAwxF,uBAEEhsH,OACAyzE,SACA8sD,sBACuB;AACvB,WAAK9tG,KAAM;AACX,aAAO,KAAK6mG,cACVt5H,OACAwgI,KACGD,uBAA8D,IAAA,MAC9D9sD,UAAoC,IAAA,EACzC;AAAA,IACF;AAAA,IAGA6qD,iBAA+Bt+H,OAA6B;AAC1D,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAKvB,OAAO,KAAKihI,sBAAuB;AAGxC1/H,MAAAA,MAAKm6B,aAAa,KAAKy4F,gDAAiD;AACxE5yH,MAAAA,MAAKo6B,YAAY,KAAKmwD,IAAG,EAAS,IAC9B,KAAKqoC,gDAA+C,IACpD;AACJ,aAAO,KAAKz9C,WAAWn1E,OAAM,aAAa;AAAA,IAC5C;AAAA,IAEAu+H,qBAAmCv+H,OAAiC;AAClE,UACE,CAAC,KAAKs0F,UAAUzC,aAChB,EAAE,KAAKxf,cAAW,IAClB;AACA,aAAKiE,MAAMxF,OAAOnK,eAAe,KAAKhoE,MAAM4U,QAAQ;AAAA,MACtD;AAEA,WAAKkf,KAAM;AAMX,UAAI,KAAKogE,oBAAoB;AAC3B7yF,QAAAA,MAAKm8B,WAAW;AAAA,MAClB,OAAO;AACLn8B,QAAAA,MAAKm8B,WAAW,KAAKg+D,gBAAiB;AACtC,aAAKrH,UAAW;AAAA,MAClB;AAEA,aAAO,KAAK3d,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAGAw+H,qBAAmCx+H,OAAiC;AAClE,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAKs8B,eAAe,KAAKojG,sBAAuB;AAChD,YAAMnjG,QAAqCv8B,MAAKu8B,QAAQ,CAAG;AAC3D,WAAKjzB,OAAM,CAAU;AACrB,WAAK3K,MAAM4pF,OAAOnhF,KAAKg1H,WAAW;AAClC,WAAKt9D,MAAMtF,OAAqB;AAMhC,UAAIinE;AACJ,eAASC,YAAY,CAAC,KAAKpvH,MAAe,CAAA,KAAK;AAC7C,YAAI,KAAKA,MAAc,EAAA,KAAK,KAAKA,MAAiB,EAAA,GAAG;AACnD,gBAAMqvH,SAAS,KAAKrvH,QAAc;AAClC,cAAImvH,IAAK,MAAKtrD,WAAWsrD,KAAK,YAAY;AAE1ClkG,gBAAMn1B,KAAMq5H,MAAM,KAAKxrD,UAAS,CAAiB;AACjDwrD,cAAItmG,aAAa,CAAE;AACnB,eAAK1H,KAAM;AACX,cAAIkuG,QAAQ;AACVF,gBAAIhiI,OAAO,KAAK07F,gBAAiB;AAAA,UACnC,OAAO;AACL,gBAAIumC,YAAY;AACd,mBAAKpqD,MACHxF,OAAO9G,0BACP,KAAKrrE,MAAMk4E,eACb;AAAA,YACF;AACA6pD,yBAAa;AACbD,gBAAIhiI,OAAO;AAAA,UACb;AACA,eAAK6K,OAAM,EAAS;AAAA,QACtB,OAAO;AACL,cAAIm3H,KAAK;AACPA,gBAAItmG,WAAW/yB,KAAK,KAAKy2H,uBAAsB,CAAE;AAAA,UACnD,OAAO;AACL,iBAAKt1D,WAAY;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AACA,WAAKzJ,MAAM7B,KAAM;AACjB,UAAIwjE,IAAK,MAAKtrD,WAAWsrD,KAAK,YAAY;AAC1C,WAAKhuG,KAAM;AACX,WAAK9zB,MAAM4pF,OAAOrsB,IAAK;AACvB,aAAO,KAAKiZ,WAAWn1E,OAAM,iBAAiB;AAAA,IAChD;AAAA,IAEAy+H,oBAAkCz+H,OAAgC;AAChE,WAAKyyB,KAAM;AACX,UAAI,KAAKkgE,yBAAyB;AAChC,aAAKrc,MAAMxF,OAAO7G,mBAAmB,KAAKtrE,MAAM84E,aAAa;AAAA,MAC/D;AACAz3E,MAAAA,MAAKm8B,WAAW,KAAKg+D,gBAAiB;AACtC,WAAKrH,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEAswH,wBAA+C;AAC7C,YAAMp2F,QAAQ,KAAKgrE,iBAAkB;AAErC,WAAKpmC,MAAMtF,MACT,KAAKr6D,QAAQ4yE,UAAU73C,MAAM/oB,SAAS,eAAY,IAE9C,CACN;AACA,WAAKqsG,UACHtjF,OACA;AAAA,QAAE/oB,MAAM;AAAA,MAAe,IAEzB;AAEA,aAAO+oB;AAAAA,IACT;AAAA,IAEAwkG,kBAEE1+H,OACgB;AAChB,WAAKyyB,KAAM;AAEXzyB,MAAAA,MAAKw8B,QAAQ,KAAKs2F,WAAY;AAC9B9yH,MAAAA,MAAKy8B,UAAU;AAEf,UAAI,KAAKnrB,MAAK,EAAU,GAAG;AACzB,cAAMsvH,SAAS,KAAK3rD,UAA0B;AAC9C,aAAKxiD,KAAM;AACX,YAAI,KAAKnhB,MAAK,EAAU,GAAG;AACzB,eAAKhI,OAAM,EAAU;AACrBs3H,iBAAO1mG,QAAQ,KAAKo2F,sBAAuB;AAC3C,eAAKhnH,OAAM,EAAU;AAAA,QACvB,OAAO;AACLs3H,iBAAO1mG,QAAQ;AACf,eAAK4kC,MAAMtF,OAAqB;AAAA,QAClC;AAGAonE,eAAO/mG,OAGL,KAAK+hG,mCAAmC,MAEtC,KAAK9I,WAAW,OAAO,KAAK,CAC9B;AAEF,aAAKh0D,MAAM7B,KAAM;AACjBj9D,QAAAA,MAAKy8B,UAAU,KAAK04C,WAAWyrD,QAAQ,aAAa;AAAA,MACtD;AAEA5gI,MAAAA,MAAK08B,YAAY,KAAK6tD,IAAG,EAAY,IAAI,KAAKuoC,WAAU,IAAK;AAE7D,UAAI,CAAC9yH,MAAKy8B,WAAW,CAACz8B,MAAK08B,WAAW;AACpC,aAAK45C,MAAMxF,OAAO5G,kBAAkBlqE,KAAI;AAAA,MAC1C;AAEA,aAAO,KAAKm1E,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAIAksH,kBAEElsH,OACAi8B,MACAwyF,0BAAmC,OACZ;AACvB,WAAKh8F,KAAM;AACX,WAAKytG,SAASlgI,OAAM,OAAOi8B,MAAMwyF,uBAAuB;AACxD,WAAK37B,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAGA2+H,oBAEE3+H,OACkB;AAClB,WAAKyyB,KAAM;AACXzyB,MAAAA,MAAKvB,OAAO,KAAKihI,sBAAuB;AACxC,WAAK/gI,MAAM4pF,OAAOnhF,KAAK+0H,SAAS;AAGhCn8H,MAAAA,MAAK65B,OAIH,KAAK+hG,mCAAmC,MAEtC,KAAKmC,gBACP;AAEF,WAAKp/H,MAAM4pF,OAAOrsB,IAAK;AAEvB,aAAO,KAAKiZ,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEA4+H,mBAEE5+H,OACiB;AACjB,UAAI,KAAKrB,MAAMoO,QAAQ;AACrB,aAAKupE,MAAMxF,OAAOrC,YAAY,KAAK9vE,MAAM4U,QAAQ;AAAA,MACnD;AACA,WAAKkf,KAAM;AACXzyB,MAAAA,MAAKgF,SAAS,KAAK06H,sBAAuB;AAG1C1/H,MAAAA,MAAK65B,OAKH,KAAK+hG,mCAAmC,MAEtC,KAAKmC,gBACP;AAEF,aAAO,KAAK5oD,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEA6+H,oBAAoB7+H,OAAkD;AACpE,WAAKyyB,KAAM;AACX,aAAO,KAAK0iD,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAGAi/H,sBAEEj/H,OACAg/H,WACAt+B,MACA9kE,OACoB;AACpB,iBAAW9B,SAAS,KAAKn7B,MAAM4pF,QAAQ;AACrC,YAAIzuD,MAAMrtB,SAASuyH,WAAW;AAC5B,eAAK1oD,MAAMxF,OAAOjI,oBAAoB63B,MAAM;AAAA,YAC1C53B,WAAWk2D;AAAAA,UACb,CAAC;AAAA,QACH;AAAA,MACF;AAEA,YAAM/iG,OAAOomD,YAAY,KAAK1jF,MAAMwS,IAAI,IAAC,IAErC,KAAKG,MAAK,EAAW,QAEnB;AACN,eAASpF,IAAI,KAAKvN,MAAM4pF,OAAOp8E,SAAS,GAAGD,KAAK,GAAGA,KAAK;AACtD,cAAM4tB,QAAQ,KAAKn7B,MAAM4pF,OAAOr8E,CAAC;AACjC,YAAI4tB,MAAM+mG,mBAAmB7gI,MAAK0T,OAAO;AACvComB,gBAAM+mG,iBAAiB,KAAKr7C,kBAAkB,KAAK7mF,MAAM+U,KAAK;AAC9DomB,gBAAMmC,OAAOA;AAAAA,QACf,OAAO;AACL;AAAA,QACF;AAAA,MACF;AAEA,WAAKt9B,MAAM4pF,OAAOnhF,KAAK;AAAA,QACrBqF,MAAMuyH;AAAAA,QACN/iG;AAAAA,QACA4kG,gBAAgB,KAAKr7C,kBAAkB,KAAK7mF,MAAM+U,KAAK;AAAA,MACzD,CAAC;AAED1T,MAAAA,MAAK65B,OACH+B,QAAK,IACD,KAAKg3F,gDAAgD,IAAI,IACzD,KAAKmL,eAAgB;AAE3B,WAAKp/H,MAAM4pF,OAAOrsB,IAAK;AACvBl8D,MAAAA,MAAK85B,QAAQ4mE;AACb,aAAO,KAAKvrB,WAAWn1E,OAAM,kBAAkB;AAAA,IACjD;AAAA,IAEAygG,yBACEzgG,OACA0gG,MAEAplE,aACA;AACAt7B,MAAAA,MAAK05B,aAAagnE;AAClB,WAAK5N,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,qBAAqB;AAAA,IACpD;AAAA,IAMA8yH,WAEE9+C,kBAA2B,OAC3B++C,wBAAiC,MACjC7+C,iBACkB;AAClB,YAAMl0E,QAAO,KAAKi1E,UAA6B;AAC/C,UAAIjB,iBAAiB;AACnB,aAAKr1E,MAAM+pF,aAAa6C,MAAO;AAAA,MACjC;AACA,WAAKjiF,OAAM,CAAU;AACrB,UAAIypH,uBAAuB;AACzB,aAAKj0D,MAAMtF,OAAqB;AAAA,MAClC;AACA,WAAKua,eACH/zE,OACAg0E,iBACA,OAEAE,GAAAA,eACF;AACA,UAAI6+C,uBAAuB;AACzB,aAAKj0D,MAAM7B,KAAM;AAAA,MACnB;AACA,aAAO,KAAKkY,WAAWn1E,OAAM,gBAAgB;AAAA,IAC/C;AAAA,IAEA4zE,iBAAiB/R,MAA4B;AAC3C,aACEA,KAAK1wD,SAAS,yBACd0wD,KAAKnoC,WAAWvoB,SAAS,mBACzB,CAAC0wD,KAAKnoC,WAAWy9B,MAAM2c;AAAAA,IAE3B;AAAA,IAEAC,eAEE/zE,OACAg0E,iBACAC,UACArgE,KACAsgE,iBACM;AACN,YAAMr6C,OAAsC75B,MAAK65B,OAAO,CAAG;AAC3D,YAAMD,aAAkD55B,MAAK45B,aAC3D,CAAG;AACL,WAAKqxF,4BACHpxF,MACAm6C,kBAAkBp6C,aAAavnB,QAC/B4hE,UACArgE,KACAsgE,eACF;AAAA,IACF;AAAA,IAKA+2C,4BAEEpxF,MACAD,YACAq6C,UACArgE,KACAsgE,iBACM;AACN,YAAMs8C,YAAY,KAAK7xH,MAAMoO;AAC7B,UAAIkuH,yBAAyB;AAC7B,UAAI6F,qBAAqB;AAEzB,aAAO,CAAC,KAAKxvH,MAAMsC,GAAG,GAAG;AACvB,cAAMiuD,OAAOoS,WACT,KAAK0pD,gBAAiB,IACtB,KAAKE,uBAAwB;AAEjC,YAAIjkG,cAAc,CAACknG,oBAAoB;AACrC,cAAI,KAAKltD,iBAAiB/R,IAAI,GAAG;AAC/B,kBAAM19B,YAAY,KAAKi5F,gBAAgBv7D,IAAI;AAC3CjoC,uBAAWxyB,KAAK+8B,SAAS;AAEzB,gBACE,CAAC82F,0BACD92F,UAAUtkC,MAAMA,UAAU,cAC1B;AACAo7H,uCAAyB;AACzB,mBAAK5vC,UAAU,IAAI;AAAA,YACrB;AAEA;AAAA,UACF;AACAy1C,+BAAqB;AAErB,eAAKniI,MAAM+pF,aAAa6C,MAAO;AAAA,QACjC;AACA1xD,aAAKzyB,KAAKy6D,IAAI;AAAA,MAChB;AAEAqS,yBAAe,QAAfA,gBAAiB9kE,KAAK,MAAM6rH,sBAAsB;AAElD,UAAI,CAACzK,WAAW;AACd,aAAKnlC,UAAU,KAAK;AAAA,MACtB;AAEA,WAAK54D,KAAM;AAAA,IACb;AAAA,IAMAmtG,SAEE5/H,OACAw6B,MACgB;AAChBx6B,MAAAA,MAAKw6B,OAAOA;AACZ,WAAKs4D,UAAyB,KAAK;AACnC9yF,MAAAA,MAAKvB,OAAO,KAAK6S,MAAK,EAAQ,IAAI,OAAO,KAAK6oF,gBAAiB;AAC/D,WAAKrH,UAAyB,KAAK;AACnC9yF,MAAAA,MAAKy6B,SAAS,KAAKnpB,MAAK,EAAU,IAAI,OAAO,KAAK6oF,gBAAiB;AACnE,WAAK7wF,OAAM,EAAU;AAGrBtJ,MAAAA,MAAK65B,OAIH,KAAK+hG,mCAAmC,MAEtC,KAAKmC,gBACP;AAEF,WAAKj/D,MAAM7B,KAAM;AACjB,WAAKt+D,MAAM4pF,OAAOrsB,IAAK;AAEvB,aAAO,KAAKiZ,WAAWn1E,OAAM,cAAc;AAAA,IAC7C;AAAA,IAKAogI,WAEEpgI,OACAw6B,MACAmlG,SACW;AACX,YAAMQ,UAAU,KAAK7uH,QAAY;AACjC,WAAKmhB,KAAM;AAEX,UAAI0tG,SAAS;AACX,YAAIR,YAAY,KAAM,MAAKp3D,WAAWo3D,OAAO;AAAA,MAC/C,OAAO;AACL3/H,QAAAA,MAAKg+B,QAAQ2hG,YAAY;AAAA,MAC3B;AAEA,UACEnlG,KAAKrpB,SAAS,yBACdqpB,KAAKqC,aAAa,CAAC,EAAErC,QAAQ,SAC5B,CAAC2lG,WACA,CAAC,KAAKhhI,QAAQ4yE,UACd,KAAKpzE,MAAMoO,UACXytB,KAAKyB,SAAS,SACdzB,KAAKqC,aAAa,CAAC,EAAE5B,GAAG9pB,SAAS,eACnC;AACA,aAAKmlE,MAAMxF,OAAO1K,wBAAwB5rC,MAAM;AAAA,UAC9CrpB,MAAMgvH,UAAU,mBAAmB;AAAA,QACrC,CAAC;AAAA,MACH;AAEA,UAAI3lG,KAAKrpB,SAAS,qBAAqB;AACrC,aAAKmlE,MAAMxF,OAAO9I,YAAYxtC,MAAM;AAAA,UAClCytC,UAAU;AAAA,YAAE92D,MAAM;AAAA,UAAe;AAAA,QACnC,CAAC;AAAA,MACH;AAEAnR,MAAAA,MAAKu5B,OAAOiB;AACZx6B,MAAAA,MAAKw5B,QAAQ2mG,UACT,KAAKhmC,gBAAiB,IACtB,KAAKiH,wBAAyB;AAClC,WAAK93F,OAAM,EAAU;AAGrBtJ,MAAAA,MAAK65B,OAIH,KAAK+hG,mCAAmC,MAEtC,KAAKmC,gBACP;AAEF,WAAKj/D,MAAM7B,KAAM;AACjB,WAAKt+D,MAAM4pF,OAAOrsB,IAAK;AAEvB,aAAO,KAAKiZ,WAAWn1E,OAAMmgI,UAAU,mBAAmB,gBAAgB;AAAA,IAC5E;AAAA,IAIAD,SAEElgI,OACAgsB,OACAiQ,MACAwyF,0BAAmC,OACJ;AAC/B,YAAM5xF,eAAwC78B,MAAK68B,eAAe,CAAG;AACrE78B,MAAAA,MAAKi8B,OAAOA;AACZ,iBAAS;AACP,cAAMc,OAAO,KAAKk4C,UAAiC;AACnD,aAAKmwB,WAAWroE,MAAMd,IAAI;AAC1Bc,aAAKvC,OAAO,CAAC,KAAK+vD,IAAG,EAAM,IACvB,OACAv+D,QACE,KAAKwpG,+BACL,KAAKp0B,wBAAyB;AAEpC,YAAIrkE,KAAKvC,SAAS,QAAQ,CAACi0F,yBAAyB;AAClD,cACE1xF,KAAK9B,GAAG9pB,SAAS,gBACjB,EAAE6a,UAAU,KAAK1a,MAAK,EAAO,KAAK,KAAK4gF,aAAmB,GAAA,KAC1D;AACA,iBAAK5b,MACHxF,OAAOjM,+BACP,KAAKlmE,MAAM84E,eACX;AAAA,cACEx7C,MAAM;AAAA,YACR,CACF;AAAA,UACF,YACGA,SAAS,WAAWA,SAAS,WAAWA,SAAS,kBAClD,EAAE,KAAK3qB,MAAK,EAAO,KAAK,KAAK4gF,aAAY,GAAO,IAChD;AACA,iBAAK5b,MACHxF,OAAOjM,+BACP,KAAKlmE,MAAM84E,eACX;AAAA,cAAEx7C;AAAAA,YAAK,CACT;AAAA,UACF;AAAA,QACF;AACAY,qBAAaz1B,KAAK,KAAK+tE,WAAWp4C,MAAM,oBAAoB,CAAC;AAC7D,YAAI,CAAC,KAAKwtD,IAAG,EAAS,EAAG;AAAA,MAC3B;AACA,aAAOvqF;AAAAA,IACT;AAAA,IAEAolG,WAEEroE,MACAd,MACM;AACN,YAAMhB,KAAK,KAAKiqE,iBAAkB;AAClC,UAAIjpE,SAAS,WAAWA,SAAS,eAAe;AAC9C,YAAIhB,GAAG9pB,SAAS,kBAAkB8pB,GAAG9pB,SAAS,iBAAiB;AAC7D,eAAKmlE,MAAMxF,OAAOnD,mCAAmC1yC,GAAG3nB,IAAII,KAAK;AAAA,QACnE;AAAA,MACF;AACA,WAAK8pG,UACHviF,IACA;AAAA,QAAE9pB,MAAM;AAAA,MAAsB,GAC9B8qB,SAAS,gBACX;AACAc,WAAK9B,KAAKA;AAAAA,IACZ;AAAA,IAGA49F,6BAEE74H,OACsB;AACtB,aAAO,KAAKs5H,cAAct5H,QAA6B;AAAA,IACzD;AAAA,IAKAs5H,cAEEt5H,OACA47B,WACG;AACH,YAAMmlG,qBAAqBnlG,QAA4C;AACvE,YAAMvP,gBAAgB,CAAC,EAAEuP;AACzB,YAAMq3F,YAAY5mG,iBAAiB,EAAEuP;AACrC,YAAM63C,UAAU,CAAC,EAAE73C;AAEnB,WAAK43C,aAAaxzE,OAAMyzE,OAAO;AAE/B,UAAI,KAAKniE,MAAK,EAAQ,GAAG;AACvB,YAAIyvH,oBAAoB;AACtB,eAAKzqD,MACHxF,OAAOtK,mCACP,KAAK7nE,MAAM4U,QACb;AAAA,QACF;AACA,aAAKkf,KAAM;AACXzyB,QAAAA,MAAK46B,YAAY;AAAA,MACnB;AAEA,UAAIvO,eAAe;AACjBrsB,QAAAA,MAAKi7B,KAAK,KAAK+3F,gBAAgBC,SAAS;AAAA,MAC1C;AAEA,YAAMvG,4BAA4B,KAAK/tH,MAAMiqF;AAC7C,WAAKjqF,MAAMiqF,yBAAyB;AACpC,WAAK9pB,MAAMtF,OAAwB;AACnC,WAAK86B,UAAU96B,MAAMu4B,cAActe,SAASzzE,MAAK46B,SAAS,CAAC;AAE3D,UAAI,CAACvO,eAAe;AAClBrsB,QAAAA,MAAKi7B,KAAK,KAAK+3F,gBAAiB;AAAA,MAClC;AAEA,WAAK7tB,oBAAoBnlG,OAA0B,KAAK;AAKxD,WAAK47H,mCAAmC,MAAM;AAE5C,aAAKt7B,2BACHtgG,OACAqsB,gBAAgB,wBAAwB,oBAC1C;AAAA,MACF,CAAC;AAED,WAAKioE,UAAUr3B,KAAM;AACrB,WAAK6B,MAAM7B,KAAM;AAEjB,UAAI5wC,iBAAiB,CAAC00G,oBAAoB;AAIxC,aAAK9T,4BAA4BjtH,KAAS;AAAA,MAC5C;AAEA,WAAKrB,MAAMiqF,yBAAyB8jC;AACpC,aAAO1sH;AAAAA,IACT;AAAA,IAEAgzH,gBAAgBC,WAAsD;AACpE,aAAOA,aAAapxC,kBAAkB,KAAKljF,MAAMwS,IAAI,IACjD,KAAKqpF,gBAAe,IACpB;AAAA,IACN;AAAA,IAEA2K,oBAEEnlG,OACA60E,eACM;AACN,WAAKvrE,OAAM,EAAU;AACrB,WAAKkrF,gBAAgBh7B,MAAM43B,8BAA8B;AACzDpxF,MAAAA,MAAK26B,SAAS,KAAKiiF,iBAGjBC,IAAAA,IAAAA,KACGhoC,gBAAa,IAAiD,EACnE;AAEA,WAAK2f,gBAAgBv3B,KAAM;AAAA,IAC7B;AAAA,IAEAgwD,4BAA4BjtH,OAAwB;AAClD,UAAI,CAACA,MAAKi7B,GAAI;AAMd,WAAK6jC,MAAM4lB,YACT1kF,MAAKi7B,GAAGxuB,MACR,CAAC,KAAKtN,QAAQ4yE,UAAU,KAAKpzE,MAAMoO,UAAU/M,MAAK46B,aAAa56B,MAAK66B,QAChE,KAAKikC,MAAMylB,sBAEe,IAAA,OAAA,IAE9BvkF,MAAKi7B,GAAG3nB,IAAII,KACd;AAAA,IACF;AAAA,IAKAu4G,WAEEjsH,OACAyrB,aACA+2E,YACG;AACH,WAAK/vE,KAAM;AAGX,YAAM+9F,YAAY,KAAK7xH,MAAMoO;AAC7B,WAAKpO,MAAMoO,SAAS;AAEpB,WAAKw1F,aAAaviG,OAAMyrB,aAAa+2E,UAAU;AAC/C,WAAKoB,gBAAgB5jG,KAAI;AAEzBA,MAAAA,MAAK65B,OAAO,KAAKq5F,eAAe,CAAC,CAAClzH,MAAKi9B,YAAYuzF,SAAS;AAE5D,aAAO,KAAKr7C,WACVn1E,OACAyrB,cAAc,qBAAqB,iBACrC;AAAA,IACF;AAAA,IAEAjL,kBAA2B;AACzB,aAAO,KAAKlP,MAAW,EAAA,KAAK,KAAKA,MAAK,EAAQ,KAAK,KAAKA,OAAe;AAAA,IACzE;AAAA,IAEAoO,gBAAyB;AACvB,aAAO,KAAKpO,MAAK,EAAU;AAAA,IAC7B;AAAA,IAEA8jE,kBAAkB31E,MAA4C;AAC5D,aACGA,KAAI0R,SAAS,gBAAgB1R,KAAIgN,SAAS,iBAC1ChN,KAAI0R,SAAS,mBAAmB1R,KAAII,UAAU;AAAA,IAEnD;AAAA,IAEA0jG,uBAAuBxjE,QAAkD;AACvE,aACE,CAACA,OAAOtE,YAAY,CAACsE,OAAO1B,UAAU,KAAK+2C,kBAAkBr1C,OAAOtgC,GAAG;AAAA,IAE3E;AAAA,IAGAyzH,eAEEjE,eACAuB,WACa;AACb,WAAKt6C,WAAW1c,MAAO;AAEvB,YAAM76D,SAAiC;AAAA,QACrCqiI,gBAAgB;AAAA,QAChB/R;AAAAA,MACD;AACD,UAAI3zF,cAA4B,CAAE;AAClC,YAAM0O,YAAY,KAAKirC,UAAwB;AAC/CjrC,gBAAUnQ,OAAO,CAAE;AAEnB,WAAKvwB,OAAM,CAAU;AAIrB,WAAKsyH,mCAAmC,MAAM;AAE5C,eAAO,CAAC,KAAKtqH,MAAK,CAAU,GAAG;AAC7B,cAAI,KAAKi5E,IAAG,EAAQ,GAAG;AACrB,gBAAIjvD,YAAWnvB,SAAS,GAAG;AACzB,oBAAM,KAAKmqE,MACTxF,OAAO3L,oBACP,KAAKxmE,MAAM84E,aACb;AAAA,YACF;AACA;AAAA,UACF;AAEA,cAAI,KAAKnmE,MAAK,EAAM,GAAG;AACrBgqB,YAAAA,YAAWl0B,KAAK,KAAK+1G,gBAAgB;AACrC;AAAA,UACF;AAEA,gBAAMxuF,SAAS,KAAKsmD,UAA0B;AAG9C,cAAI35C,YAAWnvB,QAAQ;AAErBwiB,mBAAO2M,aAAaA;AACpB,iBAAK45C,2BAA2BvmD,QAAQ2M,YAAW,CAAC,CAAC;AACrDA,YAAAA,cAAa,CAAE;AAAA,UACjB;AAEA,eAAKmnE,iBAAiBz4D,WAAWrb,QAAQhwB,MAAK;AAE9C,cAEEgwB,OAAOsN,SAAS,iBAEhBtN,OAAO2M,cAEP3M,OAAO2M,WAAWnvB,SAAS,GAC3B;AACA,iBAAKmqE,MAAMxF,OAAO7L,sBAAsBt2C,MAAM;AAAA,UAChD;AAAA,QACF;AAAA,MACF,CAAC;AAED,WAAKhwB,MAAMoO,SAASyjH;AAEpB,WAAK/9F,KAAM;AAEX,UAAI6I,YAAWnvB,QAAQ;AACrB,cAAM,KAAKmqE,MAAMxF,OAAOrF,mBAAmB,KAAK9sE,MAAM4U,QAAQ;AAAA,MAChE;AAEA,WAAK2iE,WAAWjZ,KAAM;AAEtB,aAAO,KAAKkY,WAAWnrC,WAAW,WAAW;AAAA,IAC/C;AAAA,IAIA04D,6BAEE14D,WACArb,QACS;AACT,YAAMlvB,OAAM,KAAK+6F,gBAAgB,IAAI;AAErC,UAAI,KAAK96E,iBAAiB;AACxB,cAAMqgB,SAAwBpR;AAG9BoR,eAAO9D,OAAO;AACd8D,eAAOtE,WAAW;AAClBsE,eAAOtgC,MAAMA;AACbsgC,eAAO1B,SAAS;AAChB,aAAKmlE,gBACHx5D,WACAjK,QACA,OACA,OACoB,OACpB,KACF;AACA,eAAO;AAAA,MACT,WAAW,KAAKvf,mBAAmB;AACjC,cAAMi1D,OAAwB9mD;AAG9B8mD,aAAKh6C,WAAW;AAChBg6C,aAAKh2E,MAAMA;AACXg2E,aAAKp3C,SAAS;AACd2L,kBAAUnQ,KAAKzyB,KAAK,KAAKiuE,mBAAmBI,IAAI,CAAC;AACjD,eAAO;AAAA,MACT;AACA,WAAK6R,kCAAkC7nF,IAAG;AAC1C,aAAO;AAAA,IACT;AAAA,IAEAgjG,iBAEEz4D,WACArb,QACAhwB,QACM;AACN,YAAMq/F,WAAW,KAAK9L,gBAAuB;AAE7C,UAAI8L,UAAU;AACZ,YAAI,KAAK0E,6BAA6B14D,WAAWrb,MAAM,GAAG;AAExD;AAAA,QACF;AACA,YAAI,KAAK47D,IAAG,CAAU,GAAG;AACvB,eAAKwkC,sBAAsB/kF,WAAWrb,MAA8B;AACpE;AAAA,QACF;AAAA,MACF;AAEA,WAAKqgG,6BAA6BhlF,WAAWrb,QAAQhwB,QAAOq/F,QAAQ;AAAA,IACtE;AAAA,IAEAgxB,6BAEEhlF,WACArb,QACAhwB,QACAq/F,UACA;AACA,YAAMijC,eAAetyG;AACrB,YAAMuyG,gBAAgBvyG;AACtB,YAAMwyG,aAAaxyG;AACnB,YAAMyyG,cAAczyG;AACpB,YAAM0yG,eAAe1yG;AAErB,YAAMoR,SAAqDkhG;AAC3D,YAAMK,eAAwDL;AAE9DtyG,aAAO0P,SAAS2/D;AAChB,WAAKgG,gCAAgCr1E,MAAM;AAE3C,UAAI,KAAK47D,IAAG,EAAQ,GAAG;AAErBxqD,eAAO9D,OAAO;AACd,cAAMrb,gBAAgB,KAAKtP,SAAoB;AAC/C,aAAKiwH,sBAAsBxhG,MAAM;AAEjC,YAAInf,eAAe;AAEjB,eAAK+iF,uBAAuB35D,WAAWk3F,eAAe,MAAM,KAAK;AACjE;AAAA,QACF;AAEA,YAAI,KAAK39B,uBAAuB09B,YAAY,GAAG;AAC7C,eAAK3qD,MAAMxF,OAAOlM,wBAAwBq8D,aAAaxhI,GAAG;AAAA,QAC5D;AAEA,aAAK+jG,gBACHx5D,WACAi3F,cACA,MACA,OACoB,OACpB,KACF;AAEA;AAAA,MACF;AAEA,YAAM/uC,eACJ,CAAC,KAAKvzF,MAAM2qF,eAAezH,kBAAkB,KAAKljF,MAAMwS,IAAI;AAC9D,YAAM1R,OAAM,KAAK8hI,sBAAsB5yG,MAAM;AAC7C,YAAM6yG,oBAAoBtvC,eAAgBzyF,KAAqBgN,OAAO;AACtE,YAAM6gB,YAAY,KAAK1M,cAAcnhB,IAAG;AACxC,YAAMgiI,6BAA6B,KAAK9iI,MAAM4U;AAE9C,WAAK27G,6BAA6BoS,YAAY;AAE9C,UAAI,KAAK5hH,iBAAiB;AACxBqgB,eAAO9D,OAAO;AAEd,YAAI3O,WAAW;AACb,eAAKq2E,uBAAuB35D,WAAWk3F,eAAe,OAAO,KAAK;AAClE;AAAA,QACF;AAGA,cAAMrsD,gBAAgB,KAAK0uB,uBAAuB09B,YAAY;AAC9D,YAAIx9B,oBAAoB;AACxB,YAAI5uB,eAAe;AACjBosD,uBAAahlG,OAAO;AAGpB,cAAIt9B,OAAMqiI,kBAAkB,CAAC,KAAKp7C,UAAU,YAAY,GAAG;AACzD,iBAAKtP,MAAMxF,OAAOtL,sBAAsB/lE,IAAG;AAAA,UAC7C;AACA,cAAIo1E,iBAAiB,KAAK+Q,UAAU,YAAY,KAAKj3D,OAAO2P,UAAU;AACpE,iBAAKg4C,MAAMxF,OAAOtG,uBAAuB/qE,IAAG;AAAA,UAC9C;AACAd,UAAAA,OAAMqiI,iBAAiB;AACvBv9B,8BAAoB9kG,OAAMswH;AAAAA,QAC5B;AAEA,aAAKzrB,gBACHx5D,WACAi3F,cACA,OACA,OACApsD,eACA4uB,iBACF;AAAA,MACF,WAAW,KAAKjjF,mBAAmB;AACjC,YAAI8M,WAAW;AACb,eAAKo0G,yBAAyB13F,WAAWo3F,WAAW;AAAA,QACtD,OAAO;AACL,eAAKO,kBAAkB33F,WAAWm3F,UAAU;AAAA,QAC9C;AAAA,MACD,WAAUK,sBAAsB,WAAW,CAAC,KAAK3uC,iBAAgB,GAAI;AAEpE,aAAKvL,kCAAkC7nF,IAAG;AAC1C,cAAMm1E,cAAc,KAAK2V,MAAW;AAEpC,YAAI+2C,aAAa/sG,UAAU;AACzB,eAAKg0C,WAAWk5D,0BAA0B;AAAA,QAC5C;AAEA1hG,eAAO9D,OAAO;AAEd,cAAM3O,aAAY,KAAKhc,SAAoB;AAC3C,aAAKiwH,sBAAsBxhG,MAAM;AACjC,aAAKmvF,6BAA6BoS,YAAY;AAE9C,YAAIh0G,YAAW;AAEb,eAAKq2E,uBACH35D,WACAk3F,eACAtsD,aACA,IACF;AAAA,QACF,OAAO;AACL,cAAI,KAAK2uB,uBAAuB09B,YAAY,GAAG;AAC7C,iBAAK3qD,MAAMxF,OAAOnM,oBAAoBs8D,aAAaxhI,GAAG;AAAA,UACxD;AAEA,eAAK+jG,gBACHx5D,WACAi3F,cACArsD,aACA,MACoB,OACpB,KACF;AAAA,QACF;AAAA,MACD,YACE4sD,sBAAsB,SAASA,sBAAsB,UACtD,EAAE,KAAKlwH,MAAa,EAAA,KAAK,KAAKuhF,iBAAkB,IAChD;AAGA,aAAKvL,kCAAkC7nF,IAAG;AAC1CsgC,eAAO9D,OAAOulG;AAEd,cAAMl0G,aAAY,KAAKhc,SAAoB;AAC3C,aAAKiwH,sBAAsBN,YAAY;AAEvC,YAAI3zG,YAAW;AAEb,eAAKq2E,uBAAuB35D,WAAWk3F,eAAe,OAAO,KAAK;AAAA,QACpE,OAAO;AACL,cAAI,KAAK39B,uBAAuB09B,YAAY,GAAG;AAC7C,iBAAK3qD,MAAMxF,OAAOpM,uBAAuBu8D,aAAaxhI,GAAG;AAAA,UAC3D;AACA,eAAK+jG,gBACHx5D,WACAi3F,cACA,OACA,OACoB,OACpB,KACF;AAAA,QACF;AAEA,aAAKl9B,wBAAwBk9B,YAAY;AAAA,MAC1C,WAAUO,sBAAsB,cAAc,CAAC,KAAK3uC,iBAAgB,GAAI;AACvE,aAAKvG,aAAa,wBAAwB;AAC1C,aAAKhF,kCAAkC7nF,IAAG;AAG1C,cAAM6tB,aAAY,KAAKhc,SAAoB;AAC3C,aAAKiwH,sBAAsBJ,UAAU;AACrC,aAAKS,0BAA0B53F,WAAWq3F,cAAc/zG,UAAS;AAAA,MACnE,WAAW,KAAKulE,oBAAoB;AAElC,YAAIvlE,WAAW;AACb,eAAKo0G,yBAAyB13F,WAAWo3F,WAAW;AAAA,QACtD,OAAO;AACL,eAAKO,kBAAkB33F,WAAWm3F,UAAU;AAAA,QAC9C;AAAA,MACF,OAAO;AACL,aAAK54D,WAAY;AAAA,MACnB;AAAA,IACF;AAAA,IAGAg5D,sBAEE5yG,QAC6C;AAC7C,YAAM;AAAA,QAAExd;AAAAA,QAAMtR,OAAAA;AAAAA,MAAO,IAAG,KAAKlB;AAC7B,WACGwS,SAAgB,OAAIA,SAAkB,QACvCwd,OAAO0P,UACPx+B,WAAU,aACV;AACA,aAAKy2E,MAAMxF,OAAOxF,iBAAiB,KAAK3sE,MAAM4U,QAAQ;AAAA,MACxD;AAEA,UAAIpC,cAAyB;AAC3B,YAAItR,WAAU,eAAe;AAC3B,eAAKy2E,MAAMxF,OAAOrM,8BAA8B,KAAK9lE,MAAM4U,QAAQ;AAAA,QACrE;AACA,cAAM9T,OAAM,KAAK40E,iBAAkB;AACnC1lD,eAAOlvB,MAAMA;AACb,eAAOA;AAAAA,MACT;AAEA,WAAK89G,kBAAkB5uF,MAAM;AAC7B,aAAOA,OAAOlvB;AAAAA,IAChB;AAAA,IAEAsvH,sBAEE/kF,WACArb,QAKA;AAAA,UAAAkzG;AAEA,WAAK/iE,MAAMtF,MACT6qB,KAAAA,QACF;AAEA,YAAM0P,YAAY,KAAKp1F,MAAM4pF;AAC7B,WAAK5pF,MAAM4pF,SAAS,CAAE;AAGtB,WAAK+L,UAAU96B,OAAqB;AACpC,YAAM3/B,OAAuBlL,OAAOkL,OAAO,CAAG;AAC9C,WAAKoxF,4BAA4BpxF,MAAMxnB,QAAW,OAAK,CAAW;AAClE,WAAKiiF,UAAUr3B,KAAM;AACrB,WAAK6B,MAAM7B,KAAM;AACjB,WAAKt+D,MAAM4pF,SAASwL;AACpB/pD,gBAAUnQ,KAAKzyB,KAAK,KAAK+tE,WAA0BxmD,QAAQ,aAAa,CAAC;AACzE,WAAAkzG,qBAAIlzG,OAAO2M,eAAPumG,QAAAA,mBAAmB11H,QAAQ;AAC7B,aAAKmqE,MAAMxF,OAAO1L,sBAAsBz2C,MAAM;AAAA,MAChD;AAAA,IACF;AAAA,IAEAgzG,kBAEE33F,WACAyrC,MACA;AACA,UAAI,CAACA,KAAKh6C,YAAY,KAAK25C,kBAAkBK,KAAKh2E,GAAG,GAAG;AAGtD,aAAK62E,MAAMxF,OAAOtM,uBAAuBiR,KAAKh2E,GAAG;AAAA,MACnD;AAEAuqC,gBAAUnQ,KAAKzyB,KAAK,KAAKiuE,mBAAmBI,IAAI,CAAC;AAAA,IACnD;AAAA,IAEAisD,yBAEE13F,WACAyrC,MACA;AACA,YAAMz1E,QAAO,KAAKu1E,0BAA0BE,IAAI;AAChDzrC,gBAAUnQ,KAAKzyB,KAAKpH,KAAI;AAExB,WAAKk2E,WAAW4Z,mBACd,KAAKtb,iBAAiBx0E,MAAKP,GAAG,MAE9BO,MAAKP,IAAI6T,IAAII,KACf;AAAA,IACF;AAAA,IAEAkuH,0BAEE53F,WACAyrC,MACAnoD,WACA;AACA,UAAI,CAACA,aAAa,CAACmoD,KAAKh6C,YAAY,KAAK25C,kBAAkBK,KAAKh2E,GAAG,GAAG;AAGpE,aAAK62E,MAAMxF,OAAOtM,uBAAuBiR,KAAKh2E,GAAG;AAAA,MACnD;AAEA,YAAMO,QAAO,KAAKsvH,2BAA2B75C,IAAI;AACjDzrC,gBAAUnQ,KAAKzyB,KAAKpH,KAAI;AAExB,UAAIstB,WAAW;AACb,aAAK4oD,WAAW4Z,mBACd,KAAKtb,iBAAiBx0E,MAAKP,GAAoB,MAE/CO,MAAKP,IAAI6T,IAAII,KACf;AAAA,MACF;AAAA,IACF;AAAA,IAEA8vF,gBAEEx5D,WACAjK,QACA60C,aACAnB,SACAoB,eACA4uB,mBACM;AACNz5D,gBAAUnQ,KAAKzyB,KACb,KAAKutE,YACH50C,QACA60C,aACAnB,SACAoB,eACA4uB,mBACA,eACA,IACF,CACF;AAAA,IACF;AAAA,IAEAE,uBAEE35D,WACAjK,QACA60C,aACAnB,SACM;AACN,YAAMzzE,QAAO,KAAK20E,YAChB50C,QACA60C,aACAnB,SACoB,OACpB,OACA,sBACA,IACF;AACAzpC,gBAAUnQ,KAAKzyB,KAAKpH,KAAI;AAExB,YAAMi8B,OACJj8B,MAAKi8B,SAAS,QACVj8B,MAAKq+B,iBAGLr+B,MAAKi8B,SAAS,QACZj8B,MAAKq+B,SAAM,IAAA,IAGW;AAC9B,WAAKkxF,iCAAiCvvH,OAAMi8B,IAAI;AAAA,IAClD;AAAA,IAEAszF,iCACEvvH,OACAi8B,MACA;AACA,WAAKi6C,WAAW4Z,mBACd,KAAKtb,iBAAiBx0E,MAAKP,GAAoB,GAC/Cw8B,MACAj8B,MAAKP,IAAI6T,IAAII,KACf;AAAA,IACF;AAAA,IAGAw7G,6BAEEC,cACM;AAAA,IAAA;AAAA,IAGR55C,0BAEEv1E,OACwB;AACxB,WAAK8hI,iBAAiB9hI,KAAI;AAC1B,WAAK8yF,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,sBAAsB;AAAA,IACrD;AAAA,IAGAq1E,mBAAiCr1E,OAAwC;AACvE,WAAK8hI,iBAAiB9hI,KAAI;AAC1B,WAAK8yF,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,eAAe;AAAA,IAC9C;AAAA,IAEAsvH,2BAEEtvH,OACyB;AACzB,WAAK8hI,iBAAiB9hI,KAAI;AAC1B,WAAK8yF,UAAW;AAChB,aAAO,KAAK3d,WAAWn1E,OAAM,uBAAuB;AAAA,IACtD;AAAA,IAGA8hI,iBAEE9hI,OAGM;AACN,WAAK8+D,MAAMtF,MAAM6qB,OAAiC;AAClD,WAAKmQ,gBAAgBh7B,MAAM+3B,oBAAoB;AAC/C,WAAK+C,UAAU96B,OAAqB;AACpCx5D,MAAAA,MAAKH,QAAQ,KAAK0qF,IAAG,EAAM,IAAI,KAAK6W,wBAAuB,IAAK;AAChE,WAAK5M,gBAAgBv3B,KAAM;AAC3B,WAAKq3B,UAAUr3B,KAAM;AACrB,WAAK6B,MAAM7B,KAAM;AAAA,IACnB;AAAA,IAEAslC,aACEviG,OACAyrB,aACA+2E,YACA7d,cAAwB,MAClB;AACN,UAAI9C,kBAAkB,KAAKljF,MAAMwS,IAAI,GAAG;AACtCnR,QAAAA,MAAKi7B,KAAK,KAAKu/D,gBAAiB;AAChC,YAAI/uE,aAAa;AACf,eAAKuyF,0BAA0Bh+G,MAAKi7B,IAAI0pD,WAAW;AAAA,QACrD;AAAA,MACF,OAAO;AACL,YAAI6d,cAAc,CAAC/2E,aAAa;AAC9BzrB,UAAAA,MAAKi7B,KAAK;AAAA,QACZ,OAAO;AACL,gBAAM,KAAKq7C,MAAMxF,OAAO5H,kBAAkB,KAAKvqE,MAAM4U,QAAQ;AAAA,QAC/D;AAAA,MACF;AAAA,IACF;AAAA,IAGAqwF,gBAA8B5jG,OAA6B;AACzDA,MAAAA,MAAKi9B,aAAa,KAAKstD,IAAG,EAAY,IAAI,KAAK+sC,oBAAmB,IAAK;AAAA,IACzE;AAAA,IAKA3gD,YAEE32E,OAKAs7B,aACa;AACb,YAAMiwF,yBAAyB,KAAK6C,sBAClCpuH,OACe,IACjB;AACA,YAAM+hI,aAAa,KAAK3O,iCACtBpzH,OACAurH,sBACF;AACA,YAAMyW,oBAAoB,CAACD,cAAc,KAAKx3C,IAAG,EAAS;AAC1D,YAAM03C,UAAUD,qBAAqB,KAAK5/B,cAAcpiG,KAAI;AAC5D,YAAMsiG,eACJ2/B,WAAW,KAAK5/B,mCAAmCriG,KAAI;AACzD,YAAMkiI,sBACJF,sBAAsB,CAAC1/B,gBAAgB,KAAK/X,IAAY,EAAA;AAC1D,YAAM43C,iBAAiBJ,cAAcE;AAErC,UAAIA,WAAW,CAAC3/B,cAAc;AAC5B,YAAIy/B,WAAY,MAAKx5D,WAAY;AACjC,YAAIjtC,aAAY;AACd,gBAAM,KAAKg7C,MAAMxF,OAAOjE,4BAA4B7sE,KAAI;AAAA,QAC1D;AACA,aAAKmiG,gBAAgBniG,OAAM,IAAI;AAE/B,aAAKslF,oBAAoB;AAEzB,eAAO,KAAKnQ,WAAWn1E,OAAM,sBAAsB;AAAA,MACrD;AAEA,YAAMoiI,gBAAgB,KAAKC,gCAAgCriI,KAAI;AAE/D,UAAI+hI,cAAcC,qBAAqB,CAACC,WAAW,CAACG,eAAe;AACjE,aAAK75D,WAAW,OAAe;AAAA,MACjC;AAEA,UAAI+5B,gBAAgB4/B,qBAAqB;AACvC,aAAK35D,WAAW,QAAc;AAAA,MAChC;AAEA,UAAI+5D;AACJ,UAAIH,kBAAkBC,eAAe;AACnCE,yBAAiB;AACjB,YAAIhnG,aAAY;AACd,gBAAM,KAAKg7C,MAAMxF,OAAOjE,4BAA4B7sE,KAAI;AAAA,QAC1D;AACA,aAAKmiG,gBACHniG,OACAmiI,cACF;AAAA,MACF,OAAO;AACLG,yBAAiB,KAAKC,4BACpBviI,KACF;AAAA,MACF;AAEA,UAAImiI,kBAAkBC,iBAAiBE,gBAAgB;AAAA,YAAAE;AACrD,cAAMzjC,SAAQ/+F;AACd,aAAKszH,YAAYv0B,QAAO,MAAM,OAAO,CAAC,CAACA,OAAM99F,MAAM;AACnD,cAAIuhI,qBAAAzjC,OAAMthE,gBAAN+kG,OAAAA,SAAAA,mBAAmBrxH,UAAS,oBAAoB;AAClD,eAAKu/G,oBAAoBp1F,aAAYyjE,OAAMthE,aAAashE,MAAK;AAAA,QAC9D,WAAUzjE,aAAY;AACrB,gBAAM,KAAKg7C,MAAMxF,OAAOjE,4BAA4B7sE,KAAI;AAAA,QAC1D;AACA,aAAKslF,oBAAoB;AACzB,eAAO,KAAKnQ,WAAW4pB,QAAO,wBAAwB;AAAA,MACxD;AAEA,UAAI,KAAKxU,IAAG,EAAY,GAAG;AACzB,cAAMwU,SAAQ/+F;AAEd,cAAM+8B,OAAO,KAAK6jE,6BAA8B;AAChD7B,QAAAA,OAAMthE,cAAcV;AAEpB,YAAIA,KAAK5rB,SAAS,oBAAoB;AACpC,eAAKu/G,oBAAoBp1F,aAAYyB,MAA4BgiE,MAAK;AAAA,QACvE,WAAUzjE,aAAY;AACrB,gBAAM,KAAKg7C,MAAMxF,OAAOjE,4BAA4B7sE,KAAI;AAAA,QAC1D;AAEA,aAAKszH,YAAYv0B,QAAO,MAAM,IAAI;AAClC,aAAKzZ,oBAAoB;AACzB,eAAO,KAAKnQ,WAAW4pB,QAAO,0BAA0B;AAAA,MAC1D;AAEA,WAAKx2B,WAAW,OAAe;AAAA,IACjC;AAAA,IAEA65B,cACEpiG,OACmE;AACnE,aAAO,KAAKuqF,IAAG,EAAQ;AAAA,IACzB;AAAA,IAEA6oC,iCACEpzH,OAKAurH,wBAC0C;AAC1C,UAAIA,0BAA0B,KAAKjlG,4BAA4B;AAE7D,aAAKgmE,aAAa,qBAAqBi/B,0BAAAA,OAAAA,SAAAA,uBAAwBj4G,IAAII,KAAK;AACxE,cAAMunB,KAAKswF,0BAA0B,KAAK/wB,gBAAgB,IAAI;AAC9D,cAAMv8B,YAAY,KAAKoZ,gBAA0Cp8C,EAAE;AACnEgjC,kBAAUngC,WAAW7C;AACpBj7B,QAAAA,MAA0C09B,aAAa,CACtD,KAAKy3C,WAAWlX,WAAW,wBAAwB,CAAC;AAEtD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEAokC,mCACEriG,OAC0C;AAC1C,UAAI,KAAKkyF,aAAY,EAAO,GAAG;AAAA,YAAA/vB,MAAAsgE;AAC7B,SAAAA,mBAAAtgE,OAACniE,OAA0C09B,eAAU+kG,OAAAA,kBAArDtgE,KAA2CzkC,aAAe,CAAE;AAE5D,cAAMugC,YAAY,KAAKo3B,YACrB,KAAK12F,MAAMk4E,eACb;AAEA,aAAKpkD,KAAM;AAEXwrC,kBAAUngC,WAAW,KAAK8zF,sBAAuB;AAChD5xH,QAAAA,MAA0C09B,WAAWt2B,KACpD,KAAK+tE,WAAWlX,WAAW,0BAA0B,CACvD;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEAokE,gCACEriI,OAC0C;AAC1C,UAAI,KAAKsR,MAAK,CAAU,GAAG;AACzB,cAAMytF,SAAQ/+F;AAEd,YAAI,CAAC++F,OAAMrhE,WAAYqhE,CAAAA,OAAMrhE,aAAa,CAAE;AAC5C,cAAMglG,eAAe3jC,OAAMvhE,eAAe;AAC1CuhE,QAAAA,OAAMrhE,WAAWt2B,KAAK,GAAG,KAAK86F,sBAAsBwgC,YAAY,CAAC;AACjE3jC,QAAAA,OAAM99F,SAAS;AACf,YAAqC,KAAK2kF,UAAU,kBAAkB,GAAG;AACvEmZ,UAAAA,OAAMxhE,aAAa,CAAE;AAAA,QACvB,OAAO;AACLwhE,UAAAA,OAAMzhE,aAAa,CAAE;AAAA,QACvB;AACAyhE,QAAAA,OAAMthE,cAAc;AACpB,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEA8kG,4BAEEviI,OACS;AACT,UAAI,KAAK2gG,gCAAgC;AACvC3gG,QAAAA,MAAK09B,aAAa,CAAE;AACpB19B,QAAAA,MAAKiB,SAAS;AACd,YAAqC,KAAK2kF,UAAU,kBAAkB,GAAG;AACvE5lF,UAAAA,MAAKu9B,aAAa,CAAE;AAAA,QACtB,OAAO;AACLv9B,UAAAA,MAAKs9B,aAAa,CAAE;AAAA,QACtB;AACAt9B,QAAAA,MAAKy9B,cAAc,KAAKukE,uBAAuBhiG,KAAI;AACnD,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEA++H,kBAA2B;AACzB,UAAI,CAAC,KAAK7sC,eAAsB,EAAG,QAAO;AAC1C,YAAMz/D,OAAO,KAAKw4D,qBAAsB;AACxC,aAAO,KAAKkH,qBAAqB1/D,MAAM,UAAU;AAAA,IACnD;AAAA,IAEAmuE,+BAE6C;AAC3C,YAAMF,OAAO,KAAKzrB,UAAW;AAE7B,UAAI,KAAK3jE,MAAK,EAAa,GAAG;AAC5B,aAAKmhB,KAAM;AACX,eAAO,KAAK6mG,cACV54B,MACA8/B,KACF;AAAA,MACF,WAAW,KAAKzB,mBAAmB;AACjC,aAAKtsG,KAAM;AACX,aAAKA,KAAM;AACX,eAAO,KAAK6mG,cACV54B,MACA8/B,IAAAA,KAGF;AAAA,MACF;AAEA,UAAI,KAAKlvH,MAAK,EAAU,GAAG;AACzB,eAAO,KAAK26G,WAAWvrB,MAAmC,MAAM,IAAI;AAAA,MACtE;AAEA,UAAI,KAAKpvF,MAAK,EAAM,GAAG;AACrB,YACE,KAAKs0E,UAAU,YAAY,KAC3B,KAAKtR,gBAAgB,cAAc,wBAAwB,MAAM,MACjE;AACA,eAAKgC,MAAMxF,OAAO/L,uBAAuB,KAAKpmE,MAAM4U,QAAQ;AAAA,QAC9D;AACA,eAAO,KAAK04G,WACV,KAAKyE,oBACH,KAAK6H,gBAAgB,KAAK,GAC1B,KAAKtjD,UACP,CAAA,GACA,MACA,IACF;AAAA,MACF;AAEA,UAAI,KAAK3jE,MAAe,EAAA,KAAK,KAAKA,MAAK,EAAQ,KAAK,KAAKgsD,SAAS;AAChE,cAAM,KAAKgZ,MAAMxF,OAAOhE,0BAA0B,KAAKnuE,MAAM4U,QAAQ;AAAA,MACvE;AAEA,YAAMqe,MAAM,KAAKwvE,wBAAyB;AAC1C,WAAKtO,UAAW;AAChB,aAAOlhE;AAAAA,IACT;AAAA,IAGAowE,uBAGEhiG,OACkC;AAClC,UAAI,KAAKsR,MAAK,EAAU,GAAG;AACzB,cAAMtR,QAAO,KAAKisH,WAChB,KAAKh3C,UAA+B,GACpC,MACA,KACF;AACA,eAAOj1E;AAAAA,MACT;AACA,aAAO,KAAK69H,uBAAwB;AAAA,IACtC;AAAA,IAEAv3G,2BAAoC;AAClC,YAAM;AAAA,QAAEnV;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIkjF,kBAAkB1wE,IAAI,GAAG;AAC3B,YAAKA,SAAI,MAAkB,CAAC,KAAKxS,MAAM2qF,eAAgBn4E,SAAI,KAAc;AACvE,iBAAO;AAAA,QACT;AACA,aACGA,SAAiB,OAAIA,SAAI,QAC1B,CAAC,KAAKxS,MAAM2qF,aACZ;AACA,gBAAM;AAAA,YAAEn4E,MAAMwxH;AAAAA,UAAS,IAAI,KAAKj4C,UAAW;AAK3C,cACG7I,kBAAkB8gD,QAAQ,KAAKA,aAAqB,MACrDA,aAAQ,GACR;AACA,iBAAKtzC,gBAAgB,CAAC,QAAQ,YAAY,CAAC;AAC3C,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACD,WAAU,CAAC,KAAK/9E,MAAK,EAAY,GAAG;AACnC,eAAO;AAAA,MACT;AAEA,YAAMmhB,OAAO,KAAKo4D,eAAgB;AAClC,YAAM+3C,UAAU,KAAKzwC,qBAAqB1/D,MAAM,MAAM;AACtD,UACE,KAAK3rB,MAAM8F,WAAW6lB,IAAI,MAAqB,MAC9CovD,kBAAkB,KAAKljF,MAAMwS,IAAI,KAAKyxH,SACvC;AACA,eAAO;AAAA,MACT;AAEA,UAAI,KAAKtxH,QAAiB,KAAKsxH,SAAS;AACtC,cAAMC,gBAAgB,KAAK/7H,MAAM8F,WAC/B,KAAKk+E,oBAAoBr4D,OAAO,CAAC,CACnC;AACA,eACEowG,kBAAa,MACbA,kBAAsC;AAAA,MAE1C;AACA,aAAO;AAAA,IACT;AAAA,IAEA1gC,gBAEEniG,OACAsJ,SACM;AACN,UAAI,KAAKkpF,cAAa,EAAS,GAAG;AAChCxyF,QAAAA,MAAKiB,SAAS,KAAKyyH,kBAAmB;AACtC,aAAKJ,YAAYtzH,KAAI;AACrB,aAAK8iI,2BAA2B9iI,KAAI;AACpC,aAAK+iI,sBAAsB/iI,KAAI;AAAA,MAChC,WAAUsJ,SAAQ;AACjB,aAAKi/D,WAAY;AAAA,MACnB;AAEA,WAAKuqB,UAAW;AAAA,IAClB;AAAA,IAEA6N,+BAAwC;AACtC,YAAM;AAAA,QAAExvF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,UAAIwS,aAAgB;AAClB,aAAKk+E,gBAAgB,CAAC,cAAc,mBAAmB,CAAC;AACxD,YAAI,KAAKzJ,UAAU,YAAY,GAAG;AAChC,cACE,KAAKtR,gBAAgB,cAAc,wBAAwB,MAAM,MACjE;AACA,iBAAKgC,MAAMxF,OAAO/L,uBAAuB,KAAKpmE,MAAM4U,QAAQ;AAAA,UAC9D;AAEA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAI,KAAK2+E,aAAY,GAAU,GAAG;AAChC,aAAK5b,MAAMxF,OAAOpD,wBAAwB,KAAK/uE,MAAM4U,QAAQ;AAC7D,eAAO;AAAA,MACT;AAEA,UAAI,KAAK2+E,aAAsB,EAAA,KAAK,KAAKwrC,iBAAgB,GAAI;AAC3D,aAAKpnD,MAAMxF,OAAOpD,wBAAwB,KAAK/uE,MAAM4U,QAAQ;AAC7D,eAAO;AAAA,MACT;AAEA,aACEpC,SAAgB,MAChBA,SAAI,MACJA,SAAqB,MACrBA,SAAI,MACJ,KAAKmsD,MAAK,KACV,KAAKyhE,gBAAiB;AAAA,IAE1B;AAAA,IAEAzL,YACEtzH,OAKAgjI,YACAC,WACAC,QACM;AACN,UAAIF,YAAY;AAAA,YAAAG;AAEd,YAAIF,WAAW;AAEb,eAAK/U,sBAAsBluH,OAAM,SAAS;AAC1C,cAAI,KAAK4lF,UAAU,mBAAmB,GAAG;AAAA,gBAAAw9C;AACvC,kBAAM3lG,cAAez9B,MAClBy9B;AACH,gBACEA,YAAYtsB,SAAS,gBACrBssB,YAAYhxB,SAAS,UACrBgxB,YAAY7pB,MAAM6pB,YAAY/pB,UAAU,KACxC,GAAA0vH,qBAAC3lG,YAAY05B,UAAK,QAAjBisE,mBAAmBtvD,gBACpB;AACA,mBAAKwC,MAAMxF,OAAO3K,+BAA+B1oC,WAAW;AAAA,YAC9D;AAAA,UACF;AAAA,QAED,YAAM0lG,mBAAInjI,MAAK09B,eAALylG,QAAAA,iBAAiBh3H,QAAQ;AAGlC,qBAAW8xD,aAAaj+D,MAAK09B,YAAY;AACvC,kBAAM;AAAA,cAAEI;AAAAA,YAAU,IAAGmgC;AACrB,kBAAM0H,aACJ7nC,SAAS3sB,SAAS,eAAe2sB,SAASrxB,OAAOqxB,SAASj+B;AAC5D,iBAAKquH,sBAAsBjwD,WAAW0H,UAAU;AAChD,gBAAI,CAACu9D,UAAUjlE,UAAUpgC,OAAO;AAC9B,oBAAM;AAAA,gBAAEA;AAAAA,cAAO,IAAGogC;AAClB,kBAAIpgC,MAAM1sB,SAAS,cAAc;AAC/B,qBAAKmlE,MAAMxF,OAAO7K,uBAAuBhI,WAAW;AAAA,kBAClDiI,WAAWroC,MAAMh+B;AAAAA,kBACjB8lE;AAAAA,gBACF,CAAC;AAAA,cACH,OAAO;AAEL,qBAAKs/B,kBAAkBpnE,MAAMpxB,MAAMoxB,MAAMvqB,IAAII,OAAO,MAAM,KAAK;AAE/D,qBAAKorD,MAAMkmB,iBAAiBnnD,KAAK;AAAA,cACnC;AAAA,YACF;AAAA,UACF;AAAA,QACF,WAAY79B,MAA0Cy9B,aAAa;AACjE,gBAAMV,OAAQ/8B,MAA0Cy9B;AAExD,cACEV,KAAK5rB,SAAS,yBACd4rB,KAAK5rB,SAAS,oBACd;AACA,kBAAM;AAAA,cAAE8pB;AAAAA,YAAI,IAAG8B;AACf,gBAAI,CAAC9B,GAAI,OAAM,IAAI9kB,MAAM,mBAAmB;AAE5C,iBAAK+3G,sBAAsBluH,OAAMi7B,GAAGxuB,IAAI;AAAA,UAC1C,WAAWswB,KAAK5rB,SAAS,uBAAuB;AAC9C,uBAAWssB,eAAeV,KAAKF,cAAc;AAC3C,mBAAK62C,iBAAiBj2C,YAAYxC,EAAE;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAy4C,iBAAiB1zE,OAA0C;AACzD,UAAIA,MAAKmR,SAAS,cAAc;AAC9B,aAAK+8G,sBAAsBluH,OAAMA,MAAKyM,IAAI;AAAA,MAC5C,WAAWzM,MAAKmR,SAAS,iBAAiB;AACxC,mBAAWskE,QAAQz1E,MAAKg8B,YAAY;AAClC,eAAK03C,iBAAiB+B,IAAI;AAAA,QAC5B;AAAA,MACF,WAAWz1E,MAAKmR,SAAS,gBAAgB;AACvC,mBAAWmpH,QAAQt6H,MAAKk5B,UAAU;AAChC,cAAIohG,MAAM;AACR,iBAAK5mD,iBAAiB4mD,IAAI;AAAA,UAC5B;AAAA,QACF;AAAA,MACF,WAAWt6H,MAAKmR,SAAS,kBAAkB;AAEzC,aAAKuiE,iBAAiB1zE,MAAKH,KAAK;AAAA,MAClC,WAAWG,MAAKmR,SAAS,eAAe;AACtC,aAAKuiE,iBAAiB1zE,MAAKm8B,QAAQ;AAAA,MACrC,WAAWn8B,MAAKmR,SAAS,qBAAqB;AAC5C,aAAKuiE,iBAAiB1zE,MAAKu5B,IAAI;AAAA,MACjC;AAAA,IACF;AAAA,IAEA20F,sBACEluH,OAOA2lE,YACM;AACN,UAAI,KAAKsuB,oBAAoBxmF,IAAIk4D,UAAU,GAAG;AAC5C,YAAIA,eAAe,WAAW;AAC5B,eAAK2Q,MAAMxF,OAAOrL,wBAAwBzlE,KAAI;AAAA,QAChD,OAAO;AACL,eAAKs2E,MAAMxF,OAAOpL,iBAAiB1lE,OAAM;AAAA,YAAE2lE;AAAAA,UAAW,CAAC;AAAA,QACzD;AAAA,MACF;AACA,WAAKsuB,oBAAoBt5E,IAAIgrD,UAAU;AAAA,IACzC;AAAA,IAIAu8B,sBAAsB+uB,gBAAmD;AACvE,YAAMniG,QAAQ,CAAE;AAChB,UAAIswE,QAAQ;AAGZ,WAAK91F,OAAM,CAAU;AAErB,aAAO,CAAC,KAAKihF,IAAG,CAAU,GAAG;AAC3B,YAAI6U,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AACL,eAAK91F,OAAM,EAAS;AACpB,cAAI,KAAKihF,IAAG,CAAU,EAAG;AAAA,QAC3B;AACA,cAAMqa,kBAAkB,KAAK1S,gBAAqB;AAClD,cAAM8+B,YAAW,KAAK1/G,SAAe;AACrC,cAAMtR,QAAO,KAAKi1E,UAA8B;AAChDj1E,QAAAA,MAAK69B,QAAQ,KAAK+zF,sBAAuC;AACzD9iG,cAAM1nB,KACJ,KAAK2pH,qBACH/wH,OACAgxH,WACAC,gBACArsB,eACF,CACF;AAAA,MACF;AAEA,aAAO91E;AAAAA,IACT;AAAA,IAEAiiG,qBACE/wH,OACAgxH,WAEAC,gBACArsB,iBAEmB;AACnB,UAAI,KAAKpS,cAAa,EAAO,GAAG;AAC9BxyF,QAAAA,MAAK89B,WAAW,KAAK8zF,sBAAuB;AAAA,MAC7C,WAAUZ,WAAU;AACnBhxH,QAAAA,MAAK89B,WAAWq3D,mBAAmBn1F,MAAK69B,KAAK;AAAA,MAC/C,WAAW,CAAC79B,MAAK89B,UAAU;AACzB99B,QAAAA,MAAK89B,WAAWm3D,gBAAgBj1F,MAAK69B,KAAK;AAAA,MAC5C;AACA,aAAO,KAAKs3C,WAA8Bn1E,OAAM,iBAAiB;AAAA,IACnE;AAAA,IAGA4xH,wBAAwD;AACtD,UAAI,KAAKtgH,MAAK,GAAU,GAAG;AACzB,cAAMynD,SAAS,KAAKka,mBAAmB,KAAKt0E,MAAMkB,KAAK;AACvD,cAAMwjI,YAAYhH,cAAc9qH,KAAKwnD,OAAOl5D,KAAK;AACjD,YAAIwjI,WAAW;AACb,eAAK/sD,MAAMxF,OAAOjH,kCAAkC9Q,QAAQ;AAAA,YAC1D+Q,mBAAmBu5D,UAAU,CAAC,EAAEz2H,WAAW,CAAC;AAAA,UAC9C,CAAC;AAAA,QACH;AACA,eAAOmsD;AAAAA,MACT;AACA,aAAO,KAAKyhC,gBAAgB,IAAI;AAAA,IAClC;AAAA,IAEA8oC,mBACEtjI,OAGS;AACT,UAAIA,MAAKu9B,cAAc,MAAM;AAC3B,eAAOv9B,MAAKu9B,WAAWgyD,KAAK,CAAC;AAAA,UAAE9vF,KAAAA;AAAAA,UAAKI,OAAAA;AAAAA,QAAM,MAAM;AAC9C,iBACEA,OAAMA,UAAU,WACfJ,KAAI0R,SAAS,eACV1R,KAAIgN,SAAS,SACbhN,KAAII,UAAU;AAAA,QAEtB,CAAC;AAAA,MACH;AACA,aAAO;AAAA,IACT;AAAA,IAEAukG,sBAAsBpkG,OAAmC;AACvD,YAAM;AAAA,QAAE09B;AAAAA,MAAY,IAAG19B;AACvB,YAAMujI,oBACJ7lG,WAAWvxB,WAAW,IAAIuxB,WAAW,CAAC,EAAEvsB,OAAO;AAEjD,UAAInR,MAAKi+B,UAAU,UAAU;AAC3B,YAAIslG,sBAAsB,0BAA0B;AAClD,eAAKjtD,MACHxF,OAAOzF,kCACP3tC,WAAW,CAAC,EAAEpqB,IAAII,KACpB;AAAA,QACF;AAAA,MACF,WAAW1T,MAAKi+B,UAAU,SAAS;AACjC,YAAIslG,sBAAsB,4BAA4B;AACpD,eAAKjtD,MACHxF,OAAOzL,8BACP3nC,WAAW,CAAC,EAAEpqB,IAAII,KACpB;AAAA,QACF;AAAA,MACF,WAAW1T,MAAKK,QAAQ;AAAA,YAAAmjI;AACtB,YAAID,sBAAsB,0BAA0B;AAClD,eAAKjtD,MAAMxF,OAAO1J,4BAA4B1pC,WAAW,CAAC,EAAEpqB,IAAII,KAAK;AAAA,QACvE;AACA,cAAI8vH,mBAAAxjI,MAAKu9B,eAALimG,OAAAA,SAAAA,iBAAiBr3H,UAAS,GAAG;AAC/B,eAAKmqE,MACHxF,OAAO3J,8BACPzpC,WAAW,CAAC,EAAEpqB,IAAII,KACpB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAqvH,sBACE/iI,OAGA;AAEA,UAAI,KAAKsjI,mBAAmBtjI,KAAI,KAAKA,MAAKmR,SAAS,wBAAwB;AAEzE,cAAM;AAAA,UAAEusB;AAAAA,QAAY,IAAG19B;AACvB,YAAI09B,cAAc,MAAM;AAEtB,gBAAM+lG,2BAA2B/lG,WAAWgmG,KAAKzlE,eAAa;AAC5D,gBAAIviC;AACJ,gBAAIuiC,UAAU9sD,SAAS,mBAAmB;AACxCuqB,yBAAWuiC,UAAUpgC;AAAAA,YACvB,WAAWogC,UAAU9sD,SAAS,mBAAmB;AAC/CuqB,yBAAWuiC,UAAUviC;AAAAA,YACvB;AACA,gBAAIA,aAAarpB,QAAW;AAC1B,qBAAOqpB,SAASvqB,SAAS,eACrBuqB,SAASjvB,SAAS,YAClBivB,SAAS77B,UAAU;AAAA,YACzB;AAAA,UACF,CAAC;AACD,cAAI4jI,6BAA6BpxH,QAAW;AAC1C,iBAAKikE,MACHxF,OAAO5J,6BACPu8D,yBAAyBnwH,IAAII,KAC/B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA6wF,uBAAuBvhE,UAA4B;AACjD,UAAIA,SAAU,QAAO;AACrB,aACE,KAAKkvD,aAAuB,GAAA,KAC5B,KAAKA,aAAY,EAAU,KACO,KAAKA,gBAAuB;AAAA,IAElE;AAAA,IAEAsS,iBACExkG,OACAgjC,UACA/E,OACA3qB,KACM;AACN,UAAI0vB,UAAU;AAWZ;AAAA,MACF;AAEA,UAAqC/E,UAAU,UAAU;AACvD,aAAKquD,aAAa,oBAAoBh5E,GAAG;AACxCtT,QAAAA,MAA6BK,SAAS;AAAA,MACxC,WAAU,KAAKulF,UAAU,kBAAkB,GAAG;AAC5C5lF,QAAAA,MAA6BK,SAAS;AAAA,MACzC;AAEA,UAAI49B,UAAU,UAAU;AACtB,aAAKquD,aAAa,sBAAsBh5E,GAAG;AAC1CtT,QAAAA,MAA6Bi+B,QAAQ;AAAA,MACxC,WAAWA,UAAU,SAAS;AAC5B,aAAKquD,aAAa,4BAA4Bh5E,GAAG;AAChDtT,QAAAA,MAA6Bi+B,QAAQ;AAAA,MACvC,WAAU,KAAK2nD,UAAU,oBAAoB,GAAG;AAC9C5lF,QAAAA,MAA6Bi+B,QAAQ;AAAA,MACxC;AAAA,IACF;AAAA,IAaAmwF,sBACEpuH,OACAgjC,UACqB;AACrB,UAAI,CAAC,KAAKuhE,uBAAuBvhE,QAAQ,GAAG;AAC1C,aAAKwhE,iBACHxkG,OACAgjC,UACA,IACF;AACA,eAAO;AAAA,MACT;AAEA,YAAM2gG,kBAAkB,KAAKnpC,gBAAgB,IAAI;AAEjD,YAAM;AAAA,QAAErpF;AAAAA,MAAM,IAAG,KAAKxS;AACtB,YAAMilI,gBAAgB7hD,2BAA2B5wE,IAAI,IAOjDA,SAAI,MAAiB,KAAK65E,kBAAiB,MAA2B,MAQtE75E,SAAiB;AAErB,UAAIyyH,eAAe;AACjB,aAAKr8C,uCAAuCo8C,eAAe;AAC3D,aAAKn/B,iBACHxkG,OACAgjC,UACA2gG,gBAAgBl3H,MAChBk3H,gBAAgBrwH,IAAII,KACtB;AACA,eAAO;AAAA,MACT,OAAO;AACL,aAAK8wF,iBACHxkG,OACAgjC,UACA,IACF;AAEA,eAAO2gG;AAAAA,MACT;AAAA,IACF;AAAA,IAEAE,yBAEE5lG,OACA;AACA,YAAM;AAAA,QAAE9sB;AAAAA,MAAM,IAAG,KAAKxS;AACtB,aAAOkjF,kBAAkB1wE,IAAI,IAOzBA,SAAiB,MAAI,KAAK65E,kBAAmB,MAAyB,MAQtE75E,SAAiB;AAAA,IACvB;AAAA,IAKAuqF,YAA0B17F,OAAgD;AACxE,UAAI,KAAKsR,MAAK,GAAU,GAAG;AAEzB,eAAO,KAAKwyH,+BAA+B9jI,KAAI;AAAA,MACjD;AAEA,aAAO,KAAKquH,8BACVruH,OACA,KAAKouH,sBAAsBpuH,OAAqB,KAAK,CACvD;AAAA,IACF;AAAA,IAEAquH,8BAEEruH,OACAurH,wBACa;AACbvrH,MAAAA,MAAK09B,aAAa,CAAE;AAIpB,YAAMqkG,aAAa,KAAKgC,iCACtB/jI,OACAurH,sBACF;AAOA,YAAMyY,YAAY,CAACjC,cAAc,KAAKx3C,IAAG,EAAS;AAGlD,YAAM03C,UAAU+B,aAAa,KAAKxQ,8BAA8BxzH,KAAI;AAGpE,UAAIgkI,aAAa,CAAC/B,QAAS,MAAKxO,2BAA2BzzH,KAAI;AAC/D,WAAKyyF,iBAAgB,EAAS;AAE9B,aAAO,KAAKqxC,+BAA+B9jI,KAAI;AAAA,IACjD;AAAA,IAEA8jI,+BAEE9jI,OACa;AAAA,UAAAikI;AACb,OAAAA,oBAAAjkI,MAAK09B,eAAU,OAAAumG,oBAAfjkI,MAAK09B,aAAe,CAAE;AACtB19B,MAAAA,MAAKiB,SAAS,KAAKyyH,kBAAmB;AACtC,WAAKoP,2BAA2B9iI,KAAI;AACpC,WAAKokG,sBAAsBpkG,KAAI;AAC/B,WAAK+iI,sBAAsB/iI,KAAI;AAE/B,WAAK8yF,UAAW;AAChB,WAAKxN,oBAAoB;AACzB,aAAO,KAAKnQ,WAAWn1E,OAAM,mBAAmB;AAAA,IAClD;AAAA,IAEA0zH,oBAAiD;AAC/C,UAAI,CAAC,KAAKpiH,MAAK,GAAU,EAAG,MAAKi3D,WAAY;AAC7C,aAAO,KAAKizB,cAAe;AAAA,IAC7B;AAAA,IAEA6I,0BAMErkG,OACAi+D,WACA9sD,MACM;AACN8sD,gBAAUpgC,QAAQ,KAAK28D,gBAAiB;AACxCx6F,MAAAA,MAAK09B,WAAWt2B,KAAK,KAAKk9F,sBAAsBrmC,WAAW9sD,IAAI,CAAC;AAAA,IAClE;AAAA,IAEAmzF,sBAMErmC,WACA9sD,MACAwzE,oBACA;AACA,WAAK64B,UAAUv/C,UAAUpgC,OAAO;AAAA,QAAE1sB;AAAAA,MAAM,GAAEwzE,WAAW;AACrD,aAAO,KAAKxP,WAAWlX,WAAW9sD,IAAI;AAAA,IACxC;AAAA,IAOA+yH,wBAA6C;AAC3C,WAAK56H,OAAM,CAAU;AAErB,YAAM66H,QAAQ,CAAE;AAChB,YAAMC,YAAY,oBAAIl3H,IAAK;AAE3B,SAAG;AACD,YAAI,KAAKoE,MAAK,CAAU,GAAG;AACzB;AAAA,QACF;AAEA,cAAMtR,QAAO,KAAKi1E,UAA8B;AAGhD,cAAM6lD,UAAU,KAAKn8H,MAAMkB;AAI3B,YAAIukI,UAAU32H,IAAIqtH,OAAO,GAAG;AAC1B,eAAKxkD,MACHxF,OAAOlH,mCACP,KAAKjrE,MAAM4U,UACX;AAAA,YACE9T,KAAKq7H;AAAAA,UACP,CACF;AAAA,QACF;AACAsJ,kBAAUzpH,IAAImgH,OAAO;AACrB,YAAI,KAAKxpH,MAAK,GAAU,GAAG;AACzBtR,UAAAA,MAAKP,MAAM,KAAKwzE,mBAAmB6nD,OAAO;AAAA,QAC5C,OAAO;AACL96H,UAAAA,MAAKP,MAAM,KAAK+6F,gBAAgB,IAAI;AAAA,QACtC;AACA,aAAKlxF,OAAM,EAAS;AAEpB,YAAI,CAAC,KAAKgI,MAAK,GAAU,GAAG;AAC1B,gBAAM,KAAKglE,MACTxF,OAAOnH,6BACP,KAAKhrE,MAAM4U,QACb;AAAA,QACF;AACAvT,QAAAA,MAAKH,QAAQ,KAAKozE,mBAAmB,KAAKt0E,MAAMkB,KAAK;AACrDskI,cAAM/8H,KAAK,KAAK+tE,WAAWn1E,OAAM,iBAAiB,CAAC;AAAA,MACrD,SAAS,KAAKuqF,MAAY;AAE1B,WAAKjhF,OAAM,CAAU;AAErB,aAAO66H;AAAAA,IACT;AAAA,IAMAE,wBAAwB;AACtB,YAAMF,QAA6B,CAAE;AACrC,YAAM7mG,aAAa,oBAAIpwB,IAAK;AAC5B,SAAG;AACD,cAAMlN,QAAO,KAAKi1E,UAA8B;AAChDj1E,QAAAA,MAAKP,MAAM,KAAK+6F,gBAAgB,IAAI;AAEpC,YAAIx6F,MAAKP,IAAIgN,SAAS,QAAQ;AAC5B,eAAK6pE,MAAMxF,OAAOpH,kCAAkC1pE,MAAKP,GAAG;AAAA,QAC9D;AAEA,YAAI69B,WAAW7vB,IAAIzN,MAAKP,IAAIgN,IAAI,GAAG;AACjC,eAAK6pE,MAAMxF,OAAOlH,mCAAmC5pE,MAAKP,KAAK;AAAA,YAC7DA,KAAKO,MAAKP,IAAIgN;AAAAA,UAChB,CAAC;AAAA,QACH;AACA6wB,mBAAW3iB,IAAI3a,MAAKP,IAAIgN,IAAI;AAC5B,aAAKnD,OAAM,EAAS;AACpB,YAAI,CAAC,KAAKgI,MAAK,GAAU,GAAG;AAC1B,gBAAM,KAAKglE,MACTxF,OAAOnH,6BACP,KAAKhrE,MAAM4U,QACb;AAAA,QACF;AACAvT,QAAAA,MAAKH,QAAQ,KAAKozE,mBAAmB,KAAKt0E,MAAMkB,KAAK;AACrDskI,cAAM/8H,KAAK,KAAK+tE,WAAWn1E,OAAM,iBAAiB,CAAC;AAAA,MACrD,SAAS,KAAKuqF,MAAY;AAE1B,aAAO45C;AAAAA,IACT;AAAA,IAEArB,2BACE9iI,OAGA;AACA,UAAIs9B;AAC+B;AAEjC,YAAIgnG,UAAU;AAAA,MAChB;AAGA,UAAI,KAAKhzH,MAAK,EAAS,GAAG;AACxB,YACE,KAAKqhF,sBAAuB,KAC5B,KAAK3H,kBAAiB,MAAE,IACxB;AAGA;AAAA,QACF;AAEA,aAAKv4D,KAAM;AAEX,YAAqC,KAAKmzD,UAAU,kBAAkB,GAAG;AACvEtoD,uBAAa,KAAK+mG,sBAAuB;AAAA,QAC3C,OAAO;AACL/mG,uBAAa,KAAK4mG,sBAAuB;AAAA,QAC3C;AACmC;AACjCI,oBAAU;AAAA,QACZ;AAAA,MACF,WAAW,KAAKpyC,aAAuB,EAAA,KAAK,CAAC,KAAKS,yBAAyB;AACzE,YACE,CAAC,KAAK/M,UAAU,wBAAwB,KACP,CAAC,KAAKA,UAAU,kBAAkB,GACnE;AACA,eAAKtP,MAAMxF,OAAOlK,2BAA2B,KAAKjoE,MAAM4U,QAAQ;AAAA,QAClE;AACA,YAAoC,CAAC,KAAKqyE,UAAU,kBAAkB,GAAG;AACvE,eAAKqM,SAASjyF,OAAM,0BAA0B,IAAI;AAAA,QACpD;AACA,aAAKyyB,KAAM;AACX6K,qBAAa,KAAK4mG,sBAAuB;AAAA,MAC3C,OAAO;AACL5mG,qBAAa,CAAE;AAAA,MACjB;AAEA,UAEE,CAACgnG,WACD,KAAK1+C,UAAU,kBAAkB,GACjC;AACA5lF,QAAAA,MAAKu9B,aAAaD;AAAAA,MACpB,OAAO;AACLt9B,QAAAA,MAAKs9B,aAAaA;AAAAA,MACpB;AAAA,IACF;AAAA,IAEAymG,iCACE/jI,OACAurH,wBACS;AAET,UAAIA,wBAAwB;AAC1B,cAAMttD,YAAY,KAAKoZ,gBACrBk0C,sBACF;AACAttD,kBAAUpgC,QAAQ0tF;AAClBvrH,QAAAA,MAAK09B,WAAWt2B,KACd,KAAKk9F,sBAAsBrmC,WAAW,wBAAwB,CAChE;AACA,eAAO;AAAA,MACR,WAEC8jB,2BAA2B,KAAKpjF,MAAMwS,IAAI,GAC1C;AACA,aAAKkzF,0BACHrkG,OACA,KAAKi1E,UAAS,GACd,wBACF;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEAu+C,8BAA8BxzH,OAA4C;AACxE,UAAI,KAAKsR,MAAK,EAAQ,GAAG;AACvB,cAAM2sD,YAAY,KAAKgX,UAAuC;AAC9D,aAAKxiD,KAAM;AACX,aAAKggE,iBAAgB,EAAO;AAE5B,aAAK4R,0BACHrkG,OACAi+D,WACA,0BACF;AACA,eAAO;AAAA,MACT;AACA,aAAO;AAAA,IACT;AAAA,IAEAw1D,2BAA2BzzH,OAAmC;AAC5D,UAAIo/F,QAAQ;AACZ,WAAK91F,OAAM,CAAU;AACrB,aAAO,CAAC,KAAKihF,IAAG,CAAU,GAAG;AAC3B,YAAI6U,OAAO;AACTA,kBAAQ;AAAA,QACV,OAAO;AAEL,cAAI,KAAK7U,IAAG,EAAS,GAAG;AACtB,kBAAM,KAAKjU,MAAMxF,OAAOvL,wBAAwB,KAAK5mE,MAAM4U,QAAQ;AAAA,UACrE;AAEA,eAAKjK,OAAM,EAAS;AACpB,cAAI,KAAKihF,IAAG,CAAU,EAAG;AAAA,QAC3B;AAEA,cAAMtsB,YAAY,KAAKgX,UAA8B;AACrD,cAAMyvB,mBAAmB,KAAKpzF,SAAe;AAC7C,cAAMszF,kBAAkB,KAAK1S,gBAAqB;AAClDj0B,kBAAUviC,WAAW,KAAKk2F,sBAAuB;AACjD,cAAMrmF,kBAAkB,KAAKk5D,qBAC3BxmC,WACAymC,kBACA1kG,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe,UAClD0mE,iBACAvyF,MACF;AACArS,QAAAA,MAAK09B,WAAWt2B,KAAKmkC,eAAe;AAAA,MACtC;AAAA,IACF;AAAA,IAGAk5D,qBACExmC,WACAymC,kBAEAC,oBACAC,iBACAjgB,aACmB;AACnB,UAAI,KAAK6N,cAAa,EAAO,GAAG;AAC9Bv0B,kBAAUpgC,QAAQ,KAAK28D,gBAAiB;AAAA,MAC1C,OAAO;AACL,cAAM;AAAA,UAAE9+D;AAAAA,QAAU,IAAGuiC;AACrB,YAAIymC,kBAAkB;AACpB,gBAAM,KAAKpuB,MAAMxF,OAAOjK,uBAAuB5I,WAAW;AAAA,YACxD6I,YAAaprC,SAA6B77B;AAAAA,UAC5C,CAAC;AAAA,QACH;AACA,aAAKolG,kBACFvpE,SAA0BjvB,MAC3BwxD,UAAU3qD,IAAII,OACd,MACA,IACF;AACA,YAAI,CAACuqD,UAAUpgC,OAAO;AACpBogC,oBAAUpgC,QAAQo3D,gBAAgBv5D,QAAQ;AAAA,QAC5C;AAAA,MACF;AACA,aAAO,KAAK4oE,sBACVrmC,WACA,mBACA0mB,WACF;AAAA,IACF;AAAA,IAIA+e,YACExpE,OACS;AACT,aAAOA,MAAM/oB,SAAS,gBAAgB+oB,MAAMztB,SAAS;AAAA,IACvD;AAAA,EACF;AAAA,ECt2Ge,MAAM83H,eAAetH,gBAAgB;AAAA,IAOlDpqH,YACE1T,UACA2H,QACAqtH,YACA;AACAh1H,MAAAA,WAAU6yE,WAAW7yE,QAAO;AAC5B,YAAMA,UAAS2H,MAAK;AAEpB,WAAK3H,UAAUA;AACf,WAAK20F,iBAAkB;AACvB,WAAKtxF,UAAU2xH;AACf,WAAKrxD,WAAW3jE,SAAQ8xE;AACxB,WAAKC,aAAa/xE,SAAQ+xE;AAE1B,UAAImB,cAAc;AAClB,UAAIlzE,SAAQgyE,2BAA2B;AACrCkB,uBAAoD;AAAA,MACtD;AACA,UAAIlzE,SAAQiyE,4BAA4B;AACtCiB,uBAAqD;AAAA,MACvD;AACA,UAAIlzE,SAAQmyE,6BAA6B;AACvCe,uBAAsD;AAAA,MACxD;AACA,UAAIlzE,SAAQoyE,yBAAyB;AACnCc,uBAAkD;AAAA,MACpD;AACA,UAAIlzE,SAAQqyE,wBAAwB;AAClCa,uBAAiD;AAAA,MACnD;AACA,UAAIlzE,SAAQkyE,+BAA+B;AACzCgB,uBAAwD;AAAA,MAC1D;AACA,UAAIlzE,SAAQuyE,QAAQ;AAClBW,uBAAiC;AAAA,MACnC;AACA,UAAIlzE,SAAQo7B,QAAQ;AAClB83C,uBAAiC;AAAA,MACnC;AACA,UAAIlzE,SAAQwyE,yBAAyB;AACnCU,uBAAkD;AAAA,MACpD;AACA,UAAIlzE,SAAQyyE,gCAAgC;AAC1CS,uBAAyD;AAAA,MAC3D;AACA,UAAIlzE,SAAQ0yE,eAAe;AACzBQ,uBAAwC;AAAA,MAC1C;AACA,UAAIlzE,SAAQ2yE,eAAe;AACzBO,uBAAwC;AAAA,MAC1C;AACA,UAAIlzE,SAAQ4yE,QAAQ;AAClBM,uBAAiC;AAAA,MACnC;AAEA,WAAKA,cAAcA;AAAAA,IACrB;AAAA,IAGA+hB,kBAAsD;AACpD,aAAO3Q;AAAAA,IACT;AAAA,IAEAv8E,QAAgB;AACd,WAAKutF,mBAAoB;AACzB,YAAM51F,QAAO,KAAKo2E,UAAmB;AACrC,YAAM56C,UAAU,KAAK46C,UAAsB;AAC3C,WAAKqV,UAAW;AAChBzrF,MAAAA,MAAKsyB,SAAS;AACd,WAAK81E,cAAcpoG,OAAMw7B,OAAO;AAChCx7B,MAAAA,MAAKsyB,SAAS,KAAKxyB,MAAMwyB;AACzBtyB,MAAAA,MAAKy7B,SAASnuB,SAAS,KAAKxN,MAAM8nF;AAClC,aAAO5nF;AAAAA,IACT;AAAA,EACF;ACpDO,WAASqI,OACdJ,QACA3H,UACmB;AAAA,QAAAqlI;AACnB,UAAIA,WAAArlI,aAAO,OAAA,SAAPqlI,SAAS1oG,gBAAe,eAAe;AACzC38B,MAAAA,WAAO4P,OAAAyE,OAAA,CAAA,GACFrU,QAAO;AAEZ,UAAI;AACFA,QAAAA,SAAQ28B,aAAa;AACrB,cAAMomC,UAASuiE,UAAUtlI,UAAS2H,MAAK;AACvC,cAAM86D,MAAMM,QAAOh7D,MAAO;AAE1B,YAAIg7D,QAAOojB,mBAAmB;AAC5B,iBAAO1jB;AAAAA,QACT;AAEA,YAAIM,QAAOqjB,6BAA6B;AAMtC,cAAI;AACFpmF,YAAAA,SAAQ28B,aAAa;AACrB,mBAAO2oG,UACLtlI,UACA2H,MACF,EAAEI,MAAO;AAAA,UACV,SAAC0rE,SAAM;AAAA,UAAA;AAAA,QACV,OAAO;AAGLhR,cAAIvnC,QAAQyB,aAAa;AAAA,QAC3B;AAEA,eAAO8lC;AAAAA,MACR,SAAQ8iE,aAAa;AACpB,YAAI;AACFvlI,UAAAA,SAAQ28B,aAAa;AACrB,iBAAO2oG,UACLtlI,UACA2H,MACF,EAAEI,MAAO;AAAA,QACV,SAACwiH,UAAM;AAAA,QAAA;AAER,cAAMgb;AAAAA,MACR;AAAA,IACF,OAAO;AACL,aAAOD,UAAUtlI,UAAS2H,MAAK,EAAEI,MAAO;AAAA,IAC1C;AAAA,EACF;AAEO,WAASizF,gBACdrzF,QACA3H,UACyB;AACzB,UAAM+iE,UAASuiE,UAAUtlI,UAAS2H,MAAK;AACvC,QAAIo7D,QAAO/iE,QAAQsyE,YAAY;AAC7BvP,MAAAA,QAAOvjE,MAAMoO,SAAS;AAAA,IACxB;AACA,WAAOm1D,QAAO4uD,cAAe;AAAA,EAC/B;AAEA,WAAS6T,2BACPC,oBACmC;AACnC,UAAM/rD,cAAgD,CAAE;AACxD,eAAWj3C,YAAY7yB,OAAOnK,KAC5BggI,kBACF,GAAmC;AACjC/rD,MAAAA,YAAWj3C,QAAQ,IAAIohD,iBAAiB4hD,mBAAmBhjG,QAAQ,CAAC;AAAA,IACtE;AACA,WAAOi3C;AAAAA,EACT;AAEagsD,QAAAA,WAAWF,2BAA2BC,EAAkB;AAErE,WAASH,UAAUtlI,UAAqC2H,QAAuB;AAC7E,QAAI0nH,MAAM+V;AACV,UAAMpQ,aAAyB,oBAAI9+D,IAAK;AACxC,QAAIl2D,YAAO,QAAPA,SAASqD,SAAS;AACpB,iBAAWd,WAAUvC,SAAQqD,SAAS;AACpC,YAAIiK,MAAMtF;AACV,YAAI,OAAOzF,YAAW,UAAU;AAC9B+K,iBAAO/K;AAAAA,QACT,OAAO;AACL,WAAC+K,MAAMtF,IAAI,IAAIzF;AAAAA,QACjB;AACA,YAAI,CAACyyH,WAAW1mH,IAAIhB,IAAI,GAAG;AACzB0nH,qBAAWnoH,IAAIS,MAAMtF,QAAQ,CAAA,CAAE;AAAA,QACjC;AAAA,MACF;AACA+sH,sBAAgBC,UAAU;AAC1B3F,YAAMsW,eAAe3Q,UAAU;AAAA,IACjC;AAEA,WAAO,IAAI3F,IAAIrvH,UAAS2H,QAAOqtH,UAAU;AAAA,EAC3C;AAEA,QAAM4Q,mBAAmB,oBAAI1vE,IAA2C;AAGxE,WAASyvE,eACP3Q,YAC8B;AAC9B,UAAM6Q,aAAa,CAAE;AACrB,eAAWv4H,QAAQqoH,kBAAkB;AACnC,UAAIX,WAAW1mH,IAAIhB,IAAI,GAAG;AACxBu4H,mBAAW59H,KAAKqF,IAAI;AAAA,MACtB;AAAA,IACF;AACA,UAAMhN,OAAMulI,WAAWhzH,KAAK,GAAG;AAC/B,QAAIw8G,MAAMuW,iBAAiBn2H,IAAInP,IAAG;AAClC,QAAI,CAAC+uH,KAAK;AACRA,YAAM+V;AACN,iBAAW7iI,WAAUsjI,YAAY;AAE/BxW,cAAMqG,aAAanzH,OAAM,EAAE8sH,GAAG;AAAA,MAChC;AACAuW,uBAAiB/4H,IAAIvM,MAAK+uH,GAAG;AAAA,IAC/B;AACA,WAAOA;AAAAA,EACT;;;;;;;;;;;;ACrKA,MAAI,IAAE;AACN,MAAI,SAAO,WAAW;AAAC,WAAO,EAAC,kBAAiB,OAAM,OAAM,GAAE,MAAK,GAAE,KAAI,GAAE,QAAO,GAAE,WAAU,GAAE,SAAQ,GAAE,QAAO,GAAE,eAAc,GAAE,OAAM,GAAE,KAAI,GAAE,OAAM,GAAE,QAAO,GAAE,MAAK,GAAE,SAAQ,GAAE,MAAK,GAAE,OAAM,GAAE,MAAK,GAAE,SAAQ,GAAE,OAAM,GAAE,SAAQ,GAAE,UAAS,GAAE,QAAO,GAAE,WAAU,GAAE,QAAO,GAAE,SAAQ,GAAE,aAAY,GAAE,WAAU,GAAE,aAAY,GAAE,cAAa,GAAE,YAAW,GAAE,eAAc,GAAE,YAAW,GAAE,aAAY,GAAE,eAAc,GAAE,aAAY,GAAE,eAAc,GAAE,gBAAe,GAAE,cAAa,GAAE,iBAAgB,GAAE,cAAa,GAAE,eAAc,EAAC;AAAA,EAAC;AACxfzgH,qBAAA,UAAC,OAAQ;AACvBA,qBAAA,QAAA,eAA8B;;;;;;;;ACA9B,SAAO,eAAe,UAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACR,CAAA;AAID,WAAA,UAAkB;AAEE,WAAA,eAAG,SAAS,OAAO;AACrC,QAAIhH,SAAQ,EAAC,MAAM,WAAW,OAAO,MAAM,CAAC,GAAG,QAAQ,OAAS;AAC3D,QAAI,MAAO,CAAC,EAAG,CAAAA,OAAM,OAAO,UAAWA,OAAM,SAAS,CAAC,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC;AAAA,aACxE,MAAO,CAAC,EAAG,CAAAA,OAAM,OAAO;AAAA,aACxB,MAAO,CAAC,EAAG,CAAAA,OAAM,OAAO,WAAWA,OAAM,SAAS,CAAC,CAAC,MAAM,CAAC;AAAA,aAC3D,MAAO,CAAC,EAAG,CAAAA,OAAM,OAAO;AAAA,aACxB,MAAO,CAAC,EAAG,CAAAA,OAAM,OAAO;AAAA,aACxB,MAAM,EAAE,EAAG,CAAAA,OAAM,OAAO;AAAA,aACxB,MAAM,EAAE,EAAG,CAAAA,OAAM,OAAO;AAAA,aACxB,MAAM,EAAE,EAAG,CAAAA,OAAM,OAAO;AACjC,WAAOA;AAAA,EACT;;;;;;;;;;;ACnBO,WAASmL,mBAAmB;AACjC,WAEE,OAAOrM,YAAY,aAChBA,QAAQwJ,IAAIC,gBAAgB,OAAOzJ,QAAQwJ,IAAIC,gBAAgB,WAC9D,QACA21H,WAAW/yH;AAAAA,EAEnB;AAmBA,QAAMzC,UACJA,CAACC,GAAGC,MAAMC,OACRF,EAAEC,EAAEC,CAAC,CAAC;AAKV,WAASs1H,UAAUrjI,SAAsB;AACvC,WAAO;AAAA,MACLjC,SAASiC,QAAOkO;AAAAA,MAChBC,aAAanO,QAAOoO;AAAAA,MACpBC,eAAerO,QAAOoO;AAAAA,MACtBE,YAAYtO,QAAOoO;AAAAA,MACnBzP,QAAQqB,QAAOuO;AAAAA,MACfrQ,QAAQ8B,QAAOwO;AAAAA,MACfC,OAAOzO,QAAOuO;AAAAA,MACdG,SAAS1O,QAAO2O;AAAAA,MAChBC,SAAShB,QAAQA,QAAQ5N,QAAO6O,OAAO7O,QAAO8O,KAAK,GAAG9O,QAAO+O,IAAI;AAAA,MAEjEsC,QAAQrR,QAAO2O;AAAAA,MACf2C,QAAQ1D,QAAQ5N,QAAOuR,KAAKvR,QAAO+O,IAAI;AAAA,MACvC9F,SAAS2E,QAAQ5N,QAAOuR,KAAKvR,QAAO+O,IAAI;AAAA,MAExCkF,OAAOjU,QAAOiU;AAAAA,IACf;AAAA,EACH;AAEA,QAAMqvH,SAASD,UAAU31H,wBAAa,IAAI,CAAC;AAC3C,QAAM61H,UAAUF,UAAU31H,wBAAa,KAAK,CAAC;AAEtC,WAASO,QAAQgD,SAAwB;AAC9C,WAAOA,UAAUqyH,SAASC;AAAAA,EAC5B;AC3CA,QAAMv1H,oBAAoB,oBAAI3C,IAAI,CAAC,MAAM,SAAS,QAAQ,OAAO,MAAM,KAAK,CAAC;AAU7E,QAAM2D,YAAU;AAKhB,QAAMC,UAAU;AAEhB,MAAIC;AA+FG;AAIL,UAAMC,UAAU;AAIhB,UAAMC,eAAe,SAAUlK,QAAYmK,QAAgBpP,OAAc;AACvE,UAAIiF,OAAMoK,SAAS,QAAQ;AACzB,YACEvD,0BAAAA,UAAU7G,OAAMlH,KAAK,KACrB2N,0BAAAA,qBAAqBzG,OAAMlH,OAAO,IAAI,KACtCgQ,kBAAkBpC,IAAI1G,OAAMlH,KAAK,GACjC;AACA,iBAAO;AAAA,QACT;AAEA,YACEmR,QAAQvS,KAAKsI,OAAMlH,KAAK,MACvBiC,MAAKoP,SAAS,CAAC,MAAM,OAAOpP,MAAKsP,MAAMF,SAAS,GAAGA,MAAM,MAAM,OAChE;AACA,iBAAO;AAAA,QACT;AAEA,YAAInK,OAAMlH,MAAM,CAAC,MAAMkH,OAAMlH,MAAM,CAAC,EAAEwR,eAAe;AACnD,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UAAItK,OAAMoK,SAAS,gBAAgBL,QAAQrS,KAAKsI,OAAMlH,KAAK,GAAG;AAC5D,eAAO;AAAA,MACT;AAEA,UACEkH,OAAMoK,SAAS,cACdpK,OAAMlH,UAAU,OAAOkH,OAAMlH,UAAU,MACxC;AACA,eAAO;AAAA,MACT;AAEA,aAAOkH,OAAMoK;AAAAA,IACd;AAEDJ,eAAW,WAAWjP,OAAc;AAClC,UAAIwP;AACJ,aAAQA,QAAShG,UAAiBqD,QAAQ4C,KAAKzP,KAAI,GAAI;AACrD,cAAMiF,SAASuE,UAAiBkG,aAAaF,KAAK;AAElD,cAAM;AAAA,UACJH,MAAMF,aAAalK,QAAOuK,MAAMhS,OAAOwC,KAAI;AAAA,UAC3CjC,OAAOkH,OAAMlH;AAAAA,QACd;AAAA,MACH;AAAA,IACD;AAAA,EACH;AAEO,WAAS2S,UAAU1Q,OAAc;AACtC,QAAIA,UAAS,GAAI,QAAO;AAExB,UAAM4P,OAAO5B,QAAQ,IAAI;AAEzB,QAAI6B,cAAc;AAElB,eAAW;AAAA,MAAER;AAAAA,MAAMtR,OAAAA;AAAAA,IAAM,KAAKkR,SAASjP,KAAI,GAAG;AAC5C,UAAIqP,QAAQO,MAAM;AAChBC,uBAAe9R,OACZgS,MAAMhB,SAAO,EACbiB,IAAIC,SAAOL,KAAKP,IAAI,EAAuBY,GAAG,CAAC,EAC/CC,KAAK,IAAI;AAAA,MACd,OAAO;AACLL,uBAAe9R;AAAAA,MACjB;AAAA,IACF;AAEA,WAAO8R;AAAAA,EACT;AC1MA,MAAIsB,0BAA0B;AAsC9B,QAAMpC,UAAU;AAQhB,WAASwC,eACPC,KACArS,SACAkG,MAKA;AACA,UAAMoM,WAAkBxE,OAAAyE,OAAA;AAAA,MACtBC,QAAQ;AAAA,MACR7U,MAAM;AAAA,IACH0U,GAAAA,IAAII,KAAK;AAEd,UAAMC,SAAgB5E,OAAAyE,OACjBD,CAAAA,GAAAA,UACAD,IAAIM,GAAG;AAEZ,UAAM;AAAA,MAAEC,aAAa;AAAA,MAAGC,aAAa;AAAA,IAAG,IAAG3M,QAAQ,CAAE;AACrD,UAAM4M,YAAYR,SAAS3U;AAC3B,UAAMoV,cAAcT,SAASE;AAC7B,UAAMQ,UAAUN,OAAO/U;AACvB,UAAMsV,YAAYP,OAAOF;AAEzB,QAAIC,QAAQS,KAAKC,IAAIL,aAAaF,aAAa,IAAI,CAAC;AACpD,QAAID,MAAMO,KAAKE,IAAIpT,QAAOkL,QAAQ8H,UAAUH,UAAU;AAEtD,QAAIC,cAAc,IAAI;AACpBL,cAAQ;AAAA,IACV;AAEA,QAAIO,YAAY,IAAI;AAClBL,YAAM3S,QAAOkL;AAAAA,IACf;AAEA,UAAMmI,WAAWL,UAAUF;AAC3B,UAAMQ,cAA2B,CAAE;AAEnC,QAAID,UAAU;AACZ,eAASpI,IAAI,GAAGA,KAAKoI,UAAUpI,KAAK;AAClC,cAAMsI,aAAatI,IAAI6H;AAEvB,YAAI,CAACC,aAAa;AAChBO,sBAAYC,UAAU,IAAI;AAAA,QAC5B,WAAWtI,MAAM,GAAG;AAClB,gBAAMuI,eAAexT,QAAOuT,aAAa,CAAC,EAAErI;AAE5CoI,sBAAYC,UAAU,IAAI,CAACR,aAAaS,eAAeT,cAAc,CAAC;AAAA,QACxE,WAAW9H,MAAMoI,UAAU;AACzBC,sBAAYC,UAAU,IAAI,CAAC,GAAGN,SAAS;AAAA,QACzC,OAAO;AACL,gBAAMO,eAAexT,QAAOuT,aAAatI,CAAC,EAAEC;AAE5CoI,sBAAYC,UAAU,IAAI,CAAC,GAAGC,YAAY;AAAA,QAC5C;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAIT,gBAAgBE,WAAW;AAC7B,YAAIF,aAAa;AACfO,sBAAYR,SAAS,IAAI,CAACC,aAAa,CAAC;AAAA,QAC1C,OAAO;AACLO,sBAAYR,SAAS,IAAI;AAAA,QAC3B;AAAA,MACF,OAAO;AACLQ,oBAAYR,SAAS,IAAI,CAACC,aAAaE,YAAYF,WAAW;AAAA,MAChE;AAAA,IACF;AAEA,WAAO;AAAA,MAAEN;AAAAA,MAAOE;AAAAA,MAAKW;AAAAA,IAAa;AAAA,EACpC;AAEO,WAASG,iBACdC,UACArB,KACAnM,OAAgB,CAAA,GACR;AACR,UAAM8K,kBACJ9K,KAAKgL,cAAeD,iBAAkB,KAAI/K,KAAKyN;AACjD,UAAMlD,OAAO5B,QAAQmC,eAAe;AAEpC,UAAM8C,QAAQJ,SAAS9C,MAAMhB,OAAO;AACpC,UAAM;AAAA,MAAE6C;AAAAA,MAAOE;AAAAA,MAAKW;AAAAA,IAAa,IAAGlB,eAAeC,KAAKyB,OAAO5N,IAAI;AACnE,UAAM6N,aAAa1B,IAAII,SAAS,OAAOJ,IAAII,MAAMD,WAAW;AAE5D,UAAMwB,iBAAiB5I,OAAOuH,GAAG,EAAEzH;AAEnC,UAAM+I,mBAAmBjD,kBAAkBO,UAAUmC,QAAQ,IAAIA;AAEjE,QAAIQ,QAAQD,iBACTrD,MAAMhB,SAAS+C,GAAG,EAClBxC,MAAMsC,OAAOE,GAAG,EAChB9B,IAAI,CAAClT,OAAMU,WAAU;AACpB,YAAMkB,UAASkT,QAAQ,IAAIpU;AAC3B,YAAM8V,eAAe,IAAI5U,OAAM,GAAG4Q,MAAM,CAAC6D,cAAc;AACvD,YAAM/B,SAAS,IAAIkC,YAAY;AAC/B,YAAMC,YAAYd,YAAY/T,OAAM;AACpC,YAAM8U,iBAAiB,CAACf,YAAY/T,UAAS,CAAC;AAC9C,UAAI6U,WAAW;AACb,YAAIE,aAAa;AACjB,YAAIC,MAAMC,QAAQJ,SAAS,GAAG;AAC5B,gBAAMK,gBAAgB9W,MACnBwS,MAAM,GAAG+C,KAAKC,IAAIiB,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,EACtCM,QAAQ,UAAU,GAAG;AACxB,gBAAMC,kBAAkBP,UAAU,CAAC,KAAK;AAExCE,uBAAa,CACX,OACA7D,KAAKwB,OAAOA,OAAOyC,QAAQ,OAAO,GAAG,CAAC,GACtC,KACAD,eACAhE,KAAKyB,OAAO,GAAG,EAAE0C,OAAOD,eAAe,CAAC,EACxC5D,KAAK,EAAE;AAET,cAAIsD,kBAAkBnO,KAAK2D,SAAS;AAClCyK,0BAAc,MAAM7D,KAAK5G,QAAQ3D,KAAK2D,OAAO;AAAA,UAC/C;AAAA,QACF;AACA,eAAO,CACL4G,KAAKyB,OAAO,GAAG,GACfzB,KAAKwB,OAAOA,MAAM,GAClBtU,MAAKuN,SAAS,IAAI,IAAIvN,KAAI,KAAK,IAC/B2W,UAAU,EACVvD,KAAK,EAAE;AAAA,MACX,OAAO;AACL,eAAO,IAAIN,KAAKwB,OAAOA,MAAM,CAAC,GAAGtU,MAAKuN,SAAS,IAAI,IAAIvN,KAAI,KAAK,EAAE;AAAA,MACpE;AAAA,IACF,CAAC,EACAoT,KAAK,IAAI;AAEZ,QAAI7K,KAAK2D,WAAW,CAACkK,YAAY;AAC/BG,cAAQ,GAAG,IAAIU,OAAOZ,iBAAiB,CAAC,CAAC,GAAG9N,KAAK2D,OAAO;AAAA,EAAKqK,KAAK;AAAA,IACpE;AAEA,QAAIlD,iBAAiB;AACnB,aAAOP,KAAKoE,MAAMX,KAAK;AAAA,IACzB,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;AAMe,WAAA7V,OACbqV,UACAH,YACAwB,WACA7O,OAAgB,CAAA,GACR;AACR,QAAI,CAAC8L,yBAAyB;AAC5BA,gCAA0B;AAE1B,YAAMnI,UACJ;AAEF,UAAIjF,QAAQoQ,aAAa;AAGvBpQ,gBAAQoQ,YAAYnL,SAAS,oBAAoB;AAAA,MACnD,OAAO;AACL,cAAMoL,mBAAmB,IAAIC,MAAMrL,OAAO;AAC1CoL,yBAAiBzJ,OAAO;AACxB2J,gBAAQC,KAAK,IAAIF,MAAMrL,OAAO,CAAC;AAAA,MACjC;AAAA,IACF;AAEAkL,gBAAY7B,KAAKC,IAAI4B,WAAW,CAAC;AAEjC,UAAMM,WAAyB;AAAA,MAC7B5C,OAAO;AAAA,QAAED,QAAQuC;AAAAA,QAAWpX,MAAM4V;AAAAA,MAAW;AAAA,IAC9C;AAED,WAAOE,iBAAiBC,UAAU2B,UAAUnP,IAAI;AAAA,EAClD;;;;;;;;;;;;;;ACjOA,MAAAs6D,KAAAv5D,aAAA;AAeA,MAAAm9H,UAAAn9H,aAAA;AACA,MAAAo9H,aAAAp9H,aAAA;AAAqD,QAAA;AAAA,IAfnD4T;AAAAA,IACAO;AAAAA,IACA6P;AAAAA,IACAvP;AAAAA,IACA0I;AAAAA,IACAhI;AAAAA,IACA0I;AAAAA,IACA0F;AAAAA,IACA3O;AAAAA,IACAq9C,sBAAAA;AAAAA,IACA4C,UAAAA;AAAAA,EAAQ,IAAA0E;AAuBV,QAAM8jE,UAAU;AAED,WAASC,sBACtBC,WACA15H,MACA5E,MACU;AACV,UAAM;AAAA,MACJ46D;AAAAA,MACAC;AAAAA,MACAnI;AAAAA,MACAoI;AAAAA,IACF,IAAI96D;AAEJ,UAAMy6D,MAAM8jE,mBAAmB35H,MAAM5E,KAAK+6D,QAAQD,qBAAqB;AAEvE9H,IAAAA,sBAAqByH,KAAK;AAAA,MACxB/H;AAAAA,IACF,CAAC;AAED4rE,cAAUxwG,SAAS2sC,GAAG;AAEtB,UAAMjjE,SAAuB;AAAA,MAC3BgnI,WAAW;AAAA,QAAEvT,cAAc,CAAE;AAAA,QAAEwT,kBAAkB,oBAAI14H,IAAG;AAAA,MAAI;AAAA,MAC5D8M,QAAQ;AAAA,QAAEo4G,cAAc,CAAE;AAAA,QAAEwT,kBAAkB,oBAAI14H,IAAG;AAAA,MAAI;AAAA,MACzD60D;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IACD;AAEDlF,IAAAA,UAAS6E,KAAKikE,2BAA2BlnI,MAAK;AAE9C,WAAAoQ,OAAAyE,OAAA;AAAA,MACEouD;AAAAA,IAAG,GACCjjE,OAAMgnI,UAAUvT,aAAajmH,SAASxN,OAAMgnI,YAAYhnI,OAAMqb,MAAM;AAAA,EAE5E;AAEA,WAAS6rH,0BACP7lI,OACAm9D,WACAx+D,QACA;AAAA,QAAAmnI;AACA,QAAIr5H;AAEJ,QAAIs5H,2BAA2BpnI,OAAMgnI,UAAUvT,aAAajmH,SAAS;AAErE,QAAI4Z,cAAc/lB,KAAI,GAAG;AACvB,UAAIrB,OAAMsjE,0BAA0B,OAAO;AACzC,cAAM,IAAI9rD,MACR,kFAEF;AAAA,MACF;AACA1J,aAAOzM,MAAKyM,KAAKA;AACjBs5H,iCAA2B;AAAA,IAC7B,WAAWA,4BAA4BpnI,OAAMsjE,uBAAuB;AAClE;AAAA,IACD,WAAUtlD,aAAa3c,KAAI,KAAKqlB,gBAAgBrlB,KAAI,GAAG;AACtDyM,aAAOzM,MAAKyM;AAAAA,IACd,WAAWqQ,gBAAgB9c,KAAI,GAAG;AAChCyM,aAAOzM,MAAKH;AAAAA,IACd,OAAO;AACL;AAAA,IACF;AAEA,QACEkmI,6BACCpnI,OAAMqjE,sBAAsB,QAAQrjE,OAAMojE,wBAAwB,OACnE;AAGA,YAAM,IAAI5rD,MACR,yGAEF;AAAA,IACF;AAEA,QACE,CAAC4vH,6BACApnI,OAAMqjE,uBAAuB,SAC5B,EAAErjE,OAAMqjE,sBAAsBujE,SAAS9mI,KAAKgO,IAAI,MAClD,GAAAq5H,wBAACnnI,OAAMojE,yBAAoB,QAA1B+jE,sBAA4Br4H,IAAIhB,IAAI,IACrC;AACA;AAAA,IACF;AAGA0wD,gBAAYA,UAAU/rD,MAAO;AAE7B,UAAM;AAAA,MAAEpR,MAAMm7B;AAAAA,MAAQ17B,KAAAA;AAAAA,IAAK,IAAG09D,UAAUA,UAAUhxD,SAAS,CAAC;AAE5D,QAAIgF;AACJ,QACE2L,gBAAgB9c,KAAI,KACpB+lB,cAAc/lB,OAAM;AAAA,MAAEmrB,cAAc;AAAA,IAAgB,CAAC,GACrD;AACAha,aAAO;AAAA,IACT,WACGkM,gBAAgB8d,MAAM,KAAK17B,SAAQ,eACnCqc,iBAAiBqf,MAAM,KAAK17B,SAAQ,eACpCysB,WAAWiP,MAAM,KAAK17B,SAAQ,UAC/B;AACA0R,aAAO;AAAA,IACT,WAAWkL,sBAAsB8e,MAAM,KAAK,CAACpV,cAAc/lB,KAAI,GAAG;AAChEmR,aAAO;AACPgsD,kBAAYA,UAAU/rD,MAAM,GAAG,EAAE;AAAA,IAClC,WAAUqa,YAAYzrB,KAAI,KAAK+lB,cAAc/lB,KAAI,GAAG;AACnDmR,aAAO;AAAA,IACT,OAAO;AACLA,aAAO;AAAA,IACT;AAEA,UAAM;AAAA,MAAEihH,cAAAA;AAAAA,MAAcwT;AAAAA,IAAkB,IAAG,CAACG,2BACxCpnI,OAAMqb,SACNrb,OAAMgnI;AAEVvT,IAAAA,cAAahrH,KAAK;AAAA,MAChBqF;AAAAA,MACA0E;AAAAA,MACA60H,SAASpkE,SAAOqkE,iBAAiBrkE,KAAKzE,SAAS;AAAA,MAC/C+oE,aAAaN,iBAAiBn4H,IAAIhB,IAAI;AAAA,IACxC,CAAC;AACDm5H,qBAAiBjrH,IAAIlO,IAAI;AAAA,EAC3B;AAEA,WAASw5H,iBAAiBrkE,KAAazE,WAA+B;AACpE,QAAIhiC,SAAiBymC;AACrB,aAAS11D,IAAI,GAAGA,IAAIixD,UAAUhxD,SAAS,GAAGD,KAAK;AAC7C,YAAM;AAAA,QAAEzM,KAAAA;AAAAA,QAAKH,OAAAA;AAAAA,MAAM,IAAI69D,UAAUjxD,CAAC;AAElC,UAAI5M,WAAU+S,QAAW;AACvB8oB,iBAAUA,OAAe17B,IAAG;AAAA,MAC9B,OAAO;AACL07B,iBAAUA,OAAe17B,IAAG,EAAEH,MAAK;AAAA,MACrC;AAAA,IACF;AAEA,UAAM;AAAA,MAAEG,KAAAA;AAAAA,MAAKH,OAAAA;AAAAA,IAAO,IAAG69D,UAAUA,UAAUhxD,SAAS,CAAC;AAErD,WAAO;AAAA,MAAEgvB;AAAAA,MAAQ17B,KAAAA;AAAAA,MAAKH,OAAAA;AAAAA,IAAO;AAAA,EAC/B;AAgBA,WAASomI,mBACP35H,MACA0N,YACAwoD,uBACQ;AACR,UAAMz/D,YAAWiX,WAAWjX,WAAW,CAAA,GAAI4O,MAAO;AAClD,QAAI6wD,0BAA0B,OAAO;AACnCz/D,MAAAA,SAAQ4E,KAAK,cAAc;AAAA,IAC7B;AAEAqS,iBAAU1K,OAAAyE,OAAA;AAAA,MACR49D,4BAA4B;AAAA,MAC5BG,yBAAyB;AAAA,MACzBz1C,YAAY;AAAA,IAAQ,GACjBriB,YAAU;AAAA,MACbjX,SAAAA;AAAAA,KACD;AAED,QAAI;AACF,iBAAO0E,QAAK,OAAC6E,MAAM0N,UAAU;AAAA,IAC9B,SAAQ5B,KAAK;AACZ,YAAMvE,MAAMuE,IAAIvE;AAChB,UAAIA,KAAK;AACPuE,YAAI/M,WAAW,QAAO4J,GAAAA,WAAAA,kBAAiB3I,MAAM;AAAA,UAAE2H,OAAOJ;AAAAA,QAAI,CAAC;AAC3DuE,YAAI9L,OAAO;AAAA,MACb;AACA,YAAM8L;AAAAA,IACR;AAAA,EACF;;;;;;;;;;;;AC3NA,MAAA4pD,KAAAv5D,aAAA;AAUsB,QAAA;AAAA,IATpBq8B;AAAAA,IACAsyB,WAAAA;AAAAA,IACAtxB;AAAAA,IACAC;AAAAA,IACApM,YAAAA;AAAAA,IACA3N;AAAAA,IACA3O;AAAAA,IACA0pB;AAAAA,IACAvR,UAAAA;AAAAA,EAAQ,IAAAwsC;AAOK,WAAS0kE,qBACtBC,UACA7jE,cACQ;AACR,UAAMX,MAAM/K,WAAUuvE,SAASxkE,GAAG;AAElC,QAAIW,cAAc;AAChB6jE,eAAShU,aAAat5F,QAAQjiB,CAAAA,iBAAe;AAC3C,YAAI,CAAC1H,eAAAC,KAAcmzD,cAAc1rD,aAAYpK,IAAI,GAAG;AAClD,gBAAM45H,kBAAkBxvH,aAAYpK;AAEpC,gBAAM,IAAI0J,MACR,qCAAqCkwH,eAAe;AAAA;AAAA,6EAEeA,eAAe;AAAA,wCACpDA,eAAe,MAC/C;AAAA,QACF;AAAA,MACF,CAAC;AACDt3H,aAAOnK,KAAK29D,YAAY,EAAEzpC,QAAQr5B,CAAAA,SAAO;AACvC,YAAI,CAAC2mI,SAASR,iBAAiBn4H,IAAIhO,IAAG,GAAG;AACvC,gBAAM,IAAI0W,MAAM,yBAAyB1W,IAAG,SAAS;AAAA,QACvD;AAAA,MACF,CAAC;AAAA,IACH;AAIA2mI,aAAShU,aACNhhH,MAAK,EACLk1H,QAAS,EACTxtG,QAAQjiB,CAAAA,iBAAe;AACtB,UAAI;AACF0vH,yBACE1vH,cACA+qD,KACCW,gBAAgBA,aAAa1rD,aAAYpK,IAAI,KAAM,IACtD;AAAA,MACD,SAAQ8B,GAAG;AACVA,UAAEzD,UAAU,gCAAgC+L,aAAYpK,IAAI,MAAM8B,EAAEzD,OAAO;AAC3E,cAAMyD;AAAAA,MACR;AAAA,IACF,CAAC;AAEH,WAAOqzD;AAAAA,EACT;AAEA,WAAS2kE,iBACP1vH,cACA+qD,KACAc,cACA;AAGA,QAAI7rD,aAAYqvH,aAAa;AAC3B,UAAI1wH,MAAMC,QAAQitD,YAAW,GAAG;AAC9BA,QAAAA,eAAcA,aAAY5wD,IAAI9R,CAAAA,UAAQ62D,WAAU72D,KAAI,CAAC;AAAA,MACvD,WAAW,OAAO0iE,iBAAgB,UAAU;AAC1CA,QAAAA,eAAc7L,WAAU6L,YAAW;AAAA,MACrC;AAAA,IACF;AAEA,UAAM;AAAA,MAAEvnC;AAAAA,MAAQ17B,KAAAA;AAAAA,MAAKH,OAAAA;AAAAA,IAAM,IAAIuX,aAAYmvH,QAAQpkE,GAAG;AAEtD,QAAI/qD,aAAY1F,SAAS,UAAU;AACjC,UAAI,OAAOuxD,iBAAgB,UAAU;AACnCA,QAAAA,eAAcl8B,cAAck8B,YAAW;AAAA,MACzC;AACA,UAAI,CAACA,gBAAe,CAAC5lD,gBAAgB4lD,YAAW,GAAG;AACjD,cAAM,IAAIvsD,MAAM,8BAA8B;AAAA,MAChD;AAAA,IACF,WAAWU,aAAY1F,SAAS,aAAa;AAC3C,UAAI7R,WAAU+S,QAAW;AACvB,YAAI,CAACqwD,cAAa;AAChBA,UAAAA,eAAcn9B,eAAgB;AAAA,QAC/B,WAAU/vB,MAAMC,QAAQitD,YAAW,GAAG;AACrCA,UAAAA,eAAcn+B,eAAem+B,YAAW;AAAA,QAC1C,WAAW,OAAOA,iBAAgB,UAAU;AAC1CA,UAAAA,eAAcl9B,oBAAoBpM,YAAWspC,YAAW,CAAC;AAAA,QAC3D,WAAW,CAACj3C,YAAYi3C,YAAW,GAAG;AACpCA,UAAAA,eAAcl9B,oBAAoBk9B,YAAW;AAAA,QAC/C;AAAA,MACF,OAAO;AACL,YAAIA,gBAAe,CAACltD,MAAMC,QAAQitD,YAAW,GAAG;AAC9C,cAAI,OAAOA,iBAAgB,UAAU;AACnCA,YAAAA,eAActpC,YAAWspC,YAAW;AAAA,UACtC;AACA,cAAI,CAACj3C,YAAYi3C,YAAW,GAAG;AAC7BA,YAAAA,eAAcl9B,oBAAoBk9B,YAAW;AAAA,UAC/C;AAAA,QACF;AAAA,MACF;AAAA,IACF,WAAW7rD,aAAY1F,SAAS,SAAS;AACvC,UAAI,OAAOuxD,iBAAgB,UAAU;AACnCA,QAAAA,eAActpC,YAAWspC,YAAW;AAAA,MACtC;AAEA,UAAIpjE,WAAU+S,OAAW,OAAM,IAAI8D,MAAM,oBAAoB;AAAA,IAC/D,OAAO;AACL,UAAI,OAAOusD,iBAAgB,UAAU;AACnCA,QAAAA,eAActpC,YAAWspC,YAAW;AAAA,MACtC;AACA,UAAIltD,MAAMC,QAAQitD,YAAW,GAAG;AAC9B,cAAM,IAAIvsD,MAAM,iDAAiD;AAAA,MACnE;AAAA,IACF;AAEA,aAASnK,IAAImvB,SAAa17B,MAAUI,QAAY;AAC9C,YAAMG,QAAOm7B,QAAO17B,IAAG;AACvB07B,MAAAA,QAAO17B,IAAG,IAAII;AACd,UAAIG,MAAKmR,SAAS,gBAAgBnR,MAAKmR,SAAS,eAAe;AAC7D,YAAInR,MAAKq7B,gBAAgB;AACvBx7B,UAAAA,OAAMw7B,iBAAiBr7B,MAAKq7B;AAAAA,QAC9B;AACA,YAAIr7B,MAAKu0B,UAAU;AACjB10B,UAAAA,OAAM00B,WAAWv0B,MAAKu0B;AAAAA,QACxB;AACA,YAAIv0B,MAAKs7B,YAAY;AACnBz7B,UAAAA,OAAMy7B,aAAat7B,MAAKs7B;AAAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,QAAIh8B,WAAU+S,QAAW;AACvB4iB,MAAAA,UAASkG,QAAQ17B,MAAKijE,YAAW;AAEjC12D,UAAImvB,QAAQ17B,MAAKijE,YAAW;AAAA,IAC9B,OAAO;AACL,YAAMyqD,QAAwBhyF,OAAe17B,IAAG,EAAE2R,MAAO;AAEzD,UAAIyF,aAAY1F,SAAS,eAAe0F,aAAY1F,SAAS,SAAS;AACpE,YAAIuxD,gBAAe,MAAM;AACvByqD,gBAAMpzG,OAAOza,QAAO,CAAC;AAAA,QACtB,WAAUkW,MAAMC,QAAQitD,YAAW,GAAG;AACrCyqD,gBAAMpzG,OAAOza,QAAO,GAAG,GAAGojE,YAAW;AAAA,QACvC,OAAO;AACL12D,cAAImhH,OAAO7tH,QAAOojE,YAAW;AAAA,QAC/B;AAAA,MACF,OAAO;AACL12D,YAAImhH,OAAO7tH,QAAOojE,YAAW;AAAA,MAC/B;AAEAztC,MAAAA,UAASkG,QAAQ17B,MAAK0tH,KAAK;AAC1BhyF,aAAe17B,IAAG,IAAI0tH;AAAAA,IACzB;AAAA,EACF;;;;;;;;;;;AC9JA,MAAAqX,WAAAt8H,iBAAA;AACA,MAAAs+H,SAAAt+H,eAAA;AACA,MAAAu+H,YAAAv+H,gBAAA;AAEe,WAASw+H,eACtBjB,WACA15H,MACA5E,MACsB;AACtB4E,WAAO05H,UAAU15H,KAAKA,IAAI;AAE1B,QAAIq6H;AAEJ,WAAQhqB,SAAkB;AACxB,YAAM75C,gBAAe,GAAAD,SAAqB,uBAAC85C,GAAG;AAE9C,UAAI,CAACgqB,SAAUA,aAAWZ,GAAAA,OAAqB,SAACC,WAAW15H,MAAM5E,IAAI;AAErE,aAAOs+H,UAAU9jE,QAAOwkE,GAAAA,UAAoB,SAACC,UAAU7jE,YAAY,CAAC;AAAA,IACrE;AAAA,EACH;;;;;;;;;;;;ACrBA,MAAAiiE,WAAAt8H,iBAAA;AACA,MAAAs+H,SAAAt+H,eAAA;AACA,MAAAu+H,YAAAv+H,gBAAA;AAEe,WAASy+H,gBACtBlB,WACAmB,KACAz/H,MAC0C;AAC1C,UAAM;AAAA,MAAEi/H;AAAAA,MAAU7iD;AAAAA,IAAO,IAAGsjD,iBAAiBpB,WAAWmB,KAAKz/H,IAAI;AAEjE,WAAOi1G,SAAO;AACZ,YAAM0qB,sBAA4C,CAAE;AACpD1qB,UAAItjF,QAAQ,CAAC4pC,cAAax2D,MAAM;AAC9B46H,4BAAoBvjD,MAAMr3E,CAAC,CAAC,IAAIw2D;AAAAA,MAClC,CAAC;AAED,aAAQ05C,CAAAA,SAAiB;AACvB,cAAM75C,gBAAe,GAAAD,SAAqB,uBAAC85C,IAAG;AAE9C,YAAI75C,cAAc;AAChBxzD,iBAAOnK,KAAK29D,YAAY,EAAEzpC,QAAQr5B,CAAAA,SAAO;AACvC,gBAAI0P,eAAAC,KAAc03H,qBAAqBrnI,IAAG,GAAG;AAC3C,oBAAM,IAAI0W,MAAM,iCAAiC;AAAA,YACnD;AAAA,UACF,CAAC;AAAA,QACH;AAEA,eAAOsvH,UAAU9jE,WACfwkE,UAAoB,SAClBC,UACA7jE,eACIxzD,OAAOyE,OAAO+uD,cAAcukE,mBAAmB,IAC/CA,mBACN,CACF;AAAA,MACD;AAAA,IACF;AAAA,EACH;AAEA,WAASD,iBACPpB,WACAmB,KACAz/H,MACA;AACA,QAAIuT,SAAS;AAEb,UAAMikB,MAAMioG,IAAI50H,KAAK,EAAE;AAEvB,OAAG;AAID0I,eAAS,OAAOA;AAAAA,IAClB,SAASikB,IAAIpI,SAAS7b,MAAM;AAE5B,UAAM;AAAA,MAAE6oE;AAAAA,MAAOx3E;AAAAA,IAAK,IAAIg7H,kBAAkBH,KAAKlsH,MAAM;AAErD,UAAM0rH,YAAWZ,GAAAA,OAAAA,SAAsBC,WAAWA,UAAU15H,KAAKA,IAAI,GAAG;AAAA,MACtEm2D,QAAQ/6D,KAAK+6D;AAAAA,MAIbH,sBAAsB,IAAI70D,IACxBq2E,MAAM1qD,OACJ1xB,KAAK46D,uBAAuBvsD,MAAM2/C,KAAKhuD,KAAK46D,oBAAoB,IAAI,CACtE,CAAA,CACF;AAAA,MACAC,oBAAoB76D,KAAK66D;AAAAA,MACzBnI,kBAAkB1yD,KAAK0yD;AAAAA,MACvBoI,uBAAuB96D,KAAK86D;AAAAA,IAC9B,CAAC;AAED,WAAO;AAAA,MAAEmkE;AAAAA,MAAU7iD;AAAAA,IAAO;AAAA,EAC5B;AAEA,WAASwjD,kBACPH,KACAlsH,QACwC;AACxC,UAAM6oE,QAAQ,CAAE;AAEhB,QAAIx3E,OAAO66H,IAAI,CAAC;AAEhB,aAAS16H,IAAI,GAAGA,IAAI06H,IAAIz6H,QAAQD,KAAK;AACnC,YAAMrM,SAAQ,GAAG6a,MAAM,GAAGxO,IAAI,CAAC;AAC/Bq3E,YAAMn8E,KAAKvH,MAAK;AAEhBkM,cAAQlM,SAAQ+mI,IAAI16H,CAAC;AAAA,IACvB;AAEA,WAAO;AAAA,MAAEq3E;AAAAA,MAAOx3E;AAAAA,IAAM;AAAA,EACxB;;;;;;;;;;;AC9FA,MAAAy4H,WAAAt8H,iBAAA;AAQA,MAAA8+H,UAAA9+H,gBAAA;AACA,MAAA++H,WAAA/+H,eAAA;AA4BA,QAAMg/H,qBAA+BjyG,SAAAA,UAAS;AAAA,IAC5C+sC,oBAAoB;AAAA,EACtB,CAAC;AAEc,WAASmlE,sBACtB1B,WACA2B,aACoB;AACpB,UAAMC,kBAAkB,oBAAI74H,QAAS;AACrC,UAAM84H,mBAAmB,oBAAI94H,QAAS;AACtC,UAAM+4H,aAAaH,gBAAenyG,GAAAA,SAAQ,UAAC,IAAI;AAE/C,WAAOlmB,OAAOyE,OACX,CAACozH,QAAQpvG,SAAS;AACjB,UAAI,OAAOovG,QAAQ,UAAU;AAC3B,YAAIpvG,KAAKrrB,SAAS,EAAG,OAAM,IAAIgK,MAAM,0BAA0B;AAC/D,eAAOqxH,eACL,GAAAd,QAAc,SAACjB,WAAWmB,MAAK,GAAA9kE,SAAK,OAACylE,aAAY,GAAAtyG,SAAQ,UAACuC,KAAK,CAAC,CAAC,CAAC,CAAC,CACrE;AAAA,MACD,WAAUhiB,MAAMC,QAAQmxH,GAAG,GAAG;AAC7B,YAAI7lI,WAAUsmI,gBAAgBz4H,IAAIg4H,GAAG;AACrC,YAAI,CAAC7lI,UAAS;AACZA,UAAAA,YAAU4lI,GAAAA,SAAe,SAAClB,WAAWmB,KAAKW,UAAU;AACpDF,0BAAgBr7H,IAAI46H,KAAK7lI,QAAO;AAAA,QAClC;AACA,eAAOymI,cAAczmI,SAAQy2B,IAAI,CAAC;AAAA,MACnC,WAAU,OAAOovG,QAAQ,YAAYA,KAAK;AACzC,YAAIpvG,KAAKrrB,SAAS,EAAG,OAAM,IAAIgK,MAAM,0BAA0B;AAC/D,eAAOgxH,sBACL1B,YACA3jE,GAAAA,SAAK,OAACylE,aAAY,GAAAtyG,SAAQ,UAAC2xG,GAAG,CAAC,CACjC;AAAA,MACF;AACA,YAAM,IAAIzwH,MAAM,6BAA6B,OAAOywH,GAAG,EAAE;AAAA,IAC3D,GACA;AAAA,MACEhlE,KAAKA,CAACglE,QAAgCpvG,SAAyB;AAC7D,YAAI,OAAOovG,QAAQ,UAAU;AAC3B,cAAIpvG,KAAKrrB,SAAS,EAAG,OAAM,IAAIgK,MAAM,0BAA0B;AAC/D,kBAAOuwH,GAAAA,QAAAA,SACLjB,WACAmB,SACA9kE,SAAK,WAACA,SAAAA,OAAMylE,aAAY,GAAAtyG,SAAQ,UAACuC,KAAK,CAAC,CAAC,CAAC,GAAG0vG,cAAc,CAC5D,EAAG;AAAA,QACJ,WAAU1xH,MAAMC,QAAQmxH,GAAG,GAAG;AAC7B,cAAI7lI,WAAUumI,iBAAiB14H,IAAIg4H,GAAG;AACtC,cAAI,CAAC7lI,UAAS;AACZA,YAAAA,YAAU4lI,GAAAA,SAAe,SACvBlB,WACAmB,MACA9kE,GAAAA,gBAAMylE,YAAYL,cAAc,CAClC;AACAI,6BAAiBt7H,IAAI46H,KAAK7lI,QAAO;AAAA,UACnC;AACA,iBAAOA,SAAQy2B,IAAI,EAAG;AAAA,QACxB;AAEA,cAAM,IAAIrhB,MAAM,6BAA6B,OAAOywH,GAAG,EAAE;AAAA,MAC3D;AAAA,IACF,CACF;AAAA,EACF;AAEA,WAASY,cACP/vH,IACoB;AAGpB,QAAIgwH,YAAY;AAChB,QAAI;AAGF,YAAM,IAAItxH,MAAO;AAAA,IAClB,SAAQrX,QAAO;AACd,UAAIA,OAAMyD,OAAO;AAMfklI,oBAAY3oI,OAAMyD,MAAMsP,MAAM,IAAI,EAAET,MAAM,CAAC,EAAEY,KAAK,IAAI;AAAA,MACxD;AAAA,IACF;AAEA,WAAQoqG,SAAa;AACnB,UAAI;AACF,eAAO3kG,GAAG2kG,GAAG;AAAA,MACd,SAAQvkG,KAAK;AACZA,YAAItV,SAAS;AAAA;AAAA,EAAwBklI,SAAS;AAC9C,cAAM5vH;AAAAA,MACR;AAAA,IACD;AAAA,EACH;;;;;;;;;;;ACjIA,MAAA6vH,cAAAx/H,kBAAA;AACA,MAAAy/H,WAAAz/H,eAAA;AAEO,QAAM0/H,QAAKl1H,MAAA,SAAGy0H,GAAAA,SAAAA,SAAsBO,YAAWE,KAAK;AACpD,QAAMC,YAASn1H,MAAA,aAAGy0H,GAAAA,SAAAA,SAAsBO,YAAWG,SAAS;AAC5D,QAAMC,cAAUp1H,MAAA,cAAGy0H,GAAAA,SAAAA,SAAsBO,YAAWI,UAAU;AAC9D,QAAMpuG,aAAUhnB,MAAA,cAAGy0H,GAAAA,SAAAA,SAAsBO,YAAWhuG,UAAU;AAC9D,QAAMW,UAAO3nB,MAAA,WAAGy0H,GAAAA,SAAAA,SAAsBO,YAAWrtG,OAAO;AAAE3nB,QAAA,UAUlD3D,OAAOyE,OAAOo0H,MAAMvxE,KAAKhkD,MAAS,GAA6B;AAAA,IAC5Eu1H;AAAAA,IACAC;AAAAA,IACAC,YAAAA;AAAAA,IACApuG;AAAAA,IACAW;AAAAA,IACAunC,KAAKgmE,MAAMhmE;AAAAA,EACZ,CAAA;;;;;;;;;;;ACnBD,MAAAmmE,YAAA7/H,aAAA;AAiBA,WAAS8/H,OACPC,YACAhnI,SACAmlI,UACQ;AACR,WAAOr3H,OAAOm5H,OAAO;AAAA,MACnBD;AAAAA,MACArmE,KAAKA,MAAMiP,UAAQ,QAACx2C,QAAQunC,IAAI3gE,SAAQ;AAAA,QAAE44D,kBAAkB;AAAA,MAAK,CAAC;AAAA,MAClEusE;AAAAA,IACF,CAAC;AAAA,EACH;AAGA,QAAM+B,UAA+Bz1H,iBAAAA,UAAG;AAAA,IACtC5D,WAAW;AAAA,IAEXs5H,eAAeJ,OACb,WACA,mDACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEC,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzCC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAC,0BAA0BT,OACxB,gBACA,mcACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEK,2BAA2B,CAAC,WAAW;AAAA,MAAG;AAAA,MACpDH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAG,eAAeX,OACb,UACA,4xFACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,UAAU,aAAa,OAAO;AAAA,MAClDoiI,QAAQ;AAAA,QAAEM,eAAe,CAAC,WAAW;AAAA,MAAG;AAAA,MACxCJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZI,YAAY,CACV,+JAA+J;AAAA,QAEjKC,iBAAiB,CACf,2IACA,2GAA2G;AAAA,QAE7GC,eAAe,CACb,mIAAmI;AAAA,MAEvI;AAAA,IACF,CACF;AAAA,IAEAC,kBAAkBf,OAChB,SACA,0HACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEW,mBAAmB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC5CT,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAS,gBAAgBjB,OACd,gBACA,6DACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEa,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1CX,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAW,mBAAmBnB,OACjB,gBACA,kFACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEe,oBAAoB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC7Cb,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZO,kBAAkB,CAAC,+CAA+C;AAAA,MACpE;AAAA,IACF,CACF;AAAA,IAEAM,kBAAkBrB,OAChB,UACA,gLACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEiB,mBAAmB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC5Cf,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAe,uBAAuBvB,OACrB,gBACA,oJACA;AAAA,MACE/hI,SAAS,CAAC,gBAAgB;AAAA,MAC1BoiI,QAAQ;AAAA,QAAEmB,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjDjB,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAiB,wBAAwBzB,OACtB,gBACA,4eACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,QAAQ;AAAA,MAC7BoiI,QAAQ;AAAA,QAAEqB,yBAAyB,CAAC,WAAW;AAAA,MAAG;AAAA,MAClDnB,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZJ,eAAe,CACb,iFAAiF;AAAA,MAErF;AAAA,IACF,CACF;AAAA,IAEAuB,eAAe3B,OACb,UACA,6jCACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,aAAa,UAAU,SAAS;AAAA,MACpDoiI,QAAQ;AAAA,QACNuB,gBAAgB,CAAC,WAAW;AAAA,QAC5BC,uBAAuB,CACrB,aACA,6DACA,yDACA,oDACA,gDAAgD;AAAA,MAEnD;AAAA,MACDtB,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsB,kBAAkB9B,OAChB,gBACA,kaACA;AAAA,MACE/hI,SAAS,CAAC,SAAS;AAAA,MACnBoiI,QAAQ;AAAA,QACN0B,oBAAoB,CAClB,aACA,0GACA,wGAAwG;AAAA,QAE1GC,mBAAmB,CAAC,WAAW;AAAA,MAChC;AAAA,MACDzB,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAyB,qBAAqBjC,OACnB,gBACA,mEACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE6B,sBAAsB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC/C3B,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QAAEJ,eAAe,CAAC,oCAAoC;AAAA,MAAE;AAAA,IACxE,CACF;AAAA,IAEA+B,WAAWnC,OACT,UACA,wLACA;AAAA,MACE/hI,SAAS,CAAC,SAAS;AAAA,MACnBoiI,QAAQ;AAAA,QAAE+B,YAAY,CAAC,WAAW;AAAA,MAAG;AAAA,MACrC7B,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZvvH,gBAAgB,CACd,0DACA,4FAA4F;AAAA,QAE9FoxH,0BAA0B,CACxB,mEAAmE;AAAA,QAErEC,2BAA2B,CACzB,kDAAkD;AAAA,MAEtD;AAAA,IACF,CACF;AAAA,IAEA1B,YAAYZ,OACV,UACA,sJACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,WAAW;AAAA,MAC/BoiI,QAAQ;AAAA,QAAEkC,aAAa,CAAC,WAAW;AAAA,MAAG;AAAA,MACtChC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAgC,2BAA2BxC,OACzB,UACA,+IACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEoC,4BAA4B,CAAC,WAAW;AAAA,MAAG;AAAA,MACrDlC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAkC,gBAAgB1C,OACd,gBACA,gHACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEsC,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1CpC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAoC,mBAAmB5C,OACjB,gBACA,6HACA;AAAA,MACE/hI,SAAS,CAAC,gBAAgB;AAAA,MAC1BoiI,QAAQ;AAAA,QAAEwC,oBAAoB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC7CtC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsC,uBAAuB9C,OACrB,UACA,6EACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE0C,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjDxC,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZa,kBAAkB,CAAC,gDAAgD;AAAA,MACrE;AAAA,IACF,CACF;AAAA,IAEA2B,2BAA2BhD,OACzB,UACA,yFACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE4C,4BAA4B,CAAC,WAAW;AAAA,MAAG;AAAA,MACrD1C,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZgC,2BAA2B,CACzB,oDAAoD;AAAA,MAExD;AAAA,IACF,CACF;AAAA,IAEAU,4BAA4BlD,OAC1B,gBACA,wJACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAE8C,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjD5C,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA4C,2BAA2BpD,OACzB,gBACA,6EACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QACNptG,IAAI,CACF,4BACA,wDACA,sDAAsD;AAAA,QAExDowG,uBAAuB,CAAC,WAAW;AAAA,MACpC;AAAA,MACD9C,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA8C,uBAAuBtD,OACrB,UACA,mFACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEkD,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjDhD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZa,kBAAkB,CAChB,8DAA8D;AAAA,MAElE;AAAA,IACF,CACF;AAAA,IAEAmC,oBAAoBxD,OAClB,UACA,wEACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEoD,qBAAqB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC9ClD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZa,kBAAkB,CAAC,gDAAgD;AAAA,MACrE;AAAA,IACF,CACF;AAAA,IAEAqC,4BAA4B1D,OAC1B,UACA,sFACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEsD,6BAA6B,CAAC,WAAW;AAAA,MAAG;AAAA,MACtDpD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZgC,2BAA2B,CACzB,oDAAoD;AAAA,MAExD;AAAA,IACF,CACF;AAAA,IAEAoB,oBAAoB5D,OAClB,UACA,8EACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEwD,qBAAqB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC9CtD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZa,kBAAkB,CAChB,8DAA8D;AAAA,MAElE;AAAA,IACF,CACF;AAAA,IAEAyC,6BAA6B9D,OAC3B,SACA,gFACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE0D,8BAA8B,CAAC,WAAW;AAAA,MAAG;AAAA,MACvDxD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZa,kBAAkB,CAAC,kDAAkD;AAAA,MACvE;AAAA,IACF,CACF;AAAA,IAEA2C,WAAWhE,OACT,gBACA,kNACA;AAAA,MACE/hI,SAAS,CAAC,SAAS;AAAA,MACnBoiI,QAAQ;AAAA,QAAE4D,YAAY,CAAC,WAAW;AAAA,MAAG;AAAA,MACrC1D,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ6B,0BAA0B,CAAC,gCAAgC;AAAA,QAC3D6B,gBAAgB,CACd,wDAAwD;AAAA,MAE5D;AAAA,IACF,CACF;AAAA,IAEAC,aAAanE,OACX,gBACA,gWACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACN+D,mBAAmB,CACjB,aACA,0DACA,wDAAwD;AAAA,QAE1DC,cAAc,CAAC,WAAW;AAAA,MAC3B;AAAA,MACD9D,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZM,eAAe,CACb,4EAA4E;AAAA,MAEhF;AAAA,IACF,CACF;AAAA,IAEAwD,2BAA2BtE,OACzB,SACA,yrBACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,SAAS,WAAW;AAAA,MACxCoiI,QAAQ;AAAA,QAAEkE,4BAA4B,CAAC,WAAW;AAAA,MAAG;AAAA,MACrDhE,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZgE,4BAA4B,CAC1B,mEAAmE;AAAA,MAEvE;AAAA,IACF,CACF;AAAA,IAEAC,gCAAgCzE,OAC9B,SACA,6eACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,SAAS,WAAW;AAAA,MACxCoiI,QAAQ;AAAA,QAAEqE,iCAAiC,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1DnE,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZgE,4BAA4B,CAC1B,iDAAiD;AAAA,MAErD;AAAA,IACF,CACF;AAAA,IAEAG,aAAa3E,OACX,SACA,mQACA;AAAA,MACE/hI,SAAS,CAAC,SAAS;AAAA,MACnBoiI,QAAQ;AAAA,QAAEuE,cAAc,CAAC,WAAW;AAAA,MAAG;AAAA,MACvCrE,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZvvH,gBAAgB,CACd,sEACA,6FAA6F;AAAA,QAE/FoxH,0BAA0B,CACxB,+CAA+C;AAAA,QAEjDC,2BAA2B,CACzB,yDAAyD;AAAA,MAE7D;AAAA,IACF,CACF;AAAA,IAEAuC,UAAU7E,OACR,SACA,43NACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,aAAa,UAAU,gBAAgB;AAAA,MAC3DoiI,QAAQ;AAAA,QACNyE,WAAW,CAAC,WAAW;AAAA,QACvBC,mBAAmB,CACjB,aACA,iDACA,oCAAoC;AAAA,QAEtCC,0BAA0B,CACxB,aACA,4EAA4E;AAAA,QAE9EC,uBAAuB,CACrB,aACA,8EAA8E;AAAA,QAEhFC,wBAAwB,CACtB,aACA,2DAA2D;AAAA,QAE7DC,gBAAgB,CACd,aACA,yIACA,gFACA,iFACA,0EACA,0FAA0F;AAAA,QAE5FC,mBAAmB,CACjB,aACA,8DACA,6DAA6D;AAAA,QAE/DC,2BAA2B,CACzB,aACA,6GACA,mGAAmG;AAAA,MAEtG;AAAA,MACD9E,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ8E,SAAS,CACP,gHAAgH;AAAA,QAElHxE,eAAe,CACb,qGACA,+CAA+C;AAAA,MAEnD;AAAA,IACF,CACF;AAAA,IAEAyE,UAAUvF,OACR,gBACA,kNACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEmF,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpCjF,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAiF,gBAAgBzF,OACd,UACA,uHACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEqF,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1CnF,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAx5H,gBAAgBg5H,OACd,gBACA,2JACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEsF,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1CpF,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZM,eAAe,CACb,kEAAkE;AAAA,MAEtE;AAAA,IACF,CACF;AAAA,IAEAxpG,SAAS0oG,OACP,gBACA,iPACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACNv5F,UAAU,CACR,aACA,2DACA,gDAAgD;AAAA,MAEnD;AAAA,MACDy5F,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA55H,KAAKo5H,OACH,gBACA,2QACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,QAAQ;AAAA,MAC7BoiI,QAAQ;AAAA,QACN7oD,MAAM,CACJ,aACA,2DACA,gDAAgD;AAAA,MAEnD;AAAA,MACD+oD,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZoF,eAAe,CACb,kGAAkG;AAAA,MAEtG;AAAA,IACF,CACF;AAAA,IAEA30H,gBAAgB+uH,OACd,gBACA,uLACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACNwF,iBAAiB,CACf,aACA,oDACA,gDAAgD;AAAA,MAEnD;AAAA,MACDtF,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsF,UAAU9F,OAAO,UAAU,mCAAmC;AAAA,MAC5D/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE0F,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpCxF,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CAAC;AAAA,IAEDwF,kBAAkBhG,OAChB,UACA,6hBACA;AAAA,MACE/hI,SAAS,CAAC,SAAS,SAAS;AAAA,MAC5BoiI,QAAQ;AAAA,QAAE4F,mBAAmB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC5C1F,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAxwG,UAAUgwG,OACR,gBACA,gTACA;AAAA,MACE/hI,SAAS,CAAC,aAAa,QAAQ;AAAA,MAC/BoiI,QAAQ;AAAA,QAAE7nE,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpC+nE,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ0D,gBAAgB,CACd,0DAA0D;AAAA,MAE9D;AAAA,IACF,CACF;AAAA,IAEAgC,eAAelG,OACb,gBACA,sHACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAE8F,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzC5F,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ0D,gBAAgB,CAAC,oDAAoD;AAAA,MACvE;AAAA,IACF,CACF;AAAA,IAEAkC,2BAA2BpG,OACzB,gBACA,0MACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEgG,4BAA4B,CAAC,WAAW;AAAA,MAAG;AAAA,MACrD9F,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA8F,0BAA0BtG,OACxB,gBACA,+LACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEkG,2BAA2B,CAAC,WAAW;AAAA,MAAG;AAAA,MACpDhG,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAgG,YAAYxG,OACV,gBACA,0IACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEhrD,aAAa,CAAC,WAAW;AAAA,MAAG;AAAA,MACtCkrD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAriI,uBAAuB6hI,OACrB,gBACA,4EACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEoG,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjDlG,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAkG,wBAAwB1G,OACtB,UACA,4pBACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,QAAQ;AAAA,MAC7BoiI,QAAQ;AAAA,QACN/5H,0BAA0B,CACxB,aACA,iDACA,yCAAyC;AAAA,QAE3CD,yBAAyB,CAAC,WAAW;AAAA,MACtC;AAAA,MACDk6H,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAmG,kBAAkB3G,OAChB,gBACA,yIACA;AAAA,MACE/hI,SAAS,CAAC,UAAU;AAAA,MACpBoiI,QAAQ;AAAA,QAAEuG,mBAAmB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC5CrG,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA6B,0BAA0BrC,OACxB,SACA,qMACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,SAAS;AAAA,MAC9BoiI,QAAQ;AAAA,QACNwG,2BAA2B,CACzB,aACA,yCAAyC;AAAA,MAE5C;AAAA,MACDtG,0BAA0B,CAAC,oCAAoC;AAAA,MAC/D5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsG,iBAAiB9G,OACf,gBACA,qIACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,OAAO;AAAA,MAC3BoiI,QAAQ;AAAA,QAAE0G,kBAAkB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC3CxG,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAwG,sBAAsBhH,OACpB,gBACA,oaACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,QAAQ;AAAA,MAC5BoiI,QAAQ;AAAA,QAAE4G,uBAAuB,CAAC,WAAW;AAAA,MAAG;AAAA,MAChD1G,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA/iC,KAAKuiC,OACH,gBACA,4gBACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,OAAO;AAAA,MAC3BoiI,QAAQ;AAAA,QACN6G,oBAAoB,CAClB,4BACA,sCACA,kDACA,0CAA0C;AAAA,QAE5CC,wBAAwB,CAAC,WAAW;AAAA,MACrC;AAAA,MACD5G,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA4G,gBAAgBpH,OACd,SACA,oKACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEgH,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1C9G,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZO,kBAAkB,CAChB,sDAAsD;AAAA,MAE1D;AAAA,IACF,CACF;AAAA,IAEAuG,eAAetH,OACb,gBACA,sGACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEkH,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzChH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAgH,iBAAiBxH,OACf,gBACA,kMACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEoH,kBAAkB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC3ClH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAkH,mBAAmB1H,OACjB,gBACA,+LACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEsH,oBAAoB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC7CpH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAoH,sBAAsB5H,OACpB,UACA,uGACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEwH,uBAAuB,CAAC,WAAW;AAAA,MAAG;AAAA,MAChDtH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsH,0BAA0B9H,OACxB,gBACA,kGACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAE0H,2BAA2B,CAAC,WAAW;AAAA,MAAG;AAAA,MACpDxH,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAwH,eAAehI,OACb,SACA,+mBACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACN4H,SAAS,CACP,aACA,6EACA,oFAAoF;AAAA,QAEtFC,gBAAgB,CAAC,WAAW;AAAA,MAC7B;AAAA,MACD3H,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZx5H,gBAAgB,CACd,gGAAgG;AAAA,MAEpG;AAAA,IACF,CACF;AAAA,IAEAmhI,yBAAyBnI,OACvB,gBACA,2RACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAE+H,0BAA0B,CAAC,WAAW;AAAA,MAAG;AAAA,MACnD7H,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ6H,8BAA8B,CAC5B,+CAA+C;AAAA,MAEnD;AAAA,IACF,CACF;AAAA,IAEAA,8BAA8BrI,OAC5B,gBACA,6KACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEjmE,+BAA+B,CAAC,WAAW;AAAA,MAAG;AAAA,MACxDmmE,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA8B,2BAA2BtC,OACzB,gBACA,qOACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEiI,4BAA4B,CAAC,WAAW;AAAA,MAAG;AAAA,MACrD/H,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZe,uBAAuB,CAAC,oCAAoC;AAAA,MAC9D;AAAA,IACF,CACF;AAAA,IAEAgH,eAAevI,OACb,gBACA,2EACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAEmI,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzCjI,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAiI,oBAAoBzI,OAClB,UACA;AAAA,s5OACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,UAAU,SAAS,aAAa,SAAS,SAAS;AAAA,MACtEoiI,QAAQ;AAAA,QACNqI,qBAAqB,CACnB,aACA,oCAAoC;AAAA,MAEvC;AAAA,MACDnI,0BAA0B,CAAC,+BAA+B;AAAA,MAC1D5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAx8H,KAAKg8H,OACH,gBACA,kfACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,UAAU,WAAW;AAAA,MAC1CoiI,QAAQ;AAAA,QACNr8H,KAAK,CACH,aACA,oDACA,gDACA,gDAAgD;AAAA,QAElD6zE,MAAM,CAAC,WAAW;AAAA,MACnB;AAAA,MACD0oD,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZoF,eAAe,CACb,kGAAkG;AAAA,QAEpG5+H,gBAAgB,CACd,mGAAmG;AAAA,MAEvG;AAAA,IACF,CACF;AAAA,IAEA65H,iBAAiBb,OACf,UACA,sLACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEQ,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1CN,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA0D,gBAAgBlE,OACd,gBACA,uKACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACNsI,iBAAiB,CACf,aACA,oDACA,gDAAgD;AAAA,MAEnD;AAAA,MACDpI,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAoI,wBAAwB5I,OACtB,gBACA,2GACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEwI,yBAAyB,CAAC,WAAW;AAAA,MAAG;AAAA,MAClDtI,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAsI,eAAe9I,OACb,gBACA,yIACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE0I,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzCxI,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZS,gBAAgB,CAAC,mDAAmD;AAAA,QACpE+F,sBAAsB,CACpB,oDAAoD;AAAA,QAEtDxC,4BAA4B,CAC1B,+CAA+C;AAAA,QAEjDgD,iBAAiB,CAAC,0CAA0C;AAAA,MAC9D;AAAA,IACF,CACF;AAAA,IAEA5B,eAAe5F,OACb,gBACA,4GACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE2I,gBAAgB,CAAC,WAAW;AAAA,MAAG;AAAA,MACzCzI,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZvvH,gBAAgB,CAAC,kDAAkD;AAAA,MACrE;AAAA,IACF,CACF;AAAA,IAEAg4H,cAAcjJ,OACZ,UACA,yJACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE6I,eAAe,CAAC,WAAW;AAAA,MAAG;AAAA,MACxC3I,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ55H,KAAK,CAAC,+CAA+C;AAAA,QACrDqK,gBAAgB,CACd,2DAA2D;AAAA,MAE/D;AAAA,IACF,CACF;AAAA,IAEAk4H,cAAcnJ,OACZ,UACA,4FACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE+I,eAAe,CAAC,WAAW;AAAA,MAAG;AAAA,MACxC7I,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZx8H,KAAK,CAAC,oCAAoC;AAAA,QAC1CiN,gBAAgB,CAAC,gDAAgD;AAAA,MACnE;AAAA,IACF,CACF;AAAA,IAEAo4H,uBAAuBrJ,OACrB,gBACA,2IACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAEiJ,wBAAwB,CAAC,WAAW;AAAA,MAAG;AAAA,MACjD/I,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA+I,4BAA4BvJ,OAC1B,gBACA,iFACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEmJ,6BAA6B,CAAC,WAAW;AAAA,MAAG;AAAA,MACtDjJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAiJ,KAAKzJ,OACH,SACA,6FACA;AAAA,MACE/hI,SAAS,CAAC,gBAAgB;AAAA,MAC1BoiI,QAAQ;AAAA,QAAEqJ,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpCnJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAmJ,aAAa3J,OACX,gBACA,yDACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEuJ,cAAc,CAAC,WAAW;AAAA,MAAG;AAAA,MACvCrJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZqJ,mBAAmB,CAAC,wCAAwC;AAAA,QAC5DJ,KAAK,CAAC,+CAA+C;AAAA,MACvD;AAAA,IACF,CACF;AAAA,IAEAI,mBAAmB7J,OAAO,gBAAgB,mCAAmC;AAAA,MAC3E/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAEyJ,oBAAoB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC7CvJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CAAC;AAAA,IAED8E,SAAStF,OACP,gBACA,wHACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE0J,UAAU,CAAC,WAAW;AAAA,MAAG;AAAA,MACnCxJ,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZS,gBAAgB,CAAC,mDAAmD;AAAA,QACpE6F,iBAAiB,CAAC,oDAAoD;AAAA,QACtEtC,4BAA4B,CAC1B,+CAA+C;AAAA,QAEjDgD,iBAAiB,CAAC,0CAA0C;AAAA,MAC9D;AAAA,IACF,CACF;AAAA,IAEAwC,mBAAmBhK,OACjB,gBACA,uIACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAE4J,oBAAoB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC7C1J,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZW,mBAAmB,CACjB,mDAAmD;AAAA,QAErD2F,iBAAiB,CAAC,oDAAoD;AAAA,QACtEtC,4BAA4B,CAC1B,+CAA+C;AAAA,QAEjDkD,mBAAmB,CAAC,0CAA0C;AAAA,MAChE;AAAA,IACF,CACF;AAAA,IAEAwC,aAAalK,OACX,SACA,kRACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,aAAa,UAAU,QAAQ;AAAA,MACnDoiI,QAAQ;AAAA,QAAE6J,aAAa,CAAC,WAAW;AAAA,MAAG;AAAA,MACtC3J,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAM,eAAed,OACb,SACA,4FACA;AAAA,MACE/hI,SAAS,CAAE;AAAA,MACXoiI,QAAQ;AAAA,QAAES,eAAe,CAAC,WAAW;AAAA,MAAG;AAAA,MACxCP,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ0J,aAAa,CAAC,+CAA+C;AAAA,MAC/D;AAAA,IACF,CACF;AAAA,IAEAC,UAAUnK,OACR,UACA,qIACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QAAE+J,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpC7J,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEA6J,QAAQrK,OACN,gBACA,sRACA;AAAA,MACE/hI,SAAS,CAAC,QAAQ;AAAA,MAClBoiI,QAAQ;AAAA,QACNxpD,SAAS,CACP,aACA,oDACA,gDAAgD;AAAA,MAEnD;AAAA,MACD0pD,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAgE,4BAA4BxE,OAC1B,SACA,4UACA;AAAA,MACE/hI,SAAS,CAAC,OAAO;AAAA,MACjBoiI,QAAQ;AAAA,QAAEiK,6BAA6B,CAAC,WAAW;AAAA,MAAG;AAAA,MACtD/J,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZO,kBAAkB,CAChB,mEACA,yFAAyF;AAAA,MAE7F;AAAA,IACF,CACF;AAAA,IAEAwJ,UAAUvK,OACR,UACA,imCACA;AAAA,MACE/hI,SAAS,CACP,mBACA,SACA,UACA,aACA,UACA,SAAS;AAAA,MAEXoiI,QAAQ;AAAA,QAAEmK,WAAW,CAAC,WAAW;AAAA,MAAG;AAAA,MACpCjK,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAChB,CACF;AAAA,IAEAiK,oBAAoBzK,OAClB,gBACA,wpCACA;AAAA,MACE/hI,SAAS,CAAC,WAAW,QAAQ;AAAA,MAC7BoiI,QAAQ;AAAA,QACNqK,qBAAqB,CAAC,WAAW;AAAA,QACjCC,gBAAgB,CACd,aACA,2DACA,sDACA,sDACA,sDACA,oDAAoD;AAAA,MAEvD;AAAA,MACDpK,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZJ,eAAe,CACb,uEAAuE;AAAA,MAE3E;AAAA,IACF,CACF;AAAA,IAEAwK,iBAAiB5K,OACf,gBACA,ujBACA;AAAA,MACE/hI,SAAS,CAAC,OAAO,aAAa,QAAQ;AAAA,MACtCoiI,QAAQ;AAAA,QACNwK,kBAAkB,CAChB,aACA,oDACA,gDAAgD;AAAA,MAEnD;AAAA,MACDtK,0BAA0B,CAAC,2CAA2C;AAAA,MACtE5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZvvH,gBAAgB,CACd,4GAA4G;AAAA,QAE9GizH,gBAAgB,CACd,2FAA2F;AAAA,QAE7FyC,kBAAkB,CAChB,wFAAwF;AAAA,QAE1F3C,WAAW,CACT,yFAAyF;AAAA,MAE7F;AAAA,IACF,CACF;AAAA,IAEA8G,YAAY9K,OACV,UACA,ksCACA;AAAA,MACE/hI,SAAS,CAAC,UAAU,WAAW,UAAU,UAAU,OAAO;AAAA,MAC1DoiI,QAAQ;AAAA,QACN0K,aAAa,CACX,aACA,2DACA,oCAAoC;AAAA,MAEvC;AAAA,MACDxK,0BAA0B,CAAC,+BAA+B;AAAA,MAC1D5iE,YAAY;AAAA,MACZ6iE,cAAc;AAAA,QACZ0D,gBAAgB,CACd,8DAA8D;AAAA,QAEhEl0G,UAAU,CAAC,kDAAkD;AAAA,MAC/D;AAAA,IACF,CACF;AAAA,IAEAg7G,gBAAgBhL,OACd,WACA,6EACA;AAAA,MACE/hI,SAAS,CAAC,WAAW;AAAA,MACrBoiI,QAAQ;AAAA,QAAE4K,iBAAiB,CAAC,WAAW;AAAA,MAAG;AAAA,MAC1C1K,0BAA0B,CAAE;AAAA,MAC5B5iE,YAAY;AAAA,MACZ6iE,cAAc,CAAA;AAAA,IAElB,CAAA;AAAA,EACD;AAEkC;AACjCz5H,WAAOyE,OAAO20H,SAAS;AAAA,MAErB+K,YAAYlL,OACV,gBACA,2CACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAE8K,aAAa,CAAC,WAAW;AAAA,QAAG;AAAA,QACtC5K,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEA4K,WAAWpL,OACT,UACA,2oLACA;AAAA,QACE/hI,SAAS,CACP,UACA,OACA,UACA,SACA,SACA,aACA,SAAS;AAAA,QAEXoiI,QAAQ;AAAA,UACNgL,sCAAsC,CACpC,aACA,2EACA,uGAAuG;AAAA,UAEzGC,+BAA+B,CAC7B,aACA,qDACA,mDAAmD;AAAA,UAErDC,gCAAgC,CAC9B,aACA,4DACA,0HAA0H;AAAA,UAE5HC,eAAe,CACb,aACA,oEACA,6EAA6E;AAAA,UAE/EC,uBAAuB,CACrB,aACA,8FACA,8FACA,yEAAyE;AAAA,UAE3EC,uBAAuB,CACrB,aACA,8FACA,4FAA4F;AAAA,UAE9FC,oBAAoB,CAClB,aACA,2EACA,8EACA,8EACA,8EACA,4EAA4E;AAAA,UAE9EC,4BAA4B,CAC1B,aACA,uEACA,kFACA,yFAAyF;AAAA,UAE3FC,aAAa,CACX,aACA,gHACA,yHAAyH;AAAA,UAE3HC,oBAAoB,CAClB,aACA,qEAAqE;AAAA,UAEvEC,qBAAqB,CACnB,cACA,mDAAmD;AAAA,UAErDC,sBAAsB,CACpB,cACA,uDACA,qDAAqD;AAAA,UAEvDC,oBAAoB,CAClB,cACA,mDAAmD;AAAA,UAErDb,WAAW,CAAC,YAAY;AAAA,QACzB;AAAA,QACD7K,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZK,iBAAiB,CACf,mGACA,2FAA2F;AAAA,UAE7FC,eAAe,CACb,4EAA4E;AAAA,QAEhF;AAAA,MACF,CACF;AAAA,MAEAoL,eAAelM,OACb,UACA,ywHACA;AAAA,QACE/hI,SAAS,CAAC,SAAS,aAAa,UAAU,OAAO,OAAO;AAAA,QACxDoiI,QAAQ;AAAA,UACN8L,sBAAsB,CACpB,aACA,uDAAuD;AAAA,UAEzDC,mBAAmB,CACjB,4BACA,iDACA,yCAAyC;AAAA,UAE3CF,eAAe,CAAC,WAAW;AAAA,QAC5B;AAAA,QACD3L,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEA6L,gBAAgBrM,OACd,UACA,k5HACA;AAAA,QACE/hI,SAAS,CAAC,SAAS,aAAa,UAAU,OAAO,OAAO;AAAA,QACxDoiI,QAAQ;AAAA,UACNiM,uBAAuB,CACrB,aACA,iDAAiD;AAAA,UAEnDD,gBAAgB,CACd,aACA,yCAAyC;AAAA,QAE5C;AAAA,QACD9L,0BAA0B,CAAC,oCAAoC;AAAA,QAC/D5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZK,iBAAiB,CACf,+GACA,uGAAuG;AAAA,UAEzGC,eAAe,CACb,wFAAwF;AAAA,QAE5F;AAAA,MACF,CACF;AAAA,MAEAyL,eAAevM,OACb,UACA,k7IACA;AAAA,QACE/hI,SAAS,CAAC,SAAS,aAAa,UAAU,OAAO,OAAO;AAAA,QACxDoiI,QAAQ;AAAA,UACNmM,sBAAsB,CACpB,aACA,iDAAiD;AAAA,UAEnDD,eAAe,CACb,aACA,yCAAyC;AAAA,QAE5C;AAAA,QACDhM,0BAA0B,CAAC,oCAAoC;AAAA,QAC/D5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZI,YAAY,CACV,uJAAuJ;AAAA,UAEzJC,iBAAiB,CACf,+GACA,uGAAuG;AAAA,UAEzGC,eAAe,CACb,wFAAwF;AAAA,QAE5F;AAAA,MACF,CACF;AAAA,MAEA2L,eAAezM,OACb,UACA,yiGACA;AAAA,QACE/hI,SAAS,CAAC,aAAa,SAAS,UAAU,SAAS,UAAU,KAAK;AAAA,QAClEoiI,QAAQ;AAAA,UAAEoM,eAAe,CAAC,WAAW;AAAA,QAAG;AAAA,QACxClM,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZI,YAAY,CACV,gHAAgH;AAAA,UAElHC,iBAAiB,CACf,mIACA,mGAAmG;AAAA,UAErGC,eAAe,CACb,iIAAiI;AAAA,QAErI;AAAA,MACF,CACF;AAAA,MAEA4L,oCAAoC1M,OAClC,WACA,2OACA;AAAA,QACE/hI,SAAS,CAAC,WAAW;AAAA,QACrBoiI,QAAQ;AAAA,UAAEsM,qCAAqC,CAAC,WAAW;AAAA,QAAG;AAAA,QAC9DpM,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAoM,yBAAyB5M,OACvB,WACA,8EACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEwM,0BAA0B,CAAC,WAAW;AAAA,QAAG;AAAA,QACnDtM,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAsM,yBAAyB9M,OACvB,WACA,qKACA;AAAA,QACE/hI,SAAS,CAAC,WAAW;AAAA,QACrBoiI,QAAQ;AAAA,UAAE0M,0BAA0B,CAAC,WAAW;AAAA,QAAG;AAAA,QACnDxM,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAwM,+BAA+BhN,OAC7B,WACA,kFACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAE4M,gCAAgC,CAAC,WAAW;AAAA,QAAG;AAAA,QACzD1M,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZa,kBAAkB,CAAC,oCAAoC;AAAA,QACzD;AAAA,MACF,CACF;AAAA,MAEA6L,wCAAwClN,OACtC,WACA,8JACA;AAAA,QACE/hI,SAAS,CAAC,WAAW;AAAA,QACrBoiI,QAAQ;AAAA,UAAE8M,yCAAyC,CAAC,WAAW;AAAA,QAAG;AAAA,QAClE5M,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEA4M,6BAA6BpN,OAC3B,WACA,iFACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEgN,8BAA8B,CAAC,WAAW;AAAA,QAAG;AAAA,QACvD9M,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZsC,uBAAuB,CAAC,oCAAoC;AAAA,QAC9D;AAAA,MACF,CACF;AAAA,MAEAwK,iCAAiCtN,OAC/B,SACA,mIACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEkN,kCAAkC,CAAC,WAAW;AAAA,QAAG;AAAA,QAC3DhN,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZkM,oCAAoC,CAClC,oCAAoC;AAAA,UAEtC5J,uBAAuB,CACrB,+CAA+C;AAAA,QAEnD;AAAA,MACF,CACF;AAAA,MAEA0K,sBAAsBxN,OACpB,gBACA,6GACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEoN,uBAAuB,CAAC,WAAW;AAAA,QAAG;AAAA,QAChDlN,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZoM,yBAAyB,CAAC,oCAAoC;AAAA,UAC9D9J,uBAAuB,CACrB,+CAA+C;AAAA,QAEnD;AAAA,MACF,CACF;AAAA,MAEA4K,sBAAsB1N,OACpB,gBACA,mHACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEsN,uBAAuB,CAAC,WAAW;AAAA,QAAG;AAAA,QAChDpN,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZsM,yBAAyB,CACvB,kDAAkD;AAAA,UAEpDhK,uBAAuB,CACrB,+CAA+C;AAAA,QAEnD;AAAA,MACF,CACF;AAAA,MAEA8K,uBAAuB5N,OACrB,SACA,0EACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEwN,wBAAwB,CAAC,WAAW;AAAA,QAAG;AAAA,QACjDtN,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZa,kBAAkB,CAChB,kDAAkD;AAAA,QAEtD;AAAA,MACF,CACF;AAAA,MAEAyM,uBAAuB9N,OACrB,SACA,kGACA;AAAA,QACE/hI,SAAS,CAAC,WAAW;AAAA,QACrBoiI,QAAQ;AAAA,UAAE0N,wBAAwB,CAAC,WAAW;AAAA,QAAG;AAAA,QACjDxN,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAwN,uCAAuChO,OACrC,WACA,gLACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAE4N,wCAAwC,CAAC,WAAW;AAAA,QAAG;AAAA,QACjE1N,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZkM,oCAAoC,CAClC,kDAAkD;AAAA,UAEpDrL,kBAAkB,CAChB,kDAAkD;AAAA,UAEpD6L,wCAAwC,CACtC,kDAAkD;AAAA,QAEtD;AAAA,MACF,CACF;AAAA,MAEAgB,gCAAgClO,OAC9B,SACA,8JACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAE8N,iCAAiC,CAAC,WAAW;AAAA,QAAG;AAAA,QAC1D5N,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZoM,yBAAyB,CACvB,kDAAkD;AAAA,UAEpDvL,kBAAkB,CAChB,kDAAkD;AAAA,UAEpD6L,wCAAwC,CACtC,kDAAkD;AAAA,QAEtD;AAAA,MACF,CACF;AAAA,MAEAkB,gCAAgCpO,OAC9B,SACA,oKACA;AAAA,QACE/hI,SAAS,CAAE;AAAA,QACXoiI,QAAQ;AAAA,UAAEgO,iCAAiC,CAAC,WAAW;AAAA,QAAG;AAAA,QAC1D9N,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZsM,yBAAyB,CACvB,kDAAkD;AAAA,UAEpDzL,kBAAkB,CAChB,kDAAkD;AAAA,UAEpD6L,wCAAwC,CACtC,kDAAkD;AAAA,QAEtD;AAAA,MACF,CACF;AAAA,MAEAoB,6BAA6BtO,OAC3B,SACA,mHACA;AAAA,QACE/hI,SAAS,CAAC,WAAW;AAAA,QACrBoiI,QAAQ;AAAA,UAAEkO,8BAA8B,CAAC,WAAW;AAAA,QAAG;AAAA,QACvDhO,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAgO,4BAA4BxO,OAC1B,gBACA,oXACA;AAAA,QACE/hI,SAAS,CAAC,QAAQ;AAAA,QAClBoiI,QAAQ;AAAA,UAAEoO,6BAA6B,CAAC,WAAW;AAAA,QAAG;AAAA,QACtDlO,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAkO,SAAS1O,OACP,UACA,ipBACA;AAAA,QACE/hI,SAAS,CAAC,mBAAmB,SAAS,UAAU,SAAS;AAAA,QACzDoiI,QAAQ;AAAA,UACNsO,yBAAyB,CACvB,aACA,iFACA,6HACA,oDACA,iFACA,6DACA,wEAAwE;AAAA,UAE1EC,UAAU,CAAC,WAAW;AAAA,QACvB;AAAA,QACDrO,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAChB,CACF;AAAA,MAEAqO,cAAc7O,OACZ,gBACA,+WACA;AAAA,QACE/hI,SAAS,CAAC,QAAQ;AAAA,QAClBoiI,QAAQ;AAAA,UAAEyO,eAAe,CAAC,WAAW;AAAA,QAAG;AAAA,QACxCvO,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc;AAAA,UACZx5H,gBAAgB,CACd,mGAAmG;AAAA,QAEvG;AAAA,MACF,CACF;AAAA,MAEA+nI,OAAO/O,OACL,UACA,qaACA;AAAA,QACE/hI,SAAS,CAAC,UAAU,aAAa,QAAQ;AAAA,QACzCoiI,QAAQ;AAAA,UAAEtoD,QAAQ,CAAC,WAAW;AAAA,QAAG;AAAA,QACjCwoD,0BAA0B,CAAE;AAAA,QAC5B5iE,YAAY;AAAA,QACZ6iE,cAAc,CAAA;AAAA,MAElB,CAAA;AAAA,IACF,CAAC;AAAA,EACH;;;;;;;;;;;;;;;ACp7DA,MAAA/mE,KAAAv5D,aAAA;AAEA,MAAA8uI,oBAAA9uI,wBAAA;AAA6C,QAAA;AAAA,IAFpC2uD,WAAAA;AAAAA,IAAWz9B,YAAAA;AAAAA,EAAU,IAAAqoC;AAO9B,WAASjL,KAAK//C,KAAU/X,OAAcmB,QAAiB;AACrD,QAAI;AACF,YAAMgvB,QAAQnwB,MAAKmT,MAAM,GAAG;AAC5B,UAAIqqG,OAAOrtF,MAAM0tC,MAAO;AACxB,aAAO1tC,MAAM1iB,SAAS,GAAG;AACvBsK,cAAMA,IAAIylG,IAAI;AACdA,eAAOrtF,MAAM0tC,MAAO;AAAA,MACtB;AACA,UAAIxiC,UAAU5tB,SAAS,GAAG;AACxBsK,YAAIylG,IAAI,IAAIr8G;AAAAA,MACd,OAAO;AACL,eAAO4W,IAAIylG,IAAI;AAAA,MACjB;AAAA,IACD,SAAQ3tG,GAAG;AACVA,QAAEzD,WAAW,oBAAoBpM,KAAI;AACrC,YAAM6P;AAAAA,IACR;AAAA,EACF;AAaA,WAAS0oI,iBACPr1E,KACAwkE,UACA/3D,aACA6oE,eACAC,eACAC,WACA;AACA,UAAM;AAAA,MAAE/O;AAAAA,MAAQG;AAAAA,MAAcD;AAAAA,MAA0B5iE;AAAAA,IAAW,IACjEygE;AAEF,UAAMznE,WAAW,IAAIzxD,IAAIgqI,iBAAiB,CAAA,CAAE;AAC5C,QAAI7oE,YAAa1P,UAAShkD,IAAI0zD,WAAW;AACzC,eAAW,CAAC5hE,MAAM4qI,KAAK,MAAKtoI,OAAAuoI,YAAAC,OAAAxoI,OAAAnK,KAAA2yI,CAAA,EAAAzlI,IAAA6mB,OAAAA,CAAAA,GAAA4+G,EAAA5+G,CAAA,CAAe0vG,CAAAA,IAAAA,MAAM,GAAG;AAClD,UAAI5tH,UAAUhO;AACd,UAAI4hE,eAAe5hE,SAASk5D,YAAY;AACtClrD,kBAAU4zD;AAAAA,MACZ,OAAO;AACL,eAAO1P,SAASlxD,IAAIgN,OAAO,EAAGA,WAAU,MAAMA;AAAAA,MAChD;AAEA,UAAIA,YAAYhO,MAAM;AACpB,mBAAW/N,SAAQ24I,OAAO;AACxB7gF,eAAKoL,KAAKljE,OAAM06B,YAAW3e,OAAO,CAAC;AAAA,QACrC;AAAA,MACF;AAAA,IACF;AAEA,eAAW,CAAChO,MAAM4qI,KAAK,MAAKtoI,OAAAuoI,YAAAC,OAAAxoI,OAAAnK,KAAA2yI,CAAA,EAAAzlI,IAAA6mB,OAAAA,CAAAA,GAAA4+G,EAAA5+G,CAAA,CAAe6vG,CAAAA,IAAAA,YAAY,GAAG;AACxD,YAAMgP,MACH,OAAOL,kBAAkB,cAAcA,cAAc1qI,IAAI,KAC1D2sB,YAAW3sB,IAAI;AACjB,iBAAW/N,SAAQ24I,OAAO;AACxB7gF,aAAKoL,KAAKljE,OAAMm4D,WAAU2gF,GAAG,CAAC;AAAA,MAChC;AAAA,IACF;AAEAJ,iBAAS,QAATA,UAAYx1E,KAAK+D,YAAY7zD,SAAO;AAClCy2H,+BAAyBzvG,QAAQw7F,OAAK99D,KAAKoL,KAAK0yD,GAAGxiH,IAAI0kD,KAAKoL,KAAK0yD,CAAC,CAAC,CAAC,CAAC;AAAA,IACvE,CAAC;AAAA,EACH;AAgBA,QAAMmjB,aAAyC1oI,uBAAOktD,OAAO,IAAI;AACjE,WAASy7E,WAAWjrI,MAAc;AAChC,QAAI,CAACgrI,WAAWhrI,IAAI,GAAG;AACrB,YAAMu7H,SAASG,kBAAO,QAAC17H,IAAI;AAC3B,UAAI,CAACu7H,QAAQ;AACX,cAAMj5H,OAAOyE,OAAO,IAAImkI,eAAe,kBAAkBlrI,IAAI,EAAE,GAAG;AAAA,UAChEV,MAAM;AAAA,UACNi8H,QAAQv7H;AAAAA,QACV,CAAC;AAAA,MACH;AAEAgrI,iBAAWhrI,IAAI,IAAI;AAAA,QACjBw7H,YAAYD,OAAOC;AAAAA,QACnB/mI,MAAMi2I,eAAe9oE,aAAa6oE,eAAeE,WAAW;AAC1D,gBAAMx1E,MAAMomE,OAAOpmE,IAAK;AACxBq1E,2BACEr1E,KACAomE,OAAO5B,UACP/3D,aACA6oE,eACAC,eACAC,SACF;AAEA,iBAAO;AAAA,YACLtoH,OAAO8yC,IAAI/nC;AAAAA,YACX5zB,SAAS+hI,OAAO5B,SAASngI;AAAAA,UAC1B;AAAA,QACF;AAAA,QACD2xI,kBAAkB;AAChB,iBAAO7oI,OAAOnK,KAAKojI,OAAO5B,SAASoC,YAAY;AAAA,QACjD;AAAA,MACD;AAAA,IACH;AAEA,WAAOiP,WAAWhrI,IAAI;AAAA,EACxB;AAEO,WAASmC,IACdnC,MACA0qI,eACA9oE,aACA6oE,eACAE,WACA;AACmC;AAEjC,UAAI,OAAO/oE,gBAAgB,UAAU;AACnC,cAAMpzC,KAAKozC;AACX,aAAIpzC,MAAAA,OAAAA,SAAAA,GAAI9pB,UAAS,cAAc;AAC7Bk9D,wBAAcpzC,GAAGxuB;AAAAA,QACnB,OAAO;AACL4hE,wBAAch8D;AAAAA,QAChB;AAAA,MACF;AAAA,IACF;AACA,WAAOqlI,WAAWjrI,IAAI,EAAEvL,MACtBi2I,eACA9oE,aACA6oE,eACAE,SACF;AAAA,EACF;AAEO,WAASnP,WAAWx7H,MAAc;AACvC,WAAOirI,WAAWjrI,IAAI,EAAEw7H;AAAAA,EAC1B;AAEO,WAAS2P,gBAAgBnrI,MAAqC;AACnE,WAAOirI,WAAWjrI,IAAI,EAAEmrI,gBAAiB;AAAA,EAC3C;AAE+C;AAE7CllI,UAAAA,SAAkBjG,UAAiB;AACjCirI,iBAAWjrI,IAAI;AAAA,IAChB;AAAA,EACH;AAEiBiG,QAAAA,OAAG3D,OAAOnK,KAAKujI,kBAAO,OAAA,EAAEr2H,IAAIrF,UAAQA,KAAKkJ,QAAQ,MAAM,EAAE,CAAC;AAAEjD,QAAA,UAE9D9D;;;;;;;;;;;;;;;;;ACrJsC8D,eAAA,uBAAG,CACtD,cACA,eAAe;AAG0CA,eAAAA,6BAAG,CAC5D,kBAAkB;AAG8BA,eAAAA,oBAAG,CAAC,YAAY;AAExBA,eAAAA,YAAG,CAAC,WAAW;AAEdA,eAAAA,aAAG,CAAC,YAAY;AAErBA,eAAA,QAAG,CAAC,YAAY,SAAS;AAEpBA,eAAA,aAAG;AAEFA,eAAA,cAAG;AAEXA,eAAAA,MAAG,CAAC,qBAAqB;AAExBA,eAAA,OAAG;AAEEA,eAAA,YAAG;AAERA,eAAA,OAAG;AAEHA,eAAA,OAAG,CACtC,QACA,qBACA,qBACA,iBAAiB;AAI0BA,eAAAA,eAAG,CAAC,aAAa;AAEfA,eAAAA,iBAAG,CAAC,aAAa;AAEXA,eAAAA,uBAAG,CACtD,sBAAsB;AAGqCA,eAAAA,+BAAG,CAC9D,6BAA6B;AAGmBA,eAAAA,oBAAG,CACnD,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1ElB,MAAA+uD,KAAAv5D,aAAA;AAsBsB,QAAA;AAAA,IArBpBk1D,WAAAA;AAAAA,IACAK,eAAiBo6E;AAAAA,IACjB1qH;AAAAA,IACA/B,cAAgB0sH;AAAAA,IAChBvqH,QAAUwqH;AAAAA,IACVv7H;AAAAA,IACAyP;AAAAA,IACAtP;AAAAA,IACAyC;AAAAA,IACAG;AAAAA,IACA8F;AAAAA,IACAC;AAAAA,IACAlI;AAAAA,IACAM,eAAiBs6H;AAAAA,IACjBl6E,cAAgBm6E;AAAAA,IAChBl6E,SAAWm6E;AAAAA,IACXzsH,aAAe0sH;AAAAA,IACf/5E,OAASg6E;AAAAA,IACT/5H;AAAAA,IACAg6H;AAAAA,IACAl5H;AAAAA,EAAgB,IAAAsiD;AAGlB,QAAM;AAAA,IAAEpyC,aAAAA;AAAAA,EAAY,IAAIgpH;AA4EjB,WAASC,uBAAuCnxI,MAAqB;AAC1E,UAAM;AAAA,MAAEnH,MAAAA;AAAAA,MAAMm7B;AAAAA,IAAO,IAAI;AACzB,QAAI,CAACxe,aAAa3c,OAAMmH,IAAI,KAAK,CAACme,sBAAsB6V,QAAQh0B,IAAI,GAAG;AACrE,UAAIke,gBAAgBrlB,OAAMmH,IAAI,GAAG;AAC/B,YAAIkoB,aAAYrvB,MAAKyM,IAAI,EAAG,QAAO;AAAA,MACrC,OAAO;AAEL,eAAO;AAAA,MACT;AAAA,IACF;AAGA,WAAOwrI,iBAAiBj4I,OAAMm7B,QAAQ,KAAKo9G,WAAWp9G,MAAM;AAAA,EAC9D;AAEO,WAASq9G,+BAAsD;AACpE,UAAM;AAAA,MAAEx4I,MAAAA;AAAAA,MAAMm7B;AAAAA,IAAO,IAAI;AACzB,WAAO/d,mBAAmBpd,KAAI,KAAKi4I,iBAAiBj4I,OAAMm7B,MAAM;AAAA,EAClE;AAEO,WAASs9G,sBAA6C;AAC3D,UAAM;AAAA,MAAEz4I,MAAAA;AAAAA,MAAMm7B;AAAAA,IAAO,IAAI;AACzB,UAAMkiC,cAAc,KAAKk7E,WAAWp9G;AACpC,WAAOxe,aAAa3c,KAAI,KAAKo9D,WAAUp9D,OAAMm7B,QAAQkiC,WAAW;AAAA,EAClE;AAEO,WAAS5xC,cAAqC;AACnD,UAAM;AAAA,MAAEzrB,MAAAA;AAAAA,MAAMm7B;AAAAA,IAAO,IAAI;AACzB,QAAIg9G,gBAAgBn4I,KAAI,GAAG;AACzB,UAAIqe,sBAAsBre,KAAI,GAAG;AAC/B,YAAIisB,gBAAgBkP,QAAQ;AAAA,UAAE5B,MAAMv5B;AAAAA,QAAM,CAAA,EAAG,QAAO;AACpD,YAAIwc,eAAe2e,QAAQ;AAAA,UAAEX,MAAMx6B;AAAAA,QAAM,CAAA,EAAG,QAAO;AAAA,MACrD;AAEA,aAAO;AAAA,IACT,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEO,WAASorB,eAAsC;AACpD,QAAI,KAAKzO,gBAAgB;AACvB,aAAO,KAAK27H,uBAAwB;AAAA,IACtC,OAAO;AACL,aAAOR,iBAAiB,KAAK93I,IAAI;AAAA,IACnC;AAAA,EACF;AAEO,WAAS+9D,WAAiC;AAC/C,WAAOm6E,YAAY,KAAKl4I,MAAM,KAAKm7B,MAAM;AAAA,EAC3C;AAEO,WAAS2iC,gBAAsC;AACpD,WAAOm6E,iBAAiB,KAAKj4I,MAAM,KAAKm7B,MAAM;AAAA,EAChD;AAEO,WAASsiC,iBAAuC;AACrD,WAAOo6E,kBAAkB,KAAK73I,IAAI;AAAA,EACpC;AAEO,WAASo+D,SAA+B;AAC7C,WAAOg6E,UAAU,KAAKp4I,IAAI;AAAA,EAC5B;AAEO,WAAS04I,SAAgC;AAC9C,WAAO,KAAK14I,QAAQ,CAAC,CAAC,KAAKA,KAAKsT;AAAAA,EAClC;AAEO,WAASqlI,cAAqC;AACnD,WAAO,CAAC,KAAKD,OAAQ;AAAA,EACvB;AAEO,WAASE,OAAuBC,eAAkC;AACvE,WAAO,KAAK/5E,MAAM85E,OAAO,KAAK54I,MAAM64I,aAAa;AAAA,EACnD;AAEO,WAAStrH,SAAgC;AAC9C,UAAM;AAAA,MAAEvtB,MAAAA;AAAAA,IAAK,IAAI;AACjB,QAAI+3I,WAAW/3I,KAAI,GAAG;AACpB,aAAO;AAAA,IACT,WAAWof,oBAAoBpf,KAAI,GAAG;AACpC,aAAOA,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe;AAAA,IAC3D,WAAW/Q,oBAAoBntB,KAAI,GAAG;AACpC,aAAOA,MAAKw9B,eAAe;AAAA,IAC7B,WAAWje,kBAAkBvf,KAAI,GAAG;AAClC,aAAOA,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe;AAAA,IAC3D,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAGO,WAAS5P,iBAAwC;AAAA,QAAAwqH;AACtD,WAAOd,kBAAkB,KAAKh4I,IAAI,OAAC84I,mBAAI,KAAKP,eAAU,OAAA,SAAfO,iBAAiBn5H,gBAAe;AAAA,EACzE;AAEO,WAAS4O,mBAA0C;AAAA,QAAAwqH;AACxD,WAAOf,kBAAkB,KAAKh4I,IAAI,OAAC+4I,oBAAI,KAAKR,eAAU,OAAA,SAAfQ,kBAAiBx7H,mBAAkB;AAAA,EAC5E;AAEO,WAASy7H,sBAA6C;AAC3D,WAAO75H,iBAAiB,KAAKnf,MAAM;AAAA,MAAEg+B,OAAO;AAAA,IAAK,CAAC;AAAA,EACpD;AAE+C;AAE7CtrB,0BAA8B,yBAAG,SAASumI,yBAElC;AACN,YAAM,IAAI9iI,MACR,+FACF;AAAA,IACD;AAGDzD,0BAAsC,iCACpC,SAASwmI,iCAAqD;AAC5D,YAAM,IAAI/iI,MACR,gHACF;AAAA,IACD;AAAA,EACL;;;;;;;;;;;;;;;AC9NA,MAAAgjI,gBAAAjxI,oBAAA;AACA,MAAAkxI,yBAAAlxI,6BAAA;AAEA,MAAAu5D,KAAAv5D,aAAA;AASA,MAAAmxI,WAAAnxI,eAAA;AAAoE,QAAA;AAAA,IARlE6sB;AAAAA,IACAuO;AAAAA,IACA1T;AAAAA,IACA0pH;AAAAA,IACAC,gCAAkCh/H;AAAAA,EAAkB,IAAAknD;AAOtD,WAAS+3E,cAAcroI,MAAqC;AAC1D,WAAOA,QAAQgoI;AAAAA,EACjB;AAOO,WAASM,kBACd/gH,SAC4B;AAE5B,WAAOA,WAAO,OAAA,SAAPA,QAASghH;AAAAA,EAClB;AAuBA,WAASC,UAAajhH,SAAyC;AAC7D,QAAI+gH,kBAAkB/gH,OAAO,EAAG,QAAOA;AAEvCA,YAAQghH,YAAY;AAGpB,eAAWlqH,YAAYzgB,OAAOnK,KAAK8zB,OAAO,GAAwB;AAChE,UAAIkhH,gBAAgBpqH,QAAQ,EAAG;AAE/B,YAAMX,QAAuBW,SAAS3d,MAAM,GAAG;AAC/C,UAAIgd,MAAM1iB,WAAW,EAAG;AAExB,YAAMorB,MAAMmB,QAAQlJ,QAAQ;AAC5B,aAAOkJ,QAAQlJ,QAAQ;AAEvB,iBAAWymF,QAAQpnF,OAAO;AAExB6J,gBAAQu9E,IAAI,IAAI1+E;AAAAA,MAClB;AAAA,IACF;AAGAsiH,aAASnhH,OAAO;AAKhB,WAAOA,QAAQohH;AAGfC,0BAAsBrhH,OAAO;AAG7BshH,yBAAqBthH,OAAO;AAG5B,eAAWlJ,YAAYzgB,OAAOnK,KAAK8zB,OAAO,GAAG;AAC3C,UAAIkhH,gBAAgBpqH,QAAQ,EAAG;AAE/B,UAAI,CAACgqH,cAAchqH,QAAQ,EAAG;AAG9B,YAAM+H,MAAMmB,QAAQlJ,QAAQ;AAC5B,iBAAWre,QAAQpC,OAAOnK,KAAK2yB,GAAG,GAAG;AAEnCA,YAAIpmB,IAAI,IAAI8oI,UAAUzqH,UAAU+H,IAAIpmB,IAAI,CAAC;AAAA,MAC3C;AAGA,aAAOunB,QAAQlJ,QAAQ;AAEvB,YAAMxwB,SAAQm6I,cAAa3pH,QAAQ;AACnC,UAAIxwB,WAAU,MAAM;AAClB,mBAAWmS,QAAQnS,QAAO;AAExB,cAAI05B,QAAQvnB,IAAI,GAAG;AACjB+oI,sBAAUxhH,QAAQvnB,IAAI,GAAGomB,GAAG;AAAA,UAC9B,OAAO;AAELmB,oBAAQvnB,IAAI,IAAIomB;AAAAA,UAClB;AAAA,QACF;AAAA,MACF,OAAO;AACL2iH,kBAAUxhH,SAASnB,GAAG;AAAA,MACxB;AAAA,IACF;AAGA,eAAW/H,YAAYzgB,OAAOnK,KAAK8zB,OAAO,GAAwB;AAChE,UAAIkhH,gBAAgBpqH,QAAQ,EAAG;AAE/B,UAAIG,UAAUC,mBAAmBJ,QAAQ;AAEzC,UAAIA,YAAYuF,iBAAiB;AAC/B,cAAMolH,gBAAgBplH,gBAAgBvF,QAAQ;AAC9CjV,QAAAA,oBAAmBiV,UAAU2qH,eAAe,UAAU;AACtDxqH,kBAAU,CAACwqH,aAAa;AAAA,MAC1B,WAAW3qH,YAAY8T,oBAAoB;AACzC,cAAM1K,kBACJ0K,mBAAmB9T,QAAQ;AAC7BjV,QAAAA,oBAAmBiV,UAAUoJ,iBAAiB,UAAU;AACxDjJ,kBAAUC,mBAAmBgJ,eAAe;AAAA,MAC9C;AAEA,UAAI,CAACjJ,QAAS;AAEd,YAAM4H,MAAMmB,QAAQlJ,QAAQ;AAE5B,aAAOkJ,QAAQlJ,QAAQ;AAEvB,iBAAWK,SAASF,SAAS;AAC3B,cAAM6lC,WAAW98B,QAAQ7I,KAAK;AAC9B,YAAI2lC,UAAU;AACZ0kF,oBAAU1kF,UAAUj+B,GAAG;AAAA,QACzB,OAAO;AACLmB,kBAAQ7I,KAAK,IAAC9gB,OAAAyE,OAAQ+jB,CAAAA,GAAAA,GAAG;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAEA,eAAW/H,YAAYzgB,OAAOnK,KAAK8zB,OAAO,GAAG;AAC3C,UAAIkhH,gBAAgBpqH,QAAQ,EAAG;AAE/BwqH,2BAEEthH,QAAQlJ,QAAQ,CAClB;AAAA,IACF;AAGA,WAAOkJ;AAAAA,EACT;AAQA,WAASmhH,SAASnhH,SAAkB;AAGlC,QAAIA,QAAQ0hH,UAAW;AAEvB,QAAI,OAAO1hH,YAAY,YAAY;AACjC,YAAM,IAAIviB,MACR,2HAEF;AAAA,IACF;AAEA,eAAWqZ,YAAYzgB,OAAOnK,KAAK8zB,OAAO,GAAwB;AAChE,UAAIlJ,aAAa,WAAWA,aAAa,QAAQ;AAC/C6qH,+BAAuB7qH,UAAUkJ,QAAQlJ,QAAQ,CAAC;AAAA,MACpD;AAEA,UAAIoqH,gBAAgBpqH,QAAQ,EAAG;AAE/B,UAAI,CAAC8pH,MAAM/iH,SAAS/G,QAAQ,GAAG;AAC7B,cAAM,IAAIrZ,MACR,2CAA2CqZ,QAAQ,4DACrD;AAAA,MACF;AAEA,YAAM8qH,YAAW5hH,QAAQlJ,QAAQ;AACjC,UAAI,OAAO8qH,cAAa,UAAU;AAChC,mBAAWC,cAAcxrI,OAAOnK,KAAK01I,SAAQ,GAAG;AAC9C,cAAIC,eAAe,WAAWA,eAAe,QAAQ;AAEnDF,mCACE,GAAG7qH,QAAQ,IAAI+qH,UAAU,IACzBD,UAASC,UAAU,CACrB;AAAA,UACF,OAAO;AACL,kBAAM,IAAIpkI,MACR,gEACKqZ,QAAQ,kCAAkC+qH,UAAU,EAC3D;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA7hH,YAAQ0hH,YAAY;AAAA,EACtB;AAEA,WAASC,uBACP37I,OACA20B,KACsC;AACtC,UAAMkE,MAAM,CAAA,EAAGsB,OAAOxF,GAAG;AACzB,eAAW5b,MAAM8f,KAAK;AACpB,UAAI,OAAO9f,OAAO,YAAY;AAC5B,cAAM,IAAI+e,UACR,iCAAiC93B,KAAI,cAAc,OAAO+Y,EAAE,EAC9D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAUO,WAASqqD,MACdw4E,WACAE,SAAgB,CAAA,GAChBC,SACiB;AACjB,UAAMC,gBAAiC;AAAA,MAAEN,WAAW;AAAA,MAAMV,WAAW;AAAA,IAAM;AACxC;AAIjC3qI,aAAOC,eAAe0rI,eAAe,aAAa;AAAA,QAAE95F,YAAY;AAAA,MAAM,CAAC;AACvE7xC,aAAOC,eAAe0rI,eAAe,aAAa;AAAA,QAAE95F,YAAY;AAAA,MAAM,CAAC;AAAA,IACzE;AAEA,aAAS10C,IAAI,GAAGA,IAAIouI,UAASnuI,QAAQD,KAAK;AACxC,YAAMwsB,UAAUihH,UAAUW,UAASpuI,CAAC,CAAC;AACrC,YAAMvN,SAAQ67I,OAAOtuI,CAAC;AAEtB,UAAIyuI,aAA2CjiH;AAC/C,UAAI/5B,UAAS87I,SAAS;AACpBE,qBAAaC,uBAAuBD,YAAYh8I,QAAO87I,OAAO;AAAA,MAChE;AACAP,gBAAUQ,eAAeC,UAAU;AAEnC,iBAAWl7I,QAAOsP,OAAOnK,KAAK8zB,OAAO,GAAgC;AACnE,YAAIkhH,gBAAgBn6I,IAAG,EAAG;AAE1B,YAAIo7I,cAAcniH,QAAQj5B,IAAG;AAG7B,YAAId,UAAS87I,SAAS;AACpBI,wBAAcD,uBAAuBC,aAAal8I,QAAO87I,OAAO;AAAA,QAClE;AAEA,cAAMK,cAAeJ,cAAcj7I,IAAG,MAAjBi7I,cAAcj7I,IAAG,IAAM;AAC5Cy6I,kBAAUY,aAAaD,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAOH;AAAAA,EACT;AAEA,WAASE,uBACPG,YACAp8I,QACA87I,SAC4B;AAC5B,UAAMO,aAAyC,CAAE;AAEjD,eAAW/8G,SAAS,CAAC,SAAS,MAAM,GAAmB;AACrD,UAAI1G,MAAMwjH,WAAW98G,KAAK;AAG1B,UAAI,CAACzoB,MAAMC,QAAQ8hB,GAAG,EAAG;AAEzBA,YAAMA,IAAIzlB,IAAI,SAAU2F,IAAI;AAC1B,YAAIwjI,QAAQxjI;AAEZ,YAAI9Y,QAAO;AACTs8I,kBAAQ,SAAUv8I,OAAgB;AAChC+Y,eAAGrI,KAAKzQ,QAAOD,OAAMC,MAAK;AAAA,UAC3B;AAAA,QACH;AAEA,YAAI87I,SAAS;AAEXQ,kBAAQR,QAAQ97I,UAAAA,OAAAA,SAAAA,OAAOc,KAAKw+B,OAAOg9G,KAAK;AAAA,QAC1C;AAGA,YAAIA,UAAUxjI,IAAI;AAChBwjI,gBAAMjgF,WAAW,MAAMvjD,GAAGujD,SAAU;AAAA,QACtC;AAEA,eAAOigF;AAAAA,MACT,CAAC;AAEDD,iBAAW/8G,KAAK,IAAI1G;AAAAA,IACtB;AAEA,WAAOyjH;AAAAA,EACT;AAEA,WAASjB,sBAAsBtjI,KAAc;AAC3C,eAAWhX,QAAOsP,OAAOnK,KAAK6R,GAAG,GAAwB;AACvD,UAAImjI,gBAAgBn6I,IAAG,EAAG;AAE1B,YAAM83B,MAAM9gB,IAAIhX,IAAG;AACnB,UAAI,OAAO83B,QAAQ,YAAY;AAE7B9gB,YAAIhX,IAAG,IAAI;AAAA,UAAE+5D,OAAOjiC;AAAAA,QAAK;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AAEA,WAASyiH,qBAAqBvjI,KAAc;AAC1C,QAAIA,IAAI+iD,SAAS,CAAChkD,MAAMC,QAAQgB,IAAI+iD,KAAK,EAAG/iD,KAAI+iD,QAAQ,CAAC/iD,IAAI+iD,KAAK;AAClE,QAAI/iD,IAAIwmD,QAAQ,CAACznD,MAAMC,QAAQgB,IAAIwmD,IAAI,EAAGxmD,KAAIwmD,OAAO,CAACxmD,IAAIwmD,IAAI;AAAA,EAChE;AAEA,WAASg9E,UAAUzqH,UAAyB/X,IAAc;AACxD,UAAMyjI,QAAQ,KAAK1rH,QAAQ;AAE3B,UAAM0G,aAAYkjH,uBAAuB8B,KAAK;AAC9C,UAAMD,QAAQ,SAAyBv8I,OAAgB;AACrD,UAAIw3B,WAAU9mB,KAAK1Q,KAAI,GAAG;AACxB,eAAO+Y,GAAG0jI,MAAM,MAAMphH,SAAS;AAAA,MACjC;AAAA,IACD;AACDkhH,UAAMjgF,WAAW,MAAMvjD,GAAGujD,SAAU;AACpC,WAAOigF;AAAAA,EACT;AAEA,WAASrB,gBAAgBn6I,MAQT;AAEd,QAAIA,KAAI,CAAC,MAAM,IAAK,QAAO;AAG3B,QAAIA,SAAQ,WAAWA,SAAQ,UAAUA,SAAQ,aAAc,QAAO;AAGtE,QAAIA,SAAQ,cAAcA,SAAQ,aAAaA,SAAQ,YAAY;AACjE,aAAO;AAAA,IACT;AAEmC;AACjC,UAAIA,SAAQ,aAAa;AACvB,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAQA,WAASy6I,UAAUkB,MAAWC,KAAU;AACtC,eAAWp9G,SAAS,CAAC,SAAS,MAAM,GAAmB;AACrD,UAAI,CAACo9G,IAAIp9G,KAAK,EAAG;AACjBm9G,WAAKn9G,KAAK,IAAI,CAAE,EAACpF,OAAOuiH,KAAKn9G,KAAK,KAAK,CAAE,GAAEo9G,IAAIp9G,KAAK,CAAC;AAAA,IACvD;AAAA,EACF;AAKA,QAAMq9G,sBAA+B;AAAA,IACnCC,eAAe78I,OAAM;AAEnB,UAAIA,MAAKigB,4BAA6B;AAEtCjgB,MAAAA,MAAKqc,KAAM;AACX,UAAIrc,MAAKkuB,YAAY;AACnB,YAEE,CAACluB,MAAK88I,iCACN;AAEAA,mBAAAA,gCAAgCpsI,KAAK1Q,KAAI;AAAA,QAC3C,OAAO;AACLA,UAAAA,MAAK88I,gCAAiC;AAAA,QACxC;AAAA,MACF;AAAA,IACD;AAAA,IACDC,SAAS/8I,OAAM;AACb,UAAIA,MAAK+e,mBAAoB;AAC7B/e,MAAAA,MAAKqc,KAAM;AACX,UAEE,CAACrc,MAAK88I,iCACN;AAEAA,iBAAAA,gCAAgCpsI,KAAK1Q,KAAI;AAAA,MAC3C,OAAO;AACLA,QAAAA,MAAK88I,gCAAiC;AAAA,MACxC;AAAA,IACF;AAAA,EACD;AAEM,WAASE,mBAAsBhjH,SAAiC;AACrE,WAAOopC,MAAM,CAACw5E,qBAAqB5iH,OAAO,CAAC;AAAA,EAC7C;;;;;;;;;;;AClbA,MAAAhqB,IAAAxG,aAAA;AAAkC,MAAAu5D,KAAA/yD;AAElC,MAAAitI,gBAAAzzI,oBAAA;AACA,MAAA0zI,YAAA1zI,gBAAA;AAEA,MAAAmxI,WAAAnxI,eAAA;AAAwE,QAAA;AAAA,IAD/D4zD,0BAAAA;AAAAA,EAAwB,IAAA2F;AAGjC,QAAMo6E,gBAAkC;AAAA,IACtCC,qBAAqB;AAAA,MAAE97I,MAAAA;AAAAA,IAAM,GAAErB,QAAO;AACpC,UAAIqB,MAAKyM,SAAS9N,OAAM6b,SAAS;AAC/Bxa,QAAAA,MAAKyM,OAAO9N,OAAM8b;AAAAA,MACpB;AAAA,IACD;AAAA,IAED6oE,MAAM5kF,OAAMC,QAAO;AACjB,UACE,CAACD,MAAKogE,MAAMi9E,wBACVp9I,OAAM6b,SACN7b,OAAMm3E,QAAQ18C,UAChB,GACA;AACA16B,QAAAA,MAAKqc,KAAM;AACX,YAAIrc,MAAKkuB,YAAY;AACnB,cAEE,CAACluB,MAAK88I,iCACN;AAEAA,qBAAAA,gCAAgCpsI,KAAK1Q,KAAI;AAAA,UAC3C,OAAO;AACLA,YAAAA,MAAK88I,gCAAiC;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,IAED3zG,eAAe;AAAA,MAAE7nC,MAAAA;AAAAA,MAAM8+D,OAAAA;AAAAA,IAAO,GAAEngE,QAAO;AACrC,YAAM;AAAA,QAAE8N;AAAAA,MAAM,IAAGzM,MAAKP;AACtB,UACEO,MAAKk8B,cAKJzvB,SAAS9N,OAAM6b,WAAW/N,SAAS9N,OAAM8b,YAE1CqkD,OAAMk9E,qBAAqBvvI,IAAI,MAAM9N,OAAMm3E,QAAQ18C,YACnD;AACAp5B,QAAAA,MAAKk8B,YAAY;AACkB;AAAA,cAAAulE;AACjC,eAAAA,cAAIzhG,MAAKm3D,kBAALsqC,YAAYvlE,UAAWl8B,CAAAA,MAAKm3D,MAAMj7B,YAAY;AAAA,QACpD;AAAA,MACF;AAAA,IACD;AAAA,IAED,sDACEx9B,OAGAC,QACA;AACA,UAAID,MAAK2f,wBAAyB;AAClC,YAAM29C,MAAMt9D,MAAK6c,2BAEbugD,0BAAyBp9D,MAAKsB,IAAI,IAClCtB,MAAKg+D,2BAA4B;AAErC,iBAAWjwD,QAAQuvD,KAAK;AACtB,YAAIvvD,SAAS9N,OAAM6b,QAASwhD,KAAIvvD,IAAI,EAAEA,OAAO9N,OAAM8b;AAAAA,MACrD;AAAA,IACF;AAAA,EACD;AAAA,EAEc,MAAMwhI,QAAQ;AAAA,IAC3BppI,YAAYijE,UAAkBt7D,SAAiBC,SAAiB;AAC9D,WAAKA,UAAUA;AACf,WAAKD,UAAUA;AACf,WAAKs7D,UAAUA;AAAAA,IACjB;AAAA,IAMAomE,kCAAkCC,cAAwB;AACxD,YAAMC,oBAAoBD,aAAa5D;AAEvC,UAAI,CAAC6D,kBAAkBjvH,uBAAuB;AAC5C;AAAA,MACF;AAEA,UAAIivH,kBAAkBp9H,8BAA8B;AAClD,cAAM;AAAA,UAAEye;AAAAA,QAAa,IAAG2+G,kBAAkBp8I;AAC1C,YAAI0O,EAAE2d,cAAcoR,WAAW,KAAK,CAACA,YAAYxC,IAAI;AACnD;AAAA,QACF;AAAA,MACF;AAEA,UAAImhH,kBAAkBr9H,0BAA0B;AAC9C;AAAA,MACF;AAEAq9H,wBAAkBC,uBAAwB;AAAA,IAC5C;AAAA,IAEAC,yCAAyC59I,OAAgB;AACvD,aAAOA;AAAAA,IAeT;AAAA,IAEA69I,wCAAwC79I,OAAgB;AACtD,aAAOA;AAAAA,IAgBT;AAAA,IAEA89I,SAAuD;AACrD,YAAM;AAAA,QAAE1mE,SAAAA;AAAAA,QAASt7D;AAAAA,QAASC;AAAAA,MAAQ,IAAI;AACtC,YAAM;AAAA,QAAEqkD,OAAAA;AAAAA,QAAOpgE,MAAAA;AAAAA,MAAK,IAAIo3E;AAExB,YAAMqmE,eAAez9I,MAAKglI,KACxBhlI,CAAAA,UACEA,MAAK2tB,cAAe,KACpB3tB,MAAKge,qBAAoB,KACzBhe,MAAKmgB,kBAAiB,CAC1B;AACA,UAAIs9H,cAAc;AAChB,cAAMM,aAAaN,aAAaz/E,2BAA4B;AAC5D,YAAI+/E,WAAWjiI,OAAO,MAAMs7D,SAAQ18C,YAAY;AAG9C,eAAK8iH,kCAAkCC,YAAY;AAAA,QACrD;AAAA,MACF;AAEA,YAAMO,kBAED3iH,UAAU,CAAC,KAAgC+kC,OAAMtiC;AAUtD,YAAMmgH,WAAiC;AAAA,QAAErgH,cAAc;AAAA,MAAM;AAC7D,UAAI5tB,EAAEke,SAAS8vH,eAAe,GAAG;AAC/B,YAAIA,gBAAgBjhH,UAAU;AAC5BkhH,mBAASl9I,MAAM;AAAA,QACjB;AACA,YAAI,CAACiP,EAAE8O,eAAek/H,eAAe,GAAG;AACtCC,mBAASrhH,aAAa;AAAA,QACxB;AAAA,MACF;AAEA,OAAA,GAAAshH,4BACEF,kBACA,GAAAG,UAAAA,SAAQhB,aAAa,GACrB/8E,QACA,MACAA,OAAMpgE,MACNi+I,QACF;AAMO,UAAI,CAAC5iH,UAAU,CAAC,GAAG;AACxB+kC,QAAAA,OAAMg+E,iBAAiBtiI,OAAO;AAC9BskD,QAAAA,OAAMH,SAASlkD,OAAO,IAAIq7D;AAC1B,aAAKA,QAAQ18C,WAAW3sB,OAAOgO;AAAAA,MACjC;AAEA,UAAI0hI,cAAc;AAChB,aAAKG,yCAAyC59I,KAAI;AAClD,aAAK69I,wCAAwC79I,KAAI;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAACgU,UAAAA,UAAAupI;;;;;;;;;;;;ECxLc,MAAMc,QAAQ;AAAA,IAM3BlqI,YAAY;AAAA,MACVumB,YAAAA;AAAAA,MACA0lC,OAAAA;AAAAA,MACApgE,MAAAA;AAAAA,MACAu9B;AAAAA,IAMF,GAAG;AAAA,WAfH7C,aAAU;AAAA,WACV0lC,QAAK;AAAA,WACLpgE,OAAI;AAAA,WACJu9B,OAAI;AAAA,WAyBJ+gH,qBAAsC,CAAE;AAAA,WACxCC,WAAoB;AAAI,WAExBC,iBAAkC,CAAE;AAAA,WACpCC,aAAsB;AAAK,WAC3BC,aAAqB;AAjBnB,WAAKhkH,aAAaA;AAClB,WAAK0lC,QAAQA;AACb,WAAKpgE,OAAOA;AACZ,WAAKu9B,OAAOA;AAEZ,WAAKA,SAAS,SAASA,SAAS,cAAcohH,iBAAiB3+I,KAAI,GAAG;AACpE,aAAK4+I,SAAS5+I,KAAI;AAAA,MACpB;AAEA,WAAK6+I,WAAY;AAAA,IACnB;AAAA,IAaAC,aAAa;AACX,WAAKD,WAAY;AACjB,WAAKE,kBAAkB;AAAA,IACzB;AAAA,IAEAC,SAAS79I,QAAY;AACnB,UAAI,KAAK49I,gBAAiB;AAC1B,WAAKE,WAAW;AAChB,WAAK99I,QAAQA;AAAAA,IACf;AAAA,IAEA09I,aAAa;AACX,WAAKE,kBAAkB;AACvB,WAAKE,WAAW;AAChB,WAAK99I,QAAQ;AAAA,IACf;AAAA,IAMAy9I,SAAS5+I,OAAgB;AACvB,WAAKu+I,WAAW;AAChB,UAAI,KAAKD,mBAAmBzmH,SAAS73B,KAAI,GAAG;AAC1C;AAAA,MACF;AACA,WAAKs+I,mBAAmB51I,KAAK1I,KAAI;AAAA,IACnC;AAAA,IAMAk/I,UAAUl/I,OAAgB;AACxB,UAAI,KAAKw+I,eAAe3mH,SAAS73B,KAAI,GAAG;AACtC;AAAA,MACF;AACA,WAAKy+I,aAAa;AAClB,WAAKC;AACL,WAAKF,eAAe91I,KAAK1I,KAAI;AAAA,IAC/B;AAAA,IAMAm/I,cAAc;AACZ,WAAKT;AACL,WAAKD,aAAa,CAAC,CAAC,KAAKC;AAAAA,IAC3B;AAAA,EACF;AAAC1qI,UAAAA,UAAAqqI;AAED,WAASM,iBAAiB3+I,OAAgB;AACxC,aACM;AAAA,MAAE65I;AAAAA,MAAY94I,KAAAA;AAAAA,IAAI,IAAIf,OAC1B65I,YACA;AAAA,MAAEA;AAAAA,MAAY94I,KAAAA;AAAAA,IAAK,IAAG84I,YACtB;AACA,UAAIA,WAAWpsH,iBAAkB,EAAE,QAAO;AAC1C,UACEosH,WAAWzsH,QAAS,KACpBysH,WAAWtsH,qBACVssH,WAAW/7H,eAAc,KAAM/c,SAAQ,QACxC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnIA,YAAiBD;;;;;;;;;;;;;;;;;ACIjB,MAAIs+I,aAGHprI,MAAAA,OAAG,oBAAIlE,QAAS;AAEqBkE,QAAAA,QAAG,oBAAIlE,QAAO;AAE7C,WAAS+8E,QAAQ;AACtBwyD,cAAW;AACXC,eAAY;AAAA,EACd;AAEO,WAASD,YAAY;AAC1BrrI,iBAAAorI,aAAa,oBAAItvI,QAAS;AAAA,EAC5B;AAEO,WAASwvI,aAAa;AAC3BtrI,kBAAQ,oBAAIlE,QAAS;AAAA,EACvB;AAMA,QAAMyvI,UAAUlvI,OAAOm5H,OAAO,EAAW;AAElC,WAASgW,eAAeC,MAA0BhjH,QAAc;AAAA,QAAAijH;AAClC;AAIjCD,MAAAA,OAAM;AAAA,IACR;AACA,YAAAC,kBAAON,WAAWlvI,IAAIuvI,QAAAA,OAAAA,OAAOF,OAAO,MAA7BG,OAAAA,SAAAA,gBAAgCxvI,IAAIusB,MAAM;AAAA,EACnD;AAEO,WAASkjH,uBAAuBF,MAA0BhjH,QAAc;AAC1C;AACjCgjH,MAAAA,OAAM;AAAA,IACR;AAEA,QAAIG,UAAUR,WAAWlvI,IAAIuvI,QAAAA,OAAAA,OAAOF,OAAO;AAC3C,QAAI,CAACK,QAASR,YAAW9xI,IAAImyI,QAAG,OAAHA,OAAOF,SAAUK,UAAU,oBAAI9vI,QAAO,CAAG;AAEtE,QAAI6oI,QAAQiH,QAAQ1vI,IAAIusB,MAAM;AAC9B,QAAI,CAACk8G,MAAOiH,SAAQtyI,IAAImvB,QAASk8G,QAAQ,oBAAIhiF,KAAM;AAEnD,WAAOgiF;AAAAA,EACT;;;;;;;;;;;ACrDA,MAAAkH,WAAAr2I,eAAA;AAEA,MAAAumB,SAAAvmB,aAAA;AACA,MAAAs2I,WAAAt2I,eAAA;AAEA,MAAAu2I,WAAAv2I,eAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAkDsB,MAAAwG,IAAA+yD;AAEtB,MAAAi9E,SAAAx2I,aAAA;AAEA,MAAA0zI,YAAA1zI,gBAAA;AAAmD,QAAA;AAAA,IArDjDy2I;AAAAA,IACA96G;AAAAA,IACAc;AAAAA,IACAkyB,WAAAA;AAAAA,IACAsF,uBAAAA;AAAAA,IACA/iC,YAAAA;AAAAA,IACA9d;AAAAA,IACA+P;AAAAA,IACAvP;AAAAA,IACAmR;AAAAA,IACArO;AAAAA,IACAE;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAxC;AAAAA,IACAE;AAAAA,IACAyC;AAAAA,IACAqN;AAAAA,IACArP;AAAAA,IACAwP;AAAAA,IACAQ;AAAAA,IACApQ;AAAAA,IACAO;AAAAA,IACAuP;AAAAA,IACAV;AAAAA,IACAlP;AAAAA,IACA2C;AAAAA,IACAC;AAAAA,IACAE;AAAAA,IACAhC;AAAAA,IACAG;AAAAA,IACAE;AAAAA,IACAmnB;AAAAA,IACA9W,gBAAAA;AAAAA,IACAyY;AAAAA,IACAT;AAAAA,IACAsyB,cAAAA;AAAAA,IACA9vB;AAAAA,IACAE;AAAAA,IACA7iB;AAAAA,IACAC;AAAAA,IACA/I;AAAAA,IACAkJ;AAAAA,IACAlH;AAAAA,IACAmB;AAAAA,IACAuM;AAAAA,IACA+oC;AAAAA,IACAhuB;AAAAA,EAAkB,IAAAu5B;AASpB,WAASm9E,gBAAgB5+I,OAAc6uB,OAAmB;AACxD,YAAQ7uB,SAAI,OAAA,SAAJA,MAAMmR,MAAI;AAAA,MAChB;AACE,YAAIiO,oBAAoBpf,KAAI,KAAKmtB,oBAAoBntB,KAAI,GAAG;AAAA,cAAAmjI;AAC1D,eACGpkH,uBAAuB/e,KAAI,KAC1Bif,yBAAyBjf,KAAI,KAC7Bof,oBAAoBpf,KAAI,MAC1BA,MAAKiB,QACL;AACA29I,4BAAgB5+I,MAAKiB,QAAQ4tB,KAAK;AAAA,UACnC,YACE5P,yBAAyBjf,KAAI,KAAKof,oBAAoBpf,KAAI,OAACmjI,mBAC5DnjI,MAAK09B,eAALylG,QAAAA,iBAAiBh3H,QACjB;AACA,uBAAWoC,KAAKvO,MAAK09B,WAAYkhH,iBAAgBrwI,GAAGsgB,KAAK;AAAA,UAC3D,YACG7P,2BAA2Bhf,KAAI,KAC9Bif,yBAAyBjf,KAAI,MAC/BA,MAAKy9B,aACL;AACAmhH,4BAAgB5+I,MAAKy9B,aAAa5O,KAAK;AAAA,UACzC;AAAA,QACF,WAAWzB,kBAAkBptB,KAAI,GAAG;AAUlC4+I,0BAAgB5+I,MAAK69B,OAAOhP,KAAK;AAAA,QAClC,WACCpC,UAAUzsB,KAAI,KACd,CAACgd,cAAchd,KAAI,KACnB,CAACkd,gBAAgBld,KAAI,KACrB,CAACggB,kBAAkBhgB,KAAI,GACvB;AACA6uB,gBAAMznB,KAAKpH,MAAKH,KAAK;AAAA,QACvB;AACA;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH++I,wBAAgB5+I,MAAKgF,QAAQ6pB,KAAK;AAClC+vH,wBAAgB5+I,MAAK+uB,UAAUF,KAAK;AACpC;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACHA,cAAMznB,KAAKpH,MAAKyM,IAAI;AACpB;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACHmyI,wBAAgB5+I,MAAKs3B,QAAQzI,KAAK;AAClC;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH,mBAAWtgB,KAAKvO,MAAKg8B,YAAY;AAC/B4iH,0BAAgBrwI,GAAGsgB,KAAK;AAAA,QAC1B;AACA;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH+vH,wBAAgB5+I,MAAKm8B,UAAUtN,KAAK;AACpC;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH+vH,wBAAgB5+I,MAAKP,KAAKovB,KAAK;AAC/B;AAAA,MAEF,KAAK;AACHA,cAAMznB,KAAK,MAAM;AACjB;AAAA,MAEF,KAAK;AACHynB,cAAMznB,KAAK,OAAO;AAClB;AAAA,MAEF,KAAK;AACHynB,cAAMznB,KAAK,QAAQ;AACnB;AAAA,MAEF,KAAK;AACHynB,cAAMznB,KAAK,IAAI;AACf;AAAA,MAEF,KAAK;AACHynB,cAAMznB,KAAK,OAAO;AAClBw3I,wBAAgB5+I,MAAKm8B,UAAUtN,KAAK;AACpC;AAAA,MAEF,KAAK;AACHA,cAAMznB,KAAK,OAAO;AAClBw3I,wBAAgB5+I,MAAKm8B,UAAUtN,KAAK;AACpC;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAKu5B,MAAM1K,KAAK;AAChC;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAKi7B,IAAIpM,KAAK;AAC9B;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH+vH,wBAAgB5+I,MAAKi7B,IAAIpM,KAAK;AAC9B;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAKi7B,IAAIpM,KAAK;AAC9B;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAK05B,YAAY7K,KAAK;AACtC;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH+vH,wBAAgB5+I,MAAKm8B,UAAUtN,KAAK;AACpC;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAK27B,MAAM9M,KAAK;AAChC+vH,wBAAgB5+I,MAAK+uB,UAAUF,KAAK;AACpC;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAKugC,gBAAgB1R,KAAK;AAC1C;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAKyM,MAAMoiB,KAAK;AAChC;AAAA,MAEF,KAAK;AACH+vH,wBAAgB5+I,MAAK4gC,iBAAiB/R,KAAK;AAC3C;AAAA,MAEF,KAAK;AACHA,cAAMznB,KAAK,UAAU;AACrB;AAAA,MAEF,KAAK;AACHw3I,wBAAgB5+I,MAAK2gC,WAAW9R,KAAK;AACrC+vH,wBAAgB5+I,MAAKyM,MAAMoiB,KAAK;AAChC;AAAA,IACJ;AAAA,EACF;AASA,QAAMgwH,mBAAiD;AAAA,IACrD/4G,aAAapnC,OAAM;AACjB,YAAMggE,SAAShgE,MAAKkQ,IAAI,MAAM;AAE9B,UAAI8vD,OAAON,SAAS;AAClB,cAAM;AAAA,UAAEU,OAAAA;AAAAA,QAAM,IAAIpgE;AAClB,cAAMogJ,cAAchgF,OAAMigF,kBAAiB,KAAMjgF,OAAMkgF,iBAAkB;AACzEF,oBAAYG,gBAAgB,OAAOvgF,MAAM;AAAA,MAC3C;AAAA,IACD;AAAA,IAED39B,YAAYriC,OAAM;AAEhB,UAAIA,MAAK++D,gBAAiB;AAG1B,UAAI/+D,MAAK0gB,sBAAuB;AAGhC,UAAI1gB,MAAKyuB,sBAAuB;AAGhC,YAAMgO,SACJz8B,MAAKogE,MAAMigF,kBAAiB,KAAMrgJ,MAAKogE,MAAMkgF,iBAAkB;AACjE7jH,aAAO+jH,oBAAoBxgJ,KAAI;AAAA,IAChC;AAAA,IAEDwsC,kBAAkBxsC,OAAM;AAEtB,YAAMy8B,SAASz8B,MAAKogE,MAAMqgF,eAAgB;AAE1ChkH,aAAO+jH,oBAAoBxgJ,KAAI;AAAA,IAChC;AAAA,IAED4gD,0BAA0B5gD,OAAM;AAC9B,YAAMy8B,SAASz8B,MAAKogE,MAAMqgF,eAAgB;AAE1ChkH,aAAO+jH,oBAAoBxgJ,KAAI;AAAA,IAChC;AAAA,IAEDo9I,qBAAqBp9I,OAAMC,QAAO;AAChC,UAAI+P,EAAEwY,kBAAkBxoB,MAAKy8B,MAAM,KAAKz8B,MAAKy8B,OAAO3B,UAAU96B,MAAKsB,MAAM;AACvE;AAAA,MACF;AACA,UAAItB,MAAK65I,WAAW9tH,8BAA+B;AACnD9rB,MAAAA,OAAMy+I,WAAWh2I,KAAK1I,KAAI;AAAA,IAC3B;AAAA,IAED0gJ,cAAc1gJ,OAAMC,QAAO;AACzB,YAAM46B,OAAO76B,MAAKkQ,IAAI,MAAM;AAC5B,UAAI2qB,KAAKvM,UAAS,KAAMuM,KAAK5c,aAAY,GAAI;AAC3Che,QAAAA,OAAMq+I,mBAAmB51I,KAAK1I,KAAI;AAAA,MACpC,WAES66B,KAAK6kC,SAAS;AACrB,cAAM;AAAA,UAAEU,OAAAA;AAAAA,QAAM,IAAIpgE;AAClB,cAAMogJ,cAAchgF,OAAMigF,kBAAiB,KAAMjgF,OAAMkgF,iBAAkB;AACzEF,oBAAYG,gBAAgB,OAAO1lH,IAAI;AAAA,MACzC;AAAA,IACD;AAAA,IAED8lH,mBAAmB;AAAA,MACjBpiF,KAAKv+D,OAAM;AACT,cAAM;AAAA,UAAEsB,MAAAA;AAAAA,UAAM8+D,OAAAA;AAAAA,QAAM,IAAIpgE;AAExB,YAAIqgB,uBAAuB/e,KAAI,EAAG;AAClC,cAAM0+D,SAAS1+D,MAAKy9B;AACpB,YAAI3e,mBAAmB4/C,MAAM,KAAKjiD,sBAAsBiiD,MAAM,GAAG;AAC/D,gBAAMzjC,KAAKyjC,OAAOzjC;AAClB,cAAI,CAACA,GAAI;AAET,gBAAM66C,WAAUhX,OAAMwgF,WAAWrkH,GAAGxuB,IAAI;AACxCqpE,UAAAA,oBAAAA,SAAS8nE,UAAUl/I,KAAI;AAAA,QACzB,WAAW2f,sBAAsBqgD,MAAM,GAAG;AACxC,qBAAW3hC,QAAQ2hC,OAAO7hC,cAAc;AACtC,uBAAWpwB,QAAQsC,OAAOnK,KAAKu3D,uBAAsBp/B,IAAI,CAAC,GAAG;AAC3D,oBAAM+4C,WAAUhX,OAAMwgF,WAAW7yI,IAAI;AACrCqpE,cAAAA,oBAAAA,SAAS8nE,UAAUl/I,KAAI;AAAA,YACzB;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,IAED6nC,iBAAiB7nC,OAAM;AACrBA,MAAAA,MAAKogE,MAAMqgF,iBAAiBD,oBAAoBxgJ,KAAI;AAAA,IACrD;AAAA,IAEDolC,qBAAqBplC,OAAMC,QAAO;AAChCA,MAAAA,OAAM4gJ,YAAYn4I,KAAK1I,KAAI;AAAA,IAC5B;AAAA,IAEDuqC,iBAAiBvqC,OAAMC,QAAO;AAC5BA,MAAAA,OAAMq+I,mBAAmB51I,KAAK1I,KAAI;AAAA,IACnC;AAAA,IAEDqqC,gBAAgBrqC,OAAMC,QAAO;AAC3B,UAAID,MAAKsB,KAAKm5B,aAAa,UAAU;AACnCx6B,QAAAA,OAAMq+I,mBAAmB51I,KAAK1I,KAAI;AAAA,MACpC;AAAA,IACD;AAAA,IAED8gJ,YAAY9gJ,OAAM;AAChB,UAAIogE,SAAQpgE,MAAKogE;AACjB,UAAIA,OAAMpgE,SAASA,MAAMogE,CAAAA,SAAQA,OAAM3jC;AAEvC,YAAMA,SAAS2jC,OAAMqgF,eAAgB;AACrChkH,aAAO+jH,oBAAoBxgJ,KAAI;AAG/B,UAAIA,MAAKogB,mBAAkB,KAAMpgB,MAAKsB,KAAKi7B,IAAI;AAC7C,cAAMA,KAAKv8B,MAAKsB,KAAKi7B;AACrB,cAAMxuB,OAAOwuB,GAAGxuB;AAEhB/N,QAAAA,MAAKogE,MAAMH,SAASlyD,IAAI,IAAI/N,MAAKogE,MAAM3jC,OAAOmkH,WAAW7yI,IAAI;AAAA,MAC/D;AAAA,IACD;AAAA,IAEDs4B,YAAYrmC,OAAM;AAChBA,MAAAA,MAAKogE,MAAMmgF,gBAAgB,OAAOvgJ,KAAI;AAAA,IACvC;AAAA,IAED03D,SAAS13D,OAAM;AACb,YAAMi8B,SAA0Bj8B,MAAKkQ,IAAI,QAAQ;AACjD,iBAAWsrB,SAASS,QAAQ;AAC1Bj8B,QAAAA,MAAKogE,MAAMmgF,gBAAgB,SAAS/kH,KAAK;AAAA,MAC3C;AAKA,UACEx7B,MAAKge,0BACLhe,MAAKsB,KAAKi7B,MAEV,CAACv8B,MAAKsB,KAAKi7B,GAAG0jH,iBAAiB,GAC/B;AACAjgJ,QAAAA,MAAKogE,MAAMmgF,gBAAgB,SAASvgJ,MAAKkQ,IAAI,IAAI,GAAGlQ,KAAI;AAAA,MAC1D;AAAA,IACD;AAAA,IAEDyrC,gBAAgBzrC,OAAM;AACpB,UACEA,MAAKsB,KAAKi7B,MAEV,CAACv8B,MAAKsB,KAAKi7B,GAAG0jH,iBAAiB,GAC/B;AACAjgJ,QAAAA,MAAKogE,MAAMmgF,gBAAgB,SAASvgJ,MAAKkQ,IAAI,IAAI,GAAGlQ,KAAI;AAAA,MAC1D;AAAA,IACD;AAAA,IAEDshD,iBAAiBthD,OAAM;AACrBA,MAAAA,MAAKqc,KAAM;AAAA,IACb;AAAA,EACD;AAED,MAAIy/C,MAAM;AAAA,EAKV,MAAM8oB,MAAM;AAAA,IAoBVzwE,YAAYnU,OAAwC;AAAA,WAnBpD87D,MAAG;AAAA,WAEH97D,OAAI;AAAA,WACJ89B,QAAK;AAAA,WAELijH,SAAM;AAAA,WAENl3D,SAAM;AAAA,WACN5pB,WAAQ;AAAA,WACRy+E,aAAU;AAAA,WACVn3I,UAAO;AAAA,WACPy5I,OAAI;AAAA,WACJC,OAAI;AAAA,WACJC,WAAQ;AAON,YAAM;AAAA,QAAE5/I,MAAAA;AAAAA,MAAK,IAAItB;AACjB,YAAMmhJ,SAASC,OAAAA,MAAWlxI,IAAI5O,KAAI;AAGlC,WAAI6/I,UAAAA,OAAAA,SAAAA,OAAQnhJ,UAASA,OAAM;AACzB,eAAOmhJ;AAAAA,MACT;AACAC,aAAAA,MAAW9zI,IAAIhM,OAAM,IAAI;AAEzB,WAAKw6D,MAAMA;AAEX,WAAKh+B,QAAQx8B;AACb,WAAKtB,OAAOA;AAEZ,WAAK6pF,SAAS,oBAAIlzB,IAAK;AACvB,WAAKoqF,SAAS;AAAA,IAChB;AAAA,IAcA,IAAItkH,SAAS;AAAA,UAAA4kH;AACX,UAAI5kH,QACFz8B,QAAO,KAAKA;AACd,SAAG;AAAA,YAAAshJ;AAED,cAAMC,aAAavhJ,MAAKe,QAAQ,SAASf,MAAK09B,YAAY;AAC1D19B,QAAAA,QAAOA,MAAK65I;AACZ,YAAI0H,cAAcvhJ,MAAKkuB,SAAU,EAAEluB,CAAAA,QAAOA,MAAK65I;AAC/C,aAAAyH,QAAIthJ,UAAI,QAAJshJ,MAAMjiF,QAAO,EAAI5iC,UAASz8B;AAAAA,MAChC,SAASA,SAAQ,CAACy8B;AAElB,cAAA4kH,UAAO5kH,WAAA4kH,OAAAA,SAAAA,QAAQjhF;AAAAA,IACjB;AAAA,IAMAohF,8BAA8BzzI,MAAe;AAC3C,YAAMwuB,KAAK,KAAKklH,sBAAsB1zI,IAAI;AAC1C,WAAKrF,KAAK;AAAA,QAAE6zB;AAAAA,MAAG,CAAC;AAChB,aAAO47B,WAAU57B,EAAE;AAAA,IACrB;AAAA,IAMAklH,sBAAsB1zI,MAAe;AACnC,aAAO2sB,YAAW,KAAKgnH,YAAY3zI,IAAI,CAAC;AAAA,IAC1C;AAAA,IAMA2zI,YAAY3zI,OAAe,QAAgB;AACzCA,aAAOusD,cAAavsD,IAAI,EAAEkJ,QAAQ,OAAO,EAAE,EAAEA,QAAQ,SAAS,EAAE;AAEhE,UAAI6kD;AACJ,UAAItuD,IAAI;AACR,SAAG;AACDsuD,QAAAA,OAAM,IAAI/tD,IAAI;AACd,YAAIP,IAAI,EAAGsuD,CAAAA,QAAOtuD;AAClBA;AAAAA,MACD,SACC,KAAKm0I,SAAS7lF,IAAG,KACjB,KAAK8lF,WAAW9lF,IAAG,KACnB,KAAK+lF,UAAU/lF,IAAG,KAClB,KAAKgmF,aAAahmF,IAAG;AAGvB,YAAMngC,UAAU,KAAK2kH,iBAAkB;AACvC3kH,cAAQ+iH,WAAW5iF,IAAG,IAAI;AAC1BngC,cAAQqlH,KAAKllF,IAAG,IAAI;AAEpB,aAAOA;AAAAA,IACT;AAAA,IAEAimF,uBAAuBzgJ,OAAc0gJ,aAAsB;AACzD,YAAM7xH,QAAoB,CAAE;AAC5B+vH,sBAAgB5+I,OAAM6uB,KAAK;AAE3B,UAAIoM,KAAKpM,MAAM7c,KAAK,GAAG;AACvBipB,WAAKA,GAAGtlB,QAAQ,MAAM,EAAE,KAAK+qI,eAAe;AAE5C,aAAO,KAAKN,YAAYnlH,GAAG7pB,MAAM,GAAG,EAAE,CAAC;AAAA,IACzC;AAAA,IAMAuvI,iCAAiC3gJ,OAAc0gJ,aAAsB;AACnE,aAAOtnH,YAAW,KAAKqnH,uBAAuBzgJ,OAAM0gJ,WAAW,CAAC;AAAA,IAClE;AAAA,IAYA1iD,SAASh+F,OAAuB;AAC9B,UAAIge,iBAAiBhe,KAAI,KAAK6f,QAAQ7f,KAAI,KAAK2mB,iBAAiB3mB,KAAI,GAAG;AACrE,eAAO;AAAA,MACT;AAEA,UAAI2c,aAAa3c,KAAI,GAAG;AACtB,cAAM81E,WAAU,KAAKwpE,WAAWt/I,MAAKyM,IAAI;AACzC,YAAIqpE,UAAS;AACX,iBAAOA,SAAQmnE;AAAAA,QACjB,OAAO;AACL,iBAAO,KAAKqD,WAAWtgJ,MAAKyM,IAAI;AAAA,QAClC;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAMAm0I,sBAAsB5gJ,OAAc6gJ,UAAoB;AACtD,UAAI,KAAK7iD,SAASh+F,KAAI,GAAG;AACvB,eAAO;AAAA,MACT,OAAO;AACL,cAAMi7B,KAAK,KAAK0lH,iCAAiC3gJ,KAAI;AACrD,YAAI,CAAC6gJ,UAAU;AACb,eAAKz5I,KAAK;AAAA,YAAE6zB;AAAAA,UAAG,CAAC;AAChB,iBAAO47B,WAAU57B,EAAE;AAAA,QACrB;AACA,eAAOA;AAAAA,MACT;AAAA,IACF;AAAA,IAEA6lH,2BACEjjH,OACA5B,MACAxvB,MACAwuB,IACA;AAEA,UAAIgB,SAAS,QAAS;AAItB,UAAI4B,MAAM5B,SAAS,QAAS;AAE5B,YAAM8kH,YAEJ9kH,SAAS,SACT4B,MAAM5B,SAAS,SACf4B,MAAM5B,SAAS,WACf4B,MAAM5B,SAAS,YAEd4B,MAAM5B,SAAS,WAAWA,SAAS;AAEtC,UAAI8kH,WAAW;AACb,cAAM,KAAKriJ,KAAKy/I,IAAI6C,WAClB/lH,IACA,0BAA0BxuB,IAAI,KAC9B+pB,SACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAgmH,OACEhiI,SACAC,SAGA;AACA,YAAMq7D,WAAU,KAAKwpE,WAAW9kI,OAAO;AACvC,UAAIs7D,UAAS;AACXr7D,oBAAAA,UAAY,KAAK0lI,sBAAsB3lI,OAAO,EAAE/N;AAChD,cAAMw0I,WAAU,IAAIhF,SAAO,QAACnmE,UAASt7D,SAASC,OAAO;AAG9C;AAELwmI,UAAAA,SAAQzE,OAAOziH,UAAU,CAAC,CAAC;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAAA,IAEAmnH,OAAO;AACL,YAAMC,MAAM,IAAItrI,OAAO,EAAE;AACzBO,cAAQgrI,IAAID,GAAG;AACf,UAAIriF,SAAe;AACnB,SAAG;AACD1oD,gBAAQgrI,IAAI,KAAKtiF,OAAMtiC,MAAMrrB,IAAI;AACjC,mBAAW1E,QAAQsC,OAAOnK,KAAKk6D,OAAMH,QAAQ,GAAG;AAC9C,gBAAMmX,WAAUhX,OAAMH,SAASlyD,IAAI;AACnC2J,kBAAQgrI,IAAI,MAAM30I,MAAM;AAAA,YACtBwwI,UAAUnnE,SAAQmnE;AAAAA,YAClBG,YAAYtnE,SAAQsnE;AAAAA,YACpBiE,YAAYvrE,SAAQknE,mBAAmB7wI;AAAAA,YACvC8vB,MAAM65C,SAAQ75C;AAAAA,UAChB,CAAC;AAAA,QACH;AAAA,MACF,SAAU6iC,SAAQA,OAAM3jC;AACxB/kB,cAAQgrI,IAAID,GAAG;AAAA,IACjB;AAAA,IAEAd,SAAS5zI,MAAc;AACrB,aAAO,CAAC,CAAC,KAAK60I,SAAS70I,IAAI;AAAA,IAC7B;AAAA,IAEA60I,SAAS70I,MAAc;AACrB,aAAO,KAAK87E,OAAO35E,IAAInC,IAAI;AAAA,IAC7B;AAAA,IAEA80I,cAAc7iJ,OAAoC;AAChD,WAAK6pF,OAAOv8E,IAAItN,MAAKsB,KAAK85B,MAAMrtB,MAAM/N,KAAI;AAAA,IAC5C;AAAA,IAEAwgJ,oBAAoBxgJ,OAAgB;AAClC,UAAIA,MAAKme,sBAAsB;AAC7B,aAAK0kI,cAAc7iJ,KAAI;AAAA,MACzB,WAAWA,MAAK+d,yBAAyB;AACvC,aAAKwiI,gBAAgB,WAAWvgJ,MAAKkQ,IAAI,IAAI,GAAGlQ,KAAI;AAAA,MACtD,WAAWA,MAAK2f,yBAAyB;AACvC,cAAMwe,eAAen+B,MAAKkQ,IAAI,cAAc;AAC5C,cAAM;AAAA,UAAEqtB;AAAAA,QAAM,IAAGv9B,MAAKsB;AACtB,mBAAW0+D,UAAU7hC,cAAc;AACjC,eAAKoiH,gBACHhjH,SAAS,WAAWA,SAAS,gBAAgB,UAAUA,MACvDyiC,MACF;AAAA,QACF;AAAA,MACF,WAAWhgE,MAAKogB,sBAAsB;AACpC,YAAIpgB,MAAKsB,KAAK2Y,QAAS;AACvB,aAAKsmI,gBAAgB,OAAOvgJ,KAAI;AAAA,MAClC,WAAWA,MAAK0gB,uBAAuB;AACrC,cAAMoiI,oBACJ9iJ,MAAKsB,KAAKk+B,eAAe,UAAUx/B,MAAKsB,KAAKk+B,eAAe;AAC9D,cAAMR,aAAah/B,MAAKkQ,IAAI,YAAY;AACxC,mBAAWqvD,aAAavgC,YAAY;AAClC,gBAAM+jH,kBACJD,qBACCvjF,UAAU1+C,kBAAmB,MAC3B0+C,UAAUj+D,KAAKk+B,eAAe,UAC7B+/B,UAAUj+D,KAAKk+B,eAAe;AAEpC,eAAK+gH,gBAAgBwC,kBAAkB,YAAY,UAAUxjF,SAAS;AAAA,QACxE;AAAA,MACF,WAAWv/D,MAAKyuB,uBAAuB;AAErC,cAAMuxC,SAAShgE,MAAKkQ,IAAI,aAAa;AACrC,YACE8vD,OAAO5/C,wBACP4/C,OAAOjiD,2BACPiiD,OAAOrgD,yBACP;AACA,eAAK6gI,oBAAoBxgF,MAAM;AAAA,QACjC;AAAA,MACF,OAAO;AACL,aAAKugF,gBAAgB,WAAWvgJ,KAAI;AAAA,MACtC;AAAA,IACF;AAAA,IAEAw3D,qBAAqB;AACnB,aAAOA,mBAAoB;AAAA,IAC7B;AAAA,IAEAwrF,0BAA0BhjJ,OAAgB;AACxC,YAAMs9D,MAAMt9D,MAAKo9D,yBAA0B;AAC3C,iBAAWrvD,QAAQsC,OAAOnK,KAAKo3D,GAAG,GAAG;AAAA,YAAA2lF;AACnC,SAAAA,mBAAA,KAAKrC,WAAW7yI,IAAI,MAAC,QAArBk1I,iBAAuBrE,SAAS5+I,KAAI;AAAA,MACtC;AAAA,IACF;AAAA,IAEAugJ,gBACEhjH,MACAv9B,OACAkjJ,cAAwBljJ,OACxB;AACA,UAAI,CAACu9B,KAAM,OAAM,IAAI07G,eAAe,WAAW;AAE/C,UAAIj5I,MAAK2f,yBAAyB;AAChC,cAAMwjI,cAA+BnjJ,MAAKkQ,IAAI,cAAc;AAC5D,mBAAW8vD,UAAUmjF,aAAa;AAChC,eAAK5C,gBAAgBhjH,MAAMyiC,MAAM;AAAA,QACnC;AACA;AAAA,MACF;AAEA,YAAMvjC,SAAS,KAAK6jH,iBAAkB;AACtC,YAAMhjF,MAAMt9D,MAAKg+D,2BAA2B,IAAI;AAEhD,iBAAWjwD,QAAQsC,OAAOnK,KAAKo3D,GAAG,GAAG;AACnC7gC,eAAOiiH,WAAW3wI,IAAI,IAAI;AAE1B,mBAAWwuB,MAAM+gC,IAAIvvD,IAAI,GAAG;AAC1B,gBAAMoxB,QAAQ,KAAKikH,cAAcr1I,IAAI;AAErC,cAAIoxB,OAAO;AAGT,gBAAIA,MAAMzE,eAAe6B,GAAI;AAE7B,iBAAK6lH,2BAA2BjjH,OAAO5B,MAAMxvB,MAAMwuB,EAAE;AAAA,UACvD;AAGA,cAAI4C,OAAO;AACTA,kBAAMy/G,SAASsE,WAAW;AAAA,UAC5B,OAAO;AACL,iBAAKjjF,SAASlyD,IAAI,IAAI,IAAIswI,iBAAQ;AAAA,cAChC3jH,YAAY6B;AAAAA,cACZ6jC,OAAO;AAAA,cACPpgE,MAAMkjJ;AAAAA,cACN3lH;AAAAA,YACF,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAEA8lH,UAAU/hJ,OAAsC;AAC9C,WAAKiG,QAAQjG,MAAKyM,IAAI,IAAIzM;AAAAA,IAC5B;AAAA,IAEAgiJ,OAAOv1I,MAAuB;AAC5B,UAAIqyD,SAAe;AAEnB,SAAG;AACD,YAAIA,OAAM4gF,KAAKjzI,IAAI,EAAG,QAAO;AAAA,MAC/B,SAAUqyD,SAAQA,OAAM3jC;AAExB,aAAO;AAAA,IACT;AAAA,IAEAolH,UAAU9zI,MAAuB;AAC/B,UAAIqyD,SAAe;AAEnB,SAAG;AACD,YAAIA,OAAM74D,QAAQwG,IAAI,EAAG,QAAO;AAAA,MAClC,SAAUqyD,SAAQA,OAAM3jC;AAExB,aAAO;AAAA,IACT;AAAA,IAEAqlH,aAAa/zI,MAAuB;AAClC,aAAO,CAAC,CAAC,KAAKuyI,iBAAgB,EAAG5B,WAAW3wI,IAAI;AAAA,IAClD;AAAA,IAEAmsI,OAAO54I,OAAc64I,eAAkC;AACrD,UAAIl8H,aAAa3c,KAAI,GAAG;AACtB,cAAM81E,WAAU,KAAKwpE,WAAWt/I,MAAKyM,IAAI;AACzC,YAAI,CAACqpE,SAAS,QAAO;AACrB,YAAI+iE,cAAe,QAAO/iE,SAAQmnE;AAClC,eAAO;AAAA,MACR,WACCj/H,iBAAiBhe,KAAI,KACrByf,eAAezf,KAAI,KACnB2mB,iBAAiB3mB,KAAI,KACrB4gB,cAAc5gB,KAAI,GAClB;AACA,eAAO;AAAA,MACT,WAAWitB,QAAQjtB,KAAI,GAAG;AAAA,YAAAiiJ;AACxB,YAAIjiJ,MAAKi9B,cAAc,CAAC,KAAK27G,OAAO54I,MAAKi9B,YAAY47G,aAAa,GAAG;AACnE,iBAAO;AAAA,QACT;AACA,cAAIoJ,mBAAAjiJ,MAAKs7B,eAAL2mH,OAAAA,SAAAA,iBAAiB91I,UAAS,GAAG;AAC/B,iBAAO;AAAA,QACT;AACA,eAAO,KAAKysI,OAAO54I,MAAK65B,MAAMg/G,aAAa;AAAA,MAC7C,WAAWj6H,YAAY5e,KAAI,GAAG;AAC5B,mBAAW+/B,UAAU//B,MAAK65B,MAAM;AAC9B,cAAI,CAAC,KAAK++G,OAAO74G,QAAQ84G,aAAa,EAAG,QAAO;AAAA,QAClD;AACA,eAAO;AAAA,MACT,WAAWxtH,SAASrrB,KAAI,GAAG;AACzB,eACE,KAAK44I,OAAO54I,MAAKu5B,MAAMs/G,aAAa,KACpC,KAAKD,OAAO54I,MAAKw5B,OAAOq/G,aAAa;AAAA,MAExC,WAAUv9H,kBAAkBtb,KAAI,KAAKwmB,kBAAkBxmB,KAAI,GAAG;AAC7D,mBAAWs6H,QAAQt6H,MAAKk5B,UAAU;AAChC,cAAIohG,SAAS,QAAQ,CAAC,KAAKse,OAAOte,MAAMue,aAAa,EAAG,QAAO;AAAA,QACjE;AACA,eAAO;AAAA,MACR,WAAUt7H,mBAAmBvd,KAAI,KAAKumB,mBAAmBvmB,KAAI,GAAG;AAC/D,mBAAWy1E,QAAQz1E,MAAKg8B,YAAY;AAClC,cAAI,CAAC,KAAK48G,OAAOnjE,MAAMojE,aAAa,EAAG,QAAO;AAAA,QAChD;AACA,eAAO;AAAA,MACT,WAAWjsH,SAAS5sB,KAAI,GAAG;AAAA,YAAAkiJ;AACzB,YAAIliJ,MAAKy7B,YAAY,CAAC,KAAKm9G,OAAO54I,MAAKP,KAAKo5I,aAAa,EAAG,QAAO;AACnE,cAAIqJ,oBAAAliJ,MAAKs7B,eAAL4mH,OAAAA,SAAAA,kBAAiB/1I,UAAS,GAAG;AAC/B,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,WAAW2gB,WAAW9sB,KAAI,GAAG;AAAA,YAAAmiJ;AAE3B,YAAIniJ,MAAKy7B,YAAY,CAAC,KAAKm9G,OAAO54I,MAAKP,KAAKo5I,aAAa,EAAG,QAAO;AACnE,cAAIsJ,oBAAAniJ,MAAKs7B,eAAL6mH,OAAAA,SAAAA,kBAAiBh2I,UAAS,GAAG;AAC/B,iBAAO;AAAA,QACT;AACA,YAAIsR,iBAAiBzd,KAAI,KAAKA,MAAKq+B,QAAQ;AACzC,cAAIr+B,MAAKH,UAAU,QAAQ,CAAC,KAAK+4I,OAAO54I,MAAKH,OAAOg5I,aAAa,GAAG;AAClE,mBAAO;AAAA,UACT;AAAA,QACF;AACA,eAAO;AAAA,MACT,WAAW16H,kBAAkBne,KAAI,GAAG;AAClC,eAAO,KAAK44I,OAAO54I,MAAKm8B,UAAU08G,aAAa;AAAA,MACjD,WAAW74H,kBAAkBhgB,KAAI,GAAG;AAClC,mBAAW05B,cAAc15B,MAAKq8B,aAAa;AACzC,cAAI,CAAC,KAAKu8G,OAAOl/G,YAAYm/G,aAAa,EAAG,QAAO;AAAA,QACtD;AACA,eAAO;AAAA,MACT,WAAW/4H,2BAA2B9f,KAAI,GAAG;AAC3C,eACE0uB,gBAAe1uB,MAAKy+B,KAAK,YAAY,KACrC,CAAC,KAAK6hH,WAAW,UAAU;AAAA,UAAE8B,WAAW;AAAA,QAAM,CAAA,KAC9C,KAAKxJ,OAAO54I,MAAK0+B,OAAOm6G,aAAa;AAAA,MAEzC,WAAWz7H,mBAAmBpd,KAAI,GAAG;AACnC,eACE,CAACA,MAAKy7B,YACN9e,aAAa3c,MAAKgF,MAAM,KACxBhF,MAAKgF,OAAOyH,SAAS,YACrBkQ,aAAa3c,MAAK+uB,QAAQ,KAC1B/uB,MAAK+uB,SAAStiB,SAAS,SACvB,CAAC,KAAK6zI,WAAW,UAAU;AAAA,UAAE8B,WAAW;AAAA,QAAK,CAAC;AAAA,MAElD,WAAWtmI,iBAAiB9b,KAAI,GAAG;AACjC,eACE0uB,gBAAe1uB,MAAKs3B,QAAQ,YAAY,KACxC,CAAC,KAAKgpH,WAAW,UAAU;AAAA,UAAE8B,WAAW;AAAA,QAAM,CAAA,KAC9CpiJ,MAAK+5B,UAAU5tB,WAAW,KAC1BuC,EAAEoO,gBAAgB9c,MAAK+5B,UAAU,CAAC,CAAC;AAAA,MAEvC,OAAO;AACL,eAAO3N,UAAUpsB,KAAI;AAAA,MACvB;AAAA,IACF;AAAA,IAMAqiJ,QAAQ5iJ,MAAsB4zB,KAAU;AACtC,aAAQ,KAAKssH,KAAKlgJ,IAAG,IAAI4zB;AAAAA,IAC3B;AAAA,IAMAivH,QAAQ7iJ,MAA2B;AACjC,UAAIq/D,SAAe;AACnB,SAAG;AACD,cAAM6gF,OAAO7gF,OAAM6gF,KAAKlgJ,IAAG;AAC3B,YAAIkgJ,QAAQ,KAAM,QAAOA;AAAAA,MAC3B,SAAU7gF,SAAQA,OAAM3jC;AAAAA,IAC1B;AAAA,IAOAonH,WAAW9iJ,MAAa;AACtB,UAAIq/D,SAAe;AACnB,SAAG;AACD,cAAM6gF,OAAO7gF,OAAM6gF,KAAKlgJ,IAAG;AAC3B,YAAIkgJ,QAAQ,KAAM7gF,CAAAA,OAAM6gF,KAAKlgJ,IAAG,IAAI;AAAA,MACtC,SAAUq/D,SAAQA,OAAM3jC;AAAAA,IAC1B;AAAA,IAEAX,OAAO;AACL,UAAI,CAAC,KAAKilH,QAAQ;AAChB,aAAKA,SAAS;AACd,aAAK+C,MAAO;AAAA,MACd;AAAA,IACF;AAAA,IAEAA,QAAQ;AACN,YAAM9jJ,QAAO,KAAKA;AAElB,WAAK0+I,aAAaruI,uBAAOktD,OAAO,IAAI;AACpC,WAAK0C,WAAW5vD,uBAAOktD,OAAO,IAAI;AAClC,WAAKh2D,UAAU8I,uBAAOktD,OAAO,IAAI;AACjC,WAAKyjF,OAAO3wI,uBAAOktD,OAAO,IAAI;AAC9B,WAAK0jF,OAAO5wI,uBAAOktD,OAAO,IAAI;AAE9B,UAAI6C,SAAe;AACnB,SAAG;AACD,YAAIA,OAAM8gF,SAAU;AACpB,YAAI9gF,OAAMpgE,KAAK4e,aAAa;AAC1B;AAAA,QACF;AAAA,MACF,SAAUwhD,SAAQA,OAAM3jC;AAExB,YAAMsnH,gBAAgB3jF;AAEtB,YAAMngE,SAA6B;AAAA,QACjCy+I,YAAY,CAAE;AAAA,QACdJ,oBAAoB,CAAE;AAAA,QACtBuC,aAAa,CAAA;AAAA,MACd;AAED,WAAKK,WAAW;AAGhB,UAAIlhJ,MAAKyS,SAAS,cAAasoI,GAAAA,UAAiB,mBAACoF,gBAAgB,GAAG;AAClE,mBAAW6D,SAAS7D,iBAAiBrlF,OAAO;AAC1CkpF,gBAAMtzI,KAAKzQ,QAAOD,OAAMC,MAAK;AAAA,QAC/B;AACA,cAAMgkJ,eAAe9D,iBAAiBngJ,MAAKyS,IAAI;AAC/C,YAAIwxI,cAAc;AAChB,qBAAWD,SAASC,aAAanpF,OAAO;AACtCkpF,kBAAMtzI,KAAKzQ,QAAOD,OAAMC,MAAK;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AACAD,MAAAA,MAAKq+D,SAAS8hF,kBAAkBlgJ,MAAK;AACrC,WAAKihJ,WAAW;AAGhB,iBAAWlhJ,SAAQC,OAAM4gJ,aAAa;AAEpC,cAAMvjF,MAAMt9D,MAAKo9D,yBAA0B;AAC3C,mBAAWrvD,QAAQsC,OAAOnK,KAAKo3D,GAAG,GAAG;AACnC,cAAIt9D,MAAKogE,MAAMwgF,WAAW7yI,IAAI,EAAG;AACjCg2I,wBAAcV,UAAU/lF,IAAIvvD,IAAI,CAAC;AAAA,QACnC;AAGA/N,QAAAA,MAAKogE,MAAM4iF,0BAA0BhjJ,KAAI;AAAA,MAC3C;AAGA,iBAAW84I,OAAO74I,OAAMy+I,YAAY;AAClC,cAAMtnE,WAAU0hE,IAAI14E,MAAMwgF,WAAW9H,IAAIx3I,KAAKyM,IAAI;AAClD,YAAIqpE,UAAS;AACXA,UAAAA,SAAQ8nE,UAAUpG,GAAG;AAAA,QACvB,OAAO;AACLiL,wBAAcV,UAAUvK,IAAIx3I,IAAI;AAAA,QAClC;AAAA,MACF;AAGA,iBAAWtB,SAAQC,OAAMq+I,oBAAoB;AAC3Ct+I,QAAAA,MAAKogE,MAAM4iF,0BAA0BhjJ,KAAI;AAAA,MAC3C;AAAA,IACF;AAAA,IAEA0I,KAAKD,MAMF;AACD,UAAIzI,QAAO,KAAKA;AAEhB,UAAIA,MAAKsuB,aAAa;AACpBtuB,QAAAA,QAAO,KAAKkkJ,iBAAgB,EAAGlkJ;AAAAA,MACjC,WAAW,CAACA,MAAKkd,iBAAkB,KAAI,CAACld,MAAK4e,aAAa;AACxD5e,QAAAA,QAAO,KAAKygJ,eAAc,EAAGzgJ;AAAAA,MAC/B;AAEA,UAAIA,MAAKqf,qBAAqB;AAC5Brf,QAAAA,SAAQ,KAAKqgJ,kBAAmB,KAAI,KAAKC,iBAAgB,GAAItgJ;AAAAA,MAC/D;AAEA,YAAM;AAAA,QAAE87B;AAAAA,QAAMqoH;AAAAA,QAAQ5mH,OAAO;AAAA,QAAOhB;AAAAA,MAAG,IAAI9zB;AAM3C,UACE,CAACqzB,QACD,CAACqoH,WACA5mH,SAAS,SAASA,SAAS,UAC5Bv9B,MAAKwtB,WAAU,KAEf,CAACxtB,MAAKsB,KAAKyM,QACXqP,iBAAiBpd,MAAKy8B,QAAQ;AAAA,QAAE7D,QAAQ54B,MAAKsB;AAAAA,MAAM,CAAA,KACnDtB,MAAKy8B,OAAOpB,UAAU5tB,UAAUzN,MAAKsB,KAAK26B,OAAOxuB,UACjDwQ,aAAase,EAAE,GACf;AACAv8B,QAAAA,MAAKokJ,cAAc,UAAU7nH,EAAE;AAC/Bv8B,QAAAA,MAAKogE,MAAMmgF,gBACT,SACAvgJ,MAAKkQ,IAAI,QAAQ,EAAElQ,MAAKsB,KAAK26B,OAAOxuB,SAAS,CAAC,CAChD;AACA;AAAA,MACF;AAEA,UAAIzN,MAAKmtB,YAAYntB,MAAKqd,mBAAmBrd,MAAKwtB,cAAc;AAC9DxtB,QAAAA,MAAKo6D,YAAa;AAClBp6D,QAAAA,QAAOA,MAAKkQ,IAAI,MAAM;AAAA,MACxB;AAEA,YAAMm0I,aAAa57I,KAAK67I,eAAe,OAAO,IAAI77I,KAAK67I;AAEvD,YAAMC,UAAU,eAAehnH,IAAI,IAAI8mH,UAAU;AACjD,UAAIG,aAAa,CAACL,UAAUnkJ,MAAK4jJ,QAAQW,OAAO;AAEhD,UAAI,CAACC,YAAY;AACf,cAAMxkF,SAASx1B,oBAAoBjN,MAAM,EAAE;AAE3CyiC,eAAOskF,cAAcD;AAErB,SAACG,UAAU,IAAKxkJ,MAAoCykJ,iBAClD,QACA,CAACzkF,MAAM,CACT;AACA,YAAI,CAACmkF,OAAQnkJ,CAAAA,MAAK2jJ,QAAQY,SAASC,UAAU;AAAA,MAC/C;AAEA,YAAME,aAAah6G,mBAAmBnO,IAAIT,IAAI;AAC9C,YAAM9H,MAAMwwH,WAAWljJ,KAAK68B,aAAaz1B,KAAKg8I,UAAU;AACxD1kJ,MAAAA,MAAKogE,MAAMmgF,gBAAgBhjH,MAAMinH,WAAWt0I,IAAI,cAAc,EAAE8jB,MAAM,CAAC,CAAC;AAAA,IAC1E;AAAA,IAMAssH,mBAAmB;AACjB,UAAIlgF,SAAe;AACnB,SAAG;AACD,YAAIA,OAAMpgE,KAAK4e,aAAa;AAC1B,iBAAOwhD;AAAAA,QACT;AAAA,MACF,SAAUA,SAAQA,OAAM3jC;AACxB,YAAM,IAAIhlB,MAAM,yBAAyB;AAAA,IAC3C;AAAA,IAMA4oI,oBAAkC;AAChC,UAAIjgF,SAAe;AACnB,SAAG;AACD,YAAIA,OAAMpgE,KAAKytB,oBAAoB;AACjC,iBAAO2yC;AAAAA,QACT;AAAA,MACF,SAAUA,SAAQA,OAAM3jC;AACxB,aAAO;AAAA,IACT;AAAA,IAOAgkH,iBAAiB;AACf,UAAIrgF,SAAe;AACnB,SAAG;AACD,YAAIA,OAAMpgE,KAAK6sB,iBAAiB;AAC9B,iBAAOuzC;AAAAA,QACT;AAAA,MACF,SAAUA,SAAQA,OAAM3jC;AACxB,YAAM,IAAIhlB,MACR,8EACF;AAAA,IACF;AAAA,IAOAysI,mBAAmB;AACjB,UAAI9jF,SAAe;AACnB,SAAG;AACD,YAAI,CAACA,OAAMpgE,KAAKsuB,aAAa;AAC3B,iBAAO8xC,OAAMqgF,eAAgB;AAAA,QAC/B;AAAA,MACF,SAAUrgF,SAAQA,OAAM3jC,OAAOA;AAC/B,YAAM,IAAIhlB,MACR,8EACF;AAAA,IACF;AAAA,IAMAktI,iBAA0C;AACxC,YAAMrnF,MAAMjtD,uBAAOktD,OAAO,IAAI;AAE9B,UAAI6C,SAAe;AACnB,SAAG;AACD,mBAAWr/D,QAAOsP,OAAOnK,KAAKk6D,OAAMH,QAAQ,GAAG;AAC7C,cAAIl/D,QAAOu8D,QAAQ,OAAO;AACxBA,gBAAIv8D,IAAG,IAAIq/D,OAAMH,SAASl/D,IAAG;AAAA,UAC/B;AAAA,QACF;AACAq/D,QAAAA,SAAQA,OAAM3jC;AAAAA,MAChB,SAAS2jC;AAET,aAAO9C;AAAAA,IACT;AAAA,IAEA+/E,wBAAwBtvI,MAAczM,OAAuB;AAC3D,aAAO,KAAKg8I,qBAAqBvvI,IAAI,MAAMzM;AAAAA,IAC7C;AAAA,IAEAs/I,WAAW7yI,MAAmC;AAC5C,UAAIqyD,SAAe;AACnB,UAAIwkF;AAEJ,SAAG;AACD,cAAMxtE,WAAUhX,OAAMgjF,cAAcr1I,IAAI;AACxC,YAAIqpE,UAAS;AAAA,cAAAytE;AAUX,eACEA,gBAAAD,iBAAY,QAAZC,cAAcv2H,UAAW,KACzB8oD,SAAQ75C,SAAS,WACjB65C,SAAQ75C,SAAS,QACjB;AAAA,eAEK;AACL,mBAAO65C;AAAAA,UACT;AAAA,QACD,WACC,CAACA,YACDrpE,SAAS,eACTqyD,OAAMpgE,KAAKwtB,WAAY,KACvB,CAAC4yC,OAAMpgE,KAAKigB,0BAAyB,GACrC;AACA;AAAA,QACF;AACA2kI,uBAAexkF,OAAMpgE;AAAAA,MACvB,SAAUogE,SAAQA,OAAM3jC;AAAAA,IAC1B;AAAA,IAEA2mH,cAAcr1I,MAAmC;AAC/C,aAAO,KAAKkyD,SAASlyD,IAAI;AAAA,IAC3B;AAAA,IAGAuvI,qBAAqBvvI,MAA4B;AAAA,UAAA+2I;AAC/C,cAAAA,oBAAO,KAAKlE,WAAW7yI,IAAI,MAAC,OAAA,SAArB+2I,kBAAuBpqH;AAAAA,IAChC;AAAA,IAGAqqH,wBAAwBh3I,MAA4B;AAClD,YAAMqpE,WAAU,KAAKnX,SAASlyD,IAAI;AAClC,aAAOqpE,YAAO,OAAA,SAAPA,SAAS18C;AAAAA,IAClB;AAAA,IAEAsqH,cAAcj3I,MAAc;AAC1B,aAAO,CAAC,CAAC,KAAKq1I,cAAcr1I,IAAI;AAAA,IAClC;AAAA,IAQA6zI,WACE7zI,MACAtF,MACA;AACA,UAAI,CAACsF,KAAM,QAAO;AAClB,UAAIqyD,SAAe;AACnB,SAAG;AACD,YAAIA,OAAM4kF,cAAcj3I,IAAI,GAAG;AAC7B,iBAAO;AAAA,QACT;AAAA,MACF,SAAUqyD,SAAQA,OAAM3jC;AAGxB,UAAIinH;AACJ,UAAIuB;AACJ,UAAI,OAAOx8I,SAAS,UAAU;AAC5Bi7I,oBAAYj7I,KAAKi7I;AACjBuB,iBAASx8I,KAAKw8I;AAAAA,MAChB,WAAW,OAAOx8I,SAAS,WAAW;AACpCi7I,oBAAYj7I;AAAAA,MACd;AAEA,UAAI,CAACw8I,UAAU,KAAK3B,OAAOv1I,IAAI,EAAG,QAAO;AACzC,UAAI,CAAC21I,aAAa9+D,MAAMr9E,QAAQswB,SAAS9pB,IAAI,EAAG,QAAO;AACvD,UAAI,CAAC21I,aAAa9+D,MAAMsgE,iBAAiBrtH,SAAS9pB,IAAI,EAAG,QAAO;AAChE,aAAO;AAAA,IACT;AAAA,IAEAo3I,iBACEp3I,MACAtF,MACA;AAAA,UAAA28I;AACA,cAAAA,eAAO,KAAK3oH,WAAM,OAAA,SAAX2oH,aAAaxD,WAAW7zI,MAAMtF,IAAI;AAAA,IAC3C;AAAA,IAMA48I,cAAct3I,MAAcqyD,QAAc;AACxC,YAAMklF,OAAO,KAAK1E,WAAW7yI,IAAI;AACjC,UAAIu3I,MAAM;AACRA,aAAKllF,MAAMg+E,iBAAiBrwI,IAAI;AAChCu3I,aAAKllF,QAAQA;AACbA,QAAAA,OAAMH,SAASlyD,IAAI,IAAIu3I;AAAAA,MACzB;AAAA,IACF;AAAA,IAEAlH,iBAAiBrwI,MAAc;AAC7B,aAAO,KAAKkyD,SAASlyD,IAAI;AAAA,IAC3B;AAAA,IAEAw3I,cAAcx3I,MAAc;AAAA,UAAAy3I;AAE1B,OAAAA,oBAAA,KAAK5E,WAAW7yI,IAAI,MAApBy3I,QAAAA,kBAAuBplF,MAAMg+E,iBAAiBrwI,IAAI;AAGlD,UAAIqyD,SAAe;AACnB,SAAG;AACD,YAAIA,OAAM4gF,KAAKjzI,IAAI,GAAG;AACpBqyD,UAAAA,OAAM4gF,KAAKjzI,IAAI,IAAI;AAAA,QACrB;AAAA,MACF,SAAUqyD,SAAQA,OAAM3jC;AAAAA,IAC1B;AAAA,IAYAgpH,eACEC,OAAqDnpH,QACnD,KAAK7zB,KAAK;AAAA,MAAE6zB;AAAAA,IAAG,CAAC,GAClB;AACA,WAAKunH,MAAO;AAEZ,YAAM6B,OAAO,oBAAIn3I,IAAK;AACtB,iBAAWT,QAAQsC,OAAOnK,KAAK,KAAK+5D,QAAQ,GAAG;AAC7C,cAAMmX,WAAU,KAAKnX,SAASlyD,IAAI;AAClC,YAAI,CAACqpE,SAAS;AACd,cAAM;AAAA,UAAEp3E,MAAAA;AAAAA,QAAK,IAAIo3E;AACjB,YAAI,CAACp3E,MAAK4f,uBAAwB;AAClC,cAAM;AAAA,UAAE6c;AAAAA,UAAQo9G;AAAAA,QAAW,IAAI75I;AAE/B,YAAIy8B,OAAOc,SAAS,SAASooH,KAAK52I,IAAI0tB,MAAM,EAAG;AAC/CkpH,aAAK1pI,IAAIjc,MAAKy8B,MAAM;AAEpB,YAAImpH;AACJ,cAAM9pH,OAAO,CAAE;AACf,mBAAWuC,QAAQ5B,OAAO0B,cAAc;AACtCynH,4BAAAA,UAAAA,UAAYvnH,KAAK9B;AACjB,cAAI8B,KAAKvC,MAAM;AACbA,iBAAKpzB,KAAKy8B,qBAAqB,KAAK9G,KAAK9B,IAAI8B,KAAKvC,IAAI,CAAC;AAAA,UACzD;AAEA,gBAAMwhC,MAAMjtD,OAAOnK,KAAKu3D,uBAAsBp/B,MAAM,OAAO,MAAM,IAAI,CAAC;AACtE,qBAAWtwB,SAAQuvD,KAAK;AACtBooF,iBAAKhrH,YAAW3sB,KAAI,GAAGswB,KAAKvC,QAAQ,IAAI;AAAA,UAC1C;AAAA,QACF;AAGA,YAAI+9G,WAAWA,WAAWvsH,MAAM;AAAA,UAAEuN,MAAM4B;AAAAA,QAAO,CAAC,GAAG;AACjDo9G,qBAAWgM,YAAYD,OAAO;AAAA,QAChC,WAAW9pH,KAAKruB,WAAW,GAAG;AAC5BosI,qBAAWiM,OAAQ;AAAA,QACrB,OAAO;AACL,gBAAM9jD,OAAOlmE,KAAKruB,WAAW,IAAIquB,KAAK,CAAC,IAAI0N,mBAAmB1N,IAAI;AAClE,cAAI+9G,WAAWA,WAAW/7H,eAAe;AAAA,YAAEge,MAAMW;AAAAA,UAAO,CAAC,GAAG;AAC1Do9G,uBAAWgM,YAAY7jD,IAAI;AAAA,UAC7B,OAAO;AACL63C,uBAAWgM,YAAY/+G,oBAAoBk7D,IAAI,CAAC;AAAA,UAClD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAChuF,QAAAA,UAAA4wE;AAh6BKA,QA2CGr9E,UAAU8I,OAAOnK,KAAKqB,SAAQw+I,OAAO;AA3CxCnhE,QAiDGsgE,mBAAmB,CAAC,aAAa,aAAa,YAAY,KAAK;AAi3BzB;AAG7CtgE,UAAMhtB,UAAUouF,iBAAiB,SAASA,eACxC5yI,KACA0I,SACAC,SACA5a,QACA;AACA,UAAIiS,IAAI0I,OAAO,GAAG;AAChB1I,YAAI2I,OAAO,IAAI5a;AACfiS,YAAI0I,OAAO,IAAI;AAAA,MACjB;AAAA,IACD;AAcD8oE,UAAMhtB,UAAUyG,WAAW,SAEzB/8D,OACAmH,MACAxI,QACA;AACA,UAAAo+D,OAAQ,SAAC/8D,OAAMmH,MAAM,MAAMxI,QAAO,KAAKD,IAAI;AAAA,IAC5C;AAMD4kF,UAAMhtB,UAAUquF,eAAe,SAASA,aACtCl4I,MACAP,GACA;AACA,UAAI+uB,KAAKxuB;AACT,UAAIP,IAAI,EAAG+uB,OAAM/uB;AACjB,aAAO,IAAI+uB,EAAE;AAAA,IACd;AAIDqoD,UAAMhtB,UAAUg3E,UAAU,SAASA,QAEjCttI,OACAkM,GACA04I,qBACA;AACA,UAAIjoI,aAAa3c,KAAI,GAAG;AACtB,cAAM81E,WAAU,KAAKwpE,WAAWt/I,MAAKyM,IAAI;AACzC,YAAIqpE,YAAO,QAAPA,SAASmnE,YAAYnnE,SAAQp3E,KAAKmmJ,cAAc,OAAO,GAAG;AAC5D,iBAAO7kJ;AAAAA,QACT;AAAA,MACF;AAEA,UAAIsb,kBAAkBtb,KAAI,GAAG;AAC3B,eAAOA;AAAAA,MACT;AAEA,UAAI2c,aAAa3c,OAAM;AAAA,QAAEyM,MAAM;AAAA,MAAY,CAAC,GAAG;AAC7C,eAAOk4B,eACLwC,iBACEA,iBACEA,iBAAiB/N,YAAW,OAAO,GAAGA,YAAW,WAAW,CAAC,GAC7DA,YAAW,OAAO,CACpB,GACAA,YAAW,MAAM,CACnB,GACA,CAACp5B,KAAI,CACP;AAAA,MACF;AAEA,UAAI8kJ;AACJ,YAAMttH,OAAO,CAACx3B,KAAI;AAClB,UAAIkM,MAAM,MAAM;AAEd44I,qBAAa;AAAA,MACf,WAAW,OAAO54I,MAAM,UAAU;AAChCsrB,aAAKpwB,KAAKs/B,eAAex6B,CAAC,CAAC;AAG3B44I,qBAAa;AAAA,MAEf,OAAO;AAELA,qBAAa;AAAA,MACf;AAEA,UAAIF,qBAAqB;AACvBptH,aAAKW,QAAQ,KAAKz5B,KAAKy/I,IAAI4G,UAAUD,UAAU,CAAC;AAChDA,qBAAa;AAAA,MACf;AAGA,aAAOngH,eAAe,KAAKjmC,KAAKy/I,IAAI4G,UAAUD,UAAU,GAAGttH,IAAI;AAAA,IAChE;AAMD8rD,UAAMhtB,UAAU0uF,uBAAuB,SAASA,wBAC3CC,OACsB;AACzB,YAAMjpF,MAAMjtD,uBAAOktD,OAAO,IAAI;AAE9B,iBAAWhgC,QAAQgpH,OAAO;AACxB,YAAInmF,SAAe;AACnB,WAAG;AACD,qBAAWryD,QAAQsC,OAAOnK,KAAKk6D,OAAMH,QAAQ,GAAG;AAC9C,kBAAMmX,WAAUhX,OAAMH,SAASlyD,IAAI;AACnC,gBAAIqpE,SAAQ75C,SAASA,KAAM+/B,KAAIvvD,IAAI,IAAIqpE;AAAAA,UACzC;AACAhX,UAAAA,SAAQA,OAAM3jC;AAAAA,QAChB,SAAS2jC;AAAAA,MACX;AAEA,aAAO9C;AAAAA,IACR;AAEDjtD,WAAOm2I,iBAAiB5hE,MAAMhtB,WAAW;AAAA,MACvC6uF,aAAa;AAAA,QACX31E,cAAc;AAAA,QACd5uB,YAAY;AAAA,QACZhyC,MAAiB;AACf,iBAAO,KAAKlQ,KAAKy8B;AAAAA,QACnB;AAAA,MACD;AAAA,MACDgjH,KAAK;AAAA,QACH3uE,cAAc;AAAA,QACd5uB,YAAY;AAAA,QACZhyC,MAAiB;AACf,iBAAO,KAAKlQ,KAAKy/I;AAAAA,QACnB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;;;;;;;;;;;;;;;;YCt7Ca,SAAQ;AAAA,QAInB,cAAA;AACE,eAAK,WAAW,EAAE,WAAW,KAAa;AAC1C,eAAK,QAAQ,CAAE;AAAA,QAChB;AAAA,MACF;AAWD,eAAS,KAAoB,KAAgB;AAC3C,eAAO;AAAA;eAMO,IAAmB,QAAqB1+I,MAAM;AAC5D,eAAO,KAAK,MAAM,EAAE,SAASA,IAAG;AAAA;eAOlB,IAAmB,QAAqBA,MAAM;AAE5D,cAAMH,SAAQ,IAAI,QAAQG,IAAG;AAC7B,YAAIH,WAAU;AAAW,iBAAOA;AAEhC,cAAM,EAAE,OAAAyE,QAAO,UAAU,QAAO,IAAK,KAAK,MAAM;AAEhD,cAAM,SAASA,OAAM,KAAKtE,IAAG;AAC7B,eAAQ,QAAQA,IAAG,IAAI,SAAS;AAAA;AAMlB,eAAAy8D,KAAmB,QAAmB;AACpD,cAAM,EAAE,OAAAn4D,QAAO,UAAU,QAAO,IAAK,KAAK,MAAM;AAChD,YAAIA,OAAM,WAAW;AAAG;AAExB,cAAM,OAAOA,OAAM,IAAM;AACzB,gBAAQ,IAAI,IAAI;AAAA;eAMF,OAAsB,QAAqBtE,MAAM;AAC/D,cAAMH,SAAQ,IAAI,QAAQG,IAAG;AAC7B,YAAIH,WAAU;AAAW;AAEzB,cAAM,EAAE,OAAAyE,QAAO,UAAU,QAAO,IAAK,KAAK,MAAM;AAChD,iBAAS,IAAIzE,SAAQ,GAAG,IAAIyE,OAAM,QAAQ,KAAK;AAC7C,gBAAM,IAAIA,OAAM,CAAC;AACjB,UAAAA,OAAM,IAAI,CAAC,IAAI;AACf,kBAAQ,CAAC;AAAA,QACV;AACD,gBAAQtE,IAAG,IAAI;AACf,QAAAsE,OAAM,IAAK;AAAA,MACb;;;;;;;;;;;;;;;;;;;;;AC1EA,YAAM,QAAQ,IAAI,WAAW,CAAC;AAC9B,YAAM,YAAY,IAAI,WAAW,CAAC;AAClC,YAAM,QAAQ;AACd,YAAM,YAAY,IAAI,WAAW,EAAE;AACnC,YAAM,YAAY,IAAI,WAAW,GAAG;AAEpC,eAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAMpE,KAAI,MAAM,WAAW,CAAC;AAC5B,kBAAU,CAAC,IAAIA;AACf,kBAAUA,EAAC,IAAI;AAAA,MAChB;AAGD,YAAM,KACJ,OAAO,gBAAgB,cACH,oBAAI,YAAW,IAC/B,OAAO,WAAW,cAClB;AAAA,QACE,OAAO,KAAe;AACpB,gBAAM,MAAM,OAAO,KAAK,IAAI,QAAQ,IAAI,YAAY,IAAI,UAAU;AAClE,iBAAO,IAAI,SAAU;AAAA,QACtB;AAAA,MACF,IACD;AAAA,QACE,OAAO,KAAe;AACpB,cAAI,MAAM;AACV,mBAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AACnC,mBAAO,OAAO,aAAa,IAAI,CAAC,CAAC;AAAA,UAClC;AACD,iBAAO;AAAA,QACR;AAAA,MACF;AAES,eAAA,OAAO,UAAgB;AACrC,cAAMhB,SAAkD,IAAI,WAAW,CAAC;AACxE,cAAM,UAA6B,CAAE;AAErC,YAAIW,SAAQ;AACZ,WAAG;AACD,gBAAM,OAAO,QAAQ,UAAUA,MAAK;AACpC,gBAAMV,QAAsB,CAAE;AAC9B,cAAI,SAAS;AACb,cAAI,UAAU;AACd,UAAAD,OAAM,CAAC,IAAI;AAEX,mBAAS,IAAIW,QAAO,IAAI,MAAM,KAAK;AACjC,gBAAI;AAEJ,gBAAI,cAAc,UAAU,GAAGX,QAAO,CAAC;AACvC,kBAAM,MAAMA,OAAM,CAAC;AACnB,gBAAI,MAAM;AAAS,uBAAS;AAC5B,sBAAU;AAEV,gBAAI,WAAW,UAAU,GAAG,IAAI,GAAG;AACjC,kBAAI,cAAc,UAAU,GAAGA,QAAO,CAAC;AACvC,kBAAI,cAAc,UAAU,GAAGA,QAAO,CAAC;AACvC,kBAAI,cAAc,UAAU,GAAGA,QAAO,CAAC;AAEvC,kBAAI,WAAW,UAAU,GAAG,IAAI,GAAG;AACjC,oBAAI,cAAc,UAAU,GAAGA,QAAO,CAAC;AACvC,sBAAM,CAAC,KAAKA,OAAM,CAAC,GAAGA,OAAM,CAAC,GAAGA,OAAM,CAAC,GAAGA,OAAM,CAAC,CAAC;AAAA,cACnD,OAAM;AACL,sBAAM,CAAC,KAAKA,OAAM,CAAC,GAAGA,OAAM,CAAC,GAAGA,OAAM,CAAC,CAAC;AAAA,cACzC;AAAA,YACF,OAAM;AACL,oBAAM,CAAC,GAAG;AAAA,YACX;AAED,YAAAC,MAAK,KAAK,GAAG;AAAA,UACd;AAED,cAAI,CAAC;AAAQ,YAAAwmJ,MAAKxmJ,KAAI;AACtB,kBAAQ,KAAKA,KAAI;AACjB,UAAAU,SAAQ,OAAO;AAAA,QAChB,SAAQA,UAAS,SAAS;AAE3B,eAAO;AAAA;AAGT,eAAS,QAAQ,UAAkBA,QAAa;AAC9C,cAAM,MAAM,SAAS,QAAQ,KAAKA,MAAK;AACvC,eAAO,QAAQ,KAAK,SAAS,SAAS;AAAA;AAGxC,eAAS,cAAc,UAAkB2M,MAAatN,QAAyB,GAAS;AACtF,YAAIkB,SAAQ;AACZ,YAAI,QAAQ;AACZ,YAAI,UAAU;AAEd,WAAG;AACD,gBAAMF,KAAI,SAAS,WAAWsM,MAAK;AACnC,oBAAU,UAAUtM,EAAC;AACrB,UAAAE,WAAU,UAAU,OAAO;AAC3B,mBAAS;AAAA,QACV,SAAQ,UAAU;AAEnB,cAAM,eAAeA,SAAQ;AAC7B,QAAAA,YAAW;AAEX,YAAI,cAAc;AAChB,UAAAA,SAAQ,cAAc,CAACA;AAAA,QACxB;AAED,QAAAlB,OAAM,CAAC,KAAKkB;AACZ,eAAOoM;AAAA;AAGT,eAAS,WAAW,UAAkB,GAAW,QAAc;AAC7D,YAAI,KAAK;AAAQ,iBAAO;AACxB,eAAO,SAAS,WAAW,CAAC,MAAM;AAAA;AAGpC,eAASm5I,MAAKxmJ,OAAwB;AACpC,QAAAA,MAAK,KAAK,cAAc;AAAA;AAG1B,eAAS,eAAe,GAAqB,GAAmB;AAC9D,eAAO,EAAE,CAAC,IAAI,EAAE,CAAC;AAAA;AAKH,eAAA,OAAO,SAAoC;AACzD,cAAMD,SAAkD,IAAI,WAAW,CAAC;AACxE,cAAM,YAAY,OAAO;AACzB,cAAM,YAAY,YAAY;AAC9B,cAAM,MAAM,IAAI,WAAW,SAAS;AACpC,cAAM,MAAM,IAAI,SAAS,GAAG,SAAS;AACrC,YAAIsN,OAAM;AACV,YAAI,MAAM;AAEV,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACvC,gBAAMrN,QAAO,QAAQ,CAAC;AACtB,cAAI,IAAI,GAAG;AACT,gBAAIqN,SAAQ,WAAW;AACrB,qBAAO,GAAG,OAAO,GAAG;AACpB,cAAAA,OAAM;AAAA,YACP;AACD,gBAAIA,MAAK,IAAI;AAAA,UACd;AACD,cAAIrN,MAAK,WAAW;AAAG;AAEvB,UAAAD,OAAM,CAAC,IAAI;AAEX,mBAAS,IAAI,GAAG,IAAIC,MAAK,QAAQ,KAAK;AACpC,kBAAM,UAAUA,MAAK,CAAC;AAGtB,gBAAIqN,OAAM,WAAW;AACnB,qBAAO,GAAG,OAAO,GAAG;AACpB,kBAAI,WAAW,GAAG,WAAWA,IAAG;AAChC,cAAAA,QAAO;AAAA,YACR;AACD,gBAAI,IAAI;AAAG,kBAAIA,MAAK,IAAI;AAExB,YAAAA,OAAM,cAAc,KAAKA,MAAKtN,QAAO,SAAS,CAAC;AAE/C,gBAAI,QAAQ,WAAW;AAAG;AAC1B,YAAAsN,OAAM,cAAc,KAAKA,MAAKtN,QAAO,SAAS,CAAC;AAC/C,YAAAsN,OAAM,cAAc,KAAKA,MAAKtN,QAAO,SAAS,CAAC;AAC/C,YAAAsN,OAAM,cAAc,KAAKA,MAAKtN,QAAO,SAAS,CAAC;AAE/C,gBAAI,QAAQ,WAAW;AAAG;AAC1B,YAAAsN,OAAM,cAAc,KAAKA,MAAKtN,QAAO,SAAS,CAAC;AAAA,UAChD;AAAA,QACF;AAED,eAAO,MAAM,GAAG,OAAO,IAAI,SAAS,GAAGsN,IAAG,CAAC;AAAA;AAG7C,eAAS,cACP,KACAA,MACAtN,QACA,SACA,GAAS;AAET,cAAM,OAAO,QAAQ,CAAC;AACtB,YAAI,MAAM,OAAOA,OAAM,CAAC;AACxB,QAAAA,OAAM,CAAC,IAAI;AAEX,cAAM,MAAM,IAAK,CAAC,OAAO,IAAK,IAAI,OAAO;AACzC,WAAG;AACD,cAAI,UAAU,MAAM;AACpB,mBAAS;AACT,cAAI,MAAM;AAAG,uBAAW;AACxB,cAAIsN,MAAK,IAAI,UAAU,OAAO;AAAA,QAC/B,SAAQ,MAAM;AAEf,eAAOA;AAAA,MACT;;;;;;;;;;;;;;;;;;;ACpMA,YAAM,cAAc;AAYpB,YAAM,WAAW;AAWjB,YAAM,YAAY;AAalB,UAAK;AAAL,OAAA,SAAKo5I,UAAO;AACV,QAAAA,SAAAA,SAAA,OAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,MAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,OAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,cAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,cAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,gBAAA,IAAA,CAAA,IAAA;AACA,QAAAA,SAAAA,SAAA,UAAA,IAAA,CAAA,IAAA;AAAA,MACF,GARK,YAAA,UAQJ,CAAA,EAAA;AAED,eAAS,cAAcv+I,QAAa;AAClC,eAAO,YAAY,KAAKA,MAAK;AAAA;AAG/B,eAAS,oBAAoBA,QAAa;AACxC,eAAOA,OAAM,WAAW,IAAI;AAAA;AAG9B,eAAS,eAAeA,QAAa;AACnC,eAAOA,OAAM,WAAW,GAAG;AAAA;AAG7B,eAAS,UAAUA,QAAa;AAC9B,eAAOA,OAAM,WAAW,OAAO;AAAA;AAGjC,eAAS,WAAWA,QAAa;AAC/B,eAAO,SAAS,KAAKA,MAAK;AAAA;AAG5B,eAAS,iBAAiBA,QAAa;AACrC,cAAM,QAAQ,SAAS,KAAKA,MAAK;AACjC,eAAO,QACL,MAAM,CAAC,GACP,MAAM,CAAC,KAAK,IACZ,MAAM,CAAC,GACP,MAAM,CAAC,KAAK,IACZ,MAAM,CAAC,KAAK,KACZ,MAAM,CAAC,KAAK,IACZ,MAAM,CAAC,KAAK,EAAE;AAAA;AAIlB,eAAS,aAAaA,QAAa;AACjC,cAAM,QAAQ,UAAU,KAAKA,MAAK;AAClC,cAAMpI,QAAO,MAAM,CAAC;AACpB,eAAO,QACL,SACA,IACA,MAAM,CAAC,KAAK,IACZ,IACA,eAAeA,KAAI,IAAIA,QAAO,MAAMA,OACpC,MAAM,CAAC,KAAK,IACZ,MAAM,CAAC,KAAK,EAAE;AAAA;AAIlB,eAAS,QACP,QACA,MACA,MACA,MACAA,OACA,OACA,MAAY;AAEZ,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAAA;AAAA,UACA;AAAA,UACA;AAAA,UACA,MAAM,QAAQ;AAAA,QACf;AAAA;AAGH,eAAS,SAASoI,QAAa;AAC7B,YAAI,oBAAoBA,MAAK,GAAG;AAC9B,gBAAM8Q,OAAM,iBAAiB,UAAU9Q,MAAK;AAC5C,UAAA8Q,KAAI,SAAS;AACb,UAAAA,KAAI,OAAO,QAAQ;AACnB,iBAAOA;AAAA,QACR;AAED,YAAI,eAAe9Q,MAAK,GAAG;AACzB,gBAAM8Q,OAAM,iBAAiB,mBAAmB9Q,MAAK;AACrD,UAAA8Q,KAAI,SAAS;AACb,UAAAA,KAAI,OAAO;AACX,UAAAA,KAAI,OAAO,QAAQ;AACnB,iBAAOA;AAAA,QACR;AAED,YAAI,UAAU9Q,MAAK;AAAG,iBAAO,aAAaA,MAAK;AAE/C,YAAI,cAAcA,MAAK;AAAG,iBAAO,iBAAiBA,MAAK;AAEvD,cAAM8Q,OAAM,iBAAiB,oBAAoB9Q,MAAK;AACtD,QAAA8Q,KAAI,SAAS;AACb,QAAAA,KAAI,OAAO;AACX,QAAAA,KAAI,OAAO9Q,SACPA,OAAM,WAAW,GAAG,IAClB,QAAQ,QACRA,OAAM,WAAW,GAAG,IACpB,QAAQ,OACR,QAAQ,eACV,QAAQ;AACZ,eAAO8Q;AAAA;AAGT,eAAS,kBAAkBlZ,OAAY;AAGrC,YAAIA,MAAK,SAAS,KAAK;AAAG,iBAAOA;AACjC,cAAMY,SAAQZ,MAAK,YAAY,GAAG;AAClC,eAAOA,MAAK,MAAM,GAAGY,SAAQ,CAAC;AAAA;AAGhC,eAAS,WAAWsY,MAAU3Y,OAAS;AACrC,sBAAcA,OAAMA,MAAK,IAAI;AAI7B,YAAI2Y,KAAI,SAAS,KAAK;AACpB,UAAAA,KAAI,OAAO3Y,MAAK;AAAA,QACjB,OAAM;AAEL,UAAA2Y,KAAI,OAAO,kBAAkB3Y,MAAK,IAAI,IAAI2Y,KAAI;AAAA,QAC/C;AAAA;AAOH,eAAS,cAAcA,MAAU,MAAa;AAC5C,cAAM,MAAM,QAAQ,QAAQ;AAC5B,cAAM,SAASA,KAAI,KAAK,MAAM,GAAG;AAIjC,YAAI,UAAU;AAId,YAAI,WAAW;AAKf,YAAI,mBAAmB;AAEvB,iBAAS,IAAI,GAAG,IAAI,OAAO,QAAQ,KAAK;AACtC,gBAAM,QAAQ,OAAO,CAAC;AAGtB,cAAI,CAAC,OAAO;AACV,+BAAmB;AACnB;AAAA,UACD;AAGD,6BAAmB;AAGnB,cAAI,UAAU;AAAK;AAInB,cAAI,UAAU,MAAM;AAClB,gBAAI,UAAU;AACZ,iCAAmB;AACnB;AACA;AAAA,YACD,WAAU,KAAK;AAGd,qBAAO,SAAS,IAAI;AAAA,YACrB;AACD;AAAA,UACD;AAID,iBAAO,SAAS,IAAI;AACpB;AAAA,QACD;AAED,YAAIlZ,QAAO;AACX,iBAAS,IAAI,GAAG,IAAI,SAAS,KAAK;AAChC,UAAAA,SAAQ,MAAM,OAAO,CAAC;AAAA,QACvB;AACD,YAAI,CAACA,SAAS,oBAAoB,CAACA,MAAK,SAAS,KAAK,GAAI;AACxD,UAAAA,SAAQ;AAAA,QACT;AACD,QAAAkZ,KAAI,OAAOlZ;AAAA;eAMW,QAAQoI,QAAe7H,OAAwB;AACrE,YAAI,CAAC6H,UAAS,CAAC7H;AAAM,iBAAO;AAE5B,cAAM2Y,OAAM,SAAS9Q,MAAK;AAC1B,YAAI,YAAY8Q,KAAI;AAEpB,YAAI3Y,SAAQ,cAAc,QAAQ,UAAU;AAC1C,gBAAM,UAAU,SAASA,KAAI;AAC7B,gBAAM,WAAW,QAAQ;AAEzB,kBAAQ,WAAS;AAAA,YACf,KAAK,QAAQ;AACX,cAAA2Y,KAAI,OAAO,QAAQ;AAAA;AAAA,YAGrB,KAAK,QAAQ;AACX,cAAAA,KAAI,QAAQ,QAAQ;AAAA;AAAA,YAGtB,KAAK,QAAQ;AAAA,YACb,KAAK,QAAQ;AACX,yBAAWA,MAAK,OAAO;AAAA;AAAA,YAGzB,KAAK,QAAQ;AAEX,cAAAA,KAAI,OAAO,QAAQ;AACnB,cAAAA,KAAI,OAAO,QAAQ;AACnB,cAAAA,KAAI,OAAO,QAAQ;AAAA;AAAA,YAGrB,KAAK,QAAQ;AAEX,cAAAA,KAAI,SAAS,QAAQ;AAAA,UACxB;AACD,cAAI,WAAW;AAAW,wBAAY;AAAA,QACvC;AAED,sBAAcA,MAAK,SAAS;AAE5B,cAAM,YAAYA,KAAI,QAAQA,KAAI;AAClC,gBAAQ,WAAS;AAAA;AAAA;AAAA,UAIf,KAAK,QAAQ;AAAA,UACb,KAAK,QAAQ;AACX,mBAAO;AAAA,UAET,KAAK,QAAQ,cAAc;AAEzB,kBAAMlZ,QAAOkZ,KAAI,KAAK,MAAM,CAAC;AAE7B,gBAAI,CAAClZ;AAAM,qBAAO,aAAa;AAE/B,gBAAI,WAAWO,SAAQ6H,MAAK,KAAK,CAAC,WAAWpI,KAAI,GAAG;AAIlD,qBAAO,OAAOA,QAAO;AAAA,YACtB;AAED,mBAAOA,QAAO;AAAA,UACf;AAAA,UAED,KAAK,QAAQ;AACX,mBAAOkZ,KAAI,OAAO;AAAA,UAEpB;AACE,mBAAOA,KAAI,SAAS,OAAOA,KAAI,OAAOA,KAAI,OAAOA,KAAI,OAAOA,KAAI,OAAO;AAAA,QAC1E;AAAA,MACH;;;;;;;;;;;;ACtTA,KAAC,SAAU,QAAQ,SAAS;AACuC,cAAQ,SAASpY,6BAAwCW,sBAAkC,CAAA;AAAA,IAG7J,GAAEs/B,kBAAO,SAAU/sB,UAAS,gBAAgB,YAAY;AAErD,eAAS,QAAQ5L,QAAO7H,OAAM;AAI1B,YAAIA,SAAQ,CAACA,MAAK,SAAS,GAAG;AAC1B,UAAAA,SAAQ;AACZ,eAAO,WAAW6H,QAAO7H,KAAI;AAAA,MACrC;AAKI,eAAS,cAAcP,OAAM;AACzB,YAAI,CAACA;AACD,iBAAO;AACX,cAAMY,SAAQZ,MAAK,YAAY,GAAG;AAClC,eAAOA,MAAK,MAAM,GAAGY,SAAQ,CAAC;AAAA,MACtC;AAEI,YAAM,SAAS;AACf,YAAM,gBAAgB;AACtB,YAAM,cAAc;AACpB,YAAM,gBAAgB;AACtB,YAAM,cAAc;AACpB,YAAM,qBAAqB;AAC3B,YAAM,uBAAuB;AAE7B,eAAS,UAAU,UAAU,OAAO;AAChC,cAAM,gBAAgB,wBAAwB,UAAU,CAAC;AACzD,YAAI,kBAAkB,SAAS;AAC3B,iBAAO;AAGX,YAAI,CAAC;AACD,qBAAW,SAAS,MAAO;AAC/B,iBAAS,IAAI,eAAe,IAAI,SAAS,QAAQ,IAAI,wBAAwB,UAAU,IAAI,CAAC,GAAG;AAC3F,mBAAS,CAAC,IAAI,aAAa,SAAS,CAAC,GAAG,KAAK;AAAA,QACzD;AACQ,eAAO;AAAA,MACf;AACI,eAAS,wBAAwB,UAAU,OAAO;AAC9C,iBAAS,IAAI,OAAO,IAAI,SAAS,QAAQ,KAAK;AAC1C,cAAI,CAAC,SAAS,SAAS,CAAC,CAAC;AACrB,mBAAO;AAAA,QACvB;AACQ,eAAO,SAAS;AAAA,MACxB;AACI,eAAS,SAASV,OAAM;AACpB,iBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,cAAIA,MAAK,CAAC,EAAE,MAAM,IAAIA,MAAK,IAAI,CAAC,EAAE,MAAM,GAAG;AACvC,mBAAO;AAAA,UACvB;AAAA,QACA;AACQ,eAAO;AAAA,MACf;AACI,eAAS,aAAaA,OAAM,OAAO;AAC/B,YAAI,CAAC;AACD,UAAAA,QAAOA,MAAK,MAAO;AACvB,eAAOA,MAAK,KAAK,cAAc;AAAA,MACvC;AACI,eAAS,eAAe,GAAG,GAAG;AAC1B,eAAO,EAAE,MAAM,IAAI,EAAE,MAAM;AAAA,MACnC;AAEI,UAAI,QAAQ;AAiBZ,eAAS0mJ,cAAa,UAAU,QAAQ,KAAK,MAAM;AAC/C,eAAO,OAAO,MAAM;AAChB,gBAAM,MAAM,OAAQ,OAAO,OAAQ;AACnC,gBAAM,MAAM,SAAS,GAAG,EAAE,MAAM,IAAI;AACpC,cAAI,QAAQ,GAAG;AACX,oBAAQ;AACR,mBAAO;AAAA,UACvB;AACY,cAAI,MAAM,GAAG;AACT,kBAAM,MAAM;AAAA,UAC5B,OACiB;AACD,mBAAO,MAAM;AAAA,UAC7B;AAAA,QACA;AACQ,gBAAQ;AACR,eAAO,MAAM;AAAA,MACrB;AACI,eAAS,WAAW,UAAU,QAAQhmJ,QAAO;AACzC,iBAAS,IAAIA,SAAQ,GAAG,IAAI,SAAS,QAAQA,SAAQ,KAAK;AACtD,cAAI,SAAS,CAAC,EAAE,MAAM,MAAM;AACxB;AAAA,QAChB;AACQ,eAAOA;AAAA,MACf;AACI,eAAS,WAAW,UAAU,QAAQA,QAAO;AACzC,iBAAS,IAAIA,SAAQ,GAAG,KAAK,GAAGA,SAAQ,KAAK;AACzC,cAAI,SAAS,CAAC,EAAE,MAAM,MAAM;AACxB;AAAA,QAChB;AACQ,eAAOA;AAAA,MACf;AACI,eAAS,gBAAgB;AACrB,eAAO;AAAA,UACH,SAAS;AAAA,UACT,YAAY;AAAA,UACZ,WAAW;AAAA,QACd;AAAA,MACT;AAKI,eAAS,qBAAqB,UAAU,QAAQX,QAAOc,MAAK;AACxD,cAAM,EAAE,SAAS,YAAY,UAAW,IAAGd;AAC3C,YAAI,MAAM;AACV,YAAI,OAAO,SAAS,SAAS;AAC7B,YAAIc,SAAQ,SAAS;AACjB,cAAI,WAAW,YAAY;AACvB,oBAAQ,cAAc,MAAM,SAAS,SAAS,EAAE,MAAM,MAAM;AAC5D,mBAAO;AAAA,UACvB;AACY,cAAI,UAAU,YAAY;AAEtB,kBAAM,cAAc,KAAK,IAAI;AAAA,UAC7C,OACiB;AACD,mBAAO;AAAA,UACvB;AAAA,QACA;AACQ,QAAAd,OAAM,UAAUc;AAChB,QAAAd,OAAM,aAAa;AACnB,eAAQA,OAAM,YAAY2mJ,cAAa,UAAU,QAAQ,KAAK,IAAI;AAAA,MAC1E;AAII,eAAS,eAAe,SAAS,OAAO;AACpC,cAAM,UAAU,MAAM,IAAI,cAAc;AACxC,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,gBAAM1mJ,QAAO,QAAQ,CAAC;AACtB,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,kBAAM,MAAMA,MAAK,CAAC;AAClB,gBAAI,IAAI,WAAW;AACf;AACJ,kBAAM2mJ,eAAc,IAAI,aAAa;AACrC,kBAAM,aAAa,IAAI,WAAW;AAClC,kBAAM,eAAe,IAAI,aAAa;AACtC,kBAAM,iBAAiB,QAAQA,YAAW;AAC1C,kBAAM,eAAgB,eAAe,UAAU,MAAM,eAAe,UAAU,IAAI,CAAA;AAClF,kBAAM,OAAO,MAAMA,YAAW;AAK9B,gBAAIjmJ,SAAQ,WAAW,cAAc,cAAc,qBAAqB,cAAc,cAAc,MAAM,UAAU,CAAC;AACrH,iBAAK,YAAY,EAAEA;AACnB,mBAAO,cAAcA,QAAO,CAAC,cAAc,GAAG,IAAI,MAAM,CAAC,CAAC;AAAA,UAC1E;AAAA,QACA;AACQ,eAAO;AAAA,MACf;AACI,eAAS,OAAOyE,QAAOzE,QAAOO,QAAO;AACjC,iBAAS,IAAIkE,OAAM,QAAQ,IAAIzE,QAAO,KAAK;AACvC,UAAAyE,OAAM,CAAC,IAAIA,OAAM,IAAI,CAAC;AAAA,QAClC;AACQ,QAAAA,OAAMzE,MAAK,IAAIO;AAAA,MACvB;AAMI,eAAS,iBAAiB;AACtB,eAAO,EAAE,WAAW,KAAM;AAAA,MAClC;AAEI,YAAM,SAAS,SAAU,KAAK,QAAQ;AAClC,cAAM,SAASqH,OAAM,GAAG;AACxB,YAAI,EAAE,cAAc,SAAS;AACzB,iBAAO,IAAI,SAAS,QAAQ,MAAM;AAAA,QAC9C;AACQ,cAAM,WAAW,CAAE;AACnB,cAAM,UAAU,CAAE;AAClB,cAAM,iBAAiB,CAAE;AACzB,cAAM,QAAQ,CAAE;AAChB,cAAM,aAAa,CAAE;AACrB,gBAAQ,QAAQ,QAAQ,UAAU,SAAS,gBAAgB,OAAO,YAAY,GAAG,GAAG,UAAU,QAAQ;AACtG,cAAM,SAAS;AAAA,UACX,SAAS;AAAA,UACT,MAAM,OAAO;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACH;AACD,eAAO,oBAAoB,MAAM;AAAA,MACpC;AACD,eAASA,OAAM,KAAK;AAChB,eAAO,OAAO,QAAQ,WAAW,KAAK,MAAM,GAAG,IAAI;AAAA,MAC3D;AACI,eAAS,QAAQJ,QAAO,QAAQ,UAAU,SAAS,gBAAgB,OAAO,YAAY,YAAY,cAAc,UAAU,YAAY;AAClI,cAAM,EAAE,SAAQ,IAAKA;AACrB,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACtC,gBAAM,EAAE,KAAK,WAAW,SAAS,CAAC;AAClC,cAAI,KAAK;AACT,cAAI,KAAK;AACT,cAAI,IAAI,IAAI,SAAS,QAAQ;AACzB,kBAAM,aAAa,SAAS,IAAI,CAAC,EAAE;AACnC,iBAAK,KAAK,IAAI,UAAU,aAAa,WAAW,IAAI;AACpD,gBAAI,OAAO,UAAU;AACjB,mBAAK,KAAK,IAAI,YAAY,eAAe,WAAW,MAAM;AAAA,YAC9E,WACyB,KAAK,UAAU;AACpB,mBAAK,eAAe,WAAW;AAAA,YACnD;AAAA,UACA;AACY,qBAAW,KAAK,QAAQ,UAAU,SAAS,gBAAgB,OAAO,YAAY,aAAa,OAAO,MAAM,eAAe,OAAO,QAAQ,IAAI,EAAE;AAAA,QACxJ;AAAA,MACA;AACI,eAAS,WAAWA,QAAO,QAAQ,UAAU,SAAS,gBAAgB,OAAO,YAAY,YAAY,cAAc,UAAU,YAAY;AACrI,cAAM,SAASI,OAAMJ,MAAK;AAC1B,YAAI,cAAc;AACd,iBAAO,QAAQ,GAAG,SAAS;AAC/B,cAAM,MAAM,IAAI,SAAS,QAAQ,MAAM;AACvC,cAAM,gBAAgB,QAAQ;AAC9B,cAAM,cAAc,MAAM;AAC1B,cAAM,UAAU,gBAAgB,GAAG;AACnC,cAAM,EAAE,iBAAiB,gBAAgB,UAAU,YAAY,QAAO,IAAK;AAC3E,eAAO,SAAS,eAAe;AAC/B,eAAO,OAAO,IAAI,KAAK;AACvB,YAAI;AACA,iBAAO,gBAAgB,QAAQ;AAAA;AAE/B,mBAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ;AACxC,2BAAe,KAAK,IAAI;AAChC,YAAI;AACA,mBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ;AAChC,uBAAW,KAAK,QAAQ,CAAC,IAAI,aAAa;AAClD,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,gBAAM,QAAQ,aAAa;AAK3B,cAAI,QAAQ;AACR;AAGJ,gBAAM,MAAM,QAAQ,UAAU,KAAK;AAGnC,gBAAM,UAAU,MAAM,IAAI,eAAe;AACzC,gBAAMlI,QAAO,QAAQ,CAAC;AACtB,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,kBAAM,MAAMA,MAAK,CAAC;AAClB,kBAAM6U,UAAS,UAAU,IAAI,MAAM;AAGnC,gBAAI,UAAU,YAAYA,WAAU;AAChC;AACJ,gBAAI,IAAI,WAAW,GAAG;AAClB,kBAAI,KAAK,CAACA,OAAM,CAAC;AACjB;AAAA,YACpB;AACgB,kBAAM,eAAe,gBAAgB,IAAI,aAAa;AACtD,kBAAM,aAAa,IAAI,WAAW;AAClC,kBAAM,eAAe,IAAI,aAAa;AACtC,gBAAI,KAAK,IAAI,WAAW,IAClB,CAACA,SAAQ,cAAc,YAAY,YAAY,IAC/C,CAACA,SAAQ,cAAc,YAAY,cAAc,cAAc,IAAI,WAAW,CAAC,CAAC;AAAA,UACtG;AAAA,QACA;AAAA,MACA;AACI,eAAS,OAAO,KAAK,OAAO;AACxB,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ;AAC9B,cAAI,KAAK,MAAM,CAAC,CAAC;AAAA,MAC7B;AACI,eAAS,QAAQ,KAAKnU,QAAO;AACzB,iBAAS,IAAI,IAAI,QAAQ,KAAKA,QAAO;AACjC,cAAI,CAAC,IAAI,CAAE;AACf,eAAO,IAAIA,MAAK;AAAA,MACxB;AAEI,YAAM,gBAAgB;AACtB,YAAM,kBAAkB;AACxB,YAAM,oBAAoB;AAC1B,YAAM,uBAAuB;AAAA,MAC7B,MAAM,SAAS;AAAA,QACX,YAAY,KAAK,QAAQ;AACrB,gBAAM0xH,YAAW,OAAO,QAAQ;AAChC,cAAI,CAACA,aAAY,IAAI;AACjB,mBAAO;AACX,gBAAM,SAAUA,YAAW,KAAK,MAAM,GAAG,IAAI;AAC7C,gBAAM,EAAE,SAAAz4G,UAAS,MAAA1Z,OAAM,OAAO,YAAY,SAAS,eAAc,IAAK;AACtE,eAAK,UAAU0Z;AACf,eAAK,OAAO1Z;AACZ,eAAK,QAAQ,SAAS,CAAE;AACxB,eAAK,aAAa;AAClB,eAAK,UAAU;AACf,eAAK,iBAAiB;AACtB,eAAK,aAAa,OAAO,cAAc,OAAO,uBAAuB;AACrE,gBAAM,OAAO,QAAQ,cAAc,IAAI,cAAc,MAAM,CAAC;AAC5D,eAAK,kBAAkB,QAAQ,IAAI,CAAC,MAAM,QAAQ,KAAK,IAAI,IAAI,CAAC;AAChE,gBAAM,EAAE,SAAQ,IAAK;AACrB,cAAI,OAAO,aAAa,UAAU;AAC9B,iBAAK,WAAW;AAChB,iBAAK,WAAW;AAAA,UAChC,OACiB;AACD,iBAAK,WAAW;AAChB,iBAAK,WAAW,UAAU,UAAUmyH,SAAQ;AAAA,UAC5D;AACY,eAAK,eAAe,cAAe;AACnC,eAAK,aAAa;AAClB,eAAK,iBAAiB;AAAA,QAClC;AAAA,MACA;AAKI,eAAS,KAAK,KAAK;AACf,eAAO;AAAA,MACf;AAII,eAAS,gBAAgB,KAAK;AAC1B,YAAI;AACJ,YAAI;AACJ,gBAAS,MAAM,KAAK,KAAK,GAAG,GAAG,cAAc,QAAQ,OAAO,SAAS,KAAM,GAAG,WAAW,eAAe,OAAO,KAAK,GAAG,EAAE,QAAQ;AAAA,MACzI;AAII,eAAS,gBAAgB,KAAK;AAC1B,YAAI;AACJ,gBAAS,KAAK,KAAK,GAAG,GAAG,aAAa,GAAG,WAAW,eAAe,OAAO,KAAK,GAAG,EAAE,QAAQ;AAAA,MACpG;AAKI,eAAS,aAAa,KAAKpyH,OAAM6U,SAAQ;AACrC,cAAM,UAAU,gBAAgB,GAAG;AAGnC,YAAI7U,SAAQ,QAAQ;AAChB,iBAAO;AACX,cAAM,WAAW,QAAQA,KAAI;AAC7B,cAAMU,SAAQ,qBAAqB,UAAU,KAAK,GAAG,EAAE,cAAcV,OAAM6U,SAAQ,oBAAoB;AACvG,eAAOnU,WAAU,KAAK,OAAO,SAASA,MAAK;AAAA,MACnD;AAMI,eAAS,oBAAoB,KAAK,QAAQ;AACtC,YAAI,EAAE,MAAAV,OAAM,QAAA6U,SAAQ,KAAM,IAAG;AAC7B,QAAA7U;AACA,YAAIA,QAAO;AACP,gBAAM,IAAI,MAAM,aAAa;AACjC,YAAI6U,UAAS;AACT,gBAAM,IAAI,MAAM,eAAe;AACnC,cAAM,UAAU,gBAAgB,GAAG;AAGnC,YAAI7U,SAAQ,QAAQ;AAChB,iBAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAC1C,cAAM,WAAW,QAAQA,KAAI;AAC7B,cAAMU,SAAQ,qBAAqB,UAAU,KAAK,GAAG,EAAE,cAAcV,OAAM6U,SAAQ,QAAQ,oBAAoB;AAC/G,YAAInU,WAAU;AACV,iBAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAC1C,cAAM,UAAU,SAASA,MAAK;AAC9B,YAAI,QAAQ,WAAW;AACnB,iBAAO,SAAS,MAAM,MAAM,MAAM,IAAI;AAC1C,cAAM,EAAE,OAAO,gBAAe,IAAK;AACnC,eAAO,SAAS,gBAAgB,QAAQ,aAAa,CAAC,GAAG,QAAQ,WAAW,IAAI,GAAG,QAAQ,aAAa,GAAG,QAAQ,WAAW,IAAI,MAAM,QAAQ,WAAW,CAAC,IAAI,IAAI;AAAA,MAC5K;AAII,eAAS,qBAAqB,KAAK,QAAQ;AACvC,cAAM,EAAE,QAAA2B,SAAQ,MAAArC,OAAM,QAAA6U,SAAQ,KAAM,IAAG;AACvC,eAAO,kBAAkB,KAAKxS,SAAQrC,OAAM6U,SAAQ,QAAQ,sBAAsB,KAAK;AAAA,MAC/F;AAII,eAAS,yBAAyB,KAAK,QAAQ;AAC3C,cAAM,EAAE,QAAAxS,SAAQ,MAAArC,OAAM,QAAA6U,SAAQ,KAAM,IAAG;AAEvC,eAAO,kBAAkB,KAAKxS,SAAQrC,OAAM6U,SAAQ,QAAQ,mBAAmB,IAAI;AAAA,MAC3F;AAII,eAAS,YAAY,KAAK,IAAI;AAC1B,cAAM,UAAU,gBAAgB,GAAG;AACnC,cAAM,EAAE,OAAO,gBAAe,IAAK;AACnC,iBAAS,IAAI,GAAG,IAAI,QAAQ,QAAQ,KAAK;AACrC,gBAAM7U,QAAO,QAAQ,CAAC;AACtB,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AAClC,kBAAM,MAAMA,MAAK,CAAC;AAClB,kBAAM,gBAAgB,IAAI;AAC1B,kBAAM,kBAAkB,IAAI,CAAC;AAC7B,gBAAIqC,UAAS;AACb,gBAAI,eAAe;AACnB,gBAAI,iBAAiB;AACrB,gBAAI,OAAO;AACX,gBAAI,IAAI,WAAW,GAAG;AAClB,cAAAA,UAAS,gBAAgB,IAAI,CAAC,CAAC;AAC/B,6BAAe,IAAI,CAAC,IAAI;AACxB,+BAAiB,IAAI,CAAC;AAAA,YAC1C;AACgB,gBAAI,IAAI,WAAW;AACf,qBAAO,MAAM,IAAI,CAAC,CAAC;AACvB,eAAG;AAAA,cACC;AAAA,cACA;AAAA,cACA,QAAAA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACpB,CAAiB;AAAA,UACjB;AAAA,QACA;AAAA,MACA;AACI,eAAS,YAAY,KAAKA,SAAQ;AAC9B,cAAM,EAAE,SAAS,gBAAe,IAAK;AACrC,YAAI3B,SAAQ,QAAQ,QAAQ2B,OAAM;AAClC,YAAI3B,WAAU;AACV,UAAAA,SAAQ,gBAAgB,QAAQ2B,OAAM;AAC1C,eAAO3B;AAAA,MACf;AAII,eAAS,iBAAiB,KAAK2B,SAAQ;AACnC,cAAM,EAAE,eAAc,IAAK;AAC3B,YAAI,kBAAkB;AAClB,iBAAO;AACX,cAAM3B,SAAQ,YAAY,KAAK2B,OAAM;AACrC,eAAO3B,WAAU,KAAK,OAAO,eAAeA,MAAK;AAAA,MACzD;AAII,eAAS,UAAU,KAAK2B,SAAQ;AAC5B,cAAM,EAAE,WAAU,IAAK;AACvB,YAAI,cAAc;AACd,iBAAO;AACX,cAAM3B,SAAQ,YAAY,KAAK2B,OAAM;AACrC,eAAO3B,WAAU,KAAK,QAAQ,WAAW,SAASA,MAAK;AAAA,MAC/D;AAKI,eAAS,oBAAoB,KAAK,QAAQ;AACtC,cAAM,SAAS,IAAI,SAASg4D,OAAM,KAAK,CAAA,CAAE,GAAG,MAAM;AAClD,aAAK,MAAM,EAAE,WAAW,IAAI;AAC5B,eAAO;AAAA,MACf;AAKI,eAAS,WAAW,KAAK;AACrB,eAAOA,OAAM,KAAK,gBAAgB,GAAG,CAAC;AAAA,MAC9C;AAKI,eAAS,WAAW,KAAK;AACrB,eAAOA,OAAM,KAAK,gBAAgB,GAAG,CAAC;AAAA,MAC9C;AACI,eAASA,OAAM,KAAK,UAAU;AAC1B,eAAO;AAAA,UACH,SAAS,IAAI;AAAA,UACb,MAAM,IAAI;AAAA,UACV,OAAO,IAAI;AAAA,UACX,YAAY,IAAI;AAAA,UAChB,SAAS,IAAI;AAAA,UACb,gBAAgB,IAAI;AAAA,UACpB;AAAA,UACA,YAAY,IAAI,cAAc,IAAI;AAAA,QACrC;AAAA,MACT;AACI,eAAS,SAASr2D,SAAQrC,OAAM6U,SAAQ,MAAM;AAC1C,eAAO,EAAE,QAAAxS,SAAQ,MAAArC,OAAM,QAAA6U,SAAQ,KAAM;AAAA,MAC7C;AACI,eAAS,SAAS7U,OAAM6U,SAAQ;AAC5B,eAAO,EAAE,MAAA7U,OAAM,QAAA6U,QAAQ;AAAA,MAC/B;AACI,eAAS,qBAAqB,UAAU,MAAM7U,OAAM6U,SAAQ,MAAM;AAC9D,YAAInU,SAAQ,qBAAqB,UAAUmU,SAAQ,MAAM7U,KAAI;AAC7D,YAAI,OAAO;AACP,UAAAU,UAAS,SAAS,oBAAoB,aAAa,YAAY,UAAUmU,SAAQnU,MAAK;AAAA,QAClG,WACiB,SAAS;AACd,UAAAA;AACJ,YAAIA,WAAU,MAAMA,WAAU,SAAS;AACnC,iBAAO;AACX,eAAOA;AAAA,MACf;AACI,eAAS,wBAAwB,UAAU,MAAMV,OAAM6U,SAAQ,MAAM;AACjE,YAAI,MAAM,qBAAqB,UAAU,MAAM7U,OAAM6U,SAAQ,oBAAoB;AAOjF,YAAI,CAAC,SAAS,SAAS;AACnB;AACJ,YAAI,QAAQ,MAAM,QAAQ,SAAS;AAC/B,iBAAO,CAAE;AAIb,cAAM,gBAAgB,QAAQA,UAAS,SAAS,GAAG,EAAE,MAAM;AAE3D,YAAI,CAAC;AACD,gBAAM,WAAW,UAAU,eAAe,GAAG;AACjD,cAAM,MAAM,WAAW,UAAU,eAAe,GAAG;AACnD,cAAM,SAAS,CAAE;AACjB,eAAO,OAAO,KAAK,OAAO;AACtB,gBAAM,UAAU,SAAS,GAAG;AAC5B,iBAAO,KAAK,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC,CAAC;AAAA,QAChG;AACQ,eAAO;AAAA,MACf;AACI,eAAS,kBAAkB,KAAKxS,SAAQrC,OAAM6U,SAAQ,MAAM,KAAK;AAC7D,YAAI;AACJ,QAAA7U;AACA,YAAIA,QAAO;AACP,gBAAM,IAAI,MAAM,aAAa;AACjC,YAAI6U,UAAS;AACT,gBAAM,IAAI,MAAM,eAAe;AACnC,cAAM,EAAE,SAAS,gBAAe,IAAK;AACrC,YAAI8xI,eAAc,QAAQ,QAAQtkJ,OAAM;AACxC,YAAIskJ,iBAAgB;AAChB,UAAAA,eAAc,gBAAgB,QAAQtkJ,OAAM;AAChD,YAAIskJ,iBAAgB;AAChB,iBAAO,MAAM,CAAE,IAAG,SAAS,MAAM,IAAI;AACzC,cAAMC,cAAc,KAAK,KAAK,GAAG,GAAG,eAAe,GAAG,aAAa,eAAe,gBAAgB,GAAG,GAAI,KAAK,GAAG,EAAE,iBAAiB,QAAQ,IAAI,aAAa,CAAC;AAC9J,cAAM,WAAWA,WAAUD,YAAW,EAAE3mJ,KAAI;AAC5C,YAAI,YAAY;AACZ,iBAAO,MAAM,CAAE,IAAG,SAAS,MAAM,IAAI;AACzC,cAAM,OAAO,KAAK,GAAG,EAAE,eAAe2mJ,YAAW;AACjD,YAAI;AACA,iBAAO,wBAAwB,UAAU,MAAM3mJ,OAAM6U,SAAQ,IAAI;AACrE,cAAMnU,SAAQ,qBAAqB,UAAU,MAAMV,OAAM6U,SAAQ,IAAI;AACrE,YAAInU,WAAU;AACV,iBAAO,SAAS,MAAM,IAAI;AAC9B,cAAM,UAAU,SAASA,MAAK;AAC9B,eAAO,SAAS,QAAQ,kBAAkB,IAAI,GAAG,QAAQ,oBAAoB,CAAC;AAAA,MACtF;AAEI,MAAAoT,SAAQ,SAAS;AACjB,MAAAA,SAAQ,uBAAuB;AAC/B,MAAAA,SAAQ,oBAAoB;AAC5B,MAAAA,SAAQ,WAAW;AACnB,MAAAA,SAAQ,2BAA2B;AACnC,MAAAA,SAAQ,aAAa;AACrB,MAAAA,SAAQ,kBAAkB;AAC1B,MAAAA,SAAQ,cAAc;AACtB,MAAAA,SAAQ,aAAa;AACrB,MAAAA,SAAQ,kBAAkB;AAC1B,MAAAA,SAAQ,uBAAuB;AAC/B,MAAAA,SAAQ,YAAY;AACpB,MAAAA,SAAQ,sBAAsB;AAC9B,MAAAA,SAAQ,sBAAsB;AAC9B,MAAAA,SAAQ,mBAAmB;AAC3B,MAAAA,SAAQ,eAAe;AAAA,IAE3B,CAAG;AAAA;;;;;;;;;;;;AC3kBI,YAAM,SAAS;AACf,YAAM,gBAAgB;AACtB,YAAM,cAAc;AACpB,YAAM,gBAAgB;AACtB,YAAM,cAAc;ACQ3B,YAAM,UAAU;AAAA,MAKH,MAAA,WAAU;AAAA,QASrB,YAAY,EAAE,MAAA7T,OAAM,WAAU,IAAc,CAAA,GAAE;AAC5C,eAAK,SAAS,IAAI4mJ,SAAAA,SAAU;AAC5B,eAAK,WAAW,IAAIA,SAAAA,SAAU;AAC9B,eAAK,kBAAkB,CAAE;AACzB,eAAK,YAAY,CAAE;AACnB,eAAK,OAAO5mJ;AACZ,eAAK,aAAa;AAClB,eAAK,cAAc,IAAI4mJ,SAAAA,SAAU;AAAA,QAClC;AAAA;AAeH,eAAS,KAAK,KAAY;AACxB,eAAO;AAAA;AAqCO,eAAA,WACd,KACA,SACA,WACAxkJ,SACA,YACA,cACA,MACA,SAAuB;AAEvB,eAAO,mBACL,OACA,KACA,SACA,WACAA,SACA,YACA,cACA,MACA,OAAO;AAAA;AAsCK,eAAA,WACd,KACA,SAMC;AAED,eAAO,mBAAmB,OAAO,KAAK,OAAmD;AAAA;AAQ9E,YAAA,kBAAqC,CAChD,KACA,SACA,WACAA,SACA,YACA,cACA,MACA,YACE;AACF,eAAO,mBACL,MACA,KACA,SACA,WACAA,SACA,YACA,cACA,MACA,OAAO;AAAA,MAET;AAOW,YAAA,kBAAqC,CAAC,KAAK,YAAW;AACjE,eAAO,mBAAmB,MAAM,KAAK,OAAmD;AAAA,MACxF;AAKc,eAAA,iBAAiB,KAAiBA,SAAgB,SAAsB;AACtF,cAAM,EAAE,UAAU,SAAS,iBAAiB,eAAgB,IAAG,KAAK,GAAG;AACvE,cAAM3B,SAAQomJ,SAAG,IAAC,SAASzkJ,OAAM;AACjC,uBAAe3B,MAAK,IAAI;AAAA;AAGpB,eAAU,UAAU,KAAiB2B,SAAgB,SAAS,MAAI;AACtE,cAAM,EAAE,UAAU,SAAS,iBAAiB,gBAAgB,aAAa,WAAU,IAAK,KAAK,GAAG;AAChG,cAAM3B,SAAQomJ,SAAG,IAAC,SAASzkJ,OAAM;AACjC,YAAI3B,WAAU,eAAe;AAAQ,yBAAeA,MAAK,IAAI;AAC7D,YAAI;AAAQomJ,uBAAI,YAAYpmJ,MAAK;AAAA;AAC5BklJ,0BAAO,YAAYllJ,MAAK;AAAA;AAOzB,eAAU,aAAa,KAAe;AAC1C,cAAM,EACJ,WAAW,UACX,UAAU,SACV,iBAAiB,gBACjB,QAAQ,OACR,aAAa,WAAU,IACrB,KAAK,GAAG;AACZ,8BAAsB,QAAQ;AAE9B,eAAO;AAAA,UACL,SAAS;AAAA,UACT,MAAM,IAAI,QAAQ;AAAA,UAClB,OAAO,MAAM;AAAA,UACb,YAAY,IAAI,cAAc;AAAA,UAC9B,SAAS,QAAQ;AAAA,UACjB;AAAA,UACA;AAAA,UACA,YAAY,WAAW;AAAA,QACxB;AAAA;AAOG,eAAU,aAAa,KAAe;AAC1C,cAAM,UAAU,aAAa,GAAG;AAChC,eACK,OAAA,OAAA,OAAA,OAAA,CAAA,GAAA,OAAO,GACV,EAAA,UAAUqmJ,eAAAA,OAAO,QAAQ,QAAgC,EAAC,CAC1D;AAAA;AAME,eAAU,QAAQ7+I,QAAqB;AAC3C,cAAM,MAAM,IAAI8+I,sBAAS9+I,MAAK;AAC9B,cAAM,MAAM,IAAI,WAAW,EAAE,MAAM,IAAI,MAAM,YAAY,IAAI,YAAY;AAEzE,eAAO,KAAK,GAAG,EAAE,QAAQ,IAAI,KAAK;AAClC,eAAO,KAAK,GAAG,EAAE,UAAU,IAAI,OAAmB;AAClD,aAAK,GAAG,EAAE,kBAAkB,IAAI,kBAAkB,IAAI,QAAQ,IAAI,MAAM,IAAI;AAC5E,aAAK,GAAG,EAAE,YAAY++I,aAAe,gBAAC,GAAG;AACzC,YAAI,IAAI;AAAY,iBAAO,KAAK,GAAG,EAAE,aAAa,IAAI,UAAU;AAEhE,eAAO;AAAA;AAOH,eAAU,YAAY,KAAe;AACzC,cAAM,MAAiB,CAAE;AACzB,cAAM,EAAE,WAAW,UAAU,UAAU,SAAS,QAAQ,MAAK,IAAK,KAAK,GAAG;AAE1E,iBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,gBAAMjnJ,QAAO,SAAS,CAAC;AACvB,mBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,kBAAM,MAAMA,MAAK,CAAC;AAElB,kBAAM4mJ,aAAY,EAAE,MAAM,IAAI,GAAG,QAAQ,IAAI,MAAM,EAAG;AACtD,gBAAIvkJ,UAA6B;AACjC,gBAAI,WAA4B;AAChC,gBAAI,OAA2B;AAE/B,gBAAI,IAAI,WAAW,GAAG;AACpB,cAAAA,UAAS,QAAQ,MAAM,IAAI,aAAa,CAAC;AACzC,yBAAW,EAAE,MAAM,IAAI,WAAW,IAAI,GAAG,QAAQ,IAAI,aAAa,EAAG;AAErE,kBAAI,IAAI,WAAW;AAAG,uBAAO,MAAM,MAAM,IAAI,WAAW,CAAC;AAAA;AAG3D,gBAAI,KAAK,EAAE,WAAAukJ,YAAW,QAAAvkJ,SAAQ,UAAU,MAAiB;AAAA;;AAI7D,eAAO;AAAA;AAIT,eAAS,mBACP,UACA,KACA,SACA,WACAA,SACA,YACA,cACA,MACA,SAAwE;AAExE,cAAM,EACJ,WAAW,UACX,UAAU,SACV,iBAAiB,gBACjB,QAAQ,UACN,KAAK,GAAG;AACZ,cAAMrC,QAAO,QAAQ,UAAU,OAAO;AACtC,cAAMU,SAAQ,eAAeV,OAAM,SAAS;AAE5C,YAAI,CAACqC,SAAQ;AACX,cAAI,YAAY,eAAerC,OAAMU,MAAK;AAAG;AAC7C,iBAAO,OAAOV,OAAMU,QAAO,CAAC,SAAS,CAAC;AAAA;AAQxC,cAAM,eAAeomJ,SAAG,IAAC,SAASzkJ,OAAM;AACxC,cAAM,aAAa,OAAOykJ,SAAAA,IAAI,OAAO,IAAI,IAAI;AAC7C,YAAI,iBAAiB,eAAe;AAAQ,yBAAe,YAAY,IAAI,YAAA,QAAA,YAAA,SAAA,UAAW;AAEtF,YAAI,YAAY,WAAW9mJ,OAAMU,QAAO,cAAc,YAAY,cAAc,UAAU,GAAG;AAC3F;AAAA;AAGF,eAAO,OACLV,OACAU,QACA,OACI,CAAC,WAAW,cAAc,YAAY,cAAc,UAAU,IAC9D,CAAC,WAAW,cAAc,YAAY,YAAY,CAAC;AAAA;AAQ3D,eAAS,QAAQ,UAAgCA,QAAa;AAC5D,iBAAS,IAAI,SAAS,QAAQ,KAAKA,QAAO,KAAK;AAC7C,mBAAS,CAAC,IAAI,CAAE;AAAA;AAElB,eAAO,SAASA,MAAK;AAAA;AAGvB,eAAS,eAAeV,OAA0B,WAAiB;AACjE,YAAIU,SAAQV,MAAK;AACjB,iBAAS,IAAIU,SAAQ,GAAG,KAAK,GAAGA,SAAQ,KAAK;AAC3C,gBAAM,UAAUV,MAAK,CAAC;AACtB,cAAI,aAAa,QAAQ,MAAM;AAAG;AAAA;AAEpC,eAAOU;AAAA;AAGT,eAAS,OAAUyE,QAAYzE,QAAeO,QAAQ;AACpD,iBAAS,IAAIkE,OAAM,QAAQ,IAAIzE,QAAO,KAAK;AACzC,UAAAyE,OAAM,CAAC,IAAIA,OAAM,IAAI,CAAC;AAAA;AAExB,QAAAA,OAAMzE,MAAK,IAAIO;AAAA;AAGjB,eAAS,sBAAsB,UAA8B;AAC3D,cAAM,EAAE,OAAM,IAAK;AACnB,YAAI,MAAM;AACV,iBAAS,IAAI,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK;AAC1C,cAAI,SAAS,CAAC,EAAE,SAAS;AAAG;AAAA;AAE9B,YAAI,MAAM;AAAQ,mBAAS,SAAS;AAAA;AAGtC,eAAS,OAAkC,QAAqBkE,QAAU;AACxE,iBAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ;AAAK2hJ,mBAAG,IAAC,QAAQ3hJ,OAAM,CAAC,CAAC;AAAA;AAG7D,eAAS,eAAenF,OAA0BU,QAAa;AAG7D,YAAIA,WAAU;AAAG,iBAAO;AAExB,cAAM,OAAOV,MAAKU,SAAQ,CAAC;AAI3B,eAAO,KAAK,WAAW;AAAA;AAGzB,eAAS,WACPV,OACAU,QACA,cACA,YACA,cACA,YAAkB;AAGlB,YAAIA,WAAU;AAAG,iBAAO;AAExB,cAAM,OAAOV,MAAKU,SAAQ,CAAC;AAG3B,YAAI,KAAK,WAAW;AAAG,iBAAO;AAI9B,eACE,iBAAiB,KAAK,aAAa,KACnC,eAAe,KAAK,WAAW,KAC/B,iBAAiB,KAAK,aAAa,KACnC,gBAAgB,KAAK,WAAW,IAAI,KAAK,WAAW,IAAI;AAAA;AAI5D,eAAS,mBACP,UACA,KACA,SAMC;AAED,cAAM,EAAE,WAAAkmJ,YAAW,QAAAvkJ,SAAQ,UAAU,MAAM,QAAO,IAAK;AACvD,YAAI,CAACA,SAAQ;AACX,iBAAO,mBACL,UACA,KACAukJ,WAAU,OAAO,GACjBA,WAAU,QACV,MACA,MACA,MACA,MACA,IAAI;AAAA;AAIR,eAAO,mBACL,UACA,KACAA,WAAU,OAAO,GACjBA,WAAU,QACVvkJ,SACA,SAAS,OAAO,GAChB,SAAS,QACT,MACA,OAAO;AAAA,MAEX;;;;;;;;;;;;;;;;;;;;;;;;;ACvdA,MAAA6kJ,cAAA59I,sBAAA;AAeA,MAAA69I,gBAAA79I,wBAAA;AAAA,EAUe,MAAM89I,UAAU;AAAA,IAe7BnzI,YACE1L,MAKA4E,MACA;AAAA,UAAAk6I;AAAA,WArBMC,OAAI;AAAA,WACJC,eAAY;AAAA,WACZC,kBAAe;AAAA,WAGfC,eAAe;AAAC,WAChBC,kBAAkB;AAAC,WAInBC,oBAAoB;AAAC,WAEtBC,YAAS;AAUd,YAAM10I,MAAO,KAAKo0I,OAAO,IAAIO,uBAAW;AAAA,QAAEC,YAAYv/I,KAAKu/I;AAAAA,MAAW,CAAC;AACvE,WAAKN,mBAAeH,uBAAG9+I,KAAKw/I,mBAALV,OAAAA,SAAAA,qBAAqBtwI,QAAQ,OAAO,GAAG;AAC9D,WAAKwwI,eAAe9zI;AAEpB,UAAIlL,KAAKy/I,gBAAgB;AACvB,aAAKJ,YAAY,IAAIZ,uBAASz+I,KAAKy/I,cAAc;AACjD,cAAMC,kBAAkB,KAAKL,UAAUK;AACvC,YAAIA,gBAAgB16I,QAAQ;AAC1B,mBAASD,IAAI,GAAGA,IAAI26I,gBAAgB16I,QAAQD,KAAK;AAAA,gBAAA46I;AAC/C,aAAAC,GAAAA,YAAAA,kBACEj1I,KACA+0I,gBAAgB36I,CAAC,IAAC46I,wBAClB,KAAKN,UAAUQ,mCAAfF,sBAAgC56I,CAAC,CACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,OAAOH,SAAS,YAAY,CAAC5E,KAAKy/I,gBAAgB;AACpD,SAAAG,GAAAA,YAAAA,kBAAiBj1I,KAAK,KAAKs0I,iBAAiBr6I,IAAI;AAAA,MAClD,WAAW,OAAOA,SAAS,UAAU;AACnC,mBAAW46I,kBAAkB53I,OAAOnK,KAAKmH,IAAI,GAAG;AAC9C,WAAA,GAAAg7I,8BACEj1I,KACA60I,eAAehxI,QAAQ,OAAO,GAAG,GACjC5J,KAAK46I,cAAc,CACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAKA/3I,MAAwB;AACtB,iBAAOq4I,YAAY,cAAC,KAAKf,IAAI;AAAA,IAC/B;AAAA,IAEAgB,aAA+B;AAC7B,iBAAOC,YAAY,cAAC,KAAKjB,IAAI;AAAA,IAC/B;AAAA,IAEAkB,iBAA4B;AAC1B,aAAQ,KAAKjB,iBAAL,KAAKA,gBAAiBkB,GAAAA,YAAW,aAAC,KAAKnB,IAAI;AAAA,IACrD;AAAA,IAOAoB,KACE9B,YACA5mJ,OACA6U,SACAsvD,gBACAwkF,mBACAzkF,UACA;AAAA,UAAA0kF;AACA,WAAKrB,eAAe9zI;AAEpB,UAAIo1I;AAOJ,UAAI7oJ,SAAQ,MAAM;AAChB,YAAI,KAAK4nJ,WAAW;AAElBiB,6BAAkB,GAAAC,cAAAA,qBAAoB,KAAKlB,WAAW;AAAA,YACpD5nJ,MAAAA;AAAAA,YACA6U,QAAAA;AAAAA,UACF,CAAC;AAMD,cAAI,CAACg0I,gBAAgBh7I,QAAQ86I,mBAAmB;AAI9C,kBAAMI,6BAA4B,GAAAD,cAAmB,qBACnD,KAAKlB,WACLe,iBACF;AACA,gBAAII,0BAA0Bl7I,MAAM;AAClCs2D,+BAAiB4kF,0BAA0Bl7I;AAAAA,YAC7C;AAAA,UACF;AAAA,QACF,OAAO;AACLg7I,4BAAkB;AAAA,YAChBxmJ,SAAQ6hE,YAAQ,OAAA,SAARA,SAAUntD,QAAQ,OAAO,GAAG,MAAK,KAAKywI;AAAAA,YAC9CxnJ,MAAMA;AAAAA,YACN6U,QAAQA;AAAAA,UACT;AAAA,QACH;AAAA,MACF;AAEA,OAAA,GAAAm0I,YAAe,iBAAC,KAAK1B,MAAM;AAAA,QACzBz5I,MAAMs2D;AAAAA,QACNyiF,WAAAA;AAAAA,QACAvkJ,SAAMumJ,mBAAEC,oBAAAD,OAAAA,SAAAA,iBAAiBvmJ;AAAAA,QACzB4mJ,UAAUJ;AAAAA,MACZ,CAAC;AAAA,IACH;AAAA,EACF;AAAC/0I,cAAAA,UAAAszI;;;;;;;;;;;;;EC1Hc,MAAM8B,QAAO;AAAA,IAC1Bj1I,YAAYf,KAAuBi2I,YAAoB;AAAA,WAWvD7B,OAAkB;AAAI,WACtB8B,OAAO;AAAE,WACTC,OAAO;AAAE,WACTC,eAAe;AAAC,WAChBC,QAAQ;AAAC,WACTC,SAAsB,CAAE;AAAA,WACxBC,eAAe;AAAC,WAChBC,iBAAiB;AAAI,WACrBC,cAAc;AAAE,WAChBC,oBAA8B,CAAE;AAAA,WAEhCC,YAAY;AAAA,QACV7pJ,MAAM;AAAA,QACN6U,QAAQ;AAAA,MACT;AAAA,WACDi1I,kBAAqC;AAAA,QACnC3lF,gBAAgB1wD;AAAAA,QAChBk1I,mBAAmBl1I;AAAAA,QACnBzT,MAAMyT;AAAAA,QACNoB,QAAQpB;AAAAA,QACRywD,UAAUzwD;AAAAA,MACX;AA/BC,WAAK6zI,OAAOp0I;AACZ,WAAKy2I,cAAcR;AAEnB,eAAS77I,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAC3B,aAAKs8I,kBAAkBphJ,KAAK2gJ,WAAWlyI,OAAO3J,CAAC,CAAC;AAAA,MAClD;AAEA,WAAKy8I,YAAa;AAAA,IACpB;AAAA,IAyBAA,cAAc;AACZ,YAAMC,QAAQ,KAAKR;AAEnB,eAASl8I,IAAI,GAAGA,IAAI,IAAIA,KAAK;AAC3B08I,cAAMxhJ,KAAK;AAAA,UACT6mF,MAAM;AAAA,UACNp4E,QAAQ;AAAA,UACRjX,MAAMyT;AAAAA,UACNoB,QAAQpB;AAAAA,UACR0wD,gBAAgB1wD;AAAAA,UAChBk1I,mBAAmBl1I;AAAAA,UACnBywD,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,IACF;AAAA,IAEA+lF,WACE56D,MACAp4E,QACAjX,OACA6U,SACAqvD,UACA;AACA,YAAMgmF,SAAS,KAAKT;AACpB,UAAIS,WAAW,KAAKV,OAAOj8I,QAAQ;AACjC,aAAKw8I,YAAa;AAAA,MACpB;AACA,YAAMzmJ,QAAO,KAAKkmJ,OAAOU,MAAM;AAC/B5mJ,MAAAA,MAAK+rF,OAAOA;AACZ/rF,MAAAA,MAAK2T,SAASA;AACd3T,MAAAA,MAAKtD,OAAOA;AACZsD,MAAAA,MAAKuR,SAASA;AACdvR,MAAAA,MAAK4gE,WAAWA;AAEhB,WAAKulF;AAAAA,IACP;AAAA,IAEAU,YAAuB;AACrB,UAAI,KAAKV,iBAAiB,GAAG;AAC3B,cAAM,IAAIlyI,MAAM,6BAA6B;AAAA,MAC/C;AACA,aAAO,KAAKiyI,OAAO,EAAE,KAAKC,YAAY;AAAA,IACxC;AAAA,IAMAz5I,MAAM;AACJ,WAAKo6I,OAAQ;AAEb,YAAMl3I,MAAM,KAAKo0I;AACjB,YAAMntF,SAAS;AAAA,QAGbhtD,OAAO,KAAKi8I,OAAO,KAAKC,MAAMgB,UAAW;AAAA,QAEzCC,YAAYp3I,OAAG,OAAA,SAAHA,IAAKo1I,WAAY;AAAA,QAI7B,IAAIiC,cAAc;AAChB,iBAAO,KAAKr3I;AAAAA,QACb;AAAA,QAED,IAAIA,MAAM;AACR,gBAAMs3I,YAAYt3I,MAAMA,IAAIlD,IAAK,IAAG;AACpCmqD,iBAAOjnD,MAAMs3I;AACb,iBAAOA;AAAAA,QACR;AAAA,QACD,IAAIt3I,IAAIjS,QAAO;AACbkP,iBAAOC,eAAe+pD,QAAQ,OAAO;AAAA,YAAEl5D,OAAAA;AAAAA,YAAO4wE,UAAU;AAAA,UAAK,CAAC;AAAA,QAC/D;AAAA,QAED,IAAI44E,cAAc;AAChB,gBAAMC,WAAWx3I,OAAG,OAAA,SAAHA,IAAKs1I,eAAgB;AACtCruF,iBAAOswF,cAAcC;AACrB,iBAAOA;AAAAA,QACR;AAAA,QACD,IAAID,YAAYxpJ,QAAO;AACrBkP,iBAAOC,eAAe+pD,QAAQ,eAAe;AAAA,YAAEl5D,OAAAA;AAAAA,YAAO4wE,UAAU;AAAA,UAAK,CAAC;AAAA,QACxE;AAAA,MACD;AAED,aAAO1X;AAAAA,IACT;AAAA,IAMA0C,OAAO1pD,KAAaw3I,cAA6B;AAC/C,WAAKP,OAAQ;AAEb,WAAKQ,QAAQz3I,KAAK,KAAK22I,iBAAiBa,YAAY;AAAA,IACtD;AAAA,IAEAE,WAAWx7D,MAAoB;AAC7B,WAAK+6D,OAAQ;AACb,WAAKU,YAAYz7D,MAAM,GAAG,KAAKy6D,eAAe;AAAA,IAChD;AAAA,IAKAE,MAAM36D,MAAoB;AAExB,UAAIA,aAA6B;AAC/B,eAAO,KAAKo6D,iBAAiB,GAAG;AAC9B,gBAAMp6D,QAAO,KAAKm6D,OAAO,KAAKC,eAAe,CAAC,EAAEp6D;AAChD,cAAIA,UAAI,MAAwBA,aAAwB;AACtD;AAAA,UACF;AAEA,eAAKo6D;AAAAA,QACP;AAAA,MACF;AAEA,YAAMsB,iBAAiB,KAAKjB;AAC5B,WAAKG,WACH56D,MACA,GACA07D,eAAe/qJ,MACf+qJ,eAAel2I,QACfk2I,eAAe7mF,QACjB;AAAA,IACF;AAAA,IAKA8mF,iBAAiB/zI,QAAsB;AACrC,UAAIA,WAAW,EAAG;AAClB,WAAKgzI,WAAW,IAAIhzI,QAAQxD,QAAWA,QAAWA,MAAS;AAAA,IAC7D;AAAA,IAEA22I,SAAe;AACb,YAAMa,cAAc,KAAKxB;AACzB,YAAMO,QAAQ,KAAKR;AACnB,eAASl8I,IAAI,GAAGA,IAAI29I,aAAa39I,KAAK;AACpC,cAAMhK,QAAkB0mJ,MAAM18I,CAAC;AAC/B,aAAKw9I,YAAYxnJ,MAAK+rF,MAAM/rF,MAAK2T,QAAQ3T,KAAI;AAAA,MAC/C;AACA,WAAKmmJ,eAAe;AAAA,IACtB;AAAA,IAEAqB,YACEz7D,MACAp4E,QACA4vE,WACM;AACN,WAAK0iE,QAAQl6D;AAEb,UAAIA,SAAS,IAAI;AACf,cAAM67D,kBAAkB,KAAKtB,kBAAkB3yI,MAAM;AACrD,YAAIi0I,oBAAoBz3I,QAAW;AACjC,eAAK41I,QAAQ6B;AAAAA,QACf,OAAO;AACL,eAAK7B,QACHpyI,SAAS,IAAI,KAAK0yI,YAAY1yI,OAAOA,MAAM,IAAI,KAAK0yI;AAAAA,QACxD;AAAA,MACF,OAAO;AACL,aAAKN,QACHpyI,SAAS,IACLxJ,OAAOC,aAAa2hF,IAAI,EAAEp4E,OAAOA,MAAM,IACvCxJ,OAAOC,aAAa2hF,IAAI;AAAA,MAChC;AAEA,UAAIA,aAA6B;AAC/B,aAAK87D,MACHtkE,UAAU7mF,MACV6mF,UAAUhyE,QACVgyE,UAAU1iB,gBACV0iB,UAAU8hE,mBACV9hE,UAAU3iB,QACZ;AACA,aAAK2lF,UAAUh1I,UAAUoC;AAAAA,MAC3B,OAAO;AACL,aAAK4yI,UAAU7pJ;AACf,aAAK6pJ,UAAUh1I,SAAS;AAAA,MAC1B;AAEA,UAAI,KAAK60I,gBAAgB;AACvB7iE,kBAAU1iB,iBAAiB1wD;AAC3BozE,kBAAU8hE,oBAAoBl1I;AAAAA,MAChC;AAAA,IACF;AAAA,IAEAm3I,QACEz3I,KACA0zE,WACA8jE,cACM;AACN,YAAM72H,MAAM3gB,IAAI5F;AAChB,YAAM82D,WAAW,KAAKwlF;AAEtB,WAAKN,QAAQp2I,IAAInF,WAAW8lB,MAAM,CAAC;AAEnC,UAAI,EAAE,KAAKw1H,eAAe,MAAM;AAE9B,SAAC,KAAKD;AACN,aAAKD,QAAQ,KAAKC;AAClB,aAAKA,OAAOl2I;AACZ,aAAKm2I,eAAe;AAAA,MACtB,OAAO;AACL,aAAKD,QAAQl2I;AAAAA,MACf;AAEA,UAAI,CAACw3I,gBAAgB,CAAC,KAAKrD,MAAM;AAC/BjjF,iBAASxvD,UAAUif;AACnB;AAAA,MACF;AAEA,YAAM;AAAA,QAAEjf,QAAAA;AAAAA,QAAQsvD;AAAAA,QAAgBwkF;AAAAA,QAAmBzkF;AAAAA,MAAS,IAAI2iB;AAChE,UAAI7mF,QAAO6mF,UAAU7mF;AAErB,WACGmkE,kBAAkB,QAAQwkF,qBAAqB,SAChD,KAAKe,gBACL;AACA7iE,kBAAU1iB,iBAAiB1wD;AAC3BozE,kBAAU8hE,oBAAoBl1I;AAAAA,MAChC;AAMA,UAAInG,IAAI6F,IAAI+H,QAAQ,IAAI;AACxB,UAAIoiG,OAAO;AAIX,UAAIhwG,MAAM,GAAG;AACX,aAAK69I,MAAMnrJ,OAAM6U,SAAQsvD,gBAAgBwkF,mBAAmBzkF,QAAQ;AAAA,MACtE;AAGA,aAAO52D,MAAM,IAAI;AACf+2D,iBAASrkE;AACTqkE,iBAASxvD,SAAS;AAClByoG,eAAOhwG,IAAI;AAKX,YAAIgwG,OAAOxpF,OAAO9zB,UAASyT,QAAW;AACpC,eAAK03I,MAAM,EAAEnrJ,OAAM,GAAG,MAAM,MAAMkkE,QAAQ;AAAA,QAC5C;AACA52D,YAAI6F,IAAI+H,QAAQ,MAAMoiG,IAAI;AAAA,MAC5B;AACAj5C,eAASxvD,UAAUif,MAAMwpF;AAAAA,IAC3B;AAAA,IAEA6tC,MACEnrJ,OACA6U,SACAsvD,gBACAwkF,mBACAzkF,UACM;AAAA,UAAAknF;AACN,OAAAA,kBAAK9D,iBAAL8D,WAAW1C,KACT,KAAKmB,WACL7pJ,OACA6U,SACAsvD,gBACAwkF,mBACAzkF,QACF;AAAA,IACF;AAAA,IAEAmnF,wBAA8B;AAC5B,YAAMJ,cAAc,KAAKxB;AACzB,UACEwB,gBAAgB,KAChB,KAAKzB,OAAOyB,cAAc,CAAC,EAAE57D,aAC7B;AACA,aAAKo6D;AAAAA,MACP;AAAA,IACF;AAAA,IAEA6B,sBAA4B;AAC1B,YAAML,cAAc,KAAKxB;AACzB,UACEwB,gBAAgB,KAChB,KAAKzB,OAAOyB,cAAc,CAAC,EAAE57D,aAC7B;AACA,aAAKo6D;AAAAA,MACP;AAAA,IACF;AAAA,IAEA8B,cAAsB;AACpB,YAAMN,cAAc,KAAKxB;AACzB,aAAOwB,gBAAgB,IAAI,KAAKzB,OAAOyB,cAAc,CAAC,EAAE57D,OAAO,KAAKk6D;AAAAA,IACtE;AAAA,IAMAiC,kBAA0B;AACxB,YAAMP,cAAc,KAAKxB;AACzB,UAAInuC,QAAQ;AACZ,UAAI2vC,gBAAgB,EAAG,QAAO,KAAK1B,UAA4B,KAAG,IAAI;AACtE,eAASj8I,IAAI29I,cAAc,GAAG39I,KAAK,GAAGA,KAAK;AACzC,YAAI,KAAKk8I,OAAOl8I,CAAC,EAAE+hF,SAAI,IAAyB;AAC9C;AAAA,QACF;AACAisB;AAAAA,MACF;AACA,aAAOA,UAAU2vC,eAAe,KAAK1B,UAAK,KACtCjuC,QAAQ,IACRA;AAAAA,IACN;AAAA,IAKAmwC,yBAAiC;AAC/B,YAAMzB,QAAQ,KAAKR;AACnB,YAAMyB,cAAc,KAAKxB;AACzB,UAAIwB,gBAAgB,GAAG;AAErB,cAAMS,SAAS1B,MAAMiB,cAAc,CAAC,EAAE57D;AACtC,YAAIq8D,cAA+B;AACnC,YAAIT,cAAc,GAAG;AACnB,iBAAOjB,MAAMiB,cAAc,CAAC,EAAE57D;AAAAA,QAChC,OAAO;AACL,iBAAO,KAAKk6D;AAAAA,QACd;AAAA,MACF;AAAA,IAGF;AAAA,IAEAoC,aAAsB;AACpB,aAAO,KAAKlC,iBAAiB,KAAK,CAAC,CAAC,KAAKF;AAAAA,IAC3C;AAAA,IAyBAqC,YAAYl3I,KAAsB+pF,IAAgB;AAChD,UAAI,CAAC,KAAK6oD,MAAM;AACd7oD,WAAI;AACJ;AAAA,MACF;AAEA,WAAKp8F,OAAO,SAASqS,GAAG;AAExB,YAAMyvD,iBAAiBzvD,IAAIyvD;AAC3B,YAAM0iB,YAAY,KAAKijE;AACvB,UAAI3lF,gBAAgB;AAClB,aAAKulF,iBAAiB;AACtB7iE,kBAAU1iB,iBAAiBA;AAAAA,MAC7B;AACAs6B,SAAI;AAEJ,UAAIt6B,gBAAgB;AAClB,aAAKulF,iBAAiB;AACtB7iE,kBAAU1iB,iBAAiB1wD;AAC3BozE,kBAAU8hE,oBAAoBl1I;AAAAA,MAChC;AACA,WAAKpR,OAAO,OAAOqS,GAAG;AAAA,IACxB;AAAA,IAOArS,OAAOw0E,MAAuBniE,KAA4B;AACxD,UAAI,CAAC,KAAK4yI,KAAM;AAIhB,WAAKuE,mBAAmBh1E,MAAMniE,KAAK,CAAC;AAAA,IACtC;AAAA,IAEAo3I,iBACEj1E,MACAniE,KACA4vD,cACM;AACN,UAAI,CAAC,KAAKgjF,KAAM;AAEhB,WAAKuE,mBAAmBh1E,MAAMniE,KAAK4vD,YAAY;AAAA,IACjD;AAAA,IAEAunF,mBAAmBh1E,MAAuBniE,KAAU4vD,cAAsB;AACxE,YAAMj3D,OAAMqH,IAAImiE,IAAI;AACpB,YAAMxI,SAAS,KAAKy7E;AAEpB,UAAIz8I,MAAK;AACPghE,eAAOruE,OAAOqN,KAAIrN;AAElBquE,eAAOx5D,SAASU,KAAKC,IAAInI,KAAIwH,SAASyvD,cAAc,CAAC;AACrD+J,eAAOnK,WAAWxvD,IAAIwvD;AAAAA,MACxB;AAAA,IACF;AAAA,IAEA6nF,mBAA2B;AACzB,YAAM/B,QAAQ,KAAKR;AACnB,YAAMyB,cAAc,KAAKxB;AAEzB,UAAIt9D,YAAY;AAChB,UAAIr4D,MAAM;AACV,eAASxmB,IAAI,GAAGA,IAAI29I,aAAa39I,KAAK;AACpC,cAAMhK,QAAO0mJ,MAAM18I,CAAC;AACpB,YAAIhK,MAAK+rF,SAAI,IAAyB;AACpClD,sBAAYr4D;AAAAA,QACd;AACAA,eAAOxwB,MAAK2T;AAAAA,MACd;AAEA,aAAOk1E,cAAc,KAAK,KAAK09D,UAAUh1I,SAASif,MAAMA,MAAM,IAAIq4D;AAAAA,IACpE;AAAA,IAEA6/D,iBAAyB;AACvB,UAAI1wC,QAAQ;AAEZ,YAAM0uC,QAAQ,KAAKR;AACnB,eAASl8I,IAAI,GAAGA,IAAI,KAAKm8I,cAAcn8I,KAAK;AAC1C,YAAI08I,MAAM18I,CAAC,EAAE+hF,aAA6B;AACxCisB;AAAAA,QACF;AAAA,MACF;AAEA,aAAO,KAAKuuC,UAAU7pJ,OAAOs7G;AAAAA,IAC/B;AAAA,EACF;AAACxnG,WAAAA,UAAAo1I;;;;;;;;;;;;;ACvgBD,MAAArmF,KAAAv5D,aAAA;AAesB,QAAA;AAAA,IAdpB0nB;AAAAA,IACAtU;AAAAA,IACAC;AAAAA,IACA8P;AAAAA,IACAzP;AAAAA,IACAE;AAAAA,IACAoQ;AAAAA,IACAvP;AAAAA,IACA8P;AAAAA,IACArP;AAAAA,IACAG;AAAAA,IACAgD;AAAAA,IACAD;AAAAA,IACAxD;AAAAA,EAAe,IAAA2kD;AAkBjB,WAASopF,cACP7qJ,OACArB,QACA;AACA,QAAI,CAACqB,MAAM,QAAOrB;AAElB,QAAIye,mBAAmBpd,KAAI,KAAKsgB,2BAA2BtgB,KAAI,GAAG;AAChE6qJ,oBAAc7qJ,MAAKgF,QAAQrG,MAAK;AAChC,UAAIqB,MAAKy7B,SAAUovH,eAAc7qJ,MAAK+uB,UAAUpwB,MAAK;AAAA,IACtD,WAAU0sB,SAASrrB,KAAI,KAAKub,uBAAuBvb,KAAI,GAAG;AACzD6qJ,oBAAc7qJ,MAAKu5B,MAAM56B,MAAK;AAC9BksJ,oBAAc7qJ,MAAKw5B,OAAO76B,MAAK;AAAA,IAChC,WAAUmd,iBAAiB9b,KAAI,KAAKugB,yBAAyBvgB,KAAI,GAAG;AACnErB,MAAAA,OAAMmsJ,UAAU;AAChBD,oBAAc7qJ,MAAKs3B,QAAQ34B,MAAK;AAAA,IAClC,WAAWutB,WAAWlsB,KAAI,GAAG;AAC3BrB,MAAAA,OAAMosJ,cAAc;AAAA,IACtB,WAAWpuI,aAAa3c,KAAI,GAAG;AAC7BrB,MAAAA,OAAMqsJ,YAEJrsJ,OAAMqsJ,aAAchrJ,MAAKs3B,UAAU2zH,SAASjrJ,MAAKs3B,MAAM;AAAA,IAC3D;AAEA,WAAO34B;AAAAA,EACT;AAUA,WAAS6jJ,MAAMxiJ,OAAc;AAC3B,WAAO6qJ,cAAc7qJ,OAAM;AAAA,MACzB8qJ,SAAS;AAAA,MACTC,aAAa;AAAA,MACbC,WAAW;AAAA,IACb,CAAC;AAAA,EACH;AAMA,WAASC,SAASjrJ,OAAuB;AACvC,QAAI,CAACA,MAAM,QAAO;AAElB,QAAIod,mBAAmBpd,KAAI,GAAG;AAC5B,aAAOirJ,SAASjrJ,MAAKgF,MAAM,KAAKimJ,SAASjrJ,MAAK+uB,QAAQ;AAAA,IACxD,WAAWpS,aAAa3c,KAAI,GAAG;AAC7B,aACEA,MAAKyM,SAAS,aACdzM,MAAKyM,KAAKG,WAAW,CAAC,MAA0B;AAAA,IAEpD,WAAWkP,iBAAiB9b,KAAI,GAAG;AACjC,aAAOirJ,SAASjrJ,MAAKs3B,MAAM;AAAA,IAC5B,WAAUjM,SAASrrB,KAAI,KAAKub,uBAAuBvb,KAAI,GAAG;AACzD,aACG2c,aAAa3c,MAAKu5B,IAAI,KAAK0xH,SAASjrJ,MAAKu5B,IAAI,KAAM0xH,SAASjrJ,MAAKw5B,KAAK;AAAA,IAE3E,OAAO;AACL,aAAO;AAAA,IACT;AAAA,EACF;AAEA,WAASjK,QAAOvvB,OAAc;AAC5B,WACEysB,UAAUzsB,KAAI,KACdud,mBAAmBvd,KAAI,KACvBsb,kBAAkBtb,KAAI,KACtB2c,aAAa3c,KAAI,KACjBod,mBAAmBpd,KAAI;AAAA,EAE3B;AAMO,QAAM8uB,QAAmCpc,WAAAA,QAAG;AAAA,IAKjDoxB,qBAAqB9jC,OAA8C;AACjE,YAAMrB,SAAQ6jJ,MAAMxiJ,MAAKw5B,KAAK;AAC9B,UAAK76B,OAAMmsJ,WAAWnsJ,OAAMqsJ,aAAcrsJ,OAAMosJ,aAAa;AAC3D,eAAOpsJ,OAAMosJ,cACT,QACoB;AAAA,MAC1B;AAAA,IACD;AAAA,IAMDxiH,WAAWvoC,OAAoBm7B,QAA2C;AACxE,cACG,CAAC,CAACn7B,MAAKm6B,WAAWhuB,UAAUgvB,OAAOoB,MAAM,CAAC,MAAMv8B,QAAI,IAEjD,MACH,CAACA,MAAKm6B,WAAWhuB,UAAUgvB,OAAOoB,MAAMpB,OAAOoB,MAAMpwB,SAAS,CAAC,MAAMnM,QAAI,IAEtE;AAAA,IAEP;AAAA,IAMDknC,kBAAkBlnC,OAA2C;AAC3D,UAAIksB,WAAWlsB,MAAKu5B,IAAI,KAAKrN,WAAWlsB,MAAKw5B,KAAK,GAAG;AACnD,eAAA;AAAA,MACF;AAAA,IACD;AAAA,IAMD0xH,QAAQlrJ,OAAiC;AACvC,UAAI8c,gBAAgB9c,KAAI,KAAKA,MAAKH,UAAU,cAAc;AACxD,eAAA;AAAA,MACF;AAAA,IACD;AAAA,IAMDglC,eAAe7kC,OAAwC;AACrD,UAAIksB,WAAWlsB,MAAKs3B,MAAM,KAAK2zH,SAASjrJ,KAAI,GAAG;AAC7C,eAAO,IAA4C;AAAA,MACrD;AAAA,IACD;AAAA,IAEDutC,uBAAuBvtC,OAAgD;AACrE,UAAIksB,WAAWlsB,MAAKs3B,MAAM,GAAG;AAC3B,eAAO,IAA4C;AAAA,MACrD;AAAA,IACD;AAAA,IAMD6R,oBAAoBnpC,OAA6C;AAC/D,eAASkM,IAAI,GAAGA,IAAIlM,MAAK68B,aAAa1wB,QAAQD,KAAK;AACjD,cAAMwyD,SAAS1+D,MAAK68B,aAAa3wB,CAAC;AAElC,YAAI4G,UAAUm4I,SAASvsF,OAAOzjC,EAAE,KAAK,CAAC1L,QAAOmvC,OAAOlkC,IAAI;AACxD,YAAI,CAAC1nB,WAAW4rD,OAAOlkC,MAAM;AAC3B,gBAAM77B,SAAQ6jJ,MAAM9jF,OAAOlkC,IAAI;AAC/B1nB,oBAAWm4I,SAASvsF,OAAOlkC,IAAI,KAAK77B,OAAMmsJ,WAAYnsJ,OAAMosJ;AAAAA,QAC9D;AAEA,YAAIj4I,SAAS;AACX,iBAAO,IAA4C;AAAA,QACrD;AAAA,MACF;AAAA,IACD;AAAA,IAMDuzB,YAAYrmC,OAAqC;AAC/C,UAAI4b,iBAAiB5b,MAAKm6B,UAAU,GAAG;AACrC,eAAO,IAA4C;AAAA,MACrD;AAAA,IACF;AAAA,EACD;AAMDrL,QAAM+Y,iBACJ/Y,MAAMsjB,qBACNtjB,MAAM6Y,eACJ,SACE3nC,OACAm7B,QACgB;AAChB,QAAIA,OAAOa,WAAW,CAAC,MAAMh8B,OAAM;AACjC,aAAA;AAAA,IACF;AAAA,EACD;AAEL8uB,QAAMkjB,yBAAyB,SAC7BhyC,OACAm7B,QACgB;AAAA,QAAAgwH;AAChB,QAAIhwH,OAAOwE,eAAe,CAAC,MAAM3/B,SAAQ,GAAAmrJ,qBAAChwH,OAAOa,uBAAPmvH,mBAAmBh/I,SAAQ;AACnE,aAAA;AAAA,IACF;AAAA,EACD;AAED2iB,QAAMojB,oBAAoB,SACxBlyC,OACAm7B,QACgB;AAAA,QAAAiwH,qBAAAC;AAChB,QACElwH,OAAOuE,SAAS,CAAC,MAAM1/B,SACvB,GAAAorJ,sBAACjwH,OAAOa,eAAPovH,QAAAA,oBAAmBj/I,WACpB,GAAAk/I,wBAAClwH,OAAOwE,mBAAc,QAArB0rH,sBAAuBl/I,SACxB;AACA,aAAA;AAAA,IACF;AAAA,EACD;AAED2iB,QAAMgjB,yBAAyB,SAC7B9xC,OACAm7B,QACgB;AAAA,QAAAmwH,qBAAAC,wBAAAC;AAChB,QACErwH,OAAOyE,cAAc,CAAC,MAAM5/B,SAC5B,GAAAsrJ,sBAACnwH,OAAOa,eAAPsvH,QAAAA,oBAAmBn/I,WACpB,GAAAo/I,yBAACpwH,OAAOwE,mBAAP4rH,QAAAA,uBAAuBp/I,WACxB,GAAAq/I,mBAACrwH,OAAOuE,qBAAP8rH,iBAAiBr/I,SAClB;AACA,aAAA;AAAA,IACF;AAAA,EACD;AAOC,GACE,CAAC,YAAY,IAAI,GACjB,CAAC,SAAS,IAAI,GACd,CAAC,QAAQ,IAAI,GACb,CAAC,oBAAoB,IAAI,GACzB,CAAC,mBAAmB,IAAI,GACxB,CAAC,gBAAgB,IAAI,CAAC,EAExB2sB,QAAQ,SAAU,CAAC3nB,MAAMs6I,OAAO,GAAG;AACnC,KAACt6I,IAAI,EACF0nB,OAAOjJ,mBAAmBze,IAAI,KAAK,EAAE,EACrC2nB,QAAQ,SAAU3nB,OAAM;AACvB,YAAMimD,MAAMq0F,UAAU,IAAA,IAA+C;AACrE38H,YAAM3d,KAAI,IAAI,MAAMimD;AAAAA,IACtB,CAAC;AAAA,EACL,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzRD,MAAAqK,KAAAv5D,aAAA;AAcA,MAAAumB,SAAAvmB,YAAA;AAA0C,QAAA;AAAA,IAbxC6Y;AAAAA,IACAvF;AAAAA,IACAM;AAAAA,IACAqD;AAAAA,IACA0F;AAAAA,IACAzH;AAAAA,IACAuC;AAAAA,IACAW;AAAAA,IACAL;AAAAA,IACAwL;AAAAA,EAAW,IAAAg2C;AAMb,QAAMiqF,aAAa,oBAAIr2F,IAAI,CACzB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,MAAM,CAAC,GACR,CAAC,OAAO,CAAC,GACT,CAAC,MAAM,CAAC,GACR,CAAC,OAAO,CAAC,GACT,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,cAAc,CAAC,GAChB,CAAC,MAAM,CAAC,GACR,CAAC,MAAM,CAAC,GACR,CAAC,OAAO,CAAC,GACT,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,KAAK,CAAC,GACP,CAAC,MAAM,EAAE,CAAC,CACX;AAUD,WAASs2F,oBAAoB3rJ,OAAcwvB,UAAkB;AAC3D,QAAIA,aAAa,sBAAsBA,aAAa,qBAAqB;AACvE,aAAOk8H,WAAW98I,IAAK5O,MAAkBm5B,QAAQ;AAAA,IACnD;AACA,QAAI3J,aAAa,oBAAoBA,aAAa,yBAAyB;AACzE,aAAOk8H,WAAW98I,IAAI,IAAI;AAAA,IAC5B;AAAA,EACF;AAEA,WAASg9I,mBAAmBp8H,UAAkB;AAC5C,WACEA,aAAa,oBACbA,aAAa,2BACbA,aAAa;AAAA,EAEjB;AAEA,QAAMq8H,uBAAuBA,CAC3B7rJ,OACAm7B,WACsB;AACtB,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,YACG26I,eAAe,sBAAsBA,eAAe,sBACrD3wH,OAAO8B,eAAej9B;AAAAA,EAEzB;AAED,QAAM+rJ,iBAAiBA,CAAC/rJ,OAAcm7B,WAAmB;AACvD,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,YACI26I,eAAe,sBACfA,eAAe,+BACf3wH,OAAOn2B,WAAWhF,UAClB8rJ,eAAe,oBACfA,eAAe,4BACfA,eAAe,oBACf3wH,OAAO7D,WAAWt3B,SACnB8rJ,eAAe,8BAA8B3wH,OAAOsD,QAAQz+B,SAC7D8rJ,eAAe;AAAA,EAElB;AAEM,WAASv6G,uBACdvxC,OACAm7B,QACS;AACT,WAAOpa,sBAAsBoa,MAAM;AAAA,EACrC;AAEO,WAASmV,uBACdtwC,OACAm7B,QACA6wH,cACS;AACT,UAAMF,aAAa3wH,OAAOhqB;AAC1B,WAEE26I,eAAe,yBAEfA,eAAe,gCAEfA,eAAe,yBACf/zF,QAAQi0F,eAAeC,OAAAA,aAAaC,mBAAmB;AAAA,EAE3D;AAEO,WAASjjH,iBACdjpC,OACAm7B,QACS;AACT,WAAO4wH,eAAe/rJ,OAAMm7B,MAAM,KAAK0wH,qBAAqB7rJ,OAAMm7B,MAAM;AAAA,EAC1E;AAEA,WAASgxH,gCAAgCH,cAAsB;AAC7D,WAAOj0F,QACLi0F,gBAAgBC,OAAY,aAACzmH,sBAAsBymH,OAAY,aAACG,UAClE;AAAA,EACF;AAEO,WAAS3kH,iBACdznC,OACAm7B,QACA6wH,cACS;AACT,WAAOG,gCAAgCH,YAAY;AAAA,EACrD;AAEO,WAASl0G,aACd93C,OACAm7B,QACA6wH,cACS;AAET,WACE,CAAChsJ,MAAK66B,SAASk9B,QAAQi0F,eAAeC,OAAAA,aAAazmH,mBAAmB;AAAA,EAE1E;AAEO,WAAS6mH,OACdrsJ,OACAm7B,QACqB;AACrB,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QACEnR,MAAKmR,SAAS,sBACdnR,MAAKm5B,aAAa,QAClB2yH,eAAe,sBACf3wH,OAAOhC,aAAa,MACpB;AACA,aAAOgC,OAAO5B,SAASv5B;AAAAA,IACzB;AAEA,QAAI6rJ,qBAAqB7rJ,OAAMm7B,MAAM,GAAG;AACtC,aAAO;AAAA,IACT;AAEA,QACE4wH,eAAe/rJ,OAAMm7B,MAAM,KAC3B2wH,eAAe,qBACfA,eAAe,mBACfA,eAAe,mBACf;AACA,aAAO;AAAA,IACT;AAEA,UAAMQ,YAAYX,oBAAoBxwH,QAAQ2wH,UAAU;AACxD,QAAIQ,aAAa,MAAM;AACrB,YAAMC,UAAUZ,oBAAoB3rJ,OAAMA,MAAKmR,IAAI;AACnD,UAEGm7I,cAAcC,WACbT,eAAe,sBACf3wH,OAAO3B,UAAUx5B,SACnBssJ,YAAYC,SACZ;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAOl6I;AAAAA,EACT;AAEO,WAAS0hC,oBACd/zC,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,yBACfA,eAAe,4BACfA,eAAe,gCACfA,eAAe;AAAA,EAEnB;AAIO,WAASv2G,0BACdv1C,OACAm7B,QACS;AACT,WAAOtW,oBAAoBsW,MAAM,KAAKA,OAAOkF,eAAergC;AAAAA,EAC9D;AAEO,WAASo+C,eACdp+C,OACAm7B,QACS;AACT,SACGA,OAAOhqB,SAAS,0BACfgqB,OAAOhqB,SAAS,wBAClBgqB,OAAO5B,SAASv5B,OAChB;AACA,aAAO;AAAA,IACT;AACA,QACEm7B,OAAOhqB,SAAS,uBACfgqB,OAAOhC,aAAa,OAAOgC,OAAOhC,aAAa,QAChDn5B,UAASm7B,OAAO5B,MAChB;AACA,aAAO;AAAA,IACT;AACA,WAAO8yH,OAAOrsJ,OAAMm7B,MAAM;AAAA,EAC5B;AAMO,WAASuhB,kBACd18C,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QACE26I,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC/D8rJ,eAAe,oBACfA,eAAe,oBAEfA,eAAe,mBACf;AACA,aAAO;AAAA,IACT;AACA,SACGA,eAAe,wBAAwBA,eAAe,kBACvD3wH,OAAOn8B,MAAM,CAAC,MAAMgB,OACpB;AACA,aAAO;AAAA,IACT;AACA,QACE8rJ,eAAe,wBACd3wH,OAAO+G,cAAcliC,SAAQm7B,OAAOgH,gBAAgBniC,QACrD;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AAEO,WAASs8C,YAAYt8C,OAAqBm7B,QAAyB;AACxE,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,wBACfA,eAAe,oBACfA,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC/D8rJ,eAAe;AAAA,EAEnB;AAEO,WAAStvG,mBACdx8C,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,oBACfA,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC/D8rJ,eAAe;AAAA,EAEnB;AAEO,WAASlvG,YAAY58C,OAAqBm7B,QAAyB;AACxE,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QACE26I,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC/D8rJ,eAAe,kBACf;AACA,aAAO;AAAA,IACT;AACA,QAAI9rJ,MAAKsiC,cAAca,YAAY;AACjC,WACG2oH,eAAe,wBAAwBA,eAAe,kBACvD3wH,OAAOn8B,MAAM,CAAC,MAAMgB,OACpB;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAEO,WAASg9C,eACdh9C,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC/D8rJ,eAAe;AAAA,EAEnB;AAEO,WAAS5tG,0BACdl+C,OACAm7B,QACA;AACA,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,YACG26I,eAAe,oBACdA,eAAe,4BACfA,eAAe,mBACfA,eAAe,gCACjB,CAAC,CAIG3wH,OAAOlB;AAAAA,EAEf;AAEO,WAAS+gB,eACdh7C,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,wBACfA,eAAe,iBACfA,eAAe,oBACfA,eAAe,oBACfA,eAAe,iBACdA,eAAe,yBAAyB3wH,OAAOkF,eAAergC,SAC9D8rJ,eAAe,wBACb3wH,OAAO+G,cAAcliC,SAAQm7B,OAAOgH,gBAAgBniC;AAAAA,EAE3D;AAIO,WAASgkC,iBACdhkC,OACAm7B,QACA6wH,cACAQ,oBACS;AAGT,WAAOxsJ,MAAKm5B,aAAa,QAAQqzH;AAAAA,EACnC;AAEO,WAASrkH,mBACdnoC,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QACE26I,eAAe,wBACfA,eAAe,6BACdA,eAAe,sBAAsB3wH,OAAOpM,aAAa/uB,SACzD8rJ,eAAe,8BAA8B3wH,OAAOpM,aAAa/uB,SAClE8rJ,eAAe,mBACf;AACA,aAAO;AAAA,IACT;AACA,QAAIA,eAAe,oBAAoB;AACrC,aAAO;AAAA,IACT;AACA,QAAIA,eAAe,kBAAkB;AACnC,aAAO3wH,OAAO3B,UAAUx5B;AAAAA,IAC1B;AACA,QAAI8rJ,eAAe,4BAA4B;AAC7C,aAAO;AAAA,IACT;AAEA,WAAO,CAACrgI,YAAY0P,MAAM;AAAA,EAC5B;AAEO,WAASyR,gBACd5sC,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,WACE26I,eAAe,sBACfA,eAAe,uBACfA,eAAe,qBACfA,eAAe,mBACfC,eAAe/rJ,OAAMm7B,MAAM,KAC1B2wH,eAAe,qBAAqB7rI,kBAAkBjgB,KAAI,KAC1D8rJ,eAAe,2BAA2B9rJ,UAASm7B,OAAO18B,QAC3DotJ,qBAAqB7rJ,OAAMm7B,MAAM,KACjCywH,mBAAmBE,UAAU;AAAA,EAEjC;AAIO,WAAS3hH,gBACdnqC,OACAm7B,QACA6wH,cACS;AACT,WAAOj0F,QACLi0F,gBACGC,OAAY,aAACzmH,sBAAsBymH,OAAY,aAACQ,cACrD;AAAA,EACF;AAEO,WAASC,UACd1sJ,OAMAm7B,QACS;AACT,WACE4wH,eAAe/rJ,OAAMm7B,MAAM,KAC1B3f,mBAAmB2f,MAAM,KACxBA,OAAOhC,aAAa,QACpBgC,OAAO5B,SAASv5B,SAClB6rJ,qBAAqB7rJ,OAAMm7B,MAAM;AAAA,EAErC;AAEO,WAAS+K,mBACdlmC,OACAm7B,QACA6wH,cACS;AACT,WAAOj0F,QACLi0F,gBACGC,OAAY,aAACzmH,sBAAsBymH,OAAY,aAACQ,cACrD;AAAA,EACF;AAEO,WAASxnH,sBACdjlC,OAIAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QACE26I,eAAe,qBACfA,eAAe,mBACfA,eAAe,sBACfA,eAAe,uBACdA,eAAe,2BAA2B3wH,OAAO18B,SAASuB,SAC3D8rJ,eAAe,qBACfF,mBAAmBE,UAAU,GAC7B;AACA,aAAO;AAAA,IACT;AAEA,WAAOY,UAAU1sJ,OAAMm7B,MAAM;AAAA,EAC/B;AAIO,WAASkS,yBACdrtC,OACAm7B,QACS;AACT,WACGrf,iBAAiBqf,MAAM,KAAKA,OAAO7D,WAAWt3B,SAC9Cod,mBAAmB+d,MAAM,KAAKA,OAAOn2B,WAAWhF;AAAAA,EAErD;AAIO,WAAS8jC,qBACd9jC,OACAm7B,QACA6wH,cACS;AACT,QACEG,gCAAgCH,YAAY,KAC5CrsI,gBAAgB3f,MAAKu5B,IAAI,GACzB;AACA,aAAO;AAAA,IACT,OAAO;AACL,aAAO0L,sBAAsBjlC,OAAMm7B,MAAM;AAAA,IAC3C;AAAA,EACF;AAEO,WAAS+L,kBACdlnC,OACAm7B,QACS;AACT,UAAM2wH,aAAa3wH,OAAOhqB;AAC1B,QAAIy6I,mBAAmBE,UAAU,EAAG,QAAO;AAC3C,QAAIA,eAAe,oBAAqB,QAAO;AAC/C,YAAQ9rJ,MAAKm5B,UAAQ;AAAA,MACnB,KAAK;AACH,eAAOgC,OAAOhC,aAAa,QAAQgC,OAAOhC,aAAa;AAAA,MACzD,KAAK;AACH,eAAOgC,OAAOhC,aAAa;AAAA,MAC7B,KAAK;AACH,eAAOgC,OAAOhC,aAAa;AAAA,IAC/B;AAAA,EACF;AAEO,WAASgN,WACdnmC,OACAm7B,QACA6wH,cACAW,YACAC,kBACS;AAAA,QAAAnrD;AACT,UAAMqqD,aAAa3wH,OAAOhqB;AAG1B,SACEswF,cAAAzhG,MAAKm3D,UAAK,QAAVsqC,YAAY3tB,iBACZg4E,eAAe,0BACf3wH,OAAO5B,SAASv5B,OAChB;AACA,YAAM6sJ,YAAY1xH,OAAO3B,MAAMroB;AAC/B,WACG07I,cAAc,wBAAwBA,cAAc,sBACrD1xH,OAAO3B,MAAMyB,MAAM,MACnB;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAEA,QAAI2xH,oBAAoBA,iBAAiB5sJ,KAAI,MAAMA,MAAKyM,MAAM;AAC5D,aAAO;AAAA,IACT;AAIA,QAAIzM,MAAKyM,SAAS,OAAO;AAGvB,YAAMqgJ,sBACJ1vI,mBAAmB+d,QAAQ;AAAA,QACzBn2B,QAAQhF;AAAAA,QACRy7B,UAAU;AAAA,MACZ,CAAC,KACDnb,2BAA2B6a,QAAQ;AAAA,QACjCn2B,QAAQhF;AAAAA,QACRy7B,UAAU;AAAA,QACVlH,UAAU;AAAA,MACZ,CAAC;AACH,UACEu4H,uBACAd,gBACGC,OAAAA,aAAazmH,sBACZymH,OAAY,aAACc,UACbd,OAAAA,aAAae,YACjB;AACA,eAAO;AAAA,MACT;AACA,aAAOj1F,QAAQi0F,eAAeC,OAAY,aAACgB,SAAS;AAAA,IACtD;AAKA,WACEjtJ,MAAKyM,SAAS,WACd0S,iBAAiBgc,QAAQ;AAAA,MAAE5B,MAAMv5B;AAAAA,MAAMg+B,OAAO;AAAA,IAAM,CAAC;AAAA,EAEzD;;;;;;;;;;;;;;;;ACnlBA,MAAAkvH,cAAAhlJ,kBAAA;AACA,MAAAilJ,SAAAjlJ,mBAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AASsB,QAAA;AAAA,IARpB0nB;AAAAA,IACAgF;AAAAA,IACA9Y;AAAAA,IACAsK;AAAAA,IACA/J;AAAAA,IACAe;AAAAA,IACAC;AAAAA,IACAQ;AAAAA,EAAyB,IAAA4jD;AAMG/uD,OAAAA,eAAA;AAAA,IAAA8yB,qBAAA;AAAA,IAAA4mH,WAAA;AAAA,IAAAK,eAAA;AAAA,IAAAM,SAAA;AAAA,IAAAC,WAAA;AAAA,IAAAC,WAAA;AAAA,IAAAf,qBAAA;AAAA;AA0B9B,WAASkB,cAAiB32I,KAAsB;AAC9C,UAAM3E,MAAM,oBAAIujD,IAA6B;AAE7C,aAAS16C,IAAIxJ,MAAck8I,MAAsB;AAC/C,YAAM51I,KAAK3F,IAAIlD,IAAIuC,IAAI;AACvBW,UAAI9F,IACFmF,MACAsG,KACI,SAAUzX,OAAMm7B,QAAQ54B,QAAO+qJ,WAAWV,kBAAkB;AAAA,YAAAW;AAC1D,gBAAAA,MACE91I,GAAGzX,OAAMm7B,QAAQ54B,QAAO+qJ,WAAWV,gBAAgB,MAACW,OAAAA,MACpDF,KAAKrtJ,OAAMm7B,QAAQ54B,QAAO+qJ,WAAWV,gBAAgB;AAAA,MAExD,IACDS,IACN;AAAA,IACF;AAEA,eAAWl8I,QAAQpC,OAAOnK,KAAK6R,GAAG,GAAG;AACnC,YAAMkZ,UAAUC,mBAAmBze,IAAI;AACvC,UAAIwe,SAAS;AACX,mBAAWE,SAASF,SAAS;AAC3BhV,cAAIkV,OAAOpZ,IAAItF,IAAI,CAAC;AAAA,QACtB;AAAA,MACF,OAAO;AACLwJ,YAAIxJ,MAAMsF,IAAItF,IAAI,CAAC;AAAA,MACrB;AAAA,IACF;AAEA,WAAOW;AAAAA,EACT;AAIA,QAAM07I,iBAAiBJ,cAAcD,MAAM;AAC3C,QAAMM,0BAA0BL,cAAcF,YAAWp+H,KAAK;AAE9D,WAAS4+H,sBAAsB1tJ,OAAuB;AACpD,QAAI8b,iBAAiB9b,KAAI,GAAG;AAC1B,aAAO;AAAA,IACT;AAEA,WAAOod,mBAAmBpd,KAAI,KAAK0tJ,sBAAsB1tJ,MAAKgF,MAAM;AAAA,EACtE;AAEO,WAAS2oJ,gBACd3tJ,OACAm7B,QACAhqB,MACS;AAAA,QAAAy8I;AACT,QAAI,CAAC5tJ,MAAM,QAAO;AAElB,QAAIqc,sBAAsBrc,KAAI,GAAG;AAC/BA,MAAAA,QAAOA,MAAK05B;AAAAA,IACd;AAEA,UAAMm0H,QAAID,wBAAGH,wBAAwB7+I,IAAI5O,MAAKmR,IAAI,MAArCy8I,OAAAA,SAAAA,sBAAyC5tJ,OAAMm7B,MAAM;AAElE,QAAI,OAAO0yH,SAAS,UAAU;AAC5B,cAAQA,OAAO18I,UAAU;AAAA,IAC3B;AAEA,WAAO;AAAA,EACT;AAEO,WAAS28I,sBAAsB9tJ,OAAcm7B,QAAgB;AAClE,WAAOwyH,gBAAgB3tJ,OAAMm7B,QAAQ,CAAC;AAAA,EACxC;AAEO,WAAS4yH,qBAAqB/tJ,OAAcm7B,QAAgB;AACjE,WAAOwyH,gBAAgB3tJ,OAAMm7B,QAAQ,CAAC;AAAA,EACxC;AAEO,WAAS6yH,YACdhuJ,OACAm7B,QACA6wH,cACAsB,WACAV,kBACA;AAAA,QAAAqB;AACA,QAAI,CAAC9yH,OAAQ,QAAO;AAEpB,QAAI9d,gBAAgB8d,MAAM,KAAKA,OAAO7D,WAAWt3B,OAAM;AACrD,UAAI0tJ,sBAAsB1tJ,KAAI,EAAG,QAAO;AAAA,IAC1C;AAEA,QAAIomB,YAAY+U,MAAM,GAAG;AACvB,aACE,CAAC+yH,4BAA4BluJ,KAAI,KACjC,EAAE8b,iBAAiB9b,KAAI,KAAKkuJ,4BAA4BluJ,MAAKs3B,MAAM,MACnE,CAACzZ,0BAA0B7d,KAAI;AAAA,IAEnC;AAEA,YAAAiuJ,sBAAOT,eAAe5+I,IAAI5O,MAAKmR,IAAI,MAAC,OAAA,SAA7B88I,oBACLjuJ,OACAm7B,QACA6wH,cACAsB,WACAV,gBACF;AAAA,EACF;AAEA,WAASsB,4BAA4BluJ,OAAuB;AAC1D,YAAQA,MAAKmR,MAAI;AAAA,MACf,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eACE,CAACnR,MAAKy7B,YACNz7B,MAAK+uB,SAAS5d,SAAS,gBACvB+8I,4BAA4BluJ,MAAKgF,MAAM;AAAA,MAE3C;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEO,WAASmpJ,YAAYhzH,QAAgB6lB,OAAe;AACzD,UAAM2c,cAAc/oC,aAAauG,OAAOhqB,IAAI;AAC5C,aAASjF,IAAIyxD,YAAYxxD,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAChD,YAAMmnB,MAAO8H,OAAewiC,YAAYzxD,CAAC,CAAC;AAC1C,UAAImnB,QAAQ2tB,OAAO;AACjB,eAAO;AAAA,MACR,WAAUxrC,MAAMC,QAAQ4d,GAAG,GAAG;AAC7B,YAAIrE,IAAIqE,IAAIlnB,SAAS;AACrB,eAAO6iB,KAAK,KAAKqE,IAAIrE,CAAC,MAAM,KAAMA;AAClC,eAAOA,KAAK,KAAKqE,IAAIrE,CAAC,MAAMgyB;AAAAA,MAC7B,WAAU3tB,KAAK;AACd,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;;;;;;;;;;;;AC5KA,MAAAouC,KAAAv5D,aAAA;AAA0D,QAAA;AAAA,IAAjDqxD,cAAAA;AAAAA,IAAc3kC;AAAAA,EAAY,IAAA6sC;AAAAA,EAE5B,MAAM2sF,SAAS;AAAA,IAYpBv7I,YAAY+uD,KAAarnC,QAAiBt5B,SAAgB;AAAA,WAX1DotJ,UAAO;AAAA,WACPvuE,UAAO;AAAA,WAEPwuE,uBAA8C,oBAAIj5F,IAAK;AAAA,WACvDk5F,8BAGI,oBAAIl5F,IAAK;AAAA,WAEbm5F,eAAe,oBAAIn5F,IAA8C;AAG/D,WAAKg5F,UAAU9zH;AACf,WAAKulD,UAAU7+E;AAEfs4D,MAAAA,cAAaqI,KAAK5hE,CAAAA,UAAQ;AACxB,cAAMyuJ,UAAU,KAAKC,wBAAwB1uJ,KAAI;AACjD,YAAIyuJ,QAAQtiJ,SAAS,EAAG,MAAKmiJ,qBAAqBtiJ,IAAIhM,OAAMyuJ,OAAO;AAAA,MACrE,CAAC;AAED,WAAKD,eAAe;AAAA,IACtB;AAAA,IAEA/gJ,IAAIzN,OAAuB;AACzB,aAAO,KAAKsuJ,qBAAqB7gJ,IAAIzN,KAAI;AAAA,IAC3C;AAAA,IAEA2uJ,WAAW3uJ,OAA6C;AACtD,aAAO,KAAKsuJ,qBAAqB1/I,IAAI5O,KAAI;AAAA,IAC3C;AAAA,IAEA0jI,KACE1jI,OACA4uJ,WACc;AACd,YAAMH,UAAU,KAAKH,qBAAqB1/I,IAAI5O,KAAI;AAClD,UAAIyuJ,SAAS;AACX,iBAAS91H,IAAI,GAAGA,IAAI81H,QAAQtiJ,QAAQwsB,KAAK;AACvC,gBAAMr5B,SAAQmvJ,QAAQ91H,CAAC;AACvB,gBAAMmhE,MAAM,KAAKu0D,QAAQ/uJ,MAAK;AAC9B,cAAIsvJ,UAAU90D,KAAKx6F,MAAK,EAAG,QAAOw6F;AAAAA,QACpC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEA+0D,cACE7uJ,OACA4uJ,WACQ;AACR,YAAMH,UAAU,KAAKH,qBAAqB1/I,IAAI5O,KAAI;AAClD,UAAIyuJ,SAAS;AACX,iBAAS91H,IAAI81H,QAAQtiJ,SAAS,GAAGwsB,KAAK,GAAGA,KAAK;AAC5C,gBAAMr5B,SAAQmvJ,QAAQ91H,CAAC;AACvB,gBAAMmhE,MAAM,KAAKu0D,QAAQ/uJ,MAAK;AAC9B,cAAIsvJ,UAAU90D,KAAKx6F,MAAK,EAAG,QAAOA;AAAAA,QACpC;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEAwvJ,aACE9uJ,OACAvB,OACAswJ,kBAA0B,GACZ;AACd,YAAMN,UAAU,KAAKH,qBAAqB1/I,IAAI5O,KAAI;AAClD,UAAIyuJ,SAAS;AACX,YAAIviJ,IAAI;AACR,cAAMguG,QAAQ60C;AAQd,YAAI70C,QAAQ,GAAG;AACb,gBAAMj4G,SAAQ,KAAKssJ,4BAA4B3/I,IAAI5O,KAAI;AACvD,cAAIiC,UAASA,OAAMxD,SAASA,SAAQwD,OAAMi4G,QAAQA,OAAO;AACvDhuG,gBAAIjK,OAAMiK,IAAI;AACd6iJ,+BAAmB9sJ,OAAMi4G,QAAQ;AAAA,UACnC;AAAA,QACF;AAEA,eAAOhuG,IAAIuiJ,QAAQtiJ,QAAQD,KAAK;AAC9B,gBAAM4tF,MAAM,KAAKu0D,QAAQI,QAAQviJ,CAAC,CAAC;AACnC,cAAI,KAAK8iJ,gBAAgBl1D,KAAKr7F,KAAI,GAAG;AACnC,gBAAIswJ,oBAAoB,GAAG;AACzB,kBAAI70C,QAAQ,GAAG;AACb,qBAAKq0C,4BAA4BviJ,IAAIhM,OAAM;AAAA,kBAAEvB,MAAAA;AAAAA,kBAAMy7G;AAAAA,kBAAOhuG;AAAAA,gBAAE,CAAC;AAAA,cAC/D;AACA,qBAAO4tF;AAAAA,YACT;AACAi1D;AAAAA,UACF;AAAA,QACF;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,IAEAC,gBAAgBjoJ,QAActI,OAAc;AAC1C,UAAIsI,OAAM6M,MAAM7M,OAAM2M,UAAUjV,MAAK0N,OAAQ,QAAO;AACpD,UAAIpF,OAAMlH,SAAS,KAAM,QAAOkH,OAAMlH,UAAUpB;AAChD,aAAO,KAAKqhF,QAAQqzC,WAAW10H,OAAMsI,OAAM2M,KAAK;AAAA,IAClD;AAAA,IAEAu7I,aAAajvJ,OAAcvB,OAAuB;AAChD,YAAMgwJ,UAAU,KAAKH,qBAAqB1/I,IAAI5O,KAAI;AAClD,UAAI,CAACyuJ,QAAS,QAAO;AACrB,YAAM30D,MAAM,KAAKu0D,QAAQI,QAAQ,CAAC,CAAC;AACnC,UAAI30D,IAAIpmF,UAAU1T,MAAK0T,MAAO,QAAO;AACrC,aAAO,KAAKs7I,gBAAgBl1D,KAAKr7F,KAAI;AAAA,IACvC;AAAA,IAEAywJ,WAAWlvJ,OAAcvB,OAAuB;AAC9C,YAAMgwJ,UAAU,KAAKH,qBAAqB1/I,IAAI5O,KAAI;AAClD,UAAI,CAACyuJ,QAAS,QAAO;AACrB,YAAM30D,MAAM,KAAKu0D,QAAQI,QAAQA,QAAQtiJ,SAAS,CAAC,CAAC;AACpD,UAAI2tF,IAAIlmF,QAAQ5T,MAAK4T,IAAK,QAAO;AACjC,aAAO,KAAKo7I,gBAAgBl1D,KAAKr7F,KAAI;AAAA,IACvC;AAAA,IAEAiwJ,wBAAwB1uJ,OAAwB;AAC9C,UAAIA,MAAK0T,SAAS,QAAQ1T,MAAK4T,OAAO,KAAM,QAAO,CAAE;AAErD,YAAM;AAAA,QAAEwrF;AAAAA,QAAO8c;AAAAA,MAAK,IAAI,KAAKizC,kBAC3BnvJ,OACA,GACA,KAAKquJ,QAAQliJ,SAAS,CACxB;AAEA,UAAIijJ,MAAMhwD;AAEV,YAAM3+D,WAAW4uH,iBAAiBrvJ,KAAI;AAEtC,WACGA,MAAKmR,SAAS,4BACbnR,MAAKmR,SAAS,+BAChBnR,MAAKy9B,eACLz9B,MAAKy9B,YAAYtsB,SAAS,oBAC1B;AAOAsvB,iBAAShO,KAAM;AAAA,MACjB;AAEA,YAAMg8H,UAAU,CAAE;AAElB,iBAAWztG,SAASvgB,UAAU;AAC5B,YAAIugB,SAAS,KAAM;AACnB,YAAIA,MAAMttC,SAAS,QAAQstC,MAAMptC,OAAO,KAAM;AAE9C,cAAM07I,WAAW,KAAKH,kBAAkBnuG,OAAOouG,KAAKlzC,IAAI;AAExD,cAAMqzC,OAAOD,SAASlwD;AACtB,iBAASzmE,IAAIy2H,KAAKz2H,IAAI42H,MAAM52H,IAAK81H,SAAQrnJ,KAAKuxB,CAAC;AAE/Cy2H,cAAME,SAASpzC,OAAO;AAAA,MACxB;AAEA,eAASvjF,IAAIy2H,KAAKz2H,KAAKujF,MAAMvjF,IAAK81H,SAAQrnJ,KAAKuxB,CAAC;AAEhD,aAAO81H;AAAAA,IACT;AAAA,IAEAU,kBAAkBnvJ,OAAcovJ,KAAaG,MAAc;AACzD,YAAM1P,SAAS,KAAK2O,aAAa5/I,IAAI5O,KAAI;AACzC,UAAI6/I,OAAQ,QAAOA;AAEnB,YAAMzgD,QAAQ,KAAKowD,sBAAsBxvJ,MAAK0T,OAAO07I,KAAKG,IAAI;AAC9D,YAAMrzC,OAAO,KAAKuzC,qBAAqBzvJ,MAAK4T,KAAKwrF,OAAOmwD,IAAI;AAE5D,WAAKf,aAAaxiJ,IAAIhM,OAAM;AAAA,QAAEo/F;AAAAA,QAAO8c;AAAAA,MAAK,CAAC;AAC3C,aAAO;AAAA,QAAE9c;AAAAA,QAAO8c;AAAAA,MAAM;AAAA,IACxB;AAAA,IAEAszC,sBAAsB97I,OAAe07I,KAAaG,MAAsB;AACtE,aAAOH,OAAOG,MAAM;AAClB,cAAMG,MAAOH,OAAOH,OAAQ;AAC5B,YAAI17I,QAAQ,KAAK26I,QAAQqB,GAAG,EAAEh8I,OAAO;AACnC67I,iBAAOG,MAAM;AAAA,QACf,WAAWh8I,QAAQ,KAAK26I,QAAQqB,GAAG,EAAEh8I,OAAO;AAC1C07I,gBAAMM,MAAM;AAAA,QACd,OAAO;AACL,iBAAOA;AAAAA,QACT;AAAA,MACF;AACA,aAAON;AAAAA,IACT;AAAA,IAEAK,qBAAqB77I,KAAaw7I,KAAaG,MAAsB;AACnE,aAAOH,OAAOG,MAAM;AAClB,cAAMG,MAAOH,OAAOH,OAAQ;AAC5B,YAAIx7I,MAAM,KAAKy6I,QAAQqB,GAAG,EAAE97I,KAAK;AAC/B27I,iBAAOG,MAAM;AAAA,QACf,WAAW97I,MAAM,KAAKy6I,QAAQqB,GAAG,EAAE97I,KAAK;AACtCw7I,gBAAMM,MAAM;AAAA,QACd,OAAO;AACL,iBAAOA;AAAAA,QACT;AAAA,MACF;AACA,aAAOH;AAAAA,IACT;AAAA,EACF;AAAC78I,WAAAA,WAAA07I;AAED,YAAUiB,iBAAiBrvJ,OAAc;AAGvC,QAAIA,MAAKmR,SAAS,mBAAmB;AACnC,YAAMnR,MAAKg/B,OAAO,CAAC;AACnB,eAAS9yB,IAAI,GAAGA,IAAIlM,MAAKg/B,OAAO7yB,QAAQD,KAAK;AAC3C,cAAMlM,MAAKq8B,YAAYnwB,IAAI,CAAC;AAC5B,cAAMlM,MAAKg/B,OAAO9yB,CAAC;AAAA,MACrB;AACA;AAAA,IACF;AAEA,UAAMtH,OAAOgwB,aAAa50B,MAAKmR,IAAI;AACnC,eAAW1R,QAAOmF,MAAM;AACtB,YAAMo8C,QAAShhD,MAAaP,IAAG;AAC/B,UAAI,CAACuhD,MAAO;AACZ,UAAIxrC,MAAMC,QAAQurC,KAAK,GAAG;AACxB,eAAOA;AAAAA,MACT,OAAO;AACL,cAAMA;AAAAA,MACR;AAAA,IACF;AAAA,EACF;;;;;;;;;;;;;;;;AC3OO,WAAS1U,yBAEdtsC,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKy+B,GAAG;AAIZ;AAEL,WAAKkxH,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AACA,SAAK01H,MAAM3vJ,MAAK0+B,KAAK;AAAA,EACvB;AAEO,WAAS8N,kBAA+B;AAC7C,UAAM,IAAIr2B,MAAM,wDAAwD;AAAA,EAC1E;AAMO,WAASy5I,eAEd5vJ,OACA26H,eACA;AACA,UAAM37F,SAASh/B,MAAKg/B;AACpB,QAAI6wH,UAAU;AACd,aAAS3jJ,IAAI,GAAGA,IAAI8yB,OAAO7yB,SAAS,GAAGD,KAAK;AAC1C2jJ,iBAAW7wH,OAAO9yB,CAAC,EAAErM,MAAM8+B;AAC3B,WAAK53B,MAAM8oJ,UAAU,MAAM,IAAI;AAC/B,WAAKF,MAAMh1B,cAAczuH,CAAC,CAAC;AAC3B2jJ,gBAAU;AAIV,UAAqC,KAAKC,UAAU;AAClD,cAAM/oJ,SAAQ,KAAK+oJ,SAAShB,aAAa9uJ,OAAM,KAAKkM,CAAC;AACrD,YAAInF,OAAO,MAAKgpJ,WAAWhpJ,OAAMuM,IAAII,KAAK;AAAA,MAC5C;AAAA,IACF;AACAm8I,eAAW7wH,OAAOA,OAAO7yB,SAAS,CAAC,EAAEtM,MAAM8+B;AAC3C,SAAK53B,MAAM8oJ,UAAU,KAAK,IAAI;AAAA,EAChC;AAEO,WAASnjH,gBAA+B1sC,OAAyB;AACtE,SAAK4vJ,eAAe5vJ,OAAMA,MAAKq8B,WAAW;AAAA,EAC5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnDA,MAAAolC,KAAAv5D,aAAA;AAQA,MAAAumB,SAAAvmB,YAAA;AAAgD,QAAA;AAAA,IAP9C4T;AAAAA,IACA2Q;AAAAA,IACArP;AAAAA,IACAC;AAAAA,IACA2P;AAAAA,EAAS,IAAAy0C;AAKJ,WAAS14B,gBAA+B/oC,OAAyB;AACtE,UAAM;AAAA,MAAEm5B;AAAAA,IAAS,IAAIn5B;AACrB,QACEm5B,aAAa,UACbA,aAAa,YACbA,aAAa,YAEbA,aAAa,SACb;AACA,WAAK7rB,KAAK6rB,QAAQ;AAClB,WAAK62H,MAAO;AAAA,IACd,OAAO;AACL,WAAKjpJ,MAAMoyB,QAAQ;AAAA,IACrB;AAEA,SAAKw2H,MAAM3vJ,MAAKm8B,QAAQ;AAAA,EAC1B;AAEO,WAAS2b,aAA4B93C,OAAsB;AAChE,QAAIA,MAAK66B,OAAO;AACd,WAAKvtB,KAAK,SAAS,IAAI;AACvB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAASwO,wBAEdroC,OACA;AACA,SAAK+G,UAAK,EAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAClC,SAAKN,MAAM3vJ,MAAK05B,UAAU;AAC1BujC,SAAM;AACN,SAAKizF,YAAYlwJ,KAAI;AAAA,EACvB;AAEO,WAASipC,iBAAgCjpC,OAA0B;AACxE,QAAIA,MAAK0a,QAAQ;AACf,WAAK3T,MAAM/G,MAAKm5B,QAAQ;AACxB,WAAKw2H,MAAM3vJ,MAAKm8B,QAAQ;AAAA,IAC1B,OAAO;AACL,WAAKwzH,MAAM3vJ,MAAKm8B,UAAU,IAAI;AAC9B,WAAKp1B,MAAM/G,MAAKm5B,QAAQ;AAAA,IAC1B;AAAA,EACF;AAEO,WAAS8L,sBAEdjlC,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKvB,IAAI;AACpB,SAAKuxJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKm6B,UAAU;AAC1B,SAAK61H,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKo6B,SAAS;AAAA,EAC3B;AAEO,WAASkN,cAEdtnC,OACAm7B,QACA;AACA,SAAK7tB,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKs3B,MAAM;AACtB,QACE,KAAK64H,OAAOC,YACZpwJ,MAAK+5B,UAAU5tB,WAAW,KAE1B,CAACnM,MAAKu0B,YACN,CAACzY,iBAAiBqf,QAAQ;AAAA,MAAE7D,QAAQt3B;AAAAA,IAAK,CAAC,KAC1C,CAACod,mBAAmB+d,MAAM,KAC1B,CAAC9d,gBAAgB8d,MAAM,GACvB;AACA;AAAA,IACF;AAEA,SAAKw0H,MAAM3vJ,MAAKg6B,aAAa;AACM;AAEjC,WAAK21H,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AAGA,QAAIj6B,MAAKu0B,UAAU;AAEjB,WAAKxtB,MAAM,IAAI;AAAA,IACjB;AAEA,QACE/G,MAAK+5B,UAAU5tB,WAAW,KAC1B,KAAK2jJ,YACL,CAAC,KAAKA,SAASZ,WAAWlvJ,OAAM,GAAG,GACnC;AACA;AAAA,IACF;AAEA,SAAK+G,UAAK,EAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAClC,SAAKI,UAAUrwJ,MAAK+5B,WAAW,KAAKu2H,yBAAyB,GAAG,CAAC;AACjErzF,SAAM;AACN,SAAKizF,YAAYlwJ,KAAI;AAAA,EACvB;AAEO,WAASmoC,mBAAkCnoC,OAA4B;AAC5E,SAAKqwJ,UAAUrwJ,MAAKq8B,WAAW;AAAA,EACjC;AAEO,WAASk0H,iBAA8B;AAC5C,SAAKjjJ,KAAK,MAAM;AAAA,EAClB;AAEO,WAASkjJ,QAAqB;AACnC,SAAKljJ,KAAK,OAAO;AAAA,EACnB;AAEO,WAASmjJ,mCAEdzwJ,OACA;AACA,QAAI,OAAO,KAAKmwJ,OAAOl2I,2BAA2B,WAAW;AAC3D,aAAO,KAAKk2I,OAAOl2I;AAAAA,IACrB;AACA,WACE,OAAOja,MAAK0T,UAAU,YAAY1T,MAAK0T,UAAU1T,MAAKy9B,YAAY/pB;AAAAA,EAEtE;AAEO,WAASkkC,UAAyB53C,OAAmB;AAC1D,SAAK+G,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKg3H,QAAS;AAAA,EAChB;AAEO,WAASrjH,yBAEdrtC,OACA;AACA,QAAI;AAAA,MAAEy7B;AAAAA,IAAS,IAAIz7B;AACnB,UAAM;AAAA,MAAEu0B;AAAAA,MAAUxF;AAAAA,IAAS,IAAI/uB;AAE/B,SAAK2vJ,MAAM3vJ,MAAKgF,MAAM;AAEtB,QAAI,CAACy2B,YAAYre,mBAAmB2R,QAAQ,GAAG;AAC7C,YAAM,IAAIyH,UAAU,sDAAsD;AAAA,IAC5E;AAGA,QAAI/J,UAAUsC,QAAQ,KAAK,OAAOA,SAASlvB,UAAU,UAAU;AAC7D47B,iBAAW;AAAA,IACb;AACA,QAAIlH,UAAU;AACZ,WAAKxtB,MAAM,IAAI;AAAA,IACjB;AAEA,QAAI00B,UAAU;AACZ,WAAK10B,UAAK,EAAI;AACd,WAAK4oJ,MAAM5gI,QAAQ;AACnB,WAAKhoB,UAAK,EAAI;AAAA,IAChB,OAAO;AACL,UAAI,CAACwtB,UAAU;AACb,aAAKxtB,UAAK,EAAI;AAAA,MAChB;AACA,WAAK4oJ,MAAM5gI,QAAQ;AAAA,IACrB;AAAA,EACF;AAEO,WAASwe,uBAEdvtC,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKs3B,MAAM;AAEa;AAEjC,WAAKq4H,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AAEA,QAAIj6B,MAAKu0B,UAAU;AACjB,WAAKxtB,MAAM,IAAI;AAAA,IACjB;AAEA,SAAK4oJ,MAAM3vJ,MAAKg6B,aAAa;AAE7B,SAAKjzB,UAAK,EAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAClC,SAAKI,UAAUrwJ,MAAK+5B,SAAS;AAC7BkjC,SAAM;AACN,SAAKizF,YAAYlwJ,KAAI;AAAA,EACvB;AAEO,WAAS6kC,eAA8B7kC,OAAwB;AACpE,SAAK2vJ,MAAM3vJ,MAAKs3B,MAAM;AAEtB,SAAKq4H,MAAM3vJ,MAAKg6B,aAAa;AACM;AAEjC,WAAK21H,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AACA,SAAKlzB,UAAK,EAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAClC,SAAKI,UAAUrwJ,MAAK+5B,WAAW,KAAKu2H,yBAAyB,GAAG,CAAC;AACjErzF,SAAM;AACN,SAAKizF,YAAYlwJ,KAAI;AAAA,EACvB;AAEO,WAAS2wJ,SAAsB;AACpC,SAAKrjJ,KAAK,QAAQ;AAAA,EACpB;AAEO,WAASw/B,gBAA+B9sC,OAAyB;AACtE,SAAKsN,KAAK,OAAO;AAEjB,QAAItN,MAAKm8B,UAAU;AACjB,WAAK6zH,MAAO;AACZ,WAAKY,oBAAoB5wJ,MAAKm8B,QAAQ;AAAA,IACxC;AAAA,EACF;AAEO,WAASyQ,gBAA+B5sC,OAAyB;AACtE,SAAKsN,KAAK,SAAS,IAAI;AAEvB,QAAItN,MAAKi/B,UAAU;AACjB,WAAKl4B,UAAK,EAAI;AACd,UAAI/G,MAAKm8B,UAAU;AACjB,aAAK6zH,MAAO;AAEZ,aAAKL,MAAM3vJ,MAAKm8B,QAAQ;AAAA,MAC1B;AAAA,IACF,OAAO;AACL,UAAIn8B,MAAKm8B,UAAU;AACjB,aAAK6zH,MAAO;AACZ,aAAKY,oBAAoB5wJ,MAAKm8B,QAAQ;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEO,WAAS00H,iBAA8B;AAC5C,SAAK/9D,UAAU,IAAgB;AAAA,EACjC;AAEO,WAASrtD,oBAEdzlC,OACA;AACA,SAAKgsJ,gBAAgBC,OAAAA,aAAazmH;AAClC,SAAKmqH,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKo5D,UAAW;AAAA,EAClB;AAEO,WAASnpD,kBAAiC3pC,OAA2B;AAC1E,SAAK2vJ,MAAM3vJ,MAAKu5B,IAAI;AACpB,QAAIv5B,MAAKu5B,KAAKpoB,SAAS,gBAAgB6b,UAAUhtB,MAAKu5B,IAAI,GAAG;AAC3D,UAAIv5B,MAAKu5B,KAAKhF,SAAU,MAAKxtB,UAAK,EAAI;AACtC,WAAK4oJ,MAAM3vJ,MAAKu5B,KAAK8B,cAAc;AAAA,IACrC;AACA,SAAK20H,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKw5B,KAAK;AAAA,EACvB;AAEO,WAASsK,qBAEd9jC,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKu5B,IAAI;AAEpB,SAAKy2H,MAAO;AACZ,QAAIhwJ,MAAKm5B,aAAa,QAAQn5B,MAAKm5B,aAAa,cAAc;AAC5D,WAAK7rB,KAAKtN,MAAKm5B,QAAQ;AAAA,IACzB,OAAO;AACL,WAAKpyB,MAAM/G,MAAKm5B,QAAQ;AACxB,WAAK23H,eAAe9wJ,MAAKm5B,aAAa;AAAA,IACxC;AACA,SAAK62H,MAAO;AAEZ,SAAKL,MAAM3vJ,MAAKw5B,KAAK;AAAA,EACvB;AAEO,WAASge,eAA8Bx3C,OAAwB;AACpE,SAAK2vJ,MAAM3vJ,MAAKgF,MAAM;AACtB,SAAK+B,MAAM,IAAI;AACf,SAAK4oJ,MAAM3vJ,MAAKs3B,MAAM;AAAA,EACxB;AAOO,WAAS8P,iBAAgCpnC,OAA0B;AACxE,SAAK2vJ,MAAM3vJ,MAAKgF,MAAM;AAEtB,QAAI,CAAChF,MAAKy7B,YAAYre,mBAAmBpd,MAAK+uB,QAAQ,GAAG;AACvD,YAAM,IAAIyH,UAAU,sDAAsD;AAAA,IAC5E;AAEA,QAAIiF,WAAWz7B,MAAKy7B;AAEpB,QAAIhP,UAAUzsB,MAAK+uB,QAAQ,KAAK,OAAO/uB,MAAK+uB,SAASlvB,UAAU,UAAU;AACvE47B,iBAAW;AAAA,IACb;AAEA,QAAIA,UAAU;AACZ,YAAMwhC,OAAO,KAAKgzF,eAAgB;AAClC,WAAKlpJ,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAK+uB,QAAQ;AACxB,WAAKhoB,UAAK,EAAI;AACdk2D,WAAM;AAAA,IACR,OAAO;AACL,WAAKl2D,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAK+uB,QAAQ;AAAA,IAC1B;AAAA,EACF;AAEO,WAAS6c,aAA4B5rC,OAAsB;AAChE,SAAK2vJ,MAAM3vJ,MAAK27B,IAAI;AACpB,SAAK50B,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAK+uB,QAAQ;AAAA,EAC1B;AAEO,WAASkf,YAA2BjuC,OAAqB;AAC9D,SAAK+G,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKi7B,EAAE;AAAA,EACpB;AAEO,WAASoc,sBAEdr3C,OACA;AACA,SAAK+G,UAAK,EAAI;AACd,SAAKuG,KAAKtN,MAAKyM,IAAI;AAAA,EACrB;AAEO,WAAS+rC,iBAAgCx4C,OAA0B;AACxE,SAAKsN,KAAK,UAAU,IAAI;AACxB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,GAAI;AACd,SAAKgqJ,OAAQ;AACb,UAAM;AAAA,MAAEl3H;AAAAA,IAAK,IAAI75B;AACjB,QAAI65B,KAAKA,KAAK1tB,UAAU0tB,KAAKD,WAAWztB,QAAQ;AAC9C,WAAKukJ,QAAS;AAAA,IAChB;AACA,SAAKf,MAAM91H,IAAI;AACf,SAAKm3H,OAAQ;AACb,SAAKC,WAAWjxJ,KAAI;AAAA,EACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5WA,MAAAyhE,KAAAv5D,aAAA;AAWA,MAAAumB,SAAAvmB,YAAA;AAAgD,QAAA;AAAA,IAV9C8jB;AAAAA,IACAxP;AAAAA,IACAI;AAAAA,IACA6O;AAAAA,EAAW,IAAAg2C;AASN,WAASh4B,cAA6BzpC,OAAuB;AAClE,SAAKsN,KAAK,MAAM;AAChB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKgF,MAAM;AACtB,SAAK+B,UAAK,EAAI;AACd,SAAKmqJ,WAAWlxJ,KAAI;AAAA,EACtB;AAEO,WAASqmC,YAA2BrmC,OAAqB;AAC9D,SAAKsN,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKvB,IAAI;AACpB,SAAKsI,UAAK,EAAI;AACd,SAAKipJ,MAAO;AAEZ,UAAMmB,aACJnxJ,MAAKo6B,aAAaxd,cAAcw0I,iBAAiBpxJ,MAAKm6B,UAAU,CAAC;AACnE,QAAIg3H,YAAY;AACd,WAAKpqJ,UAAK,GAAI;AACd,WAAK2pJ,QAAS;AACd,WAAKK,OAAQ;AAAA,IACf;AAEA,SAAKM,yBAAyBrxJ,MAAKm6B,UAAU;AAE7C,QAAIg3H,YAAY;AACd,WAAKH,OAAQ;AACb,WAAKN,QAAS;AACd,WAAK3pJ,UAAK,GAAI;AAAA,IAChB;AAEA,QAAI/G,MAAKo6B,WAAW;AAClB,UAAI,KAAKk3H,SAAkC,GAAA,EAAG,MAAKtB,MAAO;AAC1D,WAAK1iJ,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AACZ,WAAKqB,yBAAyBrxJ,MAAKo6B,SAAS;AAAA,IAC9C;AAAA,EACF;AAGA,WAASg3H,iBAAiBvpB,WAAqC;AAE7D,UAAM;AAAA,MAAEhuG;AAAAA,IAAK,IAAIguG;AACjB,QAAIp8G,YAAYoO,IAAI,MAAM,OAAO;AAC/B,aAAOguG;AAAAA,IACT;AAEA,WAAOupB,iBAAiBv3H,IAAI;AAAA,EAC9B;AAEO,WAASiM,aAA4B9lC,OAAsB;AAChE,SAAKsN,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AAEd;AACE,YAAMk2D,OAAO,KAAKs0F,sBAAuB;AACzC,WAAKvF,gBAAgBC,OAAAA,aAAac;AAClC,WAAK4C,MAAM3vJ,MAAKw6B,IAAI;AACpByiC,WAAM;AAAA,IACR;AAEA,SAAKl2D,UAAK,EAAI;AAEd,QAAI/G,MAAKvB,MAAM;AACb,WAAKuxJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKvB,IAAI;AAAA,IACtB;AACA,SAAKsI,MAAM,KAAK,OAAO,CAAC;AAExB,QAAI/G,MAAKy6B,QAAQ;AACf,WAAKu1H,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKy6B,MAAM;AAAA,IACxB;AAEA,SAAK1zB,UAAK,EAAI;AACd,SAAKmqJ,WAAWlxJ,KAAI;AAAA,EACtB;AAEO,WAASupC,eAA8BvpC,OAAwB;AACpE,SAAKsN,KAAK,OAAO;AACjB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKvB,IAAI;AACpB,SAAKsI,UAAK,EAAI;AACd,SAAKmqJ,WAAWlxJ,KAAI;AAAA,EACtB;AAEA,WAASo/I,cAA6Bp/I,OAAuB;AAC3D,SAAKsN,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,UAAM1vB,UAAUtgI,MAAKmR,SAAS;AAC9B,QAAImvH,WAAWtgI,MAAKg+B,OAAO;AACzB,WAAK1wB,KAAK,OAAO;AACjB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAKwB,0BAA2B;AAChC,SAAKzqJ,UAAK,EAAI;AACd;AACE,YAAMk2D,OAAOqjE,UAAU,OAAO,KAAKixB,sBAAuB;AAC1D,WAAKvF,gBAAgB1rB,UACjB2rB,OAAY,aAACgB,YACbhB,OAAY,aAACe;AACjB,WAAK2C,MAAM3vJ,MAAKu5B,IAAI;AACpB0jC,cAAI,QAAJA,KAAQ;AAAA,IACV;AACA,SAAK+yF,MAAO;AACZ,SAAK1iJ,KAAKgzH,UAAU,OAAO,IAAI;AAC/B,SAAK0vB,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKw5B,KAAK;AACrB,SAAKzyB,UAAK,EAAI;AACd,SAAKmqJ,WAAWlxJ,KAAI;AAAA,EACtB;AAE2B0S,aAAA,iBAAG0sI;AACH1sI,aAAA,iBAAG0sI;AAEvB,WAAS95G,iBAAgCtlC,OAA0B;AACxE,SAAKsN,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AACpB,SAAKm2H,MAAO;AACZ,SAAK1iJ,KAAK,OAAO;AACjB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKvB,IAAI;AACpB,SAAKsI,UAAK,EAAI;AACd,SAAK+rF,UAAW;AAAA,EAClB;AAEA,WAAS2+D,2BAA2BnwJ,UAAkBtB,OAAc;AAClE,QAAIA,OAAM;AACRsB,MAAAA,SAAQ0uJ,MAAO;AACf1uJ,MAAAA,SAAQsvJ,oBAAoB5wJ,KAAI;AAAA,IAClC;AAEAsB,IAAAA,SAAQwxF,UAAW;AAAA,EACrB;AAEO,WAASpuD,eAA8B1kC,OAA2B;AACvE,SAAKsN,KAAK,OAAO;AACjBmkJ,+BAA2B,MAAMzxJ,MAAK85B,KAAK;AAAA,EAC7C;AAEO,WAASqL,kBAAiCnlC,OAA2B;AAC1E,SAAKsN,KAAK,UAAU;AACpBmkJ,+BAA2B,MAAMzxJ,MAAK85B,KAAK;AAAA,EAC7C;AAEO,WAASmO,gBAA+BjoC,OAAyB;AACtE,SAAKsN,KAAK,QAAQ;AAClBmkJ,+BAA2B,MAAMzxJ,MAAKm8B,QAAQ;AAAA,EAChD;AAEO,WAASyM,eAA8B5oC,OAAwB;AACpE,SAAKsN,KAAK,OAAO;AACjBmkJ,+BAA2B,MAAMzxJ,MAAKm8B,QAAQ;AAAA,EAChD;AAEO,WAASoK,iBAAgCvmC,OAA0B;AACxE,SAAK2vJ,MAAM3vJ,MAAK85B,KAAK;AACrB,SAAK/yB,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAASiP,aAA4B9oC,OAAsB;AAChE,SAAKsN,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKw8B,KAAK;AACrB,SAAKwzH,MAAO;AAMZ,QAAIhwJ,MAAKg9D,UAAU;AAEjB,WAAK2yF,MAAM3vJ,MAAKg9D,SAAS,CAAC,CAAC;AAAA,IAC7B,OAAO;AACL,WAAK2yF,MAAM3vJ,MAAKy8B,OAAO;AAAA,IACzB;AAEA,QAAIz8B,MAAK08B,WAAW;AAClB,WAAKszH,MAAO;AACZ,WAAK1iJ,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK08B,SAAS;AAAA,IAC3B;AAAA,EACF;AAEO,WAASqI,YAA2B/kC,OAAqB;AAC9D,SAAKsN,KAAK,OAAO;AACjB,SAAK0iJ,MAAO;AACZ,QAAIhwJ,MAAKk6B,OAAO;AACd,WAAKnzB,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKk6B,KAAK;AACrB,WAAKy1H,MAAM3vJ,MAAKk6B,MAAMmB,cAAc;AACpC,WAAKt0B,UAAK,EAAI;AACd,WAAKipJ,MAAO;AAAA,IACd;AACA,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAAS4O,gBAA+BzoC,OAAyB;AACtE,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKs8B,YAAY;AAC5B,SAAKv1B,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKjpJ,UAAK,GAAI;AAEd,SAAK2qJ,cACH1xJ,MAAKu8B,OACL,MACAlqB,QACA,SAASs/I,YAAYC,SAASC,KAAK;AACjC,UAAI,CAACD,WAAW5xJ,MAAKu8B,MAAMv8B,MAAKu8B,MAAMpwB,SAAS,CAAC,MAAM0lJ,IAAK,QAAO;AAAA,IACpE,CACF;AAEA,SAAKZ,WAAWjxJ,KAAI;AAAA,EACtB;AAEO,WAASuoC,WAA0BvoC,OAAoB;AAC5D,QAAIA,MAAKvB,MAAM;AACb,WAAK6O,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKvB,IAAI;AACpB,WAAKsI,UAAK,EAAI;AAAA,IAChB,OAAO;AACL,WAAKuG,KAAK,SAAS;AACnB,WAAKvG,UAAK,EAAI;AAAA,IAChB;AAEA,QAAI/G,MAAKm6B,WAAWhuB,QAAQ;AAC1B,WAAKukJ,QAAS;AACd,WAAKgB,cAAc1xJ,MAAKm6B,YAAY,IAAI;AAAA,IAC1C;AAAA,EACF;AAEO,WAAS23H,oBAAiC;AAC/C,SAAKxkJ,KAAK,UAAU;AACpB,SAAKwlF,UAAW;AAAA,EAClB;AAEO,WAAS3pD,oBAEdnpC,OACAm7B,QACA;AACA,QAAIn7B,MAAK2Y,SAAS;AAEhB,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,UAAM;AAAA,MAAE/zH;AAAAA,IAAK,IAAIj8B;AACjB,QAAIi8B,SAAS,eAAe;AAC1B,WAAK3uB,KAAK,OAAO;AACjB,WAAK0iJ,MAAO;AACZ,WAAK1iJ,KAAK,SAAS,IAAI;AAAA,IACzB,OAAO;AACL,WAAKA,KAAK2uB,MAAMA,SAAS,OAAO;AAAA,IAClC;AACA,SAAK+zH,MAAO;AAEZ,QAAI+B,WAAW;AAEf,QAAI,CAAC/lI,MAAMmP,MAAM,GAAG;AAClB,iBAAWujC,UAAU1+D,MAAK68B,cAAc;AACtC,YAAI6hC,OAAOlkC,MAAM;AAEfu3H,qBAAW;AAAA,QACb;AAAA,MACF;AAAA,IACF;AAcA,SAAK1B,UACHrwJ,MAAK68B,cACLxqB,QACAA,QACArS,MAAK68B,aAAa1wB,SAAS,GAC3B4lJ,WACI,SAAyBhD,iBAAyB;AAChD,WAAKhoJ,MAAM,KAAK,OAAOgoJ,eAAe;AACtC,WAAK2B,QAAS;AAAA,IACf,IACDr+I,MACN;AAEA,QAAI2Z,MAAMmP,MAAM,GAAG;AAEjB,UAAI3e,eAAe2e,MAAM,GAAG;AAC1B,YAAIA,OAAOX,SAASx6B,MAAM;AAAA,MAC5B,OAAO;AACL,YAAIm7B,OAAO5B,SAASv5B,MAAM;AAAA,MAC5B;AAAA,IACF;AAEA,SAAK8yF,UAAW;AAAA,EAClB;AAEO,WAASzpD,mBAAkCrpC,OAA4B;AAC5E,SAAK2vJ,MAAM3vJ,MAAKi7B,EAAE;AAClB,QAAIj7B,MAAKg9B,SAAU,MAAKj2B,YAAS;AAEjC,SAAK4oJ,MAAM3vJ,MAAKi7B,GAAGI,cAAc;AACjC,QAAIr7B,MAAKw6B,MAAM;AACb,WAAKw1H,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKw6B,IAAI;AAAA,IACtB;AAAA,EACF;;;;;;;;;;;;;;;;;;;;ACtVA,MAAAinC,KAAAv5D,aAAA;AAGsB,QAAA;AAAA,IAFpB8W;AAAAA,IACAC;AAAAA,EAAwB,IAAAwiD;AAQnB,WAASp3B,iBAEdrqC,OACAm7B,QACA;AACA,UAAM62H,WACJhzI,2BAA2Bmc,MAAM,KAAKlc,yBAAyBkc,MAAM;AAEvE,QACE,CAAC62H,YACD,CAAC,KAAKvB,mCACJt1H,MACF,GACA;AACA,WAAK82H,UAAUjyJ,MAAKs7B,UAAU;AAAA,IAChC;AAEA,QAAIt7B,MAAK2Y,SAAS;AAEhB,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,QAAIhwJ,MAAKo9B,UAAU;AAEjB,WAAK9vB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAK1iJ,KAAK,OAAO;AAEjB,QAAItN,MAAKi7B,IAAI;AACX,WAAK+0H,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAAA,IACpB;AAEA,SAAK00H,MAAM3vJ,MAAKi6B,cAAc;AAE9B,QAAIj6B,MAAKi9B,YAAY;AACnB,WAAK+yH,MAAO;AACZ,WAAK1iJ,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi9B,UAAU;AAC1B,WAAK0yH,MAKC3vJ,MAAK6jG,mBACX;AAAA,IACF;AAEA,QAAI7jG,MAAKk9B,YAAY;AACnB,WAAK8yH,MAAO;AACZ,WAAK1iJ,KAAK,YAAY;AACtB,WAAK0iJ,MAAO;AACZ,WAAKK,UAAUrwJ,MAAKk9B,UAAU;AAAA,IAChC;AAEA,SAAK8yH,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAIO,WAASoQ,UAAyBjqC,OAAmB;AAC1D,SAAK+G,UAAK,GAAI;AACd,QAAI/G,MAAK65B,KAAK1tB,WAAW,GAAG;AAC1B,WAAKpF,UAAK,GAAI;AAAA,IAChB,OAAO;AACL,WAAK2pJ,QAAS;AAEd,YAAMwB,YAAYC,gCAAgC,MAAMnyJ,KAAI;AAC5DkyJ,mBAAAA,QAAAA,UAAY,EAAE;AAEd,YAAMj1F,OAAO,KAAKgzF,eAAgB;AAClC,WAAKgC,UAAUjyJ,MAAK65B,MAAM,MAAM,MAAMq4H,WAAW,IAAI;AACrDj1F,WAAM;AAEN,UAAI,CAAC,KAAKq0F,SAAQ,EAAmB,EAAG,MAAKZ,QAAS;AAEtD,WAAKO,WAAWjxJ,KAAI;AAAA,IACtB;AAAA,EACF;AAEA,WAASmyJ,gCAAgC7wJ,UAAkBtB,OAAmB;AAC5E,QAAI,CAACsB,SAAQwuJ,YAAY9vJ,MAAK0T,SAAS,QAAQ1T,MAAK4T,OAAO,MAAM;AAC/D,aAAO;AAAA,IACT;AAMA,UAAM66I,UAAUntJ,SAAQwuJ,SAASnB,WAAW3uJ,KAAI;AAChD,QAAI,CAACyuJ,QAAS,QAAO;AAErB,QAAI91H,IAAI;AAER,QAAIo2H,kBAAkB;AAEtB,QAAIqD,eAAe;AACnB,UAAMC,sBAAsBA,MAAM;AAChC,aACED,eAAepyJ,MAAK65B,KAAK1tB,UACzBnM,MAAK65B,KAAKu4H,YAAY,EAAE1+I,SAAS,MACjC;AACA0+I;AAAAA,MACF;AAAA,IACD;AACDC,wBAAqB;AAErB,WAAQnmJ,OAAc;AACpB,UAAIkmJ,gBAAgBlmJ,GAAG;AACrBkmJ,uBAAelmJ,IAAI;AACnBmmJ,4BAAqB;AAAA,MACvB;AAEA,YAAMz+I,MACJw+I,iBAAiBpyJ,MAAK65B,KAAK1tB,SACvBnM,MAAK4T,MACL5T,MAAK65B,KAAKu4H,YAAY,EAAE1+I;AAE9B,UAAIomF;AACJ,aACEnhE,IAAI81H,QAAQtiJ,UACZ7K,SAAQwuJ,SAASd,gBACdl1D,MAAMx4F,SAAQ+sJ,QAAQI,QAAQ91H,CAAC,CAAC,GACjC,GACF,KACAmhE,IAAIpmF,QAAQE,KACZ;AACAtS,QAAAA,SAAQyF,MAAM,KAAKsL,QAAW08I,iBAAiB;AAC/Cp2H;AAAAA,MACF;AAAA,IACD;AAAA,EACH;AAEO,WAAS8U,cAA6BztC,OAAuB;AAClE,SAAKiyJ,UAAUjyJ,MAAKs7B,UAAU;AAE9B,QAAI,CAACt7B,MAAKq+B,UAAU,CAAC,KAAK8xH,OAAOmC,gBAAgB;AAAA,UAAAC;AAG/C,YAAMt+I,WAAOs+I,gBAAGvyJ,MAAKP,IAAI6T,QAAGi/I,SAAAA,gBAAZA,cAAc3+I,QAAd2+I,OAAAA,SAAAA,cAAmB3zJ;AACnC,UAAIqV,QAAS,MAAKu+I,QAAQv+I,OAAO;AAAA,IACnC;AAEA,SAAKw+I,4BAA4BzyJ,KAAI;AAErC,QAAIA,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKP,GAAG;AACnB,WAAKsH,UAAK,EAAI;AAAA,IAChB,OAAO;AACL,WAAK2rJ,UAAU1yJ,KAAI;AACnB,WAAK2vJ,MAAM3vJ,MAAKP,GAAG;AAAA,IACrB;AAGA,QAAIO,MAAKu0B,UAAU;AACjB,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AACA,QAAI/G,MAAKg9B,UAAU;AACjB,WAAKj2B,UAAK,EAAI;AAAA,IAChB;AAEA,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B,QAAIr7B,MAAKH,OAAO;AACd,WAAKmwJ,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AACA,SAAKizF,UAAW;AAAA,EAClB;AAEO,WAASnlD,sBAEd3tC,OACA;AAAA,QAAA2yJ;AACA,SAAKV,UAAUjyJ,MAAKs7B,UAAU;AAI9B,UAAMrnB,WAAO0+I,iBAAG3yJ,MAAKP,IAAI6T,QAAGq/I,SAAAA,iBAAZA,eAAc/+I,QAAd++I,OAAAA,SAAAA,eAAmB/zJ;AACnC,QAAIqV,QAAS,MAAKu+I,QAAQv+I,OAAO;AAGjC,SAAKw+I,4BAA4BzyJ,KAAI;AAErC,SAAKsN,KAAK,YAAY,IAAI;AAC1B,SAAK0iJ,MAAO;AAEZ,QAAIhwJ,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKP,GAAG;AACnB,WAAKsH,UAAK,EAAI;AAAA,IAChB,OAAO;AAEL,WAAK2rJ,UAAU1yJ,KAAI;AACnB,WAAK2vJ,MAAM3vJ,MAAKP,GAAG;AAAA,IACrB;AAGA,QAAIO,MAAKu0B,UAAU;AACjB,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AACA,QAAI/G,MAAKg9B,UAAU;AACjB,WAAKj2B,UAAK,EAAI;AAAA,IAChB;AAEA,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B,QAAIr7B,MAAKH,OAAO;AACd,WAAKmwJ,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AACA,SAAKizF,UAAW;AAAA,EAClB;AAEO,WAASjlD,qBAEd7tC,OACA;AACA,SAAKiyJ,UAAUjyJ,MAAKs7B,UAAU;AAC9B,SAAKm3H,4BAA4BzyJ,KAAI;AACrC,SAAK2vJ,MAAM3vJ,MAAKP,GAAG;AAEnB,QAAIO,MAAKu0B,UAAU;AACjB,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AACA,QAAI/G,MAAKg9B,UAAU;AACjB,WAAKj2B,UAAK,EAAI;AAAA,IAChB;AACA,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B,QAAIr7B,MAAKH,OAAO;AACd,WAAKmwJ,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AACA,SAAKizF,UAAW;AAAA,EAClB;AAEO,WAAS/mD,YAA2B/rC,OAAqB;AAC9D,SAAK4yJ,iBAAiB5yJ,KAAI;AAC1B,SAAKgwJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAASkU,mBAAkC/tC,OAA4B;AAC5E,SAAK4yJ,iBAAiB5yJ,KAAI;AAC1B,SAAKgwJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAAS+4H,iBAEd5yJ,OACA;AACA,SAAKiyJ,UAAUjyJ,MAAKs7B,UAAU;AAE9B,QAAI,CAAC,KAAK60H,OAAOmC,gBAAgB;AAAA,UAAAO;AAG/B,YAAM5+I,WAAO4+I,iBAAG7yJ,MAAKP,IAAI6T,QAAGu/I,SAAAA,iBAAZA,eAAcj/I,QAAdi/I,OAAAA,SAAAA,eAAmBj0J;AACnC,UAAIqV,QAAS,MAAKu+I,QAAQv+I,OAAO;AAAA,IACnC;AAEA,SAAKw+I,4BAA4BzyJ,KAAI;AACrC,SAAK8yJ,YAAY9yJ,KAAI;AAAA,EACvB;AAEO,WAASmuC,YAA2BnuC,OAAqB;AAC9D,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,GAAI;AACd,QAAI/G,MAAK65B,KAAK1tB,WAAW,GAAG;AAC1B,WAAKpF,UAAK,GAAI;AAAA,IAChB,OAAO;AACL,WAAK2pJ,QAAS;AACd,WAAKgB,cAAc1xJ,MAAK65B,MAAM,IAAI;AAClC,WAAKo3H,WAAWjxJ,KAAI;AAAA,IACtB;AAAA,EACF;;;;;;;;;;;;;;;;;;;;ACvSA,MAAAyhE,KAAAv5D,aAAA;AACA,MAAAumB,SAAAvmB,YAAA;AAAgD,QAAA;AAAA,IADvCyU;AAAAA,EAAY,IAAA8kD;AAKd,WAASs5D,QAEd/6H,OACA+yJ,QACAC,YACA;AACA,SAAKrD,MAAM3vJ,MAAKi6B,cAAc;AAE9B,UAAMg5H,WAAWC,eAAe9jJ,KAAK,MAAM2jJ,QAAQC,UAAU;AAC7D,QAAIC,UAAU;AACZ,WAAKE,qBAAqBF,SAASxmJ,MAAMwmJ,SAAShnJ,GAAG;AAAA,IACvD;AAEA,SAAKlF,UAAK,EAAI;AACd,SAAKqsJ,YAAYpzJ,MAAK26B,QAAQ,GAAG;AAEjC,UAAM04H,mBAAmBrzJ,MAAKmR,SAAS;AACvC,SAAKw+I,MAAM3vJ,MAAK+6B,YAAYs4H,gBAAgB;AAE5C,SAAKC,oBAAoBD;AAAAA,EAC3B;AAEO,WAASD,YAEd3xH,YACAu7F,UACA;AACA,UAAM//D,OAAO,KAAKgzF,eAAgB;AAElC,UAAMpgC,gBAAgB,KAAKygC,yBAAyBtzB,QAAQ;AAE5D,UAAMu2B,cAAc9xH,WAAWt1B;AAC/B,aAASD,IAAI,GAAGA,IAAIqnJ,aAAarnJ,KAAK;AACpC,WAAKsnJ,OAAO/xH,WAAWv1B,CAAC,CAAC;AAEzB,UAAI2jH,iBAAiB3jH,IAAIqnJ,cAAc,GAAG;AACxC,aAAKxsJ,MAAM,KAAK,MAAMmF,CAAC;AACvB,aAAK8jJ,MAAO;AAAA,MACd;AAAA,IACF;AAEA,SAAKjpJ,MAAMi2H,QAAQ;AACnB//D,SAAM;AAAA,EACR;AAEO,WAASu2F,OAEdnyH,WACA;AACA,SAAK4wH,UAAU5wH,UAAU/F,UAAU;AACnC,SAAKq0H,MAAMtuH,SAAS;AACpB,QAEEA,UAAU9M,UACV;AACA,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AAEA,SAAK4oJ,MAEHtuH,UAAUhG,cACZ;AAAA,EACF;AAEO,WAASy3H,YAA2B9yJ,OAAoC;AAC7E,UAAMi8B,OAAOj8B,MAAKi8B;AAClB,UAAMx8B,OAAMO,MAAKP;AAEjB,QAAIw8B,SAAS,SAASA,SAAS,OAAO;AACpC,WAAK3uB,KAAK2uB,IAAI;AACd,WAAK+zH,MAAO;AAAA,IACd;AAEA,QAAIhwJ,MAAK66B,OAAO;AACd,WAAKvtB,KAAK,SAAS,IAAI;AACvB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,QACE/zH,SAAS,YAETA,SAAS,QACT;AACA,UAAIj8B,MAAK46B,WAAW;AAClB,aAAK7zB,UAAK,EAAI;AAAA,MAChB;AAAA,IACF;AAEA,QAAI/G,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AACd,WAAK4oJ,MAAMlwJ,IAAG;AACd,WAAKsH,UAAK,EAAI;AAAA,IAChB,OAAO;AACL,WAAK4oJ,MAAMlwJ,IAAG;AAAA,IAChB;AAEA,QAEEO,MAAKu0B,UACL;AAEA,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AAEA,SAAKg0H,QACH/6H,OACAA,MAAKy7B,YAAYz7B,MAAKP,IAAI0R,SAAS,kBAAkBkB,SAAYrS,MAAKP,KACtE4S,MACF;AAAA,EACF;AAEO,WAASohJ,WAEdzzJ,OAIA0zJ,uBACA;AACA,QAAI1zJ,MAAKk7B,WAAW;AAClB,UAAI,CAACl7B,MAAK+6B,YAAY;AACpB,aAAKh0B,UAAK,EAAI;AAAA,MAChB;AACA,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKk7B,WAAWw4H,qBAAqB;AAAA,IAClD;AAAA,EACF;AAEO,WAASC,cAEd3zJ,OACAm7B,QACA;AACA,QAAIn7B,MAAK66B,OAAO;AACd,WAAKvtB,KAAK,OAAO;AACjB,UAAI,CAAC,KAAK6iJ,OAAOmC,gBAAgB;AAI/B,aAAKsB,oBAAoB;AAAA,MAC3B;AACA,WAAK5D,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,UAAU;AACpB,QAAItN,MAAK46B,WAAW;AAClB,UAAI,CAAC,KAAKu1H,OAAOmC,gBAAgB;AAI/B,aAAKsB,oBAAoB;AAAA,MAC3B;AACA,WAAK7sJ,UAAK,EAAI;AAAA,IAChB;AAEA,SAAKipJ,MAAO;AACZ,QAAIhwJ,MAAKi7B,IAAI;AACX,WAAK00H,MAAM3vJ,MAAKi7B,EAAE;AAAA,IACpB;AAEA,SAAK8/F,QAAQ/6H,OAAMA,MAAKi7B,IAAIE,MAAM;AAClC,QAAIn7B,MAAKmR,SAAS,qBAAqB;AACrC,WAAKsiJ,WAAWzzJ,KAAI;AAAA,IACtB;AAAA,EACF;AAEO,WAASkmC,mBAEdlmC,OACAm7B,QACA;AACA,SAAKw4H,cAAc3zJ,OAAMm7B,MAAM;AAC/B,SAAK60H,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAIO,WAASkQ,wBAEd/pC,OACAm7B,QACA;AACA,QAAIn7B,MAAK66B,OAAO;AACd,WAAKvtB,KAAK,SAAS,IAAI;AACvB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,QAAI,KAAK6D,8BAA8B7zJ,KAAI,GAAG;AAC5C,WAAK+6H,QAAQ/6H,OAAMqS,QAAW8oB,MAAM;AAAA,IACtC,OAAO;AACL,WAAKw0H,MAAM3vJ,MAAK26B,OAAO,CAAC,GAAG,IAAI;AAAA,IACjC;AAEA,SAAK84H,WAAWzzJ,OAAM,IAAI;AAC1B,SAAKgwJ,MAAO;AAIZ,SAAK8D,mBAAoB;AACzB,SAAK/sJ,MAAM,IAAI;AAEf,SAAKipJ,MAAO;AAEZ,SAAKhE,gBAAgBC,OAAAA,aAAaG;AAClC,SAAKuD,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAIO,WAASg6H,8BAEd7zJ,OACS;AAAA,QAAA+zJ,uBAAAC;AACT,QAAIh0J,MAAK26B,OAAOxuB,WAAW,EAAG,QAAO;AAErC,QAAInM,MAAKi6B,kBAAkBj6B,MAAK+6B,cAAc/6B,MAAKk7B,WAAW;AAC5D,aAAO;AAAA,IACT;AAEA,UAAMk1F,aAAapwH,MAAK26B,OAAO,CAAC;AAChC,QACE,CAAChe,aAAayzG,UAAU,KACxBA,WAAW/0F,kBACX+0F,WAAW77F,aAAQw/H,wBAEnB3jC,WAAWp5D,oBAAe,QAA1B+8F,sBAA4B5nJ,WAAM6nJ,wBAClC5jC,WAAWl5D,qBAAgB,QAA3B88F,sBAA6B7nJ,QAC7B;AACA,aAAO;AAAA,IACT;AAEA,QAAI,KAAK2jJ,UAAU;AACjB,UAAI9vJ,MAAKsT,OAAO,KAAM,QAAO;AAC7B,UAAI,KAAKw8I,SAAShB,aAAa9uJ,OAAM,GAAG,MAAM,KAAM,QAAO;AAC3D,YAAMi0J,aAAa,KAAKnE,SAAShB,aAAa9uJ,OAAM,IAAI;AACxD,WAAIi0J,cAAU,OAAA,SAAVA,WAAY3gJ,QAAO,KAAM,QAAO;AACpC,aAAO2gJ,WAAW3gJ,IAAII,MAAM9U,SAASoB,MAAKsT,IAAII,MAAM9U;AAAAA,IACtD;AAEA,QAAI,KAAKuxJ,OAAO+D,YAAa,QAAO;AAEpC,WAAO;AAAA,EACT;AAEA,WAAShB,eAEPH,QACA53H,QACA;AACA,QAAIF,KAA4C83H;AAEhD,QAAI,CAAC93H,MAAME,QAAQ;AACjB,YAAM2wH,aAAa3wH,OAAOhqB;AAE1B,UAAI26I,eAAe,sBAAsB;AACvC7wH,aAAKE,OAAOF;AAAAA,MACb,WACC6wH,eAAe,0BACfA,eAAe,qBACf;AACA7wH,aAAKE,OAAO5B;AAAAA,MACb,WACCuyH,eAAe,oBACfA,eAAe,iBACf;AACA,YAAI,CAAC3wH,OAAOM,YAAYN,OAAO17B,IAAI0R,SAAS,iBAAiB;AAC3D8pB,eAAKE,OAAO17B;AAAAA,QACd;AAAA,MACD,WACCqsJ,eAAe,0BACfA,eAAe,yBACf;AACA7wH,aAAKE,OAAO17B;AAAAA,MACd;AAAA,IACF;AAEA,QAAI,CAACw7B,GAAI;AAET,QAAIg4H;AAEJ,QAAIh4H,GAAG9pB,SAAS,cAAc;AAAA,UAAAgjJ,SAAAC;AAC5BnB,iBAAW;AAAA,QACThnJ,MAAGkoJ,UAAEl5H,GAAG3nB,QAAG,OAAA,SAAN6gJ,QAAQzgJ;AAAAA,QACbjH,QAAM2nJ,WAAAn5H,GAAG3nB,QAAG,OAAA,SAAN8gJ,SAAQrxF,mBAAkB9nC,GAAGxuB;AAAAA,MACpC;AAAA,IACH,WAAWwuB,GAAG9pB,SAAS,eAAe;AAAA,UAAAkjJ;AACpCpB,iBAAW;AAAA,QACThnJ,MAAGooJ,WAAEp5H,GAAG3nB,QAAG,OAAA,SAAN+gJ,SAAQ3gJ;AAAAA,QACbjH,MAAM,MAAMwuB,GAAGA,GAAGxuB;AAAAA,MACnB;AAAA,IACH,WAAWwuB,GAAG9pB,SAAS,iBAAiB;AAAA,UAAAmjJ;AACtCrB,iBAAW;AAAA,QACThnJ,MAAGqoJ,WAAEr5H,GAAG3nB,QAAG,OAAA,SAANghJ,SAAQ5gJ;AAAAA,QACbjH,MAAMwuB,GAAGp7B;AAAAA,MACV;AAAA,IACH;AAEA,WAAOozJ;AAAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;AChTA,MAAAxxF,KAAAv5D,aAAA;AASA,MAAAumB,SAAAvmB,YAAA;AAAgD,QAAA;AAAA,IAR9C4W;AAAAA,IACAwH;AAAAA,IACAjG;AAAAA,IACAhB;AAAAA,IACAC;AAAAA,IACAmM;AAAAA,EAAW,IAAAg2C;AAKN,WAASj2B,gBAA+BxrC,OAAyB;AACtE,QAAIA,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe,UAAU;AAC9D,WAAK5wB,KAAKtN,MAAKk+B,UAAU;AACzB,WAAK8xH,MAAO;AAAA,IACd;AAEA,SAAKL,MAAM3vJ,MAAK07B,QAAQ;AAExB,QAAI17B,MAAK69B,SAAS79B,MAAK69B,MAAMpxB,SAASzM,MAAK07B,SAASjvB,MAAM;AACxD,WAAKujJ,MAAO;AACZ,WAAK1iJ,KAAK,IAAI;AACd,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK69B,KAAK;AAAA,IACvB;AAAA,EACF;AAEO,WAASuN,uBAEdprC,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAK69B,KAAK;AAAA,EACvB;AAEO,WAASma,uBAEdh4C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAK89B,QAAQ;AAAA,EAC1B;AAEO,WAAS+M,gBAA+B7qC,OAAyB;AACtE,QAAIA,MAAKw9B,eAAe,QAAQ;AAC9B,WAAKlwB,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAKL,MAAM3vJ,MAAK69B,KAAK;AAErB,QAAI79B,MAAK89B,YAAY99B,MAAK69B,MAAMpxB,SAASzM,MAAK89B,SAASrxB,MAAM;AAC3D,WAAKujJ,MAAO;AACZ,WAAK1iJ,KAAK,IAAI;AACd,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK89B,QAAQ;AAAA,IAC1B;AAAA,EACF;AAEO,WAASqP,yBAEdntC,OACA;AACA,SAAK+G,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAK1iJ,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK89B,QAAQ;AAAA,EAC1B;AAEA,MAAIy2H,eAAe;AAEZ,WAASC,iBAEdx0J,OACAy0J,kBACA;AACA,UAAM;AAAA,MAAE76I;AAAAA,IAAyB,IAAG,KAAKu2I;AACzC,UAAM;AAAA,MAAE7yH;AAAAA,MAAYC,YAAAA;AAAAA,IAAW,IAAIv9B;AAEnC,QAEEs9B,cACA,CAAC1jB,2BAG2B,CAAC26I,cAC7B;AACAA,qBAAe;AACfn+I,cAAQC,KAAK;AAAA;AAAA;AAAA;AAAA;AAAA,CAMhB;AAAA,IACC;AAEA,UAAMq+I,mBACJ96I,4BAA4B,YAC3B,CAACA,2BAA2B2jB;AAE/B,SAAKjwB,KAAKonJ,mBAAmB,WAAW,MAAM;AAC9C,SAAK1E,MAAO;AAEZ,QAEE,CAAC0E,oBACD96I,4BAA4B,QAC5B;AAEA,WAAKy2I,UAAU/yH,cAAcC,WAAU;AACvC;AAAA,IACF;AAEA,UAAMwxH,kBAAkB0F,mBAAmB,IAAI;AAE/C,SAAK1tJ,MAAM,KAAK,MAAMgoJ,eAAe;AACrC,SAAKiB,MAAO;AACZ,SAAKK,UAAU/yH,cAAcC,aAAY,KAAK+yH,yBAAyB,GAAG,CAAC;AAC3E,SAAKN,MAAO;AACZ,SAAKjpJ,MAAM,KAAK,MAAMgoJ,eAAe;AAAA,EACvC;AAEO,WAASxkH,qBAEdvqC,OACA;AAAA,QAAA20J,kBAAAnxB;AACA,SAAKl2H,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,QAAIhwJ,MAAKw9B,eAAe,QAAQ;AAC9B,WAAKlwB,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAK1iJ,KAAK,MAAM;AAChB,SAAK0iJ,MAAO;AACZ,SAAI2E,mBAAA30J,MAAKs9B,eAAU,QAAfq3H,iBAAiBxoJ,WAAMq3H,mBAAIxjI,MAAKu9B,uBAALimG,iBAAiBr3H,QAAQ;AACtD,WAAKwjJ,MAAM3vJ,MAAKiB,QAAQ,IAAI;AAC5B,WAAK+uJ,MAAO;AACZ,WAAKwE,iBAAiBx0J,OAAM,KAAK;AAAA,IACnC,OAAO;AACL,WAAK2vJ,MAAM3vJ,MAAKiB,MAAM;AAAA,IACxB;AAEA,SAAK6xF,UAAW;AAAA,EAClB;AAEA,WAAS8hE,iCACPtzJ,UACAtB,OACA;AACA,QACE8e,mBAAmB9e,MAAKy9B,WAAW,KACnCn8B,SAAQmvJ,mCACNzwJ,KACF,GACA;AACAsB,MAAAA,SAAQ2wJ,UAAUjyJ,MAAKy9B,YAAYnC,UAAU;AAAA,IAC/C;AAAA,EACF;AAEO,WAASqP,uBAEd3qC,OACA;AACA40J,qCAAiC,MAAM50J,KAAI;AAE3C,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,QAAIhwJ,MAAKy9B,aAAa;AACpB,YAAMihC,SAAS1+D,MAAKy9B;AACpB,WAAKkyH,MAAMjxF,MAAM;AACjB,UAAI,CAACjzC,YAAYizC,MAAM,EAAG,MAAKo0B,UAAW;AAAA,IAC5C,OAAO;AACL,UAAI9yF,MAAKw9B,eAAe,QAAQ;AAC9B,aAAKlwB,KAAK,MAAM;AAChB,aAAK0iJ,MAAO;AAAA,MACd;AAEA,YAAMtyH,aAAa19B,MAAK09B,WAAWtsB,MAAM,CAAC;AAG1C,UAAIyjJ,aAAa;AACjB,iBAAS;AACP,cAAMz1D,QAAQ1hE,WAAW,CAAC;AAC1B,YACEpX,yBAAyB84E,KAAK,KAC9B/+E,2BAA2B++E,KAAK,GAChC;AACAy1D,uBAAa;AACb,eAAKlF,MAAMjyH,WAAW6+B,OAAO;AAC7B,cAAI7+B,WAAWvxB,QAAQ;AACrB,iBAAKpF,UAAK,EAAI;AACd,iBAAKipJ,MAAO;AAAA,UACd;AAAA,QACF,OAAO;AACL;AAAA,QACF;AAAA,MACF;AAEA,UAAI8E,WAAW;AACf,UAAIp3H,WAAWvxB,UAAW,CAACuxB,WAAWvxB,UAAU,CAAC0oJ,YAAa;AAC5DC,mBAAW;AACX,aAAK/tJ,UAAK,GAAI;AACd,YAAI22B,WAAWvxB,QAAQ;AACrB,eAAK6jJ,MAAO;AACZ,eAAKK,UAAU3yH,YAAY,KAAK4yH,yBAAyB,GAAG,CAAC;AAC7D,eAAKN,MAAO;AAAA,QACd;AACA,aAAKjpJ,UAAK,GAAI;AAAA,MAChB;AAEA,UAAI/G,MAAKiB,QAAQ;AAAA,YAAA8zJ,mBAAAC;AACf,aAAKhF,MAAO;AACZ,aAAK1iJ,KAAK,MAAM;AAChB,aAAK0iJ,MAAO;AACZ,aAAI+E,oBAAA/0J,MAAKs9B,eAAU,QAAfy3H,kBAAiB5oJ,WAAM6oJ,oBAAIh1J,MAAKu9B,uBAALy3H,kBAAiB7oJ,QAAQ;AACtD,eAAKwjJ,MAAM3vJ,MAAKiB,QAAQ,IAAI;AAC5B,eAAK+uJ,MAAO;AACZ,eAAKwE,iBAAiBx0J,OAAM80J,QAAQ;AAAA,QACtC,OAAO;AACL,eAAKnF,MAAM3vJ,MAAKiB,MAAM;AAAA,QACxB;AAAA,MACF;AAEA,WAAK6xF,UAAW;AAAA,IAClB;AAAA,EACF;AAEO,WAASroD,yBAEdzqC,OACA;AACA40J,qCAAiC,MAAM50J,KAAI;AAE3C,SAAKsN,KAAK,QAAQ;AAClB,SAAKkkJ,0BAA2B;AAChC,SAAKxB,MAAO;AACZ,SAAK1iJ,KAAK,SAAS;AACnB,SAAK0iJ,MAAO;AACZ,SAAKhE,gBAAgBC,OAAAA,aAAaQ;AAClC,UAAM/tF,SAAS1+D,MAAKy9B;AACpB,SAAKkyH,MAAMjxF,MAAM;AACjB,QAAI,CAACjzC,YAAYizC,MAAM,EAAG,MAAKo0B,UAAW;AAAA,EAC5C;AAEO,WAAS5nD,kBAAiClrC,OAA2B;AAAA,QAAAi1J,mBAAAC;AAC1E,SAAK5nJ,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AAEZ,UAAMmF,aAAan1J,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe;AACrE,QAAIi3H,YAAY;AACd,WAAK3D,0BAA2B;AAChC,WAAKlkJ,KAAKtN,MAAKk+B,UAAU;AACzB,WAAK8xH,MAAO;AAAA,IACd,WAAWhwJ,MAAKK,QAAQ;AACtB,WAAKmxJ,0BAA2B;AAChC,WAAKlkJ,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AAAA,IACd,WAAWhwJ,MAAKi+B,OAAO;AACrB,WAAKuzH,0BAA2B;AAChC,WAAKlkJ,KAAKtN,MAAKi+B,KAAK;AACpB,WAAK+xH,MAAO;AAAA,IACd;AAEA,UAAMtyH,aAAa19B,MAAK09B,WAAWtsB,MAAM,CAAC;AAC1C,UAAMgxH,gBAAgB,CAAC,CAAC1kG,WAAWvxB;AAGnC,WAAOi2H,eAAe;AACpB,YAAMhjC,QAAQ1hE,WAAW,CAAC;AAC1B,UAAIre,yBAAyB+/E,KAAK,KAAK9/E,2BAA2B8/E,KAAK,GAAG;AACxE,aAAKuwD,MAAMjyH,WAAW6+B,OAAO;AAC7B,YAAI7+B,WAAWvxB,QAAQ;AACrB,eAAKpF,UAAK,EAAI;AACd,eAAKipJ,MAAO;AAAA,QACd;AAAA,MACF,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAEA,QAAI8E,WAAW;AACf,QAAIp3H,WAAWvxB,QAAQ;AACrB2oJ,iBAAW;AACX,WAAK/tJ,UAAK,GAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKK,UAAU3yH,YAAY,KAAK4yH,yBAAyB,GAAG,CAAC;AAC7D,WAAKN,MAAO;AACZ,WAAKjpJ,UAAK,GAAI;AAAA,IAChB,WAAWouJ,cAAc,CAAC/yB,eAAe;AACvC0yB,iBAAW;AACX,WAAK/tJ,UAAK,GAAI;AACd,WAAKA,UAAK,GAAI;AAAA,IAChB;AAEA,QAAIq7H,iBAAiB+yB,YAAY;AAC/B,WAAKnF,MAAO;AACZ,WAAK1iJ,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAIiF,oBAAAj1J,MAAKs9B,eAAU,QAAf23H,kBAAiB9oJ,WAAM+oJ,oBAAIl1J,MAAKu9B,uBAAL23H,kBAAiB/oJ,QAAQ;AACtD,WAAKwjJ,MAAM3vJ,MAAKiB,QAAQ,IAAI;AAC5B,WAAK+uJ,MAAO;AACZ,WAAKwE,iBAAiBx0J,OAAM80J,QAAQ;AAAA,IACtC,OAAO;AACL,WAAKnF,MAAM3vJ,MAAKiB,MAAM;AAAA,IACxB;AAEA,SAAK6xF,UAAW;AAAA,EAClB;AAEO,WAASp7C,gBAA+B13C,OAAyB;AACtE,SAAK2vJ,MAAM3vJ,MAAKP,GAAG;AACnB,SAAKsH,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,EACvB;AAEO,WAASyrC,yBAEdtrC,OACA;AACA,SAAK+G,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAK1iJ,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK69B,KAAK;AAAA,EACvB;AAEO,WAAS6N,iBAAgC1rC,OAA0B;AACxE,SAAKsN,KAAK,QAAQ;AAClB,QAAItN,MAAKi+B,OAAO;AACd,WAAKl3B,UAAK,EAAI;AACd,WAAKuG,KAAKtN,MAAKi+B,KAAK;AAAA,IACtB;AACA,SAAKl3B,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKiB,MAAM;AACtB,QAAIjB,MAAKb,WAAW,MAAM;AACxB,WAAK4H,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKb,OAAO;AAAA,IACzB;AACA,SAAK4H,UAAK,EAAI;AAAA,EAChB;;;;;;;;;ACxVA,QAAM,SAAS,CAAE;AACjB,QAAMoI,kBAAiB,OAAO;AAC9B,QAAM,SAAS,CAACnK,SAAQ,aAAa;AACpC,eAAWvF,QAAOuF,SAAQ;AACzB,UAAImK,gBAAe,KAAKnK,SAAQvF,IAAG,GAAG;AACrC,iBAASA,MAAKuF,QAAOvF,IAAG,CAAC;AAAA,MAC5B;AAAA,IACA;AAAA,EACC;AAED,QAAM,SAAS,CAAC,aAAawB,YAAW;AACvC,QAAI,CAACA,SAAQ;AACZ,aAAO;AAAA,IACT;AACC,WAAOA,SAAQ,CAACxB,MAAKI,WAAU;AAC9B,kBAAYJ,IAAG,IAAII;AAAA,IACrB,CAAE;AACD,WAAO;AAAA,EACP;AAED,QAAM,UAAU,CAACkE,QAAO,aAAa;AACpC,UAAM,SAASA,OAAM;AACrB,QAAIzE,SAAQ;AACZ,WAAO,EAAEA,SAAQ,QAAQ;AACxB,eAASyE,OAAMzE,MAAK,CAAC;AAAA,IACvB;AAAA,EACC;AAED,QAAM,gBAAgB,CAAC,QAAQ;AAC9B,WAAO,SAAS,SAAS,KAAK,MAAM,EAAE;AAAA,EACvC;AAEA,QAAM,cAAc,CAAC,MAAM81J,eAAc;AACxC,QAAIC,eAAc,KAAK,SAAS,EAAE;AAClC,QAAID,WAAW,QAAOC;AACtB,WAAOA,aAAY,YAAa;AAAA,EAChC;AAED,QAAM,WAAW,OAAO;AACxB,QAAM,UAAU,MAAM;AACtB,QAAM,WAAW,CAACx1J,WAAU;AAC3B,WAAO,OAAO,WAAW,cAAc,OAAO,SAASA,MAAK;AAAA,EAC5D;AACD,QAAM,WAAW,CAACA,WAAU;AAE3B,WAAO,SAAS,KAAKA,MAAK,KAAK;AAAA,EAC/B;AACD,QAAMmxH,YAAW,CAACnxH,WAAU;AAC3B,WAAO,OAAOA,UAAS,YACtB,SAAS,KAAKA,MAAK,KAAK;AAAA,EACzB;AACD,QAAM0W,YAAW,CAAC1W,WAAU;AAC3B,WAAO,OAAOA,UAAS,YACtB,SAAS,KAAKA,MAAK,KAAK;AAAA,EACzB;AACD,QAAM,WAAW,CAACA,WAAU;AAC1B,WAAO,OAAOA,UAAS;AAAA,EACxB;AACD,QAAM,aAAa,CAACA,WAAU;AAC7B,WAAO,OAAOA,UAAS;AAAA,EACvB;AACD,QAAM,QAAQ,CAACA,WAAU;AACxB,WAAO,SAAS,KAAKA,MAAK,KAAK;AAAA,EAC/B;AACD,QAAM,QAAQ,CAACA,WAAU;AACxB,WAAO,SAAS,KAAKA,MAAK,KAAK;AAAA,EAC/B;AAKD,QAAM,gBAAgB;AAAA,IACrB,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAM;AAAA;AAAA;AAAA,EAGN;AACD,QAAM,oBAAoB;AAE1B,QAAM,aAAa;AACnB,QAAM,kBAAkB;AAExB,QAAM,wBAAwB;AAC9B,QAAM,sBAAsB;AAE5B,QAAM,QAAQ,CAAC,UAAUV,aAAY;AACpC,UAAM,sBAAsB,MAAM;AACjC,kBAAY;AACZ,QAAEA,SAAQ;AACV,eAASA,SAAQ,OAAO,OAAOA,SAAQ,WAAW;AAAA,IAClD;AAED,UAAM,WAAW;AAAA,MAChB,oBAAoB;AAAA,MACpB,WAAW;AAAA,MACX,mBAAmB;AAAA,MACnB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,UAAU;AAAA,MACV,eAAe;AAAA,MACf,eAAe;AAAA,MACf,eAAe;AAAA,IACf;AACD,UAAM,OAAOA,YAAWA,SAAQ;AAChC,QAAI,MAAM;AACT,eAAS,SAAS;AAClB,eAAS,OAAO;AAAA,IAClB;AACC,IAAAA,WAAU,OAAO,UAAUA,QAAO;AAClC,QACCA,SAAQ,UAAU,YAClBA,SAAQ,UAAU,YAClBA,SAAQ,UAAU,YACjB;AACD,MAAAA,SAAQ,SAAS;AAAA,IACnB;AACC,UAAM,QAAQA,SAAQ,UAAU,WAC/B,MACCA,SAAQ,UAAU,aAClB,MACA;AAEF,UAAM,UAAUA,SAAQ;AACxB,UAAM,eAAeA,SAAQ;AAC7B,QAAI,SAASA,SAAQ,OAAO,OAAOA,SAAQ,WAAW;AACtD,QAAI,YAAY;AAChB,UAAM,UAAUA,SAAQ;AACxB,UAAM,UAAUA,SAAQ;AACxB,UAAM,UAAU,UAAU,KAAK;AAC/B,QAAI;AACJ,QAAI,UAAU;AACd,UAAM,gBAAgBA,SAAQ,WAAW;AACzC,UAAM,gBAAgBA,SAAQ,WAAW;AACzC,UAAM,gBAAgBA,SAAQ,WAAW;AACzC,UAAM,gBAAgBA,SAAQ,WAAW;AAEzC,QAAI,QAAQ,YAAY,WAAW,SAAS,MAAM,GAAG;AACpD,iBAAW,SAAS,OAAQ;AAAA,IAC9B;AAEC,QAAI,CAAC6xH,UAAS,QAAQ,GAAG;AACxB,UAAI,MAAM,QAAQ,GAAG;AACpB,YAAI,SAAS,QAAQ,GAAG;AACvB,iBAAO;AAAA,QACX;AACG,YAAI,CAAC,SAAS;AACb,UAAA7xH,SAAQ,cAAc;AACtB,UAAAA,SAAQ,cAAc;AAAA,QAC1B;AACG,eAAO,aAAa,MAAM,MAAM,KAAK,QAAQ,GAAGA,QAAO,IAAI;AAAA,MAC9D;AACE,UAAI,MAAM,QAAQ,GAAG;AACpB,YAAI,SAAS,QAAQ,GAAG;AACvB,iBAAO;AAAA,QACX;AACG,eAAO,aAAa,MAAM,MAAM,KAAK,QAAQ,GAAGA,QAAO,IAAI;AAAA,MAC9D;AACE,UAAI,SAAS,QAAQ,GAAG;AACvB,YAAI,SAAS,UAAU,GAAG;AACzB,iBAAO;AAAA,QACX;AACG,eAAO,iBAAiB,MAAM,MAAM,KAAK,QAAQ,GAAGA,QAAO,IAAI;AAAA,MAClE;AACE,UAAI,QAAQ,QAAQ,GAAG;AACtB,iBAAS,CAAE;AACX,QAAAA,SAAQ,OAAO;AACf,YAAI,SAAS;AACZ,UAAAA,SAAQ,cAAc;AACtB,UAAAA,SAAQ,cAAc;AAAA,QAC1B;AACG,YAAI,CAAC,SAAS;AACb,8BAAqB;AAAA,QACzB;AACG,gBAAQ,UAAU,CAACU,WAAU;AAC5B,oBAAU;AACV,cAAI,SAAS;AACZ,YAAAV,SAAQ,cAAc;AAAA,UAC3B;AACI,iBAAO;AAAA,aACL,WAAW,UAAU,KAAK,UAC3B,MAAMU,QAAOV,QAAO;AAAA,UACpB;AAAA,QACL,CAAI;AACD,YAAI,SAAS;AACZ,iBAAO;AAAA,QACX;AACG,YAAI,SAAS;AACZ,iBAAO,MAAM,OAAO,KAAK,IAAI,IAAI;AAAA,QACrC;AACG,eAAO,MAAM,UAAU,OAAO,KAAK,MAAM,OAAO,IAAI,WAClD,UAAU,KAAK,aAAa;AAAA,MAC9B,WAAUoX,UAAS,QAAQ,KAAK,SAAS,QAAQ,GAAG;AACpD,YAAI,MAAM;AAMT,iBAAO,KAAK,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC1C;AAEM,YAAIwiD;AACP,YAAI,eAAe;AAClB,UAAAA,UAAS,OAAO,QAAQ;AAAA,QACxB,WAAU,eAAe;AACzB,cAAIs8F,eAAc,SAAS,SAAS,EAAE;AACtC,cAAI,CAAC,cAAc;AAClB,YAAAA,eAAcA,aAAY,YAAa;AAAA,UAC5C;AACI,UAAAt8F,UAAS,OAAOs8F;AAAA,QAChB,WAAU,eAAe;AACzB,UAAAt8F,UAAS,OAAO,SAAS,SAAS,CAAC;AAAA,QACnC,WAAU,eAAe;AACzB,UAAAA,UAAS,OAAO,SAAS,SAAS,CAAC;AAAA,QACvC;AAEM,YAAI,SAAS,QAAQ,GAAG;AACtB,iBAAOA,UAAS;AAAA,QACxB;AACM,eAAOA;AAAA,MACb,WAAa,SAAS,QAAQ,GAAG;AAC9B,YAAI,MAAM;AAIT,iBAAO,KAAK,UAAU,OAAO,QAAQ,CAAC;AAAA,QAC1C;AACM,eAAO,WAAW;AAAA,MACxB,WAAe,CAAC,SAAS,QAAQ,GAAG;AACjC,YAAI,MAAM;AAIT,iBAAO,KAAK,UAAU,QAAQ,KAAK;AAAA,QACvC;AACG,eAAO,OAAO,QAAQ;AAAA,MACzB,OAAS;AACN,iBAAS,CAAE;AACX,QAAA55D,SAAQ,OAAO;AACf,4BAAqB;AACrB,eAAO,UAAU,CAACM,MAAKI,WAAU;AAChC,oBAAU;AACV,iBAAO;AAAA,aACL,UAAU,KAAK,UAChB,MAAMJ,MAAKN,QAAO,IAAI,OACrB,UAAU,KAAK,OAChB,MAAMU,QAAOV,QAAO;AAAA,UACpB;AAAA,QACL,CAAI;AACD,YAAI,SAAS;AACZ,iBAAO;AAAA,QACX;AACG,eAAO,MAAM,UAAU,OAAO,KAAK,MAAM,OAAO,IAAI,WAClD,UAAU,KAAK,aAAa;AAAA,MACjC;AAAA,IACA;AAEC,UAAM,QAAQA,SAAQ,mBAAmB,wBAAwB;AACjE,aAAS,SAAS,QAAQ,OAAO,CAAC,MAAM,MAAM,MAAM,WAAWG,QAAOS,YAAW;AAChF,UAAI,MAAM;AACT,YAAIZ,SAAQ,QAAS,QAAO;AAC5B,cAAM,QAAQ,KAAK,WAAW,CAAC;AAC/B,cAAM,SAAS,KAAK,WAAW,CAAC;AAChC,YAAIA,SAAQ,KAAK;AAEhB,gBAAM,aAAa,QAAQ,SAAU,OAAQ,SAAS,QAAS;AAC/D,gBAAMuxB,OAAM,YAAY,WAAW,YAAY;AAC/C,iBAAO,SAASA,OAAM;AAAA,QAC1B;AACG,eAAO,cAAc,YAAY,OAAO,YAAY,CAAC,IAAI,cAAc,YAAY,QAAQ,YAAY,CAAC;AAAA,MAC3G;AAEE,UAAI,MAAM;AACT,eAAO,cAAc,YAAY,KAAK,WAAW,CAAC,GAAG,YAAY,CAAC;AAAA,MACrE;AAEE,UACC,QAAQ,QACR,CAAC,QACD,CAAC,WAAW,KAAK3wB,QAAO,OAAOT,SAAQ,CAAC,CAAC,GACxC;AACD,eAAO;AAAA,MACV;AAEE,UAAI,WAAW;AACd,YAAI,aAAa,SAASH,SAAQ,kBAAkB;AACnD,iBAAO,OAAO;AAAA,QAClB;AACG,eAAO;AAAA,MACV;AAEE,UAAI,kBAAkB,KAAK,IAAI,GAAG;AAEjC,eAAO,cAAc,IAAI;AAAA,MAC5B;AAEE,UAAIA,SAAQ,WAAW,CAAC,gBAAgB,KAAK,IAAI,GAAG;AACnD,eAAO;AAAA,MACV;AAEE,YAAM,MAAM,YAAY,KAAK,WAAW,CAAC,GAAG,YAAY;AACxD,UAAI,QAAQ,IAAI,SAAS,GAAG;AAC3B,eAAO,cAAc,GAAG;AAAA,MAC3B;AAEE,aAAO,SAAS,OAAO,KAAK,MAAM,EAAE;AAAA,IACtC,CAAE;AAED,QAAI,SAAS,KAAK;AACjB,eAAS,OAAO,QAAQ,SAAS,MAAM;AAAA,IACzC;AACC,QAAIA,SAAQ,iBAAiB;AAE5B,eAAS,OACP,QAAQ,uBAAuB,QAAQ,EACvC,QAAQ,SAAS,OAAO,eAAe,UAAU;AAAA,IACrD;AACC,QAAIA,SAAQ,MAAM;AACjB,eAAS,QAAQ,SAAS;AAAA,IAC5B;AACC,WAAO;AAAA,EACP;AAED,QAAM,UAAU;AAEhB,YAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/UjB,MAAAsiE,KAAAv5D,aAAA;AAEA,MAAAotJ,SAAAptJ,aAAA;AAA0B,QAAA;AAAA,IAFjBuW;AAAAA,IAAqB9B;AAAAA,EAAY,IAAA8kD;AAI1C,MAAI8zF,mBAAwC;AAC5C,MAAIC,qBAA6B;AAC1B,WAASC,kBAAiCz1J,OAAoB;AACnE,QAAIA,UAASu1J,iBAAkB,QAAOC;AACtCD,uBAAmBv1J;AAEnB,UAAM;AAAA,MAAEyM;AAAAA,IAAK,IAAIzM;AACjB,UAAM+G,SAAQ,KAAK+oJ,SAASpsB,KAAK1jI,OAAM85F,SAAOA,IAAIj6F,UAAU4M,IAAI;AAChE,QAAI1F,QAAO;AACTyuJ,2BAAqB,KAAKE,cAActkJ,MAAMrK,OAAM2M,OAAO3M,OAAM6M,GAAG;AACpE,aAAO4hJ;AAAAA,IACT;AACA,WAAQA,qBAAqBx1J,MAAKyM;AAAAA,EACpC;AAEO,WAAS05B,WAA0BnmC,OAAoB;AAAA,QAAA21J;AAC5D,SAAKxC,uBAAqBwC,YAAA31J,MAAKsT,QAAG,OAAA,SAARqiJ,UAAU5yF,mBAAkB/iE,MAAKyM,IAAI;AAE/D,SAAKa,KAAK,KAAKwiJ,WAAW,KAAK2F,kBAAkBz1J,KAAI,IAAIA,MAAKyM,IAAI;AAAA,EACpE;AAEO,WAASmpJ,sBAAmC;AACjD,SAAK7uJ,UAAK,EAAI;AAAA,EAChB;AAEO,WAASghC,YAA2B/nC,OAAqB;AAC9D,SAAK+G,MAAM,KAAK;AAChB,SAAK4oJ,MAAM3vJ,MAAKm8B,QAAQ;AAAA,EAC1B;AAIO,WAASsL,iBAAgCznC,OAA0B;AACxE,UAAMs7D,QAAQt7D,MAAKg8B;AAEnB,SAAKj1B,UAAK,GAAI;AAEd,QAAIu0D,MAAMnvD,QAAQ;AAChB,YAAM8wD,OAAO,KAAKgzF,eAAgB;AAClC,WAAKD,MAAO;AACZ,WAAKK,UAAU/0F,OAAO,KAAKg1F,yBAAyB,GAAG,GAAG,MAAM,IAAI;AACpE,WAAKN,MAAO;AACZ/yF,WAAM;AAAA,IACR;AAEA,SAAKytF,iBAAiB,OAAO1qJ,MAAKsT,KAAK,EAAE;AAEzC,SAAKvM,UAAK,GAAI;AAAA,EAChB;AAIO,WAAS4gC,aAA4B3nC,OAAsB;AAChE,SAAKiyJ,UAAUjyJ,MAAKs7B,UAAU;AAC9B,SAAKw3H,YAAY9yJ,KAAI;AACrB,SAAKgwJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,EACtB;AAEO,WAASgO,eAA8B7nC,OAAwB;AACpE,SAAKiyJ,UAAUjyJ,MAAKs7B,UAAU;AAE9B,QAAIt7B,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKP,GAAG;AACnB,WAAKsH,UAAK,EAAI;AAAA,IAChB,OAAO;AAEL,UACE0X,oBAAoBze,MAAKH,KAAK,KAC9B8c,aAAa3c,MAAKP,GAAG,KAErBO,MAAKP,IAAIgN,SAASzM,MAAKH,MAAM05B,KAAK9sB,MAClC;AACA,aAAKkjJ,MAAM3vJ,MAAKH,KAAK;AACrB;AAAA,MACF;AAEA,WAAK8vJ,MAAM3vJ,MAAKP,GAAG;AAGnB,UACEO,MAAKk8B,aACLvf,aAAa3c,MAAKP,GAAG,KACrBkd,aAAa3c,MAAKH,KAAK,KACvBG,MAAKP,IAAIgN,SAASzM,MAAKH,MAAM4M,MAC7B;AACA;AAAA,MACF;AAAA,IACF;AAEA,SAAK1F,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,EACvB;AAEO,WAAS+jC,gBAA+B5jC,OAAyB;AACtE,UAAM61J,QAAQ71J,MAAKk5B;AACnB,UAAMxG,MAAMmjI,MAAM1pJ;AAElB,SAAKpF,UAAK,EAAI;AAEd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAElC,aAAS/jJ,IAAI,GAAGA,IAAI2pJ,MAAM1pJ,QAAQD,KAAK;AACrC,YAAMouH,OAAOu7B,MAAM3pJ,CAAC;AACpB,UAAIouH,MAAM;AACR,YAAIpuH,IAAI,EAAG,MAAK8jJ,MAAO;AACvB,aAAKL,MAAMr1B,IAAI;AACf,YAAIpuH,IAAIwmB,MAAM,KAAK,KAAK49H,yBAAyB,GAAG,GAAG;AACrD,eAAKvpJ,MAAM,KAAK,OAAOmF,CAAC;AAAA,QAC1B;AAAA,MACF,OAAO;AAML,aAAKnF,MAAM,KAAK,OAAOmF,CAAC;AAAA,MAC1B;AAAA,IACF;AAEA+wD,SAAM;AAEN,SAAKl2D,UAAK,EAAI;AAAA,EAChB;AAIO,WAASmxC,iBAAgCl4C,OAA0B;AACxE,UAAMs7D,QAAQt7D,MAAKg8B;AAEnB,QAAI4gG;AACJ,QAAII;AAIG;AACL,UAAI,KAAKmzB,OAAO2F,6BAA6B,OAAO;AAClDl5B,qBAAa;AACbI,mBAAW;AAAA,MACb,WACE,KAAKmzB,OAAO2F,6BAA6B,UACzC,KAAK3F,OAAO2F,4BAA4B,MACxC;AACA,cAAM,IAAI3/I,MACR,4EAA4EsgB,KAAKtyB,UAC/E,KAAKgsJ,OAAO2F,wBACd,CAAC,aACH;AAAA,MACF,OAAO;AACLl5B,qBAAa;AACbI,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,SAAKj2H,MAAM61H,UAAU;AAErB,QAAIthE,MAAMnvD,QAAQ;AAChB,WAAK6jJ,MAAO;AACZ,WAAKK,UAAU/0F,OAAO,KAAKg1F,yBAAyBtzB,QAAQ,GAAG,MAAM,IAAI;AACzE,WAAKgzB,MAAO;AAAA,IACd;AACA,SAAKjpJ,MAAMi2H,QAAQ;AAAA,EACrB;AAEO,WAAS5kF,gBAA+Bp4C,OAAyB;AACtE,UAAM61J,QAAQ71J,MAAKk5B;AACnB,UAAMxG,MAAMmjI,MAAM1pJ;AAElB,QAAIywH;AACJ,QAAII;AAIG;AACL,UAAI,KAAKmzB,OAAO2F,6BAA6B,OAAO;AAClDl5B,qBAAa;AACbI,mBAAW;AAAA,MACZ,WAAU,KAAKmzB,OAAO2F,6BAA6B,QAAQ;AAC1Dl5B,qBAAa;AACbI,mBAAW;AAAA,MACb,OAAO;AACL,cAAM,IAAI7mH,MACR,GAAG,KAAKg6I,OAAO2F,wBAAwB,4CACzC;AAAA,MACF;AAAA,IACF;AAEA,SAAK/uJ,MAAM61H,UAAU;AAErB,aAAS1wH,IAAI,GAAGA,IAAI2pJ,MAAM1pJ,QAAQD,KAAK;AACrC,YAAMouH,OAAOu7B,MAAM3pJ,CAAC;AACpB,UAAIouH,MAAM;AACR,YAAIpuH,IAAI,EAAG,MAAK8jJ,MAAO;AACvB,aAAKL,MAAMr1B,IAAI;AACf,YAAIpuH,IAAIwmB,MAAM,KAAK,KAAK49H,yBAAyBtzB,QAAQ,GAAG;AAC1D,eAAKj2H,MAAM,KAAK,OAAOmF,CAAC;AAAA,QAC1B;AAAA,MACF;AAAA,IACF;AAEA,SAAKnF,MAAMi2H,QAAQ;AAAA,EACrB;AAEO,WAASh2F,cAA6BhnC,OAAuB;AAClE,SAAKsN,KAAK,IAAItN,MAAKs5B,OAAO,IAAIt5B,MAAK47B,KAAK,EAAE;AAAA,EAC5C;AAEO,WAASkL,eAA8B9mC,OAAwB;AACpE,SAAKsN,KAAKtN,MAAKH,QAAQ,SAAS,OAAO;AAAA,EACzC;AAEO,WAASk2J,cAA2B;AACzC,SAAKzoJ,KAAK,MAAM;AAAA,EAClB;AAEO,WAASq5B,eAA8B3mC,OAAwB;AACpE,UAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AACpC,UAAMmH,OAAO,KAAKgpJ,OAAO8F;AACzB,UAAMp2J,SAAQG,MAAKH;AACnB,UAAMkS,MAAMlS,SAAQ;AACpB,QAAIsH,KAAK+uJ,SAAS;AAChB,WAAK11J,OAAO21J,OAAMt2J,QAAOsH,IAAI,GAAGtH,MAAK;AAAA,IACvC,WAAW8+B,OAAO,MAAM;AACtB,WAAKn+B,OAAOuR,KAAKlS,MAAK;AAAA,IACxB,WAAW,KAAKswJ,OAAOC,UAAU;AAC/B,WAAK5vJ,OAAOm+B,IAAIxyB,SAAS4F,IAAI5F,SAASwyB,MAAM5sB,KAAKlS,MAAK;AAAA,IACxD,OAAO;AACL,WAAKW,OAAOm+B,KAAK9+B,MAAK;AAAA,IACxB;AAAA,EACF;AAEO,WAAS4mC,cAA6BzmC,OAAuB;AAClE,UAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AACpC,QAAI,CAAC,KAAKmwJ,OAAOC,YAAYzxH,QAAQtsB,QAAW;AAC9C,WAAKtL,MAAM43B,GAAG;AACd;AAAA,IACF;AAEA,UAAMtL,MAAM8iI,OAAMn2J,MAAKH,OAAO,KAAKswJ,OAAO8F,WAAW;AAErD,SAAKlvJ,MAAMssB,GAAG;AAAA,EAChB;AAEO,WAAS4Z,cAA6BjtC,OAAuB;AAClE,UAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AACpC,QAAI,CAAC,KAAKmwJ,OAAOC,YAAYzxH,QAAQtsB,QAAW;AAC9C,WAAK/E,KAAKqxB,GAAG;AACb;AAAA,IACF;AACA,SAAKrxB,KAAKtN,MAAKH,QAAQ,GAAG;AAAA,EAC5B;AAGA,QAAMu2J,qBAAqB,oBAAIlpJ,IAAI,CAAC,MAAM,MAAM,KAAK,KAAK,GAAG,CAAC;AACvD,WAASmpJ,iBAA8B;AAC5C,UAAM;AAAA,MAAEppE;AAAAA,IAAY,IAAG,KAAKkjE;AAE5B,QAAIiG,mBAAmB3oJ,IAAIw/E,UAAU,GAAG;AACtC,WAAKlmF,MAAMkmF,UAAU;AAAA,IACvB,OAAO;AACL,YAAMqpE,sBAAsB7/H,KAAKtyB,UAAU8oF,UAAU;AACrD,YAAMspE,cAAc/gJ,MAAM2/C,KAAKihG,oBAAoBxmJ,OAAK6mB,KAAKtyB,UAAUyL,CAAC,CAAC;AACzE,YAAM,IAAIuG,MACR,oDACKogJ,YAAYvkJ,KAAK,IAAI,CAAC,KAAKskJ,mBAAmB,qBACrD;AAAA,IACF;AAAA,EACF;AAGO,WAAS39G,wBAEd34C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAK05B,UAAU;AAAA,EAC5B;AAEO,WAASmf,qBAEd74C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKs3B,MAAM;AAAA,EACxB;AAEO,WAASk/H,gCAA6C;AAC3D,SAAKzvJ,UAAK,EAAI;AAAA,EAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpSA,QAAA06D,KAAAv5D,aAAA;AAEA,QAAAuuJ,WAAAvuJ,eAAA;AACA,QAAAumB,SAAAvmB,YAAA;AAqdA,QAAAwuJ,UAAAxuJ,eAAA;AAGoB,UAAA;AAAA,MA3dX0Z;AAAAA,MAA4B6J;AAAAA,IAAW,IAAAg2C;AAKzC,aAASk1F,oBAAiC;AAC/C,WAAKrpJ,KAAK,KAAK;AAAA,IACjB;AAEO,aAASghC,oBAEdtuC,OACA;AACA,WAAK2vJ,MAAM3vJ,MAAKw1B,aAAa,IAAI;AACjC,WAAKzuB,UAAK,EAAI;AACd,WAAKA,UAAK,EAAI;AAAA,IAChB;AAEO,aAAS6vJ,wBAAqC;AACnD,WAAKtpJ,KAAK,SAAS;AAAA,IACrB;AAEO,aAASmhC,6BAEdzuC,OACA;AACA,WAAKsN,KAAKtN,MAAKH,QAAQ,SAAS,OAAO;AAAA,IACzC;AAEO,aAASg3J,4BAAyC;AACvD,WAAKvpJ,KAAK,MAAM;AAAA,IAClB;AAEO,aAASyhC,aAEd/uC,OACAm7B,QACA;AACA,UAAI,CAACvZ,2BAA2BuZ,MAAM,GAAG;AACvC,aAAK7tB,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAK1iJ,KAAK,OAAO;AACjB,WAAK0iJ,MAAO;AACZ,WAAK8G,cAAc92J,KAAI;AAAA,IACzB;AAEO,aAASivC,gBAEdjvC,OACAm7B,QACA;AACA,UAAI,CAACvZ,2BAA2BuZ,MAAM,GAAG;AACvC,aAAK7tB,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAK1iJ,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAElB,WAAK00H,MAAM3vJ,MAAKi7B,GAAGI,eAAeA,cAAc;AAEhD,UAAIr7B,MAAKk7B,WAAW;AAClB,aAAK80H,MAAO;AACZ,aAAKL,MAAM3vJ,MAAKk7B,SAAS;AAAA,MAC3B;AAEA,WAAK43D,UAAW;AAAA,IAClB;AAEO,aAASikE,oBAAiC;AAC/C,WAAKhwJ,UAAK,EAAI;AACd,WAAKuG,KAAK,QAAQ;AAAA,IACpB;AAEO,aAAS6iC,kBAAiCnwC,OAA2B;AAC1E,WAAK+G,UAAK,EAAI;AACd,WAAKuG,KAAK,QAAQ;AAClB,WAAKvG,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKH,KAAK;AACrB,WAAKkH,UAAK,EAAI;AAAA,IAChB;AAEO,aAASooC,iBAAgCnvC,OAA0B;AACxE,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAKj/G,qBAAqB/wC,KAAI;AAAA,IAChC;AAEO,aAASqvC,cAA6BrvC,OAAuB;AAClE,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAK1iJ,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK+0H,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,IACtB;AAEO,aAAS0V,qBAEdvvC,OACA;AACA,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAK1iJ,KAAK,QAAQ;AAClB,WAAKvG,UAAK,EAAI;AACd,WAAKuG,KAAK,SAAS;AACnB,WAAKqiJ,MAAM3vJ,MAAKq7B,cAAc;AAAA,IAChC;AAEO,aAASoU,iBAAgCzvC,OAA0B;AACxE,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAK38G,UAAUrzC,KAAI;AAAA,IACrB;AAEO,aAAS2vC,kBAEd3vC,OACAm7B,QACA;AACA,UAAI,CAACvZ,2BAA2BuZ,MAAM,GAAG;AACvC,aAAK7tB,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAKx9G,WAAWxyC,KAAI;AAAA,IACtB;AAEO,aAAS6vC,gBAEd7vC,OACAm7B,QACA;AACA,UAAI,CAACvZ,2BAA2BuZ,MAAM,GAAG;AACvC,aAAK7tB,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAK1iJ,KAAK,KAAK;AACf,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK00H,MAAM3vJ,MAAKi7B,GAAGI,cAAc;AACjC,WAAKy3D,UAAW;AAAA,IAClB;AAEO,aAAS/iD,yBAEd/vC,OACA;AACA,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAK1iJ,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AACZ,UAAIhwJ,MAAK2O,SAAS;AAChB,aAAKrB,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AAAA,MACd;AAEAgH,4BAAsB5nJ,KAAK,MAAMpP,KAAI;AAAA,IACvC;AAEO,aAASiwC,4BAEdjwC,OACA;AACA,WAAKsN,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZzlH,eAAAA,qBAAqBn7B,KAAK,MAAMpP,KAAI;AAAA,IACtC;AAEO,aAASm0C,gBAA+Bn0C,OAAyB;AACtE,YAAM;AAAA,QAAEi7B;AAAAA,QAAIpB;AAAAA,MAAK,IAAI75B;AACrB,WAAKsN,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM10H,EAAE;AACb,WAAK00H,MAAM91H,IAAI;AAAA,IACjB;AAEA,aAASo9H,iBACPj/I,UACAvL,MACAyqJ,iBACA;AACA,UAAIA,iBAAiB;AACnBl/I,QAAAA,SAAQg4I,MAAO;AACfh4I,QAAAA,SAAQ1K,KAAK,IAAI;AACjB0K,QAAAA,SAAQg4I,MAAO;AACfh4I,QAAAA,SAAQ1K,KAAKb,IAAI;AAAA,MACnB;AACAuL,MAAAA,SAAQg4I,MAAO;AAAA,IACjB;AAEA,aAASmH,SAASn/I,UAAkBhY,OAAkB;AACpD,YAAM;AAAA,QAAEmgC;AAAAA,MAAQ,IAAIngC;AACpBgY,MAAAA,SAAQjR,MAAM,GAAG;AACjBiR,MAAAA,SAAQ+4I,OAAQ;AAChB/4I,MAAAA,SAAQ04I,QAAS;AACjB,iBAAW/hI,UAAUwR,SAAS;AAC5BnoB,QAAAA,SAAQ23I,MAAMhhI,MAAM;AACpB3W,QAAAA,SAAQ04I,QAAS;AAAA,MACnB;AACA,UAAI1wJ,MAAKogC,mBAAmB;AAC1BpoB,QAAAA,SAAQjR,MAAM,KAAK;AACnBiR,QAAAA,SAAQ04I,QAAS;AAAA,MACnB;AACA14I,MAAAA,SAAQg5I,OAAQ;AAChBh5I,MAAAA,SAAQjR,MAAM,GAAG;AAAA,IACnB;AAEO,aAASstC,gBAA+Br0C,OAAyB;AACtE,YAAM;AAAA,QAAEkgC;AAAAA,MAAa,IAAIlgC;AACzBi3J,uBAAiB,MAAM,WAAW/2H,YAAY;AAC9Ci3H,eAAS,MAAMn3J,KAAI;AAAA,IACrB;AAEO,aAASu0C,eAA8Bv0C,OAAwB;AACpE,YAAM;AAAA,QAAEkgC;AAAAA,MAAa,IAAIlgC;AACzBi3J,uBAAiB,MAAM,UAAU/2H,YAAY;AAC7Ci3H,eAAS,MAAMn3J,KAAI;AAAA,IACrB;AAEO,aAASy0C,eAA8Bz0C,OAAwB;AACpE,YAAM;AAAA,QAAEkgC;AAAAA,MAAa,IAAIlgC;AACzBi3J,uBAAiB,MAAM,UAAU/2H,YAAY;AAC7Ci3H,eAAS,MAAMn3J,KAAI;AAAA,IACrB;AAEO,aAAS20C,eAA8B30C,OAAwB;AACpEi3J,uBAAiB,MAAM,UAAU,IAAI;AACrCE,eAAS,MAAMn3J,KAAI;AAAA,IACrB;AAEO,aAASm1C,oBAEdn1C,OACA;AACA,YAAM;AAAA,QAAEi7B;AAAAA,MAAG,IAAIj7B;AACf,WAAK2vJ,MAAM10H,EAAE;AACb,WAAKl0B,UAAK,EAAI;AAAA,IAChB;AAEA,aAASqwJ,sBACPp/I,UACAhY,OACA;AACAgY,MAAAA,SAAQ23I,MAAM3vJ,MAAKi7B,EAAE;AACrBjjB,MAAAA,SAAQg4I,MAAO;AACfh4I,MAAAA,SAAQjR,MAAM,GAAG;AACjBiR,MAAAA,SAAQg4I,MAAO;AACfh4I,MAAAA,SAAQ23I,MAAM3vJ,MAAKw6B,IAAI;AACvBxiB,MAAAA,SAAQjR,MAAM,GAAG;AAAA,IACnB;AAEO,aAAS8tC,kBAAiC70C,OAA2B;AAC1Eo3J,4BAAsB,MAAMp3J,KAAI;AAAA,IAClC;AAEO,aAAS+0C,iBAAgC/0C,OAA0B;AACxEo3J,4BAAsB,MAAMp3J,KAAI;AAAA,IAClC;AAEO,aAASi1C,iBAAgCj1C,OAA0B;AACxEo3J,4BAAsB,MAAMp3J,KAAI;AAAA,IAClC;AAEA,aAASg3J,sBAEPh3J,OACA;AACA,UAAIA,MAAKy9B,aAAa;AACpB,cAAMihC,SAAS1+D,MAAKy9B;AACpB,aAAKkyH,MAAMjxF,MAAM;AACjB,YAAI,CAACjzC,YAAYizC,MAAM,EAAG,MAAKo0B,UAAW;AAAA,MAC5C,OAAO;AACL,aAAK/rF,UAAK,GAAI;AACd,YAAI/G,MAAK09B,WAAWvxB,QAAQ;AAC1B,eAAK6jJ,MAAO;AACZ,eAAKK,UAAUrwJ,MAAK09B,UAAU;AAC9B,eAAKsyH,MAAO;AAAA,QACd;AACA,aAAKjpJ,UAAK,GAAI;AAEd,YAAI/G,MAAKiB,QAAQ;AACf,eAAK+uJ,MAAO;AACZ,eAAK1iJ,KAAK,MAAM;AAChB,eAAK0iJ,MAAO;AACZ,eAAKL,MAAM3vJ,MAAKiB,MAAM;AAAA,QACxB;AAEA,aAAK6xF,UAAW;AAAA,MAClB;AAAA,IACF;AAEO,aAASukE,uBAAoC;AAClD,WAAKtwJ,UAAK,EAAI;AAAA,IAChB;AAEO,aAASupC,uBAEdtwC,OACAm7B,QACA;AACA,WAAKw0H,MAAM3vJ,MAAKi6B,cAAc;AAC9B,WAAKlzB,UAAK,EAAI;AAEd,UAAI/G,MAAKy/B,MAAM;AACb,aAAKnyB,KAAK,MAAM;AAChB,aAAKvG,UAAK,EAAI;AACd,aAAKipJ,MAAO;AACZ,aAAKL,MAAM3vJ,MAAKy/B,KAAKpE,cAAc;AACnC,YAAIr7B,MAAK26B,OAAOxuB,UAAUnM,MAAKqH,MAAM;AACnC,eAAKN,UAAK,EAAI;AACd,eAAKipJ,MAAO;AAAA,QACd;AAAA,MACF;AAEA,WAAKK,UAAUrwJ,MAAK26B,MAAM;AAE1B,UAAI36B,MAAKqH,MAAM;AACb,YAAIrH,MAAK26B,OAAOxuB,QAAQ;AACtB,eAAKpF,UAAK,EAAI;AACd,eAAKipJ,MAAO;AAAA,QACd;AACA,aAAKjpJ,MAAM,KAAK;AAChB,aAAK4oJ,MAAM3vJ,MAAKqH,IAAI;AAAA,MACtB;AAEA,WAAKN,UAAK,EAAI;AAId,YAAMoK,OAAOgqB,UAAAA,OAAAA,SAAAA,OAAQhqB;AACrB,UACEA,QAAQ,SACPA,SAAS,4BACRA,SAAS,4BACTA,SAAS,qBACRA,SAAS,wBAAwBgqB,OAAO4E,SAC3C;AACA,aAAKh5B,UAAK,EAAI;AAAA,MAChB,OAAO;AACL,aAAKipJ,MAAO;AACZ,aAAKjpJ,MAAM,IAAI;AAAA,MACjB;AAEA,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK+6B,UAAU;AAAA,IAC5B;AAEO,aAASyV,kBAAiCxwC,OAA2B;AAC1E,WAAK2vJ,MAAM3vJ,MAAKyM,IAAI;AACpB,UAAIzM,MAAKu0B,SAAU,MAAKxtB,YAAS;AACjC,UAAI/G,MAAKyM,MAAM;AACb,aAAK1F,UAAK,EAAI;AACd,aAAKipJ,MAAO;AAAA,MACd;AACA,WAAKL,MAAM3vJ,MAAKq7B,cAAc;AAAA,IAChC;AAEO,aAASwV,iBAAgC7wC,OAA0B;AACxE,WAAK2vJ,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK00H,MAAM3vJ,MAAKi6B,gBAAgB,IAAI;AAAA,IACtC;AAOO,aAAS68H,cAEd92J,OACA;AAAA,UAAAs3J;AACA,WAAK3H,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK00H,MAAM3vJ,MAAKi6B,cAAc;AAC9B,WAAAq9H,gBAAIt3J,MAAKs/B,YAALg4H,QAAAA,cAAcnrJ,QAAQ;AACxB,aAAK6jJ,MAAO;AACZ,aAAK1iJ,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AACZ,aAAKK,UAAUrwJ,MAAKs/B,OAAO;AAAA,MAC7B;AACA,UAAIt/B,MAAKmR,SAAS,gBAAgB;AAAA,YAAAomJ,cAAAC;AAChC,aAAAD,eAAIv3J,MAAKm9B,WAALo6H,QAAAA,aAAaprJ,QAAQ;AACvB,eAAK6jJ,MAAO;AACZ,eAAK1iJ,KAAK,QAAQ;AAClB,eAAK0iJ,MAAO;AACZ,eAAKK,UAAUrwJ,MAAKm9B,MAAM;AAAA,QAC5B;AACA,aAAAq6H,mBAAIx3J,MAAKk9B,eAALs6H,QAAAA,iBAAiBrrJ,QAAQ;AAC3B,eAAK6jJ,MAAO;AACZ,eAAK1iJ,KAAK,YAAY;AACtB,eAAK0iJ,MAAO;AACZ,eAAKK,UAAUrwJ,MAAKk9B,UAAU;AAAA,QAChC;AAAA,MACF;AACA,WAAK8yH,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,IACtB;AAEO,aAAS64H,UAEd1yJ,OAOA;AAAA,UAAAy3J;AACA,YAAMx7H,QAAIw7H,iBAAGz3J,MAAKm/B,aAAQ,OAAA,SAAbs4H,eAAex7H;AAC5B,UAAIA,QAAQ,MAAM;AAChB,YAAIA,SAAS,QAAQ;AACnB,eAAKl1B,UAAK,EAAI;AAAA,QAChB,WAAWk1B,SAAS,SAAS;AAC3B,eAAKl1B,UAAK,EAAI;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAEO,aAASgqC,qBAEd/wC,OACA;AACA,WAAKsN,KAAK,WAAW;AACrB,WAAK0iJ,MAAO;AACZ,WAAK8G,cAAc92J,KAAI;AAAA,IACzB;AAEA,aAAS03J,aAA4B3I,iBAAyB;AAC5D,WAAKiB,MAAO;AACZ,WAAKjpJ,MAAM,KAAK,OAAOgoJ,eAAe;AACtC,WAAKiB,MAAO;AAAA,IACd;AAEO,aAAS/+G,wBAEdjxC,OACA;AAAA,UAAA23J;AACA,WAAKrqJ,KAAK,WAAW;AACrB,WAAAqqJ,iBAAI33J,MAAKs/B,YAALq4H,QAAAA,eAAcxrJ,QAAQ;AACxB,aAAK6jJ,MAAO;AACZ,aAAK1iJ,KAAK,SAAS;AACnB,aAAK0iJ,MAAO;AACZ,aAAKK,UAAUrwJ,MAAKs/B,OAAO;AAAA,MAC7B;AACA,WAAK0wH,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK65B,IAAI;AAAA,IACtB;AAEO,aAASsX,2BAEdnxC,OACA;AACA,WAAKiyJ,UAAUjyJ,MAAKhB,OAAOqT,QAAWA,QAAWqlJ,YAAY;AAAA,IAC/D;AAEO,aAASE,sBAAmC;AACjD,WAAKtqJ,KAAK,OAAO;AAAA,IACnB;AAEO,aAASuqJ,sBAAmC;AACjD,WAAKvqJ,KAAK,OAAO;AAAA,IACnB;AAEO,aAASikC,uBAEdvxC,OACA;AACA,WAAK+G,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAAA,IAChC;AAOO,aAASy8H,uBAAoC;AAClD,WAAKxqJ,KAAK,QAAQ;AAAA,IACpB;AAEO,aAASyqJ,uBAAoC;AAClD,WAAKzqJ,KAAK,QAAQ;AAAA,IACpB;AAEO,aAAS0qJ,qBAAkC;AAChD,WAAK1qJ,KAAK,MAAM;AAAA,IAClB;AAEO,aAAS2lC,oBAEdjzC,OACA;AACA,WAAK+G,UAAK,EAAI;AACd,WAAKspJ,UAAUrwJ,MAAKhB,KAAK;AACzB,WAAK+H,UAAK,EAAI;AAAA,IAChB;AAEO,aAASosC,qBAEdnzC,OACA;AACA,WAAKsN,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKm8B,QAAQ;AAAA,IAC1B;AAEO,aAASkX,UAEdrzC,OACA;AACA,WAAKsN,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK00H,MAAM3vJ,MAAKi6B,cAAc;AAC9B,WAAK+1H,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKw5B,KAAK;AACrB,WAAKs5D,UAAW;AAAA,IAClB;AAEO,aAASx/C,eAEdtzC,OACAm7B,QACA;AACA,WAAKp0B,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,UAAI70H,OAAOhqB,SAAS,2BAA2B;AAC7C,aAAK66I,gBAAgBC,OAAAA,aAAaC;AAAAA,MACpC,WAEElsJ,MAAKu0B,UACL;AACA,aAAKxtB,UAAK,EAAI;AAAA,MAChB;AACA,WAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAAA,IAChC;AAEO,aAASwY,2BAEd7zC,OACM;AACN,WAAK+G,UAAK,EAAI;AACd,WAAKspJ,UAAUrwJ,MAAK26B,MAAM;AAC1B,WAAK5zB,UAAK,EAAI;AAAA,IAChB;AAIO,aAAS0sC,cAA6BzzC,OAAuB;AAClE,WAAK0yJ,UAAU1yJ,KAAI;AAEnB,WAAKsN,KAAKtN,MAAKyM,IAAI;AAEnB,UAAIzM,MAAKigC,OAAO;AACd,aAAK0vH,MAAM3vJ,MAAKigC,KAAK;AAAA,MACvB;AAEA,UAAIjgC,MAAK2O,SAAS;AAChB,aAAKqhJ,MAAO;AACZ,aAAKjpJ,UAAK,EAAI;AACd,aAAKipJ,MAAO;AACZ,aAAKL,MAAM3vJ,MAAK2O,OAAO;AAAA,MACzB;AAAA,IACF;AAEO,aAAS6jC,WAEdxyC,OACA;AACA,WAAKsN,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AACZ,WAAK1iJ,KAAK,MAAM;AAChB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAK00H,MAAM3vJ,MAAKi6B,cAAc;AAC9B,UAAIj6B,MAAKu/B,WAAW;AAClB,aAAKx4B,UAAK,EAAI;AACd,aAAKipJ,MAAO;AACZ,aAAKL,MAAM3vJ,MAAKu/B,SAAS;AAAA,MAC3B;AAEA,UAAIv/B,MAAKw/B,UAAU;AACjB,aAAKwwH,MAAO;AACZ,aAAKjpJ,UAAK,EAAI;AACd,aAAKipJ,MAAO;AACZ,aAAKL,MAAM3vJ,MAAKw/B,QAAQ;AAAA,MAC1B;AACA,WAAKszD,UAAW;AAAA,IAClB;AAEO,aAASlhD,qBAEd5xC,OACA;AACA,UAAIA,MAAK6/B,OAAO;AACd,aAAK94B,MAAM,IAAI;AAAA,MACjB,OAAO;AACL,aAAKA,UAAK,GAAI;AAAA,MAChB;AAGA,YAAMu0D,QAAQ,CACZ,GAAGt7D,MAAKg8B,YACR,GAAIh8B,MAAK2/B,kBAAkB,CAAE,GAC7B,GAAI3/B,MAAK0/B,YAAY,IACrB,GAAI1/B,MAAK4/B,iBAAiB,CAAA,CAAG;AAG/B,UAAI07B,MAAMnvD,QAAQ;AAChB,aAAKukJ,QAAS;AAEd,aAAKV,MAAO;AAEZ,aAAKiC,UACH32F,OACA,MACA,MACAjpD,QACAA,QACA,SAASs/I,YAAYC,SAAS;AAC5B,cAAIA,WAAW,CAACt2F,MAAM,CAAC,EAAG,QAAO;AAAA,QACnC,GACA,MAAM;AACJ,cAAIA,MAAMnvD,WAAW,KAAKnM,MAAK8/B,SAAS;AACtC,iBAAK/4B,UAAK,EAAI;AACd,iBAAKipJ,MAAO;AAAA,UACd;AAAA,QACF,CACF;AAEA,aAAKA,MAAO;AAAA,MACd;AAEA,UAAIhwJ,MAAK8/B,SAAS;AAChB,aAAKixH,OAAQ;AACb,aAAKhqJ,MAAM,KAAK;AAChB,YAAIu0D,MAAMnvD,QAAQ;AAChB,eAAKukJ,QAAS;AAAA,QAChB;AACA,aAAKM,OAAQ;AAAA,MACf;AAEA,UAAIhxJ,MAAK6/B,OAAO;AACd,aAAK94B,MAAM,IAAI;AAAA,MACjB,OAAO;AACL,aAAKA,UAAK,GAAI;AAAA,MAChB;AAAA,IACF;AAEO,aAAS+qC,uBAEd9xC,OACA;AACA,UAAIA,MAAKq+B,QAAQ;AACf,aAAK/wB,KAAK,QAAQ;AAClB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAKjpJ,UAAK,EAAI;AACd,WAAKA,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKi7B,EAAE;AAClB,WAAKl0B,UAAK,EAAI;AACd,WAAKA,UAAK,EAAI;AACd,UAAI/G,MAAKu0B,SAAU,MAAKxtB,YAAS;AACjC,UAAI,CAAC/G,MAAK+/B,QAAQ;AAChB,aAAKh5B,UAAK,EAAI;AACd,aAAKipJ,MAAO;AAAA,MACd;AACA,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AAEO,aAASmyC,uBAEdhyC,OACA;AACA,UAAIA,MAAKq+B,QAAQ;AACf,aAAK/wB,KAAK,QAAQ;AAClB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AAEO,aAASqyC,kBAAiClyC,OAA2B;AAC1E,UAAIA,MAAKq+B,QAAQ;AACf,aAAK/wB,KAAK,QAAQ;AAClB,aAAK0iJ,MAAO;AAAA,MACd;AACA,WAAK0C,UAAU1yJ,KAAI;AACnB,WAAK+G,UAAK,EAAI;AACd,UAAI/G,MAAKi7B,IAAI;AACX,aAAK00H,MAAM3vJ,MAAKi7B,EAAE;AAClB,aAAKl0B,UAAK,EAAI;AACd,aAAKipJ,MAAO;AAAA,MACd;AACA,WAAKL,MAAM3vJ,MAAKP,GAAG;AACnB,WAAKsH,UAAK,EAAI;AACd,WAAKA,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AAEO,aAASuyC,mBAAkCpyC,OAA4B;AAC5E,UAAIA,MAAK8F,OAAO;AACd,aAAKwH,KAAK,OAAO;AACjB,aAAK0iJ,MAAO;AAAA,MACd;AACA,UAAIhwJ,MAAKq+B,QAAQ;AACf,aAAK/wB,KAAK,QAAQ;AAClB,aAAK0iJ,MAAO;AAAA,MACd;AACA,UAAIhwJ,MAAKi8B,SAAS,SAASj8B,MAAKi8B,SAAS,OAAO;AAC9C,aAAK3uB,KAAKtN,MAAKi8B,IAAI;AACnB,aAAK+zH,MAAO;AAAA,MACd;AACA,WAAK0C,UAAU1yJ,KAAI;AACnB,WAAK2vJ,MAAM3vJ,MAAKP,GAAG;AACnB,UAAIO,MAAKu0B,SAAU,MAAKxtB,YAAS;AACjC,UAAI,CAAC/G,MAAK+/B,QAAQ;AAChB,aAAKh5B,UAAK,EAAI;AACd,aAAKipJ,MAAO;AAAA,MACd;AACA,WAAKL,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AAEO,aAASyyC,yBAEdtyC,OACA;AACA,WAAK+G,MAAM,KAAK;AAChB,WAAK4oJ,MAAM3vJ,MAAKm8B,QAAQ;AAAA,IAC1B;AAEO,aAASuW,wBAEd1yC,OACA;AACA,WAAK2vJ,MAAM3vJ,MAAKggC,aAAa;AAC7B,WAAKj5B,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKi7B,EAAE;AAAA,IACpB;AAEO,aAASg9H,uBAAoC;AAClD,WAAK3qJ,KAAK,QAAQ;AAAA,IACpB;AAEA,aAAS4qJ,YAA2BnJ,iBAAyB;AAC3D,WAAKiB,MAAO;AACZ,WAAKjpJ,MAAM,KAAK,OAAOgoJ,eAAe;AACtC,WAAKiB,MAAO;AAAA,IACd;AAEO,aAASj8G,oBAEd/zC,OACA;AACA,WAAKiyJ,UAAUjyJ,MAAKhB,OAAOqT,QAAWA,QAAW6lJ,WAAW;AAAA,IAC9D;AAEO,aAAS1kH,mBAAkCxzC,OAA4B;AAC5E,WAAK+G,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,WAAKi2H,MAAM3vJ,MAAKq7B,cAAc;AAC9B,WAAKt0B,UAAK,EAAI;AAAA,IAChB;AAEO,aAASitC,SAAwBh0C,OAAkB;AACxD,UAAIA,MAAKi8B,SAAS,QAAQ;AACxB,aAAKl1B,UAAK,EAAI;AAAA,MAChB,OAAO;AACL,aAAKA,UAAK,EAAI;AAAA,MAChB;AAAA,IACF;AAEO,aAASoxJ,qBAAkC;AAChD,WAAK7qJ,KAAK,MAAM;AAAA,IAClB;AAEO,aAAS+nC,kBAAiCr1C,OAA2B;AAC1E,WAAK2vJ,MAAM3vJ,MAAKqgC,YAAY,IAAI;AAChC,WAAKt5B,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKsgC,SAAS;AACzB,WAAKv5B,UAAK,EAAI;AAAA,IAChB;AAEO,aAASwuC,0BAEdv1C,OACA;AACA,WAAK2vJ,MAAM3vJ,MAAKqgC,UAAU;AAC1B,UAAIrgC,MAAKu0B,UAAU;AACjB,aAAKxtB,MAAM,IAAI;AAAA,MACjB;AACA,WAAKA,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKsgC,SAAS;AACzB,WAAKv5B,UAAK,EAAI;AAAA,IAChB;AAAA;;;;;;;;;;;;;;;;;;AC3xBO,WAAS2+B,KAAoB1lC,OAAc;AAChD,QAAIA,MAAKq6B,SAAS;AAGhB,WAAKs1H,MAAM3vJ,MAAKq6B,QAAQ0B,WAAW;AAAA,IACrC;AAEA,SAAK4zH,MAAM3vJ,MAAKq6B,OAAO;AAAA,EACzB;AAEO,WAASkN,QAAuBvnC,OAAiB;AAAA,QAAAo4J;AAGtD,SAAK5G,0BAA2B;AAChC,SAAKsC,mBAAoB;AAEzB,UAAMuE,iBAAaD,mBAAGp4J,MAAK45B,eAAU,OAAA,SAAfw+H,iBAAiBjsJ;AACvC,QAAIksJ,eAAe;AAAA,UAAAC;AACjB,YAAM5H,UAAU1wJ,MAAK65B,KAAK1tB,SAAS,IAAI;AACvC,WAAKulJ,cAAc1xJ,MAAK45B,YAAYvnB,QAAWq+I,OAAO;AACtD,UAAI,GAAA4H,wBAACt4J,MAAK45B,WAAWy+H,gBAAgB,CAAC,EAAEnhG,6BAAnCohG,sBAAqDnsJ,SAAQ;AAChE,aAAKukJ,QAAQA,OAAO;AAAA,MACtB;AAAA,IACF;AAEA,SAAKgB,cAAc1xJ,MAAK65B,IAAI;AAAA,EAC9B;AAEO,WAAS2K,eAA8BxkC,OAAwB;AAAA,QAAAu4J;AACpE,SAAKxxJ,UAAK,GAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAElC,UAAMoI,iBAAaE,oBAAGv4J,MAAK45B,eAAU,OAAA,SAAf2+H,kBAAiBpsJ;AACvC,QAAIksJ,eAAe;AAAA,UAAAG;AACjB,YAAM9H,UAAU1wJ,MAAK65B,KAAK1tB,SAAS,IAAI;AACvC,WAAKulJ,cAAc1xJ,MAAK45B,YAAY,MAAM82H,OAAO;AACjD,UAAI,GAAA8H,yBAACx4J,MAAK45B,WAAWy+H,gBAAgB,CAAC,EAAEnhG,6BAAnCshG,uBAAqDrsJ,SAAQ;AAChE,aAAKukJ,QAAQA,OAAO;AAAA,MACtB;AAAA,IACF;AAEA,SAAKgB,cAAc1xJ,MAAK65B,MAAM,IAAI;AAElCojC,SAAM;AACN,SAAKg0F,WAAWjxJ,KAAI;AAAA,EACtB;AAEO,WAASokC,UAAyBpkC,OAAmB;AAC1D,SAAK2vJ,MAAM3vJ,MAAKH,KAAK;AACrB,SAAKizF,UAAW;AAAA,EAClB;AAGA,QAAM2lE,yBAAyB;AAC/B,QAAMC,yBAAyB;AAExB,WAASp0H,iBAAgCtkC,OAA0B;AACxE,UAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AACpC,QAAI,CAAC,KAAKmwJ,OAAOC,YAAYzxH,QAAQtsB,QAAW;AAC9C,WAAKtL,MAAM43B,GAAG;AACd;AAAA,IACF;AAEA,UAAM;AAAA,MAAE9+B,OAAAA;AAAAA,IAAM,IAAIG;AAMlB,QAAI,CAAC04J,uBAAuBj6J,KAAKoB,MAAK,GAAG;AACvC,WAAKkH,MAAM,IAAIlH,MAAK,GAAG;AAAA,IACxB,WAAU,CAAC44J,uBAAuBh6J,KAAKoB,MAAK,GAAG;AAC9C,WAAKkH,MAAM,IAAIlH,MAAK,GAAG;AAAA,IACzB,OAAO;AACL,YAAM,IAAIsW,MACR,4GAEF;AAAA,IACF;AAAA,EACF;AAEO,WAAS+tB,qBAEdlkC,OACA;AACA,SAAK+G,MAAM,KAAK/G,MAAKH,KAAK,EAAE;AAC5B,SAAK6wJ,QAAQ,GAAG,IAAI;AAAA,EACtB;AAEO,WAASv5G,YAA2Bn3C,OAAqB;AAC9D,SAAK+G,MAAM,IAAI;AACf,SAAK4oJ,MAAM3vJ,MAAKyM,IAAI;AACpB,SAAK1F,MAAM,IAAI;AAEf,QAAI/G,MAAKmrB,iBAAiB,aAAa;AACrC,WAAK2nE,UAAW;AAAA,IAClB;AAAA,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGO,WAASr9C,aAA4Bz1C,OAAsB;AAChE,SAAK2vJ,MAAM3vJ,MAAKyM,IAAI;AACpB,QAAIzM,MAAKH,OAAO;AACd,WAAKkH,UAAK,EAAI;AACd,WAAK4oJ,MAAM3vJ,MAAKH,KAAK;AAAA,IACvB;AAAA,EACF;AAEO,WAASs2C,cAA6Bn2C,OAAuB;AAClE,SAAKsN,KAAKtN,MAAKyM,IAAI;AAAA,EACrB;AAEO,WAAS8pC,kBAAiCv2C,OAA2B;AAC1E,SAAK2vJ,MAAM3vJ,MAAK2gC,SAAS;AACzB,SAAK55B,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKyM,IAAI;AAAA,EACtB;AAEO,WAAS4pC,oBAEdr2C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKgF,MAAM;AACtB,SAAK+B,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAK+uB,QAAQ;AAAA,EAC1B;AAEO,WAAS4nB,mBAAkC32C,OAA4B;AAC5E,SAAK+G,UAAK,GAAI;AACd,SAAKA,MAAM,KAAK;AAChB,SAAK4oJ,MAAM3vJ,MAAKm8B,QAAQ;AACxB,SAAK80H,WAAWjxJ,KAAI;AAAA,EACtB;AAEO,WAASg2C,uBAEdh2C,OACA;AACA,SAAK+G,UAAK,GAAI;AACd,SAAK4oJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKu3H,WAAWjxJ,KAAI;AAAA,EACtB;AAEO,WAASk2C,eAA8Bl2C,OAAwB;AACpE,SAAK+G,UAAK,GAAI;AACd,SAAKA,MAAM,KAAK;AAChB,SAAK4oJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKu3H,WAAWjxJ,KAAI;AAAA,EACtB;AAEO,WAAS62C,QAAuB72C,OAAiB;AACtD,UAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AAEpC,QAAI2+B,QAAQtsB,QAAW;AACrB,WAAKtL,MAAM43B,KAAK,IAAI;AAAA,IACtB,OAAO;AACL,WAAK53B,MAAM/G,MAAKH,OAAO,IAAI;AAAA,IAC7B;AAAA,EACF;AAEO,WAASg2C,WAA0B71C,OAAoB;AAC5D,UAAM24J,OAAO34J,MAAKugC;AAClB,SAAKovH,MAAMgJ,IAAI;AACf,QAAIA,KAAKj4H,YAAa;AAEtB,SAAKqwH,OAAQ;AACb,eAAW/vG,SAAShhD,MAAKygC,UAAU;AACjC,WAAKkvH,MAAM3uG,KAAK;AAAA,IAClB;AACA,SAAKgwG,OAAQ;AAEb,SAAKrB,MAAM3vJ,MAAKwgC,cAAc;AAAA,EAChC;AAEA,WAASo4H,iBAA8B;AACrC,SAAK5I,MAAO;AAAA,EACd;AAEO,WAASv5G,kBAAiCz2C,OAA2B;AAC1E,SAAK+G,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKyM,IAAI;AAIb;AACL,UAAIzM,MAAKg6B,eAAe;AACtB,aAAK21H,MAAM3vJ,MAAKg6B,aAAa;AAAA,MAC/B;AAEA,WAAK21H,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AAEA,QAAIj6B,MAAKs9B,WAAWnxB,SAAS,GAAG;AAC9B,WAAK6jJ,MAAO;AACZ,WAAKiC,UAAUjyJ,MAAKs9B,YAAYjrB,QAAWA,QAAWumJ,cAAc;AAAA,IACtE;AACA,QAAI54J,MAAK0gC,aAAa;AACpB,WAAKsvH,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AAAA,IAChB;AACA,SAAKA,UAAK,EAAI;AAAA,EAChB;AAEO,WAAS4uC,kBAAiC31C,OAA2B;AAC1E,SAAK+G,UAAK,EAAI;AACd,SAAKA,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKyM,IAAI;AACpB,SAAK1F,UAAK,EAAI;AAAA,EAChB;AAEO,WAAS8xJ,qBAAkC;AAEhD,SAAK/E,mBAAoB;AAAA,EAC3B;AAEO,WAAS/8G,YAA2B/2C,OAAqB;AAC9D,SAAK2vJ,MAAM3vJ,MAAK4gC,eAAe;AAE/B,SAAKmwH,OAAQ;AACb,eAAW/vG,SAAShhD,MAAKygC,UAAU;AACjC,WAAKkvH,MAAM3uG,KAAK;AAAA,IAClB;AACA,SAAKgwG,OAAQ;AAEb,SAAKrB,MAAM3vJ,MAAK6gC,eAAe;AAAA,EACjC;AAEO,WAASi4H,qBAAkC;AAChD,SAAK/xJ,UAAK,EAAI;AACd,SAAKA,UAAK,EAAI;AAAA,EAChB;AAEO,WAASgyJ,qBAAkC;AAChD,SAAKhyJ,MAAM,IAAI;AACf,SAAKA,UAAK,EAAI;AAAA,EAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvIO,WAASi5C,iBAEdhgD,OACAm7B,QACA;AAGA,SAAKp0B,OACFo0B,OAAOhqB,SAAS,oBAAoBgqB,OAAOhqB,SAAS,wBAK/CgqB,OAAOE,mBAAoBr7B,QAC7B,OACA,GACN;AACA,SAAKgwJ,MAAO;AAEZ,QAAIhwJ,MAAKu0B,SAAU,MAAKxtB,YAAS;AACjC,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAAA,EAChC;AAEO,WAAS6kB,6BAEdlgD,OACAm7B,QACM;AACN,SAAKp0B,UAAK,EAAI;AAEd,QAAIiyJ,yBACF79H,OAAOhqB,SAAS,6BAA6BnR,MAAK26B,OAAOxuB,WAAW;AACtE,QAAI,KAAK2jJ,YAAY9vJ,MAAK0T,SAAS,QAAQ1T,MAAK4T,OAAO,MAAM;AAI3DolJ,iCAAAA,yBAA2B,CAAC,CAAC,KAAKlJ,SAASpsB,KAAK1jI,OAAM0O,OACpD,KAAKohJ,SAASd,gBAAgBtgJ,GAAG,GAAG,CACtC;AAEAsqJ,iCAAAA,yBAA2B,KAAK1I,yBAAyB,GAAG;AAAA,IAC9D;AAEA,SAAKD,UAAUrwJ,MAAK26B,QAAQq+H,sBAAsB;AAClD,SAAKjyJ,UAAK,EAAI;AAAA,EAChB;AAIO,WAASu5C,gBAA+BtgD,OAAyB;AACtE,QAAIA,MAAKkjC,IAAI;AACX,WAAK51B,KAAK,IAAI;AACd,WAAK0iJ,MAAO;AAAA,IACd;AAEA,QAAIhwJ,MAAKuxB,KAAK;AACZ,WAAKjkB,KAAK,KAAK;AACf,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAK1iJ,KAEEtN,MAAKyM,IAEZ;AAEA,QAAIzM,MAAKmjC,YAAY;AACnB,WAAK6sH,MAAO;AACZ,WAAK1iJ,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKmjC,UAAU;AAAA,IAC5B;AAEA,QAAInjC,MAAK2O,SAAS;AAChB,WAAKqhJ,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAK2O,OAAO;AAAA,IACzB;AAAA,EACF;AAEO,WAASqqC,oBAEdh5C,OACA;AACA,QAAIA,MAAKo+B,eAAe;AACtB,WAAK9wB,KAAKtN,MAAKo+B,aAAa;AAC5B,WAAK4xH,MAAO;AAAA,IACd;AAEA,QAAIhwJ,MAAKk/B,UAAU;AACjB,WAAK5xB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAKwD,OAAOxzJ,MAAKqhC,SAAS;AAAA,EAC5B;AAEO,WAAS6X,kBAEdl5C,OACAm7B,QACA;AACA,QAAIn7B,MAAK2Y,SAAS;AAChB,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK2D,cAAc3zJ,OAAMm7B,MAAM;AAC/B,SAAK23D,UAAW;AAAA,EAClB;AAEO,WAAS15C,gBAA+Bp5C,OAAyB;AACtE,SAAK4yJ,iBAAiB5yJ,KAAI;AAC1B,SAAK8yF,UAAW;AAAA,EAClB;AAEO,WAASx5C,gBAA+Bt5C,OAAyB;AACtE,SAAK2vJ,MAAM3vJ,MAAKu5B,IAAI;AACpB,SAAKxyB,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKw5B,KAAK;AAAA,EACvB;AAEO,WAASggB,2BAEdx5C,OACA;AACA,SAAKi5J,gCAAgCj5J,KAAI;AACzCk5J,uCAAmC,MAAMl5J,KAAI;AAAA,EAC/C;AAEA,WAASk5J,mCAAmC53J,UAAkBtB,OAAc;AAC1E,QAAI,CAACsB,SAAQwuJ,YAAY,CAAC9vJ,MAAK0T,SAAS,CAAC1T,MAAK4T,KAAK;AACjDtS,MAAAA,SAAQwxF,UAAW;AACnB;AAAA,IACF;AAEA,QAAIxxF,SAAQwuJ,SAASZ,WAAWlvJ,OAAM,GAAG,GAAG;AAC1CsB,MAAAA,SAAQyF,MAAM,GAAG;AAAA,IACnB,WAAWzF,SAAQwuJ,SAASZ,WAAWlvJ,OAAM,GAAG,GAAG;AACjDsB,MAAAA,SAAQwxF,UAAW;AAAA,IACrB;AAAA,EACF;AAEO,WAASp5C,gCAEd15C,OACA;AACA,SAAKsN,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,SAAKiJ,gCAAgCj5J,KAAI;AACzCk5J,uCAAmC,MAAMl5J,KAAI;AAAA,EAC/C;AAEO,WAAS45C,oBAEd55C,OACA;AACA,UAAM;AAAA,MAAEk/B;AAAAA,IAAS,IAAIl/B;AACrB,QAAIk/B,UAAU;AACZ,WAAK5xB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAKmJ,4BAA4Bn5J,KAAI;AACrC,SAAK2vJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B69H,uCAAmC,MAAMl5J,KAAI;AAAA,EAC/C;AAEO,WAASm5J,4BAEdn5J,OACA;AACA,QAAIA,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AAAA,IAChB;AACA,SAAK4oJ,MAAM3vJ,MAAKP,GAAG;AACnB,QAAIO,MAAKy7B,UAAU;AACjB,WAAK10B,UAAK,EAAI;AAAA,IAChB;AACA,QAAI/G,MAAKu0B,UAAU;AACjB,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AAAA,EACF;AAEO,WAAS+yC,kBAAiC95C,OAA2B;AAC1E,UAAM;AAAA,MAAEi8B;AAAAA,IAAK,IAAIj8B;AACjB,QAAIi8B,SAAS,SAASA,SAAS,OAAO;AACpC,WAAK3uB,KAAK2uB,IAAI;AACd,WAAK+zH,MAAO;AAAA,IACd;AACA,SAAKmJ,4BAA4Bn5J,KAAI;AACrC,SAAKi5J,gCAAgCj5J,KAAI;AACzCk5J,uCAAmC,MAAMl5J,KAAI;AAAA,EAC/C;AAEO,WAASg6C,iBAAgCh6C,OAA0B;AACxE,UAAM;AAAA,MAAEk/B;AAAAA,MAAUb,QAAQ2/D;AAAAA,IAAS,IAAIh+F;AACvC,QAAIg+F,UAAU;AACZ,WAAK1wF,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AAAA,IACd;AACA,QAAI9wH,UAAU;AACZ,WAAK5xB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAKjpJ,UAAK,EAAI;AACd,SAAKqsJ,YAAYpzJ,MAAKyhC,YAAY,GAAG;AACrC,SAAKkuH,MAAM3vJ,MAAKq7B,cAAc;AAC9B69H,uCAAmC,MAAMl5J,KAAI;AAAA,EAC/C;AAEO,WAASo5J,eAA4B;AAC1C,SAAK9rJ,KAAK,KAAK;AAAA,EACjB;AACO,WAAS+rJ,kBAA+B;AAC7C,SAAK/rJ,KAAK,QAAQ;AAAA,EACpB;AACO,WAASgsJ,mBAAgC;AAC9C,SAAKhsJ,KAAK,SAAS;AAAA,EACrB;AACO,WAASisJ,kBAA+B;AAC7C,SAAKjsJ,KAAK,QAAQ;AAAA,EACpB;AACO,WAASksJ,kBAA+B;AAC7C,SAAKlsJ,KAAK,QAAQ;AAAA,EACpB;AACO,WAASmsJ,mBAAgC;AAC9C,SAAKnsJ,KAAK,SAAS;AAAA,EACrB;AACO,WAASosJ,kBAA+B;AAC7C,SAAKpsJ,KAAK,QAAQ;AAAA,EACpB;AACO,WAASqsJ,kBAA+B;AAC7C,SAAKrsJ,KAAK,QAAQ;AAAA,EACpB;AACO,WAASssJ,gBAA6B;AAC3C,SAAKtsJ,KAAK,MAAM;AAAA,EAClB;AACO,WAASusJ,qBAAkC;AAChD,SAAKvsJ,KAAK,WAAW;AAAA,EACvB;AACO,WAASwsJ,gBAA6B;AAC3C,SAAKxsJ,KAAK,MAAM;AAAA,EAClB;AACO,WAASysJ,iBAA8B;AAC5C,SAAKzsJ,KAAK,OAAO;AAAA,EACnB;AACO,WAAS0sJ,qBAAkC;AAChD,SAAK1sJ,KAAK,WAAW;AAAA,EACvB;AAEO,WAAS2sJ,aAA0B;AACxC,SAAK3sJ,KAAK,MAAM;AAAA,EAClB;AAEO,WAAS0tC,eAA8Bh7C,OAAwB;AACpE,SAAKk6J,iCAAiCl6J,KAAI;AAAA,EAC5C;AAEO,WAASk7C,kBAAiCl7C,OAA2B;AAC1E,QAAIA,MAAKo9B,UAAU;AACjB,WAAK9vB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,KAAK;AACf,SAAK0iJ,MAAO;AACZ,SAAKkK,iCAAiCl6J,KAAI;AAAA,EAC5C;AAEO,WAASk6J,iCAEdl6J,OACA;AACA,UAAM;AAAA,MAAEi6B;AAAAA,IAAe,IAAIj6B;AAC3B,UAAMyhC,aAIFzhC,MAAKyhC;AACT,SAAKkuH,MAAM11H,cAAc;AACzB,SAAKlzB,UAAK,EAAI;AACd,SAAKqsJ,YAAY3xH,YAAY,GAAG;AAChC,SAAKuuH,MAAO;AACZ,UAAMj1H,aAIF/6B,MAAKq7B;AACT,SAAKs0H,MAAM50H,UAAU;AAAA,EACvB;AAEO,WAASqgB,gBAA+Bp7C,OAAyB;AACtE,UAAMg6B,gBAIFh6B,MAAKi6B;AACT,SAAK01H,MAAM3vJ,MAAK4hC,UAAU,CAAC,CAAC5H,aAAa;AACzC,SAAK21H,MAAM31H,aAAa;AAAA,EAC1B;AAEO,WAASshB,gBAA+Bt7C,OAAyB;AACtE,QAAIA,MAAK8hC,SAAS;AAChB,WAAKx0B,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAKL,MAAM3vJ,MAAK6hC,aAAa;AAC7B,QAAI7hC,MAAKq7B,gBAAgB;AACvB,WAAK20H,MAAO;AACZ,WAAK1iJ,KAAK,IAAI;AACd,WAAK0iJ,MAAO;AACZ,WAAKL,MAAM3vJ,MAAKq7B,eAAeA,cAAc;AAAA,IAC/C;AAAA,EACF;AAEO,WAASmgB,YAA2Bx7C,OAAqB;AAC9D,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK+hC,QAAQ;AAExB,UAAM/H,gBAIFh6B,MAAKi6B;AACT,QAAID,eAAe;AACjB,WAAK21H,MAAM31H,aAAa;AAAA,IAC1B;AAAA,EACF;AAEO,WAAS0hB,cAA6B17C,OAAuB;AAClEm6J,gBAAY,MAAMn6J,OAAM,MAAM,KAAKiyJ,UAAUjyJ,MAAKmgC,SAAS,MAAM,IAAI,CAAC;AAAA,EACxE;AAEO,WAASyb,YAA2B57C,OAAqB;AAC9D,SAAK2vJ,MAAM3vJ,MAAKw1B,aAAa,IAAI;AAEjC,SAAKzuB,UAAK,EAAI;AACd,SAAKA,UAAK,EAAI;AAAA,EAChB;AAEO,WAAS+0C,YAA2B97C,OAAqB;AAC9D,SAAK+G,UAAK,EAAI;AACd,SAAKspJ,UAAUrwJ,MAAKgiC,cAAc,KAAKsuH,yBAAyB,GAAG,CAAC;AACpE,SAAKvpJ,UAAK,EAAI;AAAA,EAChB;AAEO,WAASi1C,eAA8Bh8C,OAAwB;AACpE,SAAK2vJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B,SAAKt0B,UAAK,EAAI;AAAA,EAChB;AAEO,WAASm1C,WAA0Bl8C,OAAoB;AAC5D,SAAK+G,MAAM,KAAK;AAChB,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAAA,EAChC;AAEO,WAAS+gB,mBAAkCp8C,OAA4B;AAC5E,SAAK2vJ,MAAM3vJ,MAAK85B,KAAK;AACrB,QAAI95B,MAAKu0B,SAAU,MAAKxtB,YAAS;AACjC,SAAKA,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKw1B,WAAW;AAAA,EAC7B;AAEO,WAAS8mB,YAA2Bt8C,OAAqB;AAC9Do6J,mCAA+B,MAAMp6J,OAAM,GAAG;AAAA,EAChD;AAEO,WAASw8C,mBAAkCx8C,OAA4B;AAC5Eo6J,mCAA+B,MAAMp6J,OAAM,GAAG;AAAA,EAChD;AAEA,WAASo6J,+BACP94J,UACAtB,OACAmhJ,KACA;AAAA,QAAAkZ;AACA,QAAIC,kBAAkB;AACtB,SAAAD,oBAAI/4J,SAAQwuJ,aAARuK,QAAAA,kBAAkBpL,aAAajvJ,OAAMmhJ,GAAG,GAAG;AAC7CmZ,wBAAkB;AAClBh5J,MAAAA,SAAQyF,MAAMo6I,GAAG;AAAA,IACnB;AAEA7/I,IAAAA,SAAQ2wJ,UAAUjyJ,MAAKhB,OAAOqT,QAAWA,QAAW,SAAUnG,GAAG;AAC/D,WAAK8jJ,MAAO;AACZ,WAAKjpJ,MAAMo6I,KAAK,MAAMj1I,IAAIouJ,eAAe;AACzC,WAAKtK,MAAO;AAAA,IACd,CAAC;AAAA,EACH;AAEO,WAAStzG,kBAAiC18C,OAA2B;AAC1E,SAAK2vJ,MAAM3vJ,MAAKkiC,SAAS;AACzB,SAAK8tH,MAAO;AACZ,SAAK1iJ,KAAK,SAAS;AACnB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKmiC,WAAW;AAC3B,SAAK6tH,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKoiC,QAAQ;AACxB,SAAK4tH,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKqiC,SAAS;AAAA,EAC3B;AAEO,WAASua,YAA2B58C,OAAqB;AAC9D,SAAKsN,KAAK,OAAO;AACjB,SAAKqiJ,MAAM3vJ,MAAKsiC,aAAa;AAAA,EAC/B;AAEO,WAASwa,oBAEd98C,OACA;AACA,SAAK+G,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKq7B,cAAc;AAC9B,SAAKt0B,UAAK,EAAI;AAAA,EAChB;AAEO,WAASi2C,eAA8Bh9C,OAAwB;AACpE,SAAKsN,KAAKtN,MAAKm5B,QAAQ;AACvB,SAAK62H,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKq7B,cAAc;AAAA,EAChC;AAEO,WAAS6hB,oBAEdl9C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAKqgC,YAAY,IAAI;AAChC,SAAKt5B,UAAK,EAAI;AACd,SAAK4oJ,MAAM3vJ,MAAKsgC,SAAS;AACzB,SAAKv5B,UAAK,EAAI;AAAA,EAChB;AAEO,WAASq2C,aAA4Bp9C,OAAsB;AAChE,UAAM;AAAA,MAAEuiC;AAAAA,MAAUhO;AAAAA,MAAU2K;AAAAA,MAAU7D;AAAAA,IAAe,IAAIr7B;AACzD,SAAK+G,UAAK,GAAI;AACd,UAAMk2D,OAAO,KAAKgzF,eAAgB;AAClC,SAAKD,MAAO;AACZ,QAAI9wH,UAAU;AACZq7H,uBAAiB,MAAMr7H,QAAQ;AAC/B,WAAK5xB,KAAK,UAAU;AACpB,WAAK0iJ,MAAO;AAAA,IACd;AAEA,SAAKjpJ,UAAK,EAAI;AAIP;AAEL,WAAKuG,KAAKtN,MAAKsiC,cAAc71B,IAAI;AAAA,IACnC;AAEA,SAAKujJ,MAAO;AACZ,SAAK1iJ,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AAIL;AAEL,WAAKL,MAAM3vJ,MAAKsiC,cAAca,UAAU;AAAA,IAC1C;AAEA,QAAIZ,UAAU;AACZ,WAAKytH,MAAO;AACZ,WAAK1iJ,KAAK,IAAI;AACd,WAAK0iJ,MAAO;AACZ,WAAKL,MAAMptH,QAAQ;AAAA,IACrB;AAEA,SAAKx7B,UAAK,EAAI;AAEd,QAAIwtB,UAAU;AACZgmI,uBAAiB,MAAMhmI,QAAQ;AAC/B,WAAKxtB,UAAK,EAAI;AAAA,IAChB;AAEA,QAAIs0B,gBAAgB;AAClB,WAAKt0B,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAMt0H,cAAc;AAAA,IAC3B;AACA,SAAK20H,MAAO;AACZ/yF,SAAM;AACN,SAAKl2D,UAAK,GAAI;AAAA,EAChB;AAEA,WAASwzJ,iBAAiBC,MAAe1gE,KAAuB;AAC9D,QAAIA,QAAQ,MAAM;AAChB0gE,WAAKzzJ,MAAM+yF,GAAG;AAAA,IAChB;AAAA,EACF;AAEO,WAASx8C,sBAEdt9C,OACA;AACA,SAAK4vJ,eAAe5vJ,OAAMA,MAAKhB,KAAK;AAAA,EACtC;AAEO,WAASw+C,cAA6Bx9C,OAAuB;AAClE,SAAK2vJ,MAAM3vJ,MAAKwiC,OAAO;AAAA,EACzB;AAEO,WAASi4H,kBAGdz6J,OAIA;AACA,SAAK2vJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKi2H,MAAM3vJ,MAAKg6B,aAAa;AAAA,EAC/B;AAIO,WAAS4jB,uBAEd59C,OACA;AACA,UAAM;AAAA,MAAE2Y;AAAAA,MAASsiB;AAAAA,MAAIhB;AAAAA,MAAgBqF,SAASo7H;AAAAA,MAAS7gI;AAAAA,IAAK,IAAI75B;AAChE,QAAI2Y,SAAS;AACX,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,WAAW;AACrB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM10H,EAAE;AACb,SAAK00H,MAAM11H,cAAc;AACzB,QAAIygI,WAAO,QAAPA,QAASvuJ,QAAQ;AACnB,WAAK6jJ,MAAO;AACZ,WAAK1iJ,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AACZ,WAAKK,UAAUqK,OAAO;AAAA,IACxB;AACA,SAAK1K,MAAO;AACZ,SAAKL,MAAM91H,IAAI;AAAA,EACjB;AAEO,WAASikB,gBAA+B99C,OAAyB;AACtEm6J,gBAAY,MAAMn6J,OAAM,MAAM,KAAKiyJ,UAAUjyJ,MAAK65B,MAAM,MAAM,IAAI,CAAC;AAAA,EACrE;AAEO,WAASmkB,uBAEdh+C,OACA;AACA,UAAM;AAAA,MAAE2Y;AAAAA,MAASsiB;AAAAA,MAAIhB;AAAAA,MAAgBoB;AAAAA,IAAe,IAAIr7B;AACxD,QAAI2Y,SAAS;AACX,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,MAAM;AAChB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM10H,EAAE;AACb,SAAK00H,MAAM11H,cAAc;AACzB,SAAK+1H,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAMt0H,cAAc;AACzB,SAAKy3D,UAAW;AAAA,EAClB;AAEA,WAASnwD,iBAEP3iC,OACA;AACA,UAAM;AAAA,MAAEmR;AAAAA,MAAMuoB;AAAAA,MAAY2B;AAAAA,IAAe,IAAIr7B;AAC7C,SAAK2vJ,MAAMj2H,YAAY,IAAI;AAC3B,SAAKs2H,MAAO;AACZ,SAAK1iJ,KAAK6D,SAAS,mBAAmB,OAAO,WAAW;AACxD,SAAK6+I,MAAO;AACZ,SAAKL,MAAMt0H,cAAc;AAAA,EAC3B;AAOO,WAASmjB,gBAA+Bx+C,OAAyB;AACtE,UAAM;AAAA,MAAEq7B;AAAAA,MAAgB3B;AAAAA,IAAW,IAAI15B;AACvC,SAAK+G,UAAK,EAAI;AACd,SAAK4oJ,MAAMt0H,cAAc;AACzB,SAAKt0B,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAMj2H,UAAU;AAAA,EACvB;AAEO,WAASwkB,0BAEdl+C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAK05B,UAAU;AAInB;AAEL,WAAKi2H,MAAM3vJ,MAAKi6B,cAAc;AAAA,IAChC;AAAA,EACF;AAEO,WAAS2kB,kBAAiC5+C,OAA2B;AAC1E,UAAM;AAAA,MAAE2Y;AAAAA,MAASiqB,OAAOi5E;AAAAA,MAAS5gF;AAAAA,IAAG,IAAIj7B;AACxC,QAAI2Y,SAAS;AACX,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AACA,QAAIn0C,SAAS;AACX,WAAKvuG,KAAK,OAAO;AACjB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,MAAM;AAChB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM10H,EAAE;AACb,SAAK+0H,MAAO;AAKL;AAELtxG,iBAAWtvC,KAAK,MAAMpP,KAA+B;AAAA,IACvD;AAAA,EACF;AAEO,WAAS0+C,WAA0B1+C,OAAoB;AAC5Dm6J,gBAAY,MAAMn6J,OAAM,MAAA;AAAA,UAAA26J;AAAA,aACtB,KAAKtK,UACHrwJ,MAAKmgC,UAAOw6H,wBACZ,KAAKrK,yBAAyB,GAAG,MAAC,OAAAqK,wBACQ,MAC1C,MACA,IACF;AAAA,IAAC,CACH;AAAA,EACF;AAEO,WAAS77G,aAA4B9+C,OAAsB;AAChE,UAAM;AAAA,MAAEi7B;AAAAA,MAAI4H;AAAAA,IAAY,IAAI7iC;AAC5B,SAAK2vJ,MAAM10H,EAAE;AACb,QAAI4H,aAAa;AACf,WAAKmtH,MAAO;AACZ,WAAKjpJ,UAAK,EAAI;AACd,WAAKipJ,MAAO;AACZ,WAAKL,MAAM9sH,WAAW;AAAA,IACxB;AAAA,EACF;AAEO,WAASmc,oBAEdh/C,OACA;AACA,UAAM;AAAA,MAAE2Y;AAAAA,MAASsiB;AAAAA,MAAIgB;AAAAA,IAAK,IAAIj8B;AAE9B,QAAI2Y,SAAS;AACX,WAAKrL,KAAK,SAAS;AACnB,WAAK0iJ,MAAO;AAAA,IACd;AAeO;AAEL,UAAI,CAAChwJ,MAAK8iC,QAAQ;AAChB,aAAKx1B,KAAK2uB,QAAI,OAAJA,OAAShB,GAAG9pB,SAAS,eAAe,cAAc,QAAS;AACrE,aAAK6+I,MAAO;AAAA,MACd;AAEA,WAAKL,MAAM10H,EAAE;AAEb,UAAI,CAACj7B,MAAK65B,MAAM;AACd,aAAKi5D,UAAW;AAChB;AAAA,MACF;AAEA,UAAIj5D,OAAO75B,MAAK65B;AAEhB,aAAOA,KAAK1oB,SAAS,uBAAuB;AAC1C,aAAKpK,UAAK,EAAI;AAEd,aAAK4oJ,MAAM91H,KAAKoB,EAAE;AAElBpB,eAAOA,KAAKA;AAAAA,MACd;AAEA,WAAKm2H,MAAO;AACZ,WAAKL,MAAM91H,IAAI;AAAA,IACjB;AAAA,EACF;AAEO,WAASqlB,cAA6Bl/C,OAAuB;AAClEm6J,gBAAY,MAAMn6J,OAAM,MAAM,KAAK0xJ,cAAc1xJ,MAAK65B,MAAM,IAAI,CAAC;AAAA,EACnE;AAEO,WAASulB,aAA4Bp/C,OAAsB;AAChE,UAAM;AAAA,MAAEm8B;AAAAA,MAAU4G;AAAAA,MAAW5jC,SAAAA;AAAAA,IAAQ,IAAIa;AACzC,SAAKsN,KAAK,QAAQ;AAClB,SAAKvG,UAAK,EAAI;AACd,SAAK4oJ,MAAMxzH,QAAQ;AACnB,QAAIh9B,UAAS;AACX,WAAK4H,UAAK,EAAI;AACd,WAAK4oJ,MAAMxwJ,QAAO;AAAA,IACpB;AACA,SAAK4H,UAAK,EAAI;AACd,QAAIg8B,WAAW;AACb,WAAKh8B,UAAK,EAAI;AACd,WAAK4oJ,MAAM5sH,SAAS;AAAA,IACtB;AACA,UAAM/I,gBAIFh6B,MAAKi6B;AACT,QAAID,eAAe;AACjB,WAAK21H,MAAM31H,aAAa;AAAA,IAC1B;AAAA,EACF;AAEO,WAASslB,0BAEdt/C,OACA;AACA,UAAM;AAAA,MAAEi7B;AAAAA,MAAIgI;AAAAA,IAAgB,IAAIjjC;AAChC,QAGEA,MAAKgjC,UACL;AACA,WAAK11B,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AAAA,IACd;AACA,SAAK1iJ,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM10H,EAAE;AACb,SAAK+0H,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM1sH,eAAe;AAC1B,SAAK6vD,UAAW;AAAA,EAClB;AAEO,WAAStzC,0BAEdx/C,OACA;AACA,SAAK+G,MAAM,UAAU;AACrB,SAAK4oJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAK3yB,UAAK,EAAI;AAAA,EAChB;AAEO,WAAS24C,oBAEd1/C,OACA;AACA,SAAK2vJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAK3yB,UAAK,EAAI;AAAA,EAChB;AAEO,WAAS64C,mBAAkC5/C,OAA4B;AAC5E,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAKjpJ,UAAK,EAAI;AACd,SAAKipJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAK05B,UAAU;AAC1B,SAAKo5D,UAAW;AAAA,EAClB;AAEO,WAAShzC,6BAEd9/C,OACA;AACA,SAAKsN,KAAK,QAAQ;AAClB,SAAK0iJ,MAAO;AACZ,SAAK1iJ,KAAK,IAAI;AACd,SAAK0iJ,MAAO;AACZ,SAAK1iJ,KAAK,WAAW;AACrB,SAAK0iJ,MAAO;AACZ,SAAKL,MAAM3vJ,MAAKi7B,EAAE;AAClB,SAAK63D,UAAW;AAAA,EAClB;AAEO,WAASmmE,gCAA+Cj5J,OAAW;AACxE,UAAM;AAAA,MAAEi6B;AAAAA,IAAe,IAAIj6B;AAC3B,UAAMyhC,aAEFzhC,MAAKyhC;AACT,SAAKkuH,MAAM11H,cAAc;AACzB,SAAKlzB,UAAK,EAAI;AACd,SAAKqsJ,YAAY3xH,YAAY,GAAG;AAChC,UAAM1G,aAEF/6B,MAAKq7B;AACT,SAAKs0H,MAAM50H,UAAU;AAAA,EACvB;AAEO,WAAS03H,4BAEdzyJ,OAOA;AACA,UAAM46J,iBAAiB56J,MAAKmR,SAAS;AACrC,UAAM0pJ,gBACJ76J,MAAKmR,SAAS,2BAA2BnR,MAAKmR,SAAS;AACzD2pJ,uBAAmB,MAAM96J,OAAM,CAC7B66J,iBAAiB76J,MAAK2Y,WAAW,WACjC,CAACiiJ,kBAAkB56J,MAAKo+B,aAAa,CACtC;AACD,QAAIp+B,MAAKq+B,QAAQ;AACf,WAAK/wB,KAAK,QAAQ;AAClB,WAAK0iJ,MAAO;AAAA,IACd;AACA8K,uBAAmB,MAAM96J,OAAM,CAC7B,CAAC46J,kBAAkB56J,MAAKo9B,YAAY,YACpC,CAACw9H,kBAAkB56J,MAAKs+B,YAAY,aACnCu8H,iBAAiBD,mBAAmB56J,MAAKk/B,YAAY,UAAU,CACjE;AAAA,EACH;AAEA,WAASi7H,YAAY74J,UAAkBtB,OAAcq9F,IAAgB;AACnE/7F,IAAAA,SAAQyF,MAAM,GAAG;AACjB,UAAMk2D,OAAO37D,SAAQ2uJ,eAAgB;AACrC5yD,OAAI;AACJpgC,SAAM;AACN37D,IAAAA,SAAQ2vJ,WAAWjxJ,KAAI;AAAA,EACzB;AAEA,WAAS86J,mBACPx5J,UACAtB,OACAy/G,WACA;AAAA,QAAAs7C;AACA,UAAMC,eAAe,oBAAI9tJ,IAAa;AACtC,eAAW+xG,YAAYQ,WAAW;AAChC,UAAIR,SAAU+7C,cAAargJ,IAAIskG,QAAQ;AAAA,IACzC;AAEA,KAAA87C,qBAAAz5J,SAAQwuJ,aAAQ,QAAhBiL,mBAAkBr3B,KAAK1jI,OAAM85F,SAAO;AAClC,UAAIkhE,aAAavtJ,IAAIqsF,IAAIj6F,KAAK,GAAG;AAC/ByB,QAAAA,SAAQyF,MAAM+yF,IAAIj6F,KAAK;AACvByB,QAAAA,SAAQ0uJ,MAAO;AACfgL,qBAAal2E,OAAOgV,IAAIj6F,KAAK;AAC7B,eAAOm7J,aAAaztE,SAAS;AAAA,MAC/B;AAAA,IACF,CAAC;AAED,eAAW0xB,YAAY+7C,cAAc;AACnC15J,MAAAA,SAAQgM,KAAK2xG,QAAQ;AACrB39G,MAAAA,SAAQ0uJ,MAAO;AAAA,IACjB;AAAA,EACF;;;;;;;;;;;AC52BA,QAAAiL,oBAAA/yJ,wBAAA;AAAA6G,WAAAnK,KAAAq2J,iBAAA,EAAAniI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAAw7J,kBAAAx7J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAAqsJ,kBAAAx7J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAAy7J,eAAAhzJ,mBAAA;AAAA6G,WAAAnK,KAAAs2J,YAAA,EAAApiI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAAy7J,aAAAz7J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAAssJ,aAAAz7J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA07J,cAAAjzJ,kBAAA;AAAA6G,WAAAnK,KAAAu2J,WAAA,EAAAriI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA07J,YAAA17J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAAusJ,YAAA17J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA27J,WAAAlzJ,eAAA;AAAA6G,WAAAnK,KAAAw2J,QAAA,EAAAtiI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA27J,SAAA37J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAAwsJ,SAAA37J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA47J,WAAAnzJ,eAAA;AAAA6G,WAAAnK,KAAAy2J,QAAA,EAAAviI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA47J,SAAA57J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAAysJ,SAAA57J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAAg3J,WAAAvuJ,eAAA;AAAA6G,WAAAnK,KAAA6xJ,QAAA,EAAA39H,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAAg3J,SAAAh3J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA6nJ,SAAAh3J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA67J,SAAApzJ,eAAA;AAAA6G,WAAAnK,KAAA02J,MAAA,EAAAxiI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA67J,OAAA77J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA0sJ,OAAA77J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA87J,QAAArzJ,YAAA;AAAA6G,WAAAnK,KAAA22J,KAAA,EAAAziI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA87J,MAAA97J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA2sJ,MAAA97J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA+7J,QAAAtzJ,YAAA;AAAA6G,WAAAnK,KAAA42J,KAAA,EAAA1iI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA+7J,MAAA/7J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA4sJ,MAAA/7J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAA+lG,OAAAt9F,WAAA;AAAA6G,WAAAnK,KAAA4gG,IAAA,EAAA1sE,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAA+lG,KAAA/lG,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA42F,KAAA/lG,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AACA,QAAAg8J,cAAAvzJ,oBAAA;AAAA6G,WAAAnK,KAAA62J,WAAA,EAAA3iI,iBAAAr5B,MAAA;AAAA,UAAAA,sBAAAA,SAAA,aAAA;AAAA,UAAAA,QAAAiT,WAAAA,QAAAjT,IAAA,MAAAg8J,YAAAh8J,IAAA,EAAA;AAAAsP,aAAAC,eAAA0D,SAAAjT,MAAA;AAAA,QAAAmhD,YAAA;AAAA,QAAAhyC,gBAAA;AAAA,iBAAA6sJ,YAAAh8J,IAAA;AAAA,QAAA;AAAA,MAAA,CAAA;AAAA,IAAA,CAAA;AAAA;;;;;;;;;;;;ACFO,WAASi8J,wBAAwBC,cAA8B;AAEjC;AACjC,YAAMC,6BAA6B;AAAA,QACjCC,OAAoB;AAAA,QAAE;AAAA,QAEtBn+G,8BAGE19C,OACA;AACA,eAAK2vJ,MAAM3vJ,MAAK05B,UAAU;AAC1B,eAAKi2H,MAAM3vJ,MAAKi6B,cAAc;AAAA,QAC/B;AAAA,QAEDqe,eAA8Bt4C,OAAW;AACvC,gBAAM2+B,MAAM,KAAKq3H,eAAeh2J,KAAI;AACpC,cAAI,CAAC,KAAKmwJ,OAAOC,YAAYzxH,QAAQtsB,QAAW;AAC9C,iBAAK/E,KAAKqxB,GAAG;AACb;AAAA,UACF;AACA,eAAKrxB,KAAKtN,MAAKH,QAAQ,GAAG;AAAA,QAC5B;AAAA,MAID;AACDkP,aAAOyE,OAAOmoJ,aAAarlG,WAAWslG,0BAA0B;AAAA,IAClE;AAAA,EACF;;;;;;;;;;;ACrCA,MAAAE,UAAA5zJ,cAAA;AAEA,MAAA2G,IAAA3G,YAAA;AAEA,MAAAu5D,KAAAv5D,aAAA;AAUA,MAAA6zJ,YAAA7zJ,gBAAA;AAEA,MAAA8zJ,qBAAA9zJ,kBAAA;AACA,MAAA+zJ,cAAA/zJ,kBAAA;AAGoC,QAAA;AAAA,IAflCkjB;AAAAA,IACAc;AAAAA,IACAT;AAAAA,IACA7M;AAAAA,IACAiL;AAAAA,IACAQ;AAAAA,EAAc,IAAAo3C;AAmBhB,QAAMy6F,sBAAsB;AAC5B,QAAMC,uBAAuB;AAC7B,QAAMC,cAAc;AACpB,QAAMC,mCAAmC;AAEzC,WAASC,iBAAiB38J,IAAc;AACtC,WAAOA,GAAEwR,SAAS,iBAAiBirJ,YAAY39J,KAAKkB,GAAEE,KAAK;AAAA,EAC7D;AAEA,QAAM;AAAA,IAAEmuJ;AAAAA,EAAY,IAAIn/I;AAAAA,EAmFxB,MAAM0tJ,QAAQ;AAAA,IACZ1pJ,YACEs9I,QACAr+I,KACAyoB,QACAiiI,cACA;AAAA,WAgBFhQ,qBAA8B;AAAK,WA0BnCR,eAAuB;AAAC,WAExBqC,UAAmB;AAAI,WACvBqH,gBAA+B;AAAI,WAGnC+G,eAAuB;AAAI,WAC3BC,UAAkB;AAAC,WACnBC,gBAAwB;AAAC,WACzBC,aAAsB;AAAK,WAC3BtJ,oBAA6B;AAAK,WAClCuJ,6BAA4C;AAAI,WAChDC,+BAAwC;AAAK,WAC7CC,mBAAmB,oBAAI7vJ,IAAgB;AAAA,WACvC8vJ,mBAAmB;AAAK,WACxBC,gBAAgB;AAAK,WACrBnM,eAAe;AAAK,WACpBoM,mBAAmB;AAAC,WACpBtJ,oBAA6B;AAAK,WAClCuJ,uBAAgC;AAAI,WACpCrN,WAAqB;AAAI,WAEzBsN,yBAAyB,KAAK3H,kBAAkBp/F,KAAK,IAAI;AAAC,WAiD1DgnG,gCAAwC;AAAE,WAC1CC,iCAAyC;AAjHvC,WAAKnN,SAASA;AAEd,WAAK9B,UAAU9zH;AACf,WAAKm7H,gBAAgB8G;AAErB,WAAKG,gBAAgBxM,OAAOY,OAAOwM,MAAMpxJ;AAEzC,WAAKq6I,YAAY10I,OAAAA,OAAAA,SAAAA,IAAK00I;AAEtB,WAAKwB,OAAO,IAAIF,QAAAA,QAAOh2I,KAAKq+I,OAAOY,OAAOwM,MAAM,CAAC,CAAC;AAAA,IACpD;AAAA,IAMAhM,wBAAwB;AACtB,UAAI,KAAK/E,mBAAoB,QAAO,MAAM;AAAA,MAAE;AAC5C,WAAKA,qBAAqB;AAC1B,aAAO,MAAM;AACX,aAAKA,qBAAqB;AAAA,MAC3B;AAAA,IACH;AAAA,IAEAyD,iBAAiB;AACf,YAAMuN,wBAAwB,KAAKhR;AACnC,YAAMiR,+BAA+B,KAAKZ;AAC1C,UACEW,0BAA0B,SAC1BC,iCAAiC,MACjC;AACA,eAAO,MAAM;AAAA,QAAE;AAAA,MACjB;AACA,WAAKjR,qBAAqB;AAC1B,WAAKqQ,6BAA6B;AAClC,aAAO,MAAM;AACX,aAAKrQ,qBAAqBgR;AAC1B,aAAKX,6BAA6BY;AAAAA,MACnC;AAAA,IACH;AAAA,IA0BAC,SAAS97F,KAAa;AACpB,UAAI,KAAKuuF,OAAOmC,gBAAgB;AAC9B,aAAKxC,WAAW,IAAI1B,mBAASxsF,KAAK,KAAKysF,SAAS,KAAKqH,aAAa;AAAA,MACpE;AACA,WAAK/F,MAAM/tF,GAAG;AACd,WAAK+7F,oBAAqB;AAE1B,aAAO,KAAK3V,KAAKp5I,IAAK;AAAA,IACxB;AAAA,IAMAmiJ,SAAe;AACb,YAAM;AAAA,QAAEZ;AAAAA,MAAO,IAAI;AACnB,UAAIA,OAAOmC,kBAAkBnC,OAAOyN,WAAWzN,OAAO0N,SAAS;AAC7D;AAAA,MACF;AAEA,WAAKnB;AAAAA,IACP;AAAA,IAMA1L,SAAe;AACb,YAAM;AAAA,QAAEb;AAAAA,MAAO,IAAI;AACnB,UAAIA,OAAOmC,kBAAkBnC,OAAOyN,WAAWzN,OAAO0N,SAAS;AAC7D;AAAA,MACF;AAEA,WAAKnB;AAAAA,IACP;AAAA,IAmBA5pE,UAAUt+D,QAAiB,OAAa;AACtC,WAAKmpI,oBAAqB;AAC1B,UAAInpI,OAAO;AACT,aAAKk1H,YAAW,EAAoB;AACpC,aAAK4J,oBAAoB;AACzB;AAAA,MACF;AACA,UAAI,KAAKxD,UAAU;AACjB,cAAM9vJ,QAAO,KAAKy8J;AAClB,YAAIz8J,MAAK0T,SAAS,QAAQ1T,MAAK4T,OAAO,MAAM;AAC1C,cAAI,CAAC,KAAKk8I,SAASZ,WAAWlvJ,OAAM,GAAG,GAAG;AAExC,iBAAKq9J,gCAAgC,KAAKrV,KAAK4C,eAAgB;AAC/D;AAAA,UACF;AACA,gBAAM6D,UAAU,KAAKqB,SAASnB,WAAW,KAAK8N,YAAY;AAC1D,eAAK1M,WAAW,KAAK1B,QAAQI,QAAQA,QAAQtiJ,SAAS,CAAC,CAAC,EAAEmH,IAAII,KAAK;AAAA,QACrE;AAAA,MACF;AACA,WAAK00I,OAAM,EAAoB;AAC/B,WAAKkL,oBAAoB;AAAA,IAC3B;AAAA,IAMArC,WAAWjxJ,OAAoB;AAC7B,UAAI,KAAKmwJ,OAAOC,UAAU;AACxB,aAAKpI,KAAKkC,oBAAqB;AAAA,MACjC;AACA,WAAKQ,iBAAiB,OAAO1qJ,MAAKsT,KAAK,EAAE;AACzC,WAAKvM,UAAK,GAAI;AAAA,IAChB;AAAA,IAEAmpJ,YAAYlwJ,OAAoB;AAC9B,WAAK0qJ,iBAAiB,OAAO1qJ,MAAKsT,KAAK,EAAE;AACzC,WAAKvM,UAAK,EAAI;AAAA,IAChB;AAAA,IAMAipJ,MAAMx7H,QAAiB,OAAa;AAClC,YAAM;AAAA,QAAE27H;AAAAA,MAAO,IAAI;AACnB,UAAIA,OAAOyN,WAAWzN,OAAOmC,eAAgB;AAE7C,UAAI99H,OAAO;AACT,aAAKspI,OAAQ;AAAA,MACd,WAAU,KAAK9V,KAAKuC,cAAc;AACjC,cAAMD,SAAS,KAAKH,YAAa;AACjC,YAAIG,WAAM,MAAwBA,eAA+B;AAC/D,eAAKwT,OAAQ;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IAMAxwJ,KAAKyE,KAAa2hJ,wBAAiC,OAAa;AAC9D,WAAK1H,eAAe;AAEpB,WAAK+R,yBAAyBhsJ,GAAG;AAEjC,WAAK4rJ,oBAAqB;AAE1B,UAAI,KAAK7N,SAAU,MAAKkO,uBAAuBjsJ,GAAG;AAGlD,UACE,KAAKkrJ,iBACJ,KAAKnM,gBAAgB/+I,IAAInF,WAAW,CAAC,UACtC;AACA,aAAKkxJ,OAAQ;AAAA,MACf;AACA,WAAKtU,QAAQz3I,KAAK,KAAK;AAEvB,WAAKkrJ,gBAAgB;AACrB,WAAK3J,oBAAoBI;AAAAA,IAC3B;AAAA,IAMAlzJ,OAAOuR,KAAavR,SAAuB;AAEzC,eAASy9J,oBAAoBlsJ,MAAa;AACxC,YAAIA,KAAI5F,SAAS,KAAK4F,KAAInF,WAAW,CAAC,UAAwB;AAC5D,gBAAMsxJ,aAAansJ,KAAInF,WAAW,CAAC;AACnC,iBACEsxJ,eAAmC,MACnCA,eAAmC,OACnCA,eAAmC;AAAA,QAEvC;AACA,eAAO;AAAA,MACT;AACA,WAAK5wJ,KAAKyE,GAAG;AAIb,WAAKirJ,mBACH9jJ,OAAOC,UAAU3Y,OAAM,KACvB,CAACy9J,oBAAoBlsJ,GAAG,KACxB,CAACmqJ,oBAAoBz9J,KAAKsT,GAAG,KAC7B,CAACoqJ,qBAAqB19J,KAAKsT,GAAG,KAC9BA,IAAInF,WAAWmF,IAAI5F,SAAS,CAAC,MAAmB;AAAA,IACpD;AAAA,IAaApF,MAAMgL,KAAaw3I,eAAe,OAAOwF,kBAAkB,GAAS;AAClE,WAAK/C,eAAe;AAEpB,WAAK+R,yBAAyBhsJ,KAAKg9I,eAAe;AAElD,WAAK4O,oBAAqB;AAE1B,UAAI,KAAK7N,SAAU,MAAKkO,uBAAuBjsJ,KAAKg9I,eAAe;AAEnE,YAAMoP,WAAW,KAAKhU,YAAa;AACnC,YAAMiU,WAAWrsJ,IAAInF,WAAW,CAAC;AACjC,UACGuxJ,aAAQ,OAGNpsJ,QAAQ,QAEPqsJ,aAA+B,OAElCA,aAA+B,MAAID,aAAQ,MAC3CC,aAA2B,MAAID,aAAQ,MAEvCC,aAA0B,MAAI,KAAKpB,kBACpC;AACA,aAAKc,OAAQ;AAAA,MACf;AACA,WAAKtU,QAAQz3I,KAAKw3I,YAAY;AAC9B,WAAK+J,oBAAoB;AAAA,IAC3B;AAAA,IAEA+K,UAAUpwE,MAAoB;AAC5B,WAAK+9D,eAAe;AAEpB,YAAMj6I,MAAM1F,OAAOC,aAAa2hF,IAAI;AACpC,WAAK8vE,yBAAyBhsJ,GAAG;AAEjC,WAAK4rJ,oBAAqB;AAE1B,UAAI,KAAK7N,SAAU,MAAKkO,uBAAuBjsJ,GAAG;AAElD,YAAMosJ,WAAW,KAAKhU,YAAa;AACnC,UAEGl8D,SAA2B,MAAIkwE,aAA+B,MAC9DlwE,SAAuB,MAAIkwE,aAAQ,MAEnClwE,SAAI,MAAsB,KAAK+uE,kBAChC;AACA,aAAKc,OAAQ;AAAA,MACf;AACA,WAAKpU,YAAYz7D,IAAI;AACrB,WAAKqlE,oBAAoB;AAAA,IAC3B;AAAA,IAQA5C,QAAQxkJ,IAAY,GAAGsoB,OAAuB;AAC5C,UAAItoB,KAAK,EAAG;AAEZ,UAAI,CAACsoB,OAAO;AACV,YAAI,KAAK27H,OAAO+D,eAAe,KAAK/D,OAAOyN,QAAS;AAEpD,YAAI,KAAKzN,OAAO0N,SAAS;AACvB,eAAK7N,MAAO;AACZ;AAAA,QACF;AAAA,MACF;AAEA,UAAI9jJ,IAAI,EAAGA,KAAI;AAEfA,WAAK,KAAK87I,KAAKoC,gBAAiB;AAEhC,eAASp7H,IAAI,GAAGA,IAAI9iB,GAAG8iB,KAAK;AAC1B,aAAKsvI,SAAU;AAAA,MACjB;AAEA;AAAA,IACF;AAAA,IAEAhN,SAASrjE,MAAuB;AAC9B,aAAO,KAAKk8D,YAAW,MAAOl8D;AAAAA,IAChC;AAAA,IAEAk8D,cAAsB;AACpB,aAAO,KAAKnC,KAAKmC,YAAa;AAAA,IAChC;AAAA,IAEAE,yBAAiC;AAC/B,aAAO,KAAKrC,KAAKqC,uBAAwB;AAAA,IAC3C;AAAA,IAEAJ,wBAA8B;AAC5B,WAAKjC,KAAKiC,sBAAuB;AAAA,IACnC;AAAA,IAEAO,YAAYl3I,KAAsB+pF,IAAgB;AAChD,UAAI,CAAC/pF,KAAK;AACR+pF,WAAI;AACJ;AAAA,MACF;AAEA,WAAKkhE,SAAS,SAASjrJ,GAAG;AAE1B,WAAK00I,KAAKwC,YAAYl3I,KAAK+pF,EAAE;AAAA,IAC/B;AAAA,IAEAp8F,OAAOw0E,MAAuBniE,KAA4B;AACxD,UAAI,CAACA,IAAK;AAEV,WAAKirJ,SAAS9oF,MAAMniE,GAAG;AAEvB,WAAK00I,KAAK/mJ,OAAOw0E,MAAMniE,GAAG;AAAA,IAC5B;AAAA,IAEAo3I,iBACEj1E,MACAniE,KACA4vD,cACM;AACN,UAAI,CAAC5vD,OAAO,KAAK68I,OAAOmC,eAAgB;AAExC,WAAKiM,SAAS9oF,MAAMniE,GAAG;AAEvB,WAAK00I,KAAK0C,iBAAiBj1E,MAAMniE,KAAK4vD,YAAY;AAAA,IACpD;AAAA,IAEAiwF,qBAAqBpwF,gBAAwB92D,MAAiB;AAC5D,UAAI,CAAC,KAAK+7I,KAAKM,eAAgB;AAE/B,YAAMqB,iBAAiB,KAAK3B,KAAKU;AACjCiB,qBAAepC,oBAAoBt7I;AACnC09I,qBAAe5mF,iBAAiBA;AAAAA,IAClC;AAAA,IAEA+6F,SAAe;AACb,WAAK1V,OAAM,EAAgB;AAAA,IAC7B;AAAA,IAEAkW,WAAiB;AACf,WAAKlW,OAAM,EAAmB;AAAA,IAChC;AAAA,IAEA4V,uBAAuBjsJ,KAAag9I,kBAA0B,GAAS;AAGrE,YAAMhoJ,SAAQ,KAAK+oJ,SAAShB,aAC1B,KAAK2N,cACL1qJ,KACAg9I,eACF;AACA,UAAIhoJ,OAAO,MAAKgpJ,WAAWhpJ,OAAMuM,IAAII,KAAK;AAE1C,UACE,KAAK4pJ,mCAAmC,MACxC,KAAKA,mCAAmC,KAAKtV,KAAK4C,kBAClD;AACA,aAAK5C,KAAKyB,aAA8B;AACxC,aAAKwT,gBAAgB;AACrB,aAAKD,mBAAmB;AACxB,aAAKlM,eAAe;AAAA,MACtB;AACA,WAAKwM,iCAAiC;AACtC,WAAKD,gCAAgC;AAAA,IACvC;AAAA,IAEA7T,QAAQz3I,KAAaw3I,cAA6B;AAChD,WAAKiV,aAAazsJ,IAAInF,WAAW,CAAC,CAAC;AAEnC,WAAKo7I,KAAKvsF,OAAO1pD,KAAKw3I,YAAY;AAGlC,WAAK0T,gBAAgB;AACrB,WAAKD,mBAAmB;AACxB,WAAKlM,eAAe;AAAA,IACtB;AAAA,IAEApH,YAAYz7D,MAAoB;AAC9B,WAAKuwE,aAAavwE,IAAI;AAEtB,WAAK+5D,KAAKyB,WAAWx7D,IAAI;AAGzB,WAAKgvE,gBAAgB;AACrB,WAAKD,mBAAmB;AACxB,WAAKlM,eAAe;AAAA,IACtB;AAAA,IAEA1I,OAAOn6D,MAAc;AACnB,WAAKuwE,aAAavwE,IAAI;AAEtB,WAAK+5D,KAAKY,MAAM36D,IAAI;AAEpB,WAAKgvE,gBAAgB;AACrB,WAAKD,mBAAmB;AAAA,IAC1B;AAAA,IAEAwB,aAAaC,WAAyB;AAEpC,UACE,KAAK/B,WACL+B,cAAS,MACT,KAAKnN,SAA2B,EAAA,GAChC;AACA,aAAKtJ,KAAK4B,iBAAiB,KAAK8U,WAAU,CAAE;AAAA,MAC9C;AAAA,IACF;AAAA,IAEAC,cAAcF,WAAmB;AAE/B,UACE,KAAK/B,WACL+B,cAAS,MACT,KAAKnN,SAA2B,EAAA,GAChC;AACA,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEAkB,QAAQ5zJ,OAAc;AACpB,UAAI,CAAC,KAAKuxJ,OAAO+D,YAAa;AAG9B,YAAMh6C,QAAQt7G,QAAO,KAAKopJ,KAAK4C,eAAgB;AAE/C,eAAS1+I,IAAI,GAAGA,IAAIguG,OAAOhuG,KAAK;AAC9B,aAAKoyJ,SAAU;AAAA,MACjB;AAAA,IACF;AAAA,IAEAC,SAAS9oF,MAAuBniE,KAAW;AACzC,YAAM;AAAA,QAAE68I;AAAAA,MAAO,IAAI;AACnB,UAAI,CAACA,OAAOmC,gBAAgB;AAC1B,YAAInC,OAAO+D,eAAe5gJ,eAAAA,IAAMmiE,IAAI,GAAG;AACrC,eAAK+8E,QAAQl/I,IAAImiE,IAAI,EAAE72E,IAAI;AAAA,QAC7B;AACA;AAAA,MACF;AAGA,YAAMqN,OAAMqH,uBAAAA,IAAMmiE,IAAI;AACtB,UAAIxpE,QAAO,KAAM,MAAK8jJ,WAAW9jJ,IAAG;AAAA,IACtC;AAAA,IAEA8jJ,WAAW;AAAA,MAAEnxJ,MAAAA;AAAAA,MAAM6U,QAAAA;AAAAA,MAAQnU,OAAAA;AAAAA,IAAW,GAAG;AACvC,YAAM46G,QAAQt7G,QAAO,KAAKopJ,KAAK4C,eAAgB;AAC/C,UAAI1wC,QAAQ,KAAK,KAAKo5C,mBAAmB;AAGvC;AAAA,MACF;AAEA,eAASpnJ,IAAI,GAAGA,IAAIguG,OAAOhuG,KAAK;AAC9B,aAAKoyJ,SAAU;AAAA,MACjB;AAEA,YAAMM,cACJ1kD,QAAQ,IAAIzmG,UAASA,UAAS,KAAKu0I,KAAK2C,iBAAkB;AAC5D,UAAIiU,cAAc,GAAG;AACnB,cAAMC,SAAS,KAAKnJ,gBAChB,KAAKA,cACFtkJ,MAAM9R,SAAQs/J,aAAat/J,MAAK,EAEhCqW,QAAQ,iEAAwC,GAAG,IACtD,IAAIE,OAAO+oJ,WAAW;AAC1B,aAAKpV,QAAQqV,QAAQ,KAAK;AAAA,MAC5B;AAAA,IACF;AAAA,IAMAH,aAAqB;AACnB,aAAO,KAAK/B,gBAAgB,KAAKD;AAAAA,IACnC;AAAA,IAEA9L,oBAAoB5wJ,OAAc;AAgBhC,WAAKszJ,oBAAoB;AACzB,WAAK3D,MAAM3vJ,KAAI;AAAA,IACjB;AAAA,IAEA2vJ,MACE3vJ,OACA0zJ,uBAGAoL,4BACA;AAAA,UAAAr9D,aAAAs9D,uBAAAC;AACA,UAAI,CAACh/J,MAAM;AAEX,WAAK4zJ,oBAAoB;AAEzB,YAAMpkI,WAAWxvB,MAAKmR;AACtB,YAAMg/I,SAAS,KAAKA;AAEpB,YAAM8O,aAAa9O,OAAO0N;AAC1B,UAEE79J,MAAKk/J,UACL;AACA/O,eAAO0N,UAAU;AAAA,MACnB;AAEA,YAAMsB,cACJ,KACE3vI,QAAQ;AAOZ,UAAI2vI,gBAAgB9sJ,QAAW;AAC7B,cAAM,IAAIslI,eACR,wBAAwBlhH,KAAKtyB,UAC3BqrB,QACF,CAAC,qBAAqBiH,KAAKtyB,UAAUnE,MAAK6S,YAAYpG,IAAI,CAAC,EAC7D;AAAA,MACF;AAEA,YAAM0uB,SAAS,KAAKshI;AACpB,WAAKA,eAAez8J;AAEpB,UAAI,KAAK8vJ,UAAU;AACjB,aAAKwN,iCAAiC,KAAKD;AAAAA,MAC7C;AAEA,YAAM+B,WAAW,KAAKxC;AACtB,WAAKA,aAAa58J,MAAKsT,OAAO;AAC9B,WAAKqqJ,oBAAoB,KAAKf,cAAc,CAACwC,QAAQ;AAErD,YAAMtrF,iBAAa2tB,cAAGzhG,MAAKm3D,UAAK,OAAA,SAAVsqC,YAAY3tB;AAClC,UAAIurF,oBACDvrF,iBAAiBq8E,OAAOmC,kBACxBx+E,iBACCq8E,OAAOmP,wBACP9vI,aAAa,wBACfw+H,YACEhuJ,OACAm7B,QACA,KAAK6wH,cACL,KAAKQ,oBACL2D,OAAOmC,iBAAiB,KAAK8K,yBAAyB/qJ,MACxD;AAEF,UACE,CAACgtJ,qBACDvrF,kBAAairF,wBACb/+J,MAAKg3D,oBAAL+nG,QAAAA,sBAAsB5yJ,UACtBnM,MAAKg3D,gBAAgB,CAAC,EAAE7lD,SAAS,gBACjC;AACA,cAAM26I,aAAa3wH,UAAAA,OAAAA,SAAAA,OAAQhqB;AAC3B,gBAAQ26I,YAAU;AAAA,UAChB,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH;AAAA,UACF,KAAK;AAAA,UACL,KAAK;AAAA,UACL,KAAK;AACH,gBAAI3wH,OAAO7D,WAAWt3B,MAAM;AAAA,UAE9B;AACEq/J,gCAAoB;AAAA,QACxB;AAAA,MACF;AAEA,UAAIE,sBAAsB;AAC1B,UACE,CAACF,qBACD,KAAK/L,uBACJ0L,yBAAAh/J,MAAKg3D,4BAALgoG,uBAAsBzvE,KAAK+sE,gBAAgB,KACzC,KAAKnM,OAAO+D,eACXl0J,MAAKsT,OACLtT,MAAKsT,IAAII,MAAM9U,OAAO,KAAKopJ,KAAK4C,eAAiB,IACrD;AACAyU,4BAAoB;AACpBE,8BAAsB;AAAA,MACxB;AAEA,UAAI9B;AACJ,UAAI+B;AACJ,UAAI,CAACH,mBAAmB;AACtB3L,kCAAAA,wBACEv4H,UACA,KAAK0hI,+BAA+B1hI,UACpCtsB,EAAEs/I,YAAYhzH,QAAQn7B,KAAI;AAC5B,YAAI0zJ,uBAAuB;AAAA,cAAA+L;AACzB,eAAAA,wBAAIz/J,MAAKk3D,qBAAgB,QAArBuoG,sBAAuBlwE,KAAK+sE,gBAAgB,GAAG;AACjD,gBAAIlxI,aAAaprB,KAAI,EAAGq/J,qBAAoB;AAAA,UAC9C,OAAO;AACL5B,2CAA+B,KAAKZ;AACpC,iBAAKA,6BAA6B78J;AAAAA,UACpC;AAAA,QACF;AAAA,MACF;AAEA,UAAIq/J,mBAAmB;AACrB,aAAKt4J,UAAK,EAAI;AACd,YAAIw4J,oBAAqB,MAAKxO,OAAQ;AACtC,aAAK6C,oBAAoB;AACzB,YAAI,KAAKpH,oBAAoB;AAC3BgT,yCAA+B;AAC/B,eAAKhT,qBAAqB;AAAA,QAC5B;AACAiR,uCAA+B,KAAKZ;AACpC,aAAKA,6BAA6B;AAAA,MACpC;AAEA,WAAKK,mBAAmB;AAExB,WAAKwC,sBAAsB1/J,OAAMm7B,MAAM;AAEvC,YAAM7nB,MAAMkc,aAAa,aAAaA,aAAa,SAAS,OAAOxvB,MAAKsT;AAExE,WAAKk3I,YACHl3I,KAEA6rJ,YAAY9oG,KAAK,MAAMr2D,OAAMm7B,MAAM,CACrC;AAEA,UAAIkkI,mBAAmB;AACrB,aAAKM,uBAAuB3/J,OAAMm7B,MAAM;AACxC,YAAIokI,qBAAqB;AACvB,eAAKvO,OAAQ;AACb,eAAKN,QAAS;AAAA,QAChB;AACA,aAAK3pJ,UAAK,EAAI;AACd,aAAKusJ,oBAAoBI;AACzB,YAAI8L,6BAA8B,MAAKhT,qBAAqB;AAAA,MAC7D,WAAUkH,yBAAyB,CAAC,KAAKJ,mBAAmB;AAC3D,aAAKA,oBAAoB;AACzB,aAAKqM,uBAAuB3/J,OAAMm7B,MAAM;AAAA,MAC1C,OAAO;AACL,aAAKwkI,uBAAuB3/J,OAAMm7B,QAAQ2jI,0BAA0B;AAAA,MACtE;AAGA,WAAKrC,eAAethI;AACpBg1H,aAAO0N,UAAUoB;AACjB,WAAKrC,aAAawC;AAElB,UAAI3B,iCAAiCprJ,QAAW;AAC9C,aAAKwqJ,6BAA6BY;AAAAA,MACpC;AAEA,WAAK7J,oBAAoB;AAAA,IAC3B;AAAA,IAEA+J,oBAAoBiC,yBAAmC;AACrD,UAAIA,wBAAyB,MAAKC,uBAAwB;AAC1D,UAAI,CAAC,KAAKjD,WAAY,MAAKkD,sBAAuB;AAAA,IACpD;AAAA,IAEAD,yBAAyB;AACvB,UAAI,KAAK/C,6BAA8B;AACvC,WAAKA,+BAA+B;AAEpC,YAAMvsJ,UAAU,KAAK4/I,OAAO4P;AAC5B,UAAIxvJ,SAAS;AACX,aAAKyvJ,cACH;AAAA,UACE7uJ,MAAM;AAAA,UACNtR,OAAO0Q;AAAAA,QACR,IAEH;AAAA,MACF;AAAA,IACF;AAAA,IAEAuvJ,wBAAwB;AACtB,UAAI,CAAC,KAAKhD,6BAA8B;AACxC,WAAKA,+BAA+B;AAEpC,YAAMvsJ,UAAU,KAAK4/I,OAAO8P;AAC5B,UAAI1vJ,SAAS;AACX,aAAKyvJ,cACH;AAAA,UACE7uJ,MAAM;AAAA,UACNtR,OAAO0Q;AAAAA,QACR,IAEH;AAAA,MACF;AAAA,IACF;AAAA,IAEAylJ,eACEh2J,OAMoB;AACpB,YAAMm3D,QAAQn3D,MAAKm3D;AACnB,WACEA,SAAAA,OAAAA,SAAAA,MAAOx4B,QAAO,QACdw4B,MAAMoc,YAAY,QAClBvzE,MAAKH,UAAUs3D,MAAMoc,UACrB;AAEA,eAAOpc,MAAMx4B;AAAAA,MACf;AAAA,IACF;AAAA,IAEAszH,UACEnjI,OACA+4G,WACAkpB,QACAmB,WACA8G,wBACArH,aACAxwJ,WACA29J,4BACA;AACA,UAAI,EAAChwI,SAAK,QAALA,MAAO3iB,QAAQ;AAEpB,UAAI4kJ,UAAU,QAAQ,KAAKZ,OAAO+D,aAAa;AAAA,YAAAgM;AAC7C,cAAMnsJ,aAASmsJ,eAAGpxI,MAAM,CAAC,EAAExb,QAAT4sJ,OAAAA,SAAAA,aAAcxsJ,MAAM9U;AACtC,YAAImV,aAAa,QAAQA,cAAc,KAAKi0I,KAAK4C,kBAAkB;AACjEmG,mBAAS;AAAA,QACX;AAAA,MACF;AAEA,UAAIA,OAAQ,MAAKA,OAAQ;AAEzB,YAAMoP,cAAkC;AAAA,QACtCxO;AAAAA,QACAyO,mBAAmB;AAAA,MACpB;AAED,YAAMC,iBAAiBnO,aAAS,OAAA,SAATA,UAAW77F,KAAK,IAAI;AAE3C,YAAM3jC,MAAM5D,MAAM3iB;AAClB,eAASD,IAAI,GAAGA,IAAIwmB,KAAKxmB,KAAK;AAC5B,cAAMlM,QAAO8uB,MAAM5iB,CAAC;AACpB,YAAI,CAAClM,MAAM;AAEX,YAAI6nI,UAAW,MAAKy4B,cAAcp0J,MAAM,GAAGi0J,WAAW;AAEtD,aAAKxQ,MAAM3vJ,OAAMqS,QAAWysJ,8BAA8B,CAAC;AAE3D39J,QAAAA,qBAAAA,UAAWnB,OAAMkM,CAAC;AAElB,YAAIm0J,kBAAkB,MAAM;AAC1B,cAAIn0J,IAAIwmB,MAAM,EAAG2tI,gBAAen0J,GAAG,KAAK;AAAA,mBAC/B8sJ,uBAAwBqH,gBAAen0J,GAAG,IAAI;AAAA,QACzD;AAEA,YAAI27H,WAAW;AAAA,cAAA04B;AACb,cAAI,GAAAA,yBAACvgK,MAAKk3D,qBAALqpG,QAAAA,uBAAuBp0J,SAAQ;AAClC,iBAAK+wJ,mBAAmB;AAAA,UAC1B;AAEA,cAAIhxJ,IAAI,MAAMwmB,KAAK;AACjB,iBAAKg+H,QAAQ,CAAC;AAAA,UAChB,OAAO;AAAA,gBAAA8P;AACL,kBAAMC,WAAW3xI,MAAM5iB,IAAI,CAAC;AAC5Bi0J,wBAAYC,sBAAoBI,gBAAAC,SAASntJ,QAAG,OAAA,SAAZktJ,cAAc9sJ,MAAM9U,SAAQ;AAE5D,iBAAK0hK,cAAc,MAAMH,WAAW;AAAA,UACtC;AAAA,QACF;AAAA,MACF;AAEA,UAAIpP,OAAQ,MAAKC,OAAQ;AAAA,IAC3B;AAAA,IAEAK,yBAAyBrxJ,OAAc;AACrC,YAAM+wJ,SAAS/wJ,MAAKg3D,mBAAmBh3D,MAAKg3D,gBAAgB7qD,SAAS;AACrE,UAAI4kJ,OAAQ,MAAKA,OAAQ;AACzB,WAAKpB,MAAM3vJ,KAAI;AACf,UAAI+wJ,OAAQ,MAAKC,OAAQ;AAAA,IAC3B;AAAA,IAEAE,WAAW/1H,QAAgD;AACzD,YAAMn7B,QAAOm7B,OAAOtB;AAEpB,UAAI75B,MAAKmR,SAAS,kBAAkB;AAClC,aAAK6+I,MAAO;AAAA,MACd;AAEA,WAAKL,MAAM3vJ,KAAI;AAAA,IACjB;AAAA,IAEA2/J,uBAAuB3/J,OAAcm7B,QAAiBulI,YAAqB;AACzE,YAAM;AAAA,QAAEzpG;AAAAA,QAAeC;AAAAA,MAAiB,IAAIl3D;AAI5C,UAAIi3D,iBAAa,QAAbA,cAAe9qD,QAAQ;AACzB,aAAKw0J,eAAc,GAEjB1pG,eACAj3D,OACAm7B,QACAulI,UACF;AAAA,MACF;AACA,UAAIxpG,oBAAgB,QAAhBA,iBAAkB/qD,QAAQ;AAC5B,aAAKw0J,eAAc,GAEjBzpG,kBACAl3D,OACAm7B,QACAulI,UACF;AAAA,MACF;AAAA,IACF;AAAA,IAEAhB,sBAAsB1/J,OAAcm7B,QAAgB;AAClD,YAAMb,YAAWt6B,MAAKg3D;AACtB,UAAI,EAAC18B,aAAQ,QAARA,UAAUnuB,QAAQ;AACvB,WAAKw0J,eAAqCrmI,GAAAA,WAAUt6B,OAAMm7B,MAAM;AAAA,IAClE;AAAA,IAEA4iI,yBACE6C,cACAC,0BACA;AACA,UAAI,KAAKjN,mBAAmB;AAAA,YAAAkN;AAC1B,aAAKhN,oBAAkBgN,iBACrB,KAAKhR,aAALgR,OAAAA,SAAAA,eAAehS,aACb,KAAK2N,cACLmE,cACAC,wBACF,CACF;AAAA,MACF;AACA,WAAKjN,oBAAoB;AACzB,WAAKuJ,uBAAuB;AAAA,IAC9B;AAAA,IAEArJ,mBAAmBxpE,WAAmB;AACpC,YAAMtqF,QAAO,KAAKy8J;AAClB,YAAMniI,YAAWt6B,MAAKi3D;AACtB,UAAI,EAAC38B,aAAQ,QAARA,UAAUnuB,QAAQ;AAEvB,YAAM40J,WAAW,KAAKzP,WAAwB;AAC9C,YAAMP,SAAS,KAAKoM;AACpB,YAAM6D,uBAAuB,KAAKjE,iBAAiBxvE;AACnD,UAAIwjE,OAAQ,MAAKA,OAAQ;AACzB,WAAK4P,eAEHrmI,GAAAA,WACAt6B,OACAqS,QACAA,QACAi4E,SACF;AACA,UAAIy2E,YAAYC,yBAAyB,KAAKjE,iBAAiBxvE,MAAM;AACnE,aAAKyiE,MAAO;AAAA,MACd;AACA,UAAIe,OAAQ,MAAKC,OAAQ;AAAA,IAC3B;AAAA,IAEAQ,4BAA4B;AAC1B,WAAK2L,uBAAuB;AAAA,IAC9B;AAAA,IAEAzL,cACE5iI,OACAiiI,QACA+N,4BACAnN,aACA;AACA,WAAKM,UACHnjI,OACA,MACAiiI,UAAM,OAANA,SAAU,OACV1+I,QACAA,QACAs/I,aACAt/I,QACAysJ,0BACF;AAAA,IACF;AAAA,IAEAzO,UACEljC,OACA6rC,wBACAnxB,WACAkpB,QACAmB,WACA/wJ,WACA;AACA,WAAK8wJ,UACH9kC,OACA0a,WACAkpB,QACAmB,oBAAAA,YAAa+O,gBACbjI,wBACA3mJ,QACAlR,SACF;AAAA,IACF;AAAA,IAEAmvJ,yBAAyB4Q,SAAiC;AACxD,UAAI,CAAC,KAAKpR,SAAU,QAAO;AAE3B,YAAMqR,eAAe,KAAKrR,SAASjB,cAAc,KAAK4N,cAAc11J,CAAAA,WAClE,KAAK+oJ,SAASd,gBAAgBjoJ,QAAOm6J,OAAO,CAC9C;AACA,UAAIC,gBAAgB,EAAG,QAAO;AAC9B,aAAO,KAAKrR,SAASd,gBAAgB,KAAKX,QAAQ8S,eAAe,CAAC,GAAG,GAAG;AAAA,IAC1E;AAAA,IAEAb,cAAcc,SAAkBj6J,MAA0B;AACxD,YAAMgpJ,SAAS,KAAKA;AAGpB,UAAIA,OAAO+D,eAAe/D,OAAOyN,QAAS;AAI1C,UAAIzN,OAAO0N,SAAS;AAClB,aAAK7N,MAAO;AACZ;AAAA,MACF;AAEA,UAAI,CAACoR,SAAS;AACZ;AAAA,MACF;AAEA,YAAMrtJ,YAAY5M,KAAKi5J;AACvB,YAAMiB,kBAAkB,KAAKnE;AAC7B,UAAInpJ,YAAY,KAAKstJ,kBAAkB,GAAG;AACxC,cAAMnwJ,SAAS6C,YAAYstJ;AAC3B,YAAInwJ,UAAU,GAAG;AACf,eAAKw/I,QAAQx/I,UAAU,CAAC;AACxB;AAAA,QACF;AAAA,MACF;AAGA,UAAI,KAAK82I,KAAKuC,cAAc;AAa1B,aAAKmG,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IAOA4Q,oBACE/wJ,SACA+5E,WACoB;AAGpB,UAAI/5E,QAAQoqD,OAAQ,QAAA;AAEpB,UAAI,KAAKoiG,iBAAiBtvJ,IAAI8C,OAAO,EAAG,QAAA;AAExC,UACE,KAAK+iJ,qBACL+I,iCAAiC59J,KAAK8R,QAAQ1Q,KAAK,GACnD;AACA,eAAA;AAAA,MACF;AAEA,UAAIyqF,aAAa,KAAKwlE,UAAU;AAC9B,cAAMyR,aAAa,KAAKzR,SAASpsB,KAC/B,KAAK+4B,cACL11J,CAAAA,WAASA,OAAMlH,UAAU0Q,QAAQ1Q,KACnC;AACA,YAAI0hK,cAAcA,WAAW7tJ,QAAQ42E,UAAU52E,OAAO;AACpD,iBAAA;AAAA,QACF;AAAA,MACF;AAEA,WAAKqpJ,iBAAiBpiJ,IAAIpK,OAAO;AAEjC,UAAI,CAAC,KAAK4/I,OAAOqR,mBAAmBjxJ,QAAQ1Q,KAAK,GAAG;AAClD,eAAA;AAAA,MACF;AAEA,aAAA;AAAA,IACF;AAAA,IAEAmgK,cAAczvJ,SAAoBkxJ,cAAoC;AACpE,YAAMpO,mBAAmB,KAAKC;AAC9B,YAAMoO,iBAAiBnxJ,QAAQY,SAAS;AAIxC,YAAMwwJ,gBACJD,kBACAD,sBACA,CAAC,KAAKnO;AAER,UACEqO,iBACA,KAAK3Z,KAAKuC,WAAY,KACtBkX,iBAAY,GACZ;AACA,aAAK/Q,QAAQ,CAAC;AAAA,MAChB;AAEA,YAAMkR,eAAe,KAAKzX,YAAa;AACvC,UACEyX,uBACAA,wBACAA,qBACA;AACA,aAAK5R,MAAO;AAAA,MACd;AAEA,UAAI38H;AACJ,UAAIquI,gBAAgB;AAClBruI,cAAM,KAAK9iB,QAAQ1Q,KAAK;AACxB,YAAI,KAAKswJ,OAAOY,OAAO8Q,wBAAwB;AAAA,cAAAC;AAC7C,gBAAM5wJ,UAAM4wJ,eAAGvxJ,QAAQ+C,QAAG,OAAA,SAAXwuJ,aAAapuJ,MAAMD;AAClC,cAAIvC,QAAQ;AACV,kBAAM6wJ,eAAe,IAAIr2J,OAAO,cAAcwF,SAAS,KAAK,GAAG;AAC/DmiB,kBAAMA,IAAI1d,QAAQosJ,cAAc,IAAI;AAAA,UACtC;AACA,cAAI,KAAK5R,OAAO0N,SAAS;AACvBxqI,kBAAMA,IAAI1d,QAAQ,YAAY;AAAA,CAAI;AAAA,UACpC,OAAO;AACL,gBAAIqsJ,aAAa,KAAK7R,OAAO+D,cACzB,IACA,KAAKlM,KAAK2C,iBAAkB;AAEhC,gBAAI,KAAKgU,cAA6B,EAAA,KAAK,KAAKxO,OAAO+D,aAAa;AAClE8N,4BAAc,KAAKtD,WAAY;AAAA,YACjC;AAEArrI,kBAAMA,IAAI1d,QAAQ,YAAY;AAAA,EAAK,IAAIE,OAAOmsJ,UAAU,CAAC,EAAE;AAAA,UAC7D;AAAA,QACF;AAAA,MACF,WAAW,CAAC3O,kBAAkB;AAC5BhgI,cAAM,KAAK9iB,QAAQ1Q,KAAK;AAAA,MAC1B,OAAO;AAILwzB,cAAM,KAAK9iB,QAAQ1Q,KAAK;AAAA,MAC1B;AAGA,UAAI,KAAKixJ,aAAc,MAAKgN,OAAQ;AAEpC,UAAI,KAAKhO,UAAU;AACjB,cAAM;AAAA,UAAEwN;AAAAA,UAAgCD;AAAAA,QAA8B,IACpE;AACF,aAAKC,iCAAiC;AACtC,aAAKD,gCAAgC;AACrC,aAAKp8J,OAAO,SAASsP,QAAQ+C,GAAG;AAChC,aAAKk2I,QAAQn2H,KAAKquI,cAAc;AAChC,aAAKrE,gCAAgCA;AACrC,aAAKC,iCAAiCA;AAAAA,MACxC,OAAO;AACL,aAAKr8J,OAAO,SAASsP,QAAQ+C,GAAG;AAChC,aAAKk2I,QAAQn2H,KAAKquI,cAAc;AAAA,MAClC;AAEA,UAAI,CAACA,kBAAkB,CAACrO,kBAAkB;AACxC,aAAK3C,QAAQ,GAAG,IAAI;AAAA,MACtB;AAEA,UAAIiR,iBAAiBF,iBAAY,GAAoC;AACnE,aAAK/Q,QAAQ,CAAC;AAAA,MAChB;AAAA,IACF;AAAA,IAEAiQ,eACExvJ,MACAmpB,WACAt6B,OACAm7B,QACAulI,aAAqB,GACrBp2E,WACA;AACA,YAAM23E,UAAUjiK,MAAKsT;AACrB,YAAMof,MAAM4H,UAASnuB;AACrB,UAAI+1J,SAAS,CAAC,CAACD;AACf,YAAME,gBAAgBD,SAASD,QAAQvuJ,MAAM9U,OAAO;AACpD,YAAMwjK,cAAcF,SAASD,QAAQruJ,IAAIhV,OAAO;AAChD,UAAIyjK,WAAW;AACf,UAAIC,wBAAwB;AAE5B,YAAM/Y,eAAe,KAAK+J,oBACtB,WAAY;AAAA,MAAE,IACd,KAAK5C,QAAQr6F,KAAK,IAAI;AAE1B,eAASnqD,IAAI,GAAGA,IAAIwmB,KAAKxmB,KAAK;AAC5B,cAAMqE,UAAU+pB,UAASpuB,CAAC;AAE1B,cAAMq2J,cAAc,KAAKjB,oBAAoB/wJ,SAAS+5E,SAAS;AAC/D,YAAIi4E,mBAA0C;AAC5CL,mBAAS;AACT;AAAA,QACF;AACA,YAAIA,UAAU3xJ,QAAQ+C,OAAOivJ,mBAA0C;AACrE,gBAAMC,mBAAmBjyJ,QAAQ+C,IAAII,MAAM9U;AAC3C,gBAAM6jK,iBAAiBlyJ,QAAQ+C,IAAIM,IAAIhV;AACvC,cAAIuS,YAA+B;AACjC,gBAAID,SAAS;AACb,gBAAIhF,MAAM,GAAG;AAGX,kBACE,KAAK87I,KAAKuC,iBACTh6I,QAAQY,SAAS,iBAChBqxJ,qBAAqBC,iBACvB;AACAvxJ,yBAASoxJ,wBAAwB;AAAA,cACnC;AAAA,YACF,OAAO;AACLpxJ,uBAASsxJ,mBAAmBH;AAAAA,YAC9B;AACAA,uBAAWI;AAEXlZ,yBAAar4I,MAAM;AACnB,iBAAK8uJ,cAAczvJ,UAAiC;AAEpD,gBAAIrE,IAAI,MAAMwmB,KAAK;AACjB62H,2BACEp1I,KAAKC,IAAI+tJ,gBAAgBE,UAAUC,qBAAqB,CAC1D;AACAD,yBAAWF;AAAAA,YACb;AAAA,UACF,WAAWhxJ,SAAI,GAAyB;AACtC,kBAAMD,SACJsxJ,oBAAoBt2J,MAAM,IAAIi2J,gBAAgBE;AAChDA,uBAAWI;AAEXlZ,yBAAar4I,MAAM;AACnB,iBAAK8uJ,cAAczvJ,UAAiC;AAEpD,gBAAIrE,IAAI,MAAMwmB,KAAK;AACjB62H,2BAAap1I,KAAKE,IAAI,GAAG+tJ,cAAcC,QAAQ,CAAC;AAChDA,yBAAWD;AAAAA,YACb;AAAA,UACF,OAAO;AACL,kBAAMlxJ,SACJsxJ,oBAAoBt2J,MAAM,IAAIk2J,cAAc1B,aAAa2B;AAC3DA,uBAAWI;AAEXlZ,yBAAar4I,MAAM;AACnB,iBAAK8uJ,cAAczvJ,UAAiC;AAAA,UACtD;AAAA,QACF,OAAO;AACL2xJ,mBAAS;AACT,cAAIK,mBAA0C;AAC5C;AAAA,UACF;AAEA,cAAI7vI,QAAQ,GAAG;AACb,kBAAMgwI,aAAanyJ,QAAQ+C,MACvB/C,QAAQ+C,IAAII,MAAM9U,SAAS2R,QAAQ+C,IAAIM,IAAIhV,OAC3C,CAACw9J,YAAY39J,KAAK8R,QAAQ1Q,KAAK;AAEnC,kBAAM8iK,oBACJD,cACA,CAACj3I,YAAYzrB,KAAI,KACjB,CAAC4e,YAAYuc,MAAM,KACnB,CAACtR,kBAAkBsR,MAAM,KACzB,CAAC9Q,eAAerqB,KAAI;AAEtB,gBAAImR,YAA+B;AACjC,mBAAK6uJ,cACHzvJ,SACCoyJ,qBAAqB3iK,MAAKmR,SAAS,sBACjCuxJ,cAAcx2I,WAAWiP,QAAQ;AAAA,gBAAEtB,MAAM75B;AAAAA,eAAM,SAGpD;AAAA,YACF,WAAW2iK,qBAAqBxxJ,YAAgC;AAC9D,mBAAK6uJ,cAAczvJ,UAAiC;AAAA,YACtD,OAAO;AACL,mBAAKyvJ,cAAczvJ,UAAqC;AAAA,YAC1D;AAAA,UACF,WACEY,SAAI,KACJ,EAAEnR,MAAKmR,SAAS,sBAAsBnR,MAAKg8B,WAAW7vB,SAAS,MAC/DnM,MAAKmR,SAAS,eACdnR,MAAKmR,SAAS,mBACd;AAMA,iBAAK6uJ,cACHzvJ,SACArE,MAAM,IAAC,IAEHA,MAAMwmB,MAAM,SAGlB;AAAA,UACF,OAAO;AACL,iBAAKstI,cAAczvJ,UAAqC;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAEA,UAAIY,SAA8B,KAAI+wJ,UAAUG,UAAU;AACxD,aAAKnF,mBAAmBmF;AAAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAGAtzJ,SAAOyE,OAAO+oJ,QAAQjmG,WAAW0lG,kBAAkB;AAEhB;AACjC,QAAAN,YAAAA,yBAAwBa,OAAO;AAAA,EACjC;AAAC7pJ,YAAA,UAKc6pJ;AAEf,WAAS0E,eAA8BlS,iBAAyB7yC,MAAe;AAC7E,SAAKn1G,MAAM,KAAK,OAAOgoJ,eAAe;AACtC,QAAI,CAAC7yC,KAAM,MAAK8zC,MAAO;AAAA,EACzB;;;;;;;;;;;AC/4CA,MAAA4S,aAAA16J,mBAAA;AACA,MAAA26J,WAAA36J,iBAAA;AAiBA,WAAS46J,iBACP/2J,MACA5E,MACAy6D,KACQ;AACR,QAAIz6D,KAAK47J,6BAA6B;AACpC,UAAI,OAAOh3J,SAAS,UAAU;AAC5B,cAAM,IAAIoK,MACR,yGACF;AAAA,MACF;AACA,UAAI,CAAChP,KAAK+sJ,aAAa;AACrB,cAAM,IAAI/9I,MACR,0EACF;AAAA,MACF;AACA,UAAIhP,KAAKy2J,WAAWz2J,KAAKy2J,YAAY,QAAQ;AAC3C,cAAM,IAAIznJ,MACR,2EACF;AAAA,MACF;AACA,UAAIhP,KAAKipJ,UAAU;AACjB,cAAM,IAAIj6I,MACR,4EACF;AAAA,MACF;AACA,UAAIhP,KAAK8uJ,aAAa;AACpB,cAAM,IAAI9/I,MACR,+EACF;AAAA,MACF;AACA,UAAI,CAACX,MAAMC,QAASmsD,IAAYrnC,MAAM,GAAG;AACvC,cAAM,IAAIpkB,MACR,qJACF;AAAA,MACF;AAAA,IACF;AAEA,UAAMg6I,SAAiB;AAAA,MACrB4P,wBAAwB54J,KAAK44J;AAAAA,MAC7BE,uBAAuB94J,KAAK84J;AAAAA,MAC5BuB,oBAAoBr6J,KAAKq6J;AAAAA,MACzBlP,gBAAgBnrJ,KAAK47J;AAAAA,MACrB7O,aAAa/sJ,KAAK+sJ;AAAAA,MAClBoL,sBAAsBn4J,KAAKm4J;AAAAA,MAC3BhlI,UAAUnzB,KAAKmzB,YAAY,QAAQnzB,KAAKmzB;AAAAA,MACxCsjI,SAASz2J,KAAKy2J;AAAAA,MACdxN,UAAUjpJ,KAAKipJ;AAAAA,MACfyN,SAAS12J,KAAK02J;AAAAA,MACd9M,QAAQ;AAAA,QACN8Q,wBAAwB;AAAA,QACxBtE,OAAO;AAAA,MACR;AAAA,MACDtH,aAAWlnJ,OAAAyE,OAAA;AAAA,QACTwvJ,QAAQ;AAAA,QACRC,MAAM;AAAA,QACNC,SAA+C;AAAA,SAC5C/7J,KAAK8uJ,WAAW;AAAA,MAErBhpE,YAAY9lF,KAAK8lF;AAAAA,MACjBrzE,yBAAyBzS,KAAKyS;AAAAA,IAC/B;AAEkC;AAAA,UAAAupJ;AACjChT,aAAOl2I,yBAAyB9S,KAAK8S;AACrCk2I,aAAO8F,YAAYmN,OAAOj8J,KAAKk8J;AAC/BlT,aAAO2F,4BAAwBqN,wBAAGh8J,KAAK2uJ,6BAAwB,OAAAqN,wBAAI;AAAA,IACrE;AAEA,QAAIhT,OAAOC,UAAU;AACnBD,aAAOyN,UAAU;AAEjBzN,aAAOqR,qBACLrR,OAAOqR,uBAAuB,MAAMrR,OAAO71H;AAAAA,IAC/C,OAAO;AACL61H,aAAOqR,qBACLrR,OAAOqR,uBACN3hK,CAAAA,WACCswJ,OAAO71H,YACPz6B,OAAM02B,SAAS,UAAU,KACzB12B,OAAM02B,SAAS,WAAW;AAAA,IAChC;AAEA,QAAI45H,OAAOyN,YAAY,QAAQ;AAC7BzN,aAAOyN,UAAU,OAAO7xJ,SAAS,YAAYA,KAAKI,SAAS;AAE3D,UAAIgkJ,OAAOyN,SAAS;AAClBxnJ,gBAAQtX,MACN,mEACKqI,KAAK27D,QAAQ,6BAA6B,OAAO,GACxD;AAAA,MACF;AAAA,IACF;AAEA,QAAIqtF,OAAOyN,WAAWzN,OAAOmC,gBAAgB;AAC3CnC,aAAOY,OAAO8Q,yBAAyB;AAAA,IACzC;AAEA,UAAM;AAAA,MAAE9B;AAAAA,MAAwBE;AAAAA,MAAuBuB;AAAAA,IAAmB,IACxErR;AAEF,QAAI4P,0BAA0B,CAACyB,mBAAmBzB,sBAAsB,GAAG;AACzE5P,aAAO4P,yBAAyB1tJ;AAAAA,IAClC;AACA,QAAI4tJ,yBAAyB,CAACuB,mBAAmBvB,qBAAqB,GAAG;AACvE9P,aAAO8P,wBAAwB5tJ;AAAAA,IACjC;AAEA,WAAO89I;AAAAA,EACT;AAkI+C;AAQ7Cz9I,UAAqB,gBAAG,MAAM4wJ,cAAc;AAAA,MAI1CzwJ,YAAY+uD,KAAaz6D,OAAyB,CAAA,GAAI4E,MAAe;AAAA,aAH7Dw3J,OAAI;AAAA,aACJC,UAAO;AAAA,aACPtd,OAAI;AAEV,aAAKqd,OAAO3hG;AACZ,aAAK4hG,UAAUV,iBAAiB/2J,MAAM5E,MAAMy6D,GAAG;AAC/C,aAAKskF,OAAO/+I,KAAKs8J,aAAa,IAAIzd,WAAAA,QAAU7+I,MAAM4E,IAAI,IAAI;AAAA,MAC5D;AAAA,MACA2xJ,WAA4B;AAC1B,cAAMp8J,WAAU,IAAIi7J,SAAAA,QAAQ,KAAKiH,SAAS,KAAKtd,IAAI;AAEnD,eAAO5kJ,SAAQo8J,SAAS,KAAK6F,IAAI;AAAA,MACnC;AAAA,IACD;AAAA,EACH;AASe,WAAS7F,UACtB97F,KACAz6D,OAAyB,CAAA,GACzB4E,MACiB;AACjB,UAAMokJ,SAAS2S,iBAAiB/2J,MAAM5E,MAAMy6D,GAAG;AAC/C,UAAM9vD,MAAM3K,KAAKs8J,aAAa,IAAIzd,WAAS,QAAC7+I,MAAM4E,IAAI,IAAI;AAE1D,UAAMzK,WAAU,IAAIi7J,SAAAA,QAClBpM,QACAr+I,KACC8vD,IAAYrnC,QACb,OAAOxuB,SAAS,WAAWA,OAAO,IACpC;AAEA,WAAOzK,SAAQo8J,SAAS97F,GAAG;AAAA,EAC7B;;;;;;;;;;;;;;;;;;;;;AC/SA,MAAAH,KAAAv5D,aAAA;AAA4C,QAAA;AAAA,IAAnC0sB;AAAAA,EAAY,IAAA6sC;AAWd,WAASiiG,WAEd5tI,UACiB;AACjB,QAAIp3B,QAAO;AACX,WAAQA,QAAOA,MAAK65I,YAAa;AAC/B,UAAIziH,SAASp3B,KAAI,EAAG,QAAOA;AAAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAQO,WAASglI,KAEd5tG,UACiB;AACjB,QAAIp3B,QAAO;AACX,OAAG;AACD,UAAIo3B,SAASp3B,KAAI,EAAG,QAAOA;AAAAA,IAC7B,SAAUA,QAAOA,MAAK65I;AACtB,WAAO;AAAA,EACT;AAMO,WAASwG,oBAA+D;AAC7E,WAAO,KAAK2kB,WAAWpvC,OAAKA,EAAEpoG,WAAU,CAAE;AAAA,EAC5C;AAMO,WAASy3I,qBAA0D;AACxE,QAAIjlK,QAAO;AAEX,OAAG;AACD,UACE,CAACA,MAAK65I,cACL/iI,MAAMC,QAAQ/W,MAAKklK,SAAS,KAAKllK,MAAK+sB,eACvC;AACA;AAAA,MACF,OAAO;AACL/sB,QAAAA,QAAOA,MAAK65I;AAAAA,MACd;AAAA,IACF,SAAS75I;AAET,QAAIA,UAASA,MAAK4e,UAAW,KAAI5e,MAAK4d,OAAM,IAAK;AAC/C,YAAM,IAAInG,MACR,sEACF;AAAA,IACF;AAEA,WAAOzX;AAAAA,EACT;AAUO,WAASmlK,8BAEdxsB,OACU;AACV,WAAO,KAAKysB,6BACVzsB,OACA,SAAU0sB,SAAS73J,GAAG83J,YAAY;AAChC,UAAIC;AACJ,YAAMr/J,OAAOgwB,aAAamvI,QAAQ5yJ,IAAI;AAEtC,iBAAW+yJ,aAAYF,YAAY;AACjC,cAAMtlK,QAAOwlK,UAASh4J,IAAI,CAAC;AAG3B,YAAI,CAAC+3J,UAAU;AACbA,qBAAWvlK;AACX;AAAA,QACF;AAGA,YAAIA,MAAK09B,WAAW6nI,SAAS7nI,YAAY19B,MAAK09B,SAAS;AAErD,cAAI19B,MAAKe,MAAMwkK,SAASxkK,KAAK;AAC3BwkK,uBAAWvlK;AACX;AAAA,UACF;AAAA,QACF;AAGA,cAAMylK,mBAAmBv/J,KAAKkV,QAAQmqJ,SAAS1oI,SAAS;AACxD,cAAM6oI,kBAAkBx/J,KAAKkV,QAAQpb,MAAK68B,SAAS;AACnD,YAAI4oI,mBAAmBC,iBAAiB;AAEtCH,qBAAWvlK;AAAAA,QACb;AAAA,MACF;AAEA,aAAOulK;AAAAA,IACT,CACF;AAAA,EACF;AAQO,WAASH,6BAEdzsB,OACAn/G,QACU;AACV,QAAI,CAACm/G,MAAMlrI,QAAQ;AACjB,aAAO;AAAA,IACT;AAEA,QAAIkrI,MAAMlrI,WAAW,GAAG;AACtB,aAAOkrI,MAAM,CAAC;AAAA,IAChB;AAGA,QAAIgtB,WAAWjxI;AAGf,QAAIkxI,iBAAiBC;AAGrB,UAAMP,aAAa3sB,MAAMvlI,IAAIpT,CAAAA,UAAQ;AACnC,YAAMwlK,YAAuB,CAAE;AAE/B,SAAG;AACDA,QAAAA,UAAS/rI,QAAQz5B,KAAI;AAAA,MACtB,UAASA,QAAOA,MAAK65I,eAAe75I,UAAS;AAG9C,UAAIwlK,UAAS/3J,SAASk4J,UAAU;AAC9BA,mBAAWH,UAAS/3J;AAAAA,MACtB;AAEA,aAAO+3J;AAAAA,IACT,CAAC;AAGD,UAAM9kE,QAAQ4kE,WAAW,CAAC;AAG1BQ,cAAW,UAASt4J,IAAI,GAAGA,IAAIm4J,UAAUn4J,KAAK;AAC5C,YAAMu4J,cAAcrlE,MAAMlzF,CAAC;AAE3B,iBAAWg4J,aAAYF,YAAY;AACjC,YAAIE,UAASh4J,CAAC,MAAMu4J,aAAa;AAE/B,gBAAMD;AAAAA,QACR;AAAA,MACF;AAGAF,wBAAkBp4J;AAClBq4J,mBAAaE;AAAAA,IACf;AAEA,QAAIF,YAAY;AACd,UAAIrsI,QAAQ;AACV,eAAOA,OAAOqsI,YAAYD,iBAAiBN,UAAU;AAAA,MACvD,OAAO;AACL,eAAOO;AAAAA,MACT;AAAA,IACF,OAAO;AACL,YAAM,IAAIpuJ,MAAM,4BAA4B;AAAA,IAC9C;AAAA,EACF;AAQO,WAASuuJ,cAA6C;AAC3D,QAAIhmK,QAAO;AACX,UAAM24I,QAAQ,CAAE;AAChB,OAAG;AACDA,YAAMjwI,KAAK1I,KAAI;AAAA,IACjB,SAAUA,QAAOA,MAAK65I;AACtB,WAAOlB;AAAAA,EACT;AAKO,WAASstB,WAA2BC,iBAAoC;AAC7E,WAAOA,gBAAgBC,aAAa,IAAI;AAAA,EAC1C;AAKO,WAASA,aAA6BC,eAAkC;AAC7E,WAAO,CAAC,CAAC,KAAKpB,WAAWvoI,YAAUA,WAAW2pI,aAAa;AAAA,EAC7D;AAEO,WAASj8E,UAA0Bk8E,gBAAmC;AAC3E,QAAIrmK,QAAO;AACX,WAAOA,OAAM;AACX,iBAAWyS,QAAQ4zJ,gBAAgB;AACjC,YAAIrmK,MAAKsB,KAAKmR,SAASA,KAAM,QAAO;AAAA,MACtC;AACAzS,MAAAA,QAAOA,MAAK65I;AAAAA,IACd;AAEA,WAAO;AAAA,EACT;;;;;;;;;;;;;;;AC5OA,MAAA92E,KAAAv5D,aAAA;AAMsB,QAAA;AAAA,IALpB0tD,qBAAAA;AAAAA,IACAI,mBAAAA;AAAAA,IACAgvG;AAAAA,IACAx3I;AAAAA,IACAU;AAAAA,EAAQ,IAAAuzC;AAIH,WAASwjG,gBACdjmK,QACmC;AAQ5B;AACL,UAAIA,OAAMwiG,MAAM5xF,OAAK4d,WAAW5d,CAAC,CAAC,GAAG;AACnC,YAAIgmD,sBAAqB;AACvB,iBAAOA,qBAAoB52D,MAAK;AAAA,QAClC;AAEA,eAAOgmK,0BAA0BhmK,MAAK;AAAA,MACxC,WAAWA,OAAMwiG,MAAM5xF,OAAKse,SAASte,CAAC,CAAC,GAAG;AACxC,YAAIomD,oBAAmB;AACrB,iBAAOA,mBAAkBh3D,MAAK;AAAA,QAChC;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;;;;;;;;;AC/BA,MAAAyiE,KAAAv5D,aAAA;AASA,MAAAg9J,QAAAh9J,cAAA;AAA4C,QAAA;AAAA,IAR1C4rB;AAAAA,IACAihC,mCAAAA;AAAAA,IACArjB;AAAAA,IACAuC;AAAAA,EAAkB,IAAAwtB;AAOL,WAAA1rD,SAAwC/V,OAAoB;AACzE,QAAI,CAAC,KAAK89D,eAAgB;AAI1B,UAAMgY,WAAU,KAAKhX,MAAMwgF,WAAWt/I,MAAKyM,IAAI;AAC/C,QAAIqpE,UAAS;AACX,UAAIA,SAAQ18C,WAAWiC,gBAAgB;AACrC,eAAOy6C,SAAQ18C,WAAWiC;AAAAA,MAC5B,OAAO;AACL,eAAO8pI,2CACLrvF,UACA,MACA91E,MAAKyM,IACP;AAAA,MACF;AAAA,IACF;AAGA,QAAIzM,MAAKyM,SAAS,aAAa;AAC7B,aAAOwnC,mBAAoB;AAAA,IAC7B,WAAWj0C,MAAKyM,SAAS,SAASzM,MAAKyM,SAAS,YAAY;AAC1D,aAAOilC,qBAAsB;AAAA,eACpB1xC,MAAKyM,SAAS,YAAa;AAAA,EAGxC;AAEA,WAAS04J,2CACPrvF,UACAp3E,OACA+N,MACA;AACA,UAAMzN,SAAQ,CAAE;AAEhB,UAAMomK,6BAAyC,CAAE;AACjD,QAAIpoB,qBAAqBqoB,4BACvBvvF,UACAp3E,OACA0mK,0BACF;AAEA,UAAME,WAAWC,yBAAyBzvF,UAASp3E,OAAM+N,IAAI;AAC7D,QAAI64J,UAAU;AACZ,YAAME,yBAAyBH,4BAC7BvvF,UACAwvF,SAASl/H,WACX;AAGA42G,2BAAqBA,mBAAmB9kH,OACtCx5B,CAAAA,UAAQ,CAAC8mK,uBAAuBjvI,SAAS73B,KAAI,CAC/C;AAGAM,MAAAA,OAAMoI,KAAKk+J,SAASjqI,cAAc;AAAA,IACpC;AAEA,QAAI2hH,mBAAmB7wI,QAAQ;AA4B7B6wI,yBAAmB51I,KAAK,GAAGg+J,0BAA0B;AAGrD,iBAAWK,aAAazoB,oBAAoB;AAC1Ch+I,QAAAA,OAAMoI,KAAKq+J,UAAUC,mBAAmB;AAAA,MAC1C;AAAA,IACF;AAEA,QAAI,CAAC1mK,OAAMmN,QAAQ;AACjB;AAAA,IACF;AAEA,YAAO84J,GAAAA,MAAAA,iBAAgBjmK,MAAK;AAAA,EAC9B;AAEA,WAASqmK,4BACPvvF,UACAp3E,OACAinK,WACA;AACA,UAAMtkB,aAAavrE,SAAQknE,mBAAmB5rI,MAAO;AACrDiwI,eAAWlpH,QAAQ29C,SAAQp3E,IAAI;AAC/B,WAAO2iJ,WAAWnpH,OAAOutI,eAAa;AACpCA,kBAAYA,UAAUz/B,QAAS;AAC/B,YAAM4/B,SAASH,UAAUI,gCAAgCnnK,KAAI;AAC7D,UAAIinK,aAAaC,WAAW,UAAWD,WAAUv+J,KAAKq+J,SAAS;AAC/D,aAAOG,WAAW;AAAA,IACpB,CAAC;AAAA,EACH;AAEA,WAASE,oCACPr5J,MACA/N,OACA;AACA,UAAMy6B,WAAWz6B,MAAKsB,KAAKm5B;AAE3B,UAAMK,QAAQ96B,MAAKkQ,IAAI,OAAO,EAAEo3H,QAAS;AACzC,UAAMzsG,OAAO76B,MAAKkQ,IAAI,MAAM,EAAEo3H,QAAS;AAEvC,QAAI/4D;AACJ,QAAI1zC,KAAK5c,aAAa;AAAA,MAAElQ;AAAAA,IAAK,CAAC,GAAG;AAC/BwgE,eAASzzC;AAAAA,IACX,WAAWA,MAAM7c,aAAa;AAAA,MAAElQ;AAAAA,IAAK,CAAC,GAAG;AACvCwgE,eAAS1zC;AAAAA,IACX;AAEA,QAAI0zC,QAAQ;AACV,UAAI9zC,aAAa,OAAO;AACtB,eAAO8zC,OAAOy4F,kBAAmB;AAAA,MACnC;AACA,UAAI5xI,gCAAgCyC,SAAS4C,QAAQ,GAAG;AACtD,eAAOuY,qBAAsB;AAAA,MAC/B;AAEA;AAAA,IACF;AAEA,QAAIvY,aAAa,SAASA,aAAa,KAAM;AAE7C,QAAI4sI;AACJ,QAAIC;AACJ,QAAIzsI,KAAKpb,kBAAkB;AAAA,MAAEgb,UAAU;AAAA,IAAS,CAAC,GAAG;AAClD4sI,mBAAaxsI;AACbysI,iBAAWxsI;AAAAA,IACb,WAAWA,MAAMrb,kBAAkB;AAAA,MAAEgb,UAAU;AAAA,IAAS,CAAC,GAAG;AAC1D4sI,mBAAavsI;AACbwsI,iBAAWzsI;AAAAA,IACb;AAEA,QAAI,CAACwsI,WAAY;AAEjB,QAAI,CAACA,WAAWn3J,IAAI,UAAU,EAAE+N,aAAa;AAAA,MAAElQ;AAAAA,IAAK,CAAC,EAAG;AAGxDu5J,eAAWA,SAAShgC,QAAmC;AACvD,QAAI,CAACggC,SAASv5I,YAAa;AAI3B,UAAMw5I,YAAYD,SAAShmK,KAAKH;AAChC,QAAI,OAAOomK,cAAc,SAAU;AAInC,WAAOlxG,mCAAkCkxG,SAAS;AAAA,EACpD;AAEA,WAASC,yBACPpwF,UACAp3E,OACA+N,MACA;AACA,QAAI8rI;AACJ,WAAQA,aAAa75I,MAAK65I,YAAa;AACrC,UAAIA,WAAW37H,cAAa,KAAM27H,WAAWv8H,wBAAuB,GAAI;AACtE,YAAItd,MAAKe,QAAQ,QAAQ;AACvB;AAAA,QACF;AAEA,eAAO84I;AAAAA,MACT;AACA,UAAIA,WAAWrsH,cAAc;AAC3B,YAAIqsH,WAAWA,WAAWz5E,MAAMwgF,WAAW7yI,IAAI,MAAMqpE,SAAS;AAAA,MAChE;AAEAp3E,MAAAA,QAAO65I;AAAAA,IACT;AAAA,EACF;AAEA,WAASgtB,yBACPzvF,UACAp3E,OACA+N,MAIA;AACA,UAAM25B,cAAc8/H,yBAAyBpwF,UAASp3E,OAAM+N,IAAI;AAChE,QAAI,CAAC25B,YAAa;AAElB,UAAM3nC,QAAO2nC,YAAYx3B,IAAI,MAAM;AACnC,UAAMyoI,QAAQ,CAAC54I,KAAI;AACnB,UAAMO,SAAQ,CAAE;AAEhB,aAASkN,IAAI,GAAGA,IAAImrI,MAAMlrI,QAAQD,KAAK;AACrC,YAAMxN,QAAO24I,MAAMnrI,CAAC;AAEpB,UAAIxN,MAAKye,uBAAuB;AAC9B,YAAIze,MAAKsB,KAAKm5B,aAAa,MAAM;AAC/Bk+G,gBAAMjwI,KAAK1I,MAAKkQ,IAAI,MAAM,CAAC;AAC3ByoI,gBAAMjwI,KAAK1I,MAAKkQ,IAAI,OAAO,CAAC;AAAA,QAC9B;AAAA,MACF,WAAWlQ,MAAK8c,sBAAsB;AACpC,cAAMrK,OAAO20J,oCAAoCr5J,MAAM/N,KAAI;AAC3D,YAAIyS,KAAMnS,CAAAA,OAAMoI,KAAK+J,IAAI;AAAA,MAC3B;AAAA,IACF;AAEA,QAAInS,OAAMmN,QAAQ;AAChB,aAAO;AAAA,QACLkvB,iBAAgB4pI,GAAAA,MAAe,iBAACjmK,MAAK;AAAA,QACrConC;AAAAA,MACD;AAAA,IACH;AAEA,WAAOm/H,yBAAyBzvF,UAAS1vC,aAAa35B,IAAI;AAAA,EAC5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpPA,QAAAg1D,KAAAv5D,aAAA;AAsBA,QAAAi+J,oBAAAj+J,wBAAA;AAEA,QAAAg9J,QAAAh9J,cAAA;AAA4C,UAAA;AAAA,MAvB1C+rB;AAAAA,MACAG;AAAAA,MACAF;AAAAA,MACAG;AAAAA,MACAC;AAAAA,MACA8Z;AAAAA,MACAC;AAAAA,MACAE;AAAAA,MACArf,4BAAAA;AAAAA,MACAuhB;AAAAA,MACArX,YAAAA;AAAAA,MACAsV;AAAAA,MACAgD;AAAAA,MACAmB;AAAAA,MACAG;AAAAA,MACAc;AAAAA,MACAG;AAAAA,MACAt3B;AAAAA,IAAY,IAAA8kD;AASP,aAASp4B,qBAAyD;AACvE,UAAI,CAAC,KAAKz6B,IAAI,IAAI,EAAE+N,aAAY,EAAI;AACpC,aAAO,KAAK/N,IAAI,MAAM,EAAE82J,kBAAmB;AAAA,IAC7C;AAEO,aAASlyH,mBAAmBxzC,OAA4B;AAC7D,aAAOA,MAAKq7B;AAAAA,IACd;AAEAmY,uBAAmB4yH,cAAc;AAE1B,aAAShoH,eAAep+C,OAAwB;AACrD,aAAOA,MAAKq7B;AAAAA,IACd;AAEA+iB,mBAAegoH,cAAc;AAEtB,aAAS1mH,sBAA2D;AACzE,aAAO,KAAK9wC,IAAI,YAAY,EAAE82J,kBAAmB;AAAA,IACnD;AAEO,aAASp+H,cAEdtnC,OACA;AACA,UAAIA,MAAKs3B,OAAOnmB,SAAS,cAAc;AAErC,eAAOs/B,sBAAsBzwC,MAAKs3B,MAAM;AAAA,MAC1C;AAAA,IACF;AAEO,aAASoV,kBAAkB;AAChC,aAAOmG,qBAAsB;AAAA,IAC/B;AAEO,aAAS9J,gBAAgB/oC,OAAyB;AACvD,YAAMm5B,WAAWn5B,MAAKm5B;AAEtB,UAAIA,aAAa,QAAQ;AACvB,eAAO8a,mBAAoB;AAAA,MAC5B,WAAU5f,uBAAuBkC,SAAS4C,QAAQ,GAAG;AACpD,eAAOuY,qBAAsB;AAAA,MAC9B,WAAUpd,uBAAuBiC,SAAS4C,QAAQ,GAAG;AACpD,eAAO0Z,qBAAsB;AAAA,MAC9B,WAAUze,wBAAwBmC,SAAS4C,QAAQ,GAAG;AACrD,eAAOoV,sBAAuB;AAAA,MAChC;AAAA,IACF;AAEO,aAASvK,iBAEdhkC,OACA;AACA,YAAMm5B,WAAWn5B,MAAKm5B;AAEtB,UAAIjF,wBAAwBqC,SAAS4C,QAAQ,GAAG;AAC9C,eAAOuY,qBAAsB;AAAA,MAC9B,WAAUzd,yBAAyBsC,SAAS4C,QAAQ,GAAG;AACtD,eAAOoV,sBAAuB;AAAA,MAChC,WAAWpV,aAAa,KAAK;AAC3B,cAAMK,QAAQ,KAAK5qB,IAAI,OAAO;AAC9B,cAAM2qB,OAAO,KAAK3qB,IAAI,MAAM;AAE5B,YAAI2qB,KAAK8sI,WAAW,QAAQ,KAAK7sI,MAAM6sI,WAAW,QAAQ,GAAG;AAE3D,iBAAO30H,qBAAsB;AAAA,QAC/B,WAAWnY,KAAK8sI,WAAW,QAAQ,KAAK7sI,MAAM6sI,WAAW,QAAQ,GAAG;AAElE,iBAAOxzH,qBAAsB;AAAA,QAC/B;AAGA,eAAOiB,oBAAoB,CACzBjB,wBACAnB,qBAAsB,CAAA,CACvB;AAAA,MACH;AAAA,IACF;AAEO,aAASxK,oBAAuD;AACrE,YAAMo/H,gBAAgB,CACpB,KAAK13J,IAAI,MAAM,EAAE82J,kBAAmB,GACpC,KAAK92J,IAAI,OAAO,EAAE82J,kBAAiB,CAAE;AAGvC,cAAOT,GAAAA,MAAAA,iBAAgBqB,aAAa;AAAA,IACtC;AAEO,aAASrhI,wBAA+D;AAC7E,YAAMqhI,gBAAgB,CACpB,KAAK13J,IAAI,YAAY,EAAE82J,kBAAmB,GAC1C,KAAK92J,IAAI,WAAW,EAAE82J,kBAAiB,CAAE;AAG3C,cAAOT,GAAAA,MAAAA,iBAAgBqB,aAAa;AAAA,IACtC;AAEO,aAASn+H,qBAAyD;AACvE,aAAO,KAAKv5B,IAAI,aAAa,EAAEstD,IAAG,EAAGwpG,kBAAmB;AAAA,IAC1D;AAEO,aAASr9H,0BAEd;AACA,aAAO,KAAKz5B,IAAI,YAAY,EAAE82J,kBAAmB;AAAA,IACnD;AAEO,aAAS5hI,uBAA6D;AAC3E,aAAO,KAAKl1B,IAAI,OAAO,EAAE82J,kBAAmB;AAAA,IAC9C;AAEO,aAASz8H,iBAEdjpC,OACA;AACA,YAAMm5B,WAAWn5B,MAAKm5B;AACtB,UAAIA,aAAa,QAAQA,aAAa,MAAM;AAC1C,eAAOuY,qBAAsB;AAAA,MAC/B;AAAA,IACF;AAEO,aAASjL,gBAAgB;AAC9B,aAAOoM,qBAAsB;AAAA,IAC/B;AAEO,aAASlM,iBAAiB;AAC/B,aAAO+K,qBAAsB;AAAA,IAC/B;AAEO,aAAS5K,iBAAiB;AAC/B,aAAOyH,sBAAuB;AAAA,IAChC;AAEO,aAASwnH,cAAc;AAC5B,aAAOrnH,0BAA2B;AAAA,IACpC;AAEO,aAAS1H,gBAAgB;AAC9B,aAAOyJ,sBAAsBrX,YAAW,QAAQ,CAAC;AAAA,IACnD;AAEO,aAASqO,mBAAmB;AACjC,aAAOgJ,sBAAsBrX,YAAW,QAAQ,CAAC;AAAA,IACnD;AAEO,aAASwK,kBAAkB;AAChC,aAAO6M,sBAAsBrX,YAAW,OAAO,CAAC;AAAA,IAClD;AAEO,aAAS2O,cAAc;AAC5B,aAAOnE,gBAAiB;AAAA,IAC1B;AAEAmE,gBAAYq+H,cAAc;AAE1B,aAASG,OAAO;AACd,aAAO91H,sBAAsBrX,YAAW,UAAU,CAAC;AAAA,IACrD;AAUA,UAAMotI,cAAct3I,4BAA2B,YAAY;AAC3D,UAAMu3I,eAAev3I,4BAA2B,aAAa;AAC7D,UAAMw3I,iBAAiBx3I,4BAA2B,eAAe;AACjE,UAAMy3I,kBAAkBz3I,4BAA2B,gBAAgB;AAC5D,aAAS2V,iBAAiD;AAC/D,YAAM;AAAA,QAAEvN;AAAAA,MAAQ,IAAG,KAAKt3B;AACxB,UAAIymK,aAAanvI,MAAM,GAAG;AACxB,eAAO+W,oBAAoBwE,sBAAsB;AAAA,MACnD,WACE2zH,YAAYlvI,MAAM,KAClBovI,eAAepvI,MAAM,KAErB3a,aAAa2a,QAAQ;AAAA,QAAE7qB,MAAM;AAAA,MAAQ,CAAC,GACtC;AACA,eAAO4hC,oBAAoBD,mBAAmB;AAAA,MAChD,WAAWu4H,gBAAgBrvI,MAAM,GAAG;AAClC,eAAO+W,oBACL2E,oBAAoB,CAACH,qBAAoB,GAAIzE,kBAAmB,CAAA,CAAC,CACnE;AAAA,MACF;AAEA,aAAOw4H,YAAY,KAAKh4J,IAAI,QAAQ,CAAC;AAAA,IACvC;AAEO,aAAS09B,2BAEd;AACA,aAAOs6H,YAAY,KAAKh4J,IAAI,KAAK,CAAC;AAAA,IACpC;AAEA,aAASg4J,YAAYtvI,QAAkB;AACrCA,eAASA,OAAO0uG,QAAS;AAEzB,UAAI1uG,OAAOpL,cAAc;AACvB,cAAM;AAAA,UAAElsB,MAAAA;AAAAA,QAAK,IAAIs3B;AACjB,YAAIt3B,MAAK66B,OAAO;AACd,cAAI76B,MAAK46B,WAAW;AAClB,mBAAO6V,sBAAsBrX,YAAW,eAAe,CAAC;AAAA,UAC1D,OAAO;AACL,mBAAOqX,sBAAsBrX,YAAW,SAAS,CAAC;AAAA,UACpD;AAAA,QACF,OAAO;AACL,cAAIp5B,MAAK46B,WAAW;AAClB,mBAAO6V,sBAAsBrX,YAAW,UAAU,CAAC;AAAA,UACrD,WAAW9B,OAAOt3B,KAAK+6B,YAAY;AACjC,mBAAOzD,OAAOt3B,KAAK+6B;AAAAA,UACrB,MAAO;AAAA,QAGT;AAAA,MACF;AAAA,IACF;AAAA;;;;;;;;;;;;;;;;ACpPA,MAAA8rI,YAAA3+J,gBAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAqBsB,QAAA;AAAA,IApBpBkmC;AAAAA,IACAttB;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAyB;AAAAA,IACAgL;AAAAA,IACAvL;AAAAA,IACAvF;AAAAA,IACA6F;AAAAA,IACAI;AAAAA,IACAU;AAAAA,IACAsF;AAAAA,IACAkC;AAAAA,IACAtC;AAAAA,IACA/E;AAAAA,IACAG;AAAAA,IACAK;AAAAA,IACAE;AAAAA,IACA0uB;AAAAA,IACAoB;AAAAA,EAAkB,IAAAwtB;AAQb,WAASikG,oBAAyD;AACvE,QAAIv0J,OAAO,KAAKmxI,QAAQ,gBAAgB;AACxC,QAAInxI,QAAQ,MAAM;AAChB,aAAOA;AAAAA,IACT;AACAA,WAAO21J,mBAAmB13J,KAAK,IAAI,KAAKg/B,kBAAmB;AAC3D,QAAIxqB,iBAAiBzS,IAAI,KAAK2Z,mBAAmB3Z,IAAI,GAAG;AACtDA,aAAOA,KAAKkqB;AAAAA,IACd;AACA,SAAKgnH,QAAQ,kBAAkBlxI,IAAI;AACnC,WAAOA;AAAAA,EACT;AAKA,QAAM41J,+BAA+B,oBAAIC,QAAS;AAM3C,WAASF,qBAAwC;AACtD,UAAM9mK,QAAO,KAAKA;AAElB,QAAI,CAACA,OAAM;AAET,UAAI,KAAKP,QAAQ,UAAU,KAAK84I,WAAWj6H,wBAAwB;AACjE,cAAMogD,SAAS,KAAK65E,WAAWA;AAC/B,cAAM0uB,eAAevoG,OAAO65E;AAG5B,YAAI75E,OAAOj/D,QAAQ,UAAUwnK,aAAa1qJ,iBAAgB,GAAI;AAC5D,iBAAOs2B,qBAAsB;AAAA,QAC/B;AAGA,YAAI6rB,OAAOj/D,QAAQ,UAAUwnK,aAAa9nJ,iBAAgB,GAAI;AAC5D,iBAAOivB,kBAAmB;AAAA,QAC5B;AAEA,eAAO6F,mBAAoB;AAAA,MAC7B,OAAO;AACL;AAAA,MACF;AAAA,IACF;AAGA,QAAIj0C,MAAKq7B,gBAAgB;AAEvB,aAAOr7B,MAAKq7B;AAAAA,IACd;AAEA,QAAI0rI,6BAA6Bt5J,IAAIzN,KAAI,GAAG;AAE1C;AAAA,IACF;AACA+mK,iCAA6BpsJ,IAAI3a,KAAI;AAErC,QAAI;AAAA,UAAAknK;AACF,UAAIC,UAEFN,UAAS7mK,MAAKmR,IAAI;AACpB,UAAIg2J,SAAS;AACX,eAAOA,QAAQ/3J,KAAK,MAAMpP,KAAI;AAAA,MAChC;AAGAmnK,gBAAUN,UAAS,KAAKtuB,WAAWpnI,IAAI;AACvC,WAAA+1J,WAAIC,oBAAAD,SAASd,aAAa;AACxB,eAAO,KAAK7tB,WAAWmtB,kBAAmB;AAAA,MAC5C;AAAA,IACF,UAAU;AACRqB,mCAA6BjiF,OAAO9kF,KAAI;AAAA,IAC1C;AAAA,EACF;AAEO,WAASqmK,WAEde,UACAC,MACS;AACT,WAAOC,YAAYF,UAAU,KAAK1B,kBAAiB,GAAI2B,IAAI;AAAA,EAC7D;AAEA,WAASC,YACPF,UACAj2J,MACAk2J,MACS;AACT,QAAID,aAAa,UAAU;AACzB,aAAO9jJ,uBAAuBnS,IAAI;AAAA,IACpC,WAAWi2J,aAAa,UAAU;AAChC,aAAOxkJ,uBAAuBzR,IAAI;AAAA,IACpC,WAAWi2J,aAAa,WAAW;AACjC,aAAOpmJ,wBAAwB7P,IAAI;AAAA,IACrC,WAAWi2J,aAAa,OAAO;AAC7B,aAAOtmJ,oBAAoB3P,IAAI;AAAA,IACjC,WAAWi2J,aAAa,SAAS;AAC/B,aAAO5kJ,sBAAsBrR,IAAI;AAAA,IACnC,WAAWi2J,aAAa,SAAS;AAC/B,aAAO3kJ,sBAAsBtR,IAAI;AAAA,IACnC,WAAWi2J,aAAa,QAAQ;AAC9B,aAAOjjJ,qBAAqBhT,IAAI;AAAA,IAClC,OAAO;AACL,UAAIk2J,MAAM;AACR,eAAO;AAAA,MACT,OAAO;AACL,cAAM,IAAIlxJ,MAAM,qBAAqBixJ,QAAQ,EAAE;AAAA,MACjD;AAAA,IACF;AAAA,EACF;AAEO,WAASG,gBAAgC96J,MAAuB;AACrE,UAAM0E,OAAO,KAAKu0J,kBAAmB;AACrC,QAAI5kJ,oBAAoB3P,IAAI,EAAG,QAAO;AAEtC,QAAI8S,sBAAsB9S,IAAI,GAAG;AAC/B,iBAAWq2J,SAASr2J,KAAKnS,OAAO;AAC9B,YAAI8hB,oBAAoB0mJ,KAAK,KAAKF,YAAY76J,MAAM+6J,OAAO,IAAI,GAAG;AAChE,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT,OAAO;AACL,aAAOF,YAAY76J,MAAM0E,MAAM,IAAI;AAAA,IACrC;AAAA,EACF;AAEO,WAASs2J,wBAEdC,UACS;AACT,UAAMnuI,OAAO,KAAKmsI,kBAAmB;AACrC,UAAMlsI,QAAQkuI,SAAShC,kBAAmB;AAE1C,QAAI,CAAC5kJ,oBAAoByY,IAAI,KAAK9L,qBAAqB8L,IAAI,GAAG;AAC5D,aAAOC,MAAMroB,SAASooB,KAAKpoB;AAAAA,IAC7B;AACA,WAAO;AAAA,EACT;AAEO,WAAS0zI,cAA8BnvF,aAA8B;AAC1E,UAAMvkD,OAAO,KAAKu0J,kBAAmB;AACrC,QAAIhwG,gBAAgB,SAAS;AAE3B,UACE9sC,cAAczX,IAAI,KAClB4P,sBAAsB5P,IAAI,KAC1BsS,sBAAsBtS,IAAI,GAC1B;AACA,eAAO;AAAA,MACT;AAAA,IACF;AACA,WACG+Q,wBAAwB/Q,IAAI,KAC3BwL,aAAaxL,KAAK8pB,IAAI;AAAA,MACpBxuB,MAAMipD;AAAAA,IACR,CAAC,KACFltC,kBAAkBrX,IAAI,KACrBwL,aAAaxL,KAAKywB,UAAU;AAAA,MAC1Bn1B,MAAMipD;AAAAA,IACR,CAAC;AAAA,EAEP;;;;;;;;;;;;;;;AC1LkBhjD,eAAA,QAAG,CACnB,SAAU8nJ,MAAgBr/H,QAAkB;AAC1C,UAAMwsI,eAKHnN,KAAK/6J,QAAQ,WAAW07B,OAAOrP,QAAS,KAAIqP,OAAOrd,aAAc,MAGjE08I,KAAK/6J,QAAQ,iBAAiB07B,OAAOhO,oBAAsB,KAG3DqtI,KAAK/6J,QAAQ,UAAU07B,OAAOte,mBAAqB,KAGnD29I,KAAKp+H,YAAY,kBAChBjB,OAAO9c,sBAAqB,KAC5B8c,OAAOn7B,KAAK68B,aAAa1wB,WAAW,KAGrCquJ,KAAK/6J,QAAQ,gBAAgB07B,OAAO9e,sBAAwB;AAE/D,QAAIsrJ,cAAc;AAChBxsI,aAAOqpH,OAAQ;AACf,aAAO;AAAA,IACT;AAAA,EACF,GAEA,SAAUgW,MAAgBr/H,QAAkB;AAC1C,QAAIA,OAAOvd,0BAA0Bud,OAAOn7B,KAAKq8B,YAAYlwB,WAAW,GAAG;AAIzEgvB,aAAOopH,YAAYppH,OAAOn7B,KAAKq8B,YAAY,CAAC,CAAC;AAC7C,aAAO;AAAA,IACT;AAAA,EACF,GAEA,SAAUm+H,MAAgBr/H,QAAkB;AAC1C,QAAIA,OAAO9P,YAAY;AAIrB,UAAImvI,KAAK/6J,QAAQ,QAAQ;AACvB07B,eAAOopH,YAAYppH,OAAOn7B,KAAKw5B,KAAK;AAAA,MACtC,OAAO;AAEL2B,eAAOopH,YAAYppH,OAAOn7B,KAAKu5B,IAAI;AAAA,MACrC;AACA,aAAO;AAAA,IACT;AAAA,EACF,GAEA,SAAUihI,MAAgBr/H,QAAkB;AAC1C,QACGA,OAAOve,cAAe,KAAI49I,KAAK/6J,QAAQ,gBACvC+6J,KAAK/6J,QAAQ,WACX07B,OAAOtP,OAAM,KAAMsP,OAAOxc,0BAA2B,IACxD;AACA67I,WAAKjW,YAAY;AAAA,QACfpzI,MAAM;AAAA,QACN0oB,MAAM,CAAA;AAAA,MACR,CAAqB;AACrB,aAAO;AAAA,IACT;AAAA,EACD,CAAA;;;;;;;;;;;;;;;;ACxEH,MAAA+tI,gBAAA1/J,oBAAA;AACA,MAAAw2I,SAAAx2I,aAAA;AACA,MAAA2/J,eAAA3/J,mBAAA;AAEA,MAAAumB,SAAAvmB,YAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AACA,MAAA4/J,gBAAA5/J,oBAAA;AACA,MAAAmxI,WAAAnxI,eAAA;AAAsC,QAAA;AAAA,IAF7Bi0D,uBAAAA;AAAAA,EAAqB,IAAAsF;AAIvB,WAAS+iF,SAAuB;AAAA,QAAAujB;AACrCC,qBAAiB54J,KAAK,IAAI;AAE1B64J,aAAAA,OAAO74J,KAAK,IAAI;AAEhB,QAAI84J,kBAAkB94J,KAAK,IAAI,GAAG;AAChC+4J,mBAAa/4J,KAAK,IAAI;AACtB;AAAA,IACF;AAEA,QAAI,GAAA24J,aAAC,KAAK5gK,SAAL4gK,QAAAA,WAAWK,UAAS;AACvBC,uBAAiBj5J,KAAK,IAAI;AAAA,IAC5B;AAEA,SAAKk5J,0BAA2B;AAChCC,YAAQn5J,KAAK,IAAI;AACjB+4J,iBAAa/4J,KAAK,IAAI;AAAA,EACxB;AAEO,WAASi5J,mBAAiC;AAC/C,UAAM1pG,WAAWxC,uBAAsB,KAAKn8D,MAAM,OAAO,OAAO,IAAI;AACpE+O,WAAOnK,KAAK+5D,QAAQ,EAAE7lC,QAAQrsB,UAAQ,KAAKqyD,MAAMmlF,cAAcx3I,IAAI,CAAC;AAAA,EACtE;AAEO,WAASy7J,oBAAkC;AAChD,QAAI,KAAK3vB,YAAY;AACnB,iBAAW9gI,MAAM+wJ,cAAAA,OAAO;AACtB,YAAI/wJ,GAAG,MAAM,KAAK8gI,UAAU,EAAG,QAAO;AAAA,MACxC;AAAA,IACF;AAAA,EACF;AAEO,WAASgwB,UAAwB;AACtC,QAAI/yJ,MAAMC,QAAQ,KAAKmuJ,SAAS,GAAG;AACjC,WAAKA,UAAU7pJ,OAAO,KAAKta,KAAe,CAAC;AAC3CgpK,oBAAiB,kBAACr5J,KAAK,MAAM,KAAK3P,KAAe,EAAE;AAAA,IACrD,OAAO;AACLipK,mBAAAA,aAAat5J,KAAK,MAAM,IAAI;AAAA,IAC9B;AAAA,EACF;AAEO,WAAS+4J,eAA6B;AAE3C,SAAKQ,kBAAkBC,OAAAA,cAAcC,OAAO;AAC5C,QAAI,KAAK1tI,QAAQ;AACf,UAAA+iH,uBAAe,KAAKC,KAAK,KAAKhjH,MAAM,EAAE2pD,OAAO,KAAK9kF,IAAI;AAAA,IACxD;AACA,SAAKA,OAAO;AAAA,EACd;AAEO,WAASgoK,mBAAiC;AAC/C,QAAI,KAAKc,SAAS;AAChB,YAAM,KAAKC,oBACT,4CACF;AAAA,IACF;AAAA,EACF;;;;;;;;;;;;ACjEA,MAAAtnG,KAAAv5D,aAAA;AAAqC,MAAA8gK,MAAAvnG;AAAA,QAAA;AAAA,IAA5B42E;AAAAA,EAAK,IAAA52E;AAAA,QAAA;AAAA,IAEZ5K,WAAAA;AAAAA,IACA9gB;AAAAA,IACA7M;AAAAA,IACAE;AAAAA,EAAkB,IAAA4/H;AAQpB,QAAMC,mBAAyC;AAAA,IAE7CntB,qBAAqBp9I,OAAMC,QAAO;AAGhC,UACED,MAAK2mB,gBAAe,KACpBgzH,MAAMhpH,YAAY3wB,MAAKsB,KAAKyM,IAAI,KAChC,CAAC/N,MAAK65I,WAAWjzH,sBAAqB,GACtC;AACA;AAAA,MACF;AAGA,UAAI5mB,MAAKsB,KAAKyM,SAAS,QAAQ;AAC7B,YAAIqyD,SAAQpgE,MAAKogE;AACjB,WAAG;AACD,cACEA,OAAMpgE,KAAKwtB,WAAU,KACrB,CAAC4yC,OAAMpgE,KAAKigB,6BACZ;AACA;AAAA,UACF;AAAA,QACF,SAAUmgD,SAAQA,OAAM3jC;AACxB,YAAI2jC,OAAOngE,CAAAA,OAAMuqK,kBAAkB9hK,KAAK03D,OAAMpgE,IAAI;AAAA,MACpD;AAGA,YAAMo3E,WAAUp3E,MAAKogE,MAAMwgF,WAAW5gJ,MAAKsB,KAAKyM,IAAI;AACpD,UAAI,CAACqpE,SAAS;AAGd,iBAAW2vF,aAAa3vF,SAAQknE,oBAAoB;AAClD,YAAIyoB,UAAU3mG,UAAUgX,SAAQp3E,KAAKogE,OAAO;AAC1CngE,UAAAA,OAAMwqK,iBAAiB;AACvBzqK,UAAAA,MAAK04E,KAAM;AACX;AAAA,QACF;AAAA,MACF;AAIA,UAAItB,aAAYn3E,OAAMmgE,MAAMwgF,WAAW5gJ,MAAKsB,KAAKyM,IAAI,EAAG;AAExD9N,MAAAA,OAAMggE,SAASjgE,MAAKsB,KAAKyM,IAAI,IAAIqpE;AAAAA,IACnC;AAAA,EACD;AAAA,EAEc,MAAMszF,YAAuC;AAAA,IAS1Dv2J,YAAYnU,OAAmBogE,QAAc;AAAA,WAR7CoqG,oBAAiB;AAAA,WACjBvqG,WAAQ;AAAA,WACRwqG,iBAAc;AAAA,WACNE,SAAM;AAAA,WACdvqG,QAAK;AAAA,WACGpgE,OAAI;AAAA,WACJ4qK,cAAW;AAIjB,WAAKJ,oBAAoB,CAAE;AAE3B,WAAKvqG,WAAW,CAAE;AAGlB,WAAKwqG,iBAAiB;AAEtB,WAAKE,SAAS,CAAE;AAEhB,WAAKvqG,QAAQA;AACb,WAAKpgE,OAAOA;AAGZ,WAAK4qK,cAAc;AAAA,IACrB;AAAA,IAGAC,kBAAkBzqG,QAAc;AAC9B,iBAAWr/D,QAAOsP,OAAOnK,KAAK,KAAK+5D,QAAQ,GAAG;AAC5C,cAAMmX,WAAU,KAAKnX,SAASl/D,IAAG;AACjC,YAAI,CAACq/D,OAAMi9E,wBAAwBt8I,MAAKq2E,SAAQ18C,UAAU,GAAG;AAC3D,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAGAowI,sBAAsB;AACpB,UAAI1qG,SAAQ,KAAKpgE,KAAKogE;AACtB,SAAG;AACD,YAAI,KAAKyqG,kBAAkBzqG,MAAK,GAAG;AACjC,eAAKuqG,OAAOjiK,KAAK03D,MAAK;AAAA,QACxB,OAAO;AACL;AAAA,QACF;AAGA,YAAI,KAAKoqG,kBAAkB3yI,SAASuoC,OAAMpgE,IAAI,GAAG;AAC/C;AAAA,QACF;AAAA,MACF,SAAUogE,SAAQA,OAAM3jC;AAAAA,IAC1B;AAAA,IAEAsuI,oBAAoB;AAClB,UAAI/qK,QAAO,KAAKgrK,mBAAoB;AACpC,UAAI,CAAChrK,MAAM;AAEX,UAAIirK,cAAcjrK,MAAKogE;AAGvB,UAAI6qG,YAAYjrK,SAASA,OAAM;AAC7BirK,sBAAcjrK,MAAKogE,MAAM3jC;AAAAA,MAC3B;AAGA,UAAIwuI,YAAYjrK,KAAK4e,UAAS,KAAMqsJ,YAAYjrK,KAAKwtB,cAAc;AACjE,mBAAWzf,QAAQsC,OAAOnK,KAAK,KAAK+5D,QAAQ,GAAG;AAE7C,cAAI,CAACgrG,YAAYjmB,cAAcj3I,IAAI,EAAG;AAEtC,gBAAMqpE,WAAU,KAAKnX,SAASlyD,IAAI;AAGlC,cAAIqpE,SAAQ75C,SAAS,WAAW65C,SAAQp3E,KAAK68B,cAAc,UAAU;AACnE;AAAA,UACF;AAIA,gBAAMquI,oBAAoB,KAAKC,2BAA2B/zF,SAAQp3E,IAAI;AAGtE,cAAIkrK,kBAAkBnqK,OAAOf,MAAKe,KAAK;AACrC,iBAAK6pK,cAAc;AACnB5qK,YAAAA,QAAOo3E,SAAQp3E;AAGf,uBAAWorK,iBAAiBh0F,SAAQknE,oBAAoB;AACtD,kBAAI,KAAK6sB,2BAA2BC,aAAa,EAAErqK,MAAMf,MAAKe,KAAK;AACjEf,gBAAAA,QAAOorK;AAAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAOprK;AAAAA,IACT;AAAA,IAEAgrK,qBAAqB;AACnB,YAAML,SAAS,KAAKA;AAEpB,YAAMvqG,SAAQuqG,OAAOntG,IAAK;AAE1B,UAAI,CAAC4C,OAAO;AAEZ,UAAIA,OAAMpgE,KAAKwtB,cAAc;AAC3B,YAAI,KAAK69I,oBAAoBjrG,MAAK,GAAG;AAEnC,cAAI,KAAKA,UAAUA,OAAO;AAG1B,gBAAMkrG,SAASlrG,OAAMpgE,KAAKkQ,IAAI,MAAM,EAAEA,IAAI,MAAM;AAChD,mBAAS1C,IAAI,GAAGA,IAAI89J,OAAO79J,QAAQD,KAAK;AAItC,gBAAI89J,OAAO99J,CAAC,EAAElM,KAAKgjJ,YAAa;AAChC,mBAAOgnB,OAAO99J,CAAC;AAAA,UACjB;AAAA,QAEF,OAAO;AAEL,iBAAO,KAAK+9J,6BAA8B;AAAA,QAC5C;AAAA,MACD,WAAUnrG,OAAMpgE,KAAK4e,aAAa;AACjC,eAAO,KAAK2sJ,6BAA8B;AAAA,MAC5C;AAAA,IACF;AAAA,IAEAA,+BAA+B;AAC7B,YAAMnrG,SAAQ,KAAKuqG,OAAOntG,IAAK;AAC/B,UAAI4C,OAAO,QAAO,KAAK+qG,2BAA2B/qG,OAAMpgE,IAAI;AAAA,IAC9D;AAAA,IAGAmrK,2BAA2BnrK,OAAgB;AACzC,SAAG;AACD,YAEE,CAACA,MAAK65I,cAEL/iI,MAAMC,QAAQ/W,MAAKklK,SAAS,KAAKllK,MAAK+sB,eACvC;AACA,iBAAO/sB;AAAAA,QACT;AAAA,MACF,SAAUA,QAAOA,MAAK65I;AAAAA,IACxB;AAAA,IAGAwxB,oBAAoBjrG,QAAc;AAChC,iBAAWryD,QAAQsC,OAAOnK,KAAK,KAAK+5D,QAAQ,GAAG;AAC7C,YAAI,CAACG,OAAM4kF,cAAcj3I,IAAI,EAAG;AAEhC,cAAMqpE,WAAU,KAAKnX,SAASlyD,IAAI;AAElC,YAAIqpE,SAAQ75C,SAAS,WAAW65C,SAAQmnE,SAAU,QAAO;AAAA,MAC3D;AACA,aAAO;AAAA,IACT;AAAA,IAEAitB,MAA0C;AACxC,WAAKxrK,KAAKq+D,SAASksG,kBAAkB,IAAI;AAEzC,UAAI,KAAKE,eAAgB;AAEzB,WAAKK,oBAAqB;AAE1B,YAAMW,WAAW,KAAKV,kBAAmB;AACzC,UAAI,CAACU,SAAU;AAIf,UAAIA,SAASprB,kBAAmB,MAAK,KAAKrgJ,KAAKqgJ,kBAAiB,EAAI;AAGpE,UAAIvkF,MACF2vG,SAASrrG,MAAMqhF,sBAAsB,KAAK;AAG5C,YAAMiD,aAAah6G,mBAAmBoxB,KAAK,KAAK97D,KAAKsB,IAAI;AAEzD,YAAMoqK,WAAW,KAAKd,cAAc,gBAAgB;AACpD,YAAM,CAACe,QAAQ,IAAIF,SAASC,QAAQ,EAAE,CACpCD,SAAS7rJ,qBAAoB,IACzB8kI,aACAl6G,oBAAoB,OAAO,CAACk6G,UAAU,CAAC,CAAC,CAC7C;AAED,YAAMjoH,SAAS,KAAKz8B,KAAK65I;AACzB,UAAIp9G,OAAOlW,aAAY,KAAM,KAAKvmB,KAAKklK,cAAczoI,OAAOn7B,KAAKygC,UAAU;AAGzE+5B,cAAMzkB,uBAAuBykB,GAAG;AAAA,MAClC;AAEA,WAAK97D,KAAK6lJ,YAAY1tF,WAAU2D,GAAG,CAAC;AAIpC,aAAO2vG,SAAS7rJ,qBAAsB,IAClC+rJ,SAASz7J,IAAI,MAAM,IACnBy7J,SAASz7J,IAAI,qBAAqB;AAAA,IACxC;AAAA,EACF;AAAC8D,UAAAA,UAAA02J;;;;;;;;;;;;;;;;;;;AC5QD,MAAA1qB,SAAAx2I,aAAA;AACA,MAAAumB,SAAAvmB,YAAA;AACA,MAAAmxI,WAAAnxI,eAAA;AACA,MAAAoiK,WAAApiK,eAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AA8YA,MAAAqiK,WAAAriK,eAAA;AAAoG,QAAA;AAAA,IA7YlG4hC;AAAAA,IACA4nB;AAAAA,IACA7tB;AAAAA,IACAU;AAAAA,IACAI;AAAAA,IACAkyB,WAAAA;AAAAA,IACArxB;AAAAA,IACAjqB;AAAAA,IACAO;AAAAA,IACAmD;AAAAA,IACAmM;AAAAA,IACAzO;AAAAA,IACAiB;AAAAA,IACAiC;AAAAA,IACA6oB;AAAAA,EAAc,IAAA+4B;AAST,WAAS+oG,aAEdC,QACY;AACZzC,aAAAA,iBAAiB54J,KAAK,IAAI;AAE1B,UAAM0f,QAAQ47I,gBAAgBt7J,KAAK,MAAMq7J,MAAM;AAE/C,UAAM;AAAA,MAAElyB;AAAAA,MAAYp9G;AAAAA,IAAO,IAAI;AAE/B,QACEo9G,WAAWl8H,sBAAqB,KAChCk8H,WAAW17H,mBAAkB,KAQ7BoC,yBAAyBkc,MAAM,KAC9Bo9G,WAAWv5H,2BAA4B,KAAI,KAAKqN,cAAa,GAC9D;AACA,aAAOksH,WAAWiyB,aAAa17I,KAAK;AAAA,IACrC,WACE,KAAK67I,WAAW,YAAY,KAAK,CAAC,KAAK1lJ,aAAc,KACrDszH,WAAW/7H,eAAc,KAAM,KAAK/c,QAAQ,QAC7C;AACA,UAAI,KAAKO,KAAM8uB,OAAM1nB,KAAK,KAAKpH,IAAI;AAEnC,aAAO,KAAK4qK,gCAAgC97I,KAAK;AAAA,IAClD,WAAUtZ,MAAMC,QAAQ,KAAKmuJ,SAAS,GAAG;AACxC,aAAOiH,uBAAuBz7J,KAAK,MAAM0f,KAAK;AAAA,IAChD,WAAW,KAAKg8I,sBAAsB;AACpC,YAAM9qK,QAAO,KAAKA;AAClB,YAAM+qK,0BACJ/qK,UACC,CAAC,KAAKqc,sBAAqB,KACzBrc,MAA+B05B,cAAc;AAElD,WAAK6qH,YAAYhgH,eAAewmI,0BAA0B,CAAC/qK,KAAI,IAAI,CAAA,CAAE,CAAC;AACtE,aAAQ,KAAoCmjJ,iBAC1C,QAEAr0H,KACF;AAAA,IACF,OAAO;AACL,YAAM,IAAI3Y,MACR,wGAEF;AAAA,IACF;AAAA,EACF;AAEO,WAAS60J,iBAEd71G,MACArmC,OACe;AACf25I,sBAAkBr5J,KAAK,MAAM+lD,MAAMrmC,MAAM3iB,MAAM;AAE/C,UAAMkrI,QAAuB,CAAE;AAG/B,SAAKusB,UAAU7pJ,OAAOo7C,MAAM,GAAG,GAAGrmC,KAAK;AACvC,aAAS5iB,IAAI,GAAGA,IAAI4iB,MAAM3iB,QAAQD,KAAK;AAAA,UAAA++J;AACrC,YAAMC,KAAK/1G,OAAOjpD;AAClB,YAAMxN,QAAO,KAAKysK,WAAWD,EAAE;AAC/B7zB,YAAMjwI,KAAK1I,KAAI;AAEf,WAAAusK,gBAAI,KAAKjzJ,YAALizJ,QAAAA,cAAcriB,OAAO;AACvBwiB,iBAAW,YAACh8J,KAAK1Q,OAAM,KAAKsZ,OAAO;AAAA,MACrC;AAAA,IACF;AAEA,UAAMqzJ,WAAWC,SAAAA,kBAAkBl8J,KAAK,IAAI;AAE5C,eAAW1Q,SAAQ24I,OAAO;AACxBk0B,eAAAA,SAASn8J,KAAK1Q,KAAI;AAClBA,MAAAA,MAAKQ,MAAM,WAAW;AAEtB,iBAAW8Y,YAAWqzJ,UAAU;AAC9BrzJ,QAAAA,SAAQwzJ,WAAW9sK,OAAM,IAAI;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO24I;AAAAA,EACT;AAEO,WAASwzB,uBAEd/7I,OACA;AACA,WAAOk8I,iBAAiB57J,KAAK,MAAM,KAAK3P,KAAeqvB,KAAK;AAAA,EAC9D;AAEO,WAAS28I,sBAEd38I,OACA;AACA,WAAOk8I,iBAAiB57J,KAAK,MAAO,KAAK3P,MAAiB,GAAGqvB,KAAK;AAAA,EACpE;AAEA,QAAMotF,OAAWwvD,SAAaA,IAAIA,IAAIv/J,SAAS,CAAC;AAEhD,WAASw/J,6BAA6BjtK,OAAyB;AAC7D,WACEkf,qBAAqBlf,MAAKy8B,MAAM,MAC/B+gF,KAAKx9G,MAAKy8B,OAAOkB,WAAW,MAAM39B,MAAKsB,QACtC2rK,6BAA6BjtK,MAAK65I,UAAU;AAAA,EAElD;AAEA,WAASqzB,2BACP5rK,OACA8+D,QACyD;AACzD,QAAI,CAACvjD,uBAAuBvb,KAAI,KAAK,CAAC2c,aAAa3c,MAAKu5B,IAAI,GAAG;AAC7D,aAAO;AAAA,IACT;AAIA,UAAMsyI,aAAa/sG,OAAMqgF,eAAgB;AAIzC,WACE0sB,WAAWnoB,cAAc1jJ,MAAKu5B,KAAK9sB,IAAI,KACvCo/J,WAAW/pB,cAAc9hJ,MAAKu5B,KAAK9sB,IAAI,EAAEuwI,mBAAmB7wI,UAAU;AAAA,EAE1E;AAOO,WAAS2/J,YAEdrB,QACY;AACZzC,aAAAA,iBAAiB54J,KAAK,IAAI;AAE1B,QAAI,KAAKwO,wBAAwB;AAC/B,aAAOs+F,KAAK,KAAKttG,IAAI,aAAa,CAAC,EAAEk9J,YAAYrB,MAAM;AAAA,IACzD;AAEA,UAAM37I,QAAQ47I,gBAAgBt7J,KAAK,MAAMq7J,MAAM;AAE/C,UAAM;AAAA,MAAElyB;AAAAA,MAAYp9G;AAAAA,IAAO,IAAI;AAC/B,QACEo9G,WAAWl8H,sBAAqB,KAChCk8H,WAAW17H,mBAAkB,KAE7BoC,yBAAyBkc,MAAM,KAC9Bo9G,WAAWv5H,2BAA4B,KAAI,KAAKqN,cAAa,GAC9D;AACA,aAAOksH,WAAWuzB,YAChBh9I,MAAMhd,IAAI9R,CAAAA,UAAQ;AAOhB,eAAOorB,aAAaprB,KAAI,IAAIwlC,oBAAoBxlC,KAAI,IAAIA;AAAAA,MAC1D,CAAC,CACH;AAAA,IACF,WACG,KAAK2qK,WAAW,YAAY,KAC3B,CAAC,KAAK1lJ,aAAc,KACpB,CAACszH,WAAWtzH,aAAc,KAC3BszH,WAAW/7H,eAAgB,KAAI,KAAK/c,QAAQ,QAC7C;AACA,YAAM+6J,OAAO;AACb,UAAIA,KAAKx6J,MAAM;AACb,cAAMA,QAAOw6J,KAAKx6J;AAClB,YAAI;AAAA,UAAE8+D,OAAAA;AAAAA,QAAM,IAAI;AAEhB,YAAIA,OAAMpgE,KAAKsuB,aAAa;AAC1B0kC,2BAAiB1xD,KAAI;AAErBw6J,eAAKjW,YAAY5/G,eAAemF,wBAAwB,CAAA,GAAI9pC,KAAI,GAAG,CAAA,CAAE,CAAC;AACrEw6J,eAAK5rJ,IAAI,aAAa,EAA6Bk9J,YAAYh9I,KAAK;AACrE,iBAAO,CAAC0rI,IAAI;AAAA,QACd;AAEA,YAAImR,6BAA6BnR,IAAI,GAAG;AACtC1rI,gBAAMqJ,QAAQn4B,KAAI;AAAA,QACpB,WAES8b,iBAAiB9b,KAAI,KAAK6f,QAAQ7f,MAAKs3B,MAAM,GAAG;AACvDxI,gBAAMqJ,QAAQn4B,KAAI;AAElB8uB,gBAAM1nB,KAAKshC,gBAAgB;AAAA,QAC5B,WAAUkjI,2BAA2B5rK,OAAM8+D,MAAK,GAAG;AAClDhwC,gBAAMqJ,QAAQn4B,KAAI;AAClB8uB,gBAAM1nB,KAAKyvD,WAAU72D,MAAKu5B,IAAI,CAAC;AAAA,QAChC,WAAUulC,OAAM85E,OAAO54I,OAAM,IAAI,GAAG;AAEnC8uB,gBAAM1nB,KAAKpH,KAAI;AAAA,QACjB,OAAO;AAGL,cAAIu4I,WAAW3rH,SAAS;AAAA,YAAE6O,UAAU;AAAA,YAAMh8B,KAAKO;AAAAA,UAAK,CAAC,GAAG;AACtD8+D,YAAAA,SAAQA,OAAM3jC;AAAAA,UAChB;AACA,gBAAM4wI,OAAOjtG,OAAMohF,8BAA+B;AAClDpxH,gBAAMqJ,QACJqN,oBAIE3B,qBAAqB,KAAKgzB,WAAUk1G,IAAI,GAAG/rK,KAAI,CACjD,CACF;AACA8uB,gBAAM1nB,KAAKo+B,oBAAoBqxB,WAAUk1G,IAAI,CAAC,CAAC;AAAA,QACjD;AAAA,MACF;AAEA,aAAO,KAAKnB,gCAAgC97I,KAAK;AAAA,IAClD,WAAUtZ,MAAMC,QAAQ,KAAKmuJ,SAAS,GAAG;AACxC,aAAO6H,sBAAsBr8J,KAAK,MAAM0f,KAAK;AAAA,IAC/C,WAAW,KAAKg8I,sBAAsB;AACpC,YAAM9qK,QAAO,KAAKA;AAClB,YAAM+qK,0BACJ/qK,UACC,CAAC,KAAKqc,sBAAqB,KACzBrc,MAA+B05B,cAAc;AAElD,WAAK6qH,YAAYhgH,eAAewmI,0BAA0B,CAAC/qK,KAAI,IAAI,CAAA,CAAE,CAAC;AAEtE,aAAO,KAAK8iJ,cAAc,QAAQh0H,KAAK;AAAA,IACzC,OAAO;AACL,YAAM,IAAI3Y,MACR,wGAEF;AAAA,IACF;AAAA,EACF;AAMO,WAASsyJ,kBAEduD,WACAC,aACA;AACA,QAAI,CAAC,KAAK9wI,OAAQ;AAElB,UAAMk8G,SAAQ6G,GAAAA,OAAAA,gBAAe,KAAKC,KAAK,KAAKhjH,MAAM,KAAM,CAAc;AAEtE,eAAW,CAAA,EAAGz8B,KAAI,KAAK24I,OAAO;AAC5B,UACE,OAAO34I,MAAKe,QAAQ,YACpBf,MAAKklK,cAAc,KAAKA,aACxBllK,MAAKe,OAAOusK,WACZ;AACAttK,QAAAA,MAAKe,OAAOwsK;AAAAA,MACd;AAAA,IACF;AAAA,EACF;AAEO,WAASvB,gBAEd57I,OACK;AACL,QAAI,CAACA,OAAO;AACV,aAAO,CAAE;AAAA,IACX;AAEA,QAAI,CAACtZ,MAAMC,QAAQqZ,KAAK,GAAG;AACzBA,cAAQ,CAACA,KAAK;AAAA,IAChB;AAEA,aAAS5iB,IAAI,GAAGA,IAAI4iB,MAAM3iB,QAAQD,KAAK;AACrC,YAAMlM,QAAO8uB,MAAM5iB,CAAC;AACpB,UAAIggK;AAEJ,UAAI,CAAClsK,OAAM;AACTksK,cAAM;AAAA,MACR,WAAW,OAAOlsK,UAAS,UAAU;AACnCksK,cAAM;AAAA,MACR,WAAW,CAAClsK,MAAKmR,MAAM;AACrB+6J,cAAM;AAAA,MACR,WAAWlsK,iBAAgBmsK,gBAAU;AACnCD,cAAM;AAAA,MACR;AAEA,UAAIA,KAAK;AACP,cAAM/6J,OAAOqE,MAAMC,QAAQzV,KAAI,IAAI,UAAU,OAAOA;AACpD,cAAM,IAAImW,MACR,aAAa+1J,GAAG,sBAAsBhgK,CAAC,gBAAgBiF,IAAI,EAC7D;AAAA,MACF;AAAA,IACF;AAEA,WAAO2d;AAAAA,EACT;AAEO,WAASq0H,iBAEd/mH,SACAtN,OAOA;AAEAk5I,aAAAA,iBAAiB54J,KAAK,IAAI;AAG1B0f,YAAQ47I,gBAAgBt7J,KAAK,MAAM0f,KAAK;AAIxC,UAAMpwB,QAAOytK,OAAQ,QAACv9J,IAAI;AAAA,MACxB2pI,YAAY;AAAA,MACZp9G,QAAQ,KAAKn7B;AAAAA,MACb4jK,WAAY,KAAK5jK,KAAWo8B,OAAO;AAAA,MACnCA;AAAAA,MACA38B,KAAK;AAAA,IACP,CAAC,EAAEk7G,WAAW,KAAK3iG,OAAO;AAE1B,WAAO6yJ,uBAAuBz7J,KAC5B1Q,OAEAowB,KACF;AAAA,EACF;AAEO,WAASg0H,cAKd1mH,SACAtN,OAOA;AACAk5I,aAAAA,iBAAiB54J,KAAK,IAAI;AAE1B,UAAMg9J,gBAAgB1B,gBAAgBt7J,KACpC,MAEA0f,KACF;AAKA,UAAM80I,YAAa,KAAK5jK,KAAmBo8B,OAAO;AAClD,UAAM19B,QAAOytK,OAAQ,QAACv9J,IAAI;AAAA,MACxB2pI,YAAY;AAAA,MACZp9G,QAAQ,KAAKn7B;AAAAA,MACb4jK;AAAAA,MACAxnI;AAAAA,MACA38B,KAAKmkK,UAAUz3J;AAAAA,IACjB,CAAC,EAAEwuG,WAAW,KAAK3iG,OAAO;AAE1B,WAAOtZ,MAAK2tK,oBAAoBD,aAAa;AAAA,EAC/C;AAG+C;AAM7C15J,iBAAAA,QAAgB,SAAS45J,MAEvBxtG,SAAe,KAAKA,OACpB;AACA,YAAMytG,WAAU,IAAInD,SAAAA,QAAe,MAAMtqG,MAAK;AAC9C,aAAOytG,SAAQrC,IAAK;AAAA,IACrB;AAAA,EACH;;;;;;;;;;;;;;;;AChaA,MAAA5kC,aAAAp9H,aAAA;AACA,MAAAumB,SAAAvmB,aAAA;AACA,MAAA44C,UAAA54C,YAAA;AACA,MAAAw2I,SAAAx2I,aAAA;AACA,MAAA4/J,gBAAA5/J,oBAAA;AACA,MAAAm9H,UAAAn9H,aAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AA+BA,MAAAmxI,WAAAnxI,eAAA;AAAgD,QAAA;AAAA,IA9B9CskK;AAAAA,IACA1iI;AAAAA,IACAjG;AAAAA,IACAgJ;AAAAA,IACAtI;AAAAA,IACA2xB;AAAAA,IACAvxB;AAAAA,IACAkyB,WAAAA;AAAAA,IACA7xB;AAAAA,IACAQ;AAAAA,IACA22B,uBAAAA;AAAAA,IACA/iC,YAAAA;AAAAA,IACA8+B,wBAAAA;AAAAA,IACAC,yBAAAA;AAAAA,IACAI,kBAAAA;AAAAA,IACA38C;AAAAA,IACAQ;AAAAA,IACAgP;AAAAA,IACA/O;AAAAA,IACAO;AAAAA,IACAU;AAAAA,IACAmO;AAAAA,IACApN;AAAAA,IACAm6C,gBAAAA;AAAAA,IACAxwB;AAAAA,IACAE;AAAAA,IACAjT,UAAAA;AAAAA,IACA0X;AAAAA,EAAe,IAAA80B;AAaV,WAAS4qG,oBAEdv9I,OACY;AAAA,QAAA29I;AACZxE,aAAAA,OAAO74J,KAAK,IAAI;AAEhB0f,YAAQ47I,8BAAgBt7J,KAAK,MAAM0f,KAAK;AACxCopC,IAAAA,wBAAuBppC,MAAM,CAAC,GAAG,KAAK9uB,IAAI;AAC1Cm4D,IAAAA,yBAAwBrpC,MAAMA,MAAM3iB,SAAS,CAAC,GAAG,KAAKnM,IAAI;AAC1D,KAAAysK,mBAAAvuB,GAAAA,OAAc,gBAAC,KAAKC,KAAK,KAAKhjH,MAAM,MAAC,QAArCsxI,gBAAuC3nF,OAAO,KAAK9kF,IAAI;AACvD,SAAKA,OAEH,KAAK4jK,UAAU,KAAKnkK,GAAG,IAAI;AAC7B,UAAM43I,QAAQ,KAAKy0B,YAAYh9I,KAAK;AAEpC,QAAI,KAAK9uB,MAAM;AACb,WAAK0sK,QAAS;AAAA,IAChB,OAAO;AACL,WAAKloB,OAAQ;AAAA,IACf;AACA,WAAOnN;AAAAA,EACT;AAUO,WAASs1B,wBAAwCjqG,cAAqB;AAC3EulG,aAAAA,OAAO74J,KAAK,IAAI;AAChB,QAAIwyD;AAEJ,QAAI;AACFc,MAAAA,eAAc,IAAIA,YAAW;AAC7Bd,aAAM,GAAA16D,QAAK,OAACw7D,YAAW;AAAA,IACxB,SAAQ7qD,KAAK;AACZ,YAAMvE,MAAMuE,IAAIvE;AAChB,UAAIA,KAAK;AACPuE,YAAI/M,WACF,2CACA4J,GAAAA,WAAAA,kBAAiBguD,cAAa;AAAA,UAC5BhvD,OAAO;AAAA,YACL9U,MAAM0U,IAAI1U;AAAAA,YACV6U,QAAQH,IAAIG,SAAS;AAAA,UACvB;AAAA,QACF,CAAC;AACHoE,YAAI9L,OAAO;AAAA,MACb;AACA,YAAM8L;AAAAA,IACR;AAEA,UAAM+0J,gBAAiBhrG,IAAIvnC,QAAQR,KAAK,CAAC,EACtCH;AACHqjC,WAAAA,QAASnD,iBAAiBgzG,aAAa;AACvC,WAAO,KAAKroB,YAAYqoB,aAAa;AAAA,EACvC;AAaO,WAASroB,YAEdsoB,iBACY;AACZ5E,aAAAA,OAAO74J,KAAK,IAAI;AAEhB,QAAI,KAAK05J,SAAS;AAChB,YAAM,IAAI3yJ,MAAM,uDAAuD;AAAA,IACzE;AAEA,QAAIusD,eACFmqG,2BAA2BV,QAAAA,UACvBU,gBAAgB7sK,OAChB6sK;AAEN,QAAI,CAACnqG,cAAa;AAChB,YAAM,IAAIvsD,MACR,2EACF;AAAA,IACF;AAEA,QAAI,KAAKnW,SAAS0iE,cAAa;AAC7B,aAAO,CAAC,IAAI;AAAA,IACd;AAEA,QAAI,KAAKplD,UAAS,KAAM,CAACA,UAAUolD,YAAW,GAAG;AAC/C,YAAM,IAAIvsD,MACR,oEACF;AAAA,IACF;AAEA,QAAIX,MAAMC,QAAQitD,YAAW,GAAG;AAC9B,YAAM,IAAIvsD,MACR,yFACF;AAAA,IACF;AAEA,QAAI,OAAOusD,iBAAgB,UAAU;AACnC,YAAM,IAAIvsD,MACR,2FACF;AAAA,IACF;AAEA,QAAI22J,WAAW;AAEf,QAAI,KAAKnC,WAAW,WAAW,KAAKv/I,aAAas3C,YAAW,GAAG;AAC7D,UACE,CAAC,KAAKqqG,uCAAwC,KAC9C,CAAC,KAAKC,qCAAqCtqG,YAAW,KACtD,CAAC,KAAK61E,WAAWv5H,2BAA0B,GAC3C;AAEA0jD,QAAAA,eAAcl9B,oBAAoBk9B,YAAW;AAC7CoqG,mBAAW;AAAA,MACb;AAAA,IACF;AAEA,QAAI,KAAKnC,WAAW,YAAY,KAAKl/I,YAAYi3C,YAAW,GAAG;AAC7D,UACE,CAAC,KAAKqqG,uCAAwC,KAC9C,CAAC,KAAKC,qCAAqCtqG,YAAW,GACtD;AAEA,eAAO,KAAKkoG,gCAAgC,CAACloG,YAAW,CAAC;AAAA,MAC3D;AAAA,IACF;AAEA,UAAMuqG,UAAU,KAAKjtK;AACrB,QAAIitK,SAAS;AACX10G,MAAAA,kBAAiBmK,cAAauqG,OAAO;AACrCz0G,MAAAA,gBAAey0G,OAAO;AAAA,IACxB;AAGAvE,iBAAat5J,KAAK,MAAMszD,YAAW;AACnC,SAAKvxD,OAAOuxD,aAAYvxD;AAGxBo6J,aAAAA,SAASn8J,KAAK,IAAI;AAGlB,SAAKs9J,QAAS;AAEd,WAAO,CAACI,WAAW,KAAKl+J,IAAIk+J,QAAQ,IAAI,IAAI;AAAA,EAC9C;AAEO,WAASpE,aAA6B1oK,OAAc;AAAA,QAAAktK;AACzD,QAAI,CAAC,KAAKtJ,WAAW;AACnB,YAAM,IAAIjsB,eAAe,oBAAoB;AAAA,IAC/C;AAEA,QAAI,KAAKw1B,QAAQ;AAEfl4I,MAAAA,UAAS,KAAKkG,QAAQ,KAAK17B,KAAK,CAACO,KAAI,CAAC;AAAA,IACxC,OAAO;AACLi1B,MAAAA,UAAS,KAAKkG,QAAQ,KAAK17B,KAAeO,KAAI;AAAA,IAChD;AAEA,SAAKd,MAAM,gBAAgBc,yBAAAA,MAAMmR,IAAI,EAAE;AACvC,KAAA+7J,oBAAAhvB,GAAAA,OAAAA,gBAAe,KAAKC,KAAK,KAAKhjH,MAAM,MAAC,QAArC+xI,iBAAuClhK,IAAIhM,OAAM,IAAI,EAAE8kF,OAAO,KAAK9kF,IAAI;AAEvE,SAAKA,OAEH,KAAK4jK,UAAU,KAAKnkK,GAAG,IAAIO;AAAAA,EAC/B;AAQO,WAAS4qK,gCAEd97I,OACA;AACAm5I,aAAAA,OAAO74J,KAAK,IAAI;AAEhB,UAAMmvD,UAA0B,CAAE;AAClC,UAAM6uG,0BAA0B9uG,2BAA0BxvC,OAAOyvC,OAAO;AACxE,QAAI6uG,yBAAyB;AAC3B,iBAAWnyI,MAAMsjC,QAAS,MAAKO,MAAM13D,KAAK;AAAA,QAAE6zB;AAAAA,MAAG,CAAC;AAChD,aAAO,KAAKspH,YAAY6oB,uBAAuB,EAAE,CAAC,EAAEx+J,IAAI,aAAa;AAAA,IACvE;AAEA,UAAMy+J,iBAAiB,KAAKtuB,kBAAmB;AAC/C,UAAMuuB,gBAAgBD,kBAAc,OAAA,SAAdA,eAAgBrtK,KAAK66B;AAC3C,UAAM0yI,oBAAoBF,kBAAc,OAAA,SAAdA,eAAgBrtK,KAAK46B;AAE/C,UAAMgpI,YAAY95H,wBAAwB,CAAE,GAAEvF,eAAezV,KAAK,CAAC;AAEnE,SAAKy1H,YAAY5/G,eAAei/H,WAAW,CAAE,CAAA,CAAC;AAU9C,UAAMtsI,SAAU,KAAkB1oB,IAAI,QAAQ;AAC9C0oB,WAAO1oB,IAAI,MAAM,EAAEkwD,MAAMqlF,eAAelpH,QAAM,KAAK6jC,MAAM13D,KAAK;AAAA,MAAE6zB;AAAAA,IAAG,CAAC,CAAC;AAGrE,UAAMuyI,oBAAqCl2I,OAAOm2I,qBAAsB;AACxE,eAAW/uK,SAAQ8uK,mBAAmB;AACpC,UAAI,CAAC9uK,MAAK2d,wBAAyB;AAEnC,YAAM0vE,OAAOrtF,MAAKglK,WAAWhlK,CAAAA,UAAQA,MAAKmtB,QAAQ;AAClD,UAAIkgE,MAAM;AACR,YAAIvxB,MAAMuxB,KAAKu2D,QAAQ,gCAAgC;AAEvD,YAAI,CAAC9nF,KAAK;AACRA,gBAAMljC,OAAOwnC,MAAMohF,8BAA8B,KAAK;AACtD5oH,iBACG1oB,IAAI,MAAM,EACVk0I,cAAc,QAAQ96G,gBAAgB6uB,WAAU2D,GAAG,CAAC,CAAC;AACxDuxB,eAAKs2D,QAAQ,kCAAkC7nF,GAAG;AAAA,QACpD,OAAO;AACLA,gBAAMphC,YAAWohC,IAAI/tD,IAAI;AAAA,QAC3B;AAEA/N,QAAAA,MACGkQ,IAAI,YAAY,EAChB21I,YACC1gH,qBAAqB,KAAKgzB,WAAU2D,GAAG,GAAG97D,MAAKsB,KAAK05B,UAAU,CAChE;AAAA,MACJ,OAAO;AACLh7B,QAAAA,MAAK6lJ,YAAYv8G,gBAAgBtpC,MAAKsB,KAAK05B,UAAU,CAAC;AAAA,MACxD;AAAA,IACF;AAGApC,WAAOo2I,0BAA2B;AAGlC,UAAMC,YAAYr2I;AAGlB,UAAMs2I,sBACJN,iBACAvwG,eAAS8wG,QACN,KAAKj/J,IAAI,aAAa,EAAiC5O,MACxD,mBACAwsK,cACF;AACF,UAAMsB,sBACJP,qBACAxwG,eAAS8wG,QACN,KAAKj/J,IAAI,aAAa,EAAiC5O,MACxD,mBACAwsK,cACF;AACF,QAAIoB,qBAAqB;AACvBD,gBAAU3hK,IAAI,SAAS,IAAI;AAE3B,UAAI,CAAC8hK,qBAAqB;AACxB,aAAKvpB,YAAY13G,gBAAiB,KAAkB7sC,IAAI,CAAC;AAAA,MAC3D;AAAA,IACF;AACA,QAAI8tK,qBAAqB;AACvBH,gBAAU3hK,IAAI,aAAa,IAAI;AAC/B,WAAKu4I,YAAY53G,gBAAiB,KAAkB3sC,MAAM,IAAI,CAAC;AAAA,IACjE;AAEA,WAAO2tK,UAAU/+J,IAAI,WAAW;AAAA,EAClC;AAEA,WAAS0vD,2BACPxvC,OACAyvC,SACA;AACA,UAAMC,QAAwB,CAAE;AAChC,QAAIC,sBAAsB;AAE1B,eAAWz+D,SAAQ8uB,OAAO;AAGxB,UAAI,CAAC1S,iBAAiBpc,KAAI,GAAG;AAC3By+D,8BAAsB;AAAA,MACxB;AAEA,UAAIrzC,aAAaprB,KAAI,GAAG;AACtBw+D,cAAMp3D,KAAKpH,KAAI;AAAA,MACjB,WAAWqc,sBAAsBrc,KAAI,GAAG;AACtCw+D,cAAMp3D,KAAKpH,MAAK05B,UAAU;AAAA,MAC5B,WAAWrb,sBAAsBre,KAAI,GAAG;AACtC,YAAIA,MAAKi8B,SAAS,MAAO;AAEzB,mBAAWyiC,UAAU1+D,MAAK68B,cAAc;AACtC,gBAAM8hC,WAAWxC,uBAAsBuC,MAAM;AAC7C,qBAAWj/D,QAAOsP,OAAOnK,KAAK+5D,QAAQ,GAAG;AACvCJ,oBAAQn3D,KAAKyvD,WAAU8H,SAASl/D,IAAG,CAAC,CAAC;AAAA,UACvC;AAEA,cAAIi/D,OAAOlkC,MAAM;AACfgkC,kBAAMp3D,KAAKy8B,qBAAqB,KAAK66B,OAAOzjC,IAAIyjC,OAAOlkC,IAAI,CAAC;AAAA,UAC9D;AAAA,QACF;AAEAikC,8BAAsB;AAAA,MACxB,WAAW7hD,cAAc5c,KAAI,GAAG;AAC9B,cAAMm6B,aAAan6B,MAAKm6B,aACpBmkC,2BAA0B,CAACt+D,MAAKm6B,UAAU,GAAGokC,OAAO,IACpDrI,mBAAoB;AACxB,cAAM97B,YAAYp6B,MAAKo6B,YACnBkkC,2BAA0B,CAACt+D,MAAKo6B,SAAS,GAAGmkC,OAAO,IACnDrI,mBAAoB;AACxB,YAAI,CAAC/7B,cAAc,CAACC,UAAW;AAE/BokC,cAAMp3D,KAAK49B,sBAAsBhlC,MAAKvB,MAAM07B,YAAYC,SAAS,CAAC;AAAA,MACpE,WAAWxe,iBAAiB5b,KAAI,GAAG;AACjC,cAAM65B,OAAOykC,2BAA0Bt+D,MAAK65B,MAAM0kC,OAAO;AACzD,YAAI,CAAC1kC,KAAM;AAEX2kC,cAAMp3D,KAAKyyB,IAAI;AAAA,MACjB,WAAWzd,iBAAiBpc,KAAI,GAAG;AAGjC,YAAI8uB,MAAMhV,QAAQ9Z,KAAI,MAAM,GAAG;AAC7By+D,gCAAsB;AAAA,QACxB;AAAA,MACF,OAAO;AAEL;AAAA,MACF;AAAA,IACF;AAEA,QAAIA,oBAAqBD,OAAMp3D,KAAK8uD,mBAAkB,CAAE;AAExD,QAAIsI,MAAMryD,WAAW,GAAG;AACtB,aAAOqyD,MAAM,CAAC;AAAA,IAChB,OAAO;AACL,aAAOt2B,mBAAmBs2B,KAAK;AAAA,IACjC;AAAA,EACF;AAEO,WAASuvG,cAA8Bj/I,OAA+B;AAC3Em5I,aAAAA,OAAO74J,KAAK,IAAI;AAEhB,QAAIoG,MAAMC,QAAQqZ,KAAK,GAAG;AACxB,UAAItZ,MAAMC,QAAQ,KAAKmuJ,SAAS,GAAG;AACjC90I,gBAAQ47I,8BAAgBt7J,KAAK,MAAM0f,KAAK;AACxC,cAAMuoH,QAAQo0B,cAAqB,sBAACr8J,KAAK,MAAM0f,KAAK;AACpD,aAAK01H,OAAQ;AACb,eAAOnN;AAAAA,MACT,OAAO;AACL,eAAO,KAAKg1B,oBAAoBv9I,KAAK;AAAA,MACvC;AAAA,IACF,OAAO;AACL,aAAO,KAAKy1H,YAAYz1H,KAAK;AAAA,IAC/B;AAAA,EACF;;;;;;;;;;;;;ACxZA,QAAMk/I,uBAAuB,CAAC,UAAU,UAAU,MAAM;AACxD,QAAMC,2BAA2B,CAC/B,YACA,SACA,cACA,YACA,aACA,sBACA,aACA,sBACwC,MACA,IAAI;AAG9C,QAAMC,kBAAkB,CAAC,QAAQ;AAEjC,WAASC,oBACP96I,KAC8C;AAC9C,WAAO26I,qBAAqBz3I,SAE1BlD,GACF;AAAA,EACF;AAEA,WAAS+6I,wBACP/6I,KACkD;AAClD,WAAO46I,yBAAyB13I,SAE9BlD,GACF;AAAA,EACF;AAEA,WAASg7I,gBAAgBh7I,KAAsD;AAC7E,WAAO66I,gBAAgB33I,SAErBlD,GACF;AAAA,EACF;AAoBO,WAASi7I,iBAAwC;AACtD,UAAM18I,MAAM,KAAK28I,SAAU;AAC3B,QAAI38I,IAAI48I,UAAW,QAAO,CAAC,CAAC58I,IAAI/xB;AAAAA,EAClC;AAeA,WAAS4uK,MAAM/vK,OAAgBC,QAAc;AAC3C,QAAI,CAACA,OAAM6vK,UAAW;AACtB7vK,IAAAA,OAAM+vK,YAAYhwK;AAClBC,IAAAA,OAAM6vK,YAAY;AAAA,EACpB;AAEA,QAAMG,UAAU,oBAAIt5G,IAAI,CACtB,CAAC,aAAahjD,MAAS,GACvB,CAAC,YAAY+gB,QAAQ,GACrB,CAAC,OAAOw7I,GAAG,CAAC,CACb;AAUD,WAASC,eAAenwK,OAAgBC,QAAmB;AACzD,UAAM;AAAA,MAAEqB,MAAAA;AAAAA,IAAK,IAAItB;AACjB,UAAM;AAAA,MAAE2lJ;AAAAA,IAAK,IAAI1lJ;AAEjB,QAAI0lJ,KAAK52I,IAAIzN,KAAI,GAAG;AAClB,YAAMw1D,WAAW6uF,KAAKz1I,IAAI5O,KAAI;AAC9B,UAAIw1D,SAASs5G,UAAU;AACrB,eAAOt5G,SAAS31D;AAAAA,MAClB,OAAO;AACL4uK,cAAM/vK,OAAMC,MAAK;AACjB;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAMuD,QAAe;AAAA,QAAE4sK,UAAU;AAAA,MAAO;AACxCzqB,WAAKr4I,IAAIhM,OAAMkC,KAAI;AAEnB,YAAMmxB,MAAM07I,UAAUrwK,OAAMC,MAAK;AACjC,UAAIA,OAAM6vK,WAAW;AACnBtsK,QAAAA,MAAK4sK,WAAW;AAChB5sK,QAAAA,MAAKrC,QAAQwzB;AAAAA,MACf;AACA,aAAOA;AAAAA,IACT;AAAA,EACF;AAEA,WAAS07I,UAAUrwK,OAAgBC,QAAmB;AACpD,QAAI,CAACA,OAAM6vK,UAAW;AAEtB,QAAI9vK,MAAKkf,wBAAwB;AAC/B,YAAM4gD,QAAQ9/D,MAAKkQ,IAAI,aAAa;AACpC,aAAOigK,eAAerwG,MAAMA,MAAMryD,SAAS,CAAC,GAAGxN,MAAK;AAAA,IACtD;AAEA,QACED,MAAKoe,qBACLpe,MAAKqe,sBACLre,MAAKue,oBACL;AACA,aAAOve,MAAKsB,KAAKH;AAAAA,IACnB;AAEA,QAAInB,MAAKse,iBAAiB;AACxB,aAAO;AAAA,IACT;AAEA,QAAIte,MAAKshB,qBAAqB;AAC5B,aAAOgvJ,eAAetwK,OAAMA,MAAKsB,KAAKg/B,QAAQrgC,MAAK;AAAA,IACrD;AAEA,QACED,MAAKohB,gCACLphB,MAAKkQ,IAAI,KAAK,EAAEwO,sBAChB;AACA,YAAMpY,SAAStG,MAAKkQ,IAAI,YAAY;AACpC,YAAM;AAAA,QAEJ5O,MAAM;AAAA,UAAEyM;AAAAA,QAAK;AAAA,MACf,IAAIzH;AACJ,YAAM+pB,WAAWrwB,MAAKkQ,IAAI,cAAc;AAExC,UACE5J,OAAO2X,kBACPlQ,SAAS,YAGT,CAAC/N,MAAKogE,MAAMwgF,WAAW7yI,IAAI,KAC3BsiB,SAASpS,aAAc,KACvBoS,SAAS/uB,KAAKyM,SAAS,OACvB;AACA,eAAOuiK,eAAetwK,OAAMA,MAAKsB,KAAK0+B,MAAMM,QAAQrgC,QAAO,IAAI;AAAA,MACjE;AAAA,IACF;AAEA,QAAID,MAAKsd,2BAA2B;AAClC,YAAMizJ,aAAaJ,eAAenwK,MAAKkQ,IAAI,MAAM,GAAGjQ,MAAK;AACzD,UAAI,CAACA,OAAM6vK,UAAW;AACtB,UAAIS,YAAY;AACd,eAAOJ,eAAenwK,MAAKkQ,IAAI,YAAY,GAAGjQ,MAAK;AAAA,MACrD,OAAO;AACL,eAAOkwK,eAAenwK,MAAKkQ,IAAI,WAAW,GAAGjQ,MAAK;AAAA,MACpD;AAAA,IACF;AAEA,QAAID,MAAKqtB,uBAAuB;AAE9B,aAAO8iJ,eAAenwK,MAAKkQ,IAAI,YAAY,GAAGjQ,MAAK;AAAA,IACrD;AAGA,QACED,MAAK0e,mBAAoB,KACzB,CAAC1e,MAAK65I,WAAWz8H,iBAAiB;AAAA,MAAEwb,QAAQ54B,MAAKsB;AAAAA,IAAK,CAAC,GACvD;AACA,YAAM+uB,WAAWrwB,MAAKkQ,IAAI,UAAU;AACpC,YAAM5J,SAAStG,MAAKkQ,IAAI,QAAQ;AAEhC,UAAI5J,OAAOynB,aAAa;AAEtB,cAAM5sB,SAAQmF,OAAOhF,KAAKH;AAC1B,cAAMsR,OAAO,OAAOtR;AAEpB,YAAIJ,OAAM;AACV,YAAIf,MAAKsB,KAAKy7B,UAAU;AACtBh8B,UAAAA,OAAMovK,eAAe9/I,UAAUpwB,MAAK;AACpC,cAAI,CAACA,OAAM6vK,UAAW;AAAA,QACxB,WAAWz/I,SAASpS,gBAAgB;AAClCld,UAAAA,OAAMsvB,SAAS/uB,KAAKyM;AAAAA,QACtB;AACA,aACG0E,SAAS,YAAYA,SAAS,aAC/B1R,QAAO,SACN,OAAOA,SAAQ,YAAY,OAAOA,SAAQ,WAC3C;AACA,iBAAOI,OAAMJ,IAAG;AAAA,QAClB;AAAA,MACF;AAAA,IACF;AAEA,QAAIf,MAAK45I,0BAA0B;AACjC,YAAMxiE,WAAUp3E,MAAKogE,MAAMwgF,WAAW5gJ,MAAKsB,KAAKyM,IAAI;AAEpD,UAAIqpE,UAAS;AACX,YACEA,SAAQknE,mBAAmB7wI,SAAS,KACpCzN,MAAKsB,KAAK0T,QAAQoiE,SAAQp3E,KAAKsB,KAAK4T,KACpC;AACA66J,gBAAM34F,SAAQp3E,MAAMC,MAAK;AACzB;AAAA,QACF;AACA,cAAMuwK,mBAAmBp5F,SAAQp3E,KAAKogE;AACtC,YAAIgX,SAAQ75C,SAAS,SAASizI,qBAAqBp5F,SAAQhX,OAAO;AAChE,cAAIqwG,iBACF,CAACD,iBAAiBxwK,KAAK65I,WAAW38H,iBAAkB;AACtD,mBAASkjD,SAAQowG,iBAAiB/zI,QAAQ2jC,QAAOA,SAAQA,OAAM3jC,QAAQ;AAAA,gBAAAi0I;AACrE,gBAAItwG,WAAUpgE,MAAKogE,OAAO;AACxB,kBAAIqwG,gBAAgB;AAClBV,sBAAM34F,SAAQp3E,MAAMC,MAAK;AACzB;AAAA,cACF;AACA;AAAA,YACF;AACA,iBAAAywK,wBAAItwG,OAAMpgE,KAAK65I,eAAU,QAArB62B,sBAAuBxzJ,oBAAoB;AAC7CuzJ,+BAAiB;AAAA,YACnB;AAAA,UACF;AAAA,QACF;AACA,YAAIr5F,SAAQ6nE,UAAU;AACpB,iBAAO7nE,SAAQj2E;AAAAA,QACjB;AAAA,MACF;AAEA,YAAM4M,OAAO/N,MAAKsB,KAAKyM;AACvB,UAAIkiK,QAAQlhK,IAAIhB,IAAI,GAAG;AACrB,YAAI,CAACqpE,UAAS;AACZ,iBAAO64F,QAAQ//J,IAAInC,IAAI;AAAA,QACzB;AACAgiK,cAAM34F,SAAQp3E,MAAMC,MAAK;AACzB;AAAA,MACF;AAEA,YAAMmwK,WAAWpwK,MAAKsnI,QAAS;AAC/B,UAAI8oC,aAAapwK,OAAM;AACrB+vK,cAAM/vK,OAAMC,MAAK;AACjB;AAAA,MACF,OAAO;AACL,eAAOkwK,eAAeC,UAAUnwK,MAAK;AAAA,MACvC;AAAA,IACF;AAEA,QAAID,MAAKyf,kBAAkB;AAAA,MAAEzD,QAAQ;AAAA,IAAK,CAAC,GAAG;AAC5C,UAAIhc,MAAKsB,KAAKm5B,aAAa,QAAQ;AAEjC,eAAO9mB;AAAAA,MACT;AAEA,YAAM8pB,WAAWz9B,MAAKkQ,IAAI,UAAU;AACpC,UACElQ,MAAKsB,KAAKm5B,aAAa,aACtBgD,SAASjQ,gBAAgBiQ,SAASlP,QAAO,IAC1C;AACA,eAAO;AAAA,MACT;AAEA,YAAMmvF,MAAMyyD,eAAe1yI,UAAUx9B,MAAK;AAC1C,UAAI,CAACA,OAAM6vK,UAAW;AACtB,cAAQ9vK,MAAKsB,KAAKm5B,UAAQ;AAAA,QACxB,KAAK;AACH,iBAAO,CAACijF;AAAAA,QACV,KAAK;AACH,iBAAO,CAACA;AAAAA,QACV,KAAK;AACH,iBAAO,CAACA;AAAAA,QACV,KAAK;AACH,iBAAO,CAACA;AAAAA,QACV,KAAK;AACH,iBAAO,OAAOA;AAAAA,MAClB;AAAA,IACF;AAEA,QAAI19G,MAAK4c,qBAAqB;AAC5B,YAAMowJ,MAAM,CAAE;AACd,YAAM7V,QAAyBn3J,MAAKkQ,IAAI,UAAU;AAClD,iBAAW0rH,QAAQu7B,OAAO;AACxB,cAAMwZ,YAAY/0C,KAAKi0C,SAAU;AAEjC,YAAIc,UAAUb,WAAW;AACvB9C,cAAItkK,KAAKioK,UAAUxvK,KAAK;AAAA,QAC1B,OAAO;AACL4uK,gBAAMY,UAAUZ,OAAO9vK,MAAK;AAC5B;AAAA,QACF;AAAA,MACF;AACA,aAAO+sK;AAAAA,IACT;AAEA,QAAIhtK,MAAK6e,sBAAsB;AAC7B,YAAM9G,MAAM,CAAE;AACd,YAAM6kD,QAAQ58D,MAAKkQ,IAAI,YAAY;AACnC,iBAAW6mE,QAAQna,OAAO;AACxB,YAAIma,KAAKj4D,eAAc,KAAMi4D,KAAK71D,gBAAe,GAAI;AACnD6uJ,gBAAMh5F,MAAM92E,MAAK;AACjB;AAAA,QACF;AACA,cAAM2wK,UAAU75F,KAAK7mE,IAAI,KAAK;AAC9B,YAAInP;AACJ,YAAIg2E,KAAKz1E,KAAKy7B,UAAU;AACtBh8B,UAAAA,OAAM6vK,QAAQf,SAAU;AACxB,cAAI,CAAC9uK,KAAI+uK,WAAW;AAClBC,kBAAMhvK,KAAIgvK,OAAO9vK,MAAK;AACtB;AAAA,UACF;AACAc,UAAAA,OAAMA,KAAII;AAAAA,QACZ,WAAWyvK,QAAQ3yJ,gBAAgB;AACjCld,UAAAA,OAAM6vK,QAAQtvK,KAAKyM;AAAAA,QACrB,OAAO;AACLhN,UAAAA,OACE6vK,QAAQtvK,KACRH;AAAAA,QACJ;AACA,cAAM0vK,YAAY95F,KAAK7mE,IAAI,OAAO;AAClC,YAAI/O,SAAQ0vK,UAAUhB,SAAU;AAChC,YAAI,CAAC1uK,OAAM2uK,WAAW;AACpBC,gBAAM5uK,OAAM4uK,OAAO9vK,MAAK;AACxB;AAAA,QACF;AACAkB,QAAAA,SAAQA,OAAMA;AAEd4W,YAAIhX,IAAG,IAAII;AAAAA,MACb;AACA,aAAO4W;AAAAA,IACT;AAEA,QAAI/X,MAAKye,uBAAuB;AAG9B,YAAMqyJ,eAAe7wK,OAAM6vK;AAC3B,YAAMj1I,OAAOs1I,eAAenwK,MAAKkQ,IAAI,MAAM,GAAGjQ,MAAK;AACnD,YAAM8wK,gBAAgB9wK,OAAM6vK;AAC5B7vK,MAAAA,OAAM6vK,YAAYgB;AAClB,YAAMh2I,QAAQq1I,eAAenwK,MAAKkQ,IAAI,OAAO,GAAGjQ,MAAK;AACrD,YAAM+wK,iBAAiB/wK,OAAM6vK;AAE7B,cAAQ9vK,MAAKsB,KAAKm5B,UAAQ;AAAA,QACxB,KAAK;AAGHx6B,UAAAA,OAAM6vK,YAAYiB,kBAAkB,CAAC,CAACl2I,QAAQm2I;AAC9C,cAAI,CAAC/wK,OAAM6vK,UAAW;AAEtB,iBAAOj1I,QAAQC;AAAAA,QACjB,KAAK;AACH76B,UAAAA,OAAM6vK,YAAYiB,kBAAkB,CAACl2I,QAAQm2I;AAC7C,cAAI,CAAC/wK,OAAM6vK,UAAW;AAEtB,iBAAOj1I,QAAQC;AAAAA,QACjB,KAAK;AACH76B,UAAAA,OAAM6vK,YAAYiB,kBAAkBl2I,QAAQ,QAAQm2I;AACpD,cAAI,CAAC/wK,OAAM6vK,UAAW;AAEtB,iBAAOj1I,QAAI,OAAJA,OAAQC;AAAAA,MACnB;AAAA,IACF;AAEA,QAAI96B,MAAK8c,sBAAsB;AAC7B,YAAM+d,OAAOs1I,eAAenwK,MAAKkQ,IAAI,MAAM,GAAGjQ,MAAK;AACnD,UAAI,CAACA,OAAM6vK,UAAW;AACtB,YAAMh1I,QAAQq1I,eAAenwK,MAAKkQ,IAAI,OAAO,GAAGjQ,MAAK;AACrD,UAAI,CAACA,OAAM6vK,UAAW;AAEtB,cAAQ9vK,MAAKsB,KAAKm5B,UAAQ;AAAA,QACxB,KAAK;AACH,iBAAOI,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAArlB,KAAAw7J,IAAOp2I,MAAQC,KAAK;AAAA,QACtB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,SAASC;AAAAA,QAClB,KAAK;AACH,iBAAOD,SAASC;AAAAA,QAClB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,SAASC;AAAAA,MACpB;AAAA,IACF;AAEA,QAAI96B,MAAKod,oBAAoB;AAC3B,YAAMwb,SAAS54B,MAAKkQ,IAAI,QAAQ;AAChC,UAAIoJ;AACJ,UAAIq1I;AAGJ,UACE/1H,OAAO3a,aAAY,KACnB,CAACje,MAAKogE,MAAMwgF,WAAWhoH,OAAOt3B,KAAKyM,IAAI,MACtC0hK,oBAAoB72I,OAAOt3B,KAAKyM,IAAI,KACnC2hK,wBAAwB92I,OAAOt3B,KAAKyM,IAAI,IAC1C;AACA4gJ,eAAOvqH,eAAOxL,OAAOt3B,KAAKyM,IAAI;AAAA,MAChC;AAEA,UAAI6qB,OAAOla,sBAAsB;AAC/B,cAAMpY,SAASsyB,OAAO1oB,IAAI,QAAQ;AAClC,cAAMmgB,WAAWuI,OAAO1oB,IAAI,UAAU;AAGtC,YACE5J,OAAO2X,aAAc,KACrBoS,SAASpS,aAAY,KACrBwxJ,oBAAoBnpK,OAAOhF,KAAKyM,IAAI,KACpC,CAAC4hK,gBAAgBt/I,SAAS/uB,KAAKyM,IAAI,GACnC;AACAuL,UAAAA,WAAU8qB,eAAO99B,OAAOhF,KAAKyM,IAAI;AACjC,gBAAMhN,OAAMsvB,SAAS/uB,KAAKyM;AAC1B,cAAI0C,eAAAC,KAAc4I,UAASvY,IAAG,GAAG;AAC/B4tJ,mBAAOr1I,SAAQvY,IAAG;AAAA,UACpB;AAAA,QACF;AAGA,YAAIuF,OAAOynB,UAAS,KAAMsC,SAASpS,aAAY,GAAI;AAEjD,gBAAMxL,OAAO,OAAOnM,OAAOhF,KAAKH;AAChC,cAAIsR,SAAS,YAAYA,SAAS,UAAU;AAE1C6G,YAAAA,WAAUhT,OAAOhF,KAAKH;AACtBwtJ,mBAAOr1I,SAAQ+W,SAAS/uB,KAAKyM,IAAI;AAAA,UACnC;AAAA,QACF;AAAA,MACF;AAEA,UAAI4gJ,MAAM;AACR,cAAM71H,OAAO94B,MAAKkQ,IAAI,WAAW,EAAEkD,IAAIsqG,SAAOyyD,eAAezyD,KAAKz9G,MAAK,CAAC;AACxE,YAAI,CAACA,OAAM6vK,UAAW;AAEtB,eAAOnhB,KAAKlS,MAAMnjI,UAASwf,IAAI;AAAA,MACjC;AAAA,IACF;AAEAi3I,UAAM/vK,OAAMC,MAAK;AAAA,EACnB;AAEA,WAASqwK,eACPtwK,OACAsgC,QACArgC,QACAggC,MAAM,OACN;AACA,QAAI5sB,MAAM;AAEV,QAAI7F,IAAI;AACR,UAAMsyD,QAAiC9/D,MAAKshB,kBAAiB,IACzDthB,MAAKkQ,IAAI,aAAa,IACtBlQ,MAAKkQ,IAAI,mBAAmB;AAEhC,eAAW0rH,QAAQt7F,QAAQ;AAEzB,UAAI,CAACrgC,OAAM6vK,UAAW;AAGtBz8J,aAAO4sB,MAAM27F,KAAKz6H,MAAM8+B,MAAM27F,KAAKz6H,MAAM++B;AAGzC,YAAM8hE,OAAOliC,MAAMtyD,GAAG;AACtB,UAAIw0F,KAAM3uF,QAAO1F,OAAOwiK,eAAenuE,MAAM/hG,MAAK,CAAC;AAAA,IACrD;AAEA,QAAI,CAACA,OAAM6vK,UAAW;AACtB,WAAOz8J;AAAAA,EACT;AAkBO,WAASw8J,WAId;AACA,UAAM5vK,SAAe;AAAA,MACnB6vK,WAAW;AAAA,MACXE,WAAW;AAAA,MACXrqB,MAAM,oBAAIhvF,IAAG;AAAA,IACd;AACD,QAAIx1D,SAAQgvK,eAAe,MAAMlwK,MAAK;AACtC,QAAI,CAACA,OAAM6vK,UAAW3uK,CAAAA,SAAQwS;AAE9B,WAAO;AAAA,MACLm8J,WAAW7vK,OAAM6vK;AAAAA,MACjBC,OAAO9vK,OAAM+vK;AAAAA,MACb7uK,OAAOA;AAAAA,IACR;AAAA,EACH;;;;;;;;;;;;;;;;;ACxiBA,MAAA4hE,KAAAv5D,aAAA;AAuCA,MAAA6/H,YAAA7/H,aAAA;AACA,MAAA0zI,YAAA1zI,gBAAA;AAGA,MAAAmxI,WAAAnxI,eAAA;AAAqC,QAAA;AAAA,IA1CnC4hC;AAAAA,IACAjG;AAAAA,IACAE;AAAAA,IACAQ;AAAAA,IACAI;AAAAA,IACAK;AAAAA,IACAQ;AAAAA,IACApM,YAAAA;AAAAA,IACAzc;AAAAA,IACAzM;AAAAA,IACA+2B;AAAAA,IACApT;AAAAA,IACAsT;AAAAA,IACAwE;AAAAA,IACAjF;AAAAA,IACAc;AAAAA,IACAM;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACAgE;AAAAA,IACA1F;AAAAA,IACAopI,OAASxjI;AAAAA,IACT1D;AAAAA,IACA4wB,cAAAA;AAAAA,IACA72B;AAAAA,IACA22B,yBAAAA;AAAAA,IACAltC;AAAAA,IACAzN;AAAAA,IACAf;AAAAA,IACAm/C,iBAAAA;AAAAA,IACAhG,WAAAA;AAAAA,IACA3tB;AAAAA,IACAE;AAAAA,IACAsB;AAAAA,IACAE;AAAAA,IACA5S,UAAAA;AAAAA,EAAQ,IAAAypC;AASH,WAASpI,iBAA8B;AAC5C,QAAI55D;AACJ,QAAI,KAAK2d,sBAAsB;AAC7B3d,MAAAA,OAAM,KAAKO,KAAK+uB;AAAAA,IACjB,WAAU,KAAKjC,WAAY,KAAI,KAAKF,SAAQ,GAAI;AAC/CntB,MAAAA,OAAM,KAAKO,KAAKP;AAAAA,IAClB,OAAO;AACL,YAAM,IAAIk4I,eAAe,MAAM;AAAA,IACjC;AAGA,QAAI,CAAC,KAAK33I,KAAKy7B,UAAU;AACvB,UAAI9e,aAAald,IAAG,EAAGA,CAAAA,OAAM+mC,cAAc/mC,KAAIgN,IAAI;AAAA,IACrD;AAEA,WAAOhN;AAAAA,EACT;AAEO,WAASq5D,eAIR;AACN,UAAMj/B,OAAO,KAAKjrB,IAAI,MAAM;AAC5B,UAAM6sF,WAAW5hE,KAAK75B;AAEtB,QAAIwV,MAAMC,QAAQokB,IAAI,GAAG;AACvB,YAAM,IAAI1jB,MAAM,+CAA+C;AAAA,IACjE;AACA,QAAI,CAACslF,UAAU;AACb,YAAM,IAAItlF,MAAM,mCAAmC;AAAA,IACrD;AAEA,QAAI0jB,KAAKje,oBAAoB;AAM3B,aAAO6/E;AAAAA,IACT;AAEA,UAAMqsC,cAAiC,CAAE;AAEzC,QAAI+nC,aAAa;AACjB,QAAIpwK;AACJ,QAAI28B;AACJ,QAAIvC,KAAKpO,eAAe;AACtB2Q,gBAAU;AACV38B,MAAAA,OAAM;AACNqoI,MAAAA,YAAW1gI,KAAKyyB,KAAK75B,IAAI;AAAA,IAC3B,OAAO;AACL6vK,oBAAc;AACd,UAAI,KAAK3jJ,cAAc;AACrBzsB,QAAAA,OAAM;AACNqoI,QAAAA,YAAW1gI,KAAK4gC,gBAAgBnO,KAAK75B,IAAoB,CAAC;AAAA,MAC5D,OAAO;AACLP,QAAAA,OAAM;AACNqoI,QAAAA,YAAW1gI,KAAKo+B,oBAAoB3L,KAAK75B,IAAoB,CAAC;AAAA,MAChE;AAAA,IACF;AAEA,SAAKA,KAAK65B,OAAO0K,eAAeujG,WAAU;AAC1C,UAAMyQ,aAAa,KAAK3pI,IAAIihK,UAAU;AACtCC,aAAK,MAAC1gK,KACJyqB,MACA0+G,YACAn8G,UAEIm8G,WAAWv4I,KAAKo8B,OAAO,IACvBm8G,WAAWv4I,MACfo8B,SACA38B,IACF;AAOA,WAAO,KAAKO;AAAAA,EACd;AAE+C;AAK7C0S,eAAAA,0BAAkC,WAA0B;AAC1D,UAAI,CAAC,KAAKiM,4BAA6B;AAEvC,WAAK+uJ,0BAA2B;AAAA,IACjC;AAAA,EACH;AAQO,WAASqC,4BAA0C;AACxD,QACE,CAAC,KAAKpxJ,0BAAyB,KAC/B,CAAC,KAAKjC,0BACN,CAAC,KAAKD,yBACN;AACA,YAAM,KAAKssJ,oBACT,gDACF;AAAA,IACF;AAEAiH,6BAAyB,IAAI;AAAA,EAC/B;AAEA,WAASC,QACPvxK,OACAyS,MACmD;AACnDzS,IAAAA,MAAKsB,KAAKmR,OAAOA;AAAAA,EACnB;AAKO,WAASu8J,0BAEd;AAAA,IACEwC,mBAAmB;AAAA,IACnBC,2BAA2BD;AAAAA,IAC3BE,cAGI,EAAAC,kBAAAA,cAACt2I,UAAU,CAAC,MAAXs2I,OAAAA,SAAAA,YAAcC,eAAa;AAAA,EAKjC,IAAG,IAGJ;AACA,QAAI,CAAC,KAAK3xJ,6BAA6B;AACrC,YAAO,KAAkBoqJ,oBACvB,6DACF;AAAA,IACF;AAEA,QAAIvO,OAAO;AACX,QAAI,CAAC4V,aAAa;AAAA,UAAAG;AAIhB/V,cAAI+V,wBAAG/V,KAAKgW,mBAAmB,KAAK,MAAC,OAAAD,wBAAI/V;AAAAA,IAC3C;AAEA,UAAM;AAAA,MAAEiW;AAAAA,MAAaC,QAAQj5J;AAAAA,IAAI,IAAGu4J,yBAClCxV,MACA4V,aACAF,kBACAC,wBACF;AAEA14J,OAAGqhD,YAAa;AAChBm3G,YAAQx4J,IAAI,oBAAoB;AAEhC,QAAI,CAAC24J,aAAa;AAChB,YAAMO,eAAeF,cACjB,OACAh5J,GAAGqnD,MAAMqhF,sBAAsB,cAAc;AACjD,UAAIwwB,cAAc;AAChBl5J,WAAG8gI,WAAWz5E,MAAM13D,KAAK;AAAA,UACvB6zB,IAAI01I;AAAAA,UACJn2I,MAAMgN,iBAAiB,CAAE,CAAA;AAAA,QAC3B,CAAC;AAAA,MACH;AAEA/vB,SAAG7I,IAAI,MAAM,EAAEu0I,iBACb,QACA39G,oBACEb,eAAe,KAAKw5G,IAAI4G,UAAU,eAAe,GAAG,CAClDr8G,eAAgB,GAChBioI,eACIv3I,YAAWu3I,aAAalkK,IAAI,IAC5B2sB,YAAWq3I,WAAW,CAAC,CAC5B,CACH,CACF;AAEAh5J,SAAG8sI,YACD5/G,eAAewC,iBAAiB1vB,GAAGzX,MAAMo5B,YAAW,MAAM,CAAC,GAAG,CAC5Du3I,eAAev3I,YAAWu3I,aAAalkK,IAAI,IAAIi8B,eAAgB,CAAA,CAChE,CACH;AAEA,aAAOjxB,GAAG7I,IAAI,eAAe;AAAA,IAC/B;AAEA,WAAO6I;AAAAA,EACT;AAEA,QAAMm5J,2BAAuBl1B,UAAAA,oBAE1B;AAAA,IACD72G,eAAemc,OAAO;AAAA,MAAE6vH;AAAAA,IAAc,GAAG;AACvC,UAAI,CAAC7vH,MAAMpyC,IAAI,QAAQ,EAAEiR,QAAO,EAAI;AACpCgxJ,oBAAczpK,KAAK45C,KAAK;AAAA,IAC1B;AAAA,EACF,CAAC;AAUD,WAASgvH,yBACPU,QAEAN,cAA8B,MAC9BF,mBAAmC,MACnCC,2BAA2C,MACY;AACvD,QAAIW;AACJ,QAAIC,YAAkCL,OAAOhN,WAAWpvC,OAAK;AAC3D,UAAIA,EAAE31G,6BAA6B;AACjCmyJ,uBAAAA,OAAAA,cAAAA,cAAgBx8C;AAChB,eAAO;AAAA,MACT;AACA,aACEA,EAAEpoG,gBACFooG,EAAEh3G,UAAW,KACbg3G,EAAE9zG,gBAAgB;AAAA,QAAE6d,QAAQ;AAAA,MAAM,CAAC,KACnCi2F,EAAE5zG,uBAAuB;AAAA,QAAE2d,QAAQ;AAAA,MAAM,CAAC;AAAA,IAE9C,CAAC;AACD,UAAM2yI,gBAAgBD,UAAUrxJ,cAAc;AAAA,MAAEuc,MAAM;AAAA,IAAc,CAAC;AAErE,QAAI80I,UAAUvwJ,gBAAe,KAAMuwJ,UAAUrwJ,uBAAsB,GAAI;AACrE,UAAIowJ,aAAa;AACfC,oBAAYD;AAAAA,MACb,WAAUZ,kBAAkB;AAK3BQ,eAAOnsB,YACL5/G,eACEmF,wBAAwB,CAAE,GAAEwvB,cAAao3G,OAAO1wK,IAAI,CAAC,GACrD,CAAA,CACF,CACF;AACA+wK,oBAAYL,OAAO9hK,IAAI,QAAQ;AAC/B8hK,iBAASK,UAAUniK,IAAI,MAAM;AAAA,MAC/B,OAAO;AACL,cAAM8hK,OAAO3H,oBACX,iDACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM;AAAA,MAAEkI;AAAAA,MAAWC;AAAAA,MAAgBC;AAAAA,MAAgBC;AAAAA,MAAYC;AAAAA,IAAW,IACxEC,oBAAoBZ,MAAM;AAG5B,QAAIM,iBAAiBK,WAAWllK,SAAS,GAAG;AAC1C,UAAI,CAAC+jK,kBAAkB;AACrB,cAAMmB,WAAW,CAAC,EAAEtI,oBAClB,yNAGF;AAAA,MACF;AACA,UAAI,CAACoH,0BAA0B;AAE7B,cAAMkB,WAAW,CAAC,EAAEtI,oBAClB,oPAGF;AAAA,MACF;AACA,YAAM8H,gBAA8C,CAAE;AACtDE,gBAAUh0G,SAAS6zG,sBAAsB;AAAA,QAAEC;AAAAA,MAAc,CAAC;AAC1D,YAAMU,eAAeC,gBAAgBT,SAAS;AAC9CF,oBAAc/3I,QAAQ24I,eAAa;AACjC,cAAMn6I,SAAS8B,YAAWm4I,YAAY;AACtCj6I,eAAOhkB,MAAMm+J,UAAUzxK,KAAKs3B,OAAOhkB;AAEnCm+J,kBAAU7iK,IAAI,QAAQ,EAAE21I,YAAYjtH,MAAM;AAAA,MAC5C,CAAC;AAAA,IACH;AAGA,QAAI45I,eAAe/kK,SAAS,GAAG;AAC7B,YAAMulK,mBAAmBpyB,WAAWyxB,WAAW,aAAa,MAAM;AAChE,cAAMv5I,OAAOA,MAAM4B,YAAW,WAAW;AACzC,YAAI23I,UAAUjyG,MAAMpgE,KAAK4e,UAAS,GAAI;AACpC,iBAAO0nB,sBACLjB,iBACE,OACAtB,gBAAgB,UAAUjL,MAAM,GAChCgP,cAAc,WAAW,CAC3B,GACAuqI,UAAUjyG,MAAM5I,mBAAkB,GAClC1+B,MACF;AAAA,QACF,OAAO;AACL,iBAAOA,KAAM;AAAA,QACf;AAAA,MACF,CAAC;AAED05I,qBAAep4I,QAAQ64I,oBAAkB;AACvC,cAAMC,UAAUx4I,YAAWs4I,gBAAgB;AAC3CE,gBAAQt+J,MAAMq+J,eAAe3xK,KAAKsT;AAElCq+J,uBAAeptB,YAAYqtB,OAAO;AAAA,MACpC,CAAC;AAAA,IACH;AAGA,QAAIT,eAAehlK,SAAS,GAAG;AAC7B,YAAM0lK,mBAAmBvyB,WAAWyxB,WAAW,aAAa,MAC1DplI,aAAavS,YAAW,KAAK,GAAGA,YAAW,QAAQ,CAAC,CACtD;AAEA+3I,qBAAer4I,QAAQg5I,iBAAe;AACpC,cAAMC,YAAY34I,YAAWy4I,gBAAgB;AAC7CE,kBAAUz+J,MAAMw+J,YAAY9xK,KAAKsT;AAEjCw+J,oBAAYvtB,YAAYwtB,SAAS;AAAA,MACnC,CAAC;AAAA,IACH;AAGA,QAAIX,WAAWjlK,SAAS,GAAG;AACzB,UAAI,CAAC+jK,kBAAkB;AACrB,cAAMkB,WAAW,CAAC,EAAErI,oBAClB,4NAGF;AAAA,MACF;AAEA,YAAMiJ,iBAAiDZ,WAAW5uG,OAChE,CAACC,KAAKwvG,cAAcxvG,IAAI5pC,OAAOq5I,yBAAyBD,SAAS,CAAC,GAClE,CAAA,CACF;AAEAD,qBAAel5I,QAAQm5I,eAAa;AAClC,cAAMxyK,OAAMwyK,UAAUjyK,KAAKy7B,WACvB,KAEAw2I,UAAUrjK,IAAI,UAAU,EAAE5O,KAAKyM;AAEnC,cAAM0lK,kBAAkBF,UAAU15B;AAElC,cAAM65B,eAAeD,gBAAgB52J,uBAAuB;AAAA,UAC1Dge,MAAM04I,UAAUjyK;AAAAA,QAClB,CAAC;AACD,cAAMqyK,SAASF,gBAAgBr2J,iBAAiB;AAAA,UAC9Cwb,QAAQ26I,UAAUjyK;AAAAA,QACpB,CAAC;AACD,cAAMsyK,mBAAmBH,gBAAgBryJ,2BAA2B;AAAA,UAClE2e,KAAKwzI,UAAUjyK;AAAAA,QACjB,CAAC;AACD,cAAMuxK,eAAegB,oBAAoBxB,WAAWqB,cAAc3yK,IAAG;AAErE,cAAM+3B,OAAuB,CAAE;AAC/B,YAAIy6I,UAAUjyK,KAAKy7B,UAAU;AAE3BjE,eAAKpwB,KAAK6qK,UAAUrjK,IAAI,UAAU,EAAE5O,IAAoB;AAAA,QAC1D;AAEA,YAAIoyK,cAAc;AAChB,gBAAMvyK,SAAQsyK,gBAAgBnyK,KAAKw5B;AACnChC,eAAKpwB,KAAKvH,MAAK;AAAA,QACjB;AAEA,cAAMuP,OAAOu1B,eAAevL,YAAWm4I,YAAY,GAAG/5I,IAAI;AAE1D,YAAI66I,QAAQ;AACVF,0BAAgBhvB,iBAAiB,aAAaz6G,gBAAgB;AAC9DupI,oBAAU1tB,YAAYp9G,iBAAiB/3B,MAAMgqB,YAAW,MAAM,CAAC,CAAC;AAEhE63I,oBAAU7pK,KACR+qK,gBAAgBvjK,IAAI,aAAa,CACnC;AAAA,QACD,WAAUwjK,cAAc;AAEvBD,0BAAgB5tB,YAAYn1I,IAAI;AAAA,QACjC,WAAUkjK,kBAAkB;AAC3BL,oBAAU1tB,YACR5/G,eAAewC,iBAAiB/3B,MAAMgqB,YAAW,MAAM,GAAG,KAAK,GAAG,CAChEsP,eAAc,CAAE,CACjB,CACH;AAEAuoI,oBAAU7pK,KACR6qK,UAAUrjK,IAAI,aAAa,CAC7B;AAAA,QACF,OAAO;AACLqjK,oBAAU1tB,YAAYn1I,IAAI;AAAA,QAC5B;AAAA,MACF,CAAC;AAAA,IACH;AAGA,QAAIqhK;AACJ,QAAIQ,UAAU9kK,SAAS,KAAK,CAACikK,aAAa;AACxCK,oBAAc+B,eAAezB,WAAWC,aAAa;AAErD,UACEZ,eAGCY,iBAAiByB,cAAc1B,SAAS,GACzC;AACAE,kBAAUn4I,QAAQ45I,eAAa;AAC7B,gBAAMC,UAAUD,UAAU5kJ,MAAO,IAC7B5d,cAAcugK,WAAW,IACzBr3I,YAAWq3I,WAAW;AAE1BkC,kBAAQr/J,MAAMo/J,UAAU1yK,KAAKsT;AAC7Bo/J,oBAAUnuB,YAAYouB,OAAO;AAAA,QAC/B,CAAC;AAED,YAAI,CAACvC,YAAaK,eAAc;AAAA,MAClC;AAAA,IACF;AAEA,WAAO;AAAA,MAAEA;AAAAA,MAAaC;AAAAA,IAAQ;AAAA,EAChC;AAKA,WAASkC,YAAYz+I,IAA6B;AAChD,WAAON,kBAAkB0C,SAASpC,EAAE;AAAA,EACtC;AAEA,WAAS+9I,yBACPD,WAG+D;AAC/D,QACEA,UAAU15B,WAAWh9H,uBAAwB,KAC7C02J,UAAU15B,WAAWv4I,KAAKm5B,aAAa,KACvC;AACA,YAAM05I,iBAAiBZ,UAAU15B;AAEjC,YAAMpkH,KAAK0+I,eAAe7yK,KAAKm5B,SAAS/nB,MAAM,GAAG,EAAE;AAInD,YAAMvR,SAAQgzK,eAAe7yK,KAAKw5B;AAElC,YAAMs5I,sBAAsBF,YAAYz+I,EAAE;AAE1C,UAAI89I,UAAUjyK,KAAKy7B,UAAU;AAO3B,cAAMm/D,MAAMq3E,UAAUnzG,MAAMohF,8BAA8B,KAAK;AAE/D,cAAMl7I,SAASitK,UAAUjyK,KAAKgF;AAC9B,cAAM+pB,WAAWkjJ,UAAUjyK,KAAK+uB;AAEhC8jJ,uBACGjkK,IAAI,MAAM,EACV21I,YACCp9G,iBACEniC,QACA6+B,qBAAqB,KAAK+2D,KAAK7rE,QAAQ,GACvC,IACF,CACF;AAEF8jJ,uBACGjkK,IAAI,OAAO,EACX21I,YACCwuB,gBACED,sBAAsB,MAAM3+I,IAC5BgT,iBAAiBniC,QAAQo0B,YAAWwhE,IAAInuF,IAAI,GAAG,IAAmB,GAClE5M,MACF,CACF;AAAA,MACJ,OAAO;AAOL,cAAMmF,SAASitK,UAAUjyK,KAAKgF;AAC9B,cAAM+pB,WAAWkjJ,UAAUjyK,KAAK+uB;AAEhC8jJ,uBACGjkK,IAAI,MAAM,EACV21I,YAAYp9G,iBAAiBniC,QAAQ+pB,QAAQ,CAAC;AAEjD8jJ,uBACGjkK,IAAI,OAAO,EACX21I,YACCwuB,gBACED,sBAAsB,MAAM3+I,IAC5BgT,iBAAiBniC,QAAQo0B,YAAWrK,SAAStiB,IAAI,CAAC,GAClD5M,MACF,CACF;AAAA,MACJ;AAEA,UAAIizK,qBAAqB;AACvBD,uBAAetuB,YACbt9G,kBACE9S,IACA0+I,eAAe7yK,KAAKu5B,MACpBs5I,eAAe7yK,KAAKw5B,KACtB,CACF;AAAA,MACF,OAAO;AACLq5I,uBAAe7yK,KAAKm5B,WAAW;AAAA,MACjC;AAEA,aAAO,CACL05I,eAAejkK,IAAI,MAAM,GACzBikK,eAAejkK,IAAI,OAAO,EAAEA,IAAI,MAAM,CAAC;AAAA,IAE1C,WAAUqjK,UAAU15B,WAAWn6H,sBAAsB;AACpD,YAAM40J,aAAaf,UAAU15B;AAE7B,YAAM39C,MAAMq3E,UAAUnzG,MAAMohF,8BAA8B,KAAK;AAC/D,YAAM+yB,cAAchB,UAAUjyK,KAAKy7B,WAC/Bw2I,UAAUnzG,MAAMohF,8BAA8B,MAAM,IACpD;AAEJ,YAAMrxH,QAAwB,CAC5BgV,qBACE,KACA+2D,KACAzzD,iBACE8qI,UAAUjyK,KAAKgF,QACfiuK,cACIpvI,qBACE,KACAovI,aACAhB,UAAUjyK,KAAK+uB,QACjB,IACAkjJ,UAAUjyK,KAAK+uB,UACnBkjJ,UAAUjyK,KAAKy7B,QACjB,CACF,GACAoI,qBACE,KACAsD,iBACE8qI,UAAUjyK,KAAKgF,QACfiuK,cAAc75I,YAAW65I,YAAYxmK,IAAI,IAAIwlK,UAAUjyK,KAAK+uB,UAC5DkjJ,UAAUjyK,KAAKy7B,QACjB,GACAsI,iBAEEkuI,UAAU15B,WAAWv4I,KAAKm5B,SAAS,CAAC,GACpCC,YAAWwhE,IAAInuF,IAAI,GACnBi6B,eAAe,CAAC,CAClB,CACF,CAAC;AAGH,UAAI,CAACurI,UAAU15B,WAAWv4I,KAAK0a,QAAQ;AACrCmU,cAAMznB,KAAKgyB,YAAWwhE,IAAInuF,IAAI,CAAC;AAAA,MACjC;AAEAumK,iBAAWzuB,YAAYr8G,mBAAmBrZ,KAAK,CAAC;AAEhD,YAAM0K,OAAOy5I,WAAWpkK,IACtB,qBACF;AACA,YAAM4qB,QAAQw5I,WAAWpkK,IACvB,oBACF;AACA,aAAO,CAAC2qB,MAAMC,KAAK;AAAA,IACrB;AAEA,WAAO,CAACy4I,SAAS;AAEjB,aAASc,gBACP5+I,IACAoF,MACAC,OACA;AACA,UAAIrF,OAAO,KAAK;AACd,eAAO0P,qBAAqB,KAAKtK,MAAMC,KAAK;AAAA,MAC9C,OAAO;AACL,eAAOuK,iBAAiB5P,IAAIoF,MAAMC,KAAK;AAAA,MACzC;AAAA,IACF;AAAA,EACF;AAEA,WAASi5I,cAAc1B,WAAiC;AACtD,WACEA,UAAUrxJ,cAAa,KACvB,CAAC,CAAEqxJ,UAAUx4B,WAAWA,WAAWv4I,KAAiBi9B;AAAAA,EAExD;AAEA,QAAMi2I,6BAAyBx3B,UAAAA,oBAG5B;AAAA,IACD72G,eAAemc,OAAO;AAAA,MAAEmyH;AAAAA,MAAQ1C;AAAAA,IAAY,GAAG;AAC7C,UAAI,CAACzvH,MAAMpyC,IAAI,QAAQ,EAAEiR,QAAO,EAAI;AACpC,UAAIszJ,OAAO1lK,IAAIuzC,MAAMhhD,IAAI,EAAG;AAC5BmzK,aAAOx4J,IAAIqmC,MAAMhhD,IAAI;AAErBghD,YAAMqrH,oBAAoB,CACxBrrH,MAAMhhD,MACN6jC,qBAAqB,KAAKzK,YAAWq3I,WAAW,GAAGr3I,YAAW,MAAM,CAAC,CAAC,CACvE;AAAA,IACH;AAAA,EACF,CAAC;AAGD,WAASo5I,eACPzB,WACAC,eACA;AACA,WAAO1xB,WAAWyxB,WAAW,QAAQN,iBAAe;AAClD,UAAI,CAACO,iBAAiB,CAACyB,cAAc1B,SAAS,EAAG,QAAOroI,eAAgB;AAExEqoI,gBAAUh0G,SAASm2G,wBAAwB;AAAA,QACzCC,QAAQ,oBAAInM,QAAS;AAAA,QACrByJ;AAAAA,MACF,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAGA,WAASe,gBAAgBT,WAAiC;AACxD,WAAOzxB,WAAWyxB,WAAW,aAAa,MAAM;AAC9C,YAAMqC,cAAcrC,UAAUjyG,MAAMqhF,sBAAsB,MAAM;AAChE,aAAOr2G,wBACL,CAAChC,YAAYsrI,WAAW,CAAC,GACzBzuI,eAAeyH,OAAQ,GAAE,CAACF,cAAc9S,YAAWg6I,YAAY3mK,IAAI,CAAC,CAAC,CAAC,CACxE;AAAA,IACF,CAAC;AAAA,EACH;AAGA,WAAS8lK,oBACPxB,WACAqB,cACAiB,UACA;AACA,UAAMl/I,KAAKi+I,eAAe,QAAQ;AAElC,WAAO9yB,WAAWyxB,WAAW,aAAa58I,EAAE,IAAIk/I,YAAY,EAAE,IAAI,MAAM;AACtE,YAAMC,WAAW,CAAE;AAEnB,UAAIC;AACJ,UAAIF,UAAU;AAEZE,iBAASpsI,iBAAiBiF,OAAQ,GAAEhT,YAAWi6I,QAAQ,CAAC;AAAA,MAC1D,OAAO;AACL,cAAMtzI,SAASgxI,UAAUjyG,MAAMqhF,sBAAsB,MAAM;AAE3DmzB,iBAASn7I,QAAQ4H,MAAM;AACvBwzI,iBAASpsI,iBACPiF,OAAQ,GACRhT,YAAW2G,OAAOtzB,IAAI,GACtB,IACF;AAAA,MACF;AAEA,UAAI2lK,cAAc;AAChB,cAAMoB,aAAazC,UAAUjyG,MAAMqhF,sBAAsB,OAAO;AAChEmzB,iBAASlsK,KAAKosK,UAAU;AAExBD,iBAAS1vI,qBAAqB,KAAK0vI,QAAQn6I,YAAWo6I,WAAW/mK,IAAI,CAAC;AAAA,MACxE;AAEA,aAAOq9B,wBAAwBwpI,UAAUC,MAAM;AAAA,IACjD,CAAC;AAAA,EACH;AAEA,WAASj0B,WACPyxB,WACAtxK,MACA+6B,MACA;AACA,UAAMi5I,WAAW,aAAah0K;AAC9B,QAAIkgJ,OAA2BoxB,UAAUzuB,QAAQmxB,QAAQ;AACzD,QAAI,CAAC9zB,MAAM;AACT,YAAM1kH,KAAK81I,UAAUjyG,MAAMqhF,sBAAsB1gJ,IAAG;AACpDkgJ,aAAO1kH,GAAGxuB;AACVskK,gBAAU1uB,QAAQoxB,UAAU9zB,IAAI;AAEhCoxB,gBAAUjyG,MAAM13D,KAAK;AAAA,QACnB6zB;AAAAA,QACAT,MAAMA,KAAKmlH,IAAI;AAAA,MACjB,CAAC;AAAA,IACH;AAEA,WAAOA;AAAAA,EACT;AAUA,QAAM+zB,iCAA6Bh4B,UAAAA,oBAA8B;AAAA,IAC/D6U,eAAevvG,OAAO;AAAA,MAAEiwH;AAAAA,IAAU,GAAG;AACnCA,gBAAU7pK,KAAK45C,KAAK;AAAA,IACrB;AAAA,IACD7K,cAAc6K,OAAO;AAAA,MAAEiwH;AAAAA,IAAU,GAAG;AAClC,UAAIjwH,MAAMhhD,KAAKyM,SAAS,OAAQ;AAChC,UACE,CAACu0C,MAAMu3F,WAAWjzH,sBAAsB;AAAA,QAAEtgB,QAAQg8C,MAAMhhD;AAAAA,MAAM,CAAA,KAC9D,CAACghD,MAAMu3F,WAAW/yH,oBAAoB;AAAA,QAAE/Y,MAAMu0C,MAAMhhD;AAAAA,MAAK,CAAC,GAC1D;AACA;AAAA,MACF;AAEAixK,gBAAU7pK,KAAK45C,KAAK;AAAA,IACrB;AAAA,IACDnc,eAAemc,OAAO;AAAA,MAAEqwH;AAAAA,IAAW,GAAG;AACpC,UAAIrwH,MAAMpyC,IAAI,QAAQ,EAAEiR,QAAO,EAAIwxJ,YAAWjqK,KAAK45C,KAAK;AAAA,IACzD;AAAA,IACD5Z,iBAAiB4Z,OAAO;AAAA,MAAEowH;AAAAA,IAAW,GAAG;AACtC,UAAIpwH,MAAMpyC,IAAI,QAAQ,EAAEiR,QAAO,EAAIuxJ,YAAWhqK,KAAK45C,KAAK;AAAA,IACzD;AAAA,IACD7a,WAAW6a,OAAO;AAAA,MAAEkwH;AAAAA,IAAe,GAAG;AACpC,UAAI,CAAClwH,MAAMs3F,uBAAuB;AAAA,QAAE7rI,MAAM;AAAA,MAAY,CAAC,EAAG;AAE1D,UAAIm+E,OAAO5pC,MAAM8d;AACjB,SAAG;AACD,YAAI8rB,KAAK84D,cAAc,WAAW,GAAG;AACnC94D,eAAK4xD,OAAO,WAAW;AACvB;AAAA,QACF;AACA,YAAI5xD,KAAKlsF,KAAKwtB,WAAU,KAAM,CAAC0+D,KAAKlsF,KAAKigB,6BAA6B;AACpE;AAAA,QACF;AAAA,MACF,SAAUisE,OAAOA,KAAKzvD;AAEtB+1I,qBAAe9pK,KAAK45C,KAAK;AAAA,IAC1B;AAAA,IACDpV,aAAaoV,OAAO;AAAA,MAAEmwH;AAAAA,IAAe,GAAG;AACtC,UAAI,CAACnwH,MAAMpyC,IAAI,MAAM,EAAE+N,aAAa;AAAA,QAAElQ,MAAM;AAAA,MAAM,CAAC,EAAG;AACtD,UAAI,CAACu0C,MAAMpyC,IAAI,UAAU,EAAE+N,aAAa;AAAA,QAAElQ,MAAM;AAAA,MAAS,CAAC,EAAG;AAE7D0kK,qBAAe/pK,KAAK45C,KAAK;AAAA,IAC3B;AAAA,EACF,CAAC;AAED,WAASswH,oBAAoBZ,QAAkB;AAC7C,UAAMO,YAAoC,CAAE;AAC5C,UAAMC,iBAA8C,CAAE;AACtD,UAAMC,iBAA8C,CAAE;AACtD,UAAMC,aAAsC,CAAE;AAC9C,UAAMC,aAAsC,CAAE;AAE9CX,WAAO3zG,SAAS22G,4BAA4B;AAAA,MAC1CzC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IACF,CAAC;AAED,WAAO;AAAA,MACLJ;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IACD;AAAA,EACH;AAEO,WAASh1B,yBAEW;AACzB,QAAI,CAAC,KAAKlvH,oBAAqB,KAAI,KAAKpO,uBAAsB,GAAI;AAChE,YAAM,IAAI5I,MAAM,0DAA0D;AAAA,IAC5E;AACA,QAAI,KAAK8I,yBAAwB,KAAM,KAAKrQ,IAAI,YAAY,EAAEzC,SAAS,GAAG;AACxE,YAAM,IAAIgK,MAAM,qDAAqD;AAAA,IACvE;AAEA,UAAMsnB,cAAc,KAAK7uB,IAAI,aAAa;AAE1C,QAAI,KAAKoQ,8BAA8B;AACrC,YAAM20J,wBACJl2I,YAAYhhB,sBAAqB,KAAMghB,YAAY3e,mBAAoB;AACzE,YAAM80J,aACJn2I,YAAY/gB,qBAAoB,KAAM+gB,YAAY5e,kBAAmB;AAEvE,YAAMigD,SAAQrhC,YAAYsgC,QAAS,IAC/BtgC,YAAYqhC,MAAM3jC,SAClBsC,YAAYqhC;AAGhB,UAAI7jC,KAAKwC,YAAYz9B,KAAKi7B;AAC1B,UAAI44I,0BAA0B;AAE9B,UAAI,CAAC54I,IAAI;AACP44I,kCAA0B;AAE1B54I,aAAK6jC,OAAMqhF,sBAAsB,SAAS;AAE1C,YAAIwzB,yBAAyBC,YAAY;AACvCn2I,sBAAYz9B,KAAKi7B,KAAK47B,WAAU57B,EAAE;AAAA,QACpC;AAAA,MACF,WAAW24I,cAAc90G,OAAMwhF,WAAWrlH,GAAGxuB,IAAI,GAAG;AAClDonK,kCAA0B;AAE1B54I,aAAK6jC,OAAMqhF,sBAAsBllH,GAAGxuB,IAAI;AAAA,MAC1C;AAEA,YAAMqnK,qBAAqBH,wBACvBl2I,YAAYz9B,OACZkpC,oBAAoB,OAAO,CACzBE,mBACEytB,WAAU57B,EAAE,GAEZwC,YAAYz9B,IACd,CAAC,CACF;AAEL,YAAM+zK,2BAA2BrpI,uBAAuB,MAAM,CAC5DE,gBAAgBisB,WAAU57B,EAAE,GAAG7B,YAAW,SAAS,CAAC,CAAC,CACtD;AAED,WAAK0yI,YAAYiI,wBAAwB;AACzC,WAAKxvB,YAAYuvB,kBAAkB;AAEnC,UAAID,yBAAyB;AAC3B/0G,QAAAA,OAAMogF,oBAAoB,IAAI;AAAA,MAChC;AAEA,aAAO;AAAA,IACT,WAAW,KAAKtwI,IAAI,YAAY,EAAEzC,SAAS,GAAG;AAC5C,YAAM,IAAIgK,MAAM,qDAAqD;AAAA,IACvE;AAEA,UAAM69J,qBAAqBv2I,YAAYi/B,2BAA4B;AAEnE,UAAMh/B,aAAa3uB,OAAOnK,KAAKovK,kBAAkB,EAAEliK,IAAIrF,UAAQ;AAC7D,aAAOm+B,gBAAgBxR,YAAW3sB,IAAI,GAAG2sB,YAAW3sB,IAAI,CAAC;AAAA,IAC3D,CAAC;AAED,UAAMwnK,cAAcvpI,uBAAuB,MAAMhN,UAAU;AAE3D,SAAKouI,YAAYmI,WAAW;AAC5B,SAAK1vB,YAAY9mH,YAAYz9B,IAAI;AACjC,WAAO;AAAA,EACT;AAEA,QAAMk0K,4BAGD;AAAA,IACH,yCACEx1K,OACAC,QACA;AAEA,UAAID,MAAKsB,KAAKyM,SAAS9N,OAAM8N,KAAM;AACnC9N,MAAAA,OAAMw1K,cAAc;AACpBz1K,MAAAA,MAAK04E,KAAM;AAAA,IACZ;AAAA,IACDkM,MAAM5kF,OAAMC,QAAO;AACjB,UAAID,MAAKogE,MAAM4kF,cAAc/kJ,OAAM8N,IAAI,GAAG;AACxC/N,QAAAA,MAAKqc,KAAM;AAAA,MACb;AAAA,IACF;AAAA,EACD;AAEM,WAASy1J,mBAEK4D,kBAA+C;AAClE,QAAI,KAAKp0K,KAAKi7B,GAAI,QAAO;AAEzB,UAAMrJ,MAAMirC,iBAAgB,KAAK78D,MAAM,KAAKm7B,MAAM;AAClD,QAAIvJ,OAAO,KAAM,QAAO;AACxB,QAAI;AAAA,MAAEnlB;AAAAA,IAAK,IAAImlB;AAEf,QAAI,CAACwiJ,oBAAoB,kBAAkB31K,KAAKgO,IAAI,GAAG;AACrD,aAAO;AAAA,IACT;AAEA,QAAIA,KAAK0mH,WAAW,MAAM,KAAK1mH,KAAK0mH,WAAW,MAAM,GAAG;AAEtD,aAAO;AAAA,IACT;AAEA1mH,WAAO2sD,yBAAwB3sD,KAAKkJ,QAAQ,SAAS,GAAG,CAAC;AACzD,UAAMslB,KAAK7B,YAAW3sB,IAAI;AAC1BurB,IAAAA,UAASiD,IAAIrJ,IAAIkrC,YAAY;AAE7B,UAAMn+D,SAAQ;AAAA,MAAEw1K,aAAa;AAAA,MAAO1nK;AAAAA,IAAM;AAK1C,UAAM;AAAA,MAAEqyD,OAAAA;AAAAA,IAAM,IAAI;AAClB,UAAMgX,WAAUhX,OAAMgjF,cAAcr1I,IAAI;AACxC,QAAIqpE,UAAS;AACX,UAAIA,SAAQ75C,SAAS,SAAS;AAa5Bt9B,QAAAA,OAAMw1K,cAAc;AAAA,MACtB;AAAA,IAUF,WAAWr1G,OAAM3jC,OAAOmlH,WAAW7zI,IAAI,KAAKqyD,OAAMyhF,UAAU9zI,IAAI,GAAG;AACjE,WAAKswD,SAASm3G,2BAA2Bv1K,MAAK;AAAA,IAChD;AAEA,QAAI,CAACA,OAAMw1K,aAAa;AACtB,WAAKn0K,KAAKi7B,KAAKA;AACf6jC,MAAAA,OAAMkgF,iBAAgB,EAAG5B,WAAWniH,GAAGxuB,IAAI,IAAI;AAC/C,aAAO;AAAA,IACT;AAEA,QAAIqyD,OAAMwhF,WAAWrlH,GAAGxuB,IAAI,KAAK,CAACqyD,OAAMyhF,UAAUtlH,GAAGxuB,IAAI,GAAG;AAE1DqyD,MAAAA,OAAM09E,OAAOvhH,GAAGxuB,IAAI;AACpB,WAAKzM,KAAKi7B,KAAKA;AACf6jC,MAAAA,OAAMkgF,iBAAgB,EAAG5B,WAAWniH,GAAGxuB,IAAI,IAAI;AAC/C,aAAO;AAAA,IACT;AAGA,QAAI,CAACyf,WAAW,KAAKlsB,IAAI,EAAG,QAAO;AAInC,UAAMP,OAAMq/D,OAAMqhF,sBAAsBllH,GAAGxuB,IAAI;AAG/C,UAAMkuB,SAAS,CAAE;AACjB,aAASzuB,IAAI,GAAGwmB,MAAM2hJ,iBAAiB,KAAKr0K,IAAI,GAAGkM,IAAIwmB,KAAKxmB,KAAK;AAC/DyuB,aAAOvzB,KAAK03D,OAAMqhF,sBAAsB,GAAG,CAAC;AAAA,IAC9C;AACA,UAAM/wI,OAAOyhE,UAAAA,QAASn3C,WAAWkoC;AAAAA,iBAClBniE,IAAG;AAAA,iBACHw7B,EAAE,IAAIN,MAAM;AAAA,iBACZk8B,WAAUp3D,IAAG,CAAC;AAAA;AAAA;AAAA,QAGvBo3D,WAAU57B,EAAE,CAAC;AAAA,iBACJ47B,WAAUp3D,IAAG,CAAC;AAAA;AAAA;AAAA,eAGhBo3D,WAAU57B,EAAE,CAAC;AAAA,SACnBq+B,cAAa,KAAKt5D,IAAI,CAAC;AAAA;AAG9B,WAAO,KAAKukJ,YAAYn1I,IAAI,EAAE,CAAC,EAAER,IAAI,aAAa;AAAA,EACpD;AAEA,WAASylK,iBAAiBr0K,OAA0B;AAClD,UAAMk6G,QAAQl6G,MAAK26B,OAAO25I,UACxBp6I,WAASzb,oBAAoByb,KAAK,KAAKxc,cAAcwc,KAAK,CAC5D;AACA,WAAOggF,UAAU,KAAKl6G,MAAK26B,OAAOxuB,SAAS+tG;AAAAA,EAC7C;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5gCA,QAAAz4C,KAAAv5D,aAAA;AAUsB,UAAA;AAAA,MATpBqsK;AAAAA,MACA3/I;AAAAA,MACAhZ;AAAAA,MACAwP;AAAAA,MACAzO;AAAAA,MACA8P;AAAAA,MACA3P;AAAAA,MACAyS,QAAAA;AAAAA,MACAb,gBAAkBO;AAAAA,IAAe,IAAAwyC;AAW5B,aAAS/yC,gBAEd4K,SACA1K,cACS;AACT,aAAOK,gBAAgB,KAAKjvB,MAAMs5B,SAAS1K,YAAY;AAAA,IACzD;AAE+C;AAM7Clc,cAAc,MAAA,SAASjF,IAErBhO,MACS;AAAA,YAAA+0K;AACT,cAAMnhJ,OAAGmhJ,aAAI,KAAKx0K,SAANw0K,OAAAA,SAAAA,WAAmB/0K,IAAG;AAClC,YAAI4zB,OAAO7d,MAAMC,QAAQ4d,GAAG,GAAG;AAC7B,iBAAO,CAAC,CAACA,IAAIlnB;AAAAA,QACf,OAAO;AACL,iBAAO,CAAC,CAACknB;AAAAA,QACX;AAAA,MACD;AAAA,IACH;AAEO,aAAS2qE,WAAkC;AAChD,aAAO,KAAKl/B,MAAMk/B,SAAS,KAAKh+F,IAAI;AAAA,IACtC;AAE+C;AAK7C0S,cAAAA,KAAaA,QAAQjF;AAMrBiF,cAAe,OAAA,SAAS+hK,KAEtBh1K,MACS;AAET,eAAO,CAAC,KAAKgO,IAAIhO,IAAG;AAAA,MACrB;AAMDiT,uBAAiB,SAAS/I,OAExBlK,MACAI,QACS;AACT,eAAQ,KAAKG,KAAWP,IAAG,MAAMI;AAAAA,MAClC;AAAA,IACH;AAOO,aAAS8qK,WAA2Bx5J,MAAuB;AAChE,aAAOoe,QAAO,KAAKpe,MAAMA,IAAI;AAAA,IAC/B;AAYO,aAAS47J,yCAAuD;AACrE,cACG,KAAKttK,QAAQ,UAAU,KAAKA,QAAQ,WAAW,KAAK84I,WAAWvsH,MAAO;AAAA,IAE3E;AAUO,aAASghJ,qCAEdtqG,cACS;AACT,UAAI,KAAKjjE,QAAQ,UAAU,CAAC,KAAK84I,WAAW55H,6BAA6B;AACvE,eAAO;AAAA,MACT;AAEA,UAAI,KAAKyM,gBAAgB;AACvB,eAAOxP,iBAAiB8mD,YAAW;AAAA,MACrC,WAAW,KAAK9mD,oBAAoB;AAClC,eAAOwP,aAAas3C,YAAW;AAAA,MACjC;AAEA,aAAO;AAAA,IACT;AAMO,aAASgyG,mBAEdC,qBACS;AACT,UAAIj2K,QAAO;AACX,UAAI0gG,QAAQ;AAEZ,SAAG;AACD,cAAM;AAAA,UAAEjuF;AAAAA,UAAMyyJ;AAAAA,QAAU,IAAIllK;AAG5B,YAAI,CAAC0gG,UAAU1gG,MAAKwtB,WAAU,KAAM/a,SAAS,gBAAgB;AAC3D,iBAAO,CAAC,CAACwjK;AAAAA,QACX;AAEAv1E,gBAAQ;AAIR,YAAI5pF,MAAMC,QAAQmuJ,SAAS,KAAKllK,MAAKe,QAAQmkK,UAAUz3J,SAAS,GAAG;AACjE,iBAAO;AAAA,QACT;AAAA,gBAECzN,QAAOA,MAAK65I,eACb,CAAC75I,MAAK4e,UAAW,KACjB,CAAC5e,MAAK2nB,eAAgB;AAGxB,aAAO;AAAA,IACT;AAOO,aAASykJ,qBAA4C;AAC1D,UACE,KAAKvyB,WAAW17H,mBAAkB,KAClCjB,iBAAiB,KAAKgoJ,SAAmB,GACzC;AACA,eAAO;AAAA,MACT,OAAO;AACL,eAAO2Q,wBAAwBh+I,SAAS,KAAK92B,GAAa;AAAA,MAC5D;AAAA,IACF;AAMO,aAASm1K,iBAEdC,cACA/tG,YACS;AACT,UAAI,CAAC,KAAKwxE,0BAA0B;AAClC,YACG,KAAKhzH,sBAAuB,KAC3B,KAAKtlB,KAAK+uB,SAAStiB,SAASq6D,eAC5B,KAAK1pD,mBAAoB,KAAI,KAAKkD,kCACjC,KAAKtgB,KAAKy7B,WACP3e,gBAAgB,KAAK9c,KAAK+uB,UAAU;AAAA,UAAElvB,OAAOinE;AAAAA,QAAW,CAAC,IACxD,KAAK9mE,KAAK+uB,SAA0BtiB,SAASq6D,aACpD;AACA,gBAAM9hE,SACJ,KACA4J,IAAI,QAAQ;AACd,iBACE5J,OAAOszI,uBAAwB,KAC/BtzI,OAAO4vK,iBAAiBC,cAAc,GAAG;AAAA,QAE7C;AAEA,eAAO;AAAA,MACT;AAEA,YAAM/+F,WAAU,KAAKhX,MAAMwgF,WAAY,KAAKt/I,KAAsByM,IAAI;AACtE,UAAI,CAACqpE,YAAWA,SAAQ75C,SAAS,SAAU,QAAO;AAElD,YAAMv9B,QAAOo3E,SAAQp3E;AACrB,YAAMy8B,SAASz8B,MAAK65I;AACpB,UAAI,CAACp9G,OAAO/b,oBAAqB,EAAE,QAAO;AAG1C,UAAI+b,OAAOn7B,KAAKiB,OAAOpB,UAAUg1K,cAAc;AAC7C,YAAI,CAAC/tG,WAAY,QAAO;AAAA,MAC1B,OAAO;AACL,eAAO;AAAA,MACT;AAEA,UAAIpoE,MAAK2gB,8BAA8BynD,eAAe,WAAW;AAC/D,eAAO;AAAA,MACT;AAEA,UAAIpoE,MAAK4gB,gCAAgCwnD,eAAe,KAAK;AAC3D,eAAO;AAAA,MACT;AAEA,UACEpoE,MAAK6gB,kBAAmB,KACxB5C,aAAaje,MAAKsB,KAAK07B,UAAU;AAAA,QAAEjvB,MAAMq6D;AAAAA,MAAW,CAAC,GACrD;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAMO,aAASguG,YAAkC;AAChD,YAAM90K,QAAO,KAAKA;AAClB,UAAIA,MAAK4T,KAAK;AACZ,cAAM7H,OAAO,KAAKoyI,IAAI42B,QAAS;AAC/B,YAAIhpK,KAAM,QAAOA,KAAKqF,MAAMpR,MAAK0T,OAAO1T,MAAK4T,GAAG;AAAA,MAClD;AACA,aAAO;AAAA,IACT;AAEO,aAASohK,wBAEd/nG,QACS;AACT,aAAO,KAAK44F,gCAAgC54F,MAAM,MAAM;AAAA,IAC1D;AAEA,aAASgoG,iBAAiBv2K,OAAgB;AACxC,aAAOA,MAAK4e,UAAS,IACjB5e,SAEEA,MAAK65I,WAAWz5E,MAAMigF,kBAAiB,KACvCrgJ,MAAK65I,WAAWz5E,MAAMkgF,iBAAkB,GACxCtgJ;AAAAA,IACR;AAEA,aAASw2K,qBAAqB/jK,MAAsB1R,MAAa;AAC/D,cAAQ0R,MAAI;AAAA,QAGV,KAAK;AACH,iBAAO1R,SAAQ;AAAA,QAIjB,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,SAAQ,gBAAgBA,SAAQ;AAAA,QAGzC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAGjB,KAAK;AACH,iBAAOA,SAAQ,UAAUA,SAAQ;AAAA,QAGnC,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAGjB,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAGjB,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAGjB,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAGjB,KAAK;AACH,iBAAOA,SAAQ;AAAA,QAEjB;AACE,iBAAO;AAAA,MACX;AAAA,IACF;AAEA,aAAS01K,2BAA2B99B,OAAmB+9B,UAAkB;AACvE,eAASlpK,IAAI,GAAGA,IAAIkpK,UAAUlpK,KAAK;AACjC,cAAMxN,QAAO24I,MAAMnrI,CAAC;AACpB,YAAIgpK,qBAAqBx2K,MAAKy8B,OAAOhqB,MAAMzS,MAAK68B,SAAS,GAAG;AAC1D,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAYA,UAAM85I,kBAAkB5zK,OAAQ;AAczB,aAASokK,gCAEd54F,QACyB;AACzB,aAAOqoG,sCAAsC,MAAMroG,QAAQ,oBAAI5X,IAAG,CAAE;AAAA,IACtE;AAEA,aAASigH,sCACPr2K,OACAguE,QACAhrE,QACyB;AAEzB,YAAMszK,aAAa;AAAA,QACjB91I,MAAMw1I,iBAAiBh2K,KAAI;AAAA,QAC3BguE,QAAQgoG,iBAAiBhoG,MAAM;AAAA,MAChC;AAID,UAAIsoG,WAAWtoG,OAAOjtE,SAASu1K,WAAW91I,KAAKz/B,MAAM;AACnD,eAAOw1K,wDACLv2K,OACAs2K,WAAWtoG,QACXhrE,MACF;AAAA,MACF;AAEA,YAAMo1I,QAAQ;AAAA,QACZpqE,QAAQA,OAAOy3F,YAAa;AAAA,QAC5BjlI,MAAMxgC,MAAKylK,YAAW;AAAA,MACvB;AAID,UAAIrtB,MAAMpqE,OAAO12C,SAASt3B,KAAI,EAAG,QAAO;AACxC,UAAIo4I,MAAM53G,KAAKlJ,SAAS02C,MAAM,EAAG,QAAO;AAGxC,UAAIwoG;AACJ,YAAMC,cAAc;AAAA,QAAEzoG,QAAQ;AAAA,QAAGxtC,MAAM;AAAA,MAAG;AAE1C,aAAO,CAACg2I,cAAcC,YAAYj2I,OAAO43G,MAAM53G,KAAKtzB,QAAQ;AAC1D,cAAMzN,QAAO24I,MAAM53G,KAAKi2I,YAAYj2I,IAAI;AACxCi2I,oBAAYzoG,SAASoqE,MAAMpqE,OAAOnzD,QAAQpb,KAAI;AAC9C,YAAIg3K,YAAYzoG,UAAU,GAAG;AAC3BwoG,uBAAa/2K;AAAAA,QACf,OAAO;AACLg3K,sBAAYj2I;AAAAA,QACd;AAAA,MACF;AAEA,UAAI,CAACg2I,YAAY;AACf,cAAM,IAAIt/J,MACR,2FAEF;AAAA,MACF;AAEA,UACEg/J,2BAA2B99B,MAAM53G,MAAMi2I,YAAYj2I,OAAO,CAAC,KAC3D01I,2BAA2B99B,MAAMpqE,QAAQyoG,YAAYzoG,SAAS,CAAC,GAC/D;AACA,eAAO;AAAA,MACT;AAEA,YAAM0oG,aAAa;AAAA,QACjBl2I,MAAM43G,MAAM53G,KAAKi2I,YAAYj2I,OAAO,CAAC;AAAA,QACrCwtC,QAAQoqE,MAAMpqE,OAAOyoG,YAAYzoG,SAAS,CAAC;AAAA,MAC5C;AAID,UACE0oG,WAAW1oG,OAAO7wC,WAClBu5I,WAAWl2I,KAAKrD,WAChBu5I,WAAW1oG,OAAO22F,cAAc+R,WAAWl2I,KAAKmkI,WAChD;AACA,eAAO+R,WAAW1oG,OAAOxtE,MAAMk2K,WAAWl2I,KAAKhgC,MAAM,WAAW;AAAA,MAClE;AAGA,YAAMmF,OAAOgwB,aAAa6gJ,WAAWtkK,IAAI;AACzC,YAAMykK,cAAc;AAAA,QAClBn2I,MAAM76B,KAAKkV,QAAQ67J,WAAWl2I,KAAKlE,SAAS;AAAA,QAC5C0xC,QAAQroE,KAAKkV,QAAQ67J,WAAW1oG,OAAO1xC,SAAS;AAAA,MACjD;AACD,aAAOq6I,YAAY3oG,SAAS2oG,YAAYn2I,OAAO,WAAW;AAAA,IAC5D;AAEA,aAASo2I,0DACP52K,OACAguE,QACAhrE,QACyB;AACzB,UAAI,CAACgrE,OAAOxwD,yBAAyB;AACnC,YACE64J,sCAAsCr2K,OAAMguE,QAAQhrE,MAAK,MAAM,UAC/D;AACA,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACR,WAAUgrE,OAAOsrE,WAAWprH,uBAAuB;AAClD,eAAO;AAAA,MACT;AAMA,YAAM2oD,WAAU7I,OAAOnO,MAAMwgF,WAAWryE,OAAOjtE,KAAKi7B,GAAGxuB,IAAI;AAG3D,UAAI,CAACqpE,SAAQsnE,WAAY,QAAO;AAEhC,YAAMF,iBAAkCpnE,SAAQonE;AAEhD,UAAI44B;AAGJ,iBAAWp3K,SAAQw+I,gBAAgB;AAGjC,cAAM64B,kBAAkB,CAAC,CAACr3K,MAAKglI,KAAKhlI,CAAAA,UAAQA,MAAKsB,SAASitE,OAAOjtE,IAAI;AACrE,YAAI+1K,gBAAiB;AAErB,YAAIr3K,MAAKe,QAAQ,YAAY,CAACf,MAAK65I,WAAWz8H,oBAAoB;AAGhE,iBAAO;AAAA,QACT;AAEA,cAAM8pJ,SAAS0P,sCAAsCr2K,OAAMP,OAAMuD,MAAK;AAEtE,YAAI6zK,aAAaA,cAAclQ,QAAQ;AACrC,iBAAO;AAAA,QACT,OAAO;AACLkQ,sBAAYlQ;AAAAA,QACd;AAAA,MACF;AAEA,aAAOkQ;AAAAA,IACT;AAEA,aAASN,wDACPv2K,OACAguE,QACAhrE,QACyB;AACzB,UAAI+zK,UAAU/zK,OAAM2M,IAAI3P,MAAKe,IAAI;AACjC,UAAI6/I;AAEJ,UAAI,CAACm2B,SAAS;AACZ/zK,QAAAA,OAAM+J,IAAI/M,MAAKe,MAAOg2K,UAAU,oBAAI3gH,KAAM;AAAA,MAC5C,WAAYwqF,SAASm2B,QAAQpnK,IAAIq+D,OAAOjtE,IAAI,GAAI;AAC9C,YAAI6/I,WAAWw1B,iBAAiB;AAC9B,iBAAO;AAAA,QACT;AACA,eAAOx1B;AAAAA,MACT;AAEAm2B,cAAQhqK,IAAIihE,OAAOjtE,MAAMq1K,eAAe;AAExC,YAAMt8G,SAAS88G,0DACb52K,OACAguE,QACAhrE,MACF;AAEA+zK,cAAQhqK,IAAIihE,OAAOjtE,MAAM+4D,MAAM;AAC/B,aAAOA;AAAAA,IACT;AAKO,aAASitE,QAEdiwC,WACAnH,UACA;AACA,aAAOoH,SAAS9mK,KAAK,MAAM6mK,WAAWnH,QAAQ,KAAK;AAAA,IACrD;AAEO,aAASoH,SAEdD,WACAnH,UAC6B;AAAA,UAAAqH;AAG7B,WAAAA,YAAIrH,aAAAqH,QAAAA,UAAU5/I,SAAS,IAAI,EAAG;AAG9Bu4I,iBAAWA,YAAY,CAAE;AACzBA,eAAS1nK,KAAK,IAAI;AAElB,UAAI,KAAKkX,wBAAwB;AAC/B,YAAI,KAAK1P,IAAI,IAAI,EAAE+N,aAAY,GAAI;AACjC,iBAAO,KAAK/N,IAAI,MAAM,EAAEo3H,QAAQiwC,WAAWnH,QAAQ;AAAA,QACrD;AAAA,MAGF,WAAW,KAAKx2B,0BAA0B;AACxC,cAAMxiE,WAAU,KAAKhX,MAAMwgF,WAAW,KAAKt/I,KAAKyM,IAAI;AACpD,YAAI,CAACqpE,SAAS;AAGd,YAAI,CAACA,SAAQmnE,SAAU;AAGvB,YAAInnE,SAAQ75C,SAAS,SAAU;AAE/B,YAAI65C,SAAQp3E,SAAS,MAAM;AACzB,gBAAM04D,MAAM0e,SAAQp3E,KAAKsnI,QAAQiwC,WAAWnH,QAAQ;AAEpD,cAAI,KAAKprC,KAAKvoG,YAAUA,OAAOn7B,SAASo3D,IAAIp3D,IAAI,EAAG;AACnD,iBAAOo3D;AAAAA,QACT;AAAA,MACF,WAAW,KAAKvzC,wBAAwB;AAEtC,eAAO,KAAKjV,IAAI,YAAY,EAAEo3H,QAAQiwC,WAAWnH,QAAQ;AAAA,MAC1D,WAAUmH,aAAa,KAAK74J,sBAAsB;AAIjD,cAAMg5J,YAAY,KAAK/8G,cAAe;AACtC,YAAI,CAAC5sC,UAAU2pJ,SAAS,EAAG;AAG3B,cAAMC,aAAaD,UAAUv2K;AAE7B,cAAMotE,SAAS,KAAKr+D,IAAI,QAAQ,EAAEo3H,QAAQiwC,WAAWnH,QAAQ;AAE7D,YAAI7hG,OAAO1vD,sBAAsB;AAC/B,gBAAM+9C,QAAQ2R,OAAOr+D,IAAI,YAAY;AACrC,qBAAW6mE,QAAQna,OAAgB;AACjC,gBAAI,CAACma,KAAK3oD,aAAc;AAExB,kBAAMrtB,OAAMg2E,KAAK7mE,IAAI,KAAK;AAG1B,gBAAI0C,QACFmkE,KAAKg/F,KAAK,UAAU,KAAKh1K,KAAIkd,aAAa;AAAA,cAAElQ,MAAM4pK;AAAAA,YAAW,CAAC;AAGhE/kK,oBAAQA,SAAS7R,KAAIgtB,UAAU;AAAA,cAAE5sB,OAAOw2K;AAAAA,YAAW,CAAC;AAEpD,gBAAI/kK,MAAO,QAAOmkE,KAAK7mE,IAAI,OAAO,EAAEo3H,QAAQiwC,WAAWnH,QAAQ;AAAA,UACjE;AAAA,QACF,WAAW7hG,OAAO3xD,kBAAiB,KAAM,CAACkY,MAAM,CAAC6iJ,UAAU,GAAG;AAC5D,gBAAMxgB,QAAQ5oF,OAAOr+D,IAAI,UAAU;AACnC,gBAAM0rH,OAAOu7B,MAAMwgB,UAAU;AAC7B,cAAI/7C,KAAM,QAAOA,KAAK0L,QAAQiwC,WAAWnH,QAAQ;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAEO,aAASwH,uBAA8C;AAC5D,UAAI,KAAK35J,gBAAgB;AACvB,cAAMm5D,WAAU,KAAKhX,MAAMwgF,WAAW,KAAKt/I,KAAKyM,IAAI;AACpD,YAAI,CAACqpE,SAAS,QAAO;AACrB,eAAOA,SAAQmnE;AAAAA,MACjB;AAEA,UAAI,KAAKxwH,aAAa;AACpB,YAAI,KAAKvP,mBAAmB;AAC1B,iBAAO;AAAA,QACT;AAEA,YAAI,KAAK8C,qBAAqB;AAC5B,iBAAO,KAAKpR,IAAI,aAAa,EAAE4yF,MAAM9nE,gBACnCA,WAAW48I,sBACb;AAAA,QACF;AAEA,eAAO;AAAA,MACT;AAEA,UAAI,KAAKn4J,qBAAqB;AAC5B,YAAI,KAAKne,KAAKm5B,aAAa,QAAQ;AACjC,iBAAO;AAAA,QACT;AAEA,eAAO,KAAKvqB,IAAI,UAAU,EAAE0nK,qBAAsB;AAAA,MACpD;AAEA,UAAI,KAAK96J,sBAAsB;AAC7B,cAAM;AAAA,UAAE2d;AAAAA,QAAU,IAAG,KAAKn5B;AAC1B,eACEm5B,aAAa,QACbA,aAAa,gBACb,KAAKvqB,IAAI,MAAM,EAAE0nK,qBAAsB,KACvC,KAAK1nK,IAAI,OAAO,EAAE0nK,qBAAsB;AAAA,MAE5C;AAEA,UAAI,KAAKl5J,sBAAsB;AAC7B,eACE,CAAC,KAAKpd,KAAKy7B,YACX,KAAK7sB,IAAI,QAAQ,EAAE+N,aAAa;AAAA,UAAElQ,MAAM;AAAA,QAAU,CAAA,KAClD,CAAC,KAAKqyD,MAAMwhF,WAAW,UAAU;AAAA,UAAE8B,WAAW;AAAA,QAAK,CAAC;AAAA,MAExD;AAEA,UAAI,KAAKtmI,oBAAoB;AAC3B,eACE,KAAK9b,KAAK+5B,UAAU5tB,WAAW,KAC/B,KAAKyC,IAAI,QAAQ,EAAE8f,eAAe,YAAY,KAC9C,CAAC,KAAKowC,MAAMwhF,WAAW,UAAU;AAAA,UAAE8B,WAAW;AAAA,QAAK,CAAC,KACpD,KAAKxzI,IAAI,WAAW,EAAE,CAAC,EAAEkO,gBAAiB;AAAA,MAE9C;AAEA,aAAO;AAAA,IACT;AAEO,aAASy5J,iBAA+B;AAC7C,YAAM7iK,QAAQ,KAAK4J,UAAW,IAAG,OAAO,KAAKi7H;AAE7C,YAAMi+B,eAAe9iK,MAAMgwH,KAAKhlI,CAAAA,UAAQ;AACtC,YAAIA,MAAK4e,UAAU;AAAA,UAAEwe,YAAY;AAAA,QAAU,CAAA,EAAG,QAAO;AAErD,YAAIp9B,MAAKuuB,QAAS,EAAE,QAAO;AAE3B,YACEvuB,MAAKigB,0BAAyB,KAC9B,CAACjgB,MAAKkQ,IAAI,MAAM,EAAEgN,oBAClB;AACA,iBAAO;AAAA,QACT;AAEA,YAAIie;AACJ,YAAIn7B,MAAKwtB,cAAc;AACrB2N,iBAAOn7B,MAAKsB,KAAK65B;AAAAA,QACnB,WAAWn7B,MAAK4e,aAAa;AAI3Buc,iBAAOn7B,MAAKsB;AAAAA,QACd,OAAO;AACL,iBAAO;AAAA,QACT;AAEA,mBAAWmkC,aAAatK,KAAKD,YAAY;AACvC,cAAIuK,UAAUtkC,MAAMA,UAAU,cAAc;AAC1C,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAC;AAED,aAAO,CAAC,CAAC22K;AAAAA,IACX;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACtsBA,MAAA/nJ,SAAAvmB,YAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAMsB,QAAA;AAAA,IALpB4zD,0BAA4B4E;AAAAA,IAC5BvE,uBAAyBM;AAAAA,IACzBC,4BAA8BiE;AAAAA,IAC9Bj6B;AAAAA,IACAjE;AAAAA,EAAe,IAAAg/B;AAIjB,QAAMg1G,oBAAoB;AAC1B,QAAMC,mBAAmB;AAmBzB,WAASC,iBAAiBj4K,OAA4B;AACpD,WAAO;AAAA,MAAEyS,MAAMslK;AAAAA,MAAmB/3K,MAAAA;AAAAA,IAAM;AAAA,EAC1C;AAEA,WAASk4K,gBAAgBl4K,OAA4B;AACnD,WAAO;AAAA,MAAEyS,MAAMulK;AAAAA,MAAkBh4K,MAAAA;AAAAA,IAAM;AAAA,EACzC;AAEO,WAASm4K,cAA6C;AAC3D,QAAI,KAAKp3K,QAAQ,QAAQ;AACvB,aAAO,KAAK0rK,WAAW,OAAO;AAAA,IAChC,WAAW,KAAK1rK,QAAQ,SAAS;AAC/B,aAAO,KAAK0rK,WAAW,MAAM;AAAA,IAC/B;AACA,WAAO;AAAA,EACT;AAEA,WAAS2L,qBACPp4K,OACAq4K,SACA/+J,UACc;AACd,QAAItZ,OAAM;AACRq4K,cAAQ3vK,KAAK,GAAG4vK,sBAAsBt4K,OAAMsZ,QAAO,CAAC;AAAA,IACtD;AACA,WAAO++J;AAAAA,EACT;AAEA,WAASE,0BACP16I,OACAw6I,SACA/+J,UACc;AAEd,QAAIk/J,wBAAsC,CAAE;AAC5C,aAAShrK,IAAI,GAAGA,IAAIqwB,MAAMpwB,QAAQD,KAAK;AACrC,YAAMirK,WAAW56I,MAAMrwB,CAAC;AACxB,YAAMkrK,kBAAkBJ,sBAAsBG,UAAUn/J,QAAO;AAC/D,YAAMq/J,oBAAoB,CAAE;AAC5B,YAAMC,mBAAmB,CAAE;AAC3B,iBAAW33K,MAAKy3K,iBAAiB;AAC/B,YAAIz3K,GAAEwR,SAASslK,mBAAmB;AAChCY,4BAAkBjwK,KAAKzH,EAAC;AAAA,QAC1B;AACA,YAAIA,GAAEwR,SAASulK,kBAAkB;AAC/BY,2BAAiBlwK,KAAKzH,EAAC;AAAA,QACzB;AAAA,MACF;AACA,UAAI03K,kBAAkBlrK,QAAQ;AAC5B+qK,gCAAwBG;AAAAA,MAC1B;AACAN,cAAQ3vK,KAAK,GAAGkwK,gBAAgB;AAAA,IAClC;AACAP,YAAQ3vK,KAAK,GAAG8vK,qBAAqB;AACrC,WAAOH;AAAAA,EACT;AAEA,WAASQ,wBAAwBC,aAA2B;AAC1DA,gBAAY1+I,QAAQn5B,CAAAA,OAAK;AACvBA,MAAAA,GAAEwR,OAAOulK;AAAAA,IACX,CAAC;AAAA,EACH;AAeA,WAASe,uCACPD,aACAE,WACA;AACAF,gBAAY1+I,QAAQn5B,CAAAA,OAAK;AACvB,UAAIA,GAAEjB,KAAKmd,iBAAiB;AAAA,QAAEie,OAAO;AAAA,MAAK,CAAC,GAAG;AAC5C,YAAI49I,WAAW;AACb/3K,UAAAA,GAAEjB,KAAK6lJ,YAAY9hH,gBAAgB,QAAQiE,eAAe,CAAC,CAAC,CAAC;AAAA,QAC/D,OAAO;AACL/mC,UAAAA,GAAEjB,KAAK8lJ,OAAQ;AAAA,QACjB;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAASmzB,2BACPtgC,OACAr/H,UACc;AACd,UAAMw/J,cAAc,CAAE;AACtB,QAAIx/J,SAAQ4/J,cAAc;AACxB,UAAIV,wBAAwB,CAAE;AAC9B,eAAShrK,IAAI,GAAGA,IAAImrI,MAAMlrI,QAAQD,KAAK;AACrC,cAAMxN,QAAO24I,MAAMnrI,CAAC;AACpB,cAAMovG,aAAUvsG,OAAAyE,WAAQwE,UAAO;AAAA,UAAE6/J,cAAc;AAAA,SAAO;AACtD,YACEn5K,MAAKkd,uBACJ5D,SAAQ6/J,gBACP7/J,SAAQ8/J,sBACV;AACAx8D,qBAAWw8D,sBAAsB;AAAA,QACnC,OAAO;AACLx8D,qBAAWw8D,sBAAsB;AAAA,QACnC;AACA,cAAMC,uBAAuBf,sBAAsBt4K,OAAM48G,UAAU;AACnE,YACEy8D,qBAAqB5rK,SAAS,KAO9B4rK,qBAAqBv2E,MAAM7hG,CAAAA,OAAKA,GAAEwR,SAASulK,gBAAgB,GAC3D;AACA,cACEQ,sBAAsB/qK,SAAS,KAC/B4rK,qBAAqBv2E,MAAM7hG,CAAAA,OACzBA,GAAEjB,KAAKmd,iBAAiB;AAAA,YAAEie,OAAO;AAAA,UAAM,CAAA,CACzC,GACA;AAMAy9I,oCAAwBL,qBAAqB;AAC7CM,wBAAYpwK,KAAK,GAAG8vK,qBAAqB;AAGzC,gBAAIA,sBAAsB3nF,KAAK5vF,CAAAA,OAAKA,GAAEjB,KAAK2tB,cAAa,CAAE,GAAG;AAC3DmrJ,0BAAYpwK,KAAK,GAAG2wK,oBAAoB;AACxCN,qDACEM,sBACgB,IAClB;AAAA,YACF;AACAN,mDACEM,sBACgB,KAClB;AAAA,UACF,OAAO;AACLP,wBAAYpwK,KAAK,GAAG2wK,oBAAoB;AACxC,gBAAI,CAAC//J,SAAQ8/J,qBAAqB;AAChCL,qDACEM,sBACgB,IAClB;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AACA,YAAI7rK,MAAMmrI,MAAMlrI,SAAS,GAAG;AAC1BqrK,sBAAYpwK,KAAK,GAAG2wK,oBAAoB;AAAA,QAC1C,OAAO;AACLb,kCAAwB,CAAE;AAC1B,mBAAShrK,KAAI,GAAGA,KAAI6rK,qBAAqB5rK,QAAQD,MAAK;AACpD,kBAAMvM,KAAIo4K,qBAAqB7rK,EAAC;AAChC,gBAAIvM,GAAEwR,SAASulK,kBAAkB;AAC/Bc,0BAAYpwK,KAAKzH,EAAC;AAAA,YACpB;AACA,gBAAIA,GAAEwR,SAASslK,mBAAmB;AAChCS,oCAAsB9vK,KAAKzH,EAAC;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,WAAW03I,MAAMlrI,QAAQ;AAIvB,eAASD,IAAImrI,MAAMlrI,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC1C,cAAM8rK,kBAAkBhB,sBAAsB3/B,MAAMnrI,CAAC,GAAG8L,QAAO;AAC/D,YACEggK,gBAAgB7rK,SAAS,KACxB6rK,gBAAgB7rK,WAAW,KAC1B,CAAC6rK,gBAAgB,CAAC,EAAEt5K,KAAK2f,sBAAqB,GAChD;AACAm5J,sBAAYpwK,KAAK,GAAG4wK,eAAe;AACnC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAOR;AAAAA,EACT;AAEA,WAASR,sBACPt4K,OACAsZ,UACc;AACd,QAAI++J,UAAwB,CAAE;AAC9B,QAAIr4K,MAAKke,iBAAiB;AACxBm6J,gBAAUD,qBAAqBp4K,MAAKkQ,IAAI,YAAY,GAAGmoK,SAAS/+J,QAAO;AACvE++J,gBAAUD,qBAAqBp4K,MAAKkQ,IAAI,WAAW,GAAGmoK,SAAS/+J,QAAO;AAAA,IACvE,WACCtZ,MAAK2nB,eAAgB,KACrB3nB,MAAKstB,WACLttB,MAAKotB,QAAO,KACZptB,MAAKme,mBAAkB,GACvB;AACA,aAAOi6J,qBAAqBp4K,MAAKkQ,IAAI,MAAM,GAAGmoK,SAAS/+J,QAAO;AAAA,IAC/D,WAAUtZ,MAAK4e,UAAW,KAAI5e,MAAKkd,iBAAgB,GAAI;AACtD,aAAO+7J,2BAA2Bj5K,MAAKkQ,IAAI,MAAM,GAAGoJ,QAAO;AAAA,IAC7D,WAAWtZ,MAAKwtB,cAAc;AAC5B,aAAO8qJ,sBAAsBt4K,MAAKkQ,IAAI,MAAM,GAAGoJ,QAAO;AAAA,IACxD,WAAWtZ,MAAKwf,kBAAkB;AAChC64J,gBAAUD,qBAAqBp4K,MAAKkQ,IAAI,OAAO,GAAGmoK,SAAS/+J,QAAO;AAClE++J,gBAAUD,qBAAqBp4K,MAAKkQ,IAAI,SAAS,GAAGmoK,SAAS/+J,QAAO;AAAA,IACtE,WAAWtZ,MAAKqd,iBAAiB;AAC/B,aAAO+6J,qBAAqBp4K,MAAKkQ,IAAI,MAAM,GAAGmoK,SAAS/+J,QAAO;AAAA,IAChE,WAAWtZ,MAAKqf,qBAAqB;AACnC,aAAOk5J,0BAA0Bv4K,MAAKkQ,IAAI,OAAO,GAAGmoK,SAAS/+J,QAAO;AAAA,IACtE,WAAWtZ,MAAKof,gBAAgB;AAC9B,aAAO65J,2BAA2Bj5K,MAAKkQ,IAAI,YAAY,GAAG;AAAA,QACxDgpK,cAAc;AAAA,QACdE,qBAAqB;AAAA,QACrBD,cAAc;AAAA,MAChB,CAAC;AAAA,IACH,WAAWn5K,MAAKmd,oBAAoB;AAClCk7J,cAAQ3vK,KAAKwvK,gBAAgBl4K,KAAI,CAAC;AAAA,IACpC,OAAO;AACLq4K,cAAQ3vK,KAAKuvK,iBAAiBj4K,KAAI,CAAC;AAAA,IACrC;AAEA,WAAOq4K;AAAAA,EACT;AAYO,WAAStJ,uBAAiD;AAC/D,UAAMsJ,UAAUC,sBAAsB,MAAM;AAAA,MAC1CY,cAAc;AAAA,MACdE,qBAAqB;AAAA,MACrBD,cAAc;AAAA,IAChB,CAAC;AACD,WAAOd,QAAQjlK,IAAIrD,OAAKA,EAAE/P,IAAI;AAAA,EAChC;AAEO,WAASysK,WAA2B1rK,MAAgC;AACzE,WAAO0sK,OAAAA,QAASv9J,IAAI;AAAA,MAClB2pI,YAAY,KAAKA;AAAAA,MACjBp9G,QAAQ,KAAKA;AAAAA,MACbyoI,WAAW,KAAKA;AAAAA,MAChBxnI,SAAS,KAAKA;AAAAA,MACd38B,KAAKA;AAAAA,IACP,CAAC,EAAEk7G,WAAW,KAAK3iG,OAAO;AAAA,EAC5B;AAEO,WAASigK,iBAAyC;AAEvD,WAAO,KAAK9M,WAAW,KAAK1rK,MAAM,CAAC;AAAA,EACrC;AAEO,WAASy4K,iBAAyC;AAEvD,WAAO,KAAK/M,WAAW,KAAK1rK,MAAM,CAAC;AAAA,EACrC;AAEO,WAAS04K,qBAA+C;AAE7D,QAAIC,OAAe,KAAK34K;AACxB,QAAI44K,UAAU,KAAKlN,WAAW,EAAEiN,IAAI;AACpC,UAAME,WAAW,CAAE;AACnB,WAAOD,QAAQr4K,MAAM;AACnBs4K,eAASlxK,KAAKixK,OAAO;AACrBA,gBAAU,KAAKlN,WAAW,EAAEiN,IAAI;AAAA,IAClC;AACA,WAAOE;AAAAA,EACT;AAEO,WAASC,qBAA+C;AAE7D,QAAIH,OAAe,KAAK34K;AACxB,QAAI44K,UAAU,KAAKlN,WAAW,EAAEiN,IAAI;AACpC,UAAME,WAAW,CAAE;AACnB,WAAOD,QAAQr4K,MAAM;AACnBs4K,eAASlxK,KAAKixK,OAAO;AACrBA,gBAAU,KAAKlN,WAAW,EAAEiN,IAAI;AAAA,IAClC;AACA,WAAOE;AAAAA,EACT;AA2DA,WAAS1pK,IAEPnP,MACAuY,WAAmC,MACZ;AACvB,QAAIA,aAAY,KAAMA,CAAAA,WAAU,KAAKA;AACrC,UAAM6W,QAAQpvB,KAAIoS,MAAM,GAAG;AAC3B,QAAIgd,MAAM1iB,WAAW,GAAG;AAGtB,aAAOqsK,QAAQppK,KAAK,MAAM3P,MAAKuY,QAAO;AAAA,IACxC,OAAO;AAEL,aAAOygK,YAAYrpK,KAAK,MAAMyf,OAAO7W,QAAO;AAAA,IAC9C;AAAA,EACF;AAIO,WAASwgK,QAEd/4K,MACAuY,UACuB;AACvB,UAAMhY,QAAO,KAAKA;AAClB,UAAM4jK,YAAY5jK,MAAKP,IAAG;AAE1B,QAAI+V,MAAMC,QAAQmuJ,SAAS,GAAG;AAE5B,aAAOA,UAAU9xJ,IAAI,CAACygE,GAAGrmE,MAAM;AAC7B,eAAOigK,OAAAA,QAASv9J,IAAI;AAAA,UAClBwtB,SAAS38B;AAAAA,UACT84I,YAAY;AAAA,UACZp9G,QAAQn7B;AAAAA,UACR4jK;AAAAA,UACAnkK,KAAKyM;AAAAA,QACP,CAAC,EAAEyuG,WAAW3iG,QAAO;AAAA,MACvB,CAAC;AAAA,IACH,OAAO;AACL,aAAOm0J,OAAAA,QAASv9J,IAAI;AAAA,QAClB2pI,YAAY;AAAA,QACZp9G,QAAQn7B;AAAAA,QACR4jK,WAAW5jK;AAAAA,QACXP,KAAKA;AAAAA,MACP,CAAC,EAAEk7G,WAAW3iG,QAAO;AAAA,IACvB;AAAA,EACF;AAEO,WAASygK,YAEd5pJ,OACA7W,UACuB;AACvB,QAAItZ,QAA8B;AAClC,eAAWu3G,QAAQpnF,OAAO;AACxB,UAAIonF,SAAS,KAAK;AAEhBv3G,QAAAA,QAAOA,MAAK65I;AAAAA,MACd,OAAO;AACL,YAAI/iI,MAAMC,QAAQ/W,KAAI,GAAG;AAEvBA,UAAAA,QAAOA,MAAKu3G,IAAI;AAAA,QAClB,OAAO;AACLv3G,UAAAA,QAAOA,MAAKkQ,IAAIqnG,MAAMj+F,QAAO;AAAA,QAC/B;AAAA,MACF;AAAA,IACF;AACA,WAAOtZ;AAAAA,EACT;AAEO,WAASo9D,4BAAyC;AACvD,WAAO4E,0BAA0B,KAAK1gE,IAAI;AAAA,EAC5C;AAYA,WAASm8D,uBAEPC,YAC+C;AAC/C,WAAOK,uBAAuB,KAAKz8D,MAAMo8D,UAAU;AAAA,EACrD;AAcA,WAASM,4BAEPN,YAC+C;AAC/C,WAAOuE,4BAA4B,KAAK3gE,MAAMo8D,UAAU;AAAA,EAC1D;AAmBA,WAASs8G,0BAEPt8G,aAAsB,OACtBC,YAAqB,OAC8C;AACnE,UAAM39D,QAAO;AACb,UAAMq9D,SAAS,CAACr9D,KAAI;AACpB,UAAMs9D,MAAMjtD,uBAAOktD,OAAO,IAAI;AAE9B,WAAOF,OAAO5vD,QAAQ;AACpB,YAAM8uB,KAAK8gC,OAAOQ,MAAO;AACzB,UAAI,CAACthC,GAAI;AACT,UAAI,CAACA,GAAGj7B,KAAM;AAEd,YAAM4E,OAAO63D,uBAAuB73D,KAAKq2B,GAAGj7B,KAAKmR,IAAI;AAErD,UAAI8pB,GAAGte,gBAAgB;AACrB,YAAIy/C,YAAY;AACd,gBAAMI,OAAQR,IAAI/gC,GAAGj7B,KAAKyM,IAAI,IAAIuvD,IAAI/gC,GAAGj7B,KAAKyM,IAAI,KAAK,CAAG;AAC1D+vD,eAAKp1D,KAAK6zB,EAAE;AAAA,QACd,OAAO;AACL+gC,cAAI/gC,GAAGj7B,KAAKyM,IAAI,IAAIwuB;AAAAA,QACtB;AACA;AAAA,MACF;AAEA,UAAIA,GAAG9N,uBAAuB;AAC5B,cAAMsQ,cAAcxC,GAAGrsB,IAAI,aAAa;AACxC,YAAI6uB,YAAYpR,iBAAiB;AAC/B0vC,iBAAO30D,KAAKq2B,WAAW;AAAA,QACzB;AACA;AAAA,MACF;AAEA,UAAI4+B,WAAW;AACb,YAAIphC,GAAGxe,yBAAyB;AAC9Bs/C,iBAAO30D,KAAK6zB,GAAGrsB,IAAI,IAAI,CAAC;AACxB;AAAA,QACF;AACA,YAAIqsB,GAAGve,wBAAwB;AAC7B;AAAA,QACF;AAAA,MACF;AAEA,UAAI9X,MAAM;AACR,iBAASsH,IAAI,GAAGA,IAAItH,KAAKuH,QAAQD,KAAK;AACpC,gBAAMzM,OAAMmF,KAAKsH,CAAC;AAClB,gBAAM80C,QAAQ/lB,GAAGrsB,IAAInP,IAAG;AACxB,cAAI+V,MAAMC,QAAQurC,KAAK,GAAG;AACxB+a,mBAAO30D,KAAK,GAAG45C,KAAK;AAAA,UACtB,WAAWA,MAAMhhD,MAAM;AACrB+7D,mBAAO30D,KAAK45C,KAAK;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAOgb;AAAAA,EACT;AAcA,WAAS28G,+BAEPv8G,aAAsB,OACtB;AACA,WAAO,KAAKs8G,0BAA0Bt8G,YAAY,IAAI;AAAA,EACxD;;;;;;;;;;;;;;AC3kBA,MAAAqF,KAAAv5D,aAAA;AAGsB,QAAA;AAAA,IAFpB0vD,YAAc+H;AAAAA,IACdjI,aAAeC;AAAAA,EAAY,IAAA8J;AAOtB,WAAS6mG,4BAA0C;AAExD,QAAI,OAAO,KAAK7oK,QAAQ,SAAU;AAElC,UAAMO,QAAO,KAAKA;AAClB,QAAI,CAACA,MAAM;AAEX,UAAM44K,WAAW54K,MAAKk3D;AACtB,UAAM06F,UAAU5xJ,MAAKg3D;AACrB,QAAI,CAAC4hH,YAAY,CAAChnB,QAAS;AAE3B,UAAMt+H,OAAO,KAAK63I,WAAW,KAAK1rK,MAAM,CAAC;AACzC,UAAMgzB,OAAO,KAAK04I,WAAW,KAAK1rK,MAAM,CAAC;AACzC,UAAMo5K,UAAU9gH,QAAQzkC,KAAKtzB,IAAI;AACjC,UAAM84K,UAAU/gH,QAAQtlC,KAAKzyB,IAAI;AAEjC,QAAI64K,SAAS;AACX,UAAIjnB,SAAS;AACXt+H,aAAKokC,YACH,YACAqhH,iBAAiBnnB,SAASt+H,KAAKtzB,KAAKk3D,gBAAgB,CACtD;AAAA,MACF;AACA,UAAI0hH,YAAY,CAACE,QAASxlJ,MAAKokC,YAAY,YAAYkhH,QAAQ;AAAA,IACjE;AACA,QAAIE,SAAS;AACX,UAAIF,UAAU;AACZnmJ,aAAKilC,YACH,WACAqhH,iBAAiBH,UAAUnmJ,KAAKzyB,KAAKg3D,eAAe,CACtD;AAAA,MACF;AACA,UAAI46F,WAAW,CAACinB,QAASpmJ,MAAKilC,YAAY,WAAWk6F,OAAO;AAAA,IAC9D;AAAA,EACF;AAEA,WAASmnB,iBAAoBx3K,OAAWy3K,UAAqB;AAC3D,QAAI,EAACA,YAAAA,QAAAA,SAAU7sK,QAAQ,QAAO5K;AAC9B,UAAMyK,MAAM,IAAIkB,IAAI8rK,QAAQ;AAC5B,WAAOz3K,MAAK22B,OAAO+gJ,QAAM;AACvB,aAAO,CAACjtK,IAAIyB,IAAIwrK,EAAE;AAAA,IACpB,CAAC;AAAA,EACH;AAEO,WAASrhH,YAEdzmD,MACA0mD,SACAj5D,OACA;AACA+gE,gBAAY,KAAK3/D,MAAMmR,MAAM0mD,SAASj5D,KAAI;AAAA,EAC5C;AAMO,WAAS84D,aAEdvmD,MACAmpB,WACA;AACAq9B,iBAAa,KAAK33D,MAAMmR,MAAMmpB,SAAQ;AAAA,EACxC;;;;;;;;;;;ACxEA,MAAA6+G,gBAAAjxI,oBAAA;AACA,MAAAgxK,SAAAhxK,iBAAA;AACA,MAAAumB,SAAAvmB,aAAA;AAEA,MAAA44C,UAAA54C,aAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAAwC,MAAAwG,IAAA+yD;AAExC,MAAAx/D,SAAAiG,aAAA;AACA,MAAAixK,aAAAjxK,aAAA;AAGA,MAAAkxK,oBAAAlxK,gBAAA;AACA,MAAAmxK,qBAAAnxK,iBAAA;AACA,MAAAoxK,uBAAApxK,mBAAA;AACA,MAAAqxK,sBAAArxK,kBAAA;AACA,MAAAsxK,sBAAAtxK,kBAAA;AACA,MAAAuxK,yBAAAvxK,qBAAA;AACA,MAAAmxI,WAAAnxI,eAAA;AAAiD,MAAAwxK,mBAAArgC;AACjD,MAAAsgC,mBAAAzxK,eAAA;AACA,MAAA0xK,wBAAA1xK,oBAAA;AACA,MAAA2xK,kBAAA3xK,cAAA;AACA,MAAA4xK,oBAAA5xK,gBAAA;AACA,MAAA6xK,mCAAA7xK,6BAAA;AAAqF,QAAA;AAAA,IAjB5E+sB,UAAAA;AAAAA,EAAQ,IAAAwsC;AAsBjB,QAAMviE,SAAQ86K,OAAW,OAAO;AAEZtnK,OAAAA,UAAG,KAAK;AACJA,OAAAA,cAAG,KAAK;AACRA,OAAAA,cAAG,KAAK;AAIhC,QAAMunK,iBAAcvnK,KAAAA,UAAG,MAAMy5J,SAAS;AAAA,IACpCt5J,YAAYsrI,MAAmBhjH,QAAuB;AAAA,WAgBtDkwI,WAAoC,CAAE;AAAA,WACtC1sK,QAAa;AAAI,WACjBwI,OAAuC;AAAI,WAE9BwhK,iBAAc;AAAA,WAK3BhsB,WAA2C;AAAI,WAC/CpE,aAAoC;AAAI,WACxCqrB,YAA2C;AAAI,WAC/CxnI,UAAyB;AAAI,WAC7B38B,MAA8B;AAAI,WAClCO,OAAsB;AAAI,WAC1BmR,OAA8B;AA9B5B,WAAKgqB,SAASA;AACd,WAAKgjH,MAAMA;AACX,WAAKwB,OAAO;AAEZ,WAAK3nI,UAAU;AACf,WAAK8mD,QAAQ;AAAA,IACf;AAAA,IAAC,IAcsBgqG,UAAO;AAAA,cAAA,KADjBH,iBAAc,KAAA;AAAA,IAAA;AAAA,IAAA,IACJG,QAAOl5J,GAAA;AAAA,UAAAA,EAAA,MADjB+4J,kBAAc;AAAA,UAAA,MAAdA,kBAAc;AAAA,IAAA;AAAA,IAAA,IAEAuR,aAAU;AAAA,cAAA,KAFxBvR,iBAAc,KAAA;AAAA,IAAA;AAAA,IAAA,IAEAuR,WAAUtqK,GAAA;AAAA,UAAAA,EAAA,MAFxB+4J,kBAAc;AAAA,UAAA,MAAdA,kBAAc;AAAA,IAAA;AAAA,IAAA,IAGA1oB,aAAU;AAAA,cAAA,KAHxB0oB,iBAAc,KAAA;AAAA,IAAA;AAAA,IAAA,IAGA1oB,WAAUrwI,GAAA;AAAA,UAAAA,EAAA,MAHxB+4J,kBAAc;AAAA,UAAA,MAAdA,kBAAc;AAAA,IAAA;AAAA,IAa3B,OAAO/5J,IAAI;AAAA,MACTuvI,KAAAA;AAAAA,MACA5F;AAAAA,MACAp9G;AAAAA,MACAyoI;AAAAA,MACAxnI;AAAAA,MACA38B,KAAAA;AAAAA,IAQF,GAAmB;AACjB,UAAI,CAAC0+I,QAAO5F,YAAY;AACtB4F,QAAAA,OAAM5F,WAAW4F;AAAAA,MACnB;AAEA,UAAI,CAAChjH,QAAQ;AACX,cAAM,IAAIhlB,MAAM,8CAA8C;AAAA,MAChE;AAEA,YAAMgkK,aAEJvW,UAAUnkK,IAAG;AAEf,YAAM43I,QAAQp1I,OAAMo8I,uBAAuBF,MAAKhjH,MAAM;AAEtD,UAAIz8B,QAAO24I,MAAMzoI,IAAIurK,UAAU;AAC/B,UAAI,CAACz7K,OAAM;AACTA,QAAAA,QAAO,IAAIytK,SAAShuB,MAAKhjH,MAAM;AAC/B,YAAIg/I,WAAY9iC,OAAMrrI,IAAImuK,YAAYz7K,KAAI;AAAA,MAC5C;AAEAoxK,eAAAA,MAAM1gK,KAAK1Q,OAAM65I,YAAYqrB,WAAWxnI,SAAS38B,IAAG;AAEpD,aAAOf;AAAAA,IACT;AAAA,IAEA07K,SAA+Bt7G,QAAqB;AAClD,aAAO,KAAKf,YAAY,IAAIulB,QAAAA,QAAM,IAAI,IAAIxkB;AAAAA,IAC5C;AAAA,IAEAujF,QAAQ5iJ,MAAsB4zB,KAAe;AAC3C,UAAI,KAAKssH,QAAQ,MAAM;AACrB,aAAKA,OAAO5wI,uBAAOktD,OAAO,IAAI;AAAA,MAChC;AACA,aAAQ,KAAK0jF,KAAKlgJ,IAAG,IAAI4zB;AAAAA,IAC3B;AAAA,IAEAivH,QAAQ7iJ,MAAsB+4B,KAAgB;AAC5C,UAAI,KAAKmnH,QAAQ,MAAM;AACrB,aAAKA,OAAO5wI,uBAAOktD,OAAO,IAAI;AAAA,MAChC;AACA,UAAI5oC,MAAM,KAAKssH,KAAKlgJ,IAAG;AACvB,UAAI4zB,QAAQhhB,UAAammB,QAAQnmB,OAAWghB,OAAM,KAAKssH,KAAKlgJ,IAAG,IAAI+4B;AACnE,aAAOnF;AAAAA,IACT;AAAA,IAEAgnJ,UAAmB;AACjB,aAAO,KAAKr6K,QAAQ;AAAA,IACtB;AAAA,IAEA+oK,oBACEmD,KACA/1J,SAAyBm6D,aAClB;AACP,aAAO,KAAK6tE,IAAI6C,WAAW,KAAKhhJ,MAAMksK,KAAK/1J,MAAK;AAAA,IAClD;AAAA,IAIA4mD,SAA+BrkC,SAAc/5B,QAAa;AACxD,UAAAo+D,OAAQ,SAAC,KAAK/8D,MAAM04B,SAAS,KAAKomC,OAAOngE,QAAO,IAAI;AAAA,IACtD;AAAA,IAEAqN,IAAIvM,MAAaO,OAAW;AAC1Bi1B,MAAAA,UAAS,KAAKj1B,MAAMP,MAAKO,KAAI;AAE7B,WAAKA,KAAKP,IAAG,IAAIO;AAAAA,IACnB;AAAA,IAEAs6K,kBAA8C;AAC5C,YAAMzrJ,QAAQ,CAAE;AAChB,UAAInwB,QAAuB;AAC3B,SAAG;AACD,YAAIe,OAAMf,MAAKe;AACf,YAAIf,MAAKyuK,OAAQ1tK,CAAAA,OAAM,GAAGf,MAAK09B,OAAO,IAAI38B,IAAG;AAC7CovB,cAAMsJ,QAAQ14B,IAAG;AAAA,MACnB,SAAUf,QAAOA,MAAK65I;AACtB,aAAO1pH,MAAM7c,KAAK,GAAG;AAAA,IACvB;AAAA,IAEA9S,MAA4B4L,SAAiB;AAC3C,UAAI,CAAC5L,OAAM4T,QAAS;AACpB5T,MAAAA,OAAM,GAAG,KAAKo7K,iBAAiB,IAAI,KAAKnpK,IAAI,KAAKrG,OAAO,EAAE;AAAA,IAC5D;AAAA,IAEAkwD,WAAW;AACT,cAAOpgC,GAAAA,oBAAU,KAAK56B,IAAI,EAAE+L;AAAAA,IAC9B;AAAA,IAEA,IAAIohK,SAAS;AACX,aAAO,CAAC,CAAC,KAAK/wI;AAAAA,IAChB;AAAA,IAEA,IAAI+wI,OAAOA,QAAQ;AACjB,UAAI,CAACA,QAAQ;AACX,aAAK/wI,UAAU;AAAA,MACjB;AAAA,IAEF;AAAA,IAEA,IAAIb,YAAoB;AACtB,aAAQ,KAAKa,WAAW,KAAK38B;AAAAA,IAC/B;AAAA,EACD;AAED,QAAM86K,WAAU;AAAA,IAEd7W,YAAY0V,kBAAkB1V;AAAAA,IAC9BhgC,MAAM01C,kBAAkB11C;AAAAA,IACxBqb,mBAAmBq6B,kBAAkBr6B;AAAAA,IACrC4kB,oBAAoByV,kBAAkBzV;AAAAA,IACtCE,+BACEuV,kBAAkBvV;AAAAA,IACpBC,8BAA8BsV,kBAAkBtV;AAAAA,IAChDY,aAAa0U,kBAAkB1U;AAAAA,IAC/BC,YAAYyU,kBAAkBzU;AAAAA,IAC9BE,cAAcuU,kBAAkBvU;AAAAA,IAChCh8E,QAAQuwF,kBAAkBvwF;AAAAA,IAG1B68E,mBAAmB2T,mBAAmB3T;AAAAA,IACtCW,YAAYgT,mBAAmBhT;AAAAA,IAC/BkB,iBAAiB8R,mBAAmB9R;AAAAA,IACpCE,yBAAyB4R,mBAAmB5R;AAAAA,IAC5C5iB,eAAew0B,mBAAmBx0B;AAAAA,IAGlCwnB,qBAAqBiN,qBAAqBjN;AAAAA,IAC1CM,yBAAyB2M,qBAAqB3M;AAAAA,IAC9CpoB,aAAa+0B,qBAAqB/0B;AAAAA,IAClCqmB,iCACE0O,qBAAqB1O;AAAAA,IACvBmD,eAAeuL,qBAAqBvL;AAAAA,IAGpCO,gBAAgBiL,oBAAoBjL;AAAAA,IACpCC,UAAUgL,oBAAoBhL;AAAAA,IAG9Bl1G,eAAemgH,oBAAoBngH;AAAAA,IACnCP,aAAa0gH,oBAAoB1gH;AAAAA,IACjCi3G,2BAA2ByJ,oBAAoBzJ;AAAAA,IAC/CrC,2BAA2B8L,oBAAoB9L;AAAAA,IAC/CrxB,wBAAwBm9B,oBAAoBn9B;AAAAA,IAC5Cm0B,oBAAoBgJ,oBAAoBhJ;AAAAA,IAGxC9hJ,gBAAgB+qJ,uBAAuB/qJ;AAAAA,IACvCsvE,UAAUy7E,uBAAuBz7E;AAAAA,IACjC2sE,YAAY8O,uBAAuB9O;AAAAA,IACnCoC,wCACE0M,uBAAuB1M;AAAAA,IACzBC,sCACEyM,uBAAuBzM;AAAAA,IACzB0H,oBAAoB+E,uBAAuB/E;AAAAA,IAC3C5J,oBAAoB2O,uBAAuB3O;AAAAA,IAC3C8J,kBAAkB6E,uBAAuB7E;AAAAA,IACzCE,WAAW2E,uBAAuB3E;AAAAA,IAClCE,yBAAyByE,uBAAuBzE;AAAAA,IAChDnP,iCACE4T,uBAAuB5T;AAAAA,IACzB7/B,SAASyzC,uBAAuBzzC;AAAAA,IAChCswC,sBAAsBmD,uBAAuBnD;AAAAA,IAC7CC,gBAAgBkD,uBAAuBlD;AAAAA,IAGvCiE,cAAcd,iBAAiBc;AAAAA,IAC/B93B,OAAOg3B,iBAAiBh3B;AAAAA,IACxB3nI,MAAM2+J,iBAAiB3+J;AAAAA,IACvB0/J,SAASf,iBAAiBe;AAAAA,IAC1BrjG,MAAMsiG,iBAAiBtiG;AAAAA,IACvBujC,YAAY++D,iBAAiB/+D;AAAAA,IAC7B+xD,SAASgN,iBAAiBhN;AAAAA,IAC1BlxB,iCACEk+B,iBAAiBl+B;AAAAA,IAGnBgJ,QAAQm1B,iBAAiBn1B;AAAAA,IAGzBgmB,cAAcoP,sBAAsBpP;AAAAA,IACpCsB,aAAa8N,sBAAsB9N;AAAAA,IACnC3oB,kBAAkBy2B,sBAAsBz2B;AAAAA,IACxCL,eAAe82B,sBAAsB92B;AAAAA,IAGrC+zB,aAAagD,gBAAgBhD;AAAAA,IAC7BpJ,sBAAsBoM,gBAAgBpM;AAAAA,IACtCtC,YAAY0O,gBAAgB1O;AAAAA,IAC5B8M,gBAAgB4B,gBAAgB5B;AAAAA,IAChCC,gBAAgB2B,gBAAgB3B;AAAAA,IAChCC,oBAAoB0B,gBAAgB1B;AAAAA,IACpCI,oBAAoBsB,gBAAgBtB;AAAAA,IACpC3pK,KAAKirK,gBAAgBjrK;AAAAA,IACrBktD,0BAA0B+9G,gBAAgB/9G;AAAAA,IAC1CK,uBAAuB09G,gBAAgB19G;AAAAA,IACvCO,4BAA4Bm9G,gBAAgBn9G;AAAAA,IAC5Cg8G,2BAA2BmB,gBAAgBnB;AAAAA,IAC3CC,gCACEkB,gBAAgBlB;AAAAA,IAGlBrQ,2BAA2BwR,kBAAkBxR;AAAAA,IAC7C1wG,YAAYkiH,kBAAkBliH;AAAAA,IAC9BF,aAAaoiH,kBAAkBpiH;AAAAA,EAChC;AAED3oD,SAAOyE,OAAOymK,eAAe3jH,WAAWikH,QAAO;AAEA;AAI7CN,mBAAe3jH,UAAUokH,0BAEvBlB,oBAAoBntK,OAAO,yBAAyB,CAAC;AAEvD0C,WAAOyE,OAAOymK,eAAe3jH,WAAW;AAAA,MAEtC7oD,KAAKgsK,uBAAuBptK,OAAO,KAAK,CAAC;AAAA,MAEzC8jB,IAAIspJ,uBAAuBptK,OAAO,IAAI,CAAC;AAAA,MAEvCooK,MAAMgF,uBAAuBptK,OAAO,MAAM,CAAC;AAAA,MAE3C1C,QAAQ8vK,uBAAuBptK,OAAO,QAAQ,CAAC;AAAA,MAE/CigK,OAAOsN,sBAAsBvtK,OAAO,OAAO,CAAC;AAAA,MAC5Co8J,mBAAmBmR,sBAAsBnR;AAAAA,MACzCr5J,MAAMsqK,iBAAiBtqK;AAAAA,MAEvBurK,eAAejB,iBAAiBrtK,OAAO,eAAe,CAAC;AAAA,MACvDk/J,UAAUmO,iBAAiBnO;AAAAA,MAC3BtD,QAAQyR,iBAAiBzR;AAAAA,MACzB2S,YAAYlB,iBAAiBkB;AAAAA,MAC7BxP,aAAasO,iBAAiBtO;AAAAA,MAC9B0E,OAAO4J,iBAAiB5J;AAAAA,MACxB+K,QAAQnB,iBAAiBmB;AAAAA,IAC3B,CAAC;AAAA,EACH;AAEmC;AAGjCZ,mBAAe3jH,UAAUwkH,oDACvBrB,uBAAuB5T;AAIzBoU,mBAAe3jH,UAAUwkH,oDACvBrB,uBAAuB5T;AAEzB92J,WAAOyE,OAAOymK,eAAe3jH,WAAW;AAAA,MAEtCwwG,oBAAoBuS,mBAAmBvS;AAAAA,MAGvC4B,cAAc4Q,qBAAqB5Q;AAAAA,MAGnCwN,UAAUuD,uBAAuBvD;AAAAA,MAGjC6E,OAAOrB,iBAAiBqB;AAAAA,MACxBC,eAAetB,iBAAiBsB;AAAAA,MAChCC,YAAYvB,iBAAiBuB;AAAAA,MAC7BC,aAAaxB,iBAAiBwB;AAAAA,MAC9BC,gBAAgBzB,iBAAiByB;AAAAA,MACjC7P,mBAAmBoO,iBAAiBpO;AAAAA,MAGpCjD,kBAAkBsR,iBAAiBtR;AAAAA,MACnCH,mBAAmByR,iBAAiBzR;AAAAA,MACpCK,SAASoR,iBAAiBpR;AAAAA,MAC1BJ,cAAcwR,iBAAiBxR;AAAAA,MAC/BH,kBAAkB2R,iBAAiB3R;AAAAA,MAGnCgD,kBAAkB4O,sBAAsB5O;AAAAA,MACxCH,wBAAwB+O,sBAAsB/O;AAAAA,MAC9CY,uBAAuBmO,sBAAsBnO;AAAAA,MAC7Cf,iBAAiBkP,sBAAsBlP;AAAAA,MAGvC8N,SAASqB,gBAAgBrB;AAAAA,MACzBC,aAAaoB,gBAAgBpB;AAAAA,IAC/B,CAAC;AAAA,EACH;AAMA,aAAWtnK,QAAQzC,EAAE4qI,OAAO;AAC1B,UAAM8hC,UAAU,KAAKjqK,IAAI;AAEzB,UAAMsG,KAAK/I,EAAE0sK,OAAO;AAEpBnB,mBAAe3jH,UAAU8kH,OAAO,IAAI,SAAUj0K,MAAW;AACvD,aAAOsQ,GAAG,KAAKzX,MAAMmH,IAAI;AAAA,IAC1B;AAGD8yK,mBAAe3jH,UAAU,SAASnlD,IAAI,EAAE,IAAI,SAAUhK,MAAW;AAC/D,UAAI,CAACsQ,GAAG,KAAKzX,MAAMmH,IAAI,GAAG;AACxB,cAAM,IAAIqvB,UAAU,8BAA8BrlB,IAAI,EAAE;AAAA,MAC1D;AAAA,IACD;AAAA,EACH;AAGApC,SAAOyE,OAAOymK,eAAe3jH,WAAWyjH,gCAAgC;AAExE,aAAW5oK,QAAQpC,OAAOnK,KAAKu0I,aAAY,GAAoC;AAC7E,QAAIhoI,KAAK,CAAC,MAAM,IAAK;AACrB,QAAI,CAACzC,EAAE4qI,MAAM/iH,SAASplB,IAAI,EAAGzC,GAAE4qI,MAAMlyI,KAAK+J,IAAI;AAAA,EAChD;;;;;;;;;;;AClZA,MAAAsd,SAAAvmB,YAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAKA,MAAAmxI,WAAAnxI,eAAA;AAAoE,QAAA;AAAA,IAL3D0sB;AAAAA,EAAY,IAAA6sC;AAAAA,EAON,MAAM45G,iBAA8B;AAAA,IACjDxoK,YACEisD,QACA33D,MACAxI,QACA45I,YACA;AAAA,WAWFqQ,QAAgC;AAAI,WACpC0yB,gBAAwC;AAXtC,WAAK/iC,aAAaA;AAClB,WAAKz5E,QAAQA;AACb,WAAKngE,QAAQA;AACb,WAAKwI,OAAOA;AAAAA,IACd;AAAA,IAcAo0K,YAAYv7K,OAAuB;AACjC,YAAMmH,OAAO,KAAKA;AAClB,UAAIA,KAAKqyD,SAASryD,KAAK81D,KAAM,QAAO;AAGpC,UAAI91D,KAAKnH,MAAKmR,IAAI,EAAG,QAAO;AAG5B,YAAMvM,OAAkCgwB,aAAa50B,MAAKmR,IAAI;AAC9D,UAAI,EAACvM,QAAAA,QAAAA,KAAMuH,QAAQ,QAAO;AAG1B,iBAAW1M,QAAOmF,MAAM;AACtB,YAEE5E,MAAKP,IAAG,GACR;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA,IAEAw8D,OACEj8D,OACA4jK,WACAnkK,MACA28B,SACU;AAGV,aAAO+vI,OAAAA,QAASv9J,IAAI;AAAA,QAClB2pI,YAAY,KAAKA;AAAAA,QACjBp9G,QAAQn7B;AAAAA,QACR4jK;AAAAA,QACAnkK,KAAKA;AAAAA,QACL28B;AAAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEAovI,WAAW9sK,OAAgB88K,aAAuB;AAChD,UAAI,KAAK5yB,OAAO;AACd,YAAI4yB,aAAa;AACf,eAAK5yB,MAAMxhJ,KAAK1I,KAAI;AAAA,QACtB,OAAO;AACL,eAAK48K,cAAcl0K,KAAK1I,KAAI;AAAA,QAC9B;AAAA,MACF;AAAA,IACF;AAAA,IAEA+8K,cAAc7X,WAAqBzoI,QAAgBiB,SAAiB;AAElE,UAAIwnI,UAAUz3J,WAAW,EAAG,QAAO;AAEnC,YAAMy8I,QAAQ,CAAE;AAGhB,eAASnpJ,OAAM,GAAGA,OAAMmkK,UAAUz3J,QAAQ1M,QAAO;AAC/C,cAAMO,QAAO4jK,UAAUnkK,IAAG;AAC1B,YAAIO,SAAQ,KAAKu7K,YAAYv7K,KAAI,GAAG;AAClC4oJ,gBAAMxhJ,KAAK,KAAK60D,OAAO9gC,QAAQyoI,WAAWnkK,MAAK28B,OAAO,CAAC;AAAA,QACzD;AAAA,MACF;AAEA,aAAO,KAAKs/I,WAAW9yB,KAAK;AAAA,IAC9B;AAAA,IAEA+yB,YAAY37K,OAAcP,MAAsB;AAC9C,UACE,KAAK87K,YAEHv7K,MAAKP,IAAG,CACV,GACA;AACA,eAAO,KAAKi8K,WAAW,CAAC,KAAKz/G,OAAOj8D,OAAMA,OAAMP,IAAG,CAAC,CAAC;AAAA,MACvD,OAAO;AACL,eAAO;AAAA,MACT;AAAA,IACF;AAAA,IAEAi8K,WAAW9yB,OAAiC;AAE1C,WAAKA,QAAQA;AACb,WAAK0yB,gBAAgB,CAAE;AAEvB,YAAMM,UAAU,oBAAI5U,QAAS;AAC7B,UAAI5vF,OAAO;AACX,UAAIykG,aAAa;AAGjB,aAAOA,aAAajzB,MAAMz8I,UAAU;AAClC,cAAMzN,QAAOkqJ,MAAMizB,UAAU;AAC7BA;AACA5T,iBAAAA,OAAO74J,KAAK1Q,KAAI;AAEhB,YACEA,MAAK2sK,SAASl/J,WAAW,KACzBzN,MAAK2sK,SAAS3sK,MAAK2sK,SAASl/J,SAAS,CAAC,MAAM,MAC5C;AAIAi/J,mBAAAA,YAAYh8J,KAAK1Q,OAAM,IAAI;AAAA,QAC7B;AAGA,YAAIA,MAAKe,QAAQ,KAAM;AAGvB,cAAM;AAAA,UAAEO,MAAAA;AAAAA,QAAK,IAAItB;AACjB,YAAIk9K,QAAQnuK,IAAIzN,KAAI,EAAG;AACvB,YAAIA,MAAM47K,SAAQjhK,IAAI3a,KAAI;AAE1B,YAAItB,MAAKgkJ,SAAS;AAChBtrE,iBAAO;AACP;AAAA,QACF;AAEA,YAAI,KAAKkkG,cAAcnvK,QAAQ;AAC7BirE,iBAAO,KAAKskG,WAAW,KAAKJ,aAAa;AACzC,eAAKA,gBAAgB,CAAE;AACvB,eAAK1yB,QAAQA;AACb,cAAIxxE,KAAM;AAAA,QACZ;AAAA,MACF;AAGA,eAASlrE,IAAI,GAAGA,IAAI2vK,YAAY3vK,KAAK;AACnC0uK,iBAAAA,WAAWxrK,KAAKw5I,MAAM18I,CAAC,CAAC;AAAA,MAC1B;AAGA,WAAK08I,QAAQ;AAEb,aAAOxxE;AAAAA,IACT;AAAA,IAEAsrE,MAAM1iJ,OAAcP,MAAa;AAE/B,YAAMqvB,QAAQ9uB,MAAKP,IAAG;AACtB,UAAI,CAACqvB,MAAO,QAAO;AAEnB,UAAItZ,MAAMC,QAAQqZ,KAAK,GAAG;AACxB,eAAO,KAAK2sJ,cAAc3sJ,OAAO9uB,OAAMP,IAAG;AAAA,MAC5C,OAAO;AACL,eAAO,KAAKk8K,YAAY37K,OAAMP,IAAG;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAACiT,UAAAA,UAAA2oK;;;;;;;;;;;ACtLD,MAAAhiC,WAAAnxI,iBAAA;AAKA,MAAAu5D,KAAAv5D,aAAA;AAA4C,QAAA;AAAA,IAAnC0sB;AAAAA,EAAY,IAAA6sC;AAcd,WAASm7E,eACd58I,OACAmH,MACA23D,QACAngE,QACAD,OACAi+I,UACAm/B,WACS;AACT,UAAMl3K,OAAOgwB,aAAa50B,MAAKmR,IAAI;AACnC,QAAI,CAACvM,KAAM,QAAO;AAElB,UAAMoT,WAAU,IAAIqjK,SAAAA,QAAoBv8G,QAAO33D,MAAMxI,QAAOD,KAAI;AAChE,QAAIo9K,WAAW;AACb,UAAIn/B,YAAAA,QAAAA,SAAWj+I,MAAK68B,SAAS,EAAG,QAAO;AACvC,aAAOvjB,SAAQ0jK,WAAW,CAACh9K,KAAI,CAAC;AAAA,IAClC;AAEA,eAAWe,QAAOmF,MAAM;AACtB,UAAI+3I,YAAAA,QAAAA,SAAWl9I,IAAG,EAAG;AACrB,UAAIuY,SAAQ0qI,MAAM1iJ,OAAMP,IAAG,GAAG;AAC5B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CA,MAAAk8I,gBAAAzzI,oBAAA;AACA,MAAAumB,SAAAvmB,YAAA;AACA,MAAAoiK,WAAApiK,eAAA;AAIA,MAAAwG,IAAAxG,aAAA;AAEO,WAASkH,KAAqB3P,MAA0B;AAC7D,UAAM0H,OAAO,KAAKA;AAElB,SAAKjI,MAAMO,IAAG;AAEd,QAAI,KAAKO,MAAM;AACb,UAAI+6K,MAAM3rK,KAAK,MAAMjI,KAAK1H,IAAG,CAAC,EAAG,QAAO;AAAA,IAC1C;AAEA,QAAI,KAAKO,MAAM;AAAA,UAAA+7K;AACb,aAAOhB,MAAM3rK,KAAK,OAAI2sK,uBAAE50K,KAAK,KAAKnH,KAAKmR,IAAI,sBAAnB4qK,qBAAuBt8K,IAAG,CAAC;AAAA,IACrD;AAEA,WAAO;AAAA,EACT;AAEO,WAASs7K,MAAsBxjJ,KAAgC;AACpE,QAAI,CAACA,IAAK,QAAO;AAEjB,eAAW9f,MAAM8f,KAAK;AACpB,UAAI,CAAC9f,GAAI;AAET,YAAMzX,QAAO,KAAKA;AAClB,UAAI,CAACA,MAAM,QAAO;AAElB,YAAMo3D,MAAM3/C,GAAGrI,KAAK,KAAKzQ,OAAO,MAAM,KAAKA,KAAK;AAChD,UAAIy4D,OAAO,OAAOA,QAAQ,YAAY,OAAOA,IAAI4kH,SAAS,YAAY;AACpE,cAAM,IAAI7lK,MACR,8MAIF;AAAA,MACF;AACA,UAAIihD,KAAK;AACP,cAAM,IAAIjhD,MAAM,+CAA+CsB,EAAE,EAAE;AAAA,MACrE;AAGA,UAAI,KAAKzX,SAASA,MAAM,QAAO;AAG/B,UAAI,KAAK2oK,iBAAiB,EAAG,QAAO;AAAA,IACtC;AAEA,WAAO;AAAA,EACT;AAEO,WAAS6R,eAAsC;AAAA,QAAAyB;AAEpD,UAAMC,YAAQD,sBAAG,KAAK90K,KAAK+0K,aAAQ,OAAAD,sBAAI,KAAK90K,KAAKg1K;AACjD,WAAOD,YAAAA,OAAAA,SAAAA,SAAU3lJ,SAAS,KAAKv2B,KAAKmR,IAAI;AAAA,EAC1C;AAE+C;AAE7CuB,cAAAA,gBAAwB8nK;AAAAA,EAC1B;AAEA,WAAS4B,eAAe19K,OAAgBsZ,UAA2B;AACjE,QAAItZ,MAAKsZ,YAAYA,UAAS;AAC5BtZ,MAAAA,MAAKsZ,UAAUA;AACftZ,MAAAA,MAAKC,QAAQqZ,SAAQrZ;AACrBD,MAAAA,MAAKyI,OAAO6Q,SAAQ7Q;AAAAA,IACtB;AAAA,EACF;AAEO,WAASu7I,QAA+B;AAAA,QAAA25B,uBAAAtU;AAC7C,QAAI,CAAC,KAAK/nK,MAAM;AACd,aAAO;AAAA,IACT;AAEA,QAAI,KAAKw6K,gBAAgB;AACvB,aAAO;AAAA,IACT;AAEA,SAAA6B,yBAAItU,aAAI,KAAC5gK,MAAK84I,eAAVo8B,QAAAA,sBAAAjtK,KAAA24J,YAAuB,IAAI,GAAG;AAChC,aAAO;AAAA,IACT;AAEA,UAAMriE,iBAAiB,KAAK1tF;AAM5B,QAAI,KAAKioI,cAAc7wI,KAAKA,KAAK,MAAM,OAAO,GAAG;AAC/C,WAAKlQ,MAAM,SAAS;AACpB,aAAO,KAAKg7K;AAAAA,IACd;AACAkC,mBAAe,MAAM12E,cAAc;AAEnC,SAAKxmG,MAAM,mBAAmB;AAC9B,SAAKg7K,cAAat9B,GAAAA,cAAAA,cAChB,KAAK58I,MACL,KAAKmH,MACL,KAAK23D,OACL,KAAKngE,OACL,MACA,KAAKg+I,QACP;AAEAy/B,mBAAe,MAAM12E,cAAc;AAEnCt2F,SAAKA,KAAK,MAAM,MAAM;AAEtB,WAAO,KAAK8qK;AAAAA,EACd;AAEO,WAASn/J,OAAqB;AACnC,SAAKklI,aAAa;AAAA,EACpB;AAEO,WAASw6B,QAAwBh7K,MAAa;AACnD,QAAI,KAAKk9I,YAAY,MAAM;AACzB,WAAKA,WAAW,CAAE;AAAA,IACpB;AACA,SAAKA,SAASl9I,IAAG,IAAI;AAAA,EACvB;AAEO,WAAS23E,OAAqB;AAEnC,SAAKuxF,kBAAkBC,OAAAA,cAAc0T,OAAW;AAAA,EAClD;AAEO,WAAS/Q,WAAyB;AAAA,QAAAgR,aAAAC;AACvC,SAAAD,cAAI,KAAKp1K,SAALo1K,QAAAA,YAAWnU,QAAS;AAExB,QAAI1pK,QAAO,KAAK65I;AAEhB,SAEI,KAAK94I,QAAQ,SAAS,KAAK28B,YAAY,iBACvC19B,MAAKkuB,SAAQ,KAEd,KAAKntB,QAAQ,kBAAkBf,MAAKqf,qBACrC;AACArf,MAAAA,QAAOA,MAAK65I;AAAAA,IACd;AAEA,QAAItrE;AACJ,WAAOvuE,SAAQ,CAACuuE,QAAQ;AAAA,UAAAwvG;AACtB,WAAAA,aAAI/9K,MAAKyI,SAALs1K,QAAAA,WAAWrU,QAAS;AAExBn7F,eAASvuE,MAAKogE;AACdpgE,MAAAA,QAAOA,MAAK65I;AAAAA,IACd;AAEA,SAAKz5E,QAAQ,KAAKs7G,SAASntG,MAAM;AACjC,KAAAuvG,mBAAK19G,kBAAL09G,YAAYhiJ,KAAM;AAAA,EACpB;AAEO,WAASmgF,WAEd3iG,UACA;AACA,QAAI,KAAK2kI,YAAY,MAAM;AACzB,WAAKA,WAAW,CAAE;AAAA,IACpB;AAEA,SAAKgsB,iBAAiB;AAEtB,QAAI3wJ,UAAS;AACX,WAAKA,UAAUA;AACf,WAAKrZ,QAAQqZ,SAAQrZ;AAErB,WAAKwI,OAAO6Q,SAAQ7Q;AAAAA,IACtB;AAEAokK,aAASn8J,KAAK,IAAI;AAElB,WAAO;AAAA,EACT;AAQO,WAAS64J,SAAuB;AACrC,QAAI,KAAKa,QAAS;AAElBkS,kBAAc5rK,KAAK,IAAI;AACvB8rK,gBAAY9rK,KAAK,IAAI;AACrB6rK,eAAW7rK,KAAK,IAAI;AAAA,EAEtB;AAEO,WAAS4rK,gBAA8B;AAC5C,QAAI,KAAKziC,YAAY;AACnB,WAAKp9G,SAAS,KAAKo9G,WAAWv4I;AAAAA,IAChC;AAAA,EACF;AAEO,WAASi7K,aAA2B;AACzC,QAAI,CAAC,KAAKrX,UAAW;AAErB,QACE,KAAK5jK,SAEL,KAAK4jK,UAAU,KAAKnkK,GAAG,GACvB;AACA;AAAA,IACF;AAKA,QAAI+V,MAAMC,QAAQ,KAAKmuJ,SAAS,GAAG;AACjC,eAAS13J,IAAI,GAAGA,IAAI,KAAK03J,UAAUz3J,QAAQD,KAAK;AAC9C,YAAI,KAAK03J,UAAU13J,CAAC,MAAM,KAAKlM,MAAM;AACnC66K,iBAAOzrK,KAAK,MAAMlD,CAAC;AACnB;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,iBAAWzM,QAAOsP,OAAOnK,KAAK,KAAKg/J,SAAS,GAAG;AAE7C,YAAI,KAAKA,UAAUnkK,IAAG,MAAM,KAAKO,MAAM;AACrC66K,iBAAOzrK,KAAK,MAAM3P,IAAG;AACrB;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,SAAKA,MAAM;AAAA,EACb;AAEO,WAASy7K,cAA4B;AAC1C,QAAI,CAAC,KAAK//I,UAAU,CAAC,KAAKgyI,OAAQ;AAElC,UAAMuP,eAEJ,KAAKvhJ,OAAO,KAAKiB,OAAO;AAC1B,QAAI,KAAKwnI,cAAc8Y,aAAc;AAGrC,SAAK9Y,YAAY8Y,gBAAgB;AAAA,EACnC;AAEO,WAASvB,iBAA+B;AAC7C,QACE,KAAK17K,OAAO,QACZ,CAAC,KAAKmkK,aAEN,KAAKA,UAAU,KAAKnkK,GAAG,MAAM,KAAKO,MAClC;AACAmoK,eAAAA,aAAa/4J,KAAK,IAAI;AAAA,IACxB;AAAA,EACF;AAEO,WAASwrK,aAA2B;AACzC,SAAKvP,SAASnvG,IAAK;AACnB,QAAI,KAAKmvG,SAASl/J,SAAS,GAAG;AAC5B,WAAKwuG,WAAW,KAAK0wD,SAAS,KAAKA,SAASl/J,SAAS,CAAC,CAAC;AAAA,IACzD,OAAO;AACL,WAAKwuG,WAAWtoG,MAAS;AAAA,IAC3B;AAAA,EACF;AAEO,WAAS+4J,YAA4BpzJ,UAA2B;AACrE,SAAKqzJ,SAASjkK,KAAK4Q,QAAO;AAC1B,SAAK2iG,WAAW3iG,QAAO;AAAA,EACzB;AAEO,WAAS83J,MAEdv3B,YACAqrB,WACAxnI,SACA38B,MACA;AACA,SAAK28B,UAAUA;AACf,SAAKwnI,YAAYA;AAEjB,SAAKrrB,aAAaA,cAAc,KAAKA;AACrCsiC,WAAOzrK,KAAK,MAAM3P,IAAG;AAAA,EACvB;AAEO,WAASo7K,OAAuBp7K,MAAsB;AAAA,QAAA+0K;AAC3D,SAAK/0K,MAAMA;AACX,SAAKO,OAEH,KAAK4jK,UAAU,KAAKnkK,GAAG;AACzB,SAAK0R,QAAIqjK,aAAG,KAAKx0K,SAAI,OAAA,SAATw0K,WAAWrjK;AAAAA,EACzB;AAEO,WAASu7J,QAAwBiQ,cAAc,MAAM;AAC1D,QAAIA,YAAY7T,QAAS;AAWzB,UAAMuC,WAAW,KAAKA;AAEtB,eAAWrzJ,YAAWqzJ,UAAU;AAC9BrzJ,MAAAA,SAAQwzJ,WAAWmR,WAAW;AAAA,IAChC;AAAA,EACF;AAEO,WAASnhC,kCAEd;AACA,UAAM;AAAA,MAAExjI,SAAAA;AAAAA,MAAShY,MAAAA;AAAAA,IAAK,IAAI;AAC1B,QAAI,CAAC0O,EAAE4e,UAAUttB,KAAI,KAAKA,MAAKy7B,UAAU;AACvCzjB,MAAAA,SAAQwzJ,WAAW,KAAK58J,IAAI,KAAK,CAAC;AAAA,IACpC;AACA,QAAI5O,MAAKs7B,YAAY;AACnB,iBAAWqc,aAAa,KAAK/oC,IAAI,YAAY,GAAG;AAC9CoJ,QAAAA,SAAQwzJ,WAAW7zH,SAAS;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEO,WAAS2zH,oBAAkC;AAChD,QAAI5sK,QAAO;AACX,QAAI2sK,WAAW,KAAKA;AACpB,WAAO,CAACA,SAASl/J,QAAQ;AACvBzN,MAAAA,QAAOA,MAAK65I;AACZ,UAAI,CAAC75I,MAAM;AACX2sK,iBAAW3sK,MAAK2sK;AAAAA,IAClB;AACA,WAAOA;AAAAA,EACT;;;;;;;;;;;;EC3Ue,MAAMuR,IAA4B;AAAA,IAC/C7H,UAAU;AAAA,IAAA;AAAA,IAEVqF,WAAW;AAAA,IAAA;AAAA,IAEXr1B,YAAY;AACV,YAAM,IAAI5uI,MAAM,+CAA+C;AAAA,IACjE;AAAA,IAEA6qI,WAAWhhJ,OAAYksK,KAAa/1J,SAAQqgB,WAAkB;AAC5D,aAAO,IAAIrgB,OAAM+1J,GAAG;AAAA,IACtB;AAAA,EACF;AAACx5J,MAAAA,UAAAkqK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBDp9K,mBAAA;AACA,QAAA86I,YAAApyI,gBAAA;AAA0CwK,YAAAA,WAAA4nI;AAC1C,QAAA74E,KAAAv5D,aAAA;AAOA,QAAAjG,SAAAiG,aAAA;AAIA,QAAAyzI,gBAAAzzI,oBAAA;AAGA,QAAAumB,SAAAvmB,YAAA;AACA,QAAA44C,UAAA54C,aAAA;AACA,QAAA20K,OAAA30K,WAAA;AAA0C,UAAA;AAAA,MAfxC0sB;AAAAA,MACAglC,kBAAAA;AAAAA,MAEAL,cAAAA;AAAAA,IAAY,IAAAkI;AA6Cd,aAAS1E,UACP5hC,QAEAh0B,OAAgB,CAAA,GAChB23D,QACAngE,QACA45I,YACAujC,WACA;AACA,UAAI,CAAC3gJ,OAAQ;AAEb,UAAI,CAACh0B,KAAKihK,WAAW,CAACtpG,QAAO;AAC3B,YAAI3jC,OAAOhqB,SAAS,aAAagqB,OAAOhqB,SAAS,QAAQ;AACvD,gBAAM,IAAIgF,MACR,kHAC6CglB,OAAOhqB,IAAI,6CAE1D;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAConI,cAAcujC,WAAW;AAC5B,cAAM,IAAI3lK,MAAM,uDAAuD;AAAA,MACzE;AAEA,UAAI,CAACye,aAAauG,OAAOhqB,IAAI,GAAG;AAC9B;AAAA,MACF;AAEAmpI,MAAAA,UAASuC,QAAQ11I,IAAe;AAEhC,UAAAy1I,cAAY,cACVzhH,QACAh0B,MACA23D,QACAngE,QACA45I,YACe,MACfujC,SACF;AAAA,IACF;AAACppK,YAAAA,UAEcqqD;AAEfA,IAAAA,UAASu9E,WAAWA;AACpBv9E,IAAAA,UAAS+/G,SAASxiC,UAASwiC;AAC3B//G,IAAAA,UAAS8/E,UAAUvC,UAASuC;AAE5B9/E,IAAAA,UAASggH,QAAQ,SAAU/8K,OAAcw5D,OAA+B;AACtED,MAAAA,cAAav5D,OAAMw5D,KAAK;AACxB;AAAA,IACD;AAEDuD,IAAAA,UAAS/8D,OAAO,SACdA,OACAmH,MACA23D,QACAngE,QACAD,OACAi+I,UACA;AACA,UAAAC,cAAY,cAAC58I,OAAMmH,MAAM23D,QAAOngE,QAAOD,OAAMi+I,QAAQ;AAAA,IAEtD;AAED5/E,IAAAA,UAASigH,YAAY,SAAUh9K,OAAcmH,MAAgC;AAC3EyyD,MAAAA,kBAAiB55D,OAAMmH,IAAI;AAAA,IAC5B;AAED41D,IAAAA,UAASnD,mBAAmB,SAC1BQ,MACAjzD,MACA;AACAoyD,MAAAA,cAAaa,MAAM2C,UAASigH,WAAW71K,IAAI;AAC3C,aAAOizD;AAAAA,IACR;AAMD,aAAS6iH,kBAAkBv+K,OAAgBC,QAA+B;AACxE,UAAID,MAAKsB,KAAKmR,SAASxS,OAAMwS,MAAM;AACjCxS,QAAAA,OAAM8O,MAAM;AACZ/O,QAAAA,MAAK04E,KAAM;AAAA,MACb;AAAA,IACF;AAEAra,IAAAA,UAAS8wG,UAAU,SACjBzzG,MACAjpD,MACA+rK,eACS;AAET,UAAIA,iBAAa,QAAbA,cAAe3mJ,SAAS6jC,KAAKjpD,IAAI,EAAG,QAAO;AAG/C,UAAIipD,KAAKjpD,SAASA,KAAM,QAAO;AAE/B,YAAMxS,SAAgC;AAAA,QACpC8O,KAAK;AAAA,QACL0D;AAAAA,MACD;AAED4rD,MAAAA,UACE3C,MACA;AAAA,QACEguG,SAAS;AAAA,QACT8T,UAAUgB;AAAAA,QACV1jH,OAAOyjH;AAAAA,MACT,GACA,MACAt+K,MACF;AAEA,aAAOA,OAAM8O;AAAAA,IACd;AAEDsvD,IAAAA,UAAS96D,QAAQA;AAAAA;;;;;;;;;ACzKjB,cAAU5B,QAAiB,UAAA;AAE3B,QAAInB;AAEJ,QAAI,OAAO,YAAY,YACnB,QAAQ,OACR,QAAQ,IAAI,cACZ,cAAc,KAAK,QAAQ,IAAI,UAAU,GAAG;AAC9C,MAAAA,SAAQ,WAAY;AAClB,YAAI,OAAO,MAAM,UAAU,MAAM,KAAK,WAAW,CAAC;AAClD,aAAK,QAAQ,QAAQ;AACrB,gBAAQ,IAAI,MAAM,SAAS,IAAI;AAAA,MACnC;AAAA,IACA,OAAO;AACL,MAAAA,SAAQ,WAAY;AAAA,MAAA;AAAA,IACtB;AAIA,YAA8B,sBAAA;AAE9B,QAAI,aAAa;AACjB,QAAI,mBAAmB,OAAO;AAAA,IACD;AAG7B,QAAI,4BAA4B;AAEhC,QAAI,wBAAwB,aAAa;AAGzC,QAAI,KAAK,QAAa,KAAA,CAAA;AACtB,QAAI,SAAS,QAAiB,SAAA,CAAA;AAC9B,QAAI,MAAM,QAAc,MAAA,CAAA;AACxB,QAAI,IAAI,QAAiB,SAAA,CAAA;AACzB,QAAI,IAAI;AAER,aAAS,IAAK,GAAG;AACf,QAAE,CAAC,IAAI;AAAA,IACT;AAEA,QAAI,mBAAmB;AAQvB,QAAI,wBAAwB;AAAA,MAC1B,CAAC,OAAO,CAAC;AAAA,MACT,CAAC,OAAO,UAAU;AAAA,MAClB,CAAC,kBAAkB,qBAAqB;AAAA,IAC1C;AAEA,aAAS,WAAYW,QAAO;AAC1B,eAASqM,KAAI,GAAGA,KAAI,sBAAsB,QAAQA,MAAK;AACrD,YAAInF,SAAQ,sBAAsBmF,EAAC,EAAE,CAAC;AACtC,YAAI,MAAM,sBAAsBA,EAAC,EAAE,CAAC;AACpC,QAAArM,SAAQA,OACL,MAAMkH,SAAQ,GAAG,EAAE,KAAKA,SAAQ,QAAQ,MAAM,GAAG,EACjD,MAAMA,SAAQ,GAAG,EAAE,KAAKA,SAAQ,QAAQ,MAAM,GAAG;AAAA,MACxD;AACE,aAAOlH;AAAA,IACT;AAQA,QAAI,mBAAmB;AACvB,QAAI,EAAE,iBAAiB,IAAI;AAC3B,QAAI,wBAAwB;AAC5B,QAAI,EAAE,sBAAsB,IAAI;AAMhC,QAAI,sBAAsB;AAC1B,QAAI,EAAE,oBAAoB,IAAI,kBAAkB,mBAAmB;AAKnE,QAAI,aAAa;AACjB,QAAI,EAAE,WAAW,IAAI,MAAM,IAAI,EAAE,iBAAiB,IAAI,UAC7B,IAAI,EAAE,iBAAiB,IAAI,UAC3B,IAAI,EAAE,iBAAiB,IAAI;AAEpD,QAAI,kBAAkB;AACtB,QAAI,EAAE,gBAAgB,IAAI,MAAM,IAAI,EAAE,sBAAsB,IAAI,UAClC,IAAI,EAAE,sBAAsB,IAAI,UAChC,IAAI,EAAE,sBAAsB,IAAI;AAK9D,QAAI,sBAAsB;AAC1B,QAAI,EAAE,oBAAoB,IAAI,QAAQ,IAAI,EAAE,iBAAiB,IACjC,MAAM,IAAI,EAAE,oBAAoB,IAAI;AAEhE,QAAI,2BAA2B;AAC/B,QAAI,EAAE,yBAAyB,IAAI,QAAQ,IAAI,EAAE,sBAAsB,IACtC,MAAM,IAAI,EAAE,oBAAoB,IAAI;AAMrE,QAAI,YAAY;AAChB,QAAI,EAAE,UAAU,IAAI,UAAU,IAAI,EAAE,oBAAoB,IACtC,WAAW,IAAI,EAAE,oBAAoB,IAAI;AAE3D,QAAI,iBAAiB;AACrB,QAAI,EAAE,eAAe,IAAI,WAAW,IAAI,EAAE,yBAAyB,IAC5C,WAAW,IAAI,EAAE,yBAAyB,IAAI;AAKrE,QAAI,iBAAiB;AACrB,QAAI,EAAE,eAAe,IAAI,mBAAmB;AAM5C,QAAI,OAAO;AACX,QAAI,EAAE,KAAK,IAAI,YAAY,IAAI,EAAE,eAAe,IACnC,WAAW,IAAI,EAAE,eAAe,IAAI;AAWjD,QAAI,MAAM;AACV,QAAI,WAAW;AACf,QAAI,EAAE,SAAS,IAAI,OAAO,IAAI,EAAE,WAAW,IACzB,IAAI,EAAE,UAAU,IAAI,MACpB,IAAI,EAAE,KAAK,IAAI;AAEjC,QAAI,EAAE,IAAI,IAAI,MAAM,IAAI,EAAE,SAAS,IAAI;AAKvC,QAAI,YAAY;AAChB,QAAI,EAAE,UAAU,IAAI,aAAa,IAAI,EAAE,gBAAgB,IACrC,IAAI,EAAE,eAAe,IAAI,MACzB,IAAI,EAAE,KAAK,IAAI;AAEjC,QAAI,OAAO;AACX,QAAI,EAAE,KAAK,IAAI,MAAM,IAAI,EAAE,UAAU,IAAI;AAEzC,QAAI,MAAM;AACV,QAAI,EAAE,IAAI,IAAI;AAKd,QAAI,uBAAuB;AAC3B,QAAI,EAAE,qBAAqB,IAAI,IAAI,EAAE,sBAAsB,IAAI;AAC/D,QAAI,kBAAkB;AACtB,QAAI,EAAE,gBAAgB,IAAI,IAAI,EAAE,iBAAiB,IAAI;AAErD,QAAI,aAAa;AACjB,QAAI,EAAE,WAAW,IAAI,cAAc,IAAI,EAAE,gBAAgB,IAAI,aAC9B,IAAI,EAAE,gBAAgB,IAAI,aAC1B,IAAI,EAAE,gBAAgB,IAAI,SAC9B,IAAI,EAAE,UAAU,IAAI,OAC5B,IAAI,EAAE,KAAK,IAAI;AAGlC,QAAI,kBAAkB;AACtB,QAAI,EAAE,gBAAgB,IAAI,cAAc,IAAI,EAAE,qBAAqB,IAAI,aACnC,IAAI,EAAE,qBAAqB,IAAI,aAC/B,IAAI,EAAE,qBAAqB,IAAI,SACnC,IAAI,EAAE,eAAe,IAAI,OACjC,IAAI,EAAE,KAAK,IAAI;AAGvC,QAAI,QAAQ;AACZ,QAAI,EAAE,MAAM,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,SAAS,IAAI,EAAE,WAAW,IAAI;AAClE,QAAI,aAAa;AACjB,QAAI,EAAE,WAAW,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,SAAS,IAAI,EAAE,gBAAgB,IAAI;AAI5E,QAAI,QAAQ;AACZ,QAAI,EAAE,MAAM,IAAI,sBACU,4BAA4B,oBACtB,4BAA4B,sBAC5B,4BAA4B;AAE5D,QAAI,WAAW;AACf,OAAG,EAAE,SAAS,IAAI,IAAI,OAAO,IAAI,EAAE,MAAM,GAAG,GAAG;AAC/C,WAAO,EAAE,SAAS,IAAI,IAAI,OAAO,WAAW,IAAI,EAAE,MAAM,CAAC,GAAG,GAAG;AAI/D,QAAI,WAAW;AACf,QAAI,EAAE,SAAS,IAAI;AAEnB,QAAI,WAAW;AACf,QAAI,EAAE,SAAS,IAAI,WAAW,IAAI,EAAE,SAAS,IAAI;AACjD,OAAG,EAAE,SAAS,IAAI,IAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG;AAClD,WAAO,EAAE,SAAS,IAAI,IAAI,OAAO,WAAW,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG;AAClE,QAAI,mBAAmB;AAEvB,QAAI,OAAO;AACX,QAAI,EAAE,KAAK,IAAI,MAAM,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,WAAW,IAAI;AAC7D,QAAI,YAAY;AAChB,QAAI,EAAE,UAAU,IAAI,MAAM,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,gBAAgB,IAAI;AAIvE,QAAI,WAAW;AACf,QAAI,EAAE,SAAS,IAAI;AAEnB,QAAI,WAAW;AACf,QAAI,EAAE,SAAS,IAAI,WAAW,IAAI,EAAE,SAAS,IAAI;AACjD,OAAG,EAAE,SAAS,IAAI,IAAI,OAAO,IAAI,EAAE,SAAS,GAAG,GAAG;AAClD,WAAO,EAAE,SAAS,IAAI,IAAI,OAAO,WAAW,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG;AAClE,QAAI,mBAAmB;AAEvB,QAAI,OAAO;AACX,QAAI,EAAE,KAAK,IAAI,MAAM,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,WAAW,IAAI;AAC7D,QAAI,YAAY;AAChB,QAAI,EAAE,UAAU,IAAI,MAAM,IAAI,EAAE,SAAS,IAAI,IAAI,EAAE,gBAAgB,IAAI;AAGvE,QAAI,iBAAiB;AACrB,QAAI,EAAE,eAAe,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,UAAU,IAAI,EAAE,UAAU,IAAI;AAC3E,QAAI,YAAY;AAChB,QAAI,EAAE,UAAU,IAAI,MAAM,IAAI,EAAE,IAAI,IAAI,UAAU,IAAI,EAAE,SAAS,IAAI;AAIrE,QAAI,gBAAgB;AACpB,QAAI,EAAE,cAAc,IAAI,WAAW,IAAI,EAAE,IAAI,IACvB,UAAU,IAAI,EAAE,UAAU,IAAI,MAAM,IAAI,EAAE,WAAW,IAAI;AAG/E,OAAG,EAAE,cAAc,IAAI,IAAI,OAAO,IAAI,EAAE,cAAc,GAAG,GAAG;AAC5D,WAAO,EAAE,cAAc,IAAI,IAAI,OAAO,WAAW,IAAI,EAAE,cAAc,CAAC,GAAG,GAAG;AAC5E,QAAI,wBAAwB;AAM5B,QAAI,aAAa;AACjB,QAAI,EAAE,WAAW,IAAI,WAAW,IAAI,EAAE,WAAW,IAAI,gBAE5B,IAAI,EAAE,WAAW,IAAI;AAG9C,QAAI,kBAAkB;AACtB,QAAI,EAAE,gBAAgB,IAAI,WAAW,IAAI,EAAE,gBAAgB,IAAI,gBAEjC,IAAI,EAAE,gBAAgB,IAAI;AAIxD,QAAI,MAAM;AACV,QAAI,EAAE,IAAI,IAAI;AAId,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,MAAAX,OAAM,GAAG,IAAI,CAAC,CAAC;AACf,UAAI,CAAC,GAAG,CAAC,GAAG;AACV,WAAG,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,CAAC;AAQzB,eAAO,CAAC,IAAI,IAAI,OAAO,WAAW,IAAI,CAAC,CAAC,CAAC;AAAA,MAC7C;AAAA,IACA;AAEA,YAAgB,QAAAgI;AAChB,aAASA,OAAOqR,UAASpZ,UAAS;AAChC,UAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,QAAAA,WAAU;AAAA,UACR,OAAO,CAAC,CAACA;AAAA,UACT,mBAAmB;AAAA,QACzB;AAAA,MACA;AAEE,UAAIoZ,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACX;AAEE,UAAI,OAAOA,aAAY,UAAU;AAC/B,eAAO;AAAA,MACX;AAEE,UAAIA,SAAQ,SAAS,YAAY;AAC/B,eAAO;AAAA,MACX;AAEE,UAAI,IAAIpZ,SAAQ,QAAQ,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,IAAI;AACvD,UAAI,CAAC,EAAE,KAAKoZ,QAAO,GAAG;AACpB,eAAO;AAAA,MACX;AAEE,UAAI;AACF,eAAO,IAAI,OAAOA,UAASpZ,QAAO;AAAA,MACnC,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AAAA,IACA;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAOoZ,UAASpZ,UAAS;AAChC,UAAI,IAAI+H,OAAMqR,UAASpZ,QAAO;AAC9B,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAOoZ,UAASpZ,UAAS;AAChC,UAAI,IAAI+H,OAAMqR,SAAQ,KAAM,EAAC,QAAQ,UAAU,EAAE,GAAGpZ,QAAO;AAC3D,aAAO,IAAI,EAAE,UAAU;AAAA,IACzB;AAEA,YAAiB,SAAA;AAEjB,aAAS,OAAQoZ,UAASpZ,UAAS;AACjC,UAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,QAAAA,WAAU;AAAA,UACR,OAAO,CAAC,CAACA;AAAA,UACT,mBAAmB;AAAA,QACzB;AAAA,MACA;AACE,UAAIoZ,oBAAmB,QAAQ;AAC7B,YAAIA,SAAQ,UAAUpZ,SAAQ,OAAO;AACnC,iBAAOoZ;AAAA,QACb,OAAW;AACL,UAAAA,WAAUA,SAAQ;AAAA,QACxB;AAAA,MACA,WAAa,OAAOA,aAAY,UAAU;AACtC,cAAM,IAAI,UAAU,sBAAsBA,QAAO;AAAA,MACrD;AAEE,UAAIA,SAAQ,SAAS,YAAY;AAC/B,cAAM,IAAI,UAAU,4BAA4B,aAAa,aAAa;AAAA,MAC9E;AAEE,UAAI,EAAE,gBAAgB,SAAS;AAC7B,eAAO,IAAI,OAAOA,UAASpZ,QAAO;AAAA,MACtC;AAEE,MAAAD,OAAM,UAAUqZ,UAASpZ,QAAO;AAChC,WAAK,UAAUA;AACf,WAAK,QAAQ,CAAC,CAACA,SAAQ;AAEvB,UAAI,IAAIoZ,SAAQ,KAAI,EAAG,MAAMpZ,SAAQ,QAAQ,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,IAAI,CAAC;AAE7E,UAAI,CAAC,GAAG;AACN,cAAM,IAAI,UAAU,sBAAsBoZ,QAAO;AAAA,MACrD;AAEE,WAAK,MAAMA;AAGX,WAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,WAAK,QAAQ,CAAC,EAAE,CAAC;AACjB,WAAK,QAAQ,CAAC,EAAE,CAAC;AAEjB,UAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,cAAM,IAAI,UAAU,uBAAuB;AAAA,MAC/C;AAEE,UAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,cAAM,IAAI,UAAU,uBAAuB;AAAA,MAC/C;AAEE,UAAI,KAAK,QAAQ,oBAAoB,KAAK,QAAQ,GAAG;AACnD,cAAM,IAAI,UAAU,uBAAuB;AAAA,MAC/C;AAGE,UAAI,CAAC,EAAE,CAAC,GAAG;AACT,aAAK,aAAa,CAAA;AAAA,MACtB,OAAS;AACL,aAAK,aAAa,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,IAAI,SAAU,IAAI;AAClD,cAAI,WAAW,KAAK,EAAE,GAAG;AACvB,gBAAI,MAAM,CAAC;AACX,gBAAI,OAAO,KAAK,MAAM,kBAAkB;AACtC,qBAAO;AAAA,YACjB;AAAA,UACA;AACM,iBAAO;AAAA,QACR,CAAA;AAAA,MACL;AAEE,WAAK,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;AACtC,WAAK,OAAM;AAAA,IACb;AAEA,WAAO,UAAU,SAAS,WAAY;AACpC,WAAK,UAAU,KAAK,QAAQ,MAAM,KAAK,QAAQ,MAAM,KAAK;AAC1D,UAAI,KAAK,WAAW,QAAQ;AAC1B,aAAK,WAAW,MAAM,KAAK,WAAW,KAAK,GAAG;AAAA,MAClD;AACE,aAAO,KAAK;AAAA,IACd;AAEA,WAAO,UAAU,WAAW,WAAY;AACtC,aAAO,KAAK;AAAA,IACd;AAEA,WAAO,UAAU,UAAU,SAAU,OAAO;AAC1C,MAAArZ,OAAM,kBAAkB,KAAK,SAAS,KAAK,SAAS,KAAK;AACzD,UAAI,EAAE,iBAAiB,SAAS;AAC9B,gBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,MAC1C;AAEE,aAAO,KAAK,YAAY,KAAK,KAAK,KAAK,WAAW,KAAK;AAAA,IACzD;AAEA,WAAO,UAAU,cAAc,SAAU,OAAO;AAC9C,UAAI,EAAE,iBAAiB,SAAS;AAC9B,gBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,MAC1C;AAEE,aAAO,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK,KAC1C,mBAAmB,KAAK,OAAO,MAAM,KAAK;AAAA,IACnD;AAEA,WAAO,UAAU,aAAa,SAAU,OAAO;AAC7C,UAAI,EAAE,iBAAiB,SAAS;AAC9B,gBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,MAC1C;AAGE,UAAI,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AACtD,eAAO;AAAA,MACX,WAAa,CAAC,KAAK,WAAW,UAAU,MAAM,WAAW,QAAQ;AAC7D,eAAO;AAAA,MACX,WAAa,CAAC,KAAK,WAAW,UAAU,CAAC,MAAM,WAAW,QAAQ;AAC9D,eAAO;AAAA,MACX;AAEE,UAAIgN,KAAI;AACR,SAAG;AACD,YAAI,IAAI,KAAK,WAAWA,EAAC;AACzB,YAAI,IAAI,MAAM,WAAWA,EAAC;AAC1B,QAAAhN,OAAM,sBAAsBgN,IAAG,GAAG,CAAC;AACnC,YAAI,MAAM,UAAa,MAAM,QAAW;AACtC,iBAAO;AAAA,QACb,WAAe,MAAM,QAAW;AAC1B,iBAAO;AAAA,QACb,WAAe,MAAM,QAAW;AAC1B,iBAAO;AAAA,QACb,WAAe,MAAM,GAAG;AAClB;AAAA,QACN,OAAW;AACL,iBAAO,mBAAmB,GAAG,CAAC;AAAA,QACpC;AAAA,MACG,SAAQ,EAAEA;AAAA,IACb;AAEA,WAAO,UAAU,eAAe,SAAU,OAAO;AAC/C,UAAI,EAAE,iBAAiB,SAAS;AAC9B,gBAAQ,IAAI,OAAO,OAAO,KAAK,OAAO;AAAA,MAC1C;AAEE,UAAIA,KAAI;AACR,SAAG;AACD,YAAI,IAAI,KAAK,MAAMA,EAAC;AACpB,YAAI,IAAI,MAAM,MAAMA,EAAC;AACrB,QAAAhN,OAAM,sBAAsBgN,IAAG,GAAG,CAAC;AACnC,YAAI,MAAM,UAAa,MAAM,QAAW;AACtC,iBAAO;AAAA,QACb,WAAe,MAAM,QAAW;AAC1B,iBAAO;AAAA,QACb,WAAe,MAAM,QAAW;AAC1B,iBAAO;AAAA,QACb,WAAe,MAAM,GAAG;AAClB;AAAA,QACN,OAAW;AACL,iBAAO,mBAAmB,GAAG,CAAC;AAAA,QACpC;AAAA,MACG,SAAQ,EAAEA;AAAA,IACb;AAIA,WAAO,UAAU,MAAM,SAAU,SAASktB,aAAY;AACpD,cAAQ,SAAO;AAAA,QACb,KAAK;AACH,eAAK,WAAW,SAAS;AACzB,eAAK,QAAQ;AACb,eAAK,QAAQ;AACb,eAAK;AACL,eAAK,IAAI,OAAOA,WAAU;AAC1B;AAAA,QACF,KAAK;AACH,eAAK,WAAW,SAAS;AACzB,eAAK,QAAQ;AACb,eAAK;AACL,eAAK,IAAI,OAAOA,WAAU;AAC1B;AAAA,QACF,KAAK;AAIH,eAAK,WAAW,SAAS;AACzB,eAAK,IAAI,SAASA,WAAU;AAC5B,eAAK,IAAI,OAAOA,WAAU;AAC1B;AAAA;AAAA;AAAA,QAGF,KAAK;AACH,cAAI,KAAK,WAAW,WAAW,GAAG;AAChC,iBAAK,IAAI,SAASA,WAAU;AAAA,UACpC;AACM,eAAK,IAAI,OAAOA,WAAU;AAC1B;AAAA,QAEF,KAAK;AAKH,cAAI,KAAK,UAAU,KACf,KAAK,UAAU,KACf,KAAK,WAAW,WAAW,GAAG;AAChC,iBAAK;AAAA,UACb;AACM,eAAK,QAAQ;AACb,eAAK,QAAQ;AACb,eAAK,aAAa,CAAA;AAClB;AAAA,QACF,KAAK;AAKH,cAAI,KAAK,UAAU,KAAK,KAAK,WAAW,WAAW,GAAG;AACpD,iBAAK;AAAA,UACb;AACM,eAAK,QAAQ;AACb,eAAK,aAAa,CAAA;AAClB;AAAA,QACF,KAAK;AAKH,cAAI,KAAK,WAAW,WAAW,GAAG;AAChC,iBAAK;AAAA,UACb;AACM,eAAK,aAAa,CAAA;AAClB;AAAA;AAAA;AAAA,QAGF,KAAK;AACH,cAAI,KAAK,WAAW,WAAW,GAAG;AAChC,iBAAK,aAAa,CAAC,CAAC;AAAA,UAC5B,OAAa;AACL,gBAAIltB,KAAI,KAAK,WAAW;AACxB,mBAAO,EAAEA,MAAK,GAAG;AACf,kBAAI,OAAO,KAAK,WAAWA,EAAC,MAAM,UAAU;AAC1C,qBAAK,WAAWA,EAAC;AACjB,gBAAAA,KAAI;AAAA,cAChB;AAAA,YACA;AACQ,gBAAIA,OAAM,IAAI;AAEZ,mBAAK,WAAW,KAAK,CAAC;AAAA,YAChC;AAAA,UACA;AACM,cAAIktB,aAAY;AAGd,gBAAI,KAAK,WAAW,CAAC,MAAMA,aAAY;AACrC,kBAAI,MAAM,KAAK,WAAW,CAAC,CAAC,GAAG;AAC7B,qBAAK,aAAa,CAACA,aAAY,CAAC;AAAA,cAC5C;AAAA,YACA,OAAe;AACL,mBAAK,aAAa,CAACA,aAAY,CAAC;AAAA,YAC1C;AAAA,UACA;AACM;AAAA,QAEF;AACE,gBAAM,IAAI,MAAM,iCAAiC,OAAO;AAAA,MAC9D;AACE,WAAK,OAAM;AACX,WAAK,MAAM,KAAK;AAChB,aAAO;AAAA,IACT;AAEA,YAAc,MAAA;AACd,aAAS,IAAK7gB,UAAS,SAAS,OAAO6gB,aAAY;AACjD,UAAI,OAAQ,UAAW,UAAU;AAC/B,QAAAA,cAAa;AACb,gBAAQ;AAAA,MACZ;AAEE,UAAI;AACF,eAAO,IAAI,OAAO7gB,UAAS,KAAK,EAAE,IAAI,SAAS6gB,WAAU,EAAE;AAAA,MAC5D,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AAAA,IACA;AAEA,YAAe,OAAA;AACf,aAAS,KAAM,UAAU,UAAU;AACjC,UAAI,GAAG,UAAU,QAAQ,GAAG;AAC1B,eAAO;AAAA,MACX,OAAS;AACL,YAAI,KAAKlyB,OAAM,QAAQ;AACvB,YAAI,KAAKA,OAAM,QAAQ;AACvB,YAAI,SAAS;AACb,YAAI,GAAG,WAAW,UAAU,GAAG,WAAW,QAAQ;AAChD,mBAAS;AACT,cAAI,gBAAgB;AAAA,QAC1B;AACI,iBAASzH,QAAO,IAAI;AAClB,cAAIA,SAAQ,WAAWA,SAAQ,WAAWA,SAAQ,SAAS;AACzD,gBAAI,GAAGA,IAAG,MAAM,GAAGA,IAAG,GAAG;AACvB,qBAAO,SAASA;AAAA,YAC1B;AAAA,UACA;AAAA,QACA;AACI,eAAO;AAAA,MACX;AAAA,IACA;AAEA,YAA6B,qBAAA;AAE7B,QAAI,UAAU;AACd,aAAS,mBAAoB,GAAG,GAAG;AACjC,UAAI,OAAO,QAAQ,KAAK,CAAC;AACzB,UAAI,OAAO,QAAQ,KAAK,CAAC;AAEzB,UAAI,QAAQ,MAAM;AAChB,YAAI,CAAC;AACL,YAAI,CAAC;AAAA,MACT;AAEE,aAAO,MAAM,IAAI,IACZ,QAAQ,CAAC,OAAQ,KACjB,QAAQ,CAAC,OAAQ,IAClB,IAAI,IAAI,KACR;AAAA,IACN;AAEA,YAA8B,sBAAA;AAC9B,aAAS,oBAAqB,GAAG,GAAG;AAClC,aAAO,mBAAmB,GAAG,CAAC;AAAA,IAChC;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAO,GAAG,OAAO;AACxB,aAAO,IAAI,OAAO,GAAG,KAAK,EAAE;AAAA,IAC9B;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAO,GAAG,OAAO;AACxB,aAAO,IAAI,OAAO,GAAG,KAAK,EAAE;AAAA,IAC9B;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAO,GAAG,OAAO;AACxB,aAAO,IAAI,OAAO,GAAG,KAAK,EAAE;AAAA,IAC9B;AAEA,YAAkB,UAAA;AAClB,aAAS,QAAS,GAAG,GAAG,OAAO;AAC7B,aAAO,IAAI,OAAO,GAAG,KAAK,EAAE,QAAQ,IAAI,OAAO,GAAG,KAAK,CAAC;AAAA,IAC1D;AAEA,YAAuB,eAAA;AACvB,aAAS,aAAc,GAAG,GAAG;AAC3B,aAAO,QAAQ,GAAG,GAAG,IAAI;AAAA,IAC3B;AAEA,YAAuB,eAAA;AACvB,aAAS,aAAc,GAAG,GAAG,OAAO;AAClC,UAAI,WAAW,IAAI,OAAO,GAAG,KAAK;AAClC,UAAI,WAAW,IAAI,OAAO,GAAG,KAAK;AAClC,aAAO,SAAS,QAAQ,QAAQ,KAAK,SAAS,aAAa,QAAQ;AAAA,IACrE;AAEA,YAAmB,WAAA;AACnB,aAAS,SAAU,GAAG,GAAG,OAAO;AAC9B,aAAO,QAAQ,GAAG,GAAG,KAAK;AAAA,IAC5B;AAEA,YAAe,OAAA2lJ;AACf,aAASA,MAAM7jJ,OAAM,OAAO;AAC1B,aAAOA,MAAK,KAAK,SAAU,GAAG,GAAG;AAC/B,eAAO,QAAQ,aAAa,GAAG,GAAG,KAAK;AAAA,MACxC,CAAA;AAAA,IACH;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAOA,OAAM,OAAO;AAC3B,aAAOA,MAAK,KAAK,SAAU,GAAG,GAAG;AAC/B,eAAO,QAAQ,aAAa,GAAG,GAAG,KAAK;AAAA,MACxC,CAAA;AAAA,IACH;AAEA,YAAa,KAAA;AACb,aAAS,GAAI,GAAG,GAAG,OAAO;AACxB,aAAO,QAAQ,GAAG,GAAG,KAAK,IAAI;AAAA,IAChC;AAEA,YAAa,KAAA;AACb,aAAS,GAAI,GAAG,GAAG,OAAO;AACxB,aAAO,QAAQ,GAAG,GAAG,KAAK,IAAI;AAAA,IAChC;AAEA,YAAa,KAAA;AACb,aAAS,GAAI,GAAG,GAAG,OAAO;AACxB,aAAO,QAAQ,GAAG,GAAG,KAAK,MAAM;AAAA,IAClC;AAEA,YAAc,MAAA;AACd,aAAS,IAAK,GAAG,GAAG,OAAO;AACzB,aAAO,QAAQ,GAAG,GAAG,KAAK,MAAM;AAAA,IAClC;AAEA,YAAc,MAAA;AACd,aAAS,IAAK,GAAG,GAAG,OAAO;AACzB,aAAO,QAAQ,GAAG,GAAG,KAAK,KAAK;AAAA,IACjC;AAEA,YAAc,MAAA;AACd,aAAS,IAAK,GAAG,GAAG,OAAO;AACzB,aAAO,QAAQ,GAAG,GAAG,KAAK,KAAK;AAAA,IACjC;AAEA,YAAc,MAAA;AACd,aAAS,IAAK,GAAG,IAAI,GAAG,OAAO;AAC7B,cAAQ,IAAE;AAAA,QACR,KAAK;AACH,cAAI,OAAO,MAAM;AACf,gBAAI,EAAE;AACR,cAAI,OAAO,MAAM;AACf,gBAAI,EAAE;AACR,iBAAO,MAAM;AAAA,QAEf,KAAK;AACH,cAAI,OAAO,MAAM;AACf,gBAAI,EAAE;AACR,cAAI,OAAO,MAAM;AACf,gBAAI,EAAE;AACR,iBAAO,MAAM;AAAA,QAEf,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB,KAAK;AACH,iBAAO,GAAG,GAAG,GAAG,KAAK;AAAA,QAEvB,KAAK;AACH,iBAAO,IAAI,GAAG,GAAG,KAAK;AAAA,QAExB;AACE,gBAAM,IAAI,UAAU,uBAAuB,EAAE;AAAA,MACnD;AAAA,IACA;AAEA,YAAqB,aAAA;AACrB,aAAS,WAAY,MAAMpC,UAAS;AAClC,UAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,QAAAA,WAAU;AAAA,UACR,OAAO,CAAC,CAACA;AAAA,UACT,mBAAmB;AAAA,QACzB;AAAA,MACA;AAEE,UAAI,gBAAgB,YAAY;AAC9B,YAAI,KAAK,UAAU,CAAC,CAACA,SAAQ,OAAO;AAClC,iBAAO;AAAA,QACb,OAAW;AACL,iBAAO,KAAK;AAAA,QAClB;AAAA,MACA;AAEE,UAAI,EAAE,gBAAgB,aAAa;AACjC,eAAO,IAAI,WAAW,MAAMA,QAAO;AAAA,MACvC;AAEE,aAAO,KAAK,KAAM,EAAC,MAAM,KAAK,EAAE,KAAK,GAAG;AACxC,MAAAD,OAAM,cAAc,MAAMC,QAAO;AACjC,WAAK,UAAUA;AACf,WAAK,QAAQ,CAAC,CAACA,SAAQ;AACvB,WAAK,MAAM,IAAI;AAEf,UAAI,KAAK,WAAW,KAAK;AACvB,aAAK,QAAQ;AAAA,MACjB,OAAS;AACL,aAAK,QAAQ,KAAK,WAAW,KAAK,OAAO;AAAA,MAC7C;AAEE,MAAAD,OAAM,QAAQ,IAAI;AAAA,IACpB;AAEA,QAAI,MAAM,CAAA;AACV,eAAW,UAAU,QAAQ,SAAU,MAAM;AAC3C,UAAI,IAAI,KAAK,QAAQ,QAAQ,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,UAAU;AAC5E,UAAI,IAAI,KAAK,MAAM,CAAC;AAEpB,UAAI,CAAC,GAAG;AACN,cAAM,IAAI,UAAU,yBAAyB,IAAI;AAAA,MACrD;AAEE,WAAK,WAAW,EAAE,CAAC,MAAM,SAAY,EAAE,CAAC,IAAI;AAC5C,UAAI,KAAK,aAAa,KAAK;AACzB,aAAK,WAAW;AAAA,MACpB;AAGE,UAAI,CAAC,EAAE,CAAC,GAAG;AACT,aAAK,SAAS;AAAA,MAClB,OAAS;AACL,aAAK,SAAS,IAAI,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ,KAAK;AAAA,MACrD;AAAA,IACA;AAEA,eAAW,UAAU,WAAW,WAAY;AAC1C,aAAO,KAAK;AAAA,IACd;AAEA,eAAW,UAAU,OAAO,SAAUqZ,UAAS;AAC7C,MAAArZ,OAAM,mBAAmBqZ,UAAS,KAAK,QAAQ,KAAK;AAEpD,UAAI,KAAK,WAAW,OAAOA,aAAY,KAAK;AAC1C,eAAO;AAAA,MACX;AAEE,UAAI,OAAOA,aAAY,UAAU;AAC/B,YAAI;AACF,UAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,QAC3C,SAAQ,IAAI;AACX,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,aAAO,IAAIA,UAAS,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO;AAAA,IAC9D;AAEA,eAAW,UAAU,aAAa,SAAU,MAAMpZ,UAAS;AACzD,UAAI,EAAE,gBAAgB,aAAa;AACjC,cAAM,IAAI,UAAU,0BAA0B;AAAA,MAClD;AAEE,UAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,QAAAA,WAAU;AAAA,UACR,OAAO,CAAC,CAACA;AAAA,UACT,mBAAmB;AAAA,QACzB;AAAA,MACA;AAEE,UAAI;AAEJ,UAAI,KAAK,aAAa,IAAI;AACxB,YAAI,KAAK,UAAU,IAAI;AACrB,iBAAO;AAAA,QACb;AACI,mBAAW,IAAI,MAAM,KAAK,OAAOA,QAAO;AACxC,eAAO,UAAU,KAAK,OAAO,UAAUA,QAAO;AAAA,MAClD,WAAa,KAAK,aAAa,IAAI;AAC/B,YAAI,KAAK,UAAU,IAAI;AACrB,iBAAO;AAAA,QACb;AACI,mBAAW,IAAI,MAAM,KAAK,OAAOA,QAAO;AACxC,eAAO,UAAU,KAAK,QAAQ,UAAUA,QAAO;AAAA,MACnD;AAEE,UAAI,2BACD,KAAK,aAAa,QAAQ,KAAK,aAAa,SAC5C,KAAK,aAAa,QAAQ,KAAK,aAAa;AAC/C,UAAI,2BACD,KAAK,aAAa,QAAQ,KAAK,aAAa,SAC5C,KAAK,aAAa,QAAQ,KAAK,aAAa;AAC/C,UAAI,aAAa,KAAK,OAAO,YAAY,KAAK,OAAO;AACrD,UAAI,gCACD,KAAK,aAAa,QAAQ,KAAK,aAAa,UAC5C,KAAK,aAAa,QAAQ,KAAK,aAAa;AAC/C,UAAI,6BACF,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQA,QAAO,OACxC,KAAK,aAAa,QAAQ,KAAK,aAAa,SAC7C,KAAK,aAAa,QAAQ,KAAK,aAAa;AAC/C,UAAI,gCACF,IAAI,KAAK,QAAQ,KAAK,KAAK,QAAQA,QAAO,OACxC,KAAK,aAAa,QAAQ,KAAK,aAAa,SAC7C,KAAK,aAAa,QAAQ,KAAK,aAAa;AAE/C,aAAO,2BAA2B,2BAC/B,cAAc,gCACf,8BAA8B;AAAA,IAClC;AAEA,YAAgB,QAAA;AAChB,aAAS,MAAO,OAAOA,UAAS;AAC9B,UAAI,CAACA,YAAW,OAAOA,aAAY,UAAU;AAC3C,QAAAA,WAAU;AAAA,UACR,OAAO,CAAC,CAACA;AAAA,UACT,mBAAmB;AAAA,QACzB;AAAA,MACA;AAEE,UAAI,iBAAiB,OAAO;AAC1B,YAAI,MAAM,UAAU,CAAC,CAACA,SAAQ,SAC1B,MAAM,sBAAsB,CAAC,CAACA,SAAQ,mBAAmB;AAC3D,iBAAO;AAAA,QACb,OAAW;AACL,iBAAO,IAAI,MAAM,MAAM,KAAKA,QAAO;AAAA,QACzC;AAAA,MACA;AAEE,UAAI,iBAAiB,YAAY;AAC/B,eAAO,IAAI,MAAM,MAAM,OAAOA,QAAO;AAAA,MACzC;AAEE,UAAI,EAAE,gBAAgB,QAAQ;AAC5B,eAAO,IAAI,MAAM,OAAOA,QAAO;AAAA,MACnC;AAEE,WAAK,UAAUA;AACf,WAAK,QAAQ,CAAC,CAACA,SAAQ;AACvB,WAAK,oBAAoB,CAAC,CAACA,SAAQ;AAKnC,WAAK,MAAM,MACR,KAAI,EACJ,MAAM,KAAK,EACX,KAAK,GAAG;AAGX,WAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,IAAI,SAAUkZ,QAAO;AACnD,eAAO,KAAK,WAAWA,OAAM,KAAM,CAAA;AAAA,MACpC,GAAE,IAAI,EAAE,OAAO,SAAU1Y,IAAG;AAE3B,eAAOA,GAAE;AAAA,MACV,CAAA;AAED,UAAI,CAAC,KAAK,IAAI,QAAQ;AACpB,cAAM,IAAI,UAAU,2BAA2B,KAAK,GAAG;AAAA,MAC3D;AAEE,WAAK,OAAM;AAAA,IACb;AAEA,UAAM,UAAU,SAAS,WAAY;AACnC,WAAK,QAAQ,KAAK,IAAI,IAAI,SAAU,OAAO;AACzC,eAAO,MAAM,KAAK,GAAG,EAAE,KAAI;AAAA,MAC/B,CAAG,EAAE,KAAK,IAAI,EAAE,KAAI;AAClB,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAU,WAAW,WAAY;AACrC,aAAO,KAAK;AAAA,IACd;AAEA,UAAM,UAAU,aAAa,SAAU,OAAO;AAC5C,UAAI,QAAQ,KAAK,QAAQ;AAEzB,UAAI,KAAK,QAAQ,OAAO,EAAE,gBAAgB,IAAI,OAAO,EAAE,WAAW;AAClE,cAAQ,MAAM,QAAQ,IAAI,aAAa;AACvC,MAAAT,OAAM,kBAAkB,KAAK;AAE7B,cAAQ,MAAM,QAAQ,OAAO,EAAE,cAAc,GAAG,qBAAqB;AACrE,MAAAA,OAAM,mBAAmB,OAAO,OAAO,EAAE,cAAc,CAAC;AAGxD,cAAQ,MAAM,QAAQ,OAAO,EAAE,SAAS,GAAG,gBAAgB;AAG3D,cAAQ,MAAM,QAAQ,OAAO,EAAE,SAAS,GAAG,gBAAgB;AAG3D,cAAQ,MAAM,MAAM,KAAK,EAAE,KAAK,GAAG;AAKnC,UAAI,SAAS,QAAQ,OAAO,EAAE,eAAe,IAAI,OAAO,EAAE,UAAU;AACpE,UAAI,MAAM,MAAM,MAAM,GAAG,EAAE,IAAI,SAAU,MAAM;AAC7C,eAAO,gBAAgB,MAAM,KAAK,OAAO;AAAA,MAC1C,GAAE,IAAI,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK;AAC9B,UAAI,KAAK,QAAQ,OAAO;AAEtB,cAAM,IAAI,OAAO,SAAU,MAAM;AAC/B,iBAAO,CAAC,CAAC,KAAK,MAAM,MAAM;AAAA,QAC3B,CAAA;AAAA,MACL;AACE,YAAM,IAAI,IAAI,SAAU,MAAM;AAC5B,eAAO,IAAI,WAAW,MAAM,KAAK,OAAO;AAAA,MAC5C,GAAK,IAAI;AAEP,aAAO;AAAA,IACT;AAEA,UAAM,UAAU,aAAa,SAAU,OAAOC,UAAS;AACrD,UAAI,EAAE,iBAAiB,QAAQ;AAC7B,cAAM,IAAI,UAAU,qBAAqB;AAAA,MAC7C;AAEE,aAAO,KAAK,IAAI,KAAK,SAAU,iBAAiB;AAC9C,eACE,cAAc,iBAAiBA,QAAO,KACtC,MAAM,IAAI,KAAK,SAAU,kBAAkB;AACzC,iBACE,cAAc,kBAAkBA,QAAO,KACvC,gBAAgB,MAAM,SAAU,gBAAgB;AAC9C,mBAAO,iBAAiB,MAAM,SAAU,iBAAiB;AACvD,qBAAO,eAAe,WAAW,iBAAiBA,QAAO;AAAA,YAC1D,CAAA;AAAA,UACF,CAAA;AAAA,QAEJ,CAAA;AAAA,MAEJ,CAAA;AAAA,IACH;AAIA,aAAS,cAAe,aAAaA,UAAS;AAC5C,UAAI,SAAS;AACb,UAAI,uBAAuB,YAAY,MAAK;AAC5C,UAAI,iBAAiB,qBAAqB,IAAG;AAE7C,aAAO,UAAU,qBAAqB,QAAQ;AAC5C,iBAAS,qBAAqB,MAAM,SAAU,iBAAiB;AAC7D,iBAAO,eAAe,WAAW,iBAAiBA,QAAO;AAAA,QAC1D,CAAA;AAED,yBAAiB,qBAAqB,IAAG;AAAA,MAC7C;AAEE,aAAO;AAAA,IACT;AAGA,YAAwB,gBAAA;AACxB,aAAS,cAAe,OAAOA,UAAS;AACtC,aAAO,IAAI,MAAM,OAAOA,QAAO,EAAE,IAAI,IAAI,SAAU,MAAM;AACvD,eAAO,KAAK,IAAI,SAAUQ,IAAG;AAC3B,iBAAOA,GAAE;AAAA,QACf,CAAK,EAAE,KAAK,GAAG,EAAE,KAAM,EAAC,MAAM,GAAG;AAAA,MAC9B,CAAA;AAAA,IACH;AAKA,aAAS,gBAAiB,MAAMR,UAAS;AACvC,MAAAD,OAAM,QAAQ,MAAMC,QAAO;AAC3B,aAAO,cAAc,MAAMA,QAAO;AAClC,MAAAD,OAAM,SAAS,IAAI;AACnB,aAAO,cAAc,MAAMC,QAAO;AAClC,MAAAD,OAAM,UAAU,IAAI;AACpB,aAAO,eAAe,MAAMC,QAAO;AACnC,MAAAD,OAAM,UAAU,IAAI;AACpB,aAAO,aAAa,MAAMC,QAAO;AACjC,MAAAD,OAAM,SAAS,IAAI;AACnB,aAAO;AAAA,IACT;AAEA,aAAS,IAAK,IAAI;AAChB,aAAO,CAAC,MAAM,GAAG,YAAW,MAAO,OAAO,OAAO;AAAA,IACnD;AAQA,aAAS,cAAe,MAAMC,UAAS;AACrC,aAAO,KAAK,OAAO,MAAM,KAAK,EAAE,IAAI,SAAUg+K,OAAM;AAClD,eAAO,aAAaA,OAAMh+K,QAAO;AAAA,MACrC,CAAG,EAAE,KAAK,GAAG;AAAA,IACb;AAEA,aAAS,aAAc,MAAMA,UAAS;AACpC,UAAI,IAAIA,SAAQ,QAAQ,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,KAAK;AAC7D,aAAO,KAAK,QAAQ,GAAG,SAAU,GAAG,GAAG,GAAG,GAAG,IAAI;AAC/C,QAAAD,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACZ,WAAe,IAAI,CAAC,GAAG;AACjB,gBAAM,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK;AAAA,QAC7C,WAAe,IAAI,CAAC,GAAG;AAEjB,gBAAM,OAAO,IAAI,MAAM,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,QAC1D,WAAU,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,gBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KACrC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,QACxC,OAAW;AAEL,gBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,QACxC;AAEI,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACR,CAAA;AAAA,IACH;AAQA,aAAS,cAAe,MAAMC,UAAS;AACrC,aAAO,KAAK,OAAO,MAAM,KAAK,EAAE,IAAI,SAAUg+K,OAAM;AAClD,eAAO,aAAaA,OAAMh+K,QAAO;AAAA,MACrC,CAAG,EAAE,KAAK,GAAG;AAAA,IACb;AAEA,aAAS,aAAc,MAAMA,UAAS;AACpC,MAAAD,OAAM,SAAS,MAAMC,QAAO;AAC5B,UAAI,IAAIA,SAAQ,QAAQ,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,KAAK;AAC7D,aAAO,KAAK,QAAQ,GAAG,SAAU,GAAG,GAAG,GAAG,GAAG,IAAI;AAC/C,QAAAD,OAAM,SAAS,MAAM,GAAG,GAAG,GAAG,GAAG,EAAE;AACnC,YAAI;AAEJ,YAAI,IAAI,CAAC,GAAG;AACV,gBAAM;AAAA,QACZ,WAAe,IAAI,CAAC,GAAG;AACjB,gBAAM,OAAO,IAAI,YAAY,CAAC,IAAI,KAAK;AAAA,QAC7C,WAAe,IAAI,CAAC,GAAG;AACjB,cAAI,MAAM,KAAK;AACb,kBAAM,OAAO,IAAI,MAAM,IAAI,SAAS,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,UACjE,OAAa;AACL,kBAAM,OAAO,IAAI,MAAM,IAAI,UAAU,CAAC,IAAI,KAAK;AAAA,UACvD;AAAA,QACK,WAAU,IAAI;AACb,UAAAA,OAAM,mBAAmB,EAAE;AAC3B,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KACrC,OAAO,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI;AAAA,YACjD,OAAe;AACL,oBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KACrC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,YAC5C;AAAA,UACA,OAAa;AACL,kBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,KACrC,QAAQ,CAAC,IAAI,KAAK;AAAA,UAChC;AAAA,QACA,OAAW;AACL,UAAAA,OAAM,OAAO;AACb,cAAI,MAAM,KAAK;AACb,gBAAI,MAAM,KAAK;AACb,oBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAC3B,OAAO,IAAI,MAAM,IAAI,OAAO,CAAC,IAAI;AAAA,YACjD,OAAe;AACL,oBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAC3B,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK;AAAA,YAC5C;AAAA,UACA,OAAa;AACL,kBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAC3B,QAAQ,CAAC,IAAI,KAAK;AAAA,UAChC;AAAA,QACA;AAEI,QAAAA,OAAM,gBAAgB,GAAG;AACzB,eAAO;AAAA,MACR,CAAA;AAAA,IACH;AAEA,aAAS,eAAgB,MAAMC,UAAS;AACtC,MAAAD,OAAM,kBAAkB,MAAMC,QAAO;AACrC,aAAO,KAAK,MAAM,KAAK,EAAE,IAAI,SAAUg+K,OAAM;AAC3C,eAAO,cAAcA,OAAMh+K,QAAO;AAAA,MACtC,CAAG,EAAE,KAAK,GAAG;AAAA,IACb;AAEA,aAAS,cAAe,MAAMA,UAAS;AACrC,aAAO,KAAK,KAAI;AAChB,UAAI,IAAIA,SAAQ,QAAQ,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,MAAM;AAC/D,aAAO,KAAK,QAAQ,GAAG,SAAU,KAAK,MAAM,GAAG,GAAG,GAAG,IAAI;AACvD,QAAAD,OAAM,UAAU,MAAM,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAC5C,YAAI,KAAK,IAAI,CAAC;AACd,YAAI,KAAK,MAAM,IAAI,CAAC;AACpB,YAAI,KAAK,MAAM,IAAI,CAAC;AACpB,YAAI,OAAO;AAEX,YAAI,SAAS,OAAO,MAAM;AACxB,iBAAO;AAAA,QACb;AAII,aAAKC,SAAQ,oBAAoB,OAAO;AAExC,YAAI,IAAI;AACN,cAAI,SAAS,OAAO,SAAS,KAAK;AAEhC,kBAAM;AAAA,UACd,OAAa;AAEL,kBAAM;AAAA,UACd;AAAA,QACA,WAAe,QAAQ,MAAM;AAGvB,cAAI,IAAI;AACN,gBAAI;AAAA,UACZ;AACM,cAAI;AAEJ,cAAI,SAAS,KAAK;AAIhB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AACT,kBAAI;AACJ,kBAAI;AAAA,YACd,OAAe;AACL,kBAAI,CAAC,IAAI;AACT,kBAAI;AAAA,YACd;AAAA,UACA,WAAiB,SAAS,MAAM;AAGxB,mBAAO;AACP,gBAAI,IAAI;AACN,kBAAI,CAAC,IAAI;AAAA,YACnB,OAAe;AACL,kBAAI,CAAC,IAAI;AAAA,YACnB;AAAA,UACA;AAEM,gBAAM,OAAO,IAAI,MAAM,IAAI,MAAM,IAAI;AAAA,QACtC,WAAU,IAAI;AACb,gBAAM,OAAO,IAAI,SAAS,KAAK,QAAQ,CAAC,IAAI,KAAK,SAAS;AAAA,QAC3D,WAAU,IAAI;AACb,gBAAM,OAAO,IAAI,MAAM,IAAI,OAAO,KAChC,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;AAAA,QAC3C;AAEI,QAAAD,OAAM,iBAAiB,GAAG;AAE1B,eAAO;AAAA,MACR,CAAA;AAAA,IACH;AAIA,aAAS,aAAc,MAAMC,UAAS;AACpC,MAAAD,OAAM,gBAAgB,MAAMC,QAAO;AAEnC,aAAO,KAAK,OAAO,QAAQ,OAAO,EAAE,IAAI,GAAG,EAAE;AAAA,IAC/C;AAOA,aAAS,cAAe,IACtB,MAAM,IAAI,IAAI,IAAI,KAAK,IACvB,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;AACzB,UAAI,IAAI,EAAE,GAAG;AACX,eAAO;AAAA,MACX,WAAa,IAAI,EAAE,GAAG;AAClB,eAAO,OAAO,KAAK;AAAA,MACvB,WAAa,IAAI,EAAE,GAAG;AAClB,eAAO,OAAO,KAAK,MAAM,KAAK;AAAA,MAClC,OAAS;AACL,eAAO,OAAO;AAAA,MAClB;AAEE,UAAI,IAAI,EAAE,GAAG;AACX,aAAK;AAAA,MACT,WAAa,IAAI,EAAE,GAAG;AAClB,aAAK,OAAO,CAAC,KAAK,KAAK;AAAA,MAC3B,WAAa,IAAI,EAAE,GAAG;AAClB,aAAK,MAAM,KAAK,OAAO,CAAC,KAAK,KAAK;AAAA,MACnC,WAAU,KAAK;AACd,aAAK,OAAO,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM;AAAA,MACjD,OAAS;AACL,aAAK,OAAO;AAAA,MAChB;AAEE,cAAQ,OAAO,MAAM,IAAI,KAAI;AAAA,IAC/B;AAGA,UAAM,UAAU,OAAO,SAAUoZ,UAAS;AACxC,UAAI,CAACA,UAAS;AACZ,eAAO;AAAA,MACX;AAEE,UAAI,OAAOA,aAAY,UAAU;AAC/B,YAAI;AACF,UAAAA,WAAU,IAAI,OAAOA,UAAS,KAAK,OAAO;AAAA,QAC3C,SAAQ,IAAI;AACX,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,eAASrM,KAAI,GAAGA,KAAI,KAAK,IAAI,QAAQA,MAAK;AACxC,YAAI,QAAQ,KAAK,IAAIA,EAAC,GAAGqM,UAAS,KAAK,OAAO,GAAG;AAC/C,iBAAO;AAAA,QACb;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,QAAS,KAAKA,UAASpZ,UAAS;AACvC,eAAS+M,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AACnC,YAAI,CAAC,IAAIA,EAAC,EAAE,KAAKqM,QAAO,GAAG;AACzB,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,UAAIA,SAAQ,WAAW,UAAU,CAACpZ,SAAQ,mBAAmB;AAM3D,aAAK+M,KAAI,GAAGA,KAAI,IAAI,QAAQA,MAAK;AAC/B,UAAAhN,OAAM,IAAIgN,EAAC,EAAE,MAAM;AACnB,cAAI,IAAIA,EAAC,EAAE,WAAW,KAAK;AACzB;AAAA,UACR;AAEM,cAAI,IAAIA,EAAC,EAAE,OAAO,WAAW,SAAS,GAAG;AACvC,gBAAI,UAAU,IAAIA,EAAC,EAAE;AACrB,gBAAI,QAAQ,UAAUqM,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,SAC1B,QAAQ,UAAUA,SAAQ,OAAO;AACnC,qBAAO;AAAA,YACjB;AAAA,UACA;AAAA,QACA;AAGI,eAAO;AAAA,MACX;AAEE,aAAO;AAAA,IACT;AAEA,YAAoB,YAAA;AACpB,aAAS,UAAWA,UAAS,OAAOpZ,UAAS;AAC3C,UAAI;AACF,gBAAQ,IAAI,MAAM,OAAOA,QAAO;AAAA,MACjC,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AACE,aAAO,MAAM,KAAKoZ,QAAO;AAAA,IAC3B;AAEA,YAAwB,gBAAA;AACxB,aAAS,cAAe6kK,WAAU,OAAOj+K,UAAS;AAChD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI;AACF,YAAI,WAAW,IAAI,MAAM,OAAOA,QAAO;AAAA,MACxC,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AACE,MAAAi+K,UAAS,QAAQ,SAAU,GAAG;AAC5B,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,IAAI;AAEnC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAKj+K,QAAO;AAAA,UACvC;AAAA,QACA;AAAA,MACG,CAAA;AACD,aAAO;AAAA,IACT;AAEA,YAAwB,gBAAA;AACxB,aAAS,cAAei+K,WAAU,OAAOj+K,UAAS;AAChD,UAAI,MAAM;AACV,UAAI,QAAQ;AACZ,UAAI;AACF,YAAI,WAAW,IAAI,MAAM,OAAOA,QAAO;AAAA,MACxC,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AACE,MAAAi+K,UAAS,QAAQ,SAAU,GAAG;AAC5B,YAAI,SAAS,KAAK,CAAC,GAAG;AAEpB,cAAI,CAAC,OAAO,MAAM,QAAQ,CAAC,MAAM,GAAG;AAElC,kBAAM;AACN,oBAAQ,IAAI,OAAO,KAAKj+K,QAAO;AAAA,UACvC;AAAA,QACA;AAAA,MACG,CAAA;AACD,aAAO;AAAA,IACT;AAEA,YAAqB,aAAA;AACrB,aAAS,WAAY,OAAO,OAAO;AACjC,cAAQ,IAAI,MAAM,OAAO,KAAK;AAE9B,UAAI,SAAS,IAAI,OAAO,OAAO;AAC/B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACX;AAEE,eAAS,IAAI,OAAO,SAAS;AAC7B,UAAI,MAAM,KAAK,MAAM,GAAG;AACtB,eAAO;AAAA,MACX;AAEE,eAAS;AACT,eAAS+M,KAAI,GAAGA,KAAI,MAAM,IAAI,QAAQ,EAAEA,IAAG;AACzC,YAAI,cAAc,MAAM,IAAIA,EAAC;AAE7B,oBAAY,QAAQ,SAAU,YAAY;AAExC,cAAI,UAAU,IAAI,OAAO,WAAW,OAAO,OAAO;AAClD,kBAAQ,WAAW,UAAQ;AAAA,YACzB,KAAK;AACH,kBAAI,QAAQ,WAAW,WAAW,GAAG;AACnC,wBAAQ;AAAA,cACpB,OAAiB;AACL,wBAAQ,WAAW,KAAK,CAAC;AAAA,cACrC;AACU,sBAAQ,MAAM,QAAQ,OAAM;AAAA;AAAA,YAE9B,KAAK;AAAA,YACL,KAAK;AACH,kBAAI,CAAC,UAAU,GAAG,QAAQ,OAAO,GAAG;AAClC,yBAAS;AAAA,cACrB;AACU;AAAA,YACF,KAAK;AAAA,YACL,KAAK;AAEH;AAAA;AAAA,YAEF;AACE,oBAAM,IAAI,MAAM,2BAA2B,WAAW,QAAQ;AAAA,UACxE;AAAA,QACK,CAAA;AAAA,MACL;AAEE,UAAI,UAAU,MAAM,KAAK,MAAM,GAAG;AAChC,eAAO;AAAA,MACX;AAEE,aAAO;AAAA,IACT;AAEA,YAAqB,aAAA;AACrB,aAAS,WAAY,OAAO/M,UAAS;AACnC,UAAI;AAGF,eAAO,IAAI,MAAM,OAAOA,QAAO,EAAE,SAAS;AAAA,MAC3C,SAAQ,IAAI;AACX,eAAO;AAAA,MACX;AAAA,IACA;AAGA,YAAc,MAAA;AACd,aAAS,IAAKoZ,UAAS,OAAOpZ,UAAS;AACrC,aAAO,QAAQoZ,UAAS,OAAO,KAAKpZ,QAAO;AAAA,IAC7C;AAGA,YAAc,MAAA;AACd,aAAS,IAAKoZ,UAAS,OAAOpZ,UAAS;AACrC,aAAO,QAAQoZ,UAAS,OAAO,KAAKpZ,QAAO;AAAA,IAC7C;AAEA,YAAkB,UAAA;AAClB,aAAS,QAASoZ,UAAS,OAAO,MAAMpZ,UAAS;AAC/C,MAAAoZ,WAAU,IAAI,OAAOA,UAASpZ,QAAO;AACrC,cAAQ,IAAI,MAAM,OAAOA,QAAO;AAEhC,UAAI,MAAM,OAAO,MAAM,MAAM;AAC7B,cAAQ,MAAI;AAAA,QACV,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF,KAAK;AACH,iBAAO;AACP,kBAAQ;AACR,iBAAO;AACP,iBAAO;AACP,kBAAQ;AACR;AAAA,QACF;AACE,gBAAM,IAAI,UAAU,uCAAuC;AAAA,MACjE;AAGE,UAAI,UAAUoZ,UAAS,OAAOpZ,QAAO,GAAG;AACtC,eAAO;AAAA,MACX;AAKE,eAAS+M,KAAI,GAAGA,KAAI,MAAM,IAAI,QAAQ,EAAEA,IAAG;AACzC,YAAI,cAAc,MAAM,IAAIA,EAAC;AAE7B,YAAI,OAAO;AACX,YAAI,MAAM;AAEV,oBAAY,QAAQ,SAAU,YAAY;AACxC,cAAI,WAAW,WAAW,KAAK;AAC7B,yBAAa,IAAI,WAAW,SAAS;AAAA,UAC7C;AACM,iBAAO,QAAQ;AACf,gBAAM,OAAO;AACb,cAAI,KAAK,WAAW,QAAQ,KAAK,QAAQ/M,QAAO,GAAG;AACjD,mBAAO;AAAA,UACf,WAAiB,KAAK,WAAW,QAAQ,IAAI,QAAQA,QAAO,GAAG;AACvD,kBAAM;AAAA,UACd;AAAA,QACK,CAAA;AAID,YAAI,KAAK,aAAa,QAAQ,KAAK,aAAa,OAAO;AACrD,iBAAO;AAAA,QACb;AAII,aAAK,CAAC,IAAI,YAAY,IAAI,aAAa,SACnC,MAAMoZ,UAAS,IAAI,MAAM,GAAG;AAC9B,iBAAO;AAAA,QACb,WAAe,IAAI,aAAa,SAAS,KAAKA,UAAS,IAAI,MAAM,GAAG;AAC9D,iBAAO;AAAA,QACb;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,YAAqB,aAAA;AACrB,aAAS,WAAYA,UAASpZ,UAAS;AACrC,UAAI,SAAS+H,OAAMqR,UAASpZ,QAAO;AACnC,aAAQ,UAAU,OAAO,WAAW,SAAU,OAAO,aAAa;AAAA,IACpE;AAEA,YAAqB,aAAA;AACrB,aAAS,WAAY,IAAI,IAAIA,UAAS;AACpC,WAAK,IAAI,MAAM,IAAIA,QAAO;AAC1B,WAAK,IAAI,MAAM,IAAIA,QAAO;AAC1B,aAAO,GAAG,WAAW,EAAE;AAAA,IACzB;AAEA,YAAiB,SAAA;AACjB,aAAS,OAAQoZ,UAASpZ,UAAS;AACjC,UAAIoZ,oBAAmB,QAAQ;AAC7B,eAAOA;AAAA,MACX;AAEE,UAAI,OAAOA,aAAY,UAAU;AAC/B,QAAAA,WAAU,OAAOA,QAAO;AAAA,MAC5B;AAEE,UAAI,OAAOA,aAAY,UAAU;AAC/B,eAAO;AAAA,MACX;AAEE,MAAApZ,WAAUA,YAAW,CAAA;AAErB,UAAI,QAAQ;AACZ,UAAI,CAACA,SAAQ,KAAK;AAChB,gBAAQoZ,SAAQ,MAAM,OAAO,EAAE,MAAM,CAAC;AAAA,MAC1C,OAAS;AASL,YAAI;AACJ,gBAAQ,OAAO,OAAO,EAAE,SAAS,EAAE,KAAKA,QAAO,OAC5C,CAAC,SAAS,MAAM,QAAQ,MAAM,CAAC,EAAE,WAAWA,SAAQ,SACrD;AACA,cAAI,CAAC,SACD,KAAK,QAAQ,KAAK,CAAC,EAAE,WAAW,MAAM,QAAQ,MAAM,CAAC,EAAE,QAAQ;AACjE,oBAAQ;AAAA,UAChB;AACM,iBAAO,EAAE,SAAS,EAAE,YAAY,KAAK,QAAQ,KAAK,CAAC,EAAE,SAAS,KAAK,CAAC,EAAE;AAAA,QAC5E;AAEI,eAAO,EAAE,SAAS,EAAE,YAAY;AAAA,MACpC;AAEE,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACX;AAEE,aAAOrR,OAAM,MAAM,CAAC,IAClB,OAAO,MAAM,CAAC,KAAK,OACnB,OAAO,MAAM,CAAC,KAAK,MAAM/H,QAAO;AAAA,IACpC;AAAA;;;;;;;;;;;;;;;;AC1mDA,MAAAigF,UAAAl3E,cAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAasB,QAAA;AAAA,IAZpBy8B;AAAAA,IACAkyB,WAAAA;AAAAA,IACArxB;AAAAA,IACApM,YAAAA;AAAAA,IACA6R;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACApE;AAAAA,IACAX;AAAAA,IACA0C;AAAAA,IACAE;AAAAA,EAAkB,IAAAq4B;AAAAA,EASL,MAAM47G,cAAc;AAAA,IAQjCxqK,YAAYyqK,gBAAwBx+G,QAAcq/E,MAAmB;AAAA,WAP7Dgd,cAA6B,CAAE;AAAA,WAC/BoiB,cAAiD;AAAI,WAIrDC,kBAAe;AAGrB,WAAKC,SAAS3+G;AACd,WAAK+9G,OAAO1+B;AACZ,WAAKq/B,kBAAkBF;AAAAA,IACzB;AAAA,IAEAI,OAAO;AACL,aAAO;AAAA,QACL51C,YAAY,KAAKqzB;AAAAA,QACjBwiB,YAAY,KAAKJ;AAAAA,MAClB;AAAA,IACH;AAAA,IAEAK,SAAS;AACP,WAAKziB,YAAY/zJ,KACf6jC,kBAAkB,CAAE,GAAEzE,cAAc,KAAKg3I,eAAe,CAAC,CAC3D;AACA,aAAO;AAAA,IACT;AAAA,IAEAt1K,UAAU;AACR,WAAKizJ,YAAY/zJ,KACfo+B,oBACEb,eAAevL,YAAW,SAAS,GAAG,CACpCoN,cAAc,KAAKg3I,eAAe,CAAC,CACpC,CACH,CACF;AACA,aAAO;AAAA,IACT;AAAA,IAEA78I,UAAUl0B,OAAO,aAAa;AAC5B,YAAMoxB,QAAQ,KAAK4/I,OAAOt9B,sBAAsB1zI,IAAI;AAEpD,YAAMo7H,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC9Dy1C,cAAOimF,UAAU12H,SAAS,mBAAmB;AAC7CywC,cAAOimF,UAAUnqG,WAAWvxB,WAAW,CAAC;AACxC07H,gBAAUnqG,aAAa,CAAC2N,yBAAyBxN,KAAK,CAAC;AACvD,WAAK0/I,cAAc1mH,WAAUh5B,KAAK;AAClC,aAAO;AAAA,IACT;AAAA,IACAlvB,QAAQlC,MAAc;AACpB,YAAMwuB,KAAK,KAAKwiJ,OAAOt9B,sBAAsB1zI,IAAI;AACjD,YAAMo7H,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC9Dy1C,cAAOimF,UAAU12H,SAAS,mBAAmB;AAC7CywC,cAAOimF,UAAUnqG,WAAWvxB,WAAW,CAAC;AACxC07H,gBAAUnqG,aAAa,CAACyN,uBAAuBlQ,EAAE,CAAC;AAClD,WAAKsiJ,cAAc1mH,WAAU57B,EAAE;AAC/B,aAAO;AAAA,IACT;AAAA,IACA4iJ,MAAMpxK,MAAcq6D,YAAoB;AACtC,UAAIA,eAAe,UAAW,QAAO,KAAKn4D,QAAQlC,IAAI;AAEtD,YAAMwuB,KAAK,KAAKwiJ,OAAOt9B,sBAAsB1zI,IAAI;AACjD,YAAMo7H,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC9Dy1C,cAAOimF,UAAU12H,SAAS,mBAAmB;AAC7CywC,cAAOimF,UAAUnqG,WAAWvxB,WAAW,CAAC;AACxC07H,gBAAUnqG,aAAa,CAAC6N,gBAAgBtQ,IAAI7B,YAAW0tC,UAAU,CAAC,CAAC;AACnE,WAAKy2G,cAAc1mH,WAAU57B,EAAE;AAC/B,aAAO;AAAA,IACT;AAAA,IAEA6iJ,IAAIrxK,MAAc;AAChB,YAAMwuB,KAAK,KAAKwiJ,OAAOt9B,sBAAsB1zI,IAAI;AACjD,UAAIo7H,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC5D,UAAI07H,UAAU12H,SAAS,uBAAuB;AAC5CywC,gBAAO,KAAK27H,WAAW;AACvB11C,oBAAYriG,oBAAoB,KAAK+3I,WAAW;AAChD,aAAKpiB,YAAY/zJ,KAAKygI,SAAS;AAAA,MACjC;AACA,WAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC,IAAI+8B,oBAAoB,OAAO,CACzEE,mBAAmBnO,IAAI4sG,UAAUnuG,UAAU,CAAC,CAC7C;AACD,WAAK6jJ,cAAc1mH,WAAU57B,EAAE;AAC/B,aAAO;AAAA,IACT;AAAA,IAEA8iJ,iBAAiB;AACf,aAAO,KAAKC,SAAS,KAAKnB,KAAK93B,UAAU,uBAAuB,CAAC;AAAA,IACnE;AAAA,IACAk5B,kBAAkB;AAChB,aAAO,KAAKD,SAAS,KAAKnB,KAAK93B,UAAU,wBAAwB,CAAC;AAAA,IACpE;AAAA,IAEAi5B,SAAS1mJ,QAAsB;AAC7B,YAAMuwG,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC9D,UAAI07H,UAAU12H,SAAS,uBAAuB;AAC5C02H,kBAAUnuG,aAAaiL,eAAerN,QAAQ,CAACuwG,UAAUnuG,UAAU,CAAC;AAAA,MACtE,WAAWmuG,UAAU12H,SAAS,uBAAuB;AACnDywC,gBAAOimF,UAAUhrG,aAAa1wB,WAAW,CAAC;AAC1C07H,kBAAUhrG,aAAa,CAAC,EAAErC,OAAOmK,eAAerN,QAAQ,CACtDuwG,UAAUhrG,aAAa,CAAC,EAAErC,IAAI,CAC/B;AAAA,MACH,OAAO;AACLonB,gBAAOs8H,KAAK,kBAAkB;AAAA,MAChC;AACA,aAAO;AAAA,IACT;AAAA,IAEAzoG,KAAKhpE,MAAc;AACjB,YAAMo7H,YAAY,KAAKszB,YAAY,KAAKA,YAAYhvJ,SAAS,CAAC;AAC9D,UAAI07H,UAAU12H,SAAS,uBAAuB;AAC5C02H,kBAAUnuG,aAAayN,iBACrB0gG,UAAUnuG,YACVN,YAAW3sB,IAAI,CACjB;AAAA,MACF,WAAWo7H,UAAU12H,SAAS,uBAAuB;AACnDywC,gBAAOimF,UAAUhrG,aAAa1wB,WAAW,CAAC;AAC1C07H,kBAAUhrG,aAAa,CAAC,EAAErC,OAAO2M,iBAC/B0gG,UAAUhrG,aAAa,CAAC,EAAErC,MAC1BpB,YAAW3sB,IAAI,CACjB;AAAA,MACF,OAAO;AACLm1C,gBAAOs8H,KAAK,qBAAqBr2C,UAAU12H,IAAI;AAAA,MACjD;AACA,aAAO;AAAA,IACT;AAAA,IAEAgtK,KAAK1xK,MAAc;AACjB,WAAK8wK,cAAcp2I,iBAAiB,KAAKo2I,aAAankJ,YAAW3sB,IAAI,CAAC;AAAA,IACxE;AAAA,EACF;AAACiG,gBAAAA,UAAA2qK;;;;;;;;;;;;ACjJc,WAASe,WAAS1/K,OAA2B;AAC1D,WAAOA,MAAKsB,KAAK87B,eAAe;AAAA,EAClC;;;;;;;;;;;ACRA,MAAAsjD,UAAAl3E,cAAA;AACA,MAAAu5D,KAAAv5D,aAAA;AAUA,MAAAm2K,iBAAAn2K,qBAAA;AACA,MAAAo2K,YAAAp2K,gBAAA;AAAsC,QAAA;AAAA,IAVpCkxB,YAAAA;AAAAA,IACAmS;AAAAA,IACA7E;AAAAA,IACAwB;AAAAA,IACA9oB;AAAAA,EAAmB,IAAAqiD;AAAAA,EAsGN,MAAM88G,eAAe;AAAA,IA6BlC1rK,YACEnU,OACA4+K,gBACAn2K,MACA;AAAA,WAdFq3K,eAA8B;AAAA,QAC5BlB,gBAAgB;AAAA,QAChBmB,cAAc;AAAA,QACdC,iBAAiB;AAAA,QACjBC,kBAAkB;AAAA,QAClBC,qBAAqB;AAAA,QACrBC,iBAAiB;AAAA,QACjBC,gBAAgB;AAAA,MACjB;AAOC,YAAMC,cAAcrgL,MAAKglI,KAAKpP,OAAKA,EAAEh3G,WAAW;AAEhD,WAAK0hK,eAAeD;AACpB,WAAKE,gBAAgBF,YAAYjgH;AACjC,WAAK+9G,OAAOkC,YAAY5gC;AAExB,WAAKqgC,eAAe,KAAKU,eAAe5B,gBAAgBn2K,MAAM,IAAI;AAAA,IACpE;AAAA,IAEAg4K,WAAWC,kBAA0Bj4K,MAA8B;AACjE,aAAO,KAAKk4K,SAAS,WAAWD,kBAAkBj4K,IAAI;AAAA,IACxD;AAAA,IAEAk4K,SACEv4G,YACAs4G,kBACAj4K,MACA;AACAy6C,cAAO,OAAOklB,eAAe,QAAQ;AAErC,aAAO,KAAKw4G,gBACV,KAAKJ,eAAeE,kBAAkBj4K,IAAI,GAC1C2/D,UACF;AAAA,IACF;AAAA,IAEAy4G,aAAaH,kBAA0Bj4K,MAA8B;AACnE,aAAO,KAAKm4K,gBACV,KAAKJ,eAAeE,kBAAkBj4K,IAAI,GAC1C,IACF;AAAA,IACF;AAAA,IAEAq4K,cAAcJ,kBAA0Bj4K,MAA8B;AACpE,aAAO,KAAKm4K,gBACV,KAAKJ,eAAeE,kBAAkBj4K,IAAI,GAC1C,MACF;AAAA,IACF;AAAA,IAEA+3K,eACE5B,gBACAn2K,MACAs4K,SAAS,OACT;AACA,UAAIC;AACJ,UAAI,OAAOpC,mBAAmB,UAAU;AACtCoC,kBAAO3wK,OAAAyE,OAAQ,CAAA,GAAA,KAAKgrK,cAAY;AAAA,UAAElB;AAAAA,QAAc,GAAKn2K,IAAI;AAAA,MAC3D,OAAO;AACLy6C,gBAAO,CAACz6C,MAAM,iCAAiC;AAC/Cu4K,kBAAO3wK,OAAAyE,OAAA,CAAA,GAAQ,KAAKgrK,cAAiBlB,cAAc;AAAA,MACrD;AAEA,UAAI,CAACmC,UAAUt4K,MAAM;AACnB,YAAIA,KAAKw4K,aAAattK,OAAWqtK,SAAQC,WAAWx4K,KAAKw4K;AACzD,YAAIx4K,KAAK47I,eAAe1wI,OAAWqtK,SAAQ38B,aAAa57I,KAAK47I;AAAAA,MAC/D;AACA,aAAO28B;AAAAA,IACT;AAAA,IAEAJ,gBACEn4K,MACA2/D,YACA;AACA,YAAMm8D,YAAYn8D,eAAe;AACjC,YAAM84G,UAAU,CAAC,CAAC94G,cAAc,CAACm8D;AACjC,YAAM48C,cAAc/4G,eAAe;AAEnC,YAAM;AAAA,QACJw2G;AAAAA,QACAmB;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAC;AAAAA,QACAc;AAAAA,QACAb;AAAAA,QAKA/7B;AAAAA,MACF,IAAI57I;AAKJ,UAAIsF,OAAOkzK,YAAY74G;AAEvB,YAAMg5G,SAAQ1B,GAAAA,UAAAA,SAAS,KAAKY,YAAY;AACxC,YAAMe,kBAAkBD,SAASnB,qBAAqB;AACtD,YAAMqB,mBAAmBF,SAASnB,qBAAqB;AAEvD,UAAIG,mBAAmB,WAAW,CAACgB,OAAO;AACxC,cAAM,IAAI3pK,MAAM,wDAAwD;AAAA,MAC1E;AAEA,YAAMpV,WAAU,IAAIs8K,eAAAA,QAClBC,gBACA,KAAK2B,eACL,KAAKpC,IACP;AAEA,UAAI4B,iBAAiB,OAAO;AAC1B,YAAI,CAACsB,mBAAmB,CAACC,kBAAkB;AACzC,gBAAM,IAAI7pK,MAAM,2CAA2C;AAAA,QAC7D;AAKApV,QAAAA,SAAQ68K,OAAQ;AAChB,YAAIiC,aAAa;AACf9+K,UAAAA,SAAQ4/B,UAAUg/I,YAAYrC,cAAc;AAAA,QAC9C,WAAWr6C,aAAa28C,SAAS;AAC/B7+K,UAAAA,SAAQ88K,MAAMpxK,MAAMq6D,UAAU;AAAA,QAChC;AAAA,MACF,WAAW23G,iBAAiB,YAAY;AACtC,cAAM,IAAItoK,MAAM,2BAA2BsoK,YAAY,GAAG;AAAA,MAC5D,WAAWC,oBAAoB,SAAS;AACtC,YAAIqB,iBAAiB;AAInBtzK,iBAAOA,SAAS,YAAYA,OAAO6wK;AACnC,gBAAM2C,aAAa,GAAG3C,cAAc;AAEpCv8K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SACG4N,QAAQsxK,UAAU,EAClBnC,IAAIrxK,QAAQ6wK,cAAc,EAC1BW,gBAAiB;AAAA,UACrB,WAAUh7C,WAAW;AACpB,gBAAI27C,qBAAqB;AACvB79K,cAAAA,SACG4N,QAAQsxK,UAAU,EAClBnC,IAAIrxK,QAAQ6wK,cAAc,EAC1BS,eAAc,EACdI,KAAK,SAAS;AAAA,YACnB,OAAO;AACLp9K,cAAAA,SACG4N,QAAQsxK,UAAU,EAClBnC,IAAIrxK,IAAI,EACRsxK,eAAc,EACdtoG,KAAK3O,UAAU;AAAA,YACpB;AAAA,UACD,WAAU84G,SAAS;AAClB7+K,YAAAA,SAAQ4N,QAAQsxK,UAAU,EAAE9B,KAAKr3G,UAAU;AAAA,UAC7C;AAAA,QACD,WAAUk5G,kBAAkB;AAI3Bj/K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SAAQ4/B,UAAUl0B,QAAQ6wK,cAAc;AAAA,UAC1C,WAAWr6C,aAAa28C,SAAS;AAC/B7+K,YAAAA,SAAQ88K,MAAMpxK,MAAMq6D,UAAU;AAAA,UAChC;AAAA,QACF,OAAO;AAIL/lE,UAAAA,SAAQmH,QAAS;AACjB,cAAI23K,aAAa;AACf9+K,YAAAA,SAAQ+8K,IAAIrxK,QAAQ6wK,cAAc,EAAEW,gBAAiB;AAAA,UACtD,YAAWh7C,aAAa28C,YAAYhB,qBAAqB;AACxD,gBAAI37C,WAAW;AACbx2H,qBAAOA,SAAS,YAAYA,OAAO6wK;AACnCv8K,cAAAA,SAAQ+8K,IAAIrxK,IAAI,EAAE0xK,KAAKr3G,UAAU;AACjC/lE,cAAAA,SAAQg9K,eAAgB;AAAA,YAC1B,OAAO;AACLh9K,cAAAA,SAAQ+8K,IAAIR,cAAc,EAAEa,KAAKr3G,UAAU;AAAA,YAC7C;AAAA,UACD,WAAUm8D,WAAW;AACpBliI,YAAAA,SAAQ+8K,IAAIrxK,IAAI,EAAEsxK,eAAgB,EAACtoG,KAAK3O,UAAU;AAAA,UACnD,WAAU84G,SAAS;AAClB7+K,YAAAA,SAAQ+8K,IAAIrxK,IAAI,EAAEgpE,KAAK3O,UAAU;AAAA,UACnC;AAAA,QACF;AAAA,MACF,WAAW43G,oBAAoB,YAAY;AACzC,YAAIqB,iBAAiB;AAKnBh/K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SAAQ4N,QAAQlC,QAAQ6wK,cAAc;AAAA,UACxC,WAAWr6C,aAAa28C,SAAS;AAC/B7+K,YAAAA,SAAQ4N,QAAQ2uK,cAAc,EAAEa,KAAK1xK,IAAI;AAAA,UAC3C;AAAA,QACD,WAAUuzK,kBAAkB;AAO3Bj/K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SAAQ4/B,UAAUl0B,QAAQ6wK,cAAc;AAAA,UAC1C,WAAWr6C,aAAa28C,SAAS;AAC/B7+K,YAAAA,SAAQ88K,MAAMpxK,MAAMq6D,UAAU;AAAA,UAChC;AAAA,QACF,OAAO;AAKL/lE,UAAAA,SAAQmH,QAAS;AACjB,cAAI23K,aAAa;AACf9+K,YAAAA,SAAQ+8K,IAAIrxK,QAAQ6wK,cAAc;AAAA,UACpC,WAAWr6C,aAAa28C,SAAS;AAC/B,gBAAIhB,qBAAqB;AACvB79K,cAAAA,SAAQ+8K,IAAIR,cAAc,EAAEa,KAAK1xK,IAAI;AAAA,YACvC,OAAO;AACL1L,cAAAA,SAAQ00E,KAAK3O,UAAU,EAAEg3G,IAAIrxK,IAAI;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAAWiyK,oBAAoB,cAAc;AAC3C,YAAIz7C,aAAa27C,qBAAqB;AACpC,gBAAM,IAAIzoK,MAAM,wCAAwC;AAAA,QAC1D;AAEA,YAAI4pK,iBAAiB;AAInBh/K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SAAQ4N,QAAQlC,QAAQ6wK,cAAc;AAAA,UACvC,WAAUr6C,WAAW;AACpBliI,YAAAA,SAAQ4N,QAAQlC,IAAI;AAAA,UACrB,WAAUmzK,SAAS;AAClB7+K,YAAAA,SAAQ4N,QAAQ2uK,cAAc,EAAEa,KAAK1xK,IAAI;AAAA,UAC3C;AAAA,QACD,WAAUuzK,kBAAkB;AAQ3Bj/K,UAAAA,SAAQ68K,OAAQ;AAChB,cAAIiC,aAAa;AACf9+K,YAAAA,SAAQ4N,QAAQlC,QAAQ6wK,cAAc;AAAA,UACvC,WAAUr6C,WAAW;AACpBliI,YAAAA,SAAQ4N,QAAQlC,IAAI;AAAA,UACrB,WAAUmzK,SAAS;AAClB7+K,YAAAA,SAAQ88K,MAAMpxK,MAAMq6D,UAAU;AAAA,UAChC;AAAA,QACF,OAAO;AAKL/lE,UAAAA,SAAQmH,QAAS;AACjB,cAAI23K,aAAa;AACf9+K,YAAAA,SAAQ+8K,IAAIrxK,QAAQ6wK,cAAc;AAAA,UACnC,WAAUr6C,WAAW;AACpBliI,YAAAA,SAAQ+8K,IAAIrxK,IAAI;AAAA,UACjB,WAAUmzK,SAAS;AAClB,gBAAIhB,qBAAqB;AACvB79K,cAAAA,SAAQ+8K,IAAIR,cAAc,EAAEa,KAAK1xK,IAAI;AAAA,YACvC,OAAO;AACL1L,cAAAA,SAAQ+8K,IAAIrxK,IAAI,EAAEgpE,KAAK3O,UAAU;AAAA,YACnC;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,cAAM,IAAI3wD,MAAM,4BAA4BuoK,eAAe,IAAI;AAAA,MACjE;AAEA,YAAM;AAAA,QAAE52C,YAAAA;AAAAA,QAAY61C;AAAAA,MAAW,IAAI58K,SAAQ28K,KAAM;AAEjD,WAAKwC,kBAAkBp4C,aAAYg3C,gBAAgB/7B,UAAU;AAE7D,WACG9f,aAAa28C,YACdf,mBACAlB,WAAWxsK,SAAS,cACpB;AACA,eAAO+2B,mBAAmB,CAACxB,eAAe,CAAC,GAAGi3I,UAAU,CAAC;AAAA,MAC3D;AACA,aAAOA;AAAAA,IACT;AAAA,IAEAuC,kBACEp4C,aACAg3C,iBAAiB,UACjB/7B,aAAa,GACb;AACA,UAAI+7B,mBAAmB,SAAS;AAC9B,YAAI,KAAKqB,uBAAuBr4C,WAAU,EAAG;AAAA,MAC/C,OAAO;AACL,YAAI,KAAKs4C,wBAAwBt4C,aAAYib,UAAU,EAAG;AAAA,MAC5D;AAEA,WAAKi8B,aAAa77B,iBAAiB,QAAQrb,WAAU;AAAA,IACvD;AAAA,IAEAs4C,wBAAwBt4C,aAA2Bib,YAAoB;AACrE,UACEjb,YAAW37H,WAAW,KACtBiT,oBAAoB0oH,YAAW,CAAC,CAAC,KACjCu4C,cAAcv4C,YAAW,CAAC,CAAC,GAC3B;AACA,cAAMw4C,kBAAkB,KAAKtB,aAC1BpwK,IAAI,MAAM,EACV80H,KAAMpP,OAA0C;AAC/C,iBAAOA,EAAEl1G,oBAAmB,KAAMihK,cAAc/rD,EAAEt0H,IAAI;AAAA,QACxD,CAAC;AAEH,aACEsgL,mBAAAA,OAAAA,SAAAA,gBAAiBtgL,KAAKiB,OAAOpB,WAAUioI,YAAW,CAAC,EAAE7mI,OAAOpB,SAC5D0gL,4BAA4BD,gBAAgBtgL,MAAM8nI,YAAW,CAAC,CAAC,GAC/D;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAEAA,MAAAA,YAAWhvG,QAAQ94B,CAAAA,UAAQ;AAEzBA,QAAAA,MAAKgjJ,cAAcD;AAAAA,MACrB,CAAC;AAED,YAAMy9B,aAAa,KAAKxB,aAAapwK,IAAI,MAAM,EAAE80H,KAAKpP,OAAK;AAEzD,cAAMjhG,MAAMihG,EAAEt0H,KAAKgjJ;AACnB,eAAO9pI,OAAOiiD,SAAS9nC,GAAG,KAAKA,MAAM;AAAA,MACvC,CAAC;AAED,UAAImtJ,YAAY;AACdA,mBAAWhW,aAAa1iC,WAAU;AAClC,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT;AAAA,IAEAq4C,uBAAuBr4C,aAAoC;AACzD,YAAM24C,gBAAgB,IAAIvzK,IAAI46H,WAAU;AACxC,YAAM44C,qBAAyD,oBAAIrrH,IAAK;AAExE,iBAAWwyE,aAAaC,aAAY;AAClC,YAAI1oH,oBAAoByoH,SAAS,KAAKw4C,cAAcx4C,SAAS,GAAG;AAC9D,gBAAM5mI,UAAS4mI,UAAU5mI,OAAOpB;AAChC,cAAI,CAAC6gL,mBAAmBjzK,IAAIxM,OAAM,EAAGy/K,oBAAmB10K,IAAI/K,SAAQ,EAAE;AACtEy/K,6BAAmB9xK,IAAI3N,OAAM,EAAEmG,KAAKygI,SAAS;AAAA,QAC/C;AAAA,MACF;AAEA,UAAI84C,iBAAiB;AACrB,iBAAWC,YAAY,KAAK5B,aAAapwK,IAAI,MAAM,GAAG;AACpD,YAAIgyK,SAASxhK,oBAAqB,KAAIihK,cAAcO,SAAS5gL,IAAI,GAAG;AAClE2gL,2BAAiBC;AAEjB,gBAAM3/K,UAAS2/K,SAAS5gL,KAAKiB,OAAOpB;AACpC,gBAAMghL,aAAaH,mBAAmB9xK,IAAI3N,OAAM;AAChD,cAAI,CAAC4/K,WAAY;AAEjB,qBAAW9jJ,QAAQ8jJ,YAAY;AAC7B,gBAAI,CAACJ,cAAchzK,IAAIsvB,IAAI,EAAG;AAC9B,gBAAIwjJ,4BAA4BK,SAAS5gL,MAAM+8B,IAAI,GAAG;AACpD0jJ,4BAAc37F,OAAO/nD,IAAI;AAAA,YAC3B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI0jJ,cAAclzF,SAAS,EAAG,QAAO;AAErC,UAAIozF,eAAgBA,gBAAe7U,YAAYt2J,MAAM2/C,KAAKsrH,aAAa,CAAC;AAExE,aAAO,CAAC,CAACE;AAAAA,IACX;AAAA,EACF;AAACjuK,iBAAAA,UAAA6rK;AAED,WAAS8B,cAAcrgL,OAA2B;AAChD,WAAOA,MAAKk+B,eAAe,UAAUl+B,MAAKk+B,eAAe;AAAA,EAC3D;AAEA,WAAS4iJ,mBAAmB9gL,OAA2B;AACrD,WACGA,MAAK09B,WAAWvxB,WAAW,KAC1BnM,MAAK09B,WAAW,CAAC,EAAEvsB,SAAS,8BAC7BnR,MAAK09B,WAAWvxB,WAAW,KAC1BnM,MAAK09B,WAAW,CAAC,EAAEvsB,SAAS;AAAA,EAElC;AAEA,WAAS4vK,iBAAiB/gL,OAA2B;AACnD,WACEA,MAAK09B,WAAWvxB,SAAS,KACzBnM,MAAK09B,WAAW,CAAC,EAAEvsB,SAAS;AAAA,EAEhC;AAEA,WAASovK,4BACPtzG,QACAhsE,SACS;AACT,QAAI,CAACgsE,OAAOvvC,WAAWvxB,QAAQ;AAC7B8gE,aAAOvvC,aAAaz8B,QAAOy8B;AAC3B,aAAO;AAAA,IACT;AACA,QAAI,CAACz8B,QAAOy8B,WAAWvxB,OAAQ,QAAO;AAEtC,QAAI20K,mBAAmB7zG,MAAM,KAAK6zG,mBAAmB7/K,OAAM,EAAG,QAAO;AAErE,QAAI8/K,iBAAiB9/K,OAAM,GAAG;AAC5B,UAAI8/K,iBAAiB9zG,MAAM,GAAG;AAC5BhsE,QAAAA,QAAOy8B,WAAW,CAAC,IAAI6N,gBACrBtqC,QAAOy8B,WAAW,CAAC,EAAEG,OACrBzE,YAAW,SAAS,CACtB;AAAA,MACF,OAAO;AACL6zC,eAAOvvC,WAAWvF,QAAQl3B,QAAOy8B,WAAW6+B,MAAK,CAAE;AAAA,MACrD;AAAA,IACF;AAEA0Q,WAAOvvC,WAAWt2B,KAAK,GAAGnG,QAAOy8B,UAAU;AAE3C,WAAO;AAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1jBA,QAAAsjJ,kBAAA94K,sBAAA;AAMA,QAAAo2K,YAAAp2K,gBAAA;AAEO,aAASi3K,WACdzgL,OACA4+K,gBACAn2K,MACA;AACA,aAAO,IAAIo3K,gBAAc,QAAC7/K,KAAI,EAAEygL,WAAW7B,gBAAgBn2K,IAAI;AAAA,IACjE;AAsCA,aAASk4K,SACP3gL,OACA+N,MACA6wK,gBACAn2K,MACA;AACA,aAAO,IAAIo3K,gBAAAA,QAAe7/K,KAAI,EAAE2gL,SAAS5yK,MAAM6wK,gBAAgBn2K,IAAI;AAAA,IACrE;AAGO,aAASo4K,aACd7gL,OACA4+K,gBACAn2K,MACA;AACA,aAAO,IAAIo3K,gBAAc,QAAC7/K,KAAI,EAAE6gL,aAAajC,gBAAgBn2K,IAAI;AAAA,IACnE;AAEO,aAASq4K,cACd9gL,OACA4+K,gBACAn2K,MACA;AACA,aAAO,IAAIo3K,gBAAc,QAAC7/K,KAAI,EAAE8gL,cAAclC,gBAAgBn2K,IAAI;AAAA,IACpE;AAAA;;;;;;;;;;;;AC5EA,MAAAi4B,QAAAl3B,aAAA;AACA,MAAA24D,YAAA34D,aAAA;AAOA,MAAI+4K;AAEW,WAASC,cAAYnC,aAAuB;AACzD,QAAI,CAACkC,oBAAoB;AACvBA,2BAAqB3mC,UAAAA,SAASoB,mBAAmB;AAAA,QAC/C6U,eAAe7xJ,OAAM;AACnBA,UAAAA,MAAK6lJ,YAAY71I,YAAE+zB,gBAAgB,QAAQ/zB,MAAC,MAACg4B,eAAe,CAAC,GAAG,IAAI,CAAC;AAAA,QACvE;AAAA,MACF,CAAC;AACDu6I,yBAAmB7Y,UAAU;AAAA,IAC/B;AAEA,KAAA,GAAArrG,mBAASgiH,YAAY/+K,MAAMihL,kBAAkB;AAAA,EAC/C;;;;;;;;;;;;ACrBA,MAAA7hJ,QAAAl3B,aAAA;AAyBA,WAASi5K,SAASziL,OAAgB;AAChC,OAAG;AACD,cAAQA,MAAKy8B,OAAOhqB,MAAI;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AACH,iBAEIzS,MAAK65I,WAAWp9G,OAGhBqC,eAAe;AAAA,QAErB;AACE,cAAI9+B,MAAK65I,WAAW9sH,YAAW,KAAM/sB,MAAK65I,WAAWntH,gBAAgB;AACnE,mBAAO;AAAA,UACT;AAAA,MACJ;AAAA,IACF,SAAU1sB,QAAOA,MAAK65I;AAAAA,EACxB;AAEe,WAAS6oC,wBACtBrC,aACA34C,UACAi7C,eACA;AACA,UAAM3lJ,WAAW,oBAAI25B,IAAK;AAC1B,UAAMv3B,WAAW,oBAAIu3B,IAAK;AAC1B,UAAMisH,kBAAmB5iL,CAAAA,UAAmB;AAK1CqgL,kBAAYrS,QAAQhuK,KAAI;AAAA,IACzB;AAED,eAAW,CAACuC,SAAQ0+I,IAAI,KAAKvZ,SAASnlI,QAAQ;AAC5C,iBAAW,CAACilE,WAAWY,UAAU,KAAK64E,KAAK4hC,SAAS;AAClD7lJ,iBAAS1vB,IAAIk6D,WAAW,CAACjlE,SAAQ6lE,YAAY,IAAI,CAAC;AAAA,MACpD;AACA,iBAAWZ,aAAay5E,KAAK6hC,kBAAkB;AAC7C9lJ,iBAAS1vB,IAAIk6D,WAAW,CAACjlE,SAAQ,MAAMilE,SAAS,CAAC;AAAA,MACnD;AAAA,IACF;AAEA,eAAW,CAACroC,OAAO8hH,IAAI,KAAKvZ,SAASvoG,OAAO;AAC1C,UAAI4jJ,aAAa3jJ,SAASlvB,IAAIivB,KAAK;AACnC,UAAI,CAAC4jJ,YAAY;AACfA,qBAAa,CAAE;AACf3jJ,iBAAS9xB,IAAI6xB,OAAO4jJ,UAAU;AAAA,MAChC;AAEAA,iBAAWr6K,KAAK,GAAGu4I,KAAKp8D,KAAK;AAAA,IAC/B;AAGA,UAAMm+F,iCAAiE;AAAA,MACrEt7C;AAAAA,MACAk7C;AAAAA,MACAxiH,OAAOigH,YAAYjgH;AAAAA,MACnBhhC;AAAAA,IACD;AACDihJ,gBAAYhiH,SAEV4kH,2BACAD,8BACF;AAGA,UAAME,gCAA+D;AAAA,MACnEv9B,MAAM,oBAAI2iB,QAAS;AAAA,MACnB5gC;AAAAA,MACAk7C;AAAAA,MACAxiH,OAAOigH,YAAYjgH;AAAAA,MACnBpjC;AAAAA,MACAoC;AAAAA,MACA+jJ,qBAAqB,CAAC5gL,SAAQ6lE,YAAYZ,SAAS,GAAG47G,WAAW;AAC/D,cAAMnmJ,OAAOyqG,SAASnlI,OAAO2N,IAAI3N,OAAM;AACvC06B,aAAKwhH,aAAa;AAElB,YAAIj3E,WAAW;AACb,cAAIvqC,KAAKsnI,MAAM;AAAA,gBAAA8e;AAEbD,yBAASC,iBAAGV,cAAcS,WAAWnmJ,KAAKsnI,IAAI,MAAC8e,OAAAA,iBAAID;AAAAA,UACrD;AACA,iBAAOA;AAAAA,QACT;AAEA,YAAInhJ,aAA0BjyB,MAAC,MAAC0qB,WAAWuC,KAAKlvB,IAAI;AACpD,YAAIkvB,KAAKsnI,MAAM;AAAA,cAAA+e;AACbrhJ,UAAAA,cAASqhJ,kBAAGX,cAAc1gJ,YAAWhF,KAAKsnI,IAAI,MAAC+e,OAAAA,kBAAIrhJ;AAAAA,QACrD;AAEA,YAAImmC,eAAe,aAAanrC,KAAKsmJ,YAAY,gBAAgB;AAC/D,iBAAOthJ;AAAAA,QACT;AAEA,cAAMlF,WAAW2qG,SAAS87C,iBAAiBz0K,IAAIq5D,UAAU;AAEzD,eAAOp4D,MAAAA,MAAEy4B,iBACPxG,YACAlF,WAAW/sB,MAAAA,MAAE83B,cAAcsgC,UAAU,IAAIp4D,MAAAA,MAAE0qB,WAAW0tC,UAAU,GAChErrC,QACF;AAAA,MACF;AAAA,IACD;AAEDsjJ,gBAAYhiH,SAASolH,0BAA0BP,6BAA6B;AAAA,EAC9E;AAKA,QAAMD,4BAAqE;AAAA,IACzEr+F,MAAM5kF,OAAM;AACVA,MAAAA,MAAKqc,KAAM;AAAA,IACZ;AAAA,IACDsvB,iBAAiB3rC,OAAM;AACrB,YAAM;AAAA,QAAE4iL;AAAAA,QAAiBxjJ;AAAAA,QAAUsoG;AAAAA,MAAS,IAAI;AAEhD,YAAM;AAAA,QAAEnrG;AAAAA,MAAI,IAAGv8B,MAAKsB;AACpB,UAAI,CAACi7B,GAAI,OAAM,IAAI9kB,MAAM,+BAA+B;AACxD,YAAM+vD,YAAYjrC,GAAGxuB;AAErB,YAAM21K,cAActkJ,SAASlvB,IAAIs3D,SAAS,KAAK,CAAE;AACjD,UAAIk8G,YAAYj2K,SAAS,GAAG;AAC1B,cAAM07H,YAAYn5H,MAAC,MAAC82B,oBAElB68I,uCACEj8C,UACAg8C,aACA1zK,MAAC,MAAC0qB,WAAW8sC,SAAS,GACtBxnE,MAAKogE,KACP,CACF;AAEA+oE,kBAAUmb,cAActkJ,MAAKsB,KAAKgjJ;AAElCs+B,wBAAgB5iL,MAAKotK,YAAYjkC,SAAS,EAAE,CAAC,CAAC;AAAA,MAChD;AAAA,IACD;AAAA,IACD1+F,oBAAoBzqC,OAAM;AACxB,YAAM;AAAA,QAAE4iL;AAAAA,QAAiBxjJ;AAAAA,QAAUsoG;AAAAA,MAAS,IAAI;AAEhD,YAAMhoE,SAAQ1/D,MAAKsB,KAAKi8B,SAAS;AAEjC,iBAAWc,QAAQr+B,MAAKkQ,IAAI,cAAc,GAAG;AAC3C,cAAM;AAAA,UAAEqsB;AAAAA,QAAI,IAAG8B,KAAK/8B;AACpB,YAAI;AAAA,UAAEw6B;AAAAA,QAAM,IAAGuC,KAAK/8B;AACpB,YACE0O,MAAAA,MAAEiO,aAAase,EAAE,KACjB6C,SAASrwB,IAAIwtB,GAAGxuB,IAAI,KACpB,CAACiC,YAAEiQ,0BAA0B6b,IAAI,MAChC,CAAC9rB,MAAC,MAACgO,qBAAqB8d,IAAI,KAAKA,KAAKS,QACtC,CAACvsB,MAAC,MAACmQ,kBAAkB2b,IAAI,KAAKA,KAAKS,KACpC;AACA,cAAI,CAACT,MAAM;AACT,gBAAI4jC,QAAO;AAIT;AAAA,YACF,OAAO;AACL5jC,qBAAO97B,MAAKogE,MAAM5I,mBAAoB;AAAA,YACxC;AAAA,UACF;AAEAn5B,eAAK/8B,KAAKw6B,OAAO6nJ,uCACfj8C,UACAtoG,SAASlvB,IAAIqsB,GAAGxuB,IAAI,GACpB+tB,MACA97B,MAAKogE,KACP;AACAwiH,0BAAgBvkJ,KAAKnuB,IAAI,MAAM,CAAC;AAAA,QAClC,OAAO;AACL,qBAAWs3D,aAAan3D,OAAOnK,KAC7Bm4B,KAAK2/B,2BAA0B,CACjC,GAAG;AACD,gBAAI5+B,SAASrwB,IAAIy4D,SAAS,GAAG;AAC3B,oBAAM2hE,YAAYn5H,MAAC,MAAC82B,oBAElB68I,uCACEj8C,UACAtoG,SAASlvB,IAAIs3D,SAAS,GACtBx3D,MAAAA,MAAE0qB,WAAW8sC,SAAS,GACtBxnE,MAAKogE,KACP,CACF;AAEA+oE,wBAAUmb,cAActkJ,MAAKsB,KAAKgjJ;AAElCs+B,8BAAgB5iL,MAAKotK,YAAYjkC,SAAS,EAAE,CAAC,CAAC;AAAA,YAChD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACD;AAED,QAAMw6C,yCAAyCA,CAC7Cj8C,UACAg8C,aACAE,WACAxjH,WACG;AACH,UAAMyjH,oBAAoBn8C,SAASzgE;AACnC,aACMke,eAAe/kB,QACnB+kB,gBAAgB,MAChBA,eAAeA,aAAa1oD,QAC5B;AACA,UAAI0oD,aAAa6/D,cAAc6+B,iBAAiB,GAAG;AACjD1+F,qBAAa24D,OAAO+lC,iBAAiB;AAAA,MACvC;AAAA,IACF;AACA,YAAQH,eAAe,CAAE,GAAE5/G,OAAO,CAACk+B,MAAM/6B,eAAe;AAItD,YAAM;AAAA,QAAEu8G;AAAAA,MAAiB,IAAI97C;AAC7B,YAAM3qG,WAAWymJ,iBAAiBz0K,IAAIk4D,UAAU;AAChD,aAAOj3D,YAAEm1B,qBACP,KACAn1B,MAAC,MAACy4B,iBACAz4B,YAAE0qB,WAAWmpJ,iBAAiB,GAC9B9mJ,WAAW/sB,MAAAA,MAAE83B,cAAcm/B,UAAU,IAAIj3D,MAAC,MAAC0qB,WAAWusC,UAAU,GACjDlqC,QACjB,GACAilE,IACF;AAAA,IACD,GAAE4hF,SAAS;AAAA,EACb;AAED,QAAME,mBAAoBt8G,eAAsB;AAC9C,WAAO2K,MAAQ,SAACn3C,WAAWkoC;AAAAA;AAAAA,+BAEEsE,SAAS;AAAA;AAAA;AAAA,EAGvC;AAED,QAAMi8G,2BAAmE;AAAA,IACvErmC,qBAAqBp9I,OAAM;AACzB,YAAM;AAAA,QAAE2lJ;AAAAA,QAAMw9B;AAAAA,QAAsB/iH,OAAAA;AAAAA,QAAOpjC;AAAAA,QAAU4lJ;AAAAA,MAAgB,IACnE;AACF,UAAIj9B,KAAK52I,IAAI/O,MAAKsB,IAAI,EAAG;AACzBqkJ,WAAK1pI,IAAIjc,MAAKsB,IAAI;AAElB,YAAMkmE,YAAYxnE,MAAKsB,KAAKyM;AAE5B,YAAMg2K,aAAa/mJ,SAAS9sB,IAAIs3D,SAAS;AACzC,UAAIu8G,YAAY;AACd,YAAItB,SAASziL,KAAI,GAAG;AAClB,gBAAMA,MAAKqqK,oBACT,0CAA0C7iG,SAAS,kIAErD;AAAA,QACF;AAEA,cAAMw8G,eAAehkL,MAAKogE,MAAMwgF,WAAWp5E,SAAS;AACpD,cAAMy8G,cAAc7jH,OAAMwgF,WAAWp5E,SAAS;AAG9C,YAAIy8G,gBAAgBD,aAAc;AAElC,cAAMlrC,MAAMqqC,qBAAqBY,YAAY/jL,MAAKsB,IAAI;AAGtDw3I,YAAIlkI,MAAM5U,MAAKsB,KAAKsT;AAEpB,aACG5U,MAAK65I,WAAWz8H,iBAAiB;AAAA,UAAEwb,QAAQ54B,MAAKsB;AAAAA,QAAK,CAAC,KACrDtB,MAAK65I,WAAWh4H,yBAAyB;AAAA,UAAE+W,QAAQ54B,MAAKsB;AAAAA,QAAK,CAAC,KAC9DtB,MAAK65I,WAAWz4H,2BAA2B;AAAA,UAAE2e,KAAK//B,MAAKsB;AAAAA,QAAM,CAAA,MAC/D0O,MAAC,MAAC0O,mBAAmBo6H,GAAG,GACxB;AACA94I,UAAAA,MAAK6lJ,YAAY71I,YAAEw5B,mBAAmB,CAACx5B,MAAAA,MAAEg4B,eAAe,CAAC,GAAG8wG,GAAG,CAAC,CAAC;AAAA,QACnE,WAAW94I,MAAK2mB,gBAAiB,KAAI3W,MAAAA,MAAE0O,mBAAmBo6H,GAAG,GAAG;AAC9D,gBAAM;AAAA,YAAExyI;AAAAA,YAAQ+pB;AAAAA,UAAS,IAAIyoH;AAC7B94I,UAAAA,MAAK6lJ,YACH71I,MAAC,MAAC0nC,oBAEA1nC,MAAAA,MAAEwB,cAAclL,OAAOyH,IAAI,GAE3BiC,MAAAA,MAAEwB,cAAc6e,SAAStiB,IAAI,CAC/B,CACF;AAAA,QACF,OAAO;AACL/N,UAAAA,MAAK6lJ,YAAY/M,GAAG;AAAA,QACtB;AAEA8pC,wBAAgB5iL,KAAI;AAIpBA,QAAAA,MAAKqc,KAAM;AAAA,MACb;AAAA,IACD;AAAA,IAEDkuB,iBAAiBvqC,OAAM;AACrB,YAAM;AAAA,QACJogE,OAAAA;AAAAA,QACAulF;AAAAA,QACA3oH;AAAAA,QACAoC;AAAAA,QACAwjJ;AAAAA,QACAO;AAAAA,MACF,IAAI;AAEJ,UAAIx9B,KAAK52I,IAAI/O,MAAKsB,IAAI,EAAG;AAEzBqkJ,WAAK1pI,IAAIjc,MAAKsB,IAAI;AAElB,YAAMo8G,MAAM19G,MAAKkQ,IAAI,UAAU;AAG/B,UAAIwtG,IAAIh/F,qBAAsB;AAE9B,YAAMqd,SAAS/7B,MAAKsB;AAEpB,UAAIo8G,IAAIz/F,gBAAgB;AACtB,cAAMupD,YAAYk2C,IAAIp8G,KAAKyM;AAG3B,YAAIqyD,OAAMwgF,WAAWp5E,SAAS,MAAMxnE,MAAKogE,MAAMwgF,WAAWp5E,SAAS,GAAG;AACpE;AAAA,QACF;AAEA,cAAM08G,gBAAgB9kJ,SAASlvB,IAAIs3D,SAAS;AAC5C,cAAMu8G,aAAa/mJ,SAAS9sB,IAAIs3D,SAAS;AAEzC,aAAI08G,iBAAa,OAAA,SAAbA,cAAez2K,UAAS,KAAKs2K,YAAY;AAC3C,cAAIA,YAAY;AACd/jL,YAAAA,MAAK6lJ,YACH71I,MAAAA,MAAEm1B,qBAECpJ,OAAOtB,SAAS,CAAC,IAAI,KACtB0oJ,qBAAqBY,YAAYrmE,IAAIp8G,IAAI,GACzCwiL,iBAAiBt8G,SAAS,CAC5B,CACF;AAAA,UACF,WAAWzrC,OAAO/f,QAAQ;AAGxBhc,YAAAA,MAAK6lJ,YACH89B,uCACE,KAAKj8C,UACLw8C,eACAl0K,YAAEmoD,UAAUp8B,MAAM,GAClB/7B,MAAKogE,KACP,CACF;AAAA,UACF,OAAO;AAGL,kBAAM04E,MAAM14E,OAAMohF,8BAA8Bh6E,SAAS;AAEzDxnE,YAAAA,MAAK6lJ,YACH71I,MAAC,MAACw5B,mBAAmB,CACnBx5B,MAAAA,MAAEm1B,qBACA,KACAn1B,MAAC,MAACmoD,UAAU2gF,GAAG,GACf9oI,MAAAA,MAAEmoD,UAAUp8B,MAAM,CACpB,GACA4nJ,uCACE,KAAKj8C,UACLw8C,eACAl0K,MAAC,MAAC0qB,WAAW8sC,SAAS,GACtBxnE,MAAKogE,KACP,GACApwD,MAAC,MAACmoD,UAAU2gF,GAAG,CAAC,CACjB,CACH;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA8pC,sBAAgB5iL,KAAI;AACpBA,MAAAA,MAAKqc,KAAM;AAAA,IACZ;AAAA,IAED+oB,sBAAsB;AAAA,MACpBm5B,KAAKv+D,OAAM;AACT,cAAM;AAAA,UACJogE,OAAAA;AAAAA,UACAulF;AAAAA,UACA3oH;AAAAA,UACAoC;AAAAA,UACAwjJ;AAAAA,UACAO;AAAAA,QACF,IAAI;AAEJ,YAAIx9B,KAAK52I,IAAI/O,MAAKsB,IAAI,EAAG;AACzBqkJ,aAAK1pI,IAAIjc,MAAKsB,IAAI;AAElB,cAAMu5B,OAAO76B,MAAKkQ,IAAI,MAAM;AAG5B,YAAI2qB,KAAKnc,qBAAsB;AAE/B,YAAImc,KAAK5c,gBAAgB;AAGvB,gBAAMupD,YAAY3sC,KAAKv5B,KAAKyM;AAG5B,cAAIqyD,OAAMwgF,WAAWp5E,SAAS,MAAMxnE,MAAKogE,MAAMwgF,WAAWp5E,SAAS,GAAG;AACpE;AAAA,UACF;AAEA,gBAAM08G,gBAAgB9kJ,SAASlvB,IAAIs3D,SAAS;AAC5C,gBAAMu8G,aAAa/mJ,SAAS9sB,IAAIs3D,SAAS;AACzC,eAAI08G,iBAAa,OAAA,SAAbA,cAAez2K,UAAS,KAAKs2K,YAAY;AAC3C,kBAAMI,aAAankL,MAAKsB;AAExB,gBAAIyiL,YAAY;AACdI,yBAAWtpJ,OAAOsoJ,qBAAqBY,YAAYlpJ,KAAKv5B,IAAI;AAE5D6iL,yBAAWrpJ,QAAQ9qB,MAAC,MAACw5B,mBAAmB,CACtC26I,WAAWrpJ,OACXgpJ,iBAAiBt8G,SAAS,CAAC,CAC5B;AAAA,YACH;AAEA,kBAAM;AAAA,cAAE/sC;AAAAA,YAAS,IAAI0pJ;AACrB,gBAAIC;AACJ,gBAAI3pJ,aAAa,KAAK;AACpB2pJ,wBAAUD;AAAAA,YACZ,WACE1pJ,aAAa,SACbA,aAAa,SACbA,aAAa,OACb;AACA2pJ,wBAAUp0K,MAAC,MAACm1B,qBACV,KACAg/I,WAAWtpJ,MACX7qB,MAAC,MAACu4B,kBACA9N,SAAS/nB,MAAM,GAAG,EAAE,GACpB1C,MAAAA,MAAEmoD,UAAUgsH,WAAWtpJ,IAAI,GAC3BspJ,WAAWrpJ,KACb,CACF;AAAA,YACF,OAAO;AACLspJ,wBAAUp0K,MAAC,MAACm1B,qBACV,KACAg/I,WAAWtpJ,MACX7qB,MAAC,MAACq1B,iBACA5K,SAAS/nB,MAAM,GAAG,EAAE,GACpB1C,MAAAA,MAAEmoD,UAAUgsH,WAAWtpJ,IAAI,GAC3BspJ,WAAWrpJ,KACb,CACF;AAAA,YACF;AAEA96B,YAAAA,MAAK6lJ,YACH89B,uCACE,KAAKj8C,UACLw8C,eACAE,SACApkL,MAAKogE,KACP,CACF;AAEAwiH,4BAAgB5iL,KAAI;AAEpBA,YAAAA,MAAKqc,KAAM;AAAA,UACb;AAAA,QACF,OAAO;AACL,gBAAMihD,MAAMziC,KAAKmjC,2BAA4B;AAC7C,gBAAMqmH,kBAAkBh0K,OAAOnK,KAAKo3D,GAAG,EAAE9jC,OACvCguC,eACEpH,OAAMwgF,WAAWp5E,SAAS,MAAMxnE,MAAKogE,MAAMwgF,WAAWp5E,SAAS,CACnE;AACA,gBAAMjrC,KAAK8nJ,gBAAgBr/C,KAAKx9D,eAAaxqC,SAASjuB,IAAIy4D,SAAS,CAAC;AAEpE,cAAIjrC,IAAI;AACNv8B,YAAAA,MAAKsB,KAAKw5B,QAAQ9qB,MAAC,MAACw5B,mBAAmB,CACrCxpC,MAAKsB,KAAKw5B,OACVgpJ,iBAAiBvnJ,EAAE,CAAC,CACrB;AAAA,UACH;AAIA,gBAAMkyF,QAAwB,CAAE;AAChC41D,0BAAgBjqJ,QAAQotC,eAAa;AACnC,kBAAM08G,gBAAgB9kJ,SAASlvB,IAAIs3D,SAAS,KAAK,CAAE;AACnD,gBAAI08G,cAAcz2K,SAAS,GAAG;AAC5BghH,oBAAM/lH,KACJi7K,uCACE,KAAKj8C,UACLw8C,eACAl0K,YAAE0qB,WAAW8sC,SAAS,GACtBxnE,MAAKogE,KACP,CACF;AAAA,YACF;AAAA,UACF,CAAC;AAED,cAAIquD,MAAMhhH,SAAS,GAAG;AACpB,gBAAInM,QAAe0O,MAAAA,MAAEw5B,mBAAmBilF,KAAK;AAC7C,gBAAIzuH,MAAK65I,WAAWl8H,yBAAyB;AAC3Crc,cAAAA,QAAO0O,MAAC,MAAC82B,oBAAoBxlC,KAAI;AAEjCA,cAAAA,MAAKgjJ,cAActkJ,MAAK65I,WAAWv4I,KAAKgjJ;AAAAA,YAC1C;AAEA,kBAAMnb,YAAYnpI,MAAKotK,YAAY9rK,KAAI,EAAE,CAAC;AAC1CshL,4BAAgBz5C,SAAS;AAAA,UAC3B;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,IACDuX,cAAc1gJ,OAAM;AAClB,YAAM;AAAA,QAAEogE,OAAAA;AAAAA,QAAO9+D,MAAAA;AAAAA,MAAK,IAAItB;AACxB,YAAM;AAAA,QAAE66B;AAAAA,MAAK,IAAIv5B;AACjB,YAAM;AAAA,QAAE89B;AAAAA,QAAUpC;AAAAA,QAAUojC,OAAOkkH;AAAAA,MAAa,IAAI;AAEpD,UAAI,CAACt0K,MAAC,MAAC2P,sBAAsBkb,IAAI,GAAG;AAClC,YAAI0pJ,qBAAqB,OACvBC;AACF,cAAMC,gBAAgBzkL,MAAKkQ,IAAI,MAAM,EAAEkwD;AACvC,mBAAWryD,QAAQsC,OAAOnK,KAAK8J,MAAC,MAACguD,2BAA2BnjC,IAAI,CAAC,GAAG;AAClE,cAAIypJ,aAAa1jC,WAAW7yI,IAAI,MAAMqyD,OAAMwgF,WAAW7yI,IAAI,GAAG;AAC5D,gBAAIqxB,SAASrwB,IAAIhB,IAAI,GAAG;AACtBw2K,mCAAqB;AACrB,kBAAIE,cAAcz/B,cAAcj3I,IAAI,GAAG;AACrC02K,8BAAc3mC,OAAO/vI,IAAI;AAAA,cAC3B;AAAA,YACF;AACA,gBAAIivB,SAASjuB,IAAIhB,IAAI,KAAK,CAACy2K,0BAA0B;AACnDA,yCAA2Bz2K;AAAAA,YAC7B;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAACw2K,sBAAsB,CAACC,0BAA0B;AACpD;AAAA,QACF;AAEAxkL,QAAAA,MAAKo6D,YAAa;AAClB,cAAMsqH,WAAW1kL,MAAKkQ,IAAI,MAAM;AAEhC,cAAMy0K,YAAYvkH,OAAM6hF,iCAAiCpnH,IAAI;AAC7D76B,QAAAA,MACGkQ,IAAI,MAAM,EACV21I,YACC71I,MAAC,MAACw6B,oBAAoB,OAAO,CAC3Bx6B,MAAAA,MAAE06B,mBAAmB16B,MAAAA,MAAEmoD,UAAUwsH,SAAS,CAAC,CAAC,CAC7C,CACH;AACFvkH,QAAAA,OAAMogF,oBAAoBxgJ,MAAKkQ,IAAI,MAAM,CAAC;AAE1C,YAAIq0K,oBAAoB;AACtBG,mBAASjgC,iBACP,QACAz0I,MAAC,MAAC82B,oBAAoB92B,MAAAA,MAAEm1B,qBAAqB,KAAKtK,MAAM8pJ,SAAS,CAAC,CACpE;AAAA,QACF;AACA,YAAIH,0BAA0B;AAC5BE,mBAASjgC,iBACP,QACAz0I,MAAC,MAAC82B,oBAAoBg9I,iBAAiBU,wBAAwB,CAAC,CAClE;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACD;;;;;;;;;;;;;;;ACnlBD,MAAAljC,QAAA93I,cAAA;AAGA,MAAAiG,6BAAAjG,aAAA;AA4DO,WAASo7K,WAAWl9C,UAA0B;AACnD,WAAOA,SAASk9C;AAAAA,EAClB;AAKO,WAASC,mBAAmBtiL,SAA8B;AAC/D,WACEA,QAAOsgL,QAAQh0F,SAAS,KACxBtsF,QAAOugL,iBAAiBj0F,SAAS,KACjCtsF,QAAOuiL,UAAUj2F,SAAS,KAC1BtsF,QAAOwiL,kBAAkBl2F,SAAS,KAClC,CAACtsF,QAAOyiL;AAAAA,EAEZ;AAEO,WAASC,4BACdC,eACgC;AAChC,QACE,OAAOA,kBAAkB,cACzBA,kBAAkB,UAClBA,kBAAkB,WAClBA,kBAAkB,QAClB;AACA,YAAM,IAAIztK,MACR,gHAAgHytK,aAAa,IAC/H;AAAA,IACF;AACA,WAAOA;AAAAA,EACT;AAEA,WAASC,qBACPD,eACA3iL,SACA6hE,UACA;AACA,QAAI,OAAO8gH,kBAAkB,YAAY;AACvC,aAAOD,4BAA4BC,cAAc3iL,SAAQ6hE,QAAQ,CAAC;AAAA,IACpE;AACA,WAAO8gH;AAAAA,EACT;AAMe,WAASE,+BACtB/E,aACAp5G,YACA;AAAA,IACEi+G;AAAAA,IACAG,sBAAsB;AAAA,IACtBC;AAAAA,IACAC,kBAAkB;AAAA,IAClBnhH;AAAAA,EAWF,GACgB;AAChB,QAAI,CAAC6C,YAAY;AACfA,mBAAao5G,YAAYjgH,MAAMqhF,sBAAsB,SAAS,EAAE1zI;AAAAA,IAClE;AACA,UAAMy1K,mBAAmB,oBAAIh1K,IAAa;AAE1Cg3K,yBAAqBnF,WAAW;AAEhC,UAAM;AAAA,MAAElhJ;AAAAA,MAAOsmJ;AAAAA,MAASb,YAAAA;AAAAA,IAAW,IAAIc,kBACrCrF,aACA;AAAA,MAAEgF;AAAAA,MAAqBC;AAAAA,IAAmB,GAC1C9B,gBACF;AAEAmC,mCAA+BtF,WAAW;AAG1C,eAAW,CAAC99K,SAAQmlI,QAAQ,KAAK+9C,SAAS;AACxC,YAAM;AAAA,QAAE3C;AAAAA,QAAkBD;AAAAA,MAAQ,IAAIn7C;AAEtC,UAAIo7C,iBAAiBj0F,OAAO,KAAKg0F,QAAQh0F,SAAS,GAAG;AACnD,cAAM,CAAC+2F,eAAe,IAAI9C;AAC1Bp7C,iBAAS35H,OAAO63K;AAAAA,MAClB;AAEA,YAAMC,kBAAkBV,qBACtBD,eACA3iL,SACA6hE,QACF;AAEA,UAAIyhH,oBAAoB,QAAQ;AAC9Bn+C,iBAAS67C,UAAU;AAAA,MACpB,WAAUsC,oBAAoB,UAAUn+C,SAAS67C,YAAY,aAAa;AACzE77C,iBAAS67C,UAAU;AAAA,MACpB,WAAUsC,oBAAoB,UAAUn+C,SAAS67C,YAAY,WAAW;AACvE77C,iBAAS67C,UAAU;AAAA,MACpB,WAAUgC,mBAAmB79C,SAAS67C,YAAY,aAAa;AAM9D77C,iBAAS67C,UAAU;AAAA,MACrB;AAAA,IACF;AAEA,WAAO;AAAA,MACLt8G;AAAAA,MACA6+G,oBAAoB;AAAA,MACpBlB,YAAAA;AAAAA,MACAzlJ;AAAAA,MACA58B,QAAQkjL;AAAAA,MACRjC;AAAAA,IACD;AAAA,EACH;AAEA,WAASuC,uBACP/lL,OACAwjL,kBACQ;AACR,QAAIxjL,MAAKie,gBAAgB;AACvB,aAAOje,MAAKsB,KAAKyM;AAAAA,IACnB,WAAW/N,MAAKoe,mBAAmB;AACjC,YAAM4nK,cAAchmL,MAAKsB,KAAKH;AAO9B,UAAI,EAAC2M,GAAAA,2BAAAA,kBAAiBk4K,WAAW,GAAG;AAClCxC,yBAAiBvnK,IAAI+pK,WAAW;AAAA,MAClC;AACA,aAAOA;AAAAA,IACT,OAAO;AACL,YAAM,IAAIvuK,MACR,2EAA2EzX,MAAKsB,KAAKmR,IAAI,EAC3F;AAAA,IACF;AAAA,EACF;AAEA,WAASs0C,sBACP/mD,OAC6C;AAC7C,QAAIA,MAAKwgB,qBAAqB;AAC5B;AAAA,IACF,WAAWxgB,MAAK2hB,8BAA8B;AAC5C,YAAM3hB,MAAKqqK,oBACT,kGACF;AAAA,IACF,OAAO;AACL,YAAMrqK,MAAKqqK,oBAAoB,kCAAkC;AAAA,IACnE;AAAA,EACF;AAKA,WAASqb,kBACPrF,aACA;AAAA,IACEiF;AAAAA,IACAD;AAAAA,EAQD,GACD7B,kBACA;AACA,UAAMyC,YAAYC,uBAChB7F,aACAgF,qBACA7B,gBACF;AAEA,UAAM2C,cAAc,oBAAIxvH,IAAuB;AAC/C,UAAMyvH,aAAa,oBAAIzvH,IAAmC;AAC1D,UAAMitF,UAAUA,CAACyiC,aAA6B/kL,UAAiB;AAC7D,YAAMiB,UAAS8jL,YAAWllL;AAE1B,UAAI8/I,OAAOmlC,WAAWl2K,IAAI3N,OAAM;AAChC,UAAI,CAAC0+I,MAAM;AACTA,eAAO;AAAA,UACLlzI,MAAMsyK,YAAYjgH,MAAMqhF,uBACtB6kC,GAAAA,MAAQ,UAAC/jL,UAAQgkL,GAAAA,eAAQhkL,OAAM,CAAC,CAClC,EAAEwL;AAAAA,UAEFw1K,SAAS;AAAA,UAET3uK,KAAK;AAAA,UAGLiuK,SAAS,oBAAIlsH,IAAK;AAAA,UAClBmsH,kBAAkB,oBAAIt0K,IAAK;AAAA,UAG3Bs2K,WAAW,oBAAInuH,IAAK;AAAA,UACpBouH,mBAAmB,oBAAIv2K,IAAK;AAAA,UAC5Bw2K,aAAa;AAAA,UAEbzgB,MAAM;AAAA,UAMN,IAAIiiB,OAAO;AACT,mBAAO,KAAKjiB,SAAS;AAAA,UACtB;AAAA,UAED9lB,YAAY;AAAA,QACb;AACD2nC,mBAAW94K,IAAI/K,SAAQ0+I,IAAI;AAC3BklC,oBAAY74K,IAAI/K,SAAQ,CAACjB,KAAI,CAAC;AAAA,MAChC,OAAO;AACL6kL,oBAAYj2K,IAAI3N,OAAM,EAAEmG,KAAKpH,KAAI;AAAA,MACnC;AACA,aAAO2/I;AAAAA,IACR;AACD,QAAI2jC,cAAa;AACjBvE,gBAAYnwK,IAAI,MAAM,EAAEkqB,QAAQkoB,WAAS;AACvC,UAAIA,MAAM5hC,uBAAuB;AAC/B,cAAMugI,OAAO2C,QAAQthG,MAAMhhD,KAAKiB,QAAQ+/C,MAAMhhD,IAAI;AAClD,YAAI,CAAC2/I,KAAKrsI,IAAKqsI,MAAKrsI,MAAM0tC,MAAMhhD,KAAKsT;AAErC0tC,cAAMpyC,IAAI,YAAY,EAAEkqB,QAAQqsJ,UAAQ;AACtC,cAAIA,KAAK9lK,4BAA4B;AACnC,kBAAM6mD,YAAYi/G,KAAKv2K,IAAI,OAAO,EAAE5O,KAAKyM;AAEzCkzI,iBAAK4hC,QAAQv1K,IAAIk6D,WAAW,SAAS;AAErC,kBAAMk/G,WAAWT,UAAU/1K,IAAIs3D,SAAS;AACxC,gBAAIk/G,UAAU;AACZT,wBAAU7/F,OAAO5e,SAAS;AAE1Bk/G,uBAAS7hG,MAAMzqD,QAAQrsB,UAAQ;AAC7BkzI,qBAAK6jC,UAAUx3K,IAAIS,MAAM,SAAS;AAAA,cACpC,CAAC;AACDkzI,mBAAKxC,aAAa;AAAA,YACpB;AAAA,UACF,WAAWgoC,KAAK7lK,8BAA8B;AAC5C,kBAAM4mD,YAAYi/G,KAAKv2K,IAAI,OAAO,EAAE5O,KAAKyM;AAEzCkzI,iBAAK6hC,iBAAiB7mK,IAAIurD,SAAS;AACnC,kBAAMk/G,WAAWT,UAAU/1K,IAAIs3D,SAAS;AACxC,gBAAIk/G,UAAU;AACZT,wBAAU7/F,OAAO5e,SAAS;AAE1Bk/G,uBAAS7hG,MAAMzqD,QAAQrsB,UAAQ;AAC7BkzI,qBAAK8jC,kBAAkB9oK,IAAIlO,IAAI;AAAA,cACjC,CAAC;AACDkzI,mBAAKxC,aAAa;AAAA,YACpB;AAAA,UACF,WAAWgoC,KAAK5lK,qBAAqB;AACnC,kBAAMunD,aAAa29G,uBACjBU,KAAKv2K,IAAI,UAAU,GACnBszK,gBACF;AACA,kBAAMh8G,YAAYi/G,KAAKv2K,IAAI,OAAO,EAAE5O,KAAKyM;AAEzCkzI,iBAAK4hC,QAAQv1K,IAAIk6D,WAAWY,UAAU;AAEtC,kBAAMs+G,WAAWT,UAAU/1K,IAAIs3D,SAAS;AACxC,gBAAIk/G,UAAU;AACZT,wBAAU7/F,OAAO5e,SAAS;AAE1Bk/G,uBAAS7hG,MAAMzqD,QAAQrsB,UAAQ;AAC7BkzI,qBAAK6jC,UAAUx3K,IAAIS,MAAMq6D,UAAU;AAAA,cACrC,CAAC;AACD64E,mBAAKxC,aAAa;AAAA,YACpB;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH,WAAWn8F,MAAMjiC,0BAA0B;AACzCukK,QAAAA,cAAa;AACb,cAAM3jC,OAAO2C,QAAQthG,MAAMhhD,KAAKiB,QAAQ+/C,MAAMhhD,IAAI;AAClD,YAAI,CAAC2/I,KAAKrsI,IAAKqsI,MAAKrsI,MAAM0tC,MAAMhhD,KAAKsT;AAErCqsI,aAAK+jC,cAAc;AAAA,UACjBpwK,KAAK0tC,MAAMhhD,KAAKsT;AAAAA,QACjB;AACDqsI,aAAKxC,aAAa;AAAA,MACpB,WAAWn8F,MAAM/hC,yBAAwB,KAAM+hC,MAAMhhD,KAAKiB,QAAQ;AAChEqiL,QAAAA,cAAa;AACb,cAAM3jC,OAAO2C,QAAQthG,MAAMhhD,KAAKiB,QAAQ+/C,MAAMhhD,IAAI;AAClD,YAAI,CAAC2/I,KAAKrsI,IAAKqsI,MAAKrsI,MAAM0tC,MAAMhhD,KAAKsT;AAErC0tC,cAAMpyC,IAAI,YAAY,EAAEkqB,QAAQqsJ,UAAQ;AACtC1/H,gCAAsB0/H,IAAI;AAC1B,gBAAMr+G,aAAa29G,uBACjBU,KAAKv2K,IAAI,OAAO,GAChBszK,gBACF;AACA,gBAAMv8G,aAAa8+G,uBACjBU,KAAKv2K,IAAI,UAAU,GACnBszK,gBACF;AAEAviC,eAAK6jC,UAAUx3K,IAAI25D,YAAYmB,UAAU;AACzC64E,eAAKxC,aAAa;AAElB,cAAIx3E,eAAe,cAAc;AAC/B,kBAAMw/G,KACHv2K,IAAI,UAAU,EACdm6J,oBAAoB,8BAA8B;AAAA,UACvD;AAAA,QACF,CAAC;AAAA,MACF,WACC/nH,MAAM/hC,yBAA0B,KAChC+hC,MAAMhiC,2BAA0B,GAChC;AACAskK,QAAAA,cAAa;AAAA,MACf;AAAA,IACF,CAAC;AAED,eAAWl9C,YAAY0+C,WAAWxuJ,UAAU;AAC1C,UAAI+uJ,eAAe;AACnB,UAAIC,aAAa;AAEjB,UAAIl/C,SAASo7C,iBAAiBj0F,OAAO,GAAG;AACtC83F,uBAAe;AACfC,qBAAa;AAAA,MACf;AAEA,UAAIl/C,SAASs9C,aAAa;AACxB4B,qBAAa;AAAA,MACf;AAEA,iBAAWx+G,cAAcs/D,SAASm7C,QAAQjrJ,OAAM,GAAI;AAClD,YAAIwwC,eAAe,UAAWu+G,gBAAe;AAAA,YACxCC,cAAa;AAAA,MACpB;AACA,iBAAWx+G,cAAcs/D,SAASo9C,UAAUltJ,OAAM,GAAI;AACpD,YAAIwwC,eAAe,UAAWu+G,gBAAe;AAAA,YACxCC,cAAa;AAAA,MACpB;AAEA,UAAID,gBAAgBC,YAAY;AAE9Bl/C,iBAAS67C,UAAU;AAAA,MACpB,WAAUoD,cAAc;AACvBj/C,iBAAS67C,UAAU;AAAA,MACrB;AAAA,IACF;AAEA,QAAI+B,mBAAmB;AACrB,iBAAW,CAAC/iL,SAAQmlI,QAAQ,KAAK0+C,YAAY;AAC3C1+C,iBAAS68B,OAAO+gB,kBACd/iL,SACAmlI,UACAy+C,YAAYj2K,IAAI3N,OAAM,CACxB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,MACLqiL,YAAAA;AAAAA,MACAzlJ,OAAO8mJ;AAAAA,MACPR,SAASW;AAAAA,IACV;AAAA,EACH;AAMA,WAASF,uBACP7F,aACAgF,qBACA7B,kBACkC;AAClC,UAAMqD,oBAAoB,oBAAIlwH,IAAK;AAEnC0pH,gBAAYnwK,IAAI,MAAM,EAAEkqB,QAASkoB,WAAoB;AACnD,UAAI/kB;AACJ,UAAI+kB,MAAM5hC,uBAAuB;AAC/B6c,eAAO;AAAA,MACT,OAAO;AACL,YAAI+kB,MAAMhiC,8BAA8B;AACtCgiC,kBAAQA,MAAMpyC,IAAI,aAAa;AAAA,QACjC;AACA,YAAIoyC,MAAM/hC,4BAA4B;AACpC,cAAI+hC,MAAMhhD,KAAKy9B,aAAa;AAC1BujB,oBAAQA,MAAMpyC,IAAI,aAAa;AAAA,qBAE/Bm1K,uBACA/iI,MAAMhhD,KAAKiB,UACX+/C,MAAMpyC,IAAI,QAAQ,EAAEkO,mBACpB;AACAkkC,kBAAMpyC,IAAI,YAAY,EAAEkqB,QAAQqsJ,UAAQ;AACtC1/H,oCAAsB0/H,IAAI;AAC1BI,gCAAkBv5K,IAAIm5K,KAAKv2K,IAAI,OAAO,EAAE5O,KAAKyM,MAAM,OAAO;AAAA,YAC5D,CAAC;AACD;AAAA,UACF;AAAA,QACF;AAEA,YAAIu0C,MAAMvkC,yBAAyB;AACjCwf,iBAAO;AAAA,QACT,WAAW+kB,MAAMliC,sBAAsB;AACrCmd,iBAAO;AAAA,QACT,WAAW+kB,MAAM3iC,sBAAsB;AAAA,UAAE4d,MAAM;AAAA,QAAM,CAAC,GAAG;AACvDA,iBAAO;AAAA,QACT,WAAW+kB,MAAM3iC,yBAAyB;AACxC4d,iBAAO;AAAA,QACT,OAAO;AACL;AAAA,QACF;AAAA,MACF;AAEAltB,aAAOnK,KAAKo8C,MAAM0b,2BAA0B,CAAE,EAAE5jC,QAAQrsB,UAAQ;AAC9D84K,0BAAkBv5K,IAAIS,MAAMwvB,IAAI;AAAA,MAClC,CAAC;AAAA,IACH,CAAC;AAED,UAAMupJ,gBAAgB,oBAAInwH,IAAK;AAC/B,UAAMowH,mBAAoBC,YAAmC;AAC3D,YAAMx/G,YAAYw/G,OAAO1lL,KAAKyM;AAC9B,UAAI25H,WAAWo/C,cAAc52K,IAAIs3D,SAAS;AAE1C,UAAI,CAACkgE,UAAU;AACb,cAAMnqG,OAAOspJ,kBAAkB32K,IAAIs3D,SAAS;AAE5C,YAAIjqC,SAAS5pB,QAAW;AACtB,gBAAMqzK,OAAO3c,oBACX,oBAAoB7iG,SAAS,2BAC/B;AAAA,QACF;AAEAkgE,mBAAW;AAAA,UACT7iD,OAAO,CAAE;AAAA,UACTtnD;AAAAA,QACD;AACDupJ,sBAAcx5K,IAAIk6D,WAAWkgE,QAAQ;AAAA,MACvC;AACA,aAAOA;AAAAA,IACR;AAED24C,gBAAYnwK,IAAI,MAAM,EAAEkqB,QAAQkoB,WAAS;AACvC,UACEA,MAAM/hC,+BACL8kK,uBAAuB,CAAC/iI,MAAMhhD,KAAKiB,SACpC;AACA,YAAI+/C,MAAMhhD,KAAKy9B,aAAa;AAC1B,gBAAMA,cAAcujB,MAAMpyC,IAAI,aAAa;AAC3C,gBAAMotD,MAAMv+B,YAAYk7I,+BAAgC;AACxD5pK,iBAAOnK,KAAKo3D,GAAG,EAAEljC,QAAQrsB,UAAQ;AAC/B,gBAAIA,SAAS,cAAc;AACzB,oBAAMgxB,YAAYsrI,oBAChB,8BACF;AAAA,YACF;AACA0c,6BAAiBzpH,IAAIvvD,IAAI,CAAC,EAAE82E,MAAMn8E,KAAKqF,IAAI;AAAA,UAC7C,CAAC;AAAA,QACH,OAAO;AACLu0C,gBAAMpyC,IAAI,YAAY,EAAEkqB,QAAQqsJ,UAAQ;AACtC,kBAAMtnJ,QAAQsnJ,KAAKv2K,IAAI,OAAO;AAC9B,kBAAMkvB,WAAWqnJ,KAAKv2K,IAAI,UAAU;AACpC,kBAAM42K,iBAAgBC,iBAAiB5nJ,KAAK;AAC5C,kBAAM8nC,aAAa8+G,uBAAuB3mJ,UAAUokJ,gBAAgB;AAEpE,gBAAIv8G,eAAe,cAAc;AAC/B,oBAAM7nC,SAASirI,oBAAoB,8BAA8B;AAAA,YACnE;AACAyc,YAAAA,eAAcjiG,MAAMn8E,KAAKu+D,UAAU;AAAA,UACrC,CAAC;AAAA,QACH;AAAA,MACF,WAAW3kB,MAAMhiC,8BAA8B;AAC7C,cAAMye,cAAcujB,MAAMpyC,IAAI,aAAa;AAC3C,YACE6uB,YAAYhhB,sBAAqB,KACjCghB,YAAY3e,mBAAkB,GAC9B;AACA2mK,2BAAiBhoJ,YAAY7uB,IAAI,IAAI,CAAC,EAAE20E,MAAMn8E,KAAK,SAAS;AAAA,QAC9D,OAAO;AAEL,gBAAMq2B,YAAYsrI,oBAChB,uCACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,WAAOyc;AAAAA,EACT;AAKA,WAAStB,qBAAqBnF,aAAkC;AAE9DA,gBAAYnwK,IAAI,MAAM,EAAEkqB,QAAQkoB,WAAS;AACvC,UAAI,CAACA,MAAMhiC,6BAA8B;AACwB;AAAA,YAAA2mK;AAE/D,SAAAA,wBAAA3kI,MAAMq7F,2BAAsBspC,OAAAA,wBAA5B3kI,MAAMq7F,yBAEJn0I,aAAAA,EAA2BikK,SAAS71G,UAAU+lF;AAAAA,MAClD;AACAr7F,YAAMq7F,uBAAwB;AAAA,IAChC,CAAC;AAAA,EACH;AAEA,WAASgoC,+BAA+BtF,aAAkC;AACxEA,gBAAYnwK,IAAI,MAAM,EAAEkqB,QAAQkoB,WAAS;AACvC,UAAIA,MAAM5hC,uBAAuB;AAC/B4hC,cAAMwjG,OAAQ;AAAA,MAChB,WAAWxjG,MAAM/hC,4BAA4B;AAC3C,YAAI+hC,MAAMhhD,KAAKy9B,aAAa;AAE1BujB,gBAAMhhD,KAAKy9B,YAAYulH,cAAchiG,MAAMhhD,KAAKgjJ;AAChDhiG,gBAAMujG,YAAYvjG,MAAMhhD,KAAKy9B,WAAW;AAAA,QAC1C,OAAO;AACLujB,gBAAMwjG,OAAQ;AAAA,QAChB;AAAA,MACF,WAAWxjG,MAAMhiC,8BAA8B;AAE7C,cAAMye,cAAcujB,MAAMpyC,IAAI,aAAa;AAC3C,YACE6uB,YAAYhhB,sBAAqB,KACjCghB,YAAY3e,mBAAkB,GAC9B;AAEA2e,sBAAYulH,cAAchiG,MAAMhhD,KAAKgjJ;AACrChiG,gBAAMujG,YAAY9mH,WAAW;AAAA,QAC/B,OAAO;AAEL,gBAAMA,YAAYsrI,oBAChB,uCACF;AAAA,QACF;AAAA,MACF,WAAW/nH,MAAMjiC,0BAA0B;AACzCiiC,cAAMwjG,OAAQ;AAAA,MAChB;AAAA,IACF,CAAC;AAAA,EACH;;;;;;;;;;;;;AC/lBA,MAAAplH,QAAAl3B,aAAA;AACA,MAAA09K,4BAAA19K,gCAAA;AAOO,WAAS29K,oBAAoBX,OAAY;AAC9C,WAAO,CAACjkL,SAAgBmlI,aAAkD;AACxE,UAAI8+C,UAAS,MAAO,QAAO;AAC3B,WAAI,GAAA3B,0BAAkB,oBAACn9C,QAAQ,KAAKA,SAASs9C,YAAa,QAAO;AACjE,UAAIwB,UAAS,MAAM;AAGjB,eAAOjkL,QAAOs1B,SAAS,GAAG,IAAI,OAAO;AAAA,MACvC;AACA,UAAI/gB,MAAMC,QAAQyvK,KAAI,GAAG;AACvB,eAAO,CAACA,MAAK3uJ,SAASt1B,OAAM,IAAI,OAAO;AAAA,MACzC;AACA,UAAI,OAAOikL,UAAS,YAAY;AAC9B,eAAOA,MAAKjkL,OAAM,IAAI,SAAS;AAAA,MACjC;AACA,YAAM,IAAIkV,MAAM,oDAAoD;AAAA,IACrE;AAAA,EACH;AAEO,WAASkrK,cACd7pC,KACA1/H,SACqB;AACrB,QAAIA,YAAY,OAAQ,QAAOpJ,MAAAA,MAAEi2B,eAAe6yG,KAAK,EAAE;AACvD,WAAO;AAAA,EACT;;;;;;;;;;;;ACjCA,MAAAp4G,QAAAl3B,aAAA;AAEiE;AAE/DwK,6CAAiC,SAASozK,uBACxC9lL,OACqC;AACrC,YAAM,CAACiB,OAAM,IAAIjB,MAAK+5B;AAEtB,aAAOrrB,MAAAA,MAAEoO,gBAAgB7b,OAAM,KAAKyN,MAAC,MAACsR,kBAAkB/e,OAAM,IAC1DA,UACC4vE,MAAQ,SAACn3C,WAAWkoC,WAAW3gE,OAAM;AAAA,IAC3C;AAAA,EACH;AAEO,WAAS8kL,mBACd/lL,OACAgmL,aACAC,iBACAllL,UACc;AACd,UAAMk9D,YAAYvvD,MAAAA,MAAEoN,iBAAiB9b,KAAI,IAAIA,MAAK+5B,UAAU,CAAC,IAAI/5B,MAAKiB;AAEtE,QACEyN,MAAAA,MAAEoO,gBAAgBmhD,SAAS,KAC1BvvD,YAAEsR,kBAAkBi+C,SAAS,KAAKA,UAAUj/B,OAAO7yB,WAAW,GAC/D;AACA,UAAI65K,aAAa;AACf,eAAOn1G,MAAQ,SAACn3C,WAAWkoC;AAAAA,uCACM7gE,SAAQk9D,SAAS,CAAC;AAAA;AAAA,MAErD,MAAO,QAAOl9D,SAAQk9D,SAAS;AAAA,IACjC;AAEA,UAAMioH,oBAAoBx3K,MAAAA,MAAEsR,kBAAkBi+C,SAAS,IACnDvvD,MAAAA,MAAE0qB,WAAW,WAAW,IACxB1qB,MAAAA,MAAE+9B,gBACA,CAAC/9B,MAAAA,MAAE69B,gBAAgB;AAAA,MAAE5N,KAAK;AAAA,IAAG,CAAC,GAAGjwB,MAAC,MAAC69B,gBAAgB;AAAA,MAAE5N,KAAK;AAAA,KAAI,CAAC,GAC/D,CAACjwB,MAAAA,MAAE0qB,WAAW,WAAW,CAAC,CAC5B;AAEJ,QAAI4sJ,aAAa;AACf,aAAOn1G,MAAQ,SAACn3C,WAAWkoC;AAAAA;AAAAA,6BAEFskH,iBAAiB;AAAA,uBACvBnlL,SAAQ2N,MAAC,MAAC0qB,WAAW,GAAG,CAAC,CAAC;AAAA,UACvC6kC,SAAS;AAAA;AAAA,IAEhB,WAAUgoH,iBAAiB;AAC1B,aAAOp1G,MAAQ,SAACn3C,WAAWkoC;AAAAA;AAAAA,6BAEF7gE,SAAQmlL,iBAAiB,CAAC;AAAA,UAC7CjoH,SAAS;AAAA;AAAA,IAEjB,OAAO;AACL,aAAO4S,MAAQ,SAACn3C,WAAWkoC;AAAAA,sBACT7gE,SAAQmlL,iBAAiB,CAAC,KAAKjoH,SAAS;AAAA;AAAA,IAE5D;AAAA,EACF;;;;;;;;;;;;ACjDmC;AACjC,UAAMkoH,wBAAwBC;AAG9B1zK,kBAAAA,UAAA0zK,kBAAgB,SAASA,eACvBC,UACAC,YACe;AAAA,UAAAC,sBAAAC,uBAAAC,uBAAAC;AACf,aAAOP,sBAAsBE,UAAU;AAAA,QACrCM,WAAQJ,uBAAED,WAAWK,aAAQ,OAAAJ,uBAAIF,SAASM;AAAAA,QAC1CC,YAASJ,wBAAEF,WAAWM,cAAS,OAAAJ,wBAAIH,SAASO;AAAAA,QAC5CC,cAAWJ,wBAAEH,WAAWO,gBAAW,OAAAJ,wBAAIJ,SAASQ;AAAAA,QAChDC,aAAUJ,wBAAEJ,WAAWQ,eAAUJ,OAAAA,wBAAIL,SAASS;AAAAA,MAChD,CAAC;AAAA,IACF;AAAA,EACH;AAEe,WAASV,gBACtBC,UACAC,YACe;AACf,UAAM;AAAA,MACJxjH;AAAAA,MACAikH,mBAAmBjkH;AAAAA,MACnB4jF,aAAa4/B,WAAWQ;AAAAA,IAC1B,IAAIT;AAEJ,UAAM;AAAA,MACJM;AAAAA,MACAC,YAAY,CAAC,CAACD;AAAAA,MAEdE;AAAAA,MAEAC,aAAapgC;AAAAA,IACf,IAAI4/B;AAEJ,QAAI,CAACM,UAAW,QAAO;AAGvB,QAAID,YAAY,QAAQ,CAACE,aAAa;AACpC,aAAOF;AAAAA,IACT;AAEA,QAAIK,aAAaF,cAAc,OAAOA,aAAa,MAAM;AAEzD,QAAIC,kBAAkB;AACpB,YAAME,qBACJvgC,cAAc,OAAO,IAAIh7I,OAAO,MAAMg7I,aAAa,IAAI,IAAI;AAE7DsgC,oBAAcD,iBAEXpxK,QAAQsxK,oBAAoB,EAAE,EAE9BtxK,QAAQ,UAAU,EAAE;AAAA,IACzB;AAGAqxK,iBAAaA,WAAWrxK,QAAQ,OAAO,GAAG;AAE1C,QAAIkxK,aAAa;AAEf,aAAOA,YAAYG,UAAU,KAAKA;AAAAA,IACpC,OAAO;AACL,aAAOA;AAAAA,IACT;AAAA,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9EA,QAAA5nG,UAAAl3E,cAAA;AACA,QAAAk3B,QAAAl3B,aAAA;AAEA,QAAAg/K,uBAAAh/K,aAAA;AAEA,QAAAi/K,eAAAj/K,mBAAA;AACA,QAAAk/K,yBAAAl/K,6BAAA;AACA,QAAA09K,4BAAA19K,gCAAA;AAWA,QAAAm/K,OAAAn/K,mBAAA;AAGA,QAAAo/K,iBAAAp/K,uBAAA;AASA,QAAAq/K,iBAAAr/K,qBAAA;AAPiE;AAE/DwK,cAAAA,yBAEExK,uBAA2B,EAAC49K;AAAAA,IAChC;AAmCO,aAAS0B,wCACd9oL,OACA;AAAA,MACEinE;AAAAA,MACA54D;AAAAA,MACA06K;AAAAA,MACAh2G;AAAAA,MACAi2G;AAAAA,MACA9D,gBAAgB8D,YAAY,SAAS;AAAA,MAGrCxC,MAAAA;AAAAA,MACAlB,oBAAoBqD,KAAKxB,oBAAoBX,SAAAA,OAAAA,QAAQ,KAAK;AAAA,MAC1D7D,gBAAgBgG,KAAKhG;AAAAA,MACrB4C;AAAAA,MACAnhH;AAAAA,MAEA6kH,oBAEI5tJ,UAAU,CAAC,EAAE6tJ;AAAAA,MACjBC,uBAEI9tJ,UAAU,CAAC,EAAE6tJ;AAAAA,MACjBE;AAAAA,IAC8C,GAChD;AACA,UAAAnE,0BAAAA,6BAA4BC,aAAa;AACzChiI,eAAO,GAAAw8H,qBAAQ,UAAC1/K,KAAI,GAAG,8CAA8C;AACrEA,MAAAA,MAAKsB,KAAK87B,aAAa;AAEvB,YAAMH,QAAOmoJ,GAAAA,0BAAAA,SAA+BplL,OAAMinE,YAAY;AAAA,QAC5Di+G;AAAAA,QACAG,qBAAqB4D;AAAAA,QACrB3D;AAAAA,QACAC;AAAAA,QACAnhH;AAAAA,MACF,CAAC;AAED,UAAI,CAAC2kH,mBAAmB;AACtB,YAAAvG,aAAAA,SAAYxiL,KAAI;AAAA,MAClB;AAEA,OAAA,GAAA0iL,gCAAsB1iL,OAAMi9B,MAAM0lJ,aAAa;AAE/C,UAAI5vG,eAAe,OAAO;AACxB,cAAMs2G,YAAYrpL,MAAKsB,KAAK45B,WAAW21D,KAAKprD,eAAa;AACvD,iBAAOA,UAAUtkC,MAAMA,UAAU;AAAA,QACnC,CAAC;AACD,YAAI,CAACkoL,WAAW;AACdrpL,UAAAA,MAAKykJ,iBACH,cACAz0I,YAAEy1B,UAAUz1B,MAAAA,MAAE21B,iBAAiB,YAAY,CAAC,CAC9C;AAAA,QACF;AAAA,MACF;AAEA,YAAM2jJ,UAAU,CAAE;AAClB,WAAI1E,GAAAA,sCAAW3nJ,IAAI,KAAK,CAAC5uB,QAAQ;AAC/Bi7K,gBAAQ5gL,KAAK6gL,oBAAoBtsJ,MAAMksJ,oBAAoB,CAAC;AAAA,MAC9D;AAEA,YAAMK,WAAWC,+BAA+BzpL,OAAMi9B,IAAI;AAE1D,UAAIusJ,UAAU;AACZvsJ,aAAK6oJ,qBAAqB0D,SAASz7K;AACnCu7K,gBAAQ5gL,KAAK8gL,SAASrgD,SAAS;AAAA,MACjC;AAGAmgD,cAAQ5gL,KACN,GAAGghL,oCACD1pL,OACAi9B,MACA0lJ,eACAsG,mBACAG,6BACF,CACF;AAEA,aAAO;AAAA,QAAEnsJ;AAAAA,QAAMqsJ;AAAAA,MAAS;AAAA,IAC1B;AAMO,aAASK,wBAAwBvgD,aAA2B;AAEjEA,MAAAA,YAAWhvG,QAAQwvJ,YAAU;AAE3BA,eAAOtlC,cAAc;AAAA,MACvB,CAAC;AAAA,IACH;AAMO,aAASulC,YACdxJ,aACAr+E,MACAvvF,MACkB;AAClB,UAAIA,SAAS,QAAQ;AACnB,eAAO;AAAA,MACT;AAEA,UAAIA,SAAS,kBAAkB;AAC7B,eAAOzC,MAAAA,MAAEi2B,eACPo6I,YAAY5gC,IAAI4G,UAAU,wBAAwB,GAClD,CAACrkD,MAAMhyF,MAAC,MAACm4B,eAAe,IAAI,CAAC,CAC/B;AAAA,MACF,WAAW11B,SAAS,gBAAgB;AAClC,eAAO;AAAA,MACT;AAEA,UAAI62H;AACJ,UAAI72H,SAAS,WAAW;AACtB62H,iBAAS;AAAA,MACX,WAAW72H,SAAS,aAAa;AAC/B62H,iBAAS;AAAA,MACX,OAAO;AACL,cAAM,IAAI7xH,MAAM,oBAAoBhF,IAAI,EAAE;AAAA,MAC5C;AAEA,aAAOzC,YAAEi2B,eAAeo6I,YAAY5gC,IAAI4G,UAAU/c,MAAM,GAAG,CAACtnC,IAAI,CAAC;AAAA,IACnE;AAQO,aAAS8nF,6BACdpiD,UACAqiD,gBACAd,oBAAoC,OACpCtG,gBAG2BgG,KAAKhG,eAChC;AAAA,UAAAU;AACA,YAAMj6C,cAAa,CAAE;AAErB,YAAM4gD,iBAAiBh6K,MAAC,MAAC0qB,WAAWqvJ,eAAeh8K,IAAI;AAEvD,iBAAWy5D,aAAauiH,eAAejH,kBAAkB;AACvD,YAAIt7G,cAAcuiH,eAAeh8K,KAAM;AAGvCq7H,QAAAA,YAAW1gI,KACTypE,eAASg3D,8BAA8B;AAAA,UACrC8gD,MAAMziH;AAAAA,UACN0iH,QAAQl6K,MAAAA,MAAEmoD,UAAU6xH,cAAc;AAAA,QACpC,CAAC,CACH;AAAA,MACF;AAEA,YAAMG,gBAAY9G,iBAChBV,cAAcqH,gBAAgBD,eAAexlB,IAAI,MAAC8e,OAAAA,iBAAI2G;AAExD,UAAIf,mBAAmB;AACrB7/C,QAAAA,YAAW1gI,KACT,GAAG0hL,uBAAuB1iD,UAAUqiD,gBAAgB,MAAMpH,aAAa,CACzE;AAAA,MACF;AACA,iBAAW17G,cAAc8iH,eAAehF,mBAAmB;AAEzD37C,QAAAA,YAAW1gI,MACR,CAACsH,MAAC,MAACiO,aAAaksK,YAAY,IACzBh4G,MAAAA,SAASg3D;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,cAQTh3D,MAAAA,SAASg3D,sCAAsC;AAAA,UACjDkhD,SAAS3iD,SAASzgE;AAAAA,UAClBgjH,MAAMhjH;AAAAA,UACNqjH,WAAWt6K,MAAAA,MAAEmoD,UAAUgyH,YAAY;AAAA,QACrC,CAAC,CACH;AAAA,MACF;AACA,UAAIJ,eAAe/E,aAAa;AAC9B,cAAM77C,YAAYohD,uBAChB7iD,UACA13H,MAAAA,MAAEmoD,UAAUgyH,YAAY,GACxBlB,iBACF;AACA9/C,kBAAUv0H,MAAMm1K,eAAe/E,YAAYpwK;AAG3Cw0H,QAAAA,YAAW1gI,KAAKygI,SAAS;AAAA,MAC3B;AACA,aAAOC;AAAAA,IACT;AAQA,UAAMohD,mBAAmB;AAAA,MACvBjsC,UAAUA,CAAC;AAAA,QAAEvqI,SAAAA;AAAAA,QAASizD;AAAAA,QAAYwjH;AAAAA,MAA+B,MAC/Dt4G,MAAAA,SAASg3D,UAAUjmE;AAAAA,QACflvD,QAAO,IAAIizD,UAAU,MAAMwjH,eAAe;AAAA;AAAA,MAEhDC,kBAAkBA,CAAC;AAAA,QAAE12K,SAAAA;AAAAA,QAASizD;AAAAA,QAAYwjH;AAAAA,MAA+B,MACvEt4G,MAAAA,SAASg3D,UAAUjmE;AAAAA,QACflvD,QAAO,KAAKizD,UAAU,QAAQwjH,eAAe;AAAA;AAAA,MAEnDhE,MAAMA,CAAC;AAAA,QAAEzyK,SAAAA;AAAAA,QAASizD;AAAAA,QAAYwjH;AAAAA,MAA+B,MAC3Dt4G,MAAAA,SAASg3D,UAAUjmE;AAAAA,8BACOlvD,QAAO,MAAMizD,UAAU;AAAA;AAAA;AAAA,mBAGlCwjH,eAAe;AAAA;AAAA;AAAA;AAAA,IAIjC;AAED,aAASL,uBACPntJ,MACAyqG,UACAuhD,mBACAtG,eACe;AAAA,UAAAW;AACf,UAAIrhJ,aAA0BjyB,MAAC,MAAC0qB,WAAWgtG,SAAS35H,IAAI;AACxDk0B,MAAAA,cAASqhJ,kBAAGX,cAAc1gJ,YAAWylG,SAAS68B,IAAI,MAAC+e,OAAAA,kBAAIrhJ;AAEvD,YAAM;AAAA,QAAEuhJ;AAAAA,MAAiB,IAAIvmJ;AAC7B,aAAOnmB,MAAM2/C,KAAKixE,SAASo9C,WAAW,CAAC,CAAC79G,YAAYmB,UAAU,MAAM;AAClE,YAAIqiH,kBAAgCz6K,MAAAA,MAAEmoD,UAAUl2B,UAAS;AACzD,YAAImmC,eAAe,aAAas/D,SAAS67C,YAAY,eAAgB;AAAA,iBAE1DC,iBAAiBz0K,IAAIq5D,UAAU,GAAG;AAC3CqiH,4BAAkBz6K,MAAAA,MAAEy4B,iBAClBgiJ,iBACAz6K,MAAC,MAAC83B,cAAcsgC,UAAU,GAC1B,IACF;AAAA,QACF,OAAO;AACLqiH,4BAAkBz6K,MAAAA,MAAEy4B,iBAClBgiJ,iBACAz6K,MAAAA,MAAE0qB,WAAW0tC,UAAU,CACzB;AAAA,QACF;AACA,cAAMuiH,WAA0B;AAAA,UAC9B32K,SAASipB,KAAKgqC;AAAAA,UACdA;AAAAA,UACAwjH;AAAAA,QACD;AACD,YAAIxB,qBAAqBj5K,MAAC,MAACiO,aAAawsK,eAAe,GAAG;AACxD,cAAIjH,iBAAiBz0K,IAAIk4D,UAAU,GAAG;AACpC,mBAAOujH,iBAAiBE,iBAAiBC,QAAQ;AAAA,UACnD,OAAO;AACL,mBAAOH,iBAAiBjsC,SAASosC,QAAQ;AAAA,UAC3C;AAAA,QACF,OAAO;AACL,iBAAOH,iBAAiB/D,KAAKkE,QAAQ;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,IACH;AAKA,aAASpB,oBACP7hD,UACAyhD,uBAAuC,OACvC;AACA,cACEA,uBACIh3G,MAAAA,SAASg3D;AAAAA;AAAAA,UAGTh3D,MAAQ,SAACg3D;AAAAA;AAAAA;AAAAA;AAAAA,SAKb;AAAA,QAAEkhD,SAAS3iD,SAASzgE;AAAAA,MAAW,CAAC;AAAA,IACpC;AAKA,aAASsjH,uBACP7iD,UACAzlG,YACAgnJ,mBACA;AACA,cACEA,oBACI92G,MAAAA,SAASg3D;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,UAeTh3D,MAAQ,SAACg3D;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,OAcb;AAAA,QACAmhD,WAAWroJ;AAAAA,QACXooJ,SAAS3iD,SAASzgE;AAAAA,QAClB2jH,kBAAkBljD,SAASo+C,sBACvB3zG,GAAAA,MAAQ;AAAA;AAAA,YAEJ;AAAA,UAAE04G,cAAcnjD,SAASo+C;AAAAA,QAAmB,CAAC,IACjD;AAAA,MACN,CAAC;AAAA,IACH;AAOA,aAAS2D,+BACPpJ,aACA34C,UACA;AACA,YAAMojD,eAAez6K,uBAAOktD,OAAO,IAAI;AACvC,iBAAW0jF,QAAQvZ,SAASvoG,MAAMvH,OAAM,GAAI;AAC1C,mBAAW7pB,SAAQkzI,KAAKp8D,OAAO;AAC7BimG,uBAAa/8K,KAAI,IAAI;AAAA,QACvB;AAAA,MACF;AAEA,UAAIg9K,cAAc;AAClB,iBAAW9pC,QAAQvZ,SAASnlI,OAAOq1B,OAAM,GAAI;AAC3C,mBAAWqvC,cAAcg6E,KAAK6jC,UAAU5+K,KAAI,GAAI;AAC9C4kL,uBAAa7jH,UAAU,IAAI;AAAA,QAC7B;AACA,mBAAWA,cAAcg6E,KAAK8jC,mBAAmB;AAC/C+F,uBAAa7jH,UAAU,IAAI;AAAA,QAC7B;AAEA8jH,sBAAcA,eAAe,CAAC,CAAC9pC,KAAK+jC;AAAAA,MACtC;AAEA,UAAI,CAAC+F,eAAe16K,OAAOnK,KAAK4kL,YAAY,EAAEr9K,WAAW,EAAG,QAAO;AAEnE,YAAMM,OAAOsyK,YAAYjgH,MAAMqhF,sBAAsB,aAAa;AAElE,aAAOqpC,aAAa76K;AAEpB,aAAO;AAAA,QACLlC,MAAMA,KAAKA;AAAAA,QACXo7H,WAAWn5H,YAAEw6B,oBAAoB,OAAO,CACtCx6B,MAAC,MAAC06B,mBAAmB38B,MAAMiC,MAAC,MAACosD,YAAY0uH,YAAY,CAAC,CAAC,CACxD;AAAA,MACF;AAAA,IACH;AAMA,aAASpB,oCACPrJ,aACA34C,UACAi7C,eACAsG,oBAAoC,OACpCG,gCAAgD,OAChD;AACA,YAAM4B,iBAAsD,CAAE;AAE9D,iBAAW,CAACxjH,WAAWy5E,IAAI,KAAKvZ,SAASvoG,OAAO;AAC9C,YAAI8hH,KAAK1jH,SAAS,SAAU;AAAA,iBAEjB0jH,KAAK1jH,SAAS,WAAW;AAClCytJ,yBAAetiL,KAAK,CAGlBu4I,KAAKp8D,MAAM,CAAC,GACZomG,mBAAmBvjD,UAAUuZ,KAAKp8D,OAAO70E,MAAC,MAAC0qB,WAAW8sC,SAAS,CAAC,CAAC,CAClE;AAAA,QACH,WAAW,CAAC4hH,+BAA+B;AACzC,qBAAWniH,cAAcg6E,KAAKp8D,OAAO;AACnCmmG,2BAAetiL,KAAK,CAACu+D,YAAY,IAAI,CAAC;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAEA,iBAAWg6E,QAAQvZ,SAASnlI,OAAOq1B,OAAM,GAAI;AAC3C,YAAI,CAACqxJ,mBAAmB;AACtB,gBAAMiC,sBAAsBd,uBAC1B1iD,UACAuZ,MACA,OACA0hC,aACF;AACA,gBAAMmC,YAAY,CAAC,GAAG7jC,KAAK6jC,UAAU5+K,KAAI,CAAE;AAC3C,mBAASsH,IAAI,GAAGA,IAAI09K,oBAAoBz9K,QAAQD,KAAK;AACnDw9K,2BAAetiL,KAAK,CAACo8K,UAAUt3K,CAAC,GAAG09K,oBAAoB19K,CAAC,CAAC,CAAC;AAAA,UAC5D;AAAA,QACF;AACA,YAAI,CAAC47K,+BAA+B;AAClC,qBAAWniH,cAAcg6E,KAAK8jC,mBAAmB;AAC/CiG,2BAAetiL,KAAK,CAACu+D,YAAY,IAAI,CAAC;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAKA+jH,qBAAetkC,KAAK,CAAC,CAACtgJ,CAAC,GAAG,CAACC,CAAC,MAAM;AAChC,YAAID,IAAIC,EAAG,QAAO;AAClB,YAAIA,IAAID,EAAG,QAAO;AAClB,eAAO;AAAA,MACT,CAAC;AAED,YAAM+kL,UAAU,CAAE;AAClB,UAAI/B,+BAA+B;AACjC,mBAAW,CAAA,EAAGgC,aAAa,KAAKJ,gBAAgB;AAC9CG,kBAAQziL,KAAK0iL,aAAa;AAAA,QAC5B;AAAA,MACF,OAAO;AAGL,cAAMC,YAAY;AAClB,iBAAS79K,IAAI,GAAGA,IAAIw9K,eAAev9K,QAAQD,KAAK69K,WAAW;AACzD,cAAIC,2BAA2B,CAAE;AACjC,mBAASh7J,IAAI,GAAGA,IAAI+6J,aAAa79K,IAAI8iB,IAAI06J,eAAev9K,QAAQ6iB,KAAK;AACnE,kBAAM,CAAC22C,YAAYmkH,aAAa,IAAIJ,eAAex9K,IAAI8iB,CAAC;AACxD,gBAAI86J,kBAAkB,MAAM;AAC1B,kBAAIE,yBAAyB79K,SAAS,GAAG;AACvC09K,wBAAQziL,KACNuiL,mBACEvjD,UACA4jD,0BACAjL,YAAYjgH,MAAM5I,mBAAkB,CACtC,CACF;AAGA8zH,2CAA2B,CAAE;AAAA,cAC/B;AACAH,sBAAQziL,KAAK0iL,aAAa;AAAA,YAC5B,OAAO;AACLE,uCAAyB5iL,KAAKu+D,UAAU;AAAA,YAC1C;AAAA,UACF;AACA,cAAIqkH,yBAAyB79K,SAAS,GAAG;AACvC09K,oBAAQziL,KACNuiL,mBACEvjD,UACA4jD,0BACAjL,YAAYjgH,MAAM5I,mBAAkB,CACtC,CACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,aAAO2zH;AAAAA,IACT;AAYA,UAAMI,eAAe;AAAA,MACnBxuJ,UAAUA,CAAC;AAAA,QAAE/oB,SAAAA;AAAAA,QAASjG;AAAAA,QAAM5M,OAAAA;AAAAA,MAAkB,MAC5CgxE,MAAAA,SAASn3C,WAAWkoC,MAAMlvD,QAAO,KAAKjG,IAAI,QAAQ5M,MAAK;AAAA,MACzD8O,SAASA,CAAC;AAAA,QAAE+D,SAAAA;AAAAA,QAASjG;AAAAA,QAAM5M,OAAAA;AAAAA,MAAkB,MAC3CgxE,MAAAA,SAASn3C,WAAWkoC,MAAMlvD,QAAO,IAAIjG,IAAI,MAAM5M,MAAK;AAAA,MACtDqqL,QAAQA,CAAC;AAAA,QAAEx3K,SAAAA;AAAAA,QAASjG;AAAAA,QAAM5M,OAAAA;AAAAA,MAAiB,MACzCgxE,MAAAA,SAASn3C,WAAWkoC;AAAAA,8BACMlvD,QAAO,MAAMjG,IAAI;AAAA;AAAA;AAAA;AAAA,YAInCA,IAAI,QAAQ5M,MAAK;AAAA,IAC5B;AAED,aAAS8pL,mBACPvjD,UACAg8C,aACA+H,UACA;AACA,YAAM;AAAA,QAAEjI;AAAAA,QAAkBv8G,YAAYjzD;AAAAA,MAAQ,IAAI0zH;AAClD,aAAO13H,MAAC,MAAC82B,oBACP48I,YAAY5/G,OAAO,CAAC3iE,QAAO4M,SAAS;AAClC,cAAMkuB,SAAS;AAAA,UACbjoB,SAAAA;AAAAA,UACAjG;AAAAA,UACA5M,OAAAA;AAAAA,QACD;AAED,YAAI4M,SAAS,aAAa;AACxB,iBAAOw9K,aAAaC,OAAOvvJ,MAAM;AAAA,QACnC;AAEA,YAAIunJ,iBAAiBz0K,IAAIhB,IAAI,GAAG;AAC9B,iBAAOw9K,aAAaxuJ,SAASd,MAAM;AAAA,QACrC;AAEA,eAAOsvJ,aAAat7K,QAAQgsB,MAAM;AAAA,MACnC,GAAEwvJ,QAAQ,CACb;AAAA,IACF;AAAA;;;;;;;ACplBmC;AACjCz3K,kBAAqB,gBAAG,MACtBxK,aAAAA,EAA2Ck+K;AAAAA,EAC/C;;;;;;;;;;;ACLA,WAAAj+C,UAAA;AAAA,UAAAwX,OAAAz3I,aAAA;AAAAigI,yBAAA;AAAA,aAAAwX;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAA9+E,YAAA;AAAA,UAAA8+E,OAAAz3I,aAAA;AAAA24D,2BAAA;AAAA,aAAA8+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,WAAAra,aAAA;AAAA,UAAAqa,OAAAz3I,aAAA;AAAAo9H,4BAAA;AAAA,aAAAqa;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,WAAAl+E,KAAA;AAAA,UAAAk+E,OAAAz3I,aAAA;AAAAu5D,oBAAA;AAAA,aAAAk+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,WAAAyqC,UAAA;AAAA,UAAAzqC,OAAAz3I,cAAA;AAAAkiL,yBAAA;AAAA,aAAAzqC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAKA,MAAA0qC,iBAAAniL,qBAAA;AAAuH,QAAA;AAAA,IAP9G2uD,WAAAA;AAAAA,IAAW5yB;AAAAA,EAAoB,IAAAw9B,GAAA;AASxC,QAAM6oH,eAA0D;AAAA,IAC9D9wH,MAAM96D,OAAMC,QAAO;AACjB,YAAM2U,MAAM5U,MAAKsB,KAAKsT;AACtB,UAAIA,KAAK;AACP3U,QAAAA,OAAM2U,MAAMA;AACZ5U,QAAAA,MAAK04E,KAAM;AAAA,MACb;AAAA,IACF;AAAA,EACD;AAAA,EAEc,MAAM1xC,KAAK;AAAA,IAoBxB7yB,YAAY1T,UAAc;AAAA,MAAE4M;AAAAA,MAAM61D;AAAAA,MAAK2oH;AAAAA,IAAyB,GAAG;AAAA,WAnBnErkC,OAA8B,oBAAI7wF,IAAK;AAAA,WACvCluD,OAAI;AAAA,WACJ01B,eAAgD,CAAE;AAAA,WAClDn+B,OAAI;AAAA,WACJkjE,MAAG;AAAA,WACH9C,QAAK;AAAA,WACLsnE,WAAmC,CAAE;AAAA,WACrCr6H,OAAe;AAAE,WACjBw+K,WAAQ;AAAA,WAERpsC,MAAqC;AAAA,QAEnCt/I,MAAM;AAAA,QACNk2K,SAASA,MAAM,KAAKhpK;AAAAA,QACpBquK,UAAUA,MAAM,KAAKt7G;AAAAA,QACrBimF,WAAW,KAAKA,UAAU1uF,KAAK,IAAI;AAAA,QACnC2qF,YAAY,KAAK+nB,oBAAoB1yG,KAAK,IAAI;AAAA,MAC/C;AAGC,WAAKlvD,OAAOhI;AACZ,WAAK4M,OAAOA;AACZ,WAAK61D,MAAMA;AACX,WAAK2oH,WAAWA;AAEhB,WAAK7rL,OAAOytK,YAAQ,SAACv9J,IAAI;AAAA,QACvBuvI,KAAK,KAAKA;AAAAA,QACV5F,YAAY;AAAA,QACZp9G,QAAQ,KAAKymC;AAAAA,QACbgiG,WAAW,KAAKhiG;AAAAA,QAChBniE,KAAK;AAAA,MACN,CAAA,EAAEk7G,WAAmC;AACtC,WAAK77C,QAAQ,KAAKpgE,KAAKogE;AAAAA,IACzB;AAAA,IAOA,IAAI0rH,UAAkB;AACpB,YAAM;AAAA,QAAEzuJ;AAAAA,MAAY,IAAI,KAAKr9B,KAAKsB;AAClC,aAAO+7B,cAAcA,YAAYl8B,QAAQ;AAAA,IAC3C;AAAA,IACA,IAAI2qL,QAAQ3qL,QAAe;AACzB,UAAIA,QAAO;AACT,aAAKnB,KAAKkQ,IAAI,aAAa,EAAE21I,YAAYtgH,qBAAqBpkC,MAAK,CAAC;AAAA,MACtE,OAAO;AACL,aAAKnB,KAAKkQ,IAAI,aAAa,EAAE41I,OAAQ;AAAA,MACvC;AAAA,IACF;AAAA,IAEAx4I,IAAIvM,MAAc4zB,KAAc;AACK;AACjC,YAAI5zB,SAAQ,oBAAoB;AAC9B,gBAAM,IAAI0W,MACR,oUAKF;AAAA,QACF;AAAA,MACF;AAEA,WAAK+vI,KAAKl6I,IAAIvM,MAAK4zB,GAAG;AAAA,IACxB;AAAA,IAEAzkB,IAAInP,MAAmB;AACrB,aAAO,KAAKymJ,KAAKt3I,IAAInP,IAAG;AAAA,IAC1B;AAAA,IAEAgO,IAAIhO,MAAuB;AACzB,aAAO,KAAKymJ,KAAKz4I,IAAIhO,IAAG;AAAA,IAC1B;AAAA,IASAgrL,gBAAgBh+K,MAAci+K,cAAuC;AACnE,UAAIziD;AACJ,UAAI;AACFA,qBAAaE,QAAO,EAACF,WAAWx7H,IAAI;AAAA,MACrC,SAAQoL,KAAK;AACZ,YAAIA,IAAI9L,SAAS,uBAAwB,OAAM8L;AAE/C,eAAO;AAAA,MACT;AAEA,UAAI,OAAO6yK,iBAAiB,SAAU,QAAO;AAmB7C,UAAIC,QAAKA,EAAE7zJ,MAAM4zJ,YAAY,EAAGA,gBAAe,IAAIA,YAAY;AAOxD;AACL,eACE,CAACC,UAAOC,WAAW,IAAI3iD,UAAU,IAAIyiD,YAAY,KACjD,CAACC,UAAOC,WAAW,WAAWF,YAAY;AAAA,MAE9C;AAAA,IACF;AAAA,IAEA3lC,UAAUt4I,MAA4B;AACpC,YAAMiyD,SAAS,KAAK7hC,aAAapwB,IAAI;AACrC,UAAIiyD,OAAQ,QAAO7H,WAAU6H,MAAM;AAEnC,YAAM9jC,YAAY,KAAKhsB,IAAI,iBAAiB;AAC5C,UAAIgsB,WAAW;AACb,cAAMhJ,MAAMgJ,UAAUnuB,IAAI;AAC1B,YAAImlB,IAAK,QAAOA;AAAAA,MAClB;AAGAu2G,cAAO,EAACF,WAAWx7H,IAAI;AAEvB,YAAM+tD,MAAO,KAAK39B,aAAapwB,IAAI,IACjC,KAAKqyD,MAAMqhF,sBAAsB1zI,IAAI;AAEvC,YAAM+7H,eAAgD,CAAE;AACxD,iBAAWqiD,OAAO1iD,QAAO,EAACyP,gBAAgBnrI,IAAI,GAAG;AAC/C+7H,qBAAaqiD,GAAG,IAAI,KAAK9lC,UAAU8lC,GAAG;AAAA,MACxC;AAEA,YAAM;AAAA,QAAE/7J;AAAAA,QAAO7oB,SAAAA;AAAAA,MAAQ,IAAIkiI,QAAO,EAACv5H,IACjCnC,MACAo+K,SAAOriD,aAAaqiD,GAAG,GACvBrwH,IAAI/tD,MACJsC,OAAOnK,KAAK,KAAKk6D,MAAMukF,eAAc,CAAE,CACzC;AAEAp9I,MAAAA,SAAQ6yB,QAAQrsB,CAAAA,UAAQ;AACtB,YAAI,KAAK/N,KAAKogE,MAAMwhF,WAAW7zI,OAAM,IAAoB,GAAG;AAC1D,eAAK/N,KAAKogE,MAAM09E,OAAO/vI,KAAI;AAAA,QAC7B;AAAA,MACF,CAAC;AAEDqiB,YAAMgK,QAAQ94B,CAAAA,UAAQ;AAEpBA,QAAAA,MAAKk/J,WAAW;AAAA,MAClB,CAAC;AAED,YAAM4rB,QAAQ,KAAKpsL,KAAKykJ,iBAAiB,QAAQr0H,KAAK;AAGtD,iBAAWpwB,SAAQosL,OAAO;AACxB,YAAIpsL,MAAK2f,sBAAuB,EAAE,MAAKygD,MAAMogF,oBAAoBxgJ,KAAI;AAAA,MACvE;AAEA,aAAO87D;AAAAA,IACT;AAAA,IAEAuuG,oBACE/oK,OACAksK,KACA6e,SAAuBz6G,aAChB;AACP,UAAIh9D,MAAMtT,SAAAA,OAAAA,SAAAA,MAAMsT;AAEhB,UAAI,CAACA,OAAOtT,OAAM;AAChB,cAAMrB,SAA2C;AAAA,UAC/C2U,KAAK;AAAA,QACN;AACD,SAAAypD,GAAAA,UAAAA,EAAAA,SAAS/8D,OAAMsqL,cAAc,KAAKxrH,OAAOngE,MAAK;AAC9C2U,cAAM3U,OAAM2U;AAEZ,YAAI03K,MACF;AACF,YAAI13K,IAAK03K,QAAO;AAEhB9e,eAAO,KAAK8e,GAAG;AAAA,MACjB;AAEA,UAAI13K,KAAK;AACP,cAAM;AAAA,UAAEsB,gBAAgB;AAAA,QAAM,IAAG,KAAKzN;AAEtC+kK,eACE,QACAx3J,GAAAA,+BACE,KAAK3I,MACL;AAAA,UACE2H,OAAO;AAAA,YACL9U,MAAM0U,IAAII,MAAM9U;AAAAA,YAChB6U,QAAQH,IAAII,MAAMD,SAAS;AAAA,UAC5B;AAAA,UACDG,KACEN,IAAIM,OAAON,IAAII,MAAM9U,SAAS0U,IAAIM,IAAIhV,OAClC;AAAA,YACEA,MAAM0U,IAAIM,IAAIhV;AAAAA,YACd6U,QAAQH,IAAIM,IAAIH,SAAS;AAAA,UAC3B,IACApB;AAAAA,QACR,GACA;AAAA,UAAEuC;AAAAA,QAAc,CAClB;AAAA,MACJ;AAEA,aAAO,IAAIm2K,OAAO7e,GAAG;AAAA,IACvB;AAAA,EACF;AAACx5J,OAAAA,UAAAgzB;AAEkC;AAEjCA,SAAK4wB,UAAU20H,YAAY,SAASA,YAAY;AAC9C,YAAM,IAAI90K,MACR,kOAIF;AAAA,IACD;AAEDuvB,SAAK4wB,UAAU40H,oBAAoB,SAASA,oBAAoB;AAC9D,YAAM,IAAI/0K,MACR,0EACF;AAAA,IACD;AAE8B;AAE7BuvB,WAAK4wB,UAAU8vH,gBAAgB,SAASA,iBAAgB;AACtD,eAAO+E,eAAO/E,cAAe,EAAC,KAAKj/K,MAAM,KAAKA,IAAI;AAAA,MACnD;AAAA,IACH;AAAA,EACF;;;;;;;;;;;;ACjRA,WAAAghI,UAAA;AAAA,UAAAwX,OAAAz3I,aAAA;AAAAigI,yBAAA;AAAA,aAAAwX;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAw5B,aAAA;AAAA,UAAAx5B,OAAAz3I,aAAA;AAAAixK,4BAAA;AAAA,aAAAx5B;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAA5X,YAAA;AAAA,UAAA4X,OAAAz3I,aAAA;AAAA6/H,2BAAA;AAAA,aAAA4X;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAl+E,KAAA;AAAA,UAAAk+E,OAAAz3I,aAAA;AAAAu5D,oBAAA;AAAA,aAAAk+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAoBsB,QAAA;AAAA,IAnBpBh8G;AAAAA,IACAE;AAAAA,IACAE;AAAAA,IACAQ;AAAAA,IACAI;AAAAA,IACAkyB,WAAAA;AAAAA,IACA7xB;AAAAA,IACA0F;AAAAA,IACAE;AAAAA,IACApF;AAAAA,IACAS;AAAAA,IACA7M,YAAAA;AAAAA,IACA+N;AAAAA,IACAK;AAAAA,IACAnN;AAAAA,IACAmM;AAAAA,IACA/D;AAAAA,IACAyG;AAAAA,IACAE;AAAAA,EAAkB,IAAAq4B,GAAA;AAOpB,QAAM2pH,kBAAmB7oH,kBACvBsO,UAAAA,EAAAA,QAASg3D;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA;AAAAA,IAYPtlE,YAAY;AAEhB,WAAS8oH,YAAYC,WAA2B;AAC9C,UAAM3qJ,aAAYvH,YAAW,cAAc;AAE3C,UAAMS,OAAsB,CAAE;AAC9B,UAAM+pI,YAAY39H,mBAChB,MACA,CAAC7M,YAAW,QAAQ,CAAC,GACrBmL,eAAe1K,IAAI,CACrB;AACA,UAAMugC,OAAO//B,QAAQ,CACnBmL,oBACEb,eAAei/H,WAAW,CAExB5+H,sBACEjB,iBACE,OACAtB,gBAAgB,UAAUrJ,YAAW,QAAQ,CAAC,GAC9CoN,cAAc,WAAW,CAC3B,GACApN,YAAW,MAAM,GACjBA,YAAW,QAAQ,CACrB,CAAC,CACF,CACH,CAAC,CACF;AAEDS,SAAKzyB,KACH8hC,oBAAoB,OAAO,CACzBE,mBACEzI,YACAkD,qBACE,KACAsD,iBAAiB/N,YAAW,QAAQ,GAAGuH,UAAS,GAChD6G,iBAAiB,EAAE,CACrB,CACF,CAAC,CACF,CACH;AAEA+jJ,iBAAa1xJ,MAAM8G,YAAW2qJ,SAAS;AAEvC,WAAOlxH;AAAAA,EACT;AAEA,WAASoxH,YAAYF,WAA2B;AAC9C,UAAMzxJ,OAAsB,CAAE;AAC9B,UAAM4xJ,OAAOF,aAAa1xJ,MAAM,MAAMyxJ,SAAS;AAE/CzxJ,SAAK1B,QACHuS,uBACE,MACA37B,OAAOnK,KAAK6mL,IAAI,EAAE35K,IAAIrF,UAAQ;AAC5B,aAAOm+B,gBAAgBisB,WAAU40H,KAAKh/K,IAAI,CAAC,GAAG2sB,YAAW3sB,IAAI,CAAC;AAAA,IAC/D,CAAA,CACH,CACF;AAEA,WAAO4tB,QAAQR,MAAM,CAAE,GAAE,QAAQ;AAAA,EACnC;AAEA,WAAS6xJ,SAASJ,WAA2B;AAC3C,UAAM3qJ,aAAYvH,YAAW,cAAc;AAE3C,UAAMS,OAAsB,CAAE;AAC9BA,SAAKzyB,KACH8hC,oBAAoB,OAAO,CACzBE,mBAAmBzI,YAAWvH,YAAW,QAAQ,CAAC,CAAC,CACpD,CACH;AAEAmyJ,iBAAa1xJ,MAAM8G,YAAW2qJ,SAAS;AAEvC,WAAOjxJ,QAAQ,CACb+wJ,gBAAgB;AAAA,MACdO,oBAAoBvyJ,YAAW,QAAQ;AAAA,MACvCwyJ,mBAAmB/nJ,qBACjB,KACAsD,iBAAiB/N,YAAW,MAAM,GAAGuH,UAAS,GAC9C6G,iBAAiB,CAAA,CAAE,CACrB;AAAA,MACAqkJ,kBAAkBzyJ,YAAW,SAAS;AAAA,MACtC0yJ,eAAenoJ,gBAAgB,CAAC6C,cAAc,SAAS,CAAC,CAAC;AAAA,MACzDulJ,cAAclyJ;AAAAA,MACdmyJ,UAAU5yJ,YAAW,MAAM;AAAA,IAC5B,CAAA,CAAC,CACH;AAAA,EACH;AAEA,WAAS6yJ,SAASX,WAA2B;AAC3C,UAAM3qJ,aAAYvH,YAAW,cAAc;AAE3C,UAAMS,OAAsB,CAAE;AAC9BA,SAAKzyB,KACH8hC,oBAAoB,OAAO,CACzBE,mBAAmBzI,YAAW6G,iBAAiB,CAAA,CAAE,CAAC,CAAC,CACpD,CACH;AACA,UAAM4yB,OAAO//B,QAAQR,IAAI;AACzB0xJ,iBAAa1xJ,MAAM8G,YAAW2qJ,SAAS;AACvCzxJ,SAAKzyB,KAAKo+B,oBAAoB7E,UAAS,CAAC;AACxC,WAAOy5B;AAAAA,EACT;AAaA,WAASmxH,aACP1xJ,MACA8G,YACA2qJ,WACA;AACA,UAAMY,qBAAsBz/K,UAAiB;AAC3C,aAAOk0B,aACHwG,iBAAiBxG,YAAWvH,YAAW3sB,IAAI,CAAC,IAC5C2sB,YAAW,IAAI3sB,IAAI,EAAE;AAAA,IAC1B;AAED,UAAMg/K,OAA6D,CAAE;AACrEtjD,cAAQ5mI,KAAKu3B,QAAQ,SAAUrsB,MAAM;AACnC,UAAI6+K,aAAa,CAACA,UAAU/0J,SAAS9pB,IAAI,EAAG;AAE5C,YAAM+qI,MAAOi0C,KAAKh/K,IAAI,IAAIy/K,mBAAmBz/K,IAAI;AAEjD,YAAM;AAAA,QAAEqiB;AAAAA,MAAM,IAAIq5G,QAAO,EAACv5H,IACxBnC,MACAy/K,oBACAvrJ,aAAY,OAAO,IAAIl0B,IAAI,IAC3B,IACAk0B,aACI,CAACihC,KAAK+D,YAAYwmH,gCAAgC;AAChDA,oCAA4BnsL,CAAAA,UAC1B6jC,qBAAqB,KAAK2zG,KAAKx3I,KAAI,CACrC;AACA4hE,YAAI/nC,KAAKzyB,KACPo+B,oBACE3B,qBAAqB,KAAK2zG,KAAKp+G,YAAWusC,UAAU,CAAC,CACvD,CACF;AAAA,MACD,IACD,IACN;AAEA9rC,WAAKzyB,KAAK,GAAG0nB,KAAK;AAAA,IACpB,CAAC;AACD,WAAO28J;AAAAA,EACT;AACe,WAAA11K,SACbu1K,WACAc,aAAkD,UAClD;AACA,QAAIhyH;AAEJ,UAAMl5D,SAAQ;AAAA,MACZ4hC,QAAQuoJ;AAAAA,MACRhrL,QAAQmrL;AAAAA,MACRa,KAAKX;AAAAA,MACL5N,KAAKmO;AAAAA,IACN,EAACG,UAAU;AAEZ,QAAIlrL,QAAO;AACTk5D,aAAOl5D,OAAMoqL,SAAS;AAAA,IACxB,OAAO;AACL,YAAM,IAAIn1K,MAAM,2BAA2Bi2K,UAAU,EAAE;AAAA,IACzD;AAEA,YAAOxxJ,GAAAA,WAAS,EAAA,SAACw/B,IAAI,EAAEruD;AAAAA,EACzB;;;;;;;;;;;;;;;;;;;;;;AC7MO,WAASugL,kBAEdC,SACe;AACf,WAAO;AAAA,EACT;AAGO,YAAUC,gBAAgBC,UAA4C;AAC3E,WAAO;AAAA,MACLA;AAAAA,MACAC,aAAa,CAAE;AAAA,MACfC,KAAK;AAAA,MACLC,WAAW;AAAA,IACZ;AAAA,EACH;AAGO,YAAUC,mBAEfC,SAEAC,SAEAC,QACyB;AACzB,WAAO;AAAA,MAAE5rL,QAAQ;AAAA,MAAMu5D,QAAQ;AAAA,IAAM;AAAA,EACvC;AAGO,YAAUsyH,eAEfr0K,SAEAm0K,SAEAC,QAC4B;AAC5B,WAAO;AAAA,EACT;AAGO,YAAUE,WACfzgL,MACAmM,SAEAm0K,SAEAC,QACqB;AACrB,UAAM,IAAI72K,MAAM,eAAe1J,IAAI,gBAAgBmM,OAAO,eAAe;AAAA,EAC3E;AAGO,YAAUu0K,sBAEfv0K,SACwB;AACxB,WAAO;AAAA,EACT;AAE4ClG,eAAA,wBAAG,CAAA;AAOxC,WAAS06K,cAAc3gL,MAAcmM,SAAkC;AAC5E,WAAO;AAAA,EACT;AAGO,WAASy0K,cAAc5gL,MAAcmM,SAAkC;AAC5E,WAAO;AAAA,EACT;AAEO,WAAS00K,WACd7gL,MACAmM,SAIC;AACD,UAAM,IAAIzC,MACR,sBAAsB1J,IAAI,gBAAgBmM,OAAO,eACnD;AAAA,EACF;AAEO,WAAS20K,WACd9gL,MACAmM,SAIC;AACD,UAAM,IAAIzC,MACR,sBAAsB1J,IAAI,gBAAgBmM,OAAO,eACnD;AAAA,EACF;;;;;;;;;;;;AChHO,WAAS40K,OAAOC,eAAuB,eAAuB;AACnE,WAAO5nL,QAAQwJ,IAAIq+K,aAAa7nL,QAAQwJ,IAAIs+K,YAAYF;AAAAA,EAC1D;;;;;;;;;ACEA,QAAM,gBAAgB,OAAO,IAAI,kBAAkB;AACnD,QAAM,kBAAkB,OAAO,IAAI,oBAAoB;AAEvD,QAAM,yBAAyB;AAC/B,QAAM,2BAA2B;AACjC,QAAM,wBAAwB;AAC9B,QAAM,wBAAwB;AAC9B,QAAM,8BAA8B;AAEtB,YAAG,OAAO;AAAA,IACtB,SAASG,SAAQ,UAAU;AACzB,UAAI,QAAQ;AACZ,UAAI,OAAO,aAAa,YAAY;AAClC,gBAAQ,aAAa,QAAQ;AAAA,MACnC,OAAW;AACL,gBAAQ,cAAc,QAAQ;AAAA,MACpC;AAEI,aAAO,OAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,IACnD;AAAA,IACD;AAAA,MACE,KAAK,eAAe;AAAA,QAClB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM,SAAS,MAAM;AACnB,gBAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,CAAC;AAChC,iBAAO,MAAM,IAAI,CAAA1rL,UAAQ,aAAaA,KAAI,CAAC;AAAA,QAC5C;AAAA,QACD,OAAO,SAAS,MAAM,SAAS,QAAQ;AACrC,gBAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,CAAC;AAEhC,cAAI,MAAM,WAAW,GAAG;AACtB,oBAAQ,QAAO,EAAG,KAAK,MAAM,QAAQ,CAAE,CAAA,CAAC;AACxC;AAAA,UACV;AAEQ,cAAI,QAAQ;AACZ,gBAAM,UAAU,MAAM,IAAI,MAAM,MAAS;AACzC,gBAAM,QAAQ,CAACA,OAAM,MAAM;AACzB;AAAA,cACEA;AAAA,cACA,SAAO;AACL,wBAAQ,CAAC,IAAI;AACb,yBAAS;AAET,oBAAI,UAAU,QAAQ,OAAQ,SAAQ,OAAO;AAAA,cAC9C;AAAA,cACD;AAAA,YACD;AAAA,UACX,CAAS;AAAA,QACF;AAAA,MACP,CAAK;AAAA,MACD,MAAM,eAAe;AAAA,QACnB,MAAM;AAAA,QACN,OAAO;AAAA,QACP,MAAM,SAAS,MAAM;AACnB,gBAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,CAAC;AAChC,cAAI,MAAM,WAAW,GAAG;AACtB,kBAAM,UAAU,6BAA6B,qBAAqB;AAAA,UAC5E;AAEQ,iBAAO,aAAa,MAAM,CAAC,CAAC;AAAA,QAC7B;AAAA,QACD,OAAO,SAAS,MAAM,SAAS,QAAQ;AACrC,gBAAM,QAAQ,MAAM,KAAK,KAAK,CAAC,CAAC;AAChC,cAAI,MAAM,WAAW,GAAG;AACtB,kBAAM,UAAU,6BAA6B,qBAAqB;AAAA,UAC5E;AAEQ,qBAAWA,SAAQ,OAAO;AACxB,0BAAcA,OAAM,SAAS,MAAM;AAAA,UAC7C;AAAA,QACO;AAAA,MACP,CAAK;AAAA,IACL;AAAA,EACC;AAMD,WAAS,gBAAgB,OAAO;AAC9B,UAAM,MAAM;AAAA,MACV,MAAM,YAAY,MAAM;AACtB,eAAO,aAAa,MAAM,MAAM,MAAM,IAAI,CAAC;AAAA,MAC5C;AAAA,MACD,OAAO,YAAY,MAAM;AACvB,eAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,wBAAc,MAAM,MAAM,MAAM,IAAI,GAAG,SAAS,MAAM;AAAA,QAC9D,CAAO;AAAA,MACF;AAAA,MACD,SAAS,YAAY,MAAM;AACzB,cAAM,KAAK,KAAK,IAAK;AACrB,YAAI,OAAO,OAAO,YAAY;AAC5B,gBAAM;AAAA,YACJ;AAAA,YACA;AAAA,UACD;AAAA,QACT;AAEM,YAAI;AACJ,YAAI;AACF,gBAAM,MAAM,MAAM,MAAM,IAAI;AAAA,QAC7B,SAAQ,KAAK;AACZ,aAAG,GAAG;AACN;AAAA,QACR;AAEM,sBAAc,KAAK,SAAO,GAAG,QAAW,GAAG,GAAG,SAAO,GAAG,GAAG,CAAC;AAAA,MAC7D;AAAA,IACF;AACD,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,MAAM,MAAMrC,QAAO,gBAAgB;AACvD,QACE,OAAOA,WAAU,QAChB,kBAAkB,OAAOA,WAAU,aACpC;AACA;AAAA,IACJ;AAEE,QAAI;AACJ,QAAI,gBAAgB;AAClB,YAAM,iBAAiB,IAAI,mBAAmB,IAAI;AAAA,IACtD,OAAS;AACL,YAAM,iBAAiB,IAAI,YAAY,IAAI;AAAA,IAC/C;AAEE,UAAM,UAAU,KAAK,qBAAqB;AAAA,EAC5C;AACA,WAAS,UAAU,KAAK,MAAM;AAC5B,WAAO,OAAO,OAAO,IAAI,MAAM,GAAG,GAAG,EAAE,MAAM;AAAA,EAC/C;AAMA,WAAS,aAAa,EAAE,MAAM,OAAO,MAAM,OAAAg7B,QAAO,WAAW;AAC3D;AAAA,MAAa;AAAA,MAAU;AAAA,MAAQ;AAAA,MAAM;AAAA;AAAA,IAA0B;AAC/D;AAAA,MAAa;AAAA,MAAU;AAAA,MAAS;AAAA,MAAO;AAAA;AAAA,IAA0B;AACjE,iBAAa,YAAY,QAAQ,IAAI;AACrC;AAAA,MAAa;AAAA,MAAY;AAAA,MAASA;AAAA,MAAO;AAAA;AAAA,IAA0B;AACnE;AAAA,MAAa;AAAA,MAAY;AAAA,MAAW;AAAA,MAAS;AAAA;AAAA,IAA0B;AACvE,QAAIA,UAAS,SAAS;AACpB,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,MACD;AAAA,IACL;AAEE,QAAI,OAAO,SAAS,UAAU;AAC5B,UAAI;AACJ,UAAI,WAAW,QAAQ,QAAQ,QAAQ,SAAS,WAAW;AACzD,iBAAS,QAAQ;AAAA,MACvB;AACI,UAAIA,UAASA,OAAM,QAAQA,OAAM,SAAS,SAAS;AACjD,iBAASA,OAAM,KAAK,QAAQ,UAAU,EAAE;AAAA,MAC9C;AACI,UAAI,QAAQ,KAAK,QAAQ,KAAK,SAAS,QAAQ;AAC7C,iBAAS,KAAK,KAAK,QAAQ,SAAS,EAAE;AAAA,MAC5C;AAEI,UAAI,OAAO,WAAW,UAAU;AAC9B,eAAO;AAAA,MACb;AAAA,IACA;AAEE,QAAI,OAAO,UAAU,UAAU;AAC7B,cAAQ,KAAK;AAAA,IACjB;AAEE,WAAO,eAAe;AAAA,MACpB;AAAA,MACA;AAAA,MACA,MAAM,SAAS,MAAM;AACnB,eAAO,KAAK,MAAM,MAAM,IAAI;AAAA,MAC7B;AAAA,MACD,OAAO,SAAS,MAAM,SAAS,QAAQ;AACrC,YAAIA,QAAO;AACT,UAAAA,OAAM,MAAM,MAAM,IAAI,EAAE,KAAK,SAAS,MAAM;AAAA,QAC7C,WAAU,SAAS;AAClB,kBAAQ,KAAK,MAAM,GAAG,MAAM,CAAC,KAAKh7B,WAAU;AAC1C,gBAAI,OAAO,KAAM,SAAQA,MAAK;AAAA,gBACzB,QAAO,GAAG;AAAA,UACzB,CAAS;AAAA,QACT,OAAa;AACL,kBAAQ,KAAK,MAAM,MAAM,IAAI,CAAC;AAAA,QACtC;AAAA,MACK;AAAA,IACL,CAAG;AAAA,EACH;AAEA,WAAS,cAAc,OAAO;AAC5B,WAAO,oBAAoB,MAAM,MAAM,MAAM,QAAQ,YAAY,MAAM;AACrE,aAAO,MAAM,MAAM,MAAM,IAAI;AAAA,IACjC,CAAG;AAAA,EACH;AAEA,WAAS,eAAe,EAAE,MAAM,OAAO,MAAM,OAAAg7B,OAAK,GAAI;AACpD,WAAO,oBAAoB,MAAM,OAAO,cAAa,MAAM;AACzD,YAAM,SAAS,MAAM;AACrB,UAAI,CAAC,QAAQ;AAEX,cAAM,MAAM,KAAK,KAAK,MAAM,IAAI;AAChC,eAAO;AAAA,MACb;AAEI,UAAI;AACJ,UAAI;AACF,QAAAA,OAAM;AAAA,UACJ;AAAA,UACA;AAAA,UACA,CAAAh7B,WAAS;AACP,gBAAI,OAAQ;AAEZ,qBAAS,EAAE,OAAAA,OAAO;AAClB,mBAAQ;AAAA,UACT;AAAA,UACD,SAAO;AACL,gBAAI,OAAQ;AAEZ,qBAAS,EAAE,IAAK;AAChB,mBAAQ;AAAA,UAClB;AAAA,QACO;AAAA,MACF,SAAQ,KAAK;AACZ,iBAAS,EAAE,IAAK;AAChB,eAAQ;AAAA,MACd;AAII,YAAM;AAEN,UAAI,OAAO,eAAe,KAAK,GAAG;AAChC,cAAM,OAAO;AAAA,MACnB;AAEI,aAAO,OAAO;AAAA,IAClB,CAAG;AAAA,EACH;AAEA,WAAS,aAAa,KAAK;AACzB,QAAIA;AACJ,WAAO,EAAE,EAAE,OAAAA,OAAK,IAAK,IAAI,KAAM,GAAE,MAAM;AACrC,kBAAYA,QAAO,GAAG;AAAA,IAC1B;AACE,WAAOA;AAAA,EACT;AAEA,WAAS,cAAc,KAAK,SAAS,QAAQ;AAC3C,KAAC,SAAS,OAAO;AACf,UAAI;AACF,YAAIA;AACJ,eAAO,EAAE,EAAE,OAAAA,OAAK,IAAK,IAAI,KAAM,GAAE,MAAM;AACrC,sBAAYA,QAAO,GAAG;AAKtB,cAAI,OAAO;AACX,cAAI,gBAAgB;AACpB,gBAAM,MAAM,IAAI,KAAK,MAAM;AACzB,gBAAI,MAAM;AACR,8BAAgB;AAAA,YAC5B,OAAiB;AACL,mBAAM;AAAA,YAClB;AAAA,UACA,CAAS;AACD,iBAAO;AAEP,wBAAc,KAAK,GAAG;AAEtB,cAAI,CAAC,eAAe;AAGlB;AAAA,UACV;AAAA,QACA;AAEM,eAAO,QAAQA,MAAK;AAAA,MACrB,SAAQ,KAAK;AACZ,eAAO,OAAO,GAAG;AAAA,MACvB;AAAA,IACA,GAAM;AAAA,EACN;AAEA,WAAS,YAAYA,QAAO,KAAK;AAC/B,QAAIA,WAAU,cAAe;AAE7B;AAAA,MACE;AAAA,MACA;AAAA,QACE,sDAAsD,KAAK;AAAA,UACzDA;AAAA,QACD,CAAA;AAAA,QACD;AAAA,MACN;AAAA,IACG;AAAA,EACH;AACA,WAAS,cAAc,EAAE,OAAAA,QAAO,KAAI,GAAI,KAAK;AAC3C,QAAI,CAAC,QAAQA,WAAU,gBAAiB;AAExC;AAAA,MACE;AAAA,MACA;AAAA,QACE,OACI,oFACA,iCAAiC,KAAK;AAAA,UACpCA;AAAA,QACD,CAAA;AAAA,QACL;AAAA,MACN;AAAA,IACG;AAAA,EACH;AAEA,WAAS,WAAW,KAAK,KAAK;AAK5B,QAAI,IAAI,MAAO,KAAI,MAAM,GAAG;AAC5B,UAAM;AAAA,EACR;AAUA,WAAS,oBAAoB,MAAM,OAAO,IAAI;AAC5C,QAAI,OAAO,SAAS,UAAU;AAI5B,YAAM,WAAW,OAAO,yBAAyB,IAAI,MAAM;AAC3D,UAAI,CAAC,YAAY,SAAS,cAAc;AACtC,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,OAAO,OAAO,YAAY,IAAI;AAAA,YAC5B,cAAc;AAAA,YACd,OAAO;AAAA,UACR,CAAA;AAAA,QACF;AAAA,MACP;AAAA,IACA;AAEE,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,aAAa,OAAO,yBAAyB,IAAI,QAAQ;AAC/D,UAAI,CAAC,cAAc,WAAW,cAAc;AAC1C,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,OAAO,OAAO,cAAc,IAAI;AAAA,YAC9B,cAAc;AAAA,YACd,OAAO;AAAA,UACR,CAAA;AAAA,QACF;AAAA,MACP;AAAA,IACA;AAEE,WAAO;AAAA,EACT;;;;;;;;;;;;;;;;;ACpXA,WAAAguL,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAA6E,WAAA5V,mBAAAl7H,GAAAH,GAAAH,GAAAE,GAAA8oI,GAAAzyI,GAAAnF,IAAA;AAAA,QAAA;AAAA,UAAAuM,IAAA2C,EAAA/J,CAAA,EAAAnF,EAAA,GAAAuP,IAAAhD,EAAArM;AAAAA,IAAA,SAAAgP,IAAA;AAAA,aAAA,KAAAN,EAAAM,EAAA;AAAA,IAAA3C;AAAAA,MAAAwxK,OAAAhvK,EAAAQ,CAAA,IAAA4+K,QAAA9nD,QAAA92H,CAAA,EAAA8sK,KAAAvtK,GAAA8oI,CAAA;AAAA,EAAA;AAAA,WAAAvN,kBAAAn7H,GAAA;AAAA,WAAA,WAAA;AAAA,UAAAH,IAAA,MAAAH,IAAAwrB;AAAA,aAAA,IAAA+zJ,QAAA,SAAAr/K,GAAA8oI,GAAA;AAAA,YAAAzyI,IAAA+J,EAAAssI,MAAAzsI,GAAAH,CAAA;AAAA,iBAAAw/K,MAAAl/K,IAAAk7H;AAAAA,6BAAAjlI,GAAA2J,GAAA8oI,GAAAw2C,OAAA9vG,QAAApvE,QAAAA,EAAA;AAAA,QAAAovE;AAAAA,iBAAAA,OAAApvE,IAAA;AAAAk7H,6BAAAjlI,GAAA2J,GAAA8oI,GAAAw2C,OAAA9vG,QAAA,SAAApvE,EAAA;AAAA,QAAA;AAAAk/K,cAAA,MAAA;AAAA,MAAA,CAAA;AAAA,IAAA;AAAA,EAAA;AAI7E,QAAMC,eAIFJ,WAAQ,WAAW1rL,OAAkC;AACvD,WAAO,OAAOA;AAAAA,EAChB,CAAC;AAImBwQ,QAAAA,UAAGk7K,WAAQ;AAAA,IAC7BK,MAAMA,MAAM;AAAA,IACZC,SAAS7wF,QAAMA,GAAG,MAAM,IAAI;AAAA,EAC7B,CAAA;AAOM,WAAS8wF,WACd12K,IACA3M,SACuB;AACvB,WAAO8iL,SAAAA,EAAQ;AAAA,MACbK,QAAQz2J,MAAM;AACZ,cAAMuhC,SAASthD,GAAG0jI,MAAM,MAAM3jH,IAAI;AAClC,YAAI42J,WAAWr1H,MAAM,EAAG,OAAM,IAAI5iD,MAAMrL,OAAO;AAC/C,eAAOiuD;AAAAA,MACR;AAAA,MACDl+B,SAASrD,MAAM;AACb,eAAOs2J,QAAQ9nD,QAAQvuH,GAAG0jI,MAAM,MAAM3jH,IAAI,CAAC;AAAA,MAC7C;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM62J,WAAWT,WAAQ;AAAA,IACvBK,MAAM5wF,QAAMA,GAAG,MAAM;AAAA,IACrBxiE,OAAK,WAAA;AAAA,UAAAsnC,OAAA6nE,kBAAE,WAAM3sC,IAAE;AAAA,eAAIA,GAAG,OAAO;AAAA,MAAC,CAAA;AAAA,aAA9BxiE,SAAAA,OAAKyzJ,IAAA;AAAA,eAAAnsH,KAAAg5E,MAAA,MAAAphH,SAAA;AAAA,MAAA;AAAA,IAAA,EAAA;AAAA,EACP,CAAC;AAgBM,WAASw0J,aACdC,QACAnxF,IAGiB;AACjB,UAAM1tF,IAAIi+K,SAAO,EAACY,MAAM;AACxB,WAAOH,SAASpyJ,UAAQ;AACtB,YAAMwyJ,UAAU9+K,EAAEssB,IAAI;AACtB,aAAOohE,GAAGoxF,OAAO;AAAA,IACnB,CAAC;AAAA,EACH;AAKyB/7K,QAAAA,eAAGk7K,WAG1B;AAAA,IACAnhL,MAAM;AAAA,IACNiiL,OAAO;AAAA,IACPT,MAAM,SAAU/rL,OAAM;AACpB,aAAO8rL,aAAaC,KAAK/rL,KAAI;AAAA,IAC9B;AAAA,IACDgsL,SAAS,SAAUhsL,OAAMysL,YAAYtxF,IAAI;AACvC,UAAIuxF,YAAY;AAEhBZ,mBAAaE,QAAQhsL,OAAM,CAAC2V,KAAKhY,WAAU;AACzC+uL,oBAAY;AACZvxF,WAAGxlF,KAAKhY,MAAK;AAAA,MACf,CAAC;AAED,UAAI,CAAC+uL,WAAW;AACdD,mBAAY;AAAA,MACd;AAAA,IACF;AAAA,EACD,CAAA;AAGmBj8K,QAAAA,UAAGk7K,WAAQ;AAAA,IAC7BK,MAAM9vE,OAAKA;AAAAA,IACXtjF,OAAK,WAAA;AAAA,UAAA47C,QAAAuzD,kBAAE,WAAM7rB,GAAC;AAAA,eAAIA;AAAAA,MAAC,CAAA;AAAA,aAAnBtjF,SAAAA,OAAKg0J,KAAA;AAAA,eAAAp4G,MAAA0kE,MAAA,MAAAphH,SAAA;AAAA,MAAA;AAAA,IAAA,EAAA;AAAA,EACN,CAAA;AAEM,WAASq0J,WAAoB/6J,KAAiC;AACnE,WACE,CAAC,CAACA,QACD,OAAOA,QAAQ,YAAY,OAAOA,QAAQ,eAC3C,CAAC,CAACA,IAAI2oJ,QACN,OAAO3oJ,IAAI2oJ,SAAS;AAAA,EAExB;;;;;;;;;;;;;AC1GO,WAAS8S,aACd7hH,QACAhsE,SACM;AACN,eAAW03B,KAAK5pB,OAAOnK,KAAK3D,OAAM,GAAG;AACnC,WACG03B,MAAM,gBAAgBA,MAAM,mBAAmBA,MAAM,kBACtD13B,QAAO03B,CAAC,GACR;AACA,cAAMlf,aAAaxY,QAAO03B,CAAC;AAC3B,cAAMo2J,YAAY9hH,OAAOt0C,CAAC,MAAMs0C,OAAOt0C,CAAC,IAAI;AAC5Cq2J,2BAAmBD,WAAWt1K,UAAU;AAAA,MAC1C,OAAO;AAEL,cAAM4Z,MAAMpyB,QAAO03B,CAAC;AAEpB,YAAItF,QAAQhhB,OAAW46D,QAAOt0C,CAAC,IAAItF;AAAAA,MACrC;AAAA,IACF;AAAA,EACF;AAEA,WAAS27J,mBAAqC/hH,QAAWhsE,SAAW;AAClE,eAAW03B,KAAK5pB,OAAOnK,KAAK3D,OAAM,GAAkB;AAClD,YAAMoyB,MAAMpyB,QAAO03B,CAAC;AACpB,UAAItF,QAAQhhB,OAAW46D,QAAOt0C,CAAC,IAAItF;AAAAA,IACrC;AAAA,EACF;AAEO,WAAS47J,mBAAmBpvL,QAA4C;AAC7E,WACE,CAAC,CAACA,UACF,OAAOA,OAAM4yB,SAAS,cACtB,OAAO5yB,OAAM4B,OAAON,QAAQ,MAAM;AAAA,EAEtC;;;;;;;;;;;;;;AC/BO,WAAS+tL,SAAYC,SAA6C;AACvE,WAAOpgL,OAAOm5H,OAAOinD,OAAO;AAAA,EAC9B;AAEO,WAASC,aACd1jB,KACQ;AACR,UAAM3yG,SAAS,oBAAI7rD,IAAQ;AAC3B,UAAM3K,SAAQ,CAACmpK,GAAG;AAClB,WAAOnpK,OAAM4J,SAAS,GAAG;AACvB,iBAAW8sK,MAAM12K,OAAM25D,OAAO;AAC5B,YAAI1mD,MAAMC,QAAQwjK,EAAE,EAAG12K,CAAAA,OAAM6E,KAAK6xK,EAA0B;AAAA,YACvDlgH,QAAOp+C,IAAIs+J,EAAO;AAAA,MACzB;AAAA,IACF;AACA,WAAOlgH;AAAAA,EACT;;;;;;;;;;;ACxBA,MAAAs2H,aAAAnnL,iBAAA;AAAA,EAIe,MAAMonL,OAAO;AAAA,IAc1Bz8K,YACEnR,SACAvC,UACAM,MACA8vL,2BAAkDL,WAAAA,UAAS,CAAA,CAAE,GAC7D;AAAA,WAlBFzvL,MAAG;AAAA,WACH+Z,oBAAiB;AAAA,WACjBg2K,OAAI;AAAA,WACJC,MAAG;AAAA,WACH/2J,UAAO;AAAA,WAEPg3J,iBAAc;AAAA,WACdC,oBAAiB;AAAA,WAEjBxwL,UAAO;AAAA,WAEPowL,uBAAoB;AAQlB,WAAK9vL,MAAMiC,QAAO+K,QAAQhN;AAE1B,WAAK+Z,oBAAoB9X,QAAO8X;AAChC,WAAKg2K,OAAO9tL,QAAO8tL;AACnB,WAAKC,MAAM/tL,QAAO+tL;AAClB,WAAK/2J,UAAUh3B,QAAOg3B,WAAW,CAAE;AACnC,WAAKg3J,iBAAiBhuL,QAAOguL;AAC7B,WAAKC,oBAAoBjuL,QAAOiuL;AAEhC,WAAKxwL,UAAUA;AACf,WAAKowL,uBAAuBA;AAAAA,IAC9B;AAAA,EACF;AAAC78K,SAAAA,UAAA48K;;;;;;;;;;;;;;AClCD,MAAAjwG,SAAAn3E,aAAA;AAEO,WAAS0nL,KAAQn4K,IAAwC;AAC9D,QAAIshD;AACJ,QAAI82H;AACJ,QAAIC,oBAAoB;AACxB,WAAO,aAAa;AAClB,UAAI,CAAC/2H,QAAQ;AACX,YAAI82H,SAAS;AACXC,8BAAoB;AACpB,iBAAO,QAAOC,GAAAA,OAAO,SAACF,OAAO;AAAA,QAC/B;AAEA,YAAI,EAAE,QAAO,GAAAp8G,gBAAS,IAAG;AACvB,cAAI;AACF1a,qBAAS;AAAA,cAAEi3H,IAAI;AAAA,cAAMnwL,OAAO,OAAO4X,GAAE;AAAA,YAAI;AAAA,UAC1C,SAAQ3Y,QAAO;AACdi6D,qBAAS;AAAA,cAAEi3H,IAAI;AAAA,cAAOnwL,OAAOf;AAAAA,YAAO;AAAA,UACtC;AAAA,QACF,OAAO;AACL,cAAIknI,SAA8BiqD;AAClCJ,oBAAU,IAAI/B,QAAQ,CAACl8J,KAAKs+J,QAAQ;AAClClqD,sBAAUp0G;AACVq+J,qBAASC;AAAAA,UACX,CAAC;AAED,cAAI;AACFn3H,qBAAS;AAAA,cAAEi3H,IAAI;AAAA,cAAMnwL,OAAO,OAAO4X,GAAE;AAAA,YAAI;AAGzCo4K,sBAAU;AAKV,gBAAIC,kBAAmB9pD,SAAQjtE,OAAOl5D,KAAK;AAAA,UAC5C,SAAQf,QAAO;AACdi6D,qBAAS;AAAA,cAAEi3H,IAAI;AAAA,cAAOnwL,OAAOf;AAAAA,YAAO;AACpC+wL,sBAAU;AACV,gBAAIC,kBAAmBG,QAAOnxL,MAAK;AAAA,UACrC;AAAA,QACF;AAAA,MACF;AAEA,UAAIi6D,OAAOi3H,GAAI,QAAOj3H,OAAOl5D;AAAAA,UACxB,OAAMk5D,OAAOl5D;AAAAA,IACnB;AAAA,EACH;;;;;;;;;;;;;;;;ACjDA,WAAAguL,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAtgE,SAAAn3E,aAAA;AAOA,MAAAg9J,QAAAh9J,cAAA;AAmBA,QAAMioL,cACJC,SACkC;AAClC,WAAOxC,WAAQwC,GAAG,EAAEnC;AAAAA,EACrB;AAGD,YAAUoC,UAAU;AAClB,WAAO;AAAA,EACT;AAEO,WAASC,cACd7zJ,SAIoD;AACpD,WAAO8zJ,mBAA+C/hL,SAASiuB,OAAO;AAAA,EACxE;AAEO,WAAS+zJ,kBACd/zJ,SAC4C;AAC5C,WAAO0zJ,YACLG,cAA0C7zJ,OAAO,CACnD;AAAA,EACF;AAEO,WAASg0J,gBACdh0J,SAIoD;AACpD,WAAO8zJ,mBAA+Cl7H,KAAK54B,OAAO;AAAA,EACpE;AAEO,WAASi0J,oBACdj0J,SAC4C;AAC5C,WAAO0zJ,YACLM,gBAA4Ch0J,OAAO,CACrD;AAAA,EACF;AA2BA,WAAS8zJ,mBACPI,WACAl0J,SAIoD;AACpD,UAAMm0J,gBAAgB,IAAID,UAAoB;AAC9C,UAAME,iBAAiB,IAAIF,UAAoB;AAC/C,UAAMG,cAAc,IAAIH,UAA0B;AAElD,WAAO,UAAUI,eAAe30E,KAAWujC,MAAmB;AAC5D,YAAMqxC,eAAe,WAAOv9G,OAAAA,SAAS;AACrC,YAAMw9G,YAAYD,eAAeH,iBAAiBD;AAElD,YAAM/wC,SAAS,OAAOqxC,qBACpBF,cACAC,WACAH,aACA10E,KACAujC,IACF;AACA,UAAIE,OAAO/oH,MAAO,QAAO+oH,OAAOhgJ;AAEhC,YAAMoC,SAAQ,IAAIkvL,kBAAkBxxC,IAAI;AAExC,YAAMyxC,gBAA4C30J,QAAQ2/E,KAAKn6G,MAAK;AAEpE,UAAIovL;AACJ,UAAIxxL;AAEJ,cAAIovL,MAAAA,oBAAmBmC,aAAa,GAAG;AACrCvxL,QAAAA,SAAQ,QAAOyxL,GAAAA,qBAAaF,eAAe,MAAM;AAC/CC,uBAAaE,gBAAgBtvL,QAAO6uL,aAAa10E,GAAG;AAAA,QACtD,CAAC;AAAA,MACH,OAAO;AACLv8G,QAAAA,SAAQuxL;AAAAA,MACV;AAEAI,0BAAoBP,WAAWhvL,QAAOm6G,KAAKv8G,MAAK;AAEhD,UAAIwxL,YAAY;AACdP,oBAAYhsG,OAAOs3B,GAAG;AACtBi1E,mBAAWI,QAAQ5xL,MAAK;AAAA,MAC1B;AAEA,aAAOA;AAAAA,IACR;AAAA,EACH;AAOA,YAAU6xL,eACRzvL,QACAm6G,KACAujC,MAC0E;AAC1E,UAAMgyC,cAAuD1vL,OAAM2M,IAAIwtG,GAAG;AAE1E,QAAIu1E,aAAa;AACf,iBAAW;AAAA,QAAE9xL,OAAAA;AAAAA,QAAOi3B;AAAAA,MAAO,KAAI66J,aAAa;AAC1C,YAAI,OAAO76J,MAAM6oH,IAAI,EAAG,QAAO;AAAA,UAAE7oH,OAAO;AAAA,UAAMj3B,OAAAA;AAAAA,QAAO;AAAA,MACvD;AAAA,IACF;AAEA,WAAO;AAAA,MAAEi3B,OAAO;AAAA,MAAOj3B,OAAO;AAAA,IAAM;AAAA,EACtC;AAEA,YAAUqxL,qBACRF,cACAC,WACAH,aACA10E,KACAujC,MAC0E;AAC1E,UAAME,SAAS,OAAO6xC,eAAeT,WAAW70E,KAAKujC,IAAI;AACzD,QAAIE,OAAO/oH,OAAO;AAChB,aAAO+oH;AAAAA,IACT;AAEA,QAAImxC,cAAc;AAChB,YAAMnxC,UAAS,OAAO6xC,eAAeZ,aAAa10E,KAAKujC,IAAI;AAC3D,UAAIE,QAAO/oH,OAAO;AAChB,cAAMj3B,SAAQ,WAAOkwL,OAAAA,SAAiBlwC,QAAOhgJ,MAAM+xL,OAAO;AAC1D,eAAO;AAAA,UAAE96J,OAAO;AAAA,UAAMj3B,OAAAA;AAAAA,QAAO;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO;AAAA,MAAEi3B,OAAO;AAAA,MAAOj3B,OAAO;AAAA,IAAM;AAAA,EACtC;AAEA,WAAS0xL,gBACPnwL,SACA0vL,aACA10E,KACe;AACf,UAAMi1E,aAAa,IAAIQ,KAAe;AAEtCL,wBAAoBV,aAAa1vL,SAAQg7G,KAAKi1E,UAAU;AAExD,WAAOA;AAAAA,EACT;AAEA,WAASG,oBAMPvvL,QACAb,SACAg7G,KACAv8G,QACA;AACA,QAAI,CAACuB,QAAO0wL,aAAc1wL,CAAAA,QAAO2wL,QAAS;AAE1C,QAAIJ,cAAuD1vL,OAAM2M,IAAIwtG,GAAG;AAExEh7G,IAAAA,QAAO4wL,WAAY;AAEnB,YAAQ5wL,QAAO6wL,KAAM,GAAA;AAAA,MACnB,KAAK;AACHN,sBAAc,CAAC;AAAA,UAAE9xL,OAAAA;AAAAA,UAAOi3B,OAAOu5J;AAAAA,QAAQ,CAAC;AACxCpuL,QAAAA,OAAM+J,IAAIowG,KAAKu1E,WAAW;AAC1B;AAAA,MACF,KAAK;AACHA,sBAAc,CAAC;AAAA,UAAE9xL,OAAAA;AAAAA,UAAOi3B,OAAO11B,QAAO80B,UAAS;AAAA,QAAG,CAAC;AACnDj0B,QAAAA,OAAM+J,IAAIowG,KAAKu1E,WAAW;AAC1B;AAAA,MACF,KAAK;AACH,YAAIA,aAAa;AACfA,sBAAYvqL,KAAK;AAAA,YAAEvH,OAAAA;AAAAA,YAAOi3B,OAAO11B,QAAO80B,UAAS;AAAA,UAAG,CAAC;AAAA,QACvD,OAAO;AACLy7J,wBAAc,CAAC;AAAA,YAAE9xL,OAAAA;AAAAA,YAAOi3B,OAAO11B,QAAO80B,UAAS;AAAA,UAAG,CAAC;AACnDj0B,UAAAA,OAAM+J,IAAIowG,KAAKu1E,WAAW;AAAA,QAC5B;AAAA,IACJ;AAAA,EACF;AAAA,EAEA,MAAMR,kBAAsC;AAAA,IAc1Ct+K,YAAY8sI,MAAmB;AAAA,WAb/BuyC,UAAmB;AAAI,WACvBC,SAAkB;AAAK,WACvBC,WAAoB;AAAK,WACzBC,cAAuB;AAAK,WAE5BC,cAAuB;AAAK,WAE5BC,SAEI,CAAE;AAAA,WAENC,QAAK;AAGH,WAAKA,QAAQ7yC;AAAAA,IACf;AAAA,IAEA8yC,SAAS;AACP,aAAOC,uBAAuB,IAAI;AAAA,IACpC;AAAA,IAEAT,OAAO;AACL,UAAI,KAAKE,OAAQ,QAAO;AACxB,UAAI,KAAKC,SAAU,QAAO;AAC1B,UAAI,KAAKC,YAAa,QAAO;AAC7B,aAAO;AAAA,IACT;AAAA,IAEAN,UAAU;AACR,UAAI,CAAC,KAAKG,SAAS;AACjB,cAAM,IAAI/7K,MAAM,uDAAuD;AAAA,MACzE;AACA,UAAI,KAAKg8K,QAAQ;AACf,cAAM,IAAIh8K,MAAM,mDAAmD;AAAA,MACrE;AACA,WAAKi8K,WAAW;AAChB,WAAKE,cAAc;AAAA,IACrB;AAAA,IAEAK,QAAQ;AACN,UAAI,CAAC,KAAKT,SAAS;AACjB,cAAM,IAAI/7K,MAAM,uDAAuD;AAAA,MACzE;AACA,UAAI,KAAKi8K,UAAU;AACjB,cAAM,IAAIj8K,MAAM,qDAAqD;AAAA,MACvE;AACA,WAAKg8K,SAAS;AACd,WAAKG,cAAc;AAAA,IACrB;AAAA,IAEAv7C,MAASt6G,SAAsC;AAC7C,UAAI,CAAC,KAAKy1J,SAAS;AACjB,cAAM,IAAI/7K,MAAM,uDAAuD;AAAA,MACzE;AACA,UAAI,KAAKg8K,UAAU,KAAKC,UAAU;AAChC,cAAM,IAAIj8K,MACR,+DACF;AAAA,MACF;AACA,WAAKm8K,cAAc;AAEnB,YAAM7yL,OAAMg9B,QAAQ,KAAK+1J,KAAK;AAE9B,YAAM/6K,MAAK,GAAA02K,OAAAA,YACT1xJ,SACA,wFACF;AAEA,cAAI2xJ,OAAAA,YAAW3uL,IAAG,GAAG;AAEnB,eAAOA,KAAIu8K,KAAMv8K,CAAAA,SAAiB;AAChC,eAAK8yL,OAAOnrL,KAAK,CAAC3H,MAAKgY,EAAE,CAAC;AAC1B,iBAAOhY;AAAAA,QACT,CAAC;AAAA,MACH;AAEA,WAAK8yL,OAAOnrL,KAAK,CAAC3H,MAAKgY,EAAE,CAAC;AAC1B,aAAOhY;AAAAA,IACT;AAAA,IAEAmzL,WAAcn2J,SAAsC;AAClD,WAAK41J,cAAc;AACnB,aAAO,KAAKt7C,MAAMt6G,OAAO;AAAA,IAC3B;AAAA,IAEAvG,YAAqD;AACnD,YAAM28J,QAAQ,KAAKN;AACnB,aAAO,WAAW5yC,MAAmB;AACnC,mBAAW,CAAClgJ,MAAKgY,EAAE,KAAKo7K,OAAO;AAC7B,cAAIpzL,UAAS,OAAOgY,GAAGkoI,IAAI,GAAI,QAAO;AAAA,QACxC;AACA,eAAO;AAAA,MACR;AAAA,IACH;AAAA,IAEAqyC,aAAa;AACX,WAAKE,UAAU;AAAA,IACjB;AAAA,IAEAJ,aAAa;AACX,aAAO,KAAKQ;AAAAA,IACd;AAAA,EACF;AAEA,WAASI,uBACPzwL,QACyB;AACzB,aAAS6wL,QAAQz/J,KAAU;AACzB,UAAI,OAAOA,QAAQ,WAAW;AAC5B,YAAIA,IAAKpxB,CAAAA,OAAM8vL,QAAS;AAAA,YACnB9vL,CAAAA,OAAM0wL,MAAO;AAClB;AAAA,MACF;AAEA,aAAO1wL,OAAM80I,MAAM,MAAMg8C,iBAAiB1/J,IAAK,CAAA,CAAC;AAAA,IAClD;AACAy/J,YAAQf,UAAU,MAAM9vL,OAAM8vL,QAAS;AACvCe,YAAQH,QAAQ,MAAM1wL,OAAM0wL,MAAO;AACnCG,YAAQ/7C,QAAS15C,QACfp7F,OAAM80I,MAAM,MAAMg8C,iBAAiB11F,GAAE,CAAE,CAAC;AAC1Cy1F,YAAQF,aAAcv1F,QACpBp7F,OAAM2wL,WAAW,MAAMG,iBAAiB11F,GAAE,CAAE,CAAC;AAE/C,WAAOy1F;AAAAA,EACT;AAWO,WAASC,iBAAiBlzL,QAA4B;AAC3D,YAAIuuL,OAAAA,YAAWvuL,MAAK,GAAG;AACrB,YAAM,IAAIsW,MACR,mSAKF;AAAA,IACF;AAEA,QACEtW,UAAS,QACT,OAAOA,WAAU,YACjB,OAAOA,WAAU,aACjB,OAAOA,WAAU,UACjB;AACA,YAAM,IAAIsW,MACR,wEACF;AAAA,IACF;AAGA,WAAOtW;AAAAA,EACT;AAAA,EAEA,MAAMgyL,KAAQ;AAAA,IAKZh/K,cAAc;AAAA,WAJdmgL,WAAoB;AAAK,WACzBpB,UAAO;AAAA,WACP1b,WAAQ;AAGN,WAAK0b,UAAU,IAAI9D,QAAQ9nD,aAAW;AACpC,aAAKkwC,WAAWlwC;AAAAA,MAClB,CAAC;AAAA,IACH;AAAA,IAEAyrD,QAAQ5xL,QAAU;AAChB,WAAKmzL,WAAW;AAChB,WAAK9c,SAASr2K,MAAK;AAAA,IACrB;AAAA,EACF;;;;;;;;;;;;;ACjaA,aAAe,EAAC,GAAE,MAAK,GAAE,QAAO,GAAE,WAAU,GAAE,UAAS,GAAE,UAAS,GAAE,SAAQ,GAAE,WAAU,GAAE,WAAU,GAAE,WAAU,GAAE,MAAK,GAAE,UAAS,GAAE,WAAU,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,WAAU,GAAE,UAAS,GAAE,SAAQ,GAAE,QAAO;;;;;;;ACAzNozL,aAAA,WAA0BzzL,kBAAA;;;;;;;;;ACAZ,oBAAC,EAAC,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,MAAK,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,KAAI,OAAM,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,GAAE,KAAI,GAAE,KAAI,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,OAAM,GAAE,MAAK,GAAE,MAAK,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,OAAM,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,KAAI,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,QAAO,IAAG,aAAY,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,QAAO,IAAG,WAAU,IAAG,OAAM,IAAG,KAAI,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,OAAM,IAAG,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,GAAE,KAAI,EAAC,GAAE,GAAE,EAAC,GAAE,EAAC,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,UAAS,KAAI,GAAE,KAAI,GAAE,KAAI,UAAS,IAAG,GAAE,IAAG,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,UAAS,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,UAAS,IAAG,SAAS,IAAG,GAAE,IAAG,SAAS,IAAG,UAAS,IAAG,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,MAAK,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,UAAS,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,SAAS,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,SAAS,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,SAAS,GAAE,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,UAAS,IAAG,GAAE,IAAG,SAAS,IAAG,UAAS,IAAG,SAAS,IAAG,SAAS,IAAG,SAAS,IAAG,UAAS,GAAE,UAAS,IAAG,UAAS,IAAG,SAAQ,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,EAAC,GAAE,GAAE,OAAM,GAAE,CAAC,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,KAAI,KAAI,MAAK,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,KAAI,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,MAAK,KAAI,MAAK,MAAK,MAAK,MAAK,IAAI,GAAE,GAAE,WAAU,GAAE,EAAC,KAAI,YAAW,KAAI,YAAW,KAAI,YAAW,KAAI,WAAW,KAAI,YAAW,KAAI,WAAW,KAAI,YAAW,KAAI,WAAW,KAAI,YAAW,KAAI,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,UAAW,IAAG,WAAW,GAAE,WAAW,IAAG,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,IAAG,YAAW,GAAE,WAAW,GAAE,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,UAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,WAAW,IAAG,WAAW,IAAG,YAAW,IAAG,UAAW,IAAG,WAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,UAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,YAAW,MAAK,WAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,IAAG,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,GAAE,WAAW,GAAE,YAAW,GAAE,YAAW,GAAE,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,WAAW,IAAG,WAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,YAAW,IAAG,UAAW,GAAE,YAAW,IAAG,WAAW,IAAG,YAAW,IAAG,MAAK,IAAG,MAAK,IAAG,KAAI,EAAC,GAAE,GAAE,EAAC,GAAE,EAAC,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,GAAE,KAAI,UAAS,KAAI,UAAS,KAAI,UAAS,KAAI,SAAQ,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,GAAE,GAAE,GAAE,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,SAAS,IAAG,GAAE,IAAG,SAAS,IAAG,UAAS,IAAG,UAAS,IAAG,SAAQ,IAAG,GAAE,IAAG,SAAS,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,UAAS,IAAG,SAAS,IAAG,SAAS,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,IAAG,GAAE,MAAK,SAAQ,MAAK,GAAE,MAAK,GAAE,MAAK,SAAS,MAAK,UAAS,MAAK,GAAE,MAAK,GAAE,MAAK,SAAS,MAAK,SAAS,MAAK,SAAS,IAAG,SAAS,IAAG,UAAS,IAAG,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,SAAS,GAAE,SAAS,GAAE,SAAQ,GAAE,UAAS,GAAE,UAAS,GAAE,SAAS,GAAE,SAAS,GAAE,UAAS,GAAE,SAAS,GAAE,UAAS,GAAE,UAAS,GAAE,SAAS,GAAE,SAAS,GAAE,SAAQ,GAAE,SAAQ,GAAE,UAAS,GAAE,SAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,UAAS,GAAE,SAAQ,GAAE,SAAQ,GAAE,UAAS,GAAE,UAAS,GAAE,SAAQ,GAAE,UAAS,IAAG,UAAS,IAAG,UAAS,IAAG,SAAQ,IAAG,UAAS,IAAG,UAAS,IAAG,UAAS,IAAG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IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,MAAK,IAAG,IAAG,EAAE,GAAE,GAAE,uBAAsB,GAAE,EAAC,IAAG,WAAU,EAAC,GAAE,GAAE,EAAC,GAAE,EAAC,GAAE,GAAE,GAAE,EAAC,GAAE,GAAE,MAAK,GAAE,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAA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,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,MAAK,IAAG,IAAG,EAAE,GAAE,GAAE,cAAa,GAAE,EAAC,IAAG,UAAU,EAAC,GAAE,GAAE,EAAC,GAAE,EAAC,IAAG,EAAC,GAAE,GAAE,UAAS,GAAE,CAAC,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG,IAAG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AAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,EACR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtLD,WAAS,kBAAkB,SAAS;AAClC,SAAK,OAAO;AACZ,SAAK,UAAU;AACf,SAAK,eAAe;AACpB,QAAI,MAAM,mBAAmB;AAC3B,YAAM,kBAAkB,MAAM,iBAAiB;AAAA,IACnD;AAAA,EACA;AAEA,oBAAkB,YAAY,MAAM;AAEpC,UAAiB;;;;;;;;ACXjB,MAAI,oBAAoB5zL,aAAA;AAExB,WAAS03C,QAAO;AAAA,EAAA;AAEhB,YAAiB;AAAA,IACf,aAAa,SAAS,cAAc;AAClC,YAAM,IAAI;AAAA,QACR;AAAA,MACN;AAAA,IACG;AAAA,IAED,SAAS,SAAS,QAAQ,MAAM;AAC9B,aAAO,KAAK;AAAA,IACb;AAAA,IAED,YAAY,SAAS,WAAW,MAAM;AACpC,UAAI,KAAK,QAAQ;AACf,cAAM,IAAI;AAAA,UACR;AAAA,QACR;AAAA,MACA;AAAA,IACG;AAAA,IAED,aAAa,SAAS,cAAc;AAClC,YAAM,IAAI;AAAA,QACR;AAAA,MAEN;AAAA,IACG;AAAA,IAED,aAAa,SAAS,cAAc;AAClC,YAAM,IAAI;AAAA,QACR;AAAA,MACN;AAAA,IACG;AAAA,IAED,aAAa,SAAS,YAAY,SAASl/B,UAAS;AAClD,aAAO,QAAQ,CAAC,0BAA0B,GAAGA,QAAO,EAAE,CAAC;AAAA,IACxD;AAAA,IAED,aAAak/B;AAAA,IAEb,YAAYA;AAAA,IAEZ,YAAYA;AAAA,IAEZ,gBAAgBA;AAAA,IAEhB,aAAaA;AAAA,IAEb,gBAAgBA;AAAA,IAEhB,KAAK,CAAA;AAAA,EACP;;;;;;;;ACrDA,MAAI,aAAa;AACjB,MAAI,YAAY;AAEhB,WAAS,QAAQnzC,QAAO;AACtB,QAAI,CAAC,MAAM,QAAQA,MAAK,EAAG,QAAO,CAACA,MAAK;AACxC,WAAOA,OAAM,OAAO,SAAU,GAAG,GAAG;AAClC,aAAO,EAAE,OAAO,QAAQ,CAAC,CAAC;AAAA,IAC9B,GAAK,CAAE,CAAA;AAAA,EACP;AAEA,WAAS,KAAKhE,SAAQ,WAAW;AAC/B,aAAS,MAAMA,QAAO,QAAQ,IAAI,GAAG,KAAK,KAAK,KAAK;AAClD,UAAI,SAASA,QAAO,OAAO,CAAC,GAAG,CAAC;AAChC,UAAI,UAAU,QAAQ,GAAG,GAAG,GAAG;AAC7B,eAAOA,QAAO,MAAM,GAAG,CAAC,CAAC;AAAA,MAC/B;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,WAAS,WAAW,KAAK,OAAO;AAC9B,QAAIC,QAAO,EAAE,MAAY;AACzB,QAAI,MAAM,QAAQ,MAAM,MAAM,GAAG;AAC/B,MAAAA,MAAK,MAAM;AACX,cAAQ,MAAM,MAAM,CAAC;AAAA,IACzB;AAEE,aAAS,QAAQ,KAAK;AACpB,UAAI,OAAO,IAAI,IAAI;AACnB,UAAI,QAAQ,MAAM,MAAM,KAAK,MAAM;AACnC,UAAI,OAAO;AACT,QAAAA,MAAK,OAAO;AACZ,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,QAAQ,KAAK;AAC5C,UAAAA,MAAK,KAAK,QAAQ,CAAC,CAAC,IAAI,MAAM,IAAI,CAAC;AAAA,QAC3C;AACM,eAAOA;AAAA,MACb;AAAA,IACA;AAEE,IAAAA,MAAK,OAAO;AACZ,WAAOA;AAAA,EACT;AAEA,WAAS,WAAW,KAAKD,SAAQ,IAAI;AACnC,QAAIC;AACJ,WAAO,KAAKD,SAAQ,SAAU,QAAQ,GAAG,KAAK;AAC5C,UAAI,WAAW,KAAK,MAAM,GAAG;AAC3B,QAAAC,QAAO,WAAW,KAAK,OAAO,MAAM,UAAU,EAAE,CAAC,CAAC;AAClD,QAAAA,MAAK,UAAU;AACf,WAAG,QAAQA,KAAI;AACf,eAAO;AAAA,MACR,WAAU,UAAU,KAAK,MAAM,GAAG;AACjC,QAAAA,QAAO,WAAW,KAAK,OAAO,MAAM,SAAS,EAAE,CAAC,CAAC;AACjD,QAAAA,MAAK,UAAU;AACf,WAAG,QAAQA,KAAI;AACf,eAAO;AAAA,MACb,WAAe,MAAM,KAAK;AACpB,QAAAA,QAAO,WAAW,KAAK,OAAO,KAAM,CAAA;AACpC,QAAAA,MAAK,UAAU;AACf,WAAG,QAAQA,KAAI;AACf,eAAO;AAAA,MACb;AACI,aAAO;AAAA,IACR,CAAA;AAAA,EACH;AAEAkH,YAAiB,SAASA,OAAM,KAAK,SAAS;AAC5C,QAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,WAAU,CAAC,OAAO;AAC/C,WAAO;AAAA,MACL,QAAQ,IAAI,SAAU,OAAO;AAC3B,YAAI,KAAK,CAAA;AACT,WAAG;AACD,kBAAQ,WAAW,KAAK,OAAO,EAAE;AAAA,QACzC,SAAe;AACT,eAAO;AAAA,MACR,CAAA;AAAA,IACL;AAAA,EACA;;;;;;;;AC7EA,MAAI,aAAa1H;AACjB,MAAI2zL,UAAShzL,gBAA6C;AAC1D,MAAI,MAAMW,gBAAA;AACV,MAAI,QAAQ;AACZ,MAAIpC,QAAOyD,cAAA;AAEX,MAAI,oBAAoBC,aAAA;AACxB,MAAI,MAAMC,eAAA;AACV,MAAI,oBAAoBC,eAAkB;AAE1C,MAAI,OAAO,aAAa,KAAK,KAAK,KAAK;AACvC,MAAI,0BAA0B;AAC9B,MAAI,qBAAqB;AAIzB,WAAS,gBAAgB,UAAU,UAAU;AAC3C,YAAQ,WAAW,KAAK,QAAQ,WAAW,GAAG,MAAM;AAAA,EACtD;AAEA,WAAS,cAAc,MAAM;AAC3B,QAAIiW,WAAU,KAAK,MAAM,CAAC;AAC1B,WAAO,aAAa,aAAa,KAAK,SAAU,GAAG;AACjD,aAAO,gBAAgB,GAAGA,QAAO;AAAA,IAClC,CAAA;AAAA,EACH;AAEA,WAAS,UAAU6kK,WAAU;AAC3B,WAAOA,UAAS,OAAO,SAAU7kK,UAAS;AACxC,aAAO,OAAOA,aAAY;AAAA,IAC3B,CAAA;AAAA,EACH;AAEA,WAAS,kBAAkBA,UAAS;AAClC,QAAI,eAAeA;AACnB,QAAIA,SAAQ,MAAM,GAAG,EAAE,WAAW,GAAG;AACnC,qBAAeA,SAAQ,MAAM,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,KAAK,GAAG;AAAA,IAC3D;AACE,WAAO;AAAA,EACT;AAEA,WAAS,WAAW,MAAM;AACxB,WAAO,SAAS,QAAQA,UAAS;AAC/B,aAAO,OAAO,MAAMA;AAAA,IACxB;AAAA,EACA;AAEA,WAAS,SAASA,UAAS;AACzB,WAAO,SAASA,SAAQ,MAAM,GAAG,EAAE,CAAC,CAAC;AAAA,EACvC;AAEA,WAAS,iBAAiB,UAAU/X,SAAQ;AAC1C,QAAI,SAAS,WAAW,EAAG,QAAO,CAAA;AAClC,QAAI,gBAAgB,KAAK,SAAS,IAAI,QAAQ,CAAC;AAC/C,QAAI,UAAU,cAAc,cAAc,SAASA,OAAM;AACzD,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,IACX;AACE,QAAI,WAAW,CAAA;AACf,aAAS,IAAI,SAAS,SAAS,GAAG,KAAK,GAAG,KAAK;AAC7C,UAAI,UAAU,SAAS,SAAS,CAAC,CAAC,EAAG;AACrC,eAAS,QAAQ,SAAS,CAAC,CAAC;AAAA,IAChC;AACE,WAAO;AAAA,EACT;AAEA,WAAS,KAAKuD,QAAO;AACnB,QAAI,WAAW,CAAA;AACf,aAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACrC,UAAI,SAAS,QAAQA,OAAM,CAAC,CAAC,MAAM,GAAI,UAAS,KAAKA,OAAM,CAAC,CAAC;AAAA,IACjE;AACE,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,QAAQ,MAAM,MAAM;AACrC,aAAS,KAAK,MAAM;AAClB,aAAO,OAAO,MAAM,CAAC,IAAI,KAAK,CAAC;AAAA,IACnC;AAAA,EACA;AAEA,WAAS,eAAesvL,OAAM96K,UAAS;AACrC,IAAAA,WAAU,WAAWA,QAAO;AAC5B,QAAI86K,UAAS,KAAK;AAChB,aAAO,SAAU,GAAG;AAClB,eAAO,iBAAiB,CAAC,IAAI96K;AAAA,MACnC;AAAA,IACA,WAAa86K,UAAS,MAAM;AACxB,aAAO,SAAU,GAAG;AAClB,eAAO,iBAAiB,CAAC,KAAK96K;AAAA,MACpC;AAAA,IACA,WAAa86K,UAAS,KAAK;AACvB,aAAO,SAAU,GAAG;AAClB,eAAO,WAAW,CAAC,IAAI96K;AAAA,MAC7B;AAAA,IACA,OAAS;AACL,aAAO,SAAU,GAAG;AAClB,eAAO,WAAW,CAAC,KAAKA;AAAA,MAC9B;AAAA,IACA;AAEE,aAAS,iBAAiB,GAAG;AAC3B,aAAO,WAAW,EAAE,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC;AAAA,IAC1C;AAAA,EACA;AAEA,WAAS,qBAAqB86K,OAAM96K,UAAS;AAC3C,IAAAA,WAAUA,SAAQ,MAAM,GAAG,EAAE,IAAI,cAAc;AAC/C,IAAAA,SAAQ,CAAC,IAAIA,SAAQ,CAAC,KAAK;AAC3B,IAAAA,SAAQ,CAAC,IAAIA,SAAQ,CAAC,KAAK;AAC3B,QAAI86K,UAAS,KAAK;AAChB,aAAO,SAAU,GAAG;AAClB,YAAI,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc;AACnC,eAAO,cAAc,GAAG96K,QAAO,IAAI;AAAA,MACzC;AAAA,IACA,WAAa86K,UAAS,MAAM;AACxB,aAAO,SAAU,GAAG;AAClB,YAAI,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc;AACnC,eAAO,cAAc,GAAG96K,QAAO,KAAK;AAAA,MAC1C;AAAA,IACA,WAAa86K,UAAS,KAAK;AACvB,aAAO,SAAU,GAAG;AAClB,YAAI,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc;AACnC,eAAO,cAAc96K,UAAS,CAAC,IAAI;AAAA,MACzC;AAAA,IACA,OAAS;AACL,aAAO,SAAU,GAAG;AAClB,YAAI,EAAE,MAAM,GAAG,EAAE,IAAI,cAAc;AACnC,eAAO,cAAcA,UAAS,CAAC,KAAK;AAAA,MAC1C;AAAA,IACA;AAAA,EACA;AAEA,WAAS,eAAe,GAAG;AACzB,WAAO,SAAS,CAAC;AAAA,EACnB;AAEA,WAAS,QAAQ,GAAG,GAAG;AACrB,QAAI,IAAI,EAAG,QAAO;AAClB,QAAI,IAAI,EAAG,QAAO;AAClB,WAAO;AAAA,EACT;AAEA,WAAS,cAAc,GAAG,GAAG;AAC3B,WACE,QAAQ,SAAS,EAAE,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC,KACtC,QAAQ,SAAS,EAAE,CAAC,KAAK,GAAG,GAAG,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC,KACpD,QAAQ,SAAS,EAAE,CAAC,KAAK,GAAG,GAAG,SAAS,EAAE,CAAC,KAAK,GAAG,CAAC;AAAA,EAExD;AAGA,WAAS,kBAAkB,UAAU,OAAO;AAC1C,YAAQ,MAAM,MAAM,GAAG,EAAE,IAAI,cAAc;AAC3C,QAAI,OAAO,MAAM,CAAC,MAAM,aAAa;AACnC,YAAM,CAAC,IAAI;AAAA,IACf;AAGE,YAAQ,UAAQ;AAAA,MACd,KAAK;AACH,eAAO,SAAUA,UAAS;AACxB,UAAAA,WAAUA,SAAQ,MAAM,GAAG,EAAE,IAAI,cAAc;AAC/C,iBAAO,mBAAmBA,UAAS,KAAK,KAAK;AAAA,QACrD;AAAA,MACI,KAAK;AAAA,MACL;AACE,eAAO,SAAUA,UAAS;AACxB,UAAAA,WAAUA,SAAQ,MAAM,GAAG,EAAE,IAAI,cAAc;AAC/C,iBAAO,mBAAmBA,UAAS,KAAK,KAAK;AAAA,QACrD;AAAA,IACA;AAAA,EACA;AAGA,WAAS,mBAAmBA,UAAS,OAAO;AAC1C,QAAIA,SAAQ,CAAC,MAAM,MAAM,CAAC,GAAG;AAC3B,aAAOA,SAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK;AAAA,IACxC;AACE,QAAI,MAAM,CAAC,MAAM,KAAK;AACpB,aAAO;AAAA,IACX;AACE,QAAIA,SAAQ,CAAC,MAAM,MAAM,CAAC,GAAG;AAC3B,aAAOA,SAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK;AAAA,IACxC;AACE,WAAO;AAAA,EACT;AAEA,WAAS,eAAe,MAAMA,UAAS;AACrC,QAAI,KAAK,SAAS,QAAQA,QAAO,MAAM,IAAI;AACzC,aAAOA;AAAA,IACX,WAAa,aAAa,eAAe,KAAK,IAAI,EAAEA,QAAO,GAAG;AAC1D,aAAO,aAAa,eAAe,KAAK,IAAI,EAAEA,QAAO;AAAA,IACzD,OAAS;AACL,aAAO;AAAA,IACX;AAAA,EACA;AAEA,WAAS,iBAAiB,MAAMA,UAAS;AACvC,QAAI,WAAW,eAAe,MAAMA,QAAO;AAC3C,QAAI,UAAU;AACZ,aAAO;AAAA,IACR,WAAU,KAAK,SAAS,WAAW,GAAG;AACrC,aAAO,KAAK,SAAS,CAAC;AAAA,IAC1B,OAAS;AACL,aAAO;AAAA,IACX;AAAA,EACA;AAEA,WAAS,aAAa,OAAOP,UAAS;AACpC,YAAQ,QAAQ;AAChB,WAAO,OAAO,KAAKm7K,OAAM,EAAE,OAAO,SAAU,UAAU,MAAM;AAC1D,UAAI,OAAO,OAAO,MAAMn7K,QAAO;AAC/B,UAAI,CAAC,KAAM,QAAO;AAClB,UAAIolK,YAAW,OAAO,KAAK,KAAK,WAAW,EAAE,OAAO,SAAU,GAAG;AAC/D,YAAI,OAAO,KAAK,YAAY,CAAC;AAC7B,eAAO,SAAS,QAAQ,QAAQ;AAAA,MACjC,CAAA;AACD,aAAO,SAAS,OAAOA,UAAS,IAAI,WAAW,KAAK,IAAI,CAAC,CAAC;AAAA,IAC9D,GAAK,CAAE,CAAA;AAAA,EACP;AAEA,WAAS,UAAU,MAAM;AACvB,WAAO;AAAA,MACL,MAAM,KAAK;AAAA,MACX,UAAU,KAAK;AAAA,MACf,UAAU,KAAK;AAAA,MACf,aAAa,KAAK;AAAA,IACtB;AAAA,EACA;AAEA,WAAS,OAAO,MAAMplK,UAAS;AAC7B,WAAO,KAAK,YAAW;AACvB,WAAO,aAAa,QAAQ,IAAI,KAAK;AACrC,QAAIA,SAAQ,mBAAmB,aAAa,aAAa,IAAI,GAAG;AAC9D,UAAI,UAAU,aAAa,KAAK,aAAa,aAAa,IAAI,CAAC;AAC/D,UAAI,SAAS,WAAW;AACtB,eAAO,qBAAqB,UAAU,aAAa,KAAK,IAAI,CAAC,GAAG,OAAO;AAAA,MAC7E,OAAW;AACL,YAAI,SAAS,UAAU,OAAO;AAC9B,eAAO,OAAO;AACd,eAAO;AAAA,MACb;AAAA,IACA;AACE,WAAO,aAAa,KAAK,IAAI;AAAA,EAC/B;AAEA,WAAS,yBAAyB,iBAAiB,gBAAgB;AACjE,QAAI,kBAAkB,eAAe,QAAQ,uBAAuB;AACpE,WAAO,gBACJ,OAAO,SAAUO,UAAS;AACzB,aAAO,qBAAqB,KAAKA,QAAO;AAAA,IACzC,CAAA,EACA,OAAO,eAAe,MAAM,eAAe,CAAC;AAAA,EACjD;AAEA,WAAS,WAAW,KAAK;AACvB,QAAI,OAAO,CAAA;AACX,aAAS9Y,QAAO,KAAK;AACnB,WAAKA,IAAG,IAAI,IAAIA,IAAG;AAAA,IACvB;AACE,WAAO;AAAA,EACT;AAEA,WAAS,qBAAqB,SAAS,QAAQ;AAC7C,YAAQ,WAAW,yBAAyB,QAAQ,UAAU,OAAO,QAAQ;AAC7E,YAAQ,WAAW,yBAAyB,QAAQ,UAAU,OAAO,QAAQ;AAC7E,YAAQ,cAAc,WAAW,QAAQ,WAAW;AACpD,YAAQ,SAAS,QAAQ,SAAU,GAAG;AACpC,UAAI,QAAQ,YAAY,CAAC,MAAM,QAAW;AACxC,gBAAQ,YAAY,CAAC,IAAI,OAAO,YAAY,CAAC;AAAA,MACnD;AAAA,IACG,CAAA;AACD,WAAO;AAAA,EACT;AAEA,WAAS,UAAU,MAAMuY,UAAS;AAChC,QAAI,OAAO,OAAO,MAAMA,QAAO;AAC/B,QAAI,CAAC,KAAM,OAAM,IAAI,kBAAkB,qBAAqB,IAAI;AAChE,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,OAAO;AAC3B,WAAO,IAAI;AAAA,MACT,4BACE,QACA;AAAA,IAEN;AAAA,EACA;AAIA,WAAS,YAAYzW,OAAM,MAAM,WAAWyW,UAAS;AACnD,QAAI,OAAO;AACX,YAAQ,MAAI;AAAA,MACV,KAAK;AACH,YAAIA,SAAQ,gBAAiB,QAAOzW;AACpC,YAAI,WAAW,aAAa,KAAK,OAAO;AACxC,eAAO,SAAS,SAAS,SAAS,QAAQ,uBAAuB;AACjE;AAAA,MACF,KAAK;AACH,YAAI,SAAS,aAAa,KAAK,OAAO,SAAS,MAAM,EAAE,EAAE,CAAC;AAC1D,eAAO,SAAS,MAAM,IAAI,qBAAqB;AAC/C;AAAA,MACF;AACE,eAAOA;AAAA,IACb;AACE,QAAI,aAAa,MAAM;AACrB,aAAOA,MAAK,MAAM,EAAE;AAAA,IACxB;AACE,WAAOA,MAAK,MAAM,OAAO,IAAI,SAAS;AAAA,EACxC;AAEA,WAAS,YAAY,OAAO,aAAa;AACvC,WACE,OAAO,UAAU,aAChB,MAAM,QAAQ,GAAG,KAAK,KAAM,eAAe,MAAM,QAAQ,GAAG,KAAK;AAAA,EAEtE;AAEA,WAAS,QAAQ,SAASyW,UAAS;AACjC,WAAO,aAAa,OAAO,EAAE,OAAO,SAAU,QAAQhY,OAAMV,QAAO;AACjE,UAAIU,MAAK,OAAOV,WAAU,GAAG;AAC3B,cAAM,IAAI;AAAA,UACR,iEAEEU,MAAK,QACL;AAAA,QACV;AAAA,MACA;AACI,UAAI,OAAO,QAAQA,MAAK,IAAI;AAC5B,UAAI+D,SAAQ,KAAK,OAAO,KAAK,cAAciU,UAAShY,KAAI,EAAE,IAAI,SAAU,GAAG;AACzE,YAAI,QAAQ,EAAE,MAAM,GAAG;AACvB,YAAI,MAAM,CAAC,MAAM,KAAK;AACpB,iBAAO,MAAM,CAAC,IAAI,MAAM,OAAO,MAAM,CAAC,GAAGgY,QAAO,EAAE,SAAS,CAAC;AAAA,QACpE,OAAa;AACL,iBAAO;AAAA,QACf;AAAA,MACK,CAAA;AAED,UAAIhY,MAAK,YAAY,OAAO;AAC1B,YAAIA,MAAK,KAAK;AACZ,iBAAO,OAAO,OAAO,SAAU,GAAG;AAChC,mBAAO+D,OAAM,QAAQ,CAAC,MAAM;AAAA,UAC7B,CAAA;AAAA,QACT,OAAa;AACL,iBAAO,OAAO,OAAO,SAAU,GAAG;AAChC,mBAAOA,OAAM,QAAQ,CAAC,MAAM;AAAA,UAC7B,CAAA;AAAA,QACT;AAAA,MACA,OAAW;AACL,YAAI/D,MAAK,KAAK;AACZ,cAAI,SAAS,CAAA;AACb,UAAA+D,OAAM,QAAQ,SAAU,GAAG;AACzB,mBAAO,CAAC,IAAI;AAAA,UACb,CAAA;AACD,iBAAO,OAAO,OAAO,SAAU,GAAG;AAChC,mBAAO,CAAC,OAAO,CAAC;AAAA,UACjB,CAAA;AAAA,QACT;AACM,eAAO,OAAO,OAAOA,MAAK;AAAA,MAChC;AAAA,IACA,GAAK,CAAE,CAAA;AAAA,EACP;AAEA,WAAS,YAAY,MAAM;AACzB,QAAI,OAAO,SAAS,YAAa,QAAO,CAAA;AAExC,QAAI,OAAO,KAAK,SAAS,aAAa;AACpC,WAAK,OAAOrF,MAAK,UAAUA,MAAK,QAAQ,GAAG,IAAI;AAAA,IACnD;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,eAAe,SAAS,MAAM;AACrC,QAAI,OAAO,YAAY,eAAe,YAAY,MAAM;AACtD,UAAI0C,UAAS,aAAa,WAAW,IAAI;AACzC,UAAIA,SAAQ;AACV,kBAAUA;AAAA,MAChB,OAAW;AACL,kBAAU,aAAa;AAAA,MAC7B;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,SAAS;AAC7B,QAAI,EAAE,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,IAAI;AAC5D,YAAM,IAAI;AAAA,QACR,qDAAqD,OAAO,UAAU;AAAA,MAC5E;AAAA,IACA;AAAA,EACA;AAEA,MAAIa,SAAQ,CAAA;AACZ,MAAI,aAAa,CAAA;AAEjB,WAAS,aAAa,SAAS,MAAM;AACnC,WAAO,YAAY,IAAI;AACvB,cAAU,eAAe,SAAS,IAAI;AACtC,iBAAa,OAAO;AAEpB,QAAI,YAAY,aAAa,OAAO,EAAE,KAAK,SAAUjC,OAAM;AACzD,aAAO,QAAQA,MAAK,IAAI,EAAE;AAAA,IAC3B,CAAA;AACD,QAAIgY,WAAU;AAAA,MACZ,uBAAuB,KAAK;AAAA,MAC5B,iBAAiB,KAAK;AAAA,MACtB,iBAAiB,KAAK;AAAA,MACtB,KAAK,KAAK;AAAA,IACd;AAEE,QAAI,WAAW;AACb,MAAAA,SAAQ,OAAO,KAAK;AAAA,IACxB;AAEE,QAAI,eAAe,aAAa,IAAI;AACpC,QAAI,QAAQ,IAAI,QAAQ,MAAM,aAAa,IAAI;AAC/C,QAAI,OAAO;AACT,MAAAA,SAAQ,cAAc,CAAA;AACtB,eAAS1X,YAAW,OAAO;AACzB,kBAAU0X,SAAQ,aAAa1X,UAAS,MAAMA,QAAO,CAAC;AAAA,MAC5D;AAAA,IACA;AAEE,QAAI,WAAW,KAAK,UAAU,CAAC,SAAS0X,QAAO,CAAC;AAChD,QAAI/V,OAAM,QAAQ,EAAG,QAAOA,OAAM,QAAQ;AAE1C,QAAI,SAAS,KAAK,QAAQ,SAAS+V,QAAO,CAAC,EAAE,KAAK,SAAU,OAAO,OAAO;AACxE,cAAQ,MAAM,MAAM,GAAG;AACvB,cAAQ,MAAM,MAAM,GAAG;AACvB,UAAI,MAAM,CAAC,MAAM,MAAM,CAAC,GAAG;AAIzB,YAAI,WAAW,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACpC,YAAI,WAAW,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACpC,eAAO,cAAc,SAAS,MAAM,GAAG,GAAG,SAAS,MAAM,GAAG,CAAC;AAAA,MACnE,OAAW;AACL,eAAO,QAAQ,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;AAAA,MACvC;AAAA,IACG,CAAA;AACD,QAAI,CAAC,IAAI,IAAI,4BAA4B;AACvC,MAAA/V,OAAM,QAAQ,IAAI;AAAA,IACtB;AACE,WAAO;AAAA,EACT;AAEA,WAAS,aAAa,SAAS;AAC7B,QAAI,WAAW,KAAK,UAAU,OAAO;AACrC,QAAI,YAAY,WAAY,QAAO,WAAW,QAAQ;AACtD,QAAI,SAAS,kBAAkB,SAAS,OAAO;AAC/C,QAAI,CAAC,IAAI,IAAI,4BAA4B;AACvC,iBAAW,QAAQ,IAAI;AAAA,IAC3B;AACE,WAAO;AAAA,EACT;AAEA,eAAa,QAAQ,SAAU,SAAS,MAAM;AAC5C,WAAO,YAAY,IAAI;AACvB,cAAU,eAAe,SAAS,IAAI;AACtC,iBAAa,OAAO;AACpB,WAAO,aAAa,OAAO;AAAA,EAC7B;AAGA,eAAa,QAAQ,CAAA;AACrB,eAAa,OAAO,CAAA;AACpB,eAAa,QAAQ;AAAA,IACnB,QAAQ,CAAE;AAAA,IACV,QAAQ;AAAA,EACV;AAGA,eAAa,WAAW,CAAC,UAAU,mBAAmB,eAAe,UAAU;AAG/E,eAAa,UAAU;AAAA,IACrB,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,UAAU;AAAA,IACV,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,aAAa;AAAA,IACb,eAAe;AAAA,IACf,gBAAgB;AAAA,IAChB,WAAW;AAAA,IACX,WAAW;AAAA,EACb;AAKA,eAAa,eAAe;AAAA,IAC1B,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,SAAS;AAAA;AAAA,EACX;AAGA,eAAa,iBAAiB,CAAA;AAE9B,eAAa,cAAc,IAAI;AAC/B,eAAa,cAAc,IAAI;AAC/B,eAAa,aAAa,IAAI;AAC9B,eAAa,iBAAiB,IAAI;AAClC,eAAa,aAAa,IAAI;AAC9B,eAAa,aAAa,IAAI;AAE9B,eAAa,WAAW,SAAUgxL,WAAU,OAAO;AACjD,QAAI;AACJ,QAAI,OAAO,UAAU,aAAa;AAChC,aAAO,aAAa,MAAM;AAAA,IAC9B,WAAa,UAAU,YAAY;AAC/B,UAAI,OAAO,CAAA;AACX,WAAK,OAAOv0L,MAAK,UAAUA,MAAK,QAAQ,GAAG,IAAI;AAC/C,UAAI,cAAc,IAAI,QAAQ,IAAI;AAClC,UAAI,CAAC,aAAa;AAChB,cAAM,IAAI,kBAAkB,0CAA0C;AAAA,MAC5E;AACI,aAAO,CAAA;AACP,eAAS4B,YAAW,aAAa;AAC/B,kBAAU,MAAMA,UAAS,YAAYA,QAAO,CAAC;AAAA,MACnD;AAAA,IACA,WAAa,OAAO,UAAU,UAAU;AACpC,UAAI,MAAM,SAAS,GAAG;AACpB,gBAAQ,MAAM,YAAW;AAAA,MAC/B,OAAW;AACL,gBAAQ,MAAM,YAAW;AAAA,MAC/B;AACI,UAAI,YAAY,aAAa,OAAO,OAAO,aAAa,IAAI;AAC5D,aAAO,aAAa,MAAM,KAAK;AAAA,IACnC,OAAS;AACL,UAAI,mBAAmB,OAAO;AAC5B,gBAAQ,MAAM;AAAA,MACpB;AACI,aAAO,CAAA;AACP,eAAS,QAAQ,OAAO;AACtB,iBAASiY,YAAW,MAAM,IAAI,GAAG;AAC/B,eAAK,OAAO,MAAMA,QAAO,IAAI,MAAM,IAAI,EAAEA,QAAO;AAAA,QACxD;AAAA,MACA;AAAA,IACA;AAEE,WAAO06K,UAAS,OAAO,SAAU,KAAK,GAAG;AACvC,UAAI,QAAQ,KAAK,CAAC;AAClB,UAAI,UAAU,QAAW;AACvB,gBAAQ,KAAK,EAAE,QAAQ,SAAS,IAAI,CAAC;AAAA,MAC3C;AACI,aAAO,OAAO,SAAS;AAAA,IAC3B,GAAK,CAAC;AAAA,EACN;AAEA,WAAS,UAAUj7K,UAAShY,OAAM;AAChC,QAAI,UAAU,aAAa,aAAa,OAAO,SAAU,GAAG;AAC1D,aAAO,gBAAgB,GAAGA,MAAK,OAAO;AAAA,IACvC,CAAA;AACD,QAAI,QAAQ,WAAW,GAAG;AACxB,UAAIgY,SAAQ,uBAAuB;AACjC,eAAO,CAAA;AAAA,MACb,OAAW;AACL,cAAM,IAAI;AAAA,UACR,qBAAqBhY,MAAK,UAAU;AAAA,QAC5C;AAAA,MACA;AAAA,IACA;AACE,WAAO,CAAC,UAAU,QAAQ,QAAQ,SAAS,CAAC,CAAC;AAAA,EAC/C;AAEA,WAAS,WAAWgY,UAAShY,OAAM;AACjC,QAAI,OAAO,SAASA,MAAK,IAAI;AAC7B,QAAI,QAAQ,SAASA,MAAK,SAAS,IAAI,IAAI;AAC3C,QAAI,MAAM,SAASA,MAAK,OAAO,IAAI;AACnC,WAAO,aAAa,KAAK,IAAI,MAAM,OAAO,KAAK,GAAG,GAAG,CAAC,GAAGgY,QAAO;AAAA,EAClE;AAEA,WAAS,WAAWA,UAAShY,OAAM;AACjC,QAAI,WAAW,WAAWA,MAAK,QAAQ;AACvC,QAAI,QAAQ,aAAa,MAAM;AAC/B,QAAIA,MAAK,OAAO;AACd,UAAIA,MAAK,MAAM,MAAM,eAAe,GAAG;AACrC,YAAI,CAACgY,SAAQ,aAAa;AACxB,gBAAM,IAAI,kBAAkB,0CAA0C;AAAA,QAC9E;AACM,gBAAQA,SAAQ;AAAA,MACtB,OAAW;AACL,YAAI;AACJ,YAAIhY,MAAK,MAAM,WAAW,GAAG;AAC3B,kBAAQA,MAAK,MAAM,YAAW;AAAA,QACtC,OAAa;AACL,kBAAQA,MAAK,MAAM,YAAW;AAAA,QACtC;AACM,YAAI,YAAY,aAAa,OAAO,OAAO,aAAa,IAAI;AAC5D,gBAAQ,aAAa,MAAM,KAAK;AAAA,MACtC;AAAA,IACA;AACE,QAAIo9K,YAAW,OAAO,KAAK,KAAK,EAAE,KAAK,SAAU,GAAG,GAAG;AACrD,aAAO,MAAM,CAAC,IAAI,MAAM,CAAC;AAAA,IAC1B,CAAA;AACD,QAAI,YAAY;AAChB,QAAI,SAAS,CAAA;AACb,QAAI7kK;AACJ,aAAS,IAAI,GAAG,IAAI6kK,UAAS,QAAQ,KAAK;AACxC,MAAA7kK,WAAU6kK,UAAS,CAAC;AACpB,UAAI,MAAM7kK,QAAO,MAAM,EAAG;AAC1B,mBAAa,MAAMA,QAAO;AAC1B,aAAO,KAAKA,QAAO;AACnB,UAAI,aAAa,SAAU;AAAA,IAC/B;AACE,WAAO;AAAA,EACT;AAEA,MAAI,UAAU;AAAA,IACZ,qBAAqB;AAAA,MACnB,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,eAAO,OAAO,KAAKmzL,OAAM,EAAE,OAAO,SAAU,UAAU,MAAM;AAC1D,cAAI,OAAO,OAAO,MAAMn7K,QAAO;AAC/B,cAAI,CAAC,KAAM,QAAO;AAClB,cAAIzW,QAAO,iBAAiB,KAAK,UAAUvB,MAAK,QAAQ;AACxD,UAAAuB,QAAOA,MAAK,IAAI,WAAW,KAAK,IAAI,CAAC;AACrC,UAAAA,QAAO,YAAYA,OAAM,KAAK,MAAMvB,MAAK,UAAUgY,QAAO;AAC1D,iBAAO,SAAS,OAAOzW,KAAI;AAAA,QACnC,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,eAAe;AAAA,MACb,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUyW,UAAShY,OAAM;AAC/B,eAAO,OAAO,KAAKmzL,OAAM,EAAE,OAAO,SAAU,UAAU,MAAM;AAC1D,cAAI,OAAO,OAAO,MAAMn7K,QAAO;AAC/B,cAAI,CAAC,KAAM,QAAO;AAClB,cAAIzW,QAAO,KAAK,SAAS,MAAM,CAACvB,MAAK,QAAQ;AAC7C,UAAAuB,QAAOA,MAAK,IAAI,WAAW,KAAK,IAAI,CAAC;AACrC,UAAAA,QAAO,YAAYA,OAAM,KAAK,MAAMvB,MAAK,UAAUgY,QAAO;AAC1D,iBAAO,SAAS,OAAOzW,KAAI;AAAA,QACnC,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,8BAA8B;AAAA,MAC5B,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUyW,UAAShY,OAAM;AAC/B,YAAI,gBAAgB,iBAAiB,OAAO,KAAK,GAAG,GAAGA,MAAK,QAAQ;AACpE,eAAO,cAAc,IAAI,SAAU,GAAG;AACpC,iBAAO,YAAY,IAAI,CAAC;AAAA,QACzB,CAAA;AAAA,MACP;AAAA,IACG;AAAA,IACD,0BAA0B;AAAA,MACxB,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,eAAO,iBAAiB,aAAa,cAAcA,MAAK,QAAQ,EAAE;AAAA,UAChE,SAAUuY,UAAS;AACjB,mBAAO,UAAUA;AAAA,UAC3B;AAAA,QACA;AAAA,MACA;AAAA,IACG;AAAA,IACD,6BAA6B;AAAA,MAC3B,SAAS,CAAC,YAAY,SAAS;AAAA,MAC/B,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,OAAO,UAAUA,MAAK,SAASgY,QAAO;AAC1C,YAAI,gBAAgB,iBAAiB,KAAK,UAAUhY,MAAK,QAAQ;AACjE,YAAIuB,QAAO,cAAc,IAAI,WAAW,KAAK,IAAI,CAAC;AAClD,QAAAA,QAAO,YAAYA,OAAM,KAAK,MAAMvB,MAAK,UAAUgY,QAAO;AAC1D,eAAOzW;AAAA,MACb;AAAA,IACG;AAAA,IACD,wBAAwB;AAAA,MACtB,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUyW,UAAShY,OAAM;AAC/B,eAAO,OAAO,KAAK,GAAG,EACnB,MAAM,CAACA,MAAK,QAAQ,EACpB,IAAI,SAAU,GAAG;AAChB,iBAAO,YAAY,IAAI,CAAC;AAAA,QACzB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,oBAAoB;AAAA,MAClB,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,eAAO,aAAa,aACjB,MAAM,CAACA,MAAK,QAAQ,EACpB,IAAI,SAAUuY,UAAS;AACtB,iBAAO,UAAUA;AAAA,QAClB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,uBAAuB;AAAA,MACrB,SAAS,CAAC,YAAY,SAAS;AAAA,MAC/B,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,OAAO,UAAUA,MAAK,SAASgY,QAAO;AAC1C,YAAIzW,QAAO,KAAK,SAAS,MAAM,CAACvB,MAAK,QAAQ,EAAE,IAAI,WAAW,KAAK,IAAI,CAAC;AACxE,QAAAuB,QAAO,YAAYA,OAAM,KAAK,MAAMvB,MAAK,UAAUgY,QAAO;AAC1D,eAAOzW;AAAA,MACb;AAAA,IACG;AAAA,IACD,qBAAqB;AAAA,MACnB,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUyW,UAAS;AACzB,eAAO,OAAO,KAAKm7K,OAAM,EAAE,OAAO,SAAU,UAAU,MAAM;AAC1D,cAAI,OAAO,OAAO,MAAMn7K,QAAO;AAC/B,cAAI,CAAC,KAAM,QAAO;AAClB,cAAIzW,QAAO,KAAK,SAAS,OAAO,SAAU,GAAG;AAC3C,mBAAO,KAAK,SAAS,QAAQ,CAAC,MAAM;AAAA,UACrC,CAAA;AACD,UAAAA,QAAOA,MAAK,IAAI,WAAW,KAAK,IAAI,CAAC;AACrC,iBAAO,SAAS,OAAOA,KAAI;AAAA,QACnC,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,8BAA8B;AAAA,MAC5B,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,WAAY;AAClB,eAAO,CAAA;AAAA,MACb;AAAA,IACG;AAAA,IACD,6BAA6B;AAAA,MAC3B,SAAS,CAAC,SAAS;AAAA,MACnB,QAAQ;AAAA,MACR,QAAQ,SAAUyW,UAAShY,OAAM;AAC/B,YAAI,OAAO,UAAUA,MAAK,SAASgY,QAAO;AAC1C,eAAO,KAAK,SACT,OAAO,SAAU,GAAG;AACnB,iBAAO,KAAK,SAAS,QAAQ,CAAC,MAAM;AAAA,QACrC,CAAA,EACA,IAAI,WAAW,KAAK,IAAI,CAAC;AAAA,MAClC;AAAA,IACG;AAAA,IACD,YAAY;AAAA,MACV,SAAS,CAAC,OAAO;AAAA,MACjB,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAShY,OAAM;AAC/B,eAAO,aAAa,KAAK,IAAG,IAAK,OAAOA,MAAK,OAAOgY,QAAO;AAAA,MACjE;AAAA,IACG;AAAA,IACD,SAAS;AAAA,MACP,SAAS,CAAC,MAAM;AAAA,MAChB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,WAAW;AAAA,MACT,SAAS,CAAC,QAAQ,OAAO;AAAA,MACzB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,aAAa;AAAA,MACX,SAAS,CAAC,QAAQ,SAAS,KAAK;AAAA,MAChC,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,YAAY;AAAA,MACV,SAAS,CAAC,QAAQ,YAAY;AAAA,MAC9B,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAShY,OAAM;AAC/B,YAAI,aAAa,WAAWA,MAAK,UAAU;AAC3C,YAAI,QAAQ,aAAa,MAAM;AAC/B,eAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAU,QAAQuY,UAAS;AAC1D,cAAIvY,MAAK,SAAS,KAAK;AACrB,gBAAI,MAAMuY,QAAO,IAAI,YAAY;AAC/B,qBAAO,KAAKA,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,KAAK;AAC5B,gBAAI,MAAMuY,QAAO,IAAI,YAAY;AAC/B,qBAAO,KAAKA,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,MAAM;AAC7B,gBAAI,MAAMuY,QAAO,KAAK,YAAY;AAChC,qBAAO,KAAKA,QAAO;AAAA,YAC/B;AAAA,UACS,WAAU,MAAMA,QAAO,KAAK,YAAY;AACvC,mBAAO,KAAKA,QAAO;AAAA,UAC7B;AACQ,iBAAO;AAAA,QACf,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,wBAAwB;AAAA,MACtB,SAAS,CAAC,QAAQ,YAAY;AAAA,MAC9B,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,aAAa,WAAWA,MAAK,UAAU;AAC3C,YAAI,CAACgY,SAAQ,aAAa;AACxB,gBAAM,IAAI,kBAAkB,0CAA0C;AAAA,QAC9E;AACM,YAAI,QAAQA,SAAQ;AACpB,eAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAU,QAAQO,UAAS;AAC1D,cAAI,aAAa,MAAMA,QAAO;AAC9B,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACjB;AAEQ,cAAIvY,MAAK,SAAS,KAAK;AACrB,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,KAAK;AAC5B,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,MAAM;AAC7B,gBAAI,cAAc,YAAY;AAC5B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmB,cAAc,YAAY;AACnC,mBAAO,KAAKA,QAAO;AAAA,UAC7B;AACQ,iBAAO;AAAA,QACf,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,4BAA4B;AAAA,MAC1B,SAAS,CAAC,QAAQ,cAAc,QAAQ;AAAA,MACxC,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,aAAa,WAAWA,MAAK,UAAU;AAC3C,YAAI,QAAQ,IAAI,SAASgY,UAAShY,MAAK,QAAQ,aAAa,IAAI;AAChE,YAAI,OAAO;AACT,UAAAgY,SAAQ,cAAc,CAAA;AACtB,mBAAS1X,YAAW,OAAO;AACzB,sBAAU0X,SAAQ,aAAa1X,UAAS,MAAMA,QAAO,CAAC;AAAA,UAChE;AAAA,QACA;AACM,YAAI,CAAC0X,SAAQ,aAAa;AACxB,gBAAM,IAAI,kBAAkB,0CAA0C;AAAA,QAC9E;AACM,YAAI,QAAQA,SAAQ;AACpB,eAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAU,QAAQO,UAAS;AAC1D,cAAI,aAAa,MAAMA,QAAO;AAC9B,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACjB;AAEQ,cAAIvY,MAAK,SAAS,KAAK;AACrB,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,KAAK;AAC5B,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,MAAM;AAC7B,gBAAI,cAAc,YAAY;AAC5B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmB,cAAc,YAAY;AACnC,mBAAO,KAAKA,QAAO;AAAA,UAC7B;AACQ,iBAAO;AAAA,QACf,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,qBAAqB;AAAA,MACnB,SAAS,CAAC,QAAQ,cAAc,OAAO;AAAA,MACvC,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,aAAa,WAAWA,MAAK,UAAU;AAC3C,YAAI,QAAQA,MAAK;AACjB,YAAI,MAAM,WAAW,GAAG;AACtB,kBAAQ,MAAM,YAAW;AAAA,QACjC,OAAa;AACL,kBAAQ,MAAM,YAAW;AAAA,QACjC;AACM,YAAI,YAAY,aAAa,OAAO,OAAO,aAAa,IAAI;AAC5D,YAAI,QAAQ,aAAa,MAAM,KAAK;AACpC,eAAO,OAAO,KAAK,KAAK,EAAE,OAAO,SAAU,QAAQuY,UAAS;AAC1D,cAAI,aAAa,MAAMA,QAAO;AAC9B,cAAI,cAAc,MAAM;AACtB,mBAAO;AAAA,UACjB;AAEQ,cAAIvY,MAAK,SAAS,KAAK;AACrB,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,KAAK;AAC5B,gBAAI,aAAa,YAAY;AAC3B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmBvY,MAAK,SAAS,MAAM;AAC7B,gBAAI,cAAc,YAAY;AAC5B,qBAAO,KAAKuY,QAAO;AAAA,YAC/B;AAAA,UACA,WAAmB,cAAc,YAAY;AACnC,mBAAO,KAAKA,QAAO;AAAA,UAC7B;AACQ,iBAAO;AAAA,QACf,GAAS,CAAE,CAAA;AAAA,MACX;AAAA,IACG;AAAA,IACD,OAAO;AAAA,MACL,SAAS,CAAC,UAAU;AAAA,MACpB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,UAAU;AAAA,MACR,SAAS,CAAC,YAAY,OAAO;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,UAAU;AAAA,MACR,SAAS,CAAC,eAAe,SAAS;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,YAAY,aAAa,OAAOA,MAAK,OAAO;AAChD,YAAI,cAAcA,MAAK,gBAAgB;AACvC,YAAIszL,YAAW,aAAa,MAAMtzL,MAAK,OAAO;AAC9C,YAAI,SAAS,CAAA;AACb,iBAAS,QAAQszL,WAAU;AACzB,cAAI,OAAO,OAAO,MAAMt7K,QAAO;AAE/B,cAAI,OAAO,KAAK,SAAS,SAAS;AAClC,iBAAO,QAAQ,GAAG;AAChB,gBAAI,KAAK,SAAS,IAAI,KAAKs7K,UAAS,IAAI,EAAG;AAC3C;AAAA,UACV;AACQ,cAAI,eACFt7K,SAAQ,mBACR,QAAQ,aAAa,gBACrB,YAAYs7K,UAAS,IAAI,EAAE,KAAK,SAAS,IAAI,CAAC,GAAG,WAAW;AAC9D,eAAK,SAAS,QAAQ,SAAU/6K,UAAS;AACvC,gBAAI,QAAQ+6K,UAAS,IAAI,EAAE/6K,QAAO;AAClC,gBAAI,UAAU,UAAa,cAAc;AACvC,sBAAQ+6K,UAAS,aAAa,aAAa,IAAI,CAAC,EAAE/6K,QAAO;AAAA,YACrE;AACU,gBAAI,YAAY,OAAO,WAAW,GAAG;AACnC,qBAAO,KAAK,OAAO,MAAMA,QAAO;AAAA,YAC5C;AAAA,UACS,CAAA;AAAA,QACT;AACM,eAAO;AAAA,MACb;AAAA,IACG;AAAA,IACD,gBAAgB;AAAA,MACd,SAAS,CAAC,QAAQ,IAAI;AAAA,MACtB,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,YAAY,kBAAkBA,MAAK,IAAI;AAC3C,YAAI,UAAU,kBAAkBA,MAAK,EAAE;AACvC,YAAI,OAAO,WAAWA,MAAK,IAAI;AAC/B,YAAI,KAAK,WAAWA,MAAK,EAAE;AAC3B,YAAI,CAAC,IAAI,SAAS,GAAG;AACnB,gBAAM,IAAI,kBAAkB,qBAAqB,OAAO,cAAc;AAAA,QAC9E;AACM,YAAI,CAAC,IAAI,OAAO,GAAG;AACjB,gBAAM,IAAI,kBAAkB,qBAAqB,KAAK,cAAc;AAAA,QAC5E;AACM,eAAO,OAAO,KAAK,GAAG,EACnB,OAAO,SAAU,GAAG;AACnB,cAAI,SAAS,WAAW,CAAC;AACzB,iBAAO,UAAU,QAAQ,UAAU;AAAA,QACpC,CAAA,EACA,IAAI,SAAU,GAAG;AAChB,iBAAO,YAAY,IAAI,CAAC;AAAA,QACzB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,YAAY;AAAA,MACV,SAAS,CAAC,QAAQ,IAAI;AAAA,MACtB,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,eAAO,aAAa,aACjB,OAAO,kBAAkB,MAAMA,MAAK,IAAI,CAAC,EACzC,OAAO,kBAAkB,MAAMA,MAAK,EAAE,CAAC,EACvC,IAAI,SAAU,GAAG;AAChB,iBAAO,UAAU;AAAA,QAClB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,eAAe;AAAA,MACb,SAAS,CAAC,WAAW,QAAQ,IAAI;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,YAAI,OAAO,UAAUA,MAAK,SAASgY,QAAO;AAC1C,YAAI,OAAO,WAAW,iBAAiB,MAAMhY,MAAK,IAAI,KAAKA,MAAK,IAAI;AACpE,YAAI,KAAK,WAAW,iBAAiB,MAAMA,MAAK,EAAE,KAAKA,MAAK,EAAE;AAC9D,iBAAS,OAAO,GAAG;AACjB,cAAI,SAAS,WAAW,CAAC;AACzB,iBAAO,UAAU,QAAQ,UAAU;AAAA,QAC3C;AACM,eAAO,KAAK,SAAS,OAAO,MAAM,EAAE,IAAI,WAAW,KAAK,IAAI,CAAC;AAAA,MACnE;AAAA,IACG;AAAA,IACD,cAAc;AAAA,MACZ,SAAS,CAAC,QAAQ,SAAS;AAAA,MAC3B,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,YAAI,eAAe,kBAAkBA,MAAK,OAAO;AACjD,eAAO,OAAO,KAAK,GAAG,EACnB,OAAO,eAAeA,MAAK,MAAM,YAAY,CAAC,EAC9C,IAAI,SAAU,GAAG;AAChB,iBAAO,YAAY,IAAI,CAAC;AAAA,QACzB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,UAAU;AAAA,MACR,SAAS,CAAC,QAAQ,SAAS;AAAA,MAC3B,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,eAAO,aAAa,aACjB,OAAO,qBAAqBA,MAAK,MAAMA,MAAK,OAAO,CAAC,EACpD,IAAI,SAAU,GAAG;AAChB,iBAAO,UAAU;AAAA,QAClB,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,aAAa;AAAA,MACX,SAAS,CAAC,WAAW,QAAQ,SAAS;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAShY,OAAM;AAC/B,YAAIuY,WAAUvY,MAAK;AACnB,YAAI,OAAO,UAAUA,MAAK,SAASgY,QAAO;AAC1C,YAAI,QAAQ,aAAa,eAAe,KAAK,IAAI,EAAEO,QAAO;AAC1D,YAAI,MAAO,CAAAA,WAAU;AACrB,eAAO,KAAK,SACT,OAAO,eAAevY,MAAK,MAAMuY,QAAO,CAAC,EACzC,IAAI,SAAU,GAAG;AAChB,iBAAO,KAAK,OAAO,MAAM;AAAA,QAC1B,CAAA;AAAA,MACT;AAAA,IACG;AAAA,IACD,aAAa;AAAA,MACX,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,WAAY;AAClB,eAAO,CAAC,aAAa;AAAA,MAC3B;AAAA,IACG;AAAA,IACD,gBAAgB;AAAA,MACd,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,WAAY;AAClB,eAAO,CAAC,aAAa;AAAA,MAC3B;AAAA,IACG;AAAA,IACD,kBAAkB;AAAA,MAChB,SAAS,CAAC,SAAS;AAAA,MACnB,QAAQ;AAAA,MACR,QAAQ,SAAUP,UAAShY,OAAM;AAC/B,YAAI,eAAe,kBAAkBA,MAAK,OAAO;AACjD,YAAI,SAAS,IAAI,YAAY;AAC7B,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI;AAAA,YACR,qBAAqBA,MAAK,UAAU;AAAA,UAC9C;AAAA,QACA;AACM,eAAO,CAAC,YAAY,MAAM;AAAA,MAChC;AAAA,IACG;AAAA,IACD,oBAAoB;AAAA,MAClB,SAAS,CAAC,SAAS;AAAA,MACnB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,oBAAoB;AAAA,MAClB,SAAS,CAAC,SAAS;AAAA,MACnB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,oBAAoB;AAAA,MAClB,SAAS,CAAC,SAAS;AAAA,MACnB,QAAQ;AAAA,MACR,QAAQ;AAAA,IACT;AAAA,IACD,cAAc;AAAA,MACZ,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUgY,UAAS;AACzB,eAAO,CAAC,IAAI,YAAY,SAASA,QAAO,CAAC;AAAA,MAC/C;AAAA,IACG;AAAA,IACD,iBAAiB;AAAA,MACf,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAS;AACzB,YAAI,MAAM,KAAK,IAAG;AAClB,YAAI,UAAU,OAAO,KAAK,KAAK,EAC5B,OAAO,SAAUvY,MAAK;AACrB,iBACE,MAAM,KAAK,MAAM,MAAMA,IAAG,EAAE,GAAG,KAC/B,MAAM,KAAK,MAAM,MAAMA,IAAG,EAAE,KAAK,KACjC,cAAcA,IAAG;AAAA,QAEpB,CAAA,EACA,IAAI,SAAUA,MAAK;AAClB,iBAAO,UAAUA,KAAI,MAAM,CAAC;AAAA,QAC7B,CAAA;AACH,eAAO,QAAQ,SAASuY,QAAO;AAAA,MACrC;AAAA,IACG;AAAA,IACD,eAAe;AAAA,MACb,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,WAAY;AAClB,eAAO,CAAC,UAAU;AAAA,MACxB;AAAA,IACG;AAAA,IACD,eAAe;AAAA,MACb,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,WAAY;AAClB,eAAO,CAAC,UAAU;AAAA,MACxB;AAAA,IACG;AAAA,IACD,iBAAiB;AAAA,MACf,SAAS,CAAC,WAAW,SAAS;AAAA,MAC9B,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAShY,OAAM;AAC/B,YAAIuY,WAAUvY,MAAK;AACnB,YAAI,QAAQ,KAAKuY,QAAO,EAAG,CAAAA,WAAU;AACrC,YAAI,OAAO,UAAUvY,MAAK,SAASgY,QAAO;AAC1C,YAAI,QAAQ,iBAAiB,MAAMO,QAAO;AAC1C,YAAI,OAAO;AACT,UAAAA,WAAU;AAAA,QAClB,OAAa;AACL,cAAIA,SAAQ,QAAQ,GAAG,MAAM,IAAI;AAC/B,oBAAQA,WAAU;AAAA,UAC5B,OAAe;AACL,oBAAQA,SAAQ,QAAQ,QAAQ,EAAE;AAAA,UAC5C;AACQ,kBAAQ,iBAAiB,MAAM,KAAK;AACpC,cAAI,OAAO;AACT,YAAAA,WAAU;AAAA,UACpB,WAAmBP,SAAQ,uBAAuB;AACxC,mBAAO,CAAA;AAAA,UACjB,OAAe;AACL,kBAAM,IAAI;AAAA,cACR,qBAAqBO,WAAU,SAASvY,MAAK;AAAA,YACzD;AAAA,UACA;AAAA,QACA;AACM,eAAO,CAAC,KAAK,OAAO,MAAMuY,QAAO;AAAA,MACvC;AAAA,IACG;AAAA,IACD,qBAAqB;AAAA,MACnB,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ,SAAUP,UAAS;AACzB,eAAO,aAAa,QAAWA,QAAO;AAAA,MAC5C;AAAA,IACG;AAAA,IACD,SAAS;AAAA,MACP,SAAS,CAAC,QAAQ;AAAA,MAClB,QAAQ;AAAA,MACR,WAAW;AAAA,MACX,QAAQ,SAAUA,UAAShY,OAAM;AAC/B,eAAO,QAAQ,IAAI,YAAYgY,UAAShY,MAAK,MAAM,GAAGgY,QAAO;AAAA,MACnE;AAAA,IACG;AAAA,IACD,UAAU;AAAA,MACR,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAS;AACzB,eAAO,QAAQ,aAAa,UAAUA,QAAO;AAAA,MACnD;AAAA,IACG;AAAA,IACD,MAAM;AAAA,MACJ,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAS;AACzB,YAAI,OAAO;AAAA,UACT;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACR;AACM,eAAO,QAAQ,MAAMA,QAAO;AAAA,MAClC;AAAA,IACG;AAAA,IACD,SAAS;AAAA,MACP,SAAS,CAAE;AAAA,MACX,QAAQ;AAAA,MACR,QAAQ,SAAUA,UAAShY,OAAM;AAC/B,YAAI,OAAOA,MAAK,OAAOgY,QAAO,GAAG;AAC/B,gBAAM,IAAI;AAAA,YACR,wDAAwDhY,MAAK;AAAA,UACvE;AAAA,QACA,OAAa;AACL,gBAAM,aAAaA,MAAK,KAAK;AAAA,QACrC;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAIC,GAAC,WAAY;AACZ,aAAS,QAAQmzL,SAAQ;AACvB,UAAI7yL,WAAU6yL,QAAO,IAAI;AACzB,mBAAa,KAAK,IAAI,IAAI;AAAA,QACxB;AAAA,QACA,UAAU,UAAUA,QAAO,IAAI,EAAE,QAAQ;AAAA,QACzC,UAAU,UAAUA,QAAO,IAAI,EAAE,SAAS,MAAM,GAAG,EAAE,CAAC;AAAA,QACtD,aAAaA,QAAO,IAAI,EAAE;AAAA,MAChC;AACI,gBAAU,aAAa,MAAM,QAAQ,MAAM7yL,SAAQ,YAAY;AAE/D,mBAAa,eAAe,IAAI,IAAI,CAAA;AACpC,eAAS,IAAI,GAAG,IAAIA,SAAQ,SAAS,QAAQ,KAAK;AAChD,YAAIizL,QAAOjzL,SAAQ,SAAS,CAAC;AAC7B,YAAI,CAACizL,MAAM;AAEX,YAAIA,MAAK,QAAQ,GAAG,MAAM,IAAI;AAC5B,cAAI,WAAWA,MAAK,MAAM,GAAG;AAC7B,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,yBAAa,eAAe,IAAI,EAAE,SAAS,CAAC,CAAC,IAAIA;AAAA,UAC3D;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAEE,iBAAa,eAAe,WAAW,IAAI,SAAU,SAAS;AAC5D,aAAO,QAAQ;AAAA,IAChB,CAAA;AAAA,EACF,GAAA;AAED,mBAAiB;;;;;;;;;;;;;;ACltCjB,QAAM;AAAA,IAAEl/K;AAAAA,EAAI,IAAIF;AAShB,WAASq/K,YAAY1uL,GAAWC,GAAmB;AACjD,QAAI2J,IAAI,CAAE,GACRQ,IAAc,CAAE,GAChBhD,GACA8iB;AACF,UAAMykK,IAAI3uL,EAAEqH,QACV0C,IAAI9J,EAAEoH;AACR,QAAI,CAACsnL,GAAG;AACN,aAAO5kL;AAAAA,IACT;AACA,QAAI,CAACA,GAAG;AACN,aAAO4kL;AAAAA,IACT;AACA,SAAKzkK,IAAI,GAAGA,KAAKngB,GAAGmgB,KAAK;AACvBtgB,QAAEsgB,CAAC,IAAIA;AAAAA,IACT;AACA,SAAK9iB,IAAI,GAAGA,KAAKunL,GAAGvnL,KAAK;AACvB,WAAKgD,IAAI,CAAChD,CAAC,GAAG8iB,IAAI,GAAGA,KAAKngB,GAAGmgB,KAAK;AAChC9f,UAAE8f,CAAC,IACDlqB,EAAEoH,IAAI,CAAC,MAAMnH,EAAEiqB,IAAI,CAAC,IAAItgB,EAAEsgB,IAAI,CAAC,IAAI3a,IAAI3F,EAAEsgB,IAAI,CAAC,GAAGtgB,EAAEsgB,CAAC,GAAG9f,EAAE8f,IAAI,CAAC,CAAC,IAAI;AAAA,MACvE;AACAtgB,UAAIQ;AAAAA,IACN;AACA,WAAOA,EAAEL,CAAC;AAAA,EACZ;AAWO,WAAS6kL,iBAAe3hL,KAAa25J,KAAgC;AAC1E,UAAMioB,YAAYjoB,IAAI55J,IAAYmnK,QAAMua,YAAYva,IAAIlnK,GAAG,CAAC;AAC5D,WAAO25J,IAAIioB,UAAU75K,QAAQzF,IAAI,GAAGs/K,SAAS,CAAC,CAAC;AAAA,EACjD;;;;;;;;;;;AC/CA,MAAAC,kBAAA1rL,sBAAA;AAAA,EAEO,MAAM2rL,gBAAgB;AAAA,IAE3BhhL,YAAYihL,YAAoB;AAC9B,WAAKA,aAAaA;AAAAA,IACpB;AAAA,IAWAC,wBAAwB50L,UAAiB60L,qBAAmC;AAC1E,YAAMC,mBAAmBllL,OAAOnK,KAAKovL,mBAAmB;AACxD,iBAAWE,UAAUnlL,OAAOnK,KAAKzF,QAAO,GAAG;AACzC,YAAI,CAAC80L,iBAAiB19J,SAAS29J,MAAM,GAAG;AACtC,gBAAM,IAAI/9K,MACR,KAAKg+K,cAAc,IAAID,MAAM;AAAA,mBACrB,GAAAR,gCAAeQ,QAAQD,gBAAgB,CAAC,IAAI,CACtD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,IAIAG,sBACE3nL,MACA5M,QACA4tL,cACa;AACb,UAAI5tL,WAAUwS,QAAW;AACvB,eAAOo7K;AAAAA,MACT,OAAO;AACL,aAAKrlL,UACH,OAAOvI,WAAU,WACjB,IAAI4M,IAAI,6BACV;AAAA,MACF;AACA,aAAO5M;AAAAA,IACT;AAAA,IAEAw0L,qBACE5nL,MACA5M,QACA4tL,cACY;AACZ,UAAI5tL,WAAUwS,QAAW;AACvB,eAAOo7K;AAAAA,MACT,OAAO;AACL,aAAKrlL,UACH,OAAOvI,WAAU,UACjB,IAAI4M,IAAI,4BACV;AAAA,MACF;AACA,aAAO5M;AAAAA,IACT;AAAA,IASAuI,UAAUwmJ,WAAoB9jJ,SAAuB;AACnD,UAAI,CAAC8jJ,WAAW;AACd,cAAM,IAAIz4I,MAAM,KAAKg+K,cAAcrpL,OAAO,CAAC;AAAA,MAC7C;AAAA,IACF;AAAA,IAEAqpL,cAAcrpL,SAAyB;AACrC,aAAO,GAAG,KAAKgpL,UAAU,KAAKhpL,OAAO;AAAA,IACvC;AAAA,EACF;AAAC4H,YAAAA,kBAAAmhL;;;;;;;;;;;;;;;;;;;;;;;AC/ED,QAAAS,aAAApsL,iBAAA;AACA,QAAA0rL,kBAAA1rL,sBAAA;AAAA;;;;;;;;;;;ACDA,kBAAiB1I;;;;;;;;ACCH,aAAG,SAAU,SAAS;AAClC,YAAQ,UAAU,OAAO,QAAQ,IAAI,aAAa;AAChD,eAAS,SAAS,KAAK,MAAM,QAAQ,SAAS,OAAO,MAAM;AACzD,cAAM,OAAO;AAAA,MACnB;AAAA,IACA;AAAA,EACA;;;;;;;;ACNA,YAAiB;AAEjB,UAAQ,OAAO;AACf,UAAQ,SAAS;AAEjB,WAAS,QAAS+B,OAAM;AACtB,QAAI,OAAO;AACX,QAAI,EAAE,gBAAgB,UAAU;AAC9B,aAAO,IAAI,QAAO;AAAA,IACtB;AAEE,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,SAAK,SAAS;AAEd,QAAIA,SAAQ,OAAOA,MAAK,YAAY,YAAY;AAC9C,MAAAA,MAAK,QAAQ,SAAUW,OAAM;AAC3B,aAAK,KAAKA,KAAI;AAAA,MACf,CAAA;AAAA,IACL,WAAa,UAAU,SAAS,GAAG;AAC/B,eAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,aAAK,KAAK,UAAU,CAAC,CAAC;AAAA,MAC5B;AAAA,IACA;AAEE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,aAAa,SAAUlC,OAAM;AAC7C,QAAIA,MAAK,SAAS,MAAM;AACtB,YAAM,IAAI,MAAM,kDAAkD;AAAA,IACtE;AAEE,QAAI,OAAOA,MAAK;AAChB,QAAI,OAAOA,MAAK;AAEhB,QAAI,MAAM;AACR,WAAK,OAAO;AAAA,IAChB;AAEE,QAAI,MAAM;AACR,WAAK,OAAO;AAAA,IAChB;AAEE,QAAIA,UAAS,KAAK,MAAM;AACtB,WAAK,OAAO;AAAA,IAChB;AACE,QAAIA,UAAS,KAAK,MAAM;AACtB,WAAK,OAAO;AAAA,IAChB;AAEE,IAAAA,MAAK,KAAK;AACV,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,OAAO;AAEZ,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,cAAc,SAAUA,OAAM;AAC9C,QAAIA,UAAS,KAAK,MAAM;AACtB;AAAA,IACJ;AAEE,QAAIA,MAAK,MAAM;AACb,MAAAA,MAAK,KAAK,WAAWA,KAAI;AAAA,IAC7B;AAEE,QAAI,OAAO,KAAK;AAChB,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,OAAO;AACZ,QAAI,MAAM;AACR,WAAK,OAAOA;AAAA,IAChB;AAEE,SAAK,OAAOA;AACZ,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAOA;AAAA,IAChB;AACE,SAAK;AAAA,EACP;AAEA,UAAQ,UAAU,WAAW,SAAUA,OAAM;AAC3C,QAAIA,UAAS,KAAK,MAAM;AACtB;AAAA,IACJ;AAEE,QAAIA,MAAK,MAAM;AACb,MAAAA,MAAK,KAAK,WAAWA,KAAI;AAAA,IAC7B;AAEE,QAAI,OAAO,KAAK;AAChB,IAAAA,MAAK,OAAO;AACZ,IAAAA,MAAK,OAAO;AACZ,QAAI,MAAM;AACR,WAAK,OAAOA;AAAA,IAChB;AAEE,SAAK,OAAOA;AACZ,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAOA;AAAA,IAChB;AACE,SAAK;AAAA,EACP;AAEA,UAAQ,UAAU,OAAO,WAAY;AACnC,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,MAAAoH,MAAK,MAAM,UAAU,CAAC,CAAC;AAAA,IAC3B;AACE,WAAO,KAAK;AAAA,EACd;AAEA,UAAQ,UAAU,UAAU,WAAY;AACtC,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAI,GAAG,KAAK;AAChD,cAAQ,MAAM,UAAU,CAAC,CAAC;AAAA,IAC9B;AACE,WAAO,KAAK;AAAA,EACd;AAEA,UAAQ,UAAU,MAAM,WAAY;AAClC,QAAI,CAAC,KAAK,MAAM;AACd,aAAO;AAAA,IACX;AAEE,QAAI,MAAM,KAAK,KAAK;AACpB,SAAK,OAAO,KAAK,KAAK;AACtB,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,OAAO;AAAA,IACrB,OAAS;AACL,WAAK,OAAO;AAAA,IAChB;AACE,SAAK;AACL,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,QAAQ,WAAY;AACpC,QAAI,CAAC,KAAK,MAAM;AACd,aAAO;AAAA,IACX;AAEE,QAAI,MAAM,KAAK,KAAK;AACpB,SAAK,OAAO,KAAK,KAAK;AACtB,QAAI,KAAK,MAAM;AACb,WAAK,KAAK,OAAO;AAAA,IACrB,OAAS;AACL,WAAK,OAAO;AAAA,IAChB;AACE,SAAK;AACL,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,UAAU,SAAU,IAAI,OAAO;AAC/C,YAAQ,SAAS;AACjB,aAAS,SAAS,KAAK,MAAM,IAAI,GAAG,WAAW,MAAM,KAAK;AACxD,SAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,eAAS,OAAO;AAAA,IACpB;AAAA,EACA;AAEA,UAAQ,UAAU,iBAAiB,SAAU,IAAI,OAAO;AACtD,YAAQ,SAAS;AACjB,aAAS,SAAS,KAAK,MAAM,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AACtE,SAAG,KAAK,OAAO,OAAO,OAAO,GAAG,IAAI;AACpC,eAAS,OAAO;AAAA,IACpB;AAAA,EACA;AAEA,UAAQ,UAAU,MAAM,SAAU,GAAG;AACnC,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,eAAS,OAAO;AAAA,IACpB;AACE,QAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,aAAO,OAAO;AAAA,IAClB;AAAA,EACA;AAEA,UAAQ,UAAU,aAAa,SAAU,GAAG;AAC1C,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,GAAG,KAAK;AAEjE,eAAS,OAAO;AAAA,IACpB;AACE,QAAI,MAAM,KAAK,WAAW,MAAM;AAC9B,aAAO,OAAO;AAAA,IAClB;AAAA,EACA;AAEA,UAAQ,UAAU,MAAM,SAAU,IAAI,OAAO;AAC3C,YAAQ,SAAS;AACjB,QAAI,MAAM,IAAI,QAAO;AACrB,aAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,UAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,eAAS,OAAO;AAAA,IACpB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,aAAa,SAAU,IAAI,OAAO;AAClD,YAAQ,SAAS;AACjB,QAAI,MAAM,IAAI,QAAO;AACrB,aAAS,SAAS,KAAK,MAAM,WAAW,QAAO;AAC7C,UAAI,KAAK,GAAG,KAAK,OAAO,OAAO,OAAO,IAAI,CAAC;AAC3C,eAAS,OAAO;AAAA,IACpB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,SAAS,SAAU,IAAI,SAAS;AAChD,QAAI;AACJ,QAAI,SAAS,KAAK;AAClB,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM;AAAA,IACV,WAAa,KAAK,MAAM;AACpB,eAAS,KAAK,KAAK;AACnB,YAAM,KAAK,KAAK;AAAA,IACpB,OAAS;AACL,YAAM,IAAI,UAAU,4CAA4C;AAAA,IACpE;AAEE,aAAS,IAAI,GAAG,WAAW,MAAM,KAAK;AACpC,YAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,eAAS,OAAO;AAAA,IACpB;AAEE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,gBAAgB,SAAU,IAAI,SAAS;AACvD,QAAI;AACJ,QAAI,SAAS,KAAK;AAClB,QAAI,UAAU,SAAS,GAAG;AACxB,YAAM;AAAA,IACV,WAAa,KAAK,MAAM;AACpB,eAAS,KAAK,KAAK;AACnB,YAAM,KAAK,KAAK;AAAA,IACpB,OAAS;AACL,YAAM,IAAI,UAAU,4CAA4C;AAAA,IACpE;AAEE,aAAS,IAAI,KAAK,SAAS,GAAG,WAAW,MAAM,KAAK;AAClD,YAAM,GAAG,KAAK,OAAO,OAAO,CAAC;AAC7B,eAAS,OAAO;AAAA,IACpB;AAEE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,UAAU,WAAY;AACtC,QAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,UAAI,CAAC,IAAI,OAAO;AAChB,eAAS,OAAO;AAAA,IACpB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,iBAAiB,WAAY;AAC7C,QAAI,MAAM,IAAI,MAAM,KAAK,MAAM;AAC/B,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,MAAM,KAAK;AACxD,UAAI,CAAC,IAAI,OAAO;AAChB,eAAS,OAAO;AAAA,IACpB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,QAAQ,SAAU,MAAM,IAAI;AAC5C,SAAK,MAAM,KAAK;AAChB,QAAI,KAAK,GAAG;AACV,YAAM,KAAK;AAAA,IACf;AACE,WAAO,QAAQ;AACf,QAAI,OAAO,GAAG;AACZ,cAAQ,KAAK;AAAA,IACjB;AACE,QAAI,MAAM,IAAI,QAAO;AACrB,QAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,aAAO;AAAA,IACX;AACE,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACX;AACE,QAAI,KAAK,KAAK,QAAQ;AACpB,WAAK,KAAK;AAAA,IACd;AACE,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,MAAM,KAAK;AACpE,eAAS,OAAO;AAAA,IACpB;AACE,WAAO,WAAW,QAAQ,IAAI,IAAI,KAAK,SAAS,OAAO,MAAM;AAC3D,UAAI,KAAK,OAAO,KAAK;AAAA,IACzB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,eAAe,SAAU,MAAM,IAAI;AACnD,SAAK,MAAM,KAAK;AAChB,QAAI,KAAK,GAAG;AACV,YAAM,KAAK;AAAA,IACf;AACE,WAAO,QAAQ;AACf,QAAI,OAAO,GAAG;AACZ,cAAQ,KAAK;AAAA,IACjB;AACE,QAAI,MAAM,IAAI,QAAO;AACrB,QAAI,KAAK,QAAQ,KAAK,GAAG;AACvB,aAAO;AAAA,IACX;AACE,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACX;AACE,QAAI,KAAK,KAAK,QAAQ;AACpB,WAAK,KAAK;AAAA,IACd;AACE,aAAS,IAAI,KAAK,QAAQ,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,IAAI,KAAK;AAC5E,eAAS,OAAO;AAAA,IACpB;AACE,WAAO,WAAW,QAAQ,IAAI,MAAM,KAAK,SAAS,OAAO,MAAM;AAC7D,UAAI,KAAK,OAAO,KAAK;AAAA,IACzB;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,SAAS,SAAU,OAAO,aAA6B;AACvE,QAAI,QAAQ,KAAK,QAAQ;AACvB,cAAQ,KAAK,SAAS;AAAA,IAC1B;AACE,QAAI,QAAQ,GAAG;AACb,cAAQ,KAAK,SAAS;AAAA,IAC1B;AAEE,aAAS,IAAI,GAAG,SAAS,KAAK,MAAM,WAAW,QAAQ,IAAI,OAAO,KAAK;AACrE,eAAS,OAAO;AAAA,IACpB;AAEE,QAAI,MAAM,CAAA;AACV,aAAS,IAAI,GAAG,UAAU,IAAI,aAAa,KAAK;AAC9C,UAAI,KAAK,OAAO,KAAK;AACrB,eAAS,KAAK,WAAW,MAAM;AAAA,IACnC;AACE,QAAI,WAAW,MAAM;AACnB,eAAS,KAAK;AAAA,IAClB;AAEE,QAAI,WAAW,KAAK,QAAQ,WAAW,KAAK,MAAM;AAChD,eAAS,OAAO;AAAA,IACpB;AAEE,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,KAAK;AACzC,eAAS,OAAO,MAAM,QAAQ,UAAU,CAAC,CAAC;AAAA,IAC9C;AACE,WAAO;AAAA,EACT;AAEA,UAAQ,UAAU,UAAU,WAAY;AACtC,QAAI,OAAO,KAAK;AAChB,QAAI,OAAO,KAAK;AAChB,aAAS,SAAS,MAAM,WAAW,MAAM,SAAS,OAAO,MAAM;AAC7D,UAAI,IAAI,OAAO;AACf,aAAO,OAAO,OAAO;AACrB,aAAO,OAAO;AAAA,IAClB;AACE,SAAK,OAAO;AACZ,SAAK,OAAO;AACZ,WAAO;AAAA,EACT;AAEA,WAAS,OAAQ,MAAMpH,OAAMH,QAAO;AAClC,QAAI,WAAWG,UAAS,KAAK,OAC3B,IAAI,KAAKH,QAAO,MAAMG,OAAM,IAAI,IAChC,IAAI,KAAKH,QAAOG,OAAMA,MAAK,MAAM,IAAI;AAEvC,QAAI,SAAS,SAAS,MAAM;AAC1B,WAAK,OAAO;AAAA,IAChB;AACE,QAAI,SAAS,SAAS,MAAM;AAC1B,WAAK,OAAO;AAAA,IAChB;AAEE,SAAK;AAEL,WAAO;AAAA,EACT;AAEA,WAASoH,MAAM,MAAMlF,OAAM;AACzB,SAAK,OAAO,IAAI,KAAKA,OAAM,KAAK,MAAM,MAAM,IAAI;AAChD,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAO,KAAK;AAAA,IACrB;AACE,SAAK;AAAA,EACP;AAEA,WAAS,QAAS,MAAMA,OAAM;AAC5B,SAAK,OAAO,IAAI,KAAKA,OAAM,MAAM,KAAK,MAAM,IAAI;AAChD,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,OAAO,KAAK;AAAA,IACrB;AACE,SAAK;AAAA,EACP;AAEA,WAAS,KAAMrC,QAAO,MAAM,MAAM0B,OAAM;AACtC,QAAI,EAAE,gBAAgB,OAAO;AAC3B,aAAO,IAAI,KAAK1B,QAAO,MAAM,MAAM0B,KAAI;AAAA,IAC3C;AAEE,SAAK,OAAOA;AACZ,SAAK,QAAQ1B;AAEb,QAAI,MAAM;AACR,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IAChB,OAAS;AACL,WAAK,OAAO;AAAA,IAChB;AAEE,QAAI,MAAM;AACR,WAAK,OAAO;AACZ,WAAK,OAAO;AAAA,IAChB,OAAS;AACL,WAAK,OAAO;AAAA,IAChB;AAAA,EACA;AAEA,MAAI;AAEFL,oBAAwB,EAAC,OAAO;AAAA,EACjC,SAAQ,IAAI;AAAA,EAAA;;;;;;;;ACtab,QAAM,UAAUA,eAAA;AAEhB,QAAM,MAAM,OAAO,KAAK;AACxB,QAAM,SAAS,OAAO,QAAQ;AAC9B,QAAM,oBAAoB,OAAO,kBAAkB;AACnD,QAAM,cAAc,OAAO,YAAY;AACvC,QAAM,UAAU,OAAO,QAAQ;AAC/B,QAAM,UAAU,OAAO,SAAS;AAChC,QAAM,oBAAoB,OAAO,gBAAgB;AACjD,QAAM,WAAW,OAAO,SAAS;AACjC,QAAM,QAAQ,OAAO,OAAO;AAC5B,QAAM,oBAAoB,OAAO,gBAAgB;AAEjD,QAAM,cAAc,MAAM;AAAA,EAU1B,MAAM,SAAS;AAAA,IACb,YAAaL,UAAS;AACpB,UAAI,OAAOA,aAAY;AACrB,QAAAA,WAAU,EAAE,KAAKA,SAAO;AAE1B,UAAI,CAACA;AACH,QAAAA,WAAU,CAAA;AAEZ,UAAIA,SAAQ,QAAQ,OAAOA,SAAQ,QAAQ,YAAYA,SAAQ,MAAM;AACnE,cAAM,IAAI,UAAU,mCAAmC;AAE7C,WAAK,GAAG,IAAIA,SAAQ,OAAO;AAEvC,YAAM,KAAKA,SAAQ,UAAU;AAC7B,WAAK,iBAAiB,IAAK,OAAO,OAAO,aAAc,cAAc;AACrE,WAAK,WAAW,IAAIA,SAAQ,SAAS;AACrC,UAAIA,SAAQ,UAAU,OAAOA,SAAQ,WAAW;AAC9C,cAAM,IAAI,UAAU,yBAAyB;AAC/C,WAAK,OAAO,IAAIA,SAAQ,UAAU;AAClC,WAAK,OAAO,IAAIA,SAAQ;AACxB,WAAK,iBAAiB,IAAIA,SAAQ,kBAAkB;AACpD,WAAK,iBAAiB,IAAIA,SAAQ,kBAAkB;AACpD,WAAK,MAAK;AAAA,IACd;AAAA;AAAA,IAGE,IAAI,IAAK,IAAI;AACX,UAAI,OAAO,OAAO,YAAY,KAAK;AACjC,cAAM,IAAI,UAAU,mCAAmC;AAEzD,WAAK,GAAG,IAAI,MAAM;AAClB,WAAK,IAAI;AAAA,IACb;AAAA,IACE,IAAI,MAAO;AACT,aAAO,KAAK,GAAG;AAAA,IACnB;AAAA,IAEE,IAAI,WAAY,YAAY;AAC1B,WAAK,WAAW,IAAI,CAAC,CAAC;AAAA,IAC1B;AAAA,IACE,IAAI,aAAc;AAChB,aAAO,KAAK,WAAW;AAAA,IAC3B;AAAA,IAEE,IAAI,OAAQ,IAAI;AACd,UAAI,OAAO,OAAO;AAChB,cAAM,IAAI,UAAU,sCAAsC;AAE5D,WAAK,OAAO,IAAI;AAChB,WAAK,IAAI;AAAA,IACb;AAAA,IACE,IAAI,SAAU;AACZ,aAAO,KAAK,OAAO;AAAA,IACvB;AAAA;AAAA,IAGE,IAAI,iBAAkB,IAAI;AACxB,UAAI,OAAO,OAAO;AAChB,aAAK;AAEP,UAAI,OAAO,KAAK,iBAAiB,GAAG;AAClC,aAAK,iBAAiB,IAAI;AAC1B,aAAK,MAAM,IAAI;AACf,aAAK,QAAQ,EAAE,QAAQ,SAAO;AAC5B,cAAI,SAAS,KAAK,iBAAiB,EAAE,IAAI,OAAO,IAAI,GAAG;AACvD,eAAK,MAAM,KAAK,IAAI;AAAA,QACrB,CAAA;AAAA,MACP;AACI,WAAK,IAAI;AAAA,IACb;AAAA,IACE,IAAI,mBAAoB;AAAE,aAAO,KAAK,iBAAiB;AAAA,IAAC;AAAA,IAExD,IAAI,SAAU;AAAE,aAAO,KAAK,MAAM;AAAA,IAAC;AAAA,IACnC,IAAI,YAAa;AAAE,aAAO,KAAK,QAAQ,EAAE;AAAA,IAAM;AAAA,IAE/C,SAAU,IAAI,OAAO;AACnB,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,cAAM,OAAO,OAAO;AACpB,oBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,iBAAS;AAAA,MACf;AAAA,IACA;AAAA,IAEE,QAAS,IAAI,OAAO;AAClB,cAAQ,SAAS;AACjB,eAAS,SAAS,KAAK,QAAQ,EAAE,MAAM,WAAW,QAAO;AACvD,cAAM,OAAO,OAAO;AACpB,oBAAY,MAAM,IAAI,QAAQ,KAAK;AACnC,iBAAS;AAAA,MACf;AAAA,IACA;AAAA,IAEE,OAAQ;AACN,aAAO,KAAK,QAAQ,EAAE,QAAS,EAAC,IAAI,OAAK,EAAE,GAAG;AAAA,IAClD;AAAA,IAEE,SAAU;AACR,aAAO,KAAK,QAAQ,EAAE,QAAS,EAAC,IAAI,OAAK,EAAE,KAAK;AAAA,IACpD;AAAA,IAEE,QAAS;AACP,UAAI,KAAK,OAAO,KACZ,KAAK,QAAQ,KACb,KAAK,QAAQ,EAAE,QAAQ;AACzB,aAAK,QAAQ,EAAE,QAAQ,SAAO,KAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK,CAAC;AAAA,MACrE;AAEI,WAAK,KAAK,IAAI,oBAAI,IAAK;AACvB,WAAK,QAAQ,IAAI,IAAI,QAAS;AAC9B,WAAK,MAAM,IAAI;AAAA,IACnB;AAAA,IAEE,OAAQ;AACN,aAAO,KAAK,QAAQ,EAAE,IAAI,SACxB,QAAQ,MAAM,GAAG,IAAI,QAAQ;AAAA,QAC3B,GAAG,IAAI;AAAA,QACP,GAAG,IAAI;AAAA,QACP,GAAG,IAAI,OAAO,IAAI,UAAU;AAAA,MAC7B,CAAA,EAAE,QAAO,EAAG,OAAO,OAAK,CAAC;AAAA,IAChC;AAAA,IAEE,UAAW;AACT,aAAO,KAAK,QAAQ;AAAA,IACxB;AAAA,IAEE,IAAKM,MAAKI,QAAO,QAAQ;AACvB,eAAS,UAAU,KAAK,OAAO;AAE/B,UAAI,UAAU,OAAO,WAAW;AAC9B,cAAM,IAAI,UAAU,yBAAyB;AAE/C,YAAM,MAAM,SAAS,KAAK,IAAG,IAAK;AAClC,YAAM,MAAM,KAAK,iBAAiB,EAAEA,QAAOJ,IAAG;AAE9C,UAAI,KAAK,KAAK,EAAE,IAAIA,IAAG,GAAG;AACxB,YAAI,MAAM,KAAK,GAAG,GAAG;AACnB,cAAI,MAAM,KAAK,KAAK,EAAE,IAAIA,IAAG,CAAC;AAC9B,iBAAO;AAAA,QACf;AAEM,cAAMO,QAAO,KAAK,KAAK,EAAE,IAAIP,IAAG;AAChC,cAAMyC,QAAOlC,MAAK;AAIlB,YAAI,KAAK,OAAO,GAAG;AACjB,cAAI,CAAC,KAAK,iBAAiB;AACzB,iBAAK,OAAO,EAAEP,MAAKyC,MAAK,KAAK;AAAA,QACvC;AAEM,QAAAA,MAAK,MAAM;AACX,QAAAA,MAAK,SAAS;AACd,QAAAA,MAAK,QAAQrC;AACb,aAAK,MAAM,KAAK,MAAMqC,MAAK;AAC3B,QAAAA,MAAK,SAAS;AACd,aAAK,IAAIzC,IAAG;AACZ,aAAK,IAAI;AACT,eAAO;AAAA,MACb;AAEI,YAAM,MAAM,IAAI,MAAMA,MAAKI,QAAO,KAAK,KAAK,MAAM;AAGlD,UAAI,IAAI,SAAS,KAAK,GAAG,GAAG;AAC1B,YAAI,KAAK,OAAO;AACd,eAAK,OAAO,EAAEJ,MAAKI,MAAK;AAE1B,eAAO;AAAA,MACb;AAEI,WAAK,MAAM,KAAK,IAAI;AACpB,WAAK,QAAQ,EAAE,QAAQ,GAAG;AAC1B,WAAK,KAAK,EAAE,IAAIJ,MAAK,KAAK,QAAQ,EAAE,IAAI;AACxC,WAAK,IAAI;AACT,aAAO;AAAA,IACX;AAAA,IAEE,IAAKA,MAAK;AACR,UAAI,CAAC,KAAK,KAAK,EAAE,IAAIA,IAAG,EAAG,QAAO;AAClC,YAAM,MAAM,KAAK,KAAK,EAAE,IAAIA,IAAG,EAAE;AACjC,aAAO,CAAC,QAAQ,MAAM,GAAG;AAAA,IAC7B;AAAA,IAEE,IAAKA,MAAK;AACR,aAAO,IAAI,MAAMA,MAAK,IAAI;AAAA,IAC9B;AAAA,IAEE,KAAMA,MAAK;AACT,aAAO,IAAI,MAAMA,MAAK,KAAK;AAAA,IAC/B;AAAA,IAEE,MAAO;AACL,YAAMO,QAAO,KAAK,QAAQ,EAAE;AAC5B,UAAI,CAACA;AACH,eAAO;AAET,UAAI,MAAMA,KAAI;AACd,aAAOA,MAAK;AAAA,IAChB;AAAA,IAEE,IAAKP,MAAK;AACR,UAAI,MAAM,KAAK,KAAK,EAAE,IAAIA,IAAG,CAAC;AAAA,IAClC;AAAA,IAEE,KAAM,KAAK;AAET,WAAK,MAAK;AAEV,YAAM,MAAM,KAAK,IAAG;AAEpB,eAAS,IAAI,IAAI,SAAS,GAAG,KAAK,GAAG,KAAK;AACxC,cAAM,MAAM,IAAI,CAAC;AACjB,cAAM,YAAY,IAAI,KAAK;AAC3B,YAAI,cAAc;AAEhB,eAAK,IAAI,IAAI,GAAG,IAAI,CAAC;AAAA,aAClB;AACH,gBAAM,SAAS,YAAY;AAE3B,cAAI,SAAS,GAAG;AACd,iBAAK,IAAI,IAAI,GAAG,IAAI,GAAG,MAAM;AAAA,UACvC;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IAEE,QAAS;AACP,WAAK,KAAK,EAAE,QAAQ,CAACI,QAAOJ,SAAQ,IAAI,MAAMA,MAAK,KAAK,CAAC;AAAA,IAC7D;AAAA,EACA;AAEA,QAAM,MAAM,CAAC,MAAMA,MAAK,UAAU;AAChC,UAAMO,QAAO,KAAK,KAAK,EAAE,IAAIP,IAAG;AAChC,QAAIO,OAAM;AACR,YAAM,MAAMA,MAAK;AACjB,UAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,YAAI,MAAMA,KAAI;AACd,YAAI,CAAC,KAAK,WAAW;AACnB,iBAAO;AAAA,MACf,OAAW;AACL,YAAI,OAAO;AACT,cAAI,KAAK,iBAAiB;AACxB,YAAAA,MAAK,MAAM,MAAM,KAAK,IAAG;AAC3B,eAAK,QAAQ,EAAE,YAAYA,KAAI;AAAA,QACvC;AAAA,MACA;AACI,aAAO,IAAI;AAAA,IACf;AAAA,EACA;AAEA,QAAM,UAAU,CAAC,MAAM,QAAQ;AAC7B,QAAI,CAAC,OAAQ,CAAC,IAAI,UAAU,CAAC,KAAK,OAAO;AACvC,aAAO;AAET,UAAM,OAAO,KAAK,IAAG,IAAK,IAAI;AAC9B,WAAO,IAAI,SAAS,OAAO,IAAI,SAC3B,KAAK,OAAO,KAAM,OAAO,KAAK,OAAO;AAAA,EAC3C;AAEA,QAAM,OAAO,UAAQ;AACnB,QAAI,KAAK,MAAM,IAAI,KAAK,GAAG,GAAG;AAC5B,eAAS,SAAS,KAAK,QAAQ,EAAE,MAC/B,KAAK,MAAM,IAAI,KAAK,GAAG,KAAK,WAAW,QAAO;AAI9C,cAAM,OAAO,OAAO;AACpB,YAAI,MAAM,MAAM;AAChB,iBAAS;AAAA,MACf;AAAA,IACA;AAAA,EACA;AAEA,QAAM,MAAM,CAAC,MAAMA,UAAS;AAC1B,QAAIA,OAAM;AACR,YAAM,MAAMA,MAAK;AACjB,UAAI,KAAK,OAAO;AACd,aAAK,OAAO,EAAE,IAAI,KAAK,IAAI,KAAK;AAElC,WAAK,MAAM,KAAK,IAAI;AACpB,WAAK,KAAK,EAAE,OAAO,IAAI,GAAG;AAC1B,WAAK,QAAQ,EAAE,WAAWA,KAAI;AAAA,IAClC;AAAA,EACA;AAAA,EAEA,MAAM,MAAM;AAAA,IACV,YAAaP,MAAKI,QAAO,QAAQ,KAAK,QAAQ;AAC5C,WAAK,MAAMJ;AACX,WAAK,QAAQI;AACb,WAAK,SAAS;AACd,WAAK,MAAM;AACX,WAAK,SAAS,UAAU;AAAA,IAC5B;AAAA,EACA;AAEA,QAAM,cAAc,CAAC,MAAM,IAAIG,OAAM,UAAU;AAC7C,QAAI,MAAMA,MAAK;AACf,QAAI,QAAQ,MAAM,GAAG,GAAG;AACtB,UAAI,MAAMA,KAAI;AACd,UAAI,CAAC,KAAK,WAAW;AACnB,cAAM;AAAA,IACZ;AACE,QAAI;AACF,SAAG,KAAK,OAAO,IAAI,OAAO,IAAI,KAAK,IAAI;AAAA,EAC3C;AAEA,aAAiB;;;;;;;;;;;;;AC7UY0S,UAAAA,mBAAG;AAAA,IAC9B6hL,QAAQ;AAAA;AAIiB7hL,UAAAA,iBAAG;AAAA,IAC5B8hL,SAAS;AAAA,IACTC,QAAQ;AAAA,IACRC,SAAS;AAAA,IACTC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,SAAS;AAAA,IACTC,IAAI;AAAA,IACJC,QAAQ;AAAA,IACRC,SAAS;AAAA,IACTh1L,MAAM;AAAA,IACNi1L,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,OAAO;AAAA,IACPZ,QAAQ;AAAA,IACRa,SAAS;AAAA;;;;;;;;;;;;;;;;ACpBX,MAAAhL,UAAAliL,cAAA;AACA,MAAAmtL,yBAAAntL,aAAA;AACA,MAAAotL,WAAAptL,eAAA;AAGA,QAAMqtL,gBACJ;AAEF,QAAM3lL,IAAI,IAAIikL,uBAAAA,mDAAiC;AAExC,WAAS2B,UACdp2F,OACAq2F,QACQ;AACR,WAAOr2F,SAASurF,QAAOluG,GAAG2iB,OAAOq2F,MAAM,IAAIr2F,QAAQq2F;AAAAA,EACrD;AAIO,WAASC,UAAUn9K,UAAkC;AAC1D,QAAI,OAAOA,aAAY,YAAYoyK,QAAO7zJ,MAAMve,QAAO,GAAG;AACxD,aAAOA;AAAAA,IACT;AAEA3I,MAAExH,UACA,OAAOmQ,aAAY,YAChB,OAAOA,aAAY,YAAYg9K,cAAc92L,KAAK8Z,QAAO,GAC5D,IAAIA,QAAO,0BACb;AAEAA,IAAAA,WAAUA,SAAQyiD,SAAU;AAE5B,QAAI/uD,OAAM;AACV,QAAIs1E,MAAM;AACV,YAAQt1E,OAAMsM,SAAQuB,QAAQ,KAAK7N,OAAM,CAAC,KAAK,GAAG;AAChDs1E;AAAAA,IACF;AACA,WAAOhpE,WAAU,KAAK1C,OAAO,IAAI0rE,GAAG;AAAA,EACtC;AAEO,WAASo0G,oBACdp9K,UACAlJ,KACS;AACT,UAAMumL,kBAEJC,SAAgB,iBAACxmL,GAAG;AACtB,WACE,CAAC,CAACumL,mBAAmBA,oBAAoBr9K,SAAQyiD,SAAU,EAAC3pD,YAAa;AAAA,EAE7E;AAEO,WAASykL,oBAAoBhxL,GAAWC,GAAWsK,KAAqB;AAC7E,UAAMumL,kBAIJC,SAAgB,iBAACxmL,GAAG;AACtB,QAAIvK,MAAM8wL,iBAAiB;AACzB,aAAO7wL;AAAAA,IACT;AACA,QAAIA,MAAM6wL,iBAAiB;AACzB,aAAO9wL;AAAAA,IACT;AACA,WAAO0wL,UAAU1wL,GAAGC,CAAC;AAAA,EACvB;AAEO,WAASgxL,qBACdjxL,GACAC,GACAsK,KACQ;AACR,WAAOymL,oBAAoBhxL,GAAGC,GAAGsK,GAAG,MAAMvK,IAAIC,IAAID;AAAAA,EACpD;AAEO,WAASkxL,4BACdt0L,SACAu0L,cACQ;AACR,UAAMl9H,SAASr3D,QAAOu0L,YAAW;AAEjC,QAAI,CAACl9H,UAAUk9H,iBAAgB,WAAW;AACxC,aAAOv0L,QAAOizL;AAAAA,IAChB;AACA,WAAO57H;AAAAA,EACT;;;;;;;;;;;;ACrFwBrmD,YAAAA,cAAG;AAAA,IACzB1S,MAAM;AAAA,IACNi1L,MAAM;AAAA,IACNN,QAAQ;AAAA,IACRQ,OAAO;AAAA,IACPP,MAAM;AAAA,IACNC,SAAS;AAAA,IACTN,QAAQ;AAAA,IACRO,IAAI;AAAA,IACJoB,KAAK;AAAA,IACLxB,SAAS;AAAA,IACTyB,UAAU;AAAA,IACVf,SAAS;AAAA,IACTgB,OAAO;AAAA,IACPC,cAAc;AAAA;;;;;;;;;;;;;ACdhB,MAAAjM,UAAAliL,cAAA;AACA,MAAAotL,WAAAptL,eAAA;AAGO,WAASouL,gBAAgB/9K,UAAiB;AAC/C,QAAI,OAAOA,aAAY,UAAU;AAC/B,aAAOA;AAAAA,IACT;AAEA,UAAM;AAAA,MAAEg+K;AAAAA,MAAOC;AAAAA,MAAOC;AAAAA,IAAM,IAAI9L,QAAOzjL,MAAMqR,QAAO;AAEpD,UAAMsW,QAAQ,CAAC0nK,KAAK;AAEpB,QAAIC,SAASC,OAAO;AAClB5nK,YAAMznB,KAAKovL,KAAK;AAAA,IAClB;AAEA,QAAIC,OAAO;AACT5nK,YAAMznB,KAAKqvL,KAAK;AAAA,IAClB;AAEA,WAAO5nK,MAAM7c,KAAK,GAAG;AAAA,EACvB;AAEO,WAAS0kL,gBAAgBl+K,UAA2B;AACzD,WAAOzJ,OAAOnK,KAAK4T,QAAO,EAAEgqD,OAAO,CAACqnH,SAAS58G,WAAmB;AAC9D,UAAIptE,SAAQ2Y,SAAQy0D,MAAM;AAE1B,YAAM2oH,kBAEJC,SAAgB,iBAAC5oH,MAAM;AACzB,UAAI,OAAOptE,WAAU,YAAY+1L,oBAAoB/1L,QAAO;AAC1DA,QAAAA,SAAQy2L,gBAAgBz2L,MAAK;AAAA,MAC/B;AAEAgqL,cAAQ58G,MAAM,IAAIptE;AAClB,aAAOgqL;AAAAA,IACR,GAAE,EAAa;AAAA,EAClB;;;;;;;;;;;;ACtCA,MAAAO,UAAAliL,cAAA;AACA,MAAAyuL,UAAAzuL,cAAA;AACA,MAAA+wB,SAAA/wB,eAAA;AAOO,WAAS0uL,oBACd10L,OACA20L,gBACAt1L,OACA;AACA,UAAMu1L,cAAcv1L,MAAKW,KAAI,KAAK,CAAE;AAEpC,WAAQ6M,OAAOnK,KAAKiyL,cAAc,EAAer0H,OAC/C,CAACzJ,QAAQ1pD,QAAQ;AACf,YAAM44H,cAAa+tD,GAAAA,OAAAA,6BAA4Bc,aAAaznL,GAAG;AAC/D,YAAM0nL,gBAAgBF,eAAexnL,GAAG;AAExC,UAAI,CAAC44H,YAAY;AACflvE,eAAO1pD,GAAG,KAAIinL,GAAAA,QAAe,iBAACS,aAAa;AAAA,MAC7C,OAAO;AACL,cAAMC,mBAAkBrB,GAAAA,OAAAA,qBAAoB1tD,YAAY54H,GAAG;AAC3D,cAAM4nL,sBAAqBtB,GAAAA,OAAAA,qBAAoBoB,eAAe1nL,GAAG;AAEjE,YACE,CAAC4nL,uBACAD,mBACCrM,QAAOluG,GAAGs6G,cAAc/7H,SAAU,IAAE06H,GAAAA,OAAAA,WAAUztD,UAAU,CAAC,IAC3D;AACAlvE,iBAAO1pD,GAAG,KAAIinL,GAAAA,QAAe,iBAACS,aAAa;AAAA,QAC7C;AAAA,MACF;AAEA,aAAOh+H;AAAAA,IACR,GACD,EACF;AAAA,EACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxCAv2D,cAAiBhD;;;;;;;;;;;;;ACAjB,MAAA4qL,UAAAliL,cAAA;AAEA,MAAAgvL,WAAAhvL,iBAAA;AAGA,MAAA+wB,SAAA/wB,eAAA;AAMO,WAASivL,iBAAiBlqH,QAAiBmqH,SAAkB;AAClE,UAAMC,qBAAqBtoL,OAAOnK,KAAKqoE,MAAM;AAE7C,QAAIoqH,mBAAmBlrL,WAAW,GAAG;AACnC,aAAO;AAAA,IACT;AAEA,UAAMmrL,0BAA0BD,mBAAmBn/J,OAAO+9J,CAAAA,iBAAe;AACvE,YAAMsB,4BAA2BvB,GAAAA,OAAAA,6BAC/BoB,SACAnB,YACF;AAGA,UAAI,CAACsB,0BAA0B;AAC7B,eAAO;AAAA,MACT;AAEA,YAAMC,wBAAwBvqH,OAAOgpH,YAAW;AAGhD,WAAIN,GAAAA,OAAmB,qBAAC6B,uBAAuBvB,YAAW,GAAG;AAC3D,eAAO;AAAA,MACT;AAGA,WAAIN,GAAAA,OAAmB,qBAAC4B,0BAA0BtB,YAAW,GAAG;AAC9D,eAAO;AAAA,MACT;AAEA,UAAI,CAACtL,QAAO7zJ,MAAM0gK,sBAAsBx8H,SAAU,CAAA,GAAG;AACnD,cAAM,IAAI7kD,MACR,sCAAsC8/K,YAAW,OAAOuB,qBAAqB,0DAE/E;AAAA,MACF;AAEA,aAAO7M,QAAOjuG,OACZg5G,OAAS,WAAC6B,wBAAwB,GAClCC,sBAAsBx8H,UACxB;AAAA,IACF,CAAC;AAED,WAAOs8H,wBAAwBnrL,WAAW;AAAA,EAC5C;AAEO,WAASsrL,WACdhrL,MACA+L,UACA;AAAA,IACEk/K,aAAaC;AAAAA,IACbphK;AAAAA,IACAqhK;AAAAA,EAKD,IAAG,IACJ;AACA,QAAIA,YAAAA,QAAAA,SAAUnqL,IAAIhB,IAAI,EAAG,QAAO;AAChC,QAAI8pB,YAAAA,QAAAA,SAAU9oB,IAAIhB,IAAI,EAAG,QAAO;AAChC,WAAO,CAAC0qL,iBAAiB3+K,UAASk/K,WAAWjrL,IAAI,CAAC;AAAA,EACpD;AAEe,WAASorL,cACtBt2L,OACAg1B,UACAqhK,UACAp/K,UACAs/K,iBACAC,iBACAC,iBACA;AACA,UAAMj/H,SAAS,oBAAI7rD,IAAa;AAChC,UAAM/N,WAAU;AAAA,MAAEu4L,YAAYn2L;AAAAA,MAAMg1B;AAAAA,MAAUqhK;AAAAA,IAAU;AAExD,eAAW11L,SAAQX,OAAM;AACvB,UAAIk2L,WAAWv1L,OAAMsW,UAASrZ,QAAO,GAAG;AACtC45D,eAAOp+C,IAAIzY,KAAI;AAAA,MAChB,WAAU81L,iBAAiB;AAC1B,cAAMC,yBAAyBD,gBAAgBppL,IAAI1M,KAAI;AAEvD,YAAI+1L,wBAAwB;AAC1Bl/H,iBAAOp+C,IAAIs9K,sBAAsB;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAEAH,uBAAe,QAAfA,gBAAiBh/J,QAAQ52B,CAAAA,UAAQ,CAAC01L,SAASnqL,IAAIvL,KAAI,KAAK62D,OAAOp+C,IAAIzY,KAAI,CAAC;AACxE61L,uBAAe,QAAfA,gBAAiBj/J,QAAQ52B,CAAAA,UAAQ,CAACq0B,SAAS9oB,IAAIvL,KAAI,KAAK62D,OAAO+rB,OAAO5iF,KAAI,CAAC;AAE3E,WAAO62D;AAAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvGA,QAAAm/H,gBAAAhwL,oBAAA;AACA,QAAAmtL,yBAAAntL,aAAA;AACA,QAAAiwL,iBAAAjwL,qBAAA;AACA,QAAAkwL,YAAAlwL,gBAAA;AAEA,QAAA+wB,SAAA/wB,eAAA;AAQA,QAAAotL,WAAAptL,eAAA;AACA,QAAAs8H,WAAAt8H,iBAAA;AAYA,QAAAyuL,UAAAzuL,cAAA;AACA,QAAAgxK,SAAAhxK,aAAA;AACA,QAAAmwL,eAAAnwL,mBAAA;AAIA,UAAMowL,cAAcC,eAAmB,YAAY;AAEnD,UAAM3oL,IAAI,IAAIikL,uBAAAA,mDAAiC;AAE/C,aAAS2E,oBAAoBhgL,UAAgC;AAC3D,YAAMigL,eAAe1pL,OAAOnK,KAAK8zL,oBAAW;AAC5C,iBAAWzrH,UAAUl+D,OAAOnK,KAAK4T,QAAO,GAAG;AACzC,YAAI,EAAEy0D,UAAUyrH,SAAAA,cAAc;AAC5B,gBAAM,IAAIviL,MACRvG,EAAEukL,cAAc,IAAIlnH,MAAM;AAAA,mBAChB,GAAAymH,uCAAezmH,QAAQwrH,YAAY,CAAC,IAAI,CACpD;AAAA,QACF;AAAA,MACF;AAEA,aAAOjgL;AAAAA,IACT;AAEO,aAASmgL,qBAAqB1F,WAA4B;AAC/D,aACE,OAAOA,cAAa,YACnBz9K,MAAMC,QAAQw9K,SAAQ,KAAKA,UAASzxF,MAAMz8F,OAAK,OAAOA,MAAM,QAAQ;AAAA,IAEzE;AAEA,aAAS6zL,iBAAiB3F,WAAgC;AACxDrjL,QAAExH,UACA6qL,cAAa5gL,UAAasmL,qBAAqB1F,SAAQ,GACvD,IAAI5mL,OAAO4mL,SAAQ,CAAC,qCACtB;AAEA,aAAOA;AAAAA,IACT;AAEA,aAAS4F,kBAAkB5F,WAAkC;AAC3D,aAAOA,UAASzwH,OACd,CAACs2H,KAAKx4L,aAAY;AAChB,cAAM,CAACy4L,aAAaC,cAAc,IAAI14L,SAAQuR,MAAM,GAAG;AAIvD,cAAMo7D,SAASgsH,SAAc,eAACF,WAAW;AAEzC,YAAI,CAAC9rH,QAAQ;AACX,iBAAO6rH;AAAAA,QACT;AAEA,YAAI;AAEF,gBAAMI,eAAeF,eAAennL,MAAM,GAAG,EAAE,CAAC,EAAER,YAAa;AAC/D,gBAAM8nL,qBAAoBxD,GAAAA,OAAAA,qBAAoBuD,cAAcjsH,MAAM;AAElE,cAAI,CAAC6rH,IAAI7rH,MAAM,GAAG;AAChB6rH,gBAAI7rH,MAAM,IAAIksH,oBACVD,gBACAxD,GAAAA,OAAAA,WAAUwD,YAAY;AAC1B,mBAAOJ;AAAAA,UACT;AAEA,gBAAMvgL,WAAUugL,IAAI7rH,MAAM;AAC1B,gBAAMmsH,gBAAezD,GAAAA,OAAAA,qBAAoBp9K,UAAS00D,MAAM;AAExD,cAAImsH,gBAAgBD,mBAAmB;AACrCL,gBAAI7rH,MAAM,KAAI6oH,GAAAA,OAAAA,qBAAoBv9K,UAAS2gL,cAAcjsH,MAAM;AAAA,UAChE,WAAUmsH,cAAc;AACvBN,gBAAI7rH,MAAM,QAAIyoH,OAAS,WAACwD,YAAY;AAAA,UACtC,WAAW,CAACE,gBAAgB,CAACD,mBAAmB;AAC9C,kBAAME,wBAAuB,GAAA3D,OAAS,WAACwD,YAAY;AAEnDJ,gBAAI7rH,MAAM,KAAI,GAAAuoH,kBAAUj9K,UAAS8gL,oBAAoB;AAAA,UACvD;AAAA,QACD,SAAQ9mH,GAAG;AAAA,QAAA;AAEZ,eAAOumH;AAAAA,MACR,GACD,EACF;AAAA,IACF;AAEA,aAASQ,qBACPC,gBACA;AACA,UAAI,CAACA,eAAeptL,QAAQ;AAC1B;AAAA,MACF;AAEAiK,cAAQC,KAAK,+DAA+D;AAC5EkjL,qBAAezgK,QAAQ,CAAC;AAAA,QAAEm0C;AAAAA,QAAQptE,OAAAA;AAAAA,YAChCuW,QAAQC,KAAK,KAAK42D,MAAM,KAAKptE,MAAK,EAAE,CACtC;AACAuW,cAAQC,KAAK;AAAA;AAAA;AAAA,CAGd;AAAA,IACD;AAEA,aAASmjL,gBAAgBvsH,QAAgBptE,QAAe;AACtD,UAAI;AACF,gBAAO61L,GAAAA,OAAAA,WAAU71L,MAAK;AAAA,MACvB,SAAQ0yE,GAAG;AACV,cAAM,IAAIp8D,MACRvG,EAAEukL,cACA,IAAIt0L,MAAK,uCAAuCotE,MAAM,IACxD,CACF;AAAA,MACF;AAAA,IACF;AAGA,aAASwsH,iBAAiB55L,QAAsB;AAC9C,YAAM65L,SACJ75L,WAAU,QAAQA,WAAU,YAExBgG,QAAQu3K,SAASp9K,KAAK6R,MAAM,GAAG,EAAE,CAAC,IAClC2nL,gBAAgB,QAAQ35L,MAAK;AACnC,aAAO,CAAC,QAAQ65L,MAAM;AAAA,IACxB;AAEA,aAASC,oBACP1sH,QACAptE,QAC4C;AAC5C,YAAM0Y,YAAU,GAAAo9K,OAAAA,qBAAoB91L,QAAOotE,MAAM,IAC7CptE,OAAMwR,YAAa,IACnBmoL,gBAAgBvsH,QAAQptE,MAAK;AACjC,aAAO,CAACotE,QAAQ10D,QAAO;AAAA,IACzB;AAEA,aAASqhL,gBAAgBC,cAAqC;AAC5D,YAAM/yL,SAAKiI,OAAAyE,OAAA,CAAA,GAAQqmL,YAAY;AAC/B,aAAO/yL,OAAMgzL;AACb,aAAOhzL,OAAMmsL;AACb,aAAOnsL;AAAAA,IACT;AAEA,aAASizL,eAAeC,SAAmB3qL,KAAuB;AAChE,YAAMy/J,WAAWmrB,cAAaD,SAAS;AAAA,QACrCE,iBAAiB;AAAA,QACjB7qL;AAAAA,MACF,CAAC;AACD,aAAOwpL,kBAAkB/pB,QAAQ;AAAA,IACnC;AAEA,UAAMqrB,eAAe,IAAIC,UAAS;AAAA,MAAEhmL,KAAK;AAAA,IAAG,CAAC;AAE7C,aAASimL,qBAAqBL,SAAmB3qL,KAAuB;AACtE,YAAMokK,WAAW,OAAOumB,YAAY,WAAWA,UAAUA,QAAQhoL,KAAI,IAAK3C;AAC1E,UAAIwwI,SAASs6C,aAAavrL,IAAI6kK,QAAQ;AACtC,UAAI,CAAC5zB,QAAQ;AACXA,iBAASk6C,eAAeC,SAAS3qL,GAAG;AACpC8qL,qBAAanuL,IAAIynK,UAAU5zB,MAAM;AAAA,MACnC;AACA,aAAA9wI,OAAAyE,OAAA,CAAA,GAAYqsI,MAAM;AAAA,IACpB;AAee,aAASy6C,WACtBT,eAA6B,IAC7B16L,WAA4B,CAAA,GACnB;AAAA,UAAAo7L,WAAAC;AACT,UAAI;AAAA,QAAEvH,UAAAA;AAAAA,QAAU6G;AAAAA,MAAU,IAAID;AAC9B,YAAM;AAAA,QAAEY,aAAa;AAAA,QAAKC;AAAAA,MAA0B,IAAIv7L;AAExDy5L,uBAAiB3F,SAAQ;AAEzB,YAAMnsL,SAAQ8yL,gBAAgBC,YAAY;AAC1C,UAAIrhL,WAAUggL,oBAAoB1xL,MAAK;AAEvC,YAAM6zL,sBAAsB,CAAC,CAAC1H;AAC9B,YAAM2H,aAAaD,uBAAuB5rL,OAAOnK,KAAK4T,QAAO,EAAErM,SAAS;AACxE,YAAM0uL,wBACJ,CAAC17L,SAAQ27L,4BAA4B,CAACF;AAExC,UAAI,CAAC3H,aAAY4H,uBAAuB;AAEtC5H,QAAAA,YAAWptL,QAAQwJ,IAAI0rL;AACvB,YAAI,CAAC9H,WAAU;AACb,gBAAM+H,aACJ77L,SAAQ67L,cACRn1L,QAAQwJ,IAAI4rL,uBACZhB,cAAaiB,eAAeT,UAAU;AACxC,cAAIO,cAAc,MAAM;AACtBN,yCAAAA,QAAAA,0BAA4BM,UAAU;AACtC/H,YAAAA,YAAWgH,cAAa/M,WAAW;AAAA,cACjC9rL,QAAQ45L;AAAAA,cACR3rL,KAAKlQ,SAAQg8L;AAAAA,YACf,CAAC;AAAA,UACH;AAAA,QACF;AAEA,YAAIlI,aAAY,MAAM;AAIb;AAILA,YAAAA,YAAW,CAAE;AAAA,UACf;AAAA,QACF;AAAA,MACF;AAIA,UAAI6G,cAAcA,cAAc,eAAe,GAAAS,YAACtH,cAAAsH,QAAAA,UAAUpuL,UAAS;AACjE8mL,QAAAA,YAAWlkL,OAAOnK,KAAK0zL,WAAW,EAC/BxmL,IACExR,CAAAA,aACC,GAAGA,QAAO,OAAOg4L,YAAYh4L,QAAO,CAAC,EACzC,EACC0R,KAAK,IAAI;AACZ8nL,oBAAY;AAAA,MACd;AAKA,WAAAU,aAAIvH,sBAAAuH,WAAUruL,QAAQ;AACpB,cAAMivL,gBAAgBf,qBACpBpH,WACA9zL,SAAQg8L,eACV;AAEA,YAAIrB,cAAc,aAAa;AAC7B,qBAAWx5L,YAAWyO,OAAOnK,KAAKw2L,aAAa,GAAe;AAC5D,gBAAI96L,aAAY,UAAUA,aAAY,MAAM;AAC1C,oBAAM+6L,oBACJ/C,YAAYh4L,aAAY,iBAAiB,WAAWA,QAAO;AAE7D,kBAAI+6L,mBAAmB;AACrB,sBAAM9iL,WAAU6iL,cAAc96L,QAAO;AACrC86L,8BAAc96L,QAAO,KAAIy1L,GAAAA,6BACvBx9K,WACA,GAAAm9K,kBAAU2F,iBAAiB,GAC3B/6L,QACF;AAAA,cACF,OAAO;AACL,uBAAO86L,cAAc96L,QAAO;AAAA,cAC9B;AAAA,YACF,OAAO;AACL,qBAAO86L,cAAc96L,QAAO;AAAA,YAC9B;AAAA,UACF;AAAA,QACF;AAEAkY,QAAAA,WAAUzJ,OAAOyE,OAAO4nL,eAAe5iL,QAAO;AAAA,MAChD;AAGA,YAAMugD,SAAkB,CAAE;AAC1B,YAAMuiI,kBAAkB,CAAE;AAC1B,iBAAWruH,UAAUl+D,OAAOnK,KAAK4T,QAAO,EAAE4sI,QAAoB;AAC5D,cAAMvlJ,SAAQ2Y,SAAQy0D,MAAM;AAG5B,YAAI,OAAOptE,WAAU,YAAYA,SAAQ,MAAM,GAAG;AAChDy7L,0BAAgBl0L,KAAK;AAAA,YAAE6lE;AAAAA,YAAQptE,OAAAA;AAAAA,UAAM,CAAC;AAAA,QACxC;AAEA,cAAM,CAAC07L,cAAcC,WAAW,IAC9BvuH,WAAW,SACPwsH,iBAAiB55L,MAAK,IACtB85L,oBAAoB1sH,QAAQptE,MAAe;AAEjD,YAAI27L,aAAa;AAEfziI,iBAAOwiI,YAAY,IAAIC;AAAAA,QACzB;AAAA,MACF;AAEAlC,2BAAqBgC,eAAe;AAEpC,aAAOviI;AAAAA,IACT;AAAA;;;;;;;;;;;;AC7TA,WAAA0iI,4BAAA;AAAA,UAAA97C,OAAAz3I,aAAA;AAAAuzL,2CAAA;AAAA,aAAA97C;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAMO,WAAS+7C,8BAEdC,wBAEAC,gBACe;AACf,WAAOvpL;AAAAA,EACT;AAEO,WAAS0nL,eACd56L,UAEA08L,OACS;AACT,UAAMC,aAAa38L,SAAQqZ;AAC3B,QAAIA;AAEJ,QAAI,OAAOsjL,eAAe,YAAYtmL,MAAMC,QAAQqmL,UAAU,GAAG;AAC/DtjL,MAAAA,WAAU;AAAA,QAAEy6K,UAAU6I;AAAAA,MAAY;AAAA,IACnC,WAAUA,YAAY;AACrB,UAAI,eAAeA,YAAY;AAC7BtjL,QAAAA,WAAOzJ,OAAAyE,WAAQsoL,YAAU;AAAA,UAAEhC,WAAW;AAAA,SAAa;AAAA,MACrD,OAAO;AAELthL,QAAAA,WAAUsjL;AAAAA,MACZ;AAAA,IACF;AAEA,eAAOxB,0BAAAA,EAAAA,SAAW9hL,UAAS;AAAA,MACzBsiL,0BAA0B;AAAA,MAC1BK,iBAAiBh8L,SAAQg8L;AAAAA,IAC3B,CAAC;AAAA,EACH;;;;;;;;;;;;;ACvCA,WAAAtN,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,MAAAo8C,cAAA7zL,kBAAA;AAEA,MAAAumB,SAAAvmB,oBAAA;AAEA,MAAA8zL,QAAA9zL,YAAA;AAEA,MAAA+zL,WAAA/zL,eAAA;AAaA,MAAAg0L,kBAAAh0L,6BAAA;AA4BA,WAASi0L,kBACPr3L,GACAC,GACS;AAAA,QAAAq3L,SAAAC,SAAAC,UAAAC;AACT,WACEz3L,EAAE2H,SAAS1H,EAAE0H,QACb3H,EAAEjF,UAAUkF,EAAElF,SACdiF,EAAE3F,YAAY4F,EAAE5F,WAChB2F,EAAE8T,YAAY7T,EAAE6T,WAChB9T,EAAE+qB,UAAU9qB,EAAE8qB,SACd/qB,EAAE03L,YAAYz3L,EAAEy3L,aAChBJ,UAAAt3L,EAAEjG,SAAI,OAAA,SAANu9L,QAAQK,eAAOJ,UAAKt3L,EAAElG,yBAAFw9L,QAAQI,cAC5BH,WAAAx3L,EAAEjG,yBAAFy9L,SAAQxtB,gBAAQytB,WAAKx3L,EAAElG,SAAF09L,OAAAA,SAAAA,SAAQztB;AAAAA,EAEjC;AASA,YAAU4tB,UAAa78L,QAAsB;AAC3C,WAAOA;AAAAA,EACT;AAEA,WAAS88L,0CACPx9L,UACAyZ,SACkB;AAClB,QAAI,OAAOzZ,SAAQw8L,2BAA2B,UAAU;AACtDx8L,MAAAA,SAAQw8L,6BAAyBD,gBAAAA,+BAC/Bv8L,SAAQw8L,wBACR/iL,OACF;AAAA,IACF;AACA,WAAOzZ;AAAAA,EACT;AAOO,WAASy9L,wBACdhkL,SACAzZ,UACA0wB,OACuB;AACvB,UAAM;AAAA,MAAErtB,SAAAA;AAAAA,MAASq6L;AAAAA,MAASC;AAAAA,IAAc,IAAI39L;AAC5C,WAAO;AAAA,MACLA,SAASw9L,0CAA0Cx9L,UAASyZ,OAAO;AAAA,MACnEpW,SAASA,WACL,MAGEu6L,8BAA8Bv6L,UAASoW,OAAO,EAAEiX,KAAK,IACvD,MAAM6sK,UAAU,EAAE;AAAA,MACtBG,SAASA,UACL,MAGEG,8BAA8BH,SAASjkL,OAAO,EAAEiX,KAAK,EACnD,CAAC,CAACitK,aACJ,IACF,MAAMJ,UAAU,CAAE,CAAA;AAAA,IACvB;AAAA,EACH;AAMO,WAASO,0BACdrkL,SACAzZ,UACA0wB,OACuB;AACvB,WAAO;AAAA,MACL1wB,SAASw9L,0CAA0Cx9L,UAASyZ,OAAO;AAAA,MAInEpW,UAASotL,GAAAA,YAAAA,MAAK,MACZsN,wBAAwB/9L,SAAQqD,WAAW,CAAE,GAAEoW,SAASiX,KAAK,CAC/D;AAAA,MACAgtK,UAAS,GAAAjN,YAAI,MAAC,MACZuN,wBACEh+L,SAAQ09L,WAAW,CAAA,GACnBjkL,SACAiX,OACA,CAAC,CAAC1wB,SAAQ29L,aACZ,CACF;AAAA,IACD;AAAA,EACH;AAEA,QAAMM,0BAA0B,oBAAI5uL,QAAS;AAC7C,QAAMwuL,iCAAgC,GAAAxM,SAAAA,mBACpC,CAACrjE,OAAmBlrH,WAAqC;AACvD,UAAM2W,UAAU3W,OAAM80I,MAAMsmD,SAAOA,GAAG;AACtC,YAAO,GAAA3M,SAAmB,qBAAE7gK,YAC1B,GAAA4gK,SAAe,iBAAC,WACdqM,eAC+C;AAC/C,YAAMQ,cAAc,OAAOH,wBACzBhwE,OACAv0G,SACAiX,OACAitK,aACF;AACA,aAAOQ,YAAYxrL,IAIjBqoG,UAAQojF,qBAAqBH,yBAAyBjjF,IAAI,CAC5D;AAAA,IACF,CAAC,CACH;AAAA,EACF,CACF;AAEA,QAAMqjF,0BAA0B,oBAAIhvL,QAAS;AAC7C,QAAMuuL,iCAAgC,GAAAvM,SAAAA,mBACpC,CAACrjE,OAAmBlrH,WAAqC;AACvD,UAAM2W,UAAU3W,OAAM80I,MAAMsmD,SAAOA,GAAG;AACtC,eAAO5M,SAAAA,iBAAgB,WACrB5gK,OAC+C;AAC/C,YAAMytK,cAAc,OAAOJ,wBAAwB/vE,OAAOv0G,SAASiX,KAAK;AACxE,aAAOytK,YAAYxrL,IAIjBqoG,UAAQojF,qBAAqBC,yBAAyBrjF,IAAI,CAC5D;AAAA,IACF,CAAC;AAAA,EACH,CACF;AAMA,QAAMsjF,kBAAkB,CAAE;AAO1B,WAASF,qBACPt7L,QAIAk4G,MACA;AACA,UAAM;AAAA,MAAEt6G,OAAAA;AAAAA,MAAOV,SAAAA,WAAUs+L;AAAAA,IAAgB,IAAItjF;AAC7C,QAAIh7G,aAAY,MAAO,QAAOg7G;AAE9B,QAAIujF,iBAAiBz7L,OAAM2M,IAAI/O,MAAK;AACpC,QAAI,CAAC69L,gBAAgB;AACnBA,uBAAiB,oBAAIlvL,QAAS;AAC9BvM,MAAAA,OAAM+J,IAAInM,QAAO69L,cAAc;AAAA,IACjC;AAEA,QAAIC,gBAAgBD,eAAe9uL,IAAIzP,QAAO;AAC9C,QAAI,CAACw+L,eAAe;AAClBA,sBAAgB,CAAE;AAClBD,qBAAe1xL,IAAI7M,UAASw+L,aAAa;AAAA,IAC3C;AAEA,QAAI,CAACA,cAAcpnK,SAAS4jF,IAAI,GAAG;AACjC,YAAM/pF,UAAUutK,cAAczlK,OAAO0lK,iBACnCzB,kBAAkByB,aAAazjF,IAAI,CACrC;AACA,UAAI/pF,QAAQjkB,SAAS,GAAG;AACtB,eAAOikB,QAAQ,CAAC;AAAA,MAClB;AAEAutK,oBAAcv2L,KAAK+yG,IAAI;AAAA,IACzB;AAEA,WAAOA;AAAAA,EACT;AAEA,YAAUgjF,wBACRhwE,OACAv0G,SACAiX,OACAitK,eAC+C;AAC/C,WAAO,OAAOe,kBACZ,UACA1wE,OACAv0G,SACAiX,OACAitK,aACF;AAAA,EACF;AAEA,YAAUI,wBACR/vE,OACAv0G,SACAiX,OAC+C;AAC/C,WAAO,OAAOguK,kBAAkB,UAAU1wE,OAAOv0G,SAASiX,KAAK;AAAA,EACjE;AAEA,YAAUguK,kBACR1sL,MACAg8G,OACAv0G,SACAiX,OACA2sK,SACyC;AACzC,UAAMc,cAAc,OAAO1P,SAAO,EAACkL,IACjC3rE,MAAMr7G,IAAI,CAAC5P,OAAM5C,WACfw+L,iBAAiB57L,OAAM0W,SAAS;AAAA,MAC9BzH;AAAAA,MACA0e,OAAO,GAAGA,KAAK,IAAIvwB,MAAK;AAAA,MACxBk9L,SAAS,CAAC,CAACA;AAAAA,IACZ,CAAA,CACH,CACF;AAEAuB,uBAAmBT,WAAW;AAE9B,WAAOA;AAAAA,EACT;AAKO,YAAUQ,iBACfE,MACAplL,SACA;AAAA,IACEzH;AAAAA,IACA0e;AAAAA,IACA2sK;AAAAA,EAKF,GACkC;AAClC,UAAMriF,QAAO,GAAA8jF,MAAiB,mBAACD,IAAI;AACnC,QAAI7jF,MAAM;AACR,aAAOA;AAAAA,IACT;AAEA,QAAI1tG;AACJ,QAAItN;AAEJ,QAAIU,SAAam+L;AACjB,QAAIxoL,MAAMC,QAAQ5V,MAAK,GAAG;AACxB,UAAIA,OAAMsM,WAAW,GAAG;AACtB,SAACtM,QAAOV,UAASsN,IAAI,IAAI5M;AAAAA,MAC3B,OAAO;AACL,SAACA,QAAOV,QAAO,IAAIU;AAAAA,MACrB;AAAA,IACF;AAEA,QAAIhB,QAAOwT;AACX,QAAIo6K,WAAW;AACf,QAAI,OAAO5sL,WAAU,UAAU;AAC7B,UAAI,OAAOsR,SAAS,UAAU;AAC5B,cAAM,IAAIgF,MACR,gEACF;AAAA,MACF;AACA,YAAM+nL,WAAW/sL,SAAS,WAAWm8K,OAAAA,aAAaC,OAAU;AAC5D,YAAMkP,UAAU58L;AAEhB,OAAC;AAAA,QAAE4sL;AAAAA,QAAU5sL,OAAAA;AAAAA,MAAM,IAAI,OAAOq+L,SAASr+L,QAAO+Y,OAAO;AAErD/Z,MAAAA,QAAO;AAAA,QACL49L;AAAAA,QACA3tB,UAAU2d;AAAAA,MACX;AAAA,IACH;AAEA,QAAI,CAAC5sL,QAAO;AACV,YAAM,IAAIsW,MAAM,2BAA2B9J,OAAOxM,MAAK,CAAC,EAAE;AAAA,IAC5D;AAEA,QAAI,OAAOA,WAAU,YAAYA,OAAMi6I,YAAY;AACjD,UAAIj6I,OAAM8O,SAAS;AACjB9O,QAAAA,SAAQA,OAAM8O;AAAAA,MAChB,OAAO;AACL,cAAM,IAAIwH,MAAM,sDAAsD;AAAA,MACxE;AAAA,IACF;AAEA,QAAI,OAAOtW,WAAU,YAAY,OAAOA,WAAU,YAAY;AAC5D,YAAM,IAAIsW,MACR,uBAAuB,OAAOtW,MAAK,qCACrC;AAAA,IACF;AAEA,QAAI4sL,aAAa,QAAQ,OAAO5sL,WAAU,YAAYA,QAAO;AAI3D,YAAM,IAAIsW,MACR,6EAA6Es2K,QAAQ,EACvF;AAAA,IACF;AAEA,WAAO;AAAA,MACLhgL;AAAAA,MACAojB,OAAO48J,YAAY58J;AAAAA,MACnBhwB,OAAAA;AAAAA,MACAV,SAAAA;AAAAA,MACAyZ;AAAAA,MACA4jL;AAAAA,MACA39L,MAAAA;AAAAA,IACD;AAAA,EACH;AAEA,WAASk/L,mBAAwB5wE,OAA6C;AAC5E,UAAMr7G,MAAM,oBAAIujD,IAAK;AAErB,eAAWnzD,SAAQirH,OAAO;AACxB,UAAI,OAAOjrH,MAAKrC,UAAU,WAAY;AAEtC,UAAIs+L,UAAUrsL,IAAIlD,IAAI1M,MAAKrC,KAAK;AAChC,UAAI,CAACs+L,SAAS;AACZA,kBAAU,oBAAIjxL,IAAK;AACnB4E,YAAI9F,IAAI9J,MAAKrC,OAAOs+L,OAAO;AAAA,MAC7B;AAEA,UAAIA,QAAQ1wL,IAAIvL,MAAKuK,IAAI,GAAG;AAC1B,cAAM2xL,YAAYjxE,MAAMj1F,OAAOhsB,OAAKA,EAAErM,UAAUqC,MAAKrC,KAAK;AAC1D,cAAM,IAAIsW,MACR,CACE,qCACA,4DACA,kCACA,IACA,gBACA,4BACA,gDACA,OACA,IACA,4BACA,GAAGsgB,KAAKtyB,UAAUi6L,WAAW,MAAM,CAAC,CAAC,EAAE,EACvCpsL,KAAK,IAAI,CACb;AAAA,MACF;AAEAmsL,cAAQxjL,IAAIzY,MAAKuK,IAAI;AAAA,IACvB;AAAA,EACF;;;;;;;;;;;;;ACjZA,WAAAuzI,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,MAAA0+C,qBAAAn2L,yBAAA;AAIO,WAASo2L,yBACdnkF,MACiB;AACjB,WAAO,IAAIokF,WAAWpkF,IAAI;AAAA,EAC5B;AAQO,YAAUqkF,iBACf3+L,QAIA;AAAA,IACE+Y,UAAU;AAAA,IACVzH;AAAAA,EAID,IAAG,IACsB;AAC1B,UAAM2iL,aAAa,QAAOgK,GAAAA,qCAAiBj+L,QAAOnB,MAAI,EAACsnI,QAAQptH,OAAO,GAAG;AAAA,MACvEzH;AAAAA,MACA0e,OAAO;AAAA,IACT,CAAC;AAED,WAAOyuK,yBAAyBxK,UAAU;AAAA,EAC5C;AAEA,QAAM2K,oBAAoBh9L,OAAOgzB,IAAI,4BAA4B;AAE1D,WAASwpK,kBACd/7L,OACgC;AAChC,QAAKA,SAAAA,QAAAA,MAAeu8L,iBAAiB,GAAG;AACtC,aAAQv8L,MAAyBw8L;AAAAA,IACnC;AAEA,WAAOrsL;AAAAA,EACT;AAAA,EAYA,MAAMksL,WAAgB;AAAA,IA8CpB1rL,YAAYihL,YAAqC;AAAA,WAzCjD4K,cAAW;AAAA,WAMVD,iBAAiB,IAAI;AAAI,WAK1B5+L,QAAK;AAAA,WAQLV,UAAO;AAAA,WAKPyZ,UAAO;AAAA,WAKPnM,OAAI;AAAA,WAKJ5N,OAAI;AAWF,WAAK6/L,cAAc5K;AACnB/kL,aAAOC,eAAe,MAAM,eAAe;AAAA,QAAE4xC,YAAY;AAAA,MAAM,CAAC;AAEhE7xC,aAAOC,eAAe,MAAMyvL,mBAAmB;AAAA,QAAE79I,YAAY;AAAA,MAAM,CAAC;AAEpE,WAAK/gD,QAAQ,KAAK6+L,YAAY7+L;AAC9B,WAAKV,UAAU,KAAKu/L,YAAYv/L;AAChC,WAAKyZ,UAAU,KAAK8lL,YAAY9lL;AAChC,WAAKnM,OAAO,KAAKiyL,YAAYjyL;AAC7B,WAAK5N,OAAO,KAAK6/L,YAAY7/L,OACzB;AAAA,QACE49L,SAAS,KAAKiC,YAAY7/L,KAAK49L;AAAAA,QAC/B3tB,UAAU,KAAK4vB,YAAY7/L,KAAKiwK;AAAAA,MAClC,IACAz8J;AAKJtD,aAAOm5H,OAAO,IAAI;AAAA,IACpB;AAAA,EACF;AAEAn5H,SAAOm5H,OAAOq2D,WAAWjoI,SAAS;;;;;;;;;;;;;;ACxInB,UAAA,UAAA;AAAA,IACbqoI,kBAAkB;AAAA,MAChB7zL,SAAS;AAAA,IACV;AAAA,IACDqxK,WAAW;AAAA,MACTrxK,SAAS;AAAA,IACV;AAAA,IACD8zL,aAAa;AAAA,MACX9zL,SAAS;AAAA,IACV;AAAA,IACD+zL,cAAc;AAAA,MACZ/zL,SAAS;AAAA,IACV;AAAA,IACDg0L,iBAAiB;AAAA,MACfh0L,SACE;AAAA,IAEH;AAAA,IACDqsD,OAAO;AAAA,MACLrsD,SAAS;AAAA,IACV;AAAA,IACDi0L,WAAW;AAAA,MACTj0L,SACE;AAAA,IAEH;AAAA,IACD88K,OAAO;AAAA,MACL98K,SACE;AAAA,IAEH;AAAA,IACDk0L,qBAAqB;AAAA,MACnBl0L,SAAS;AAAA,IACV;AAAA,IACDm0L,SAAS;AAAA,MACPn0L,SACE;AAAA,IAEH;AAAA,IACDo0L,aAAa;AAAA,MACXp0L,SACE;AAAA,IAEH;AAAA,IACDypB,UAAU;AAAA,MACRzpB,SAAS;AAAA,IACV;AAAA,IACDq0L,eAAe;AAAA,MACbr0L,SACE;AAAA,IAEH;AAAA,IACDs0L,OAAO;AAAA,MACLt0L,SACE;AAAA,IACH;AAAA,IACDu0L,WAAW;AAAA,MACTv0L,SAAS;AAAA,IACV;AAAA,IAEDw0L,qBAAqB;AAAA,MACnB/mL,SAAS;AAAA,MACTzN,SAAS;AAAA,IACV;AAAA,IACDs7H,UAAU;AAAA,MACR7tH,SAAS;AAAA,MACTzN,SACE;AAAA,IACH;AAAA,IACDy0L,iBAAiB;AAAA,MACfhnL,SAAS;AAAA,MACTzN,SACE;AAAA,IAEJ;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1EF,WAAA2wL,4BAAA;AAAA,UAAA97C,OAAAz3I,aAAA;AAAAuzL,2CAAA;AAAA,aAAA97C;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAyBA,MAAAnb,WAAAt8H,eAAA;AAUO,WAASgkK,IAAI54J,KAAwC;AAC1D,YAAQA,IAAInC,MAAI;AAAA,MACd,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAAO,GAAG+6J,IAAI54J,IAAI6nB,MAAM,CAAC,SAAS7nB,IAAI7G,IAAI;AAAA,MAC5C,KAAK;AACH,eAAO,GAAGy/J,IAAI54J,IAAI6nB,MAAM,CAAC,cAAc7nB,IAAIhU,KAAK;AAAA,MAClD,KAAK;AACH,eAAO,GAAG4sK,IAAI54J,IAAI6nB,MAAM,CAAC,IAAI7nB,IAAI7G,IAAI;AAAA,MACvC,KAAK;AACH,eAAO,GAAGy/J,IAAI54J,IAAI6nB,MAAM,CAAC,IAAI1E,KAAKtyB,UAAUmP,IAAI7G,IAAI,CAAC;AAAA,MACvD;AAEE,cAAM,IAAI0J,MAAM,mCAAmC7C,IAAInC,IAAI,EAAE;AAAA,IACjE;AAAA,EACF;AAEO,WAASqtB,OAAOlrB,KAAkB7G,MAAmC;AAC1E,WAAO;AAAA,MACL0E,MAAM;AAAA,MACN1E;AAAAA,MACA0uB,QAAQ7nB;AAAAA,IACT;AAAA,EACH;AAcO,WAASksL,eACdlsL,KACAzT,QACiB;AACjB,QACEA,WAAUwS,UACVxS,WAAU,UACVA,WAAU,YACVA,WAAU,mBACV;AACA,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,6DACb;AAAA,IACF;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAAS4/L,iBACdnsL,KACAzT,QACyB;AACzB,QACEA,WAAUwS,UACV,OAAOxS,WAAU,aACjBA,WAAU,YACVA,WAAU,QACV;AACA,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,oDACb;AAAA,IACF;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAAS6/L,cACdpsL,KACAzT,QACsB;AACtB,QAAIA,WAAUwS,UAAa,OAAOxS,WAAU,aAAaA,WAAU,QAAQ;AACzE,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,0CAA0C;AAAA,IACvE;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAAS8/L,iBACdrsL,KACAzT,QACyB;AACzB,QACEA,WAAUwS,UACVxS,WAAU,YACVA,WAAU,YACVA,WAAU,eACV;AACA,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,0DACb;AAAA,IACF;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAAS+/L,qBACdtsL,KACAzT,QAC4B;AAC5B,UAAM4W,MAAMopL,aAAavsL,KAAKzT,MAAK;AACnC,QAAI4W,KAAK;AACP,UAAI,OAAOA,IAAIhK,SAAS,UAAU;AAChC,cAAM,IAAI0J,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,kDACb;AAAA,MACF;AAEA,iBAAWmiE,QAAQ1mE,OAAOnK,KAAK6R,GAAG,GAAG;AACnC,cAAMqpL,UAAUthK,OAAOlrB,KAAKmiE,IAAI;AAChC,cAAM51E,SAAQ4W,IAAIg/D,IAAI;AACtB,YACE51E,UAAS,QACT,OAAOA,WAAU,aACjB,OAAOA,WAAU,YACjB,OAAOA,WAAU,UACjB;AAIA,gBAAM,IAAIsW,MACR,GAAG+1J,IACD4zB,OACF,CAAC,6DACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAOjgM;AAAAA,EACT;AAEO,WAASkgM,qBACdzsL,KACAzT,QAC0B;AAC1B,QACEA,WAAUwS,UACV,OAAOxS,WAAU,cAChB,OAAOA,WAAU,YAAY,CAACA,SAC/B;AACA,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,0CAA0C;AAAA,IACvE;AACA,WAAOzT;AAAAA,EACT;AAEO,WAASmgM,aAAa1sL,KAAkBzT,QAA+B;AAC5E,QAAIA,WAAUwS,UAAa,OAAOxS,WAAU,UAAU;AACpD,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,iCAAiC;AAAA,IAC9D;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAAS2yD,eACdl/C,KACAzT,QACiB;AACjB,QAAIA,WAAUwS,UAAa,OAAOxS,WAAU,YAAY;AACtD,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,mCAAmC;AAAA,IAChE;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAASogM,cACd3sL,KACAzT,QACgB;AAChB,QAAIA,WAAUwS,UAAa,OAAOxS,WAAU,WAAW;AACrD,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,kCAAkC;AAAA,IAC/D;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAASggM,aACdvsL,KACAzT,QAC4C;AAC5C,QACEA,WAAUwS,WACT,OAAOxS,WAAU,YAAY2V,MAAMC,QAAQ5V,MAAK,KAAK,CAACA,SACvD;AACA,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,kCAAkC;AAAA,IAC/D;AAEA,WAAOzT;AAAAA,EACT;AAEO,WAASqgM,YACd5sL,KACAzT,QACqC;AACrC,QAAIA,UAAS,QAAQ,CAAC2V,MAAMC,QAAQ5V,MAAK,GAAG;AAC1C,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,iCAAiC;AAAA,IAC9D;AACA,WAAOzT;AAAAA,EACT;AAEO,WAASsgM,iBACd7sL,KACAzT,QACmB;AACnB,UAAM6rK,MAAMw0B,YAAY5sL,KAAKzT,MAAK;AAClC6rK,WAAG,QAAHA,IAAK5yI,QAAQ,CAAC52B,OAAMgK,MAAMk0L,iBAAiB5hK,OAAOlrB,KAAKpH,CAAC,GAAGhK,KAAI,CAAC;AAEhE,WAAOwpK;AAAAA,EACT;AACA,WAAS00B,iBAAiB9sL,KAAkBzT,QAA4B;AACtE,QACE,OAAOA,WAAU,YACjB,OAAOA,WAAU,cACjB,EAAEA,kBAAiB6L,SACnB;AACA,YAAM,IAAIyK,MACR,GAAG+1J,IACD54J,GACF,CAAC,kEACH;AAAA,IACF;AACA,WAAOzT;AAAAA,EACT;AAEO,WAASwgM,2BACd/sL,KACAzT,QAC6B;AAC7B,QAAIA,WAAUwS,QAAW;AAEvB,aAAOxS;AAAAA,IACT;AAEA,QAAI2V,MAAMC,QAAQ5V,MAAK,GAAG;AACxBA,MAAAA,OAAMi5B,QAAQ,CAAC52B,OAAMgK,MAAM;AACzB,YAAI,CAACo0L,eAAep+L,KAAI,GAAG;AACzB,gBAAM,IAAIiU,MACR,GAAG+1J,IAAI1tI,OAAOlrB,KAAKpH,CAAC,CAAC,CAAC,oCACxB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,WAAW,CAACo0L,eAAezgM,MAAK,GAAG;AACjC,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,yDACb;AAAA,IACF;AACA,WAAOzT;AAAAA,EACT;AAEA,WAASygM,eAAezgM,QAAqD;AAC3E,WACE,OAAOA,WAAU,YACjB,OAAOA,WAAU,cACjBA,kBAAiB6L;AAAAA,EAErB;AAEO,WAAS60L,uBACdjtL,KACAzT,QACyB;AACzB,QACEA,WAAUwS,UACV,OAAOxS,WAAU,aACjB,OAAOA,WAAU,UACjB;AACA,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,kDACFmjB,KAAKtyB,UAAUtE,MAAK,CAAC,EAChC;AAAA,IACF;AAEA,WAAOA;AAAAA,EACT;AAEO,WAAS2gM,oBACdltL,KACAzT,QACsB;AACtB,QAAIA,WAAUwS,UAAa,OAAOxS,WAAU,WAAW;AAErD,aAAOA;AAAAA,IACT;AAEA,QAAI2V,MAAMC,QAAQ5V,MAAK,GAAG;AACxBA,MAAAA,OAAMi5B,QAAQ,CAAC52B,OAAMgK,MAAM;AACzB,YAAI,CAACo0L,eAAep+L,KAAI,GAAG;AACzB,gBAAM,IAAIiU,MACR,GAAG+1J,IAAI1tI,OAAOlrB,KAAKpH,CAAC,CAAC,CAAC,oCACxB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,WAAW,CAACo0L,eAAezgM,MAAK,GAAG;AACjC,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,uFACoBmjB,KAAKtyB,UAAUtE,MAAY,CAAC,EAC7D;AAAA,IACF;AACA,WAAOA;AAAAA,EACT;AAEO,WAAS4gM,iBACdntL,KACAzT,QACmB;AACnB,UAAM6rK,MAAMw0B,YAAY5sL,KAAKzT,MAAK;AAClC,QAAI6rK,KAAK;AAGPA,UAAI5yI,QAAQ,CAAC52B,OAAMgK,MAAMw0L,iBAAiBliK,OAAOlrB,KAAKpH,CAAC,GAAGhK,KAAI,CAAC;AAAA,IACjE;AACA,WAAOwpK;AAAAA,EACT;AACA,WAASg1B,iBAAiBptL,KAAkBzT,QAA4B;AACtE,QAAI2V,MAAMC,QAAQ5V,MAAK,GAAG;AACxB,UAAIA,OAAMsM,WAAW,GAAG;AACtB,cAAM,IAAIgK,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,yBAAyB;AAAA,MACtD;AAEA,UAAIzT,OAAMsM,SAAS,GAAG;AACpB,cAAM,IAAIgK,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,yCAAyC;AAAA,MACtE;AAEAqtL,yBAAmBniK,OAAOlrB,KAAK,CAAC,GAAGzT,OAAM,CAAC,CAAC;AAE3C,UAAIA,OAAMsM,SAAS,GAAG;AACpB,cAAMhF,OAAOtH,OAAM,CAAC;AACpB,YACEsH,SAASkL,UACTlL,SAAS,UACR,OAAOA,SAAS,YAAYqO,MAAMC,QAAQtO,IAAI,KAAKA,SAAS,OAC7D;AACA,gBAAM,IAAIgP,MACR,GAAG+1J,IAAI1tI,OAAOlrB,KAAK,CAAC,CAAC,CAAC,yCACxB;AAAA,QACF;AAAA,MACF;AACA,UAAIzT,OAAMsM,WAAW,GAAG;AACtB,cAAMM,OAAO5M,OAAM,CAAC;AACpB,YAAI4M,SAAS4F,UAAa,OAAO5F,SAAS,UAAU;AAClD,gBAAM,IAAI0J,MACR,GAAG+1J,IAAI1tI,OAAOlrB,KAAK,CAAC,CAAC,CAAC,iCACxB;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACLqtL,yBAAmBrtL,KAAKzT,MAAK;AAAA,IAC/B;AAGA,WAAOA;AAAAA,EACT;AACA,WAAS8gM,mBAAmBrtL,KAAkBzT,QAA8B;AAC1E,SACG,OAAOA,WAAU,YAAY,CAACA,WAC/B,OAAOA,WAAU,YACjB,OAAOA,WAAU,YACjB;AACA,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,qCAAqC;AAAA,IAClE;AACA,WAAOzT;AAAAA,EACT;AAEO,WAAS+gM,cACdttL,KACAzT,QACqB;AACrB,SAAI84L,GAAAA,0BAAoB,EAAA,sBAAC94L,MAAK,EAAG,QAAOA;AAExC,QAAI,OAAOA,WAAU,YAAY,CAACA,UAAS2V,MAAMC,QAAQ5V,MAAK,GAAG;AAC/D,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,qDACb;AAAA,IACF;AAEA,UAAMutL,cAAcriK,OAAOlrB,KAAK,UAAU;AAC1C,UAAMwtL,eAAetiK,OAAOlrB,KAAK,WAAW;AAE5CytL,uBAAmBF,aAAahhM,OAAMozL,QAAQ;AAC9CgN,kBAAca,cAAcjhM,OAAMi6L,SAAS;AAE3C,eAAWr6L,QAAOsP,OAAOnK,KAAK/E,MAAK,GAAG;AACpC,YAAMwzB,MAAMxzB,OAAMJ,IAAG;AACrB,YAAMuhM,SAASxiK,OAAOlrB,KAAK7T,IAAG;AAE9B,UAAIA,SAAQ,YAAawgM,eAAce,QAAQ3tK,GAAG;AAAA,eACzC5zB,SAAQ,WAAYshM,oBAAmBC,QAAQ3tK,GAAG;AAAA,eAClD,CAAClkB,eAAAC,KAAcspL,0BAAAA,EAAAA,aAAaj5L,IAAG,GAAG;AACzC,cAAMg5L,eAAe1pL,OAAOnK,KAAK8zL,0BAAW,EAAA,WAAA,EAAE1mL,KAAK,IAAI;AACvD,cAAM,IAAImE,MACR,GAAG+1J,IACD80B,MACF,CAAC,iDAAiDvI,YAAY,EAChE;AAAA,MACF,MAAOwI,sBAAqBD,QAAQ3tK,GAAG;AAAA,IACzC;AAEA,WAAOxzB;AAAAA,EACT;AAEA,WAASkhM,mBAAmBztL,KAAkBzT,QAAgB;AAC5D,QAAIA,WAAUwS,UAAa,EAAC,GAAAsmL,0BAAoB,EAAA,sBAAC94L,MAAK,GAAG;AACvD,YAAM,IAAIsW,MACR,GAAG+1J,IAAI54J,GAAG,CAAC,qDACb;AAAA,IACF;AAAA,EACF;AAEA,WAAS2tL,qBAAqB3tL,KAAkBzT,QAAgB;AAC9D,QAAI,OAAOA,WAAU,YAAYsU,KAAK+sL,MAAMrhM,MAAK,MAAMA,OAAO;AAC9D,QAAI,OAAOA,WAAU,SAAU;AAE/B,UAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,wCAAwC;AAAA,EACrE;AAEO,WAAS6tL,kBACd7tL,KACAzT,QACoC;AACpC,QAAIA,WAAUwS,OAAW;AAEzB,QAAI,OAAOxS,WAAU,YAAYA,WAAU,MAAM;AAC/C,YAAM,IAAIsW,MAAM,GAAG+1J,IAAI54J,GAAG,CAAC,kCAAkC;AAAA,IAC/D;AAGA,QAAIuoL,QAAYvoL;AAChB,OAAG;AACDuoL,MAAAA,QAAOA,MAAK1gK;AAAAA,IACd,SAAS0gK,MAAK1qL,SAAS;AACvB,UAAMiwL,WAAWvF,MAAK56L,WAAW;AAEjC,eAAWwL,QAAQsC,OAAOnK,KAAK/E,MAAK,GAAG;AACrC,YAAMmhM,SAASxiK,OAAOlrB,KAAK7G,IAAI;AAC/B,UAAI,CAAC40L,SAAgB,iBAAC5zL,IAAIhB,IAAsB,GAAG;AACjD,cAAM,IAAI0J,MAAM,GAAG+1J,IAAI80B,MAAM,CAAC,iCAAiC;AAAA,MACjE;AACA,UAAI,OAAOnhM,OAAM4M,IAAI,MAAM,WAAW;AACpC,cAAM,IAAI0J,MAAM,GAAG+1J,IAAI80B,MAAM,CAAC,qBAAqB;AAAA,MACrD;AACA,UAAII,YAAYvhM,OAAM4M,IAAI,MAAM,OAAO;AACrC,cAAM,IAAI0J,MACR,GAAG+1J,IAAI80B,MAAM,CAAC,2CAChB;AAAA,MACF;AAAA,IACF;AAGA,WAAOnhM;AAAAA,EACT;;;;;;;;;;;;;;;;;AC/bA,QAAMyhM,gBAAgBlrI,SAAShnD,KAAKinD,KAAKlgD,MAAMmgD,UAAU0E,QAAQ;AAEjE,QAAMumI,YACJ,CAAC,CAACprL,MAAMqrL,uBACRC,wBAAA1yL,OAAOE,yBAAyBkH,OAAO,iBAAiB,sBAAxDsrL,sBAA2DhxH,cAAa;AAE1E,QAAMixH,eAAe;AACrB,QAAMC,cAAc;AAIpB,QAAMC,iBAAiB,oBAAI56B,QAAgB;AAC3C,QAAM66B,gBAAgB,oBAAIrzL,QAA4B;AAEtD,WAASszL,SAASh/H,UAA4B;AAE5C,WAAO/zD,uBAAOktD,OAAO;AAAA,MACnB8lI,UAAUA,MAAM;AAAA,MAChBltH,eAAeA,MAAM;AAAA,MACrBmtH,YAAYA,MAAM;AAAA,MAClB7mL,aAAaA,MAAM2nD;AAAAA,MACnBm/H,eAAeA,MAAM5vL;AAAAA,MACrB6vL,iBAAiBA,MAAM7vL;AAAAA,MACvBwqD,iBAAiBA,MAAMxqD;AAAAA,MACvB8vL,eAAeA,MAAM9vL;AAAAA,MACrB+vL,aAAaA,MAAM/vL;AAAAA,MACnB2oD,UAAUA,MAAM8H;AAAAA,IAClB,CAAa;AAAA,EACf;AAEO,WAASu/H,wBAAwBvjM,QAAcgkE,UAAkB;AACtE,QAAI,CAACy+H,UAAW;AAEhB,QAAIe,SAAST,cAAcjzL,IAAI9P,MAAK;AACpC,QAAI,CAACwjM,OAAQT,eAAc71L,IAAIlN,QAAQwjM,SAAS,EAAG;AACnDA,WAAOl7L,KAAK06L,SAASh/H,QAAQ,CAAC;AAE9B,WAAOhkE;AAAAA,EACT;AAEO,WAASyjM,cAAczjM,QAAc;AAC1C,QAAI,CAACyiM,UAAW;AAChBK,mBAAejnL,IAAI7b,MAAK;AACxB,WAAOA;AAAAA,EACT;AAEO,WAAS0jM,qBACd/qL,IACA;AACA,QAAI,CAAC8pL,UAAW,QAAO9pL;AAEvB,WAAO1I,OAAOC,eACZ,YAAawoB,MAAS;AACpBirK,6BAAwB;AACxB,aAAOhrL,GAAG,GAAG+f,IAAI;AAAA,IAClB,GACD,QACA;AAAA,MAAE33B,OAAO8hM;AAAAA,IAAY,CACvB;AAAA,EACF;AAEO,WAASe,mBACdjrL,IACA;AACA,QAAI,CAAC8pL,UAAW,QAAO9pL;AAEvB,WAAO1I,OAAOC,eACZ,YAAawoB,MAAS;AACpB,aAAO/f,GAAG,GAAG+f,IAAI;AAAA,IAClB,GACD,QACA;AAAA,MAAE33B,OAAO6hM;AAAAA,IAAa,CACxB;AAAA,EACF;AAEA,WAASe,yBAAyB;AAEhCA,6BAAyBA,MAAM;AAAA,IAAE;AAEjC,UAAM;AAAA,MAAEznL,oBAAoB2nL;AAAAA,IAAyB,IAAIxsL;AASzD,UAAMysL,wBAAwB;AAC9BzsL,UAAMkD,oBAANlD,MAAMkD,kBAAoBlF,KAAKC,IAC7B+B,MAAMkD,iBACNupL,qBACF;AAEAzsL,UAAM6E,oBAAoB,SAAS6nL,mBAAmBhrL,KAAKgD,OAAO;AAChE,UAAIioL,WAAW,CAAE;AAEjB,YAAMC,aAAanB,eAAen0L,IAAIoK,GAAG;AACzC,UAAI+tJ,SAA2Cm9B,aAC3C,WACA;AACJ,eAAS72L,IAAI,GAAGA,IAAI2O,MAAM1O,QAAQD,KAAK;AACrC,cAAMO,OAAOoO,MAAM3O,CAAC,EAAE2wD,gBAAiB;AACvC,YAAIpwD,SAASi1L,cAAc;AACzB97B,mBAAS;AAAA,QACX,WAAWn5J,SAASk1L,aAAa;AAC/B,cAAI/7B,WAAW,UAAU;AACvBA,qBAAS;AACT,gBAAIi8B,cAAcp0L,IAAIoK,GAAG,GAAG;AAC1BirL,uBAAS3qK,QAAQ,GAAG0pK,cAAcjzL,IAAIiJ,GAAG,CAAC;AAAA,YAC5C;AAAA,UACF,WAAW+tJ,WAAW,WAAW;AAE/Bk9B,uBAAWjoL;AACX;AAAA,UACF;AAAA,QACF,WAAW+qJ,WAAW,UAAU;AAC9Bk9B,mBAAS17L,KAAKyT,MAAM3O,CAAC,CAAC;AAAA,QACxB;AAAA,MACF;AAEA,aAAO8O,kBAAkBnD,KAAKirL,QAAQ;AAAA,IACvC;AAAA,EACH;AAEA,WAASH,yBAAyB9qL,KAAYgD,OAAmB;AAC/D,QAAIA,MAAM1O,WAAW,EAAG,QAAOm1L,cAAczpL,GAAG;AAChD,WAAO,GAAGypL,cAAczpL,GAAG,CAAC;AAAA,SAAYgD,MAAM7I,KAAK,WAAW,CAAC;AAAA,EACjE;;;;;;;;;;;AC5KA,MAAAgxL,qBAAA96L,yBAAA;AAAA,EAKe,MAAM+6L,oBAAoB9sL,MAAM;AAAA,IAC7CtD,YAAY/H,SAAiBg4D,UAAmB;AAC9C,YAAMh4D,OAAO;AACb,UAAAy3L,mBAAAA,eAAc,IAAI;AAClB,UAAIz/H,SAAU,EAAAu/H,GAAAA,mBAAAA,yBAAwB,MAAMv/H,QAAQ;AAAA,IACtD;AAAA,EACF;AAACpwD,cAAAA,UAAAuwL;;;;;;;;;;;;;ACND,MAAAC,WAAAh7L,eAAA;AACA,MAAAi7L,oBAAAj7L,wBAAA;AA+BA,MAAAk7L,eAAAl7L,mBAAA;AAEA,QAAMm7L,kBAAgC;AAAA,IACpC3sL,KAAKspL,kBAAkD;AAAA,IACvDnE,MAAMmE,kBAAmD;AAAA,IACzDsD,UAAU9D,kBAAyD;AAAA,IACnExE,YAAYuF,kBAEX;AAAA,IAEDvT,QAAQ4S,kBAA6D;AAAA,IACrE98H,UAAUk9H,kBAAuD;AAAA,IACjEjZ,kBAAkBiZ,kBAEjB;AAAA,IACDj0L,MAAMk0L,kBAAoD;AAAA,IAC1Dr+H,KAAKq+H,kBAAmD;AAAA,IAExDsD,eAAetD,kBAA6D;AAAA,IAE5ElT,SAASiT,kBAAAA;AAAAA,EACV;AAED,QAAMwD,qBAAmC;AAAA,IACvCC,SAASxD,kBAAuD;AAAA,IAChEyD,cAAclD,kBAAAA;AAAAA,EAGf;AAED,QAAMmD,uBAAqC;AAAA,IACzCrkK,SAAS0gK,kBAAsD;AAAA,IAC/DrlI,QAAQwlI,kBAAyD;AAAA,IACjEyD,MAAMzD,kBAAuD;AAAA,IAE7D3nL,SAASooL,kBAAuD;AAAA,IAChEjF,wBAAwB4E,kBAEvB;AAAA,IACDpF,iBAAiB6E,kBAAAA;AAAAA,EAGlB;AAED,QAAM6D,oBAAkC;AAAA,IAItCj9C,gBAAgBm5C,kBAEf;AAAA,IACDlD,SAAS4D,kBAA0D;AAAA,IACnEj+L,SAASi+L,kBAA0D;AAAA,IACnE3D,eAAemD,kBAA6D;AAAA,IAC5E6D,aAAa3C,kBAA+D;AAAA,IAE5E9xL,KAAK00L;AAAAA,IACLxzH,WAAWyzH;AAAAA,IAKXvlM,MAAM4hM,kBAAiE;AAAA,IACvE4D,SAAS5D,kBAAoE;AAAA,IAC7E6D,SAAS7D,kBAAoE;AAAA,IAE7EnsC,aAAa+rC,kBAA2D;AAAA,IACxE3lK,UAAU2lK,kBAAwD;AAAA,IAClEz+B,oBAAoBhvG,kBAEnB;AAAA,IACDorG,SAAS8hC,kBAAuD;AAAA,IAChEtvC,UAAU6vC,kBAAwD;AAAA,IAClElgC,wBAAwBigC,kBAEvB;AAAA,IACD//B,uBAAuB+/B,kBAEtB;AAAA,IACDlkK,YAAY6jK,kBAA6D;AAAA,IACzEwE,yBAAyB3xI,kBAExB;AAAA,IACD59C,eAAeqrL,kBAA6D;AAAA,IAC5Ex8B,YAAYg8B,kBAA6D;AAAA,IACzE2E,WAAW3E,kBAA4D;AAAA,IACvE94C,gBAAgBq5C,kBAA6D;AAAA,IAC7Et5C,YAAYs5C,kBAAyD;AAAA,IACrEvmL,YAAYomL,kBAAyD;AAAA,IACrEnmL,eAAemmL,kBAAAA;AAAAA,EAChB;AACkC;AACjC9wL,WAAOyE,OAAOqwL,mBAAmB;AAAA,MAC/Bhd,aAAar0H,kBAAc;AAAA,MAC3Bs0H,YAAYkZ,kBAAY;AAAA,MACxBpZ,WAAWqZ,kBAAa;AAAA,MACxBtZ,UAAUqZ,kBAAAA;AAAAA,IACZ,CAAC;AAAA,EACH;AAwIA,QAAMqE,mBAAmB,CACvB,uBACA,qBACA,iBACA,wBACA,wBACA,yBACA,mBACA,yBACA,gBACA,iBACA,iCACA,eACA,qCACA,uBACA,0BACA,6BACA,eACA,mBACA,yBACA,wBACA,uBACA,4BACA,4BAA4B;AAGD3xL,UAAA,mBAAG,IAAIxF,IAAIm3L,gBAAgB;AAExD,WAASvvB,UAAUxhK,KAAiC;AAClD,WAAOA,IAAInC,SAAS,SAASmC,IAAIrS,SAAS6zK,UAAUxhK,IAAI6nB,MAAM;AAAA,EAChE;AAEO,WAASlG,UACd9jB,MACAhK,MACA27D,UACkB;AAClB,QAAI;AACF,aAAOwhI,eACL;AAAA,QACEnzL,MAAM;AAAA,QACNlQ,QAAQkQ;AAAAA,MACT,GACDhK,IACF;AAAA,IACD,SAAQrI,QAAO;AACd,YAAMylM,eAAc,IAAItB,aAAW,QAACnkM,OAAMgM,SAASg4D,QAAQ;AAE3D,UAAIhkE,OAAMiN,KAAMw4L,CAAAA,aAAYx4L,OAAOjN,OAAMiN;AACzC,YAAMw4L;AAAAA,IACR;AAAA,EACF;AAEA,WAASD,eAAehxL,KAAkBnM,MAAkC;AAC1E,UAAMgK,OAAO2jK,UAAUxhK,GAAG;AAE1BkxL,+BAA2Br9L,IAAI;AAE/B4H,WAAOnK,KAAKuC,IAAI,EAAE2xB,QAASr5B,CAAAA,SAAgB;AACzC,YAAMglM,SAAS;AAAA,QACbtzL,MAAM;AAAA,QACN1E,MAAMhN;AAAAA,QACN07B,QAAQ7nB;AAAAA,MACA;AAEV,UAAInC,SAAS,YAAYwyL,qBAAqBlkM,IAAG,GAAG;AAClD,cAAM,IAAI0W,MAAM,IAAG+1J,GAAAA,uBAAIu4B,MAAM,CAAC,mCAAmC;AAAA,MACnE;AACA,UAAItzL,SAAS,eAAekyL,gBAAgB5jM,IAAG,GAAG;AAChD,cAAM,IAAI0W,MACR,IAAG+1J,GAAAA,uBAAIu4B,MAAM,CAAC,+CAChB;AAAA,MACF;AACA,UACEtzL,SAAS,eACTA,SAAS,gBACTqyL,mBAAmB/jM,IAAG,GACtB;AACA,YAAI0R,SAAS,iBAAiBA,SAAS,eAAe;AACpD,gBAAM,IAAIgF,MACR,IAAG,GAAA+1J,kBAAAA,KACDu4B,MACF,CAAC,6HAEH;AAAA,QACF;AAEA,cAAM,IAAItuL,MACR,IAAG+1J,GAAAA,uBACDu4B,MACF,CAAC,uFACH;AAAA,MACF;AAEA,YAAMvuK,aACJ2tK,kBAAkBpkM,IAAG,KACrBkkM,qBAAqBlkM,IAAG,KACxB+jM,mBAAmB/jM,IAAG,KACtB4jM,gBAAgB5jM,IAAG,KAClBilM;AAEHxuK,MAAAA,WAAUuuK,QAAQt9L,KAAK1H,IAAG,CAAC;AAAA,IAC7B,CAAC;AAED,WAAO0H;AAAAA,EACT;AAEA,WAASu9L,kBAAkBpxL,KAAiB;AAC1C,UAAM7T,OAAM6T,IAAI7G;AAEhB,QAAIq8J,SAAO,QAACrpK,IAAG,GAAG;AAChB,YAAM;AAAA,QAAEqL;AAAAA,QAASyN,SAAAA,WAAU;AAAA,MAAE,IAAIuwJ,SAAAA,QAAQrpK,IAAG;AAE5C,YAAM,IAAI0W,MACR,uBAAuBoC,QAAO,aAAY,GAAA2zJ,kBAAG,KAAC54J,GAAG,CAAC,MAAMxI,OAAO,EACjE;AAAA,IACF,OAAO;AACL,YAAM65L,gBAAgB,IAAIxuL,MACxB,uBAAmB+1J,kBAAAA,KACjB54J,GACF,CAAC,gGACH;AAEAqxL,oBAAc54L,OAAO;AAErB,YAAM44L;AAAAA,IACR;AAAA,EACF;AAEA,WAASH,2BAA2Br9L,MAAiB;AACnD,QAAIgI,eAAAC,KAAcjI,MAAM,WAAW,KAAKgI,eAAAC,KAAcjI,MAAM,YAAY,GAAG;AACzE,YAAM,IAAIgP,MAAM,yDAAyD;AAAA,IAC3E;AAAA,EACF;AAEA,WAAS4tL,aACPzwL,KACAzT,QACiC;AACjC,QAAIyT,IAAI6nB,OAAOhqB,SAAS,OAAO;AAC7B,YAAM,IAAIgF,MAAM,IAAG+1J,GAAAA,uBAAI54J,GAAG,CAAC,8CAA8C;AAAA,IAC3E;AACA,UAAM6nB,SAAmC7nB,IAAI6nB;AAE7C,UAAM1kB,OAAMopL,GAAAA,kBAAAA,cAAavsL,KAAKzT,MAAK;AACnC,QAAI4W,KAAK;AAGP,iBAAWs2K,WAAWh+K,OAAOnK,KAAK6R,GAAG,GAAG;AACtC,cAAMpH,OAAM,GAAAwwL,kBAAY,eAAC,GAAArhK,kBAAM,QAAClrB,KAAKy5K,OAAO,GAAGt2K,IAAIs2K,OAAO,CAAC;AAC3D,YAAI,CAAC19K,IAAK;AAEV,cAAMu1L,SAAS;AAAA,UACbzzL,MAAM;AAAA,UACN1E,MAAMsgL;AAAAA,UACN5xJ;AAAAA,QACQ;AACVmpK,uBAAeM,QAAQv1L,GAAG;AAAA,MAC5B;AAAA,IACF;AACA,WAAOoH;AAAAA,EACT;AAEA,WAASutL,oBACP1wL,KACAzT,QAC2B;AAC3B,QAAIyT,IAAI6nB,OAAOhqB,SAAS,OAAO;AAC7B,YAAM,IAAIgF,MAAM,IAAG+1J,GAAAA,uBAAI54J,GAAG,CAAC,sCAAsC;AAAA,IACnE;AACA,QAAIA,IAAI6nB,OAAOhqB,SAAS,aAAa;AACnC,YAAM,IAAIgF,MAAM,IAAG+1J,GAAAA,uBAAI54J,GAAG,CAAC,4CAA4C;AAAA,IACzE;AACA,UAAM6nB,SAAmB7nB,IAAI6nB;AAE7B,UAAMuwI,OAAMw0B,GAAAA,kBAAAA,aAAY5sL,KAAKzT,MAAK;AAClC,QAAI6rK,KAAK;AACP,iBAAW,CAACpsK,QAAO4C,KAAI,KAAKwpK,IAAIp0B,QAAO,GAAI;AACzC,cAAMutD,UAASrmK,GAAAA,kBAAAA,QAAOlrB,KAAKhU,MAAK;AAChC,cAAM+P,OAAMwwL,GAAAA,kBAAAA,cAAagF,QAAQ3iM,KAAI;AACrC,YAAI,CAACmN,IAAK,OAAM,IAAI8G,MAAM,OAAG+1J,kBAAG,KAAC24B,MAAM,CAAC,oBAAoB;AAE5D,cAAMC,eAAe;AAAA,UACnB3zL,MAAM;AAAA,UACN7R,OAAAA;AAAAA,UACA67B;AAAAA,QACQ;AACVmpK,uBAAeQ,cAAcz1L,GAAG;AAAA,MAClC;AAAA,IACF;AACA,WAAOq8J;AAAAA,EACT;AAEO,WAASq5B,gCACd53E,OACA7tH,QACA6R,MACA5C,GACM;AACN,QAAIjP,WAAU,EAAG;AAEjB,UAAM0lM,WAAW73E,MAAM7tH,SAAQ,CAAC;AAChC,UAAM2lM,WAAW93E,MAAM7tH,MAAK;AAE5B,QACE0lM,SAASnmM,QACTmmM,SAAS7lM,YAAYkT,UACrB,OAAO4yL,SAASplM,UAAU,UAC1B;AACA0O,QAAEzD,WACA;AAAA;AAAA,GACIqG,IAAI;AAAA,MAAc6zL,SAASnmM,KAAK49L,OAAO,MAAMhmK,KAAKtyB,UACpD8gM,SAASplM,OACTwS,QACA,CACF,CAAC;AAAA;AAAA,gBACgBlB,IAAI;AAAA,IACzB;AAAA,EACF;;;;;;;;;;;;ACzeA,WAAA6uI,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,QAAMwB,MAAM,KAAKziJ,MAAI,EAACyiJ,GAAG;AACzB,QAAM+jD,SAAS,MAAM/jD,GAAG;AAExB,QAAMgkD,eAAe,KAAKhkD,GAAG;AAE7B,QAAMikD,UAAU,MAAMD,YAAY,GAAGhkD,GAAG;AACxC,QAAMkkD,cAAc,MAAMF,YAAY,GAAGD,MAAM;AAE/C,QAAMI,cAAc,GAAGF,OAAO;AAC9B,QAAMG,kBAAkB,GAAGH,OAAO,KAAKC,WAAW;AAElD,WAASG,aAAazlM,SAAgB;AACpC,WAAOA,QAAO4V,QAAQ,uBAAuB,MAAM;AAAA,EACrD;AAOe,WAAS8vL,cACtBnsK,SACA1gB,SACQ;AACR,UAAMiW,QAAQnwB,MAAI,EAACsnI,QAAQptH,SAAS0gB,OAAO,EAAEznB,MAAMnT,MAAI,EAACyiJ,GAAG;AAE3D,WAAO,IAAIz1I,OACT,CACE,KACA,GAAGmjB,MAAM/c,IAAI,CAACmkG,MAAM/pG,MAAM;AACxB,YAAMgwG,OAAOhwG,MAAM2iB,MAAM1iB,SAAS;AAGlC,UAAI8pG,SAAS,KAAM,QAAOiG,OAAOqpF,kBAAkBD;AAGnD,UAAIrvF,SAAS,IAAK,QAAOiG,OAAOmpF,cAAcD;AAG9C,UAAInvF,KAAKn8F,QAAQ,IAAI,MAAM,GAAG;AAC5B,eACEqrL,eAAeK,aAAavvF,KAAK7kG,MAAM,CAAC,CAAC,KAAK8qG,OAAOgpF,SAAS/jD;AAAAA,MAElE;AAGA,aAAOqkD,aAAavvF,IAAI,KAAKiG,OAAOgpF,SAAS/jD;AAAAA,IAC/C,CAAC,CAAC,EACFnvI,KAAK,EAAE,CACX;AAAA,EACF;;;;;;;;;;;;ACpDA,WAAA67K,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAUO,QAAM+lD,iBAAchzL,QAAAA,iBAAG;AAAA,IAC5BizL,cAAc;AAAA,IACdC,QAAQ;AAAA,EACT;AAWD,QAAMC,YAAY;AAAA,IAChBC,MACE30L,MACA40L,YACAtZ,UACQ;AACR,UAAIqZ,QAAQ;AACZ,UAAI30L,SAASu0L,eAAeC,cAAc;AACxCG,gBAAQ;AACR,YAAIC,YAAY;AACdD,mBAAS,WAAWC;AAAAA,QACtB;AAAA,MACF,OAAO;AACLD,gBAAQ,YAAYrZ;AAAAA,MACtB;AACA,aAAOqZ;AAAAA,IACR;AAAA,IACDxyL,IAAIhU,QAAuBytL,SAAiC;AAC1D,UAAIz5K,MAAM;AACV,UAAIhU,UAAS,MAAM;AACjBgU,eAAO,cAAchU,MAAK;AAAA,MAC5B;AACA,UAAIytL,WAAW,MAAM;AACnBz5K,eAAO,SAASy5K,OAAO;AAAA,MACzB;AACA,aAAOz5K;AAAAA,IACR;AAAA,IAED,CAAC0yL,sBAAsBC,KAA4B;AACjD,YAAMpuI,UAAO9oD,OAAAyE,OAAQyyL,CAAAA,GAAAA,IAAI9mM,OAAO;AAEhC,aAAO04D,QAAQ0Y;AACf,aAAO1Y,QAAQxoD;AAEf,YAAM62L,oBAAoB,CAAC,GAAI,OAAOD,IAAIzjM,QAAS,CAAC;AACpD,UAAI0jM,kBAAkB/5L,QAAQ;AAC5B0rD,gBAAQr1D,UAAU0jM,kBAAkBp0L,IAAIsiE,OAAK+xH,mBAAmB/xH,CAAC,CAAC;AAAA,MACpE;AACA,YAAMgyH,oBAAoB,CAAC,GAAI,OAAOH,IAAIpJ,QAAS,CAAC;AACpD,UAAIuJ,kBAAkBj6L,QAAQ;AAC5B0rD,gBAAQglI,UAAU,CAAC,GAAGuJ,iBAAiB,EAAEt0L,IAAIsiE,OAAK+xH,mBAAmB/xH,CAAC,CAAC;AAAA,MACzE;AACA,aAAO39C,KAAKtyB,UAAU0zD,SAASxlD,QAAW,CAAC;AAAA,IAC7C;AAAA,EACD;AAED,WAAS8zL,mBACP/xH,GACiE;AAAA,QAAAiyH;AACjE,QAAI55L,QAAqB45L,UAAGjyH,EAAEv1E,SAAI,OAAA,SAANwnM,QAAQ5J;AACpC,QAAIhwL,QAAQ,MAAM;AAChB,UAAI,OAAO2nE,EAAEv0E,UAAU,UAAU;AAC/B4M,eAAO2nE,EAAEv0E;AAAAA,MACV,WAAU,OAAOu0E,EAAEv0E,UAAU,YAAY;AAIxC4M,eAAO,cAAc2nE,EAAEv0E,MAAMm7D,WAAW5pD,MAAM,GAAG,EAAE,CAAC;AAAA,MACtD;AAAA,IACF;AACA,QAAI3E,QAAQ,MAAM;AAChBA,aAAO;AAAA,IACT;AACA,QAAI2nE,EAAEj1E,YAAYkT,QAAW;AAC3B,aAAO5F;AAAAA,IACT,WAAW2nE,EAAE3nE,QAAQ,MAAM;AACzB,aAAO,CAACA,MAAM2nE,EAAEj1E,OAAO;AAAA,IACzB,OAAO;AACL,aAAO,CAACsN,MAAM2nE,EAAEj1E,SAASi1E,EAAE3nE,IAAI;AAAA,IACjC;AAAA,EACF;AAAA,EAEO,MAAM65L,cAAc;AAAA,IAAAzzL,cAAA;AAAA,WACzB0zL,SAAiC,CAAE;AAAA,IAAA;AAAA,IACnCC,UACE1zL,SACA3B,MACA;AAAA,MACE40L;AAAAA,MACAtZ;AAAAA,IAIF,GACA;AACA,UAAI,CAAC35K,QAAS,QAAO,MAAM;AAAA,MAAE;AAC7B,aAAO,CACL+kD,SACAv4D,QACAytL,YACG;AACH,aAAKwZ,OAAOn/L,KAAK;AAAA,UACf+J;AAAAA,UACA40L;AAAAA,UACAtZ;AAAAA,UACA50H;AAAAA,UACAv4D,OAAAA;AAAAA,UACAytL;AAAAA,QACF,CAAC;AAAA,MACF;AAAA,IACH;AAAA,IACA,QAAQ58B,OAAO/uJ,SAA0C;AACvD,UAAI0kM,QAAQD,UAAUC,MACpB1kM,QAAO+P,MACP/P,QAAO2kM,YACP3kM,QAAOqrL,QACT;AACA,YAAMn5K,MAAMuyL,UAAUvyL,IAAIlS,QAAO9B,OAAO8B,QAAO2rL,OAAO;AACtD,UAAIz5K,IAAKwyL,UAAS,IAAIxyL,GAAG;AACzB,YAAMukD,UAAU,OAAOguI,UAAUG,sBAAsB5kM,QAAOy2D,OAAO;AACrE,aAAO,GAAGiuI,KAAK;AAAA,EAAKjuI,OAAO;AAAA,IAC7B;AAAA,IAEA,CAAC4uI,SAA0B;AACzB,UAAI,KAAKF,OAAOp6L,WAAW,EAAG,QAAO;AACrC,YAAMu6L,UAAU,OAAO9Y,WAAQkL,IAC7B,KAAKyN,OAAOz0L,IAAI60L,OAAKL,cAAcn2C,OAAOw2C,CAAC,CAAC,CAC9C;AACA,aAAOD,QAAQ10L,KAAK,MAAM;AAAA,IAC5B;AAAA,EACF;AAACU,UAAAA,gBAAA4zL;;;;;;;;;;;;;AC9ID,WAAAtmD,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAu5B,SAAA;AAAA,UAAAv5B,OAAAz3I,iBAAA;AAAAgxK,wBAAA;AAAA,aAAAv5B;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAnb,WAAAt8H,eAAA;AASA,MAAA0+L,kBAAA1+L,sBAAA;AACA,MAAA26J,WAAA36J,eAAA;AAGA,MAAA86L,qBAAA96L,yBAAA;AACA,MAAAk7L,eAAAl7L,mBAAA;AAKA,MAAAumB,SAAAvmB,oBAAA;AAQA,MAAA+zL,WAAA/zL,eAAA;AAEA,MAAAm2L,qBAAAn2L,yBAAA;AAZA,QAAMhJ,SAAQ86K,OAAU,EAAC,2BAA2B;AAgD7C,YAAU6sB,iBACfzqF,KACApkG,UAC6B;AAC7B,UAAMyd,QAAQ,OAAOqxK,uBAAuB1qF,KAAKpkG,QAAO;AACxD,QAAI,CAACyd,MAAO,QAAO;AAEnB,WAAO;AAAA,MACLjzB,SAASukM,iBAAiBtxK,MAAMjzB,OAAO;AAAA,MACvCq6L,SAASkK,iBAAiBtxK,MAAMonK,OAAO;AAAA,MACvC19L,SAASs2B,MAAMt2B,QAAQ2S,IAAIylI,OAAKurB,iBAAiBvrB,CAAC,CAAC;AAAA,MACnDyvD,OAAO,oBAAI95L,IAAG;AAAA,IACf;AAAA,EACH;AAEO,QAAM45L,yBAAsBp0L,YAAA,yBAAGu0L,gBAAgC;AAAA,IACpEpL,MAAMqL,YAAUC,sBAAsBD,MAAM;AAAA,IAC5C73L,KAAKA,CAAC63L,QAAQna,YAAYqa,yBAAyBF,MAAM,EAAEna,OAAO;AAAA,IAClEx8G,WAAWA,CAAC22H,QAAQ5nM,WAAU+nM,+BAA+BH,MAAM,EAAE5nM,MAAK;AAAA,IAC1EgoM,cAAcA,CAACJ,QAAQ5nM,QAAOytL,YAC5Bwa,kCAAkCL,MAAM,EAAE5nM,MAAK,EAAEytL,OAAO;AAAA,IAC1Dya,cAAcA,MAAM,MAAM;AAAA,IAAA;AAAA,EAC5B,CAAC;AACD,QAAML,yBAAwB,GAAA3W,SAAiB,mBAAE0W,YAC/CO,qBAAqBP,QAAQA,OAAOr3K,OAAOotK,mBAAAA,yBAAyB,CACtE;AACA,QAAMmK,4BAA2B,GAAA5W,SAAiB,mBAAE0W,aAClD,GAAAxW,SAAmB,qBAAE3D,aACnB2a,oBACER,QACAA,OAAOr3K,OACPotK,mBAAAA,2BACAlQ,OACF,CACF,CACF;AACA,QAAMsa,kCAAiC,GAAA7W,SAAiB,mBACrD0W,aACC,GAAAxW,SAAmB,qBAAEpxL,CAAAA,WACnBqoM,yBACET,QACAA,OAAOr3K,OACPotK,mBAAAA,2BACA39L,MACF,CACF,CACJ;AACA,QAAMioM,wCAAoC/W,SAAAA,mBACvC0W,aACCxW,GAAAA,SAAAA,qBAAqBpxL,CAAAA,YACnB,GAAAoxL,8BAAqB3D,aACnB6a,4BACEV,QACAA,OAAOr3K,OACPotK,mBAAyB,2BACzB39L,QACAytL,OACF,CACF,CACF,CACJ;AAcO,YAAU8a,eACf1gM,MACA6Q,UACiC;AACjC,QAAI8vL,cAAcC;AAClB,UAAMC,qBAAqB,IAAI1B,SAAAA,cAAe;AAC9C,UAAM2B,oBAAoB,OAAOC,sBAC/B;AAAA,MACE/oM,SAASgI;AAAAA,MACTyR,SAASZ,SAAQtB;AAAAA,IACnB,GACAsB,UACA3F,QACA21L,kBACF;AACA,QAAI,CAACC,kBAAmB,QAAO;AAC/B,UAAME,qBAAqB,OAAOH,mBAAmBvB,OAAQ;AAE7D,QAAIzL;AACJ,QAAI,OAAO7zL,KAAK6zL,eAAe,UAAU;AACvCA,mBAAa,QAAO,GAAA9N,OAAAA,YAClB/lL,KAAK6zL,YACLhjL,SAAQtB,KACRsB,SAAQ+0K,SACR/0K,SAAQg1K,MACV;AAAA,IACF,WAAW7lL,KAAK6zL,eAAe,OAAO;AACpCA,mBAAa,WAAO/N,OAAc,gBAChCj1K,SAAQ6jL,MACR7jL,SAAQ+0K,SACR/0K,SAAQg1K,MACV;AAAA,IACF;AAEA,QAAI;AAAA,MAAEyW;AAAAA,MAASC;AAAAA,IAAa,IAAIv8L;AAChC,QAAIihM,wBAAwBpwL,SAAQtB;AAEpC,UAAM2xL,kBAAkBC,WAAY;AACpC,UAAMC,mBAAmB,IAAIjC,SAAAA,cAAe;AAC5C,QAAItL,YAAY;AACd,YAAMwN,gBAAgBC,mBAAmBzN,UAAU;AACnD,YAAMjiI,SAAS,OAAO2vI,cACpBF,eACAxwL,UACA3F,QACAk2L,gBACF;AACA,UAAI,CAACxvI,OAAQ,QAAO;AACpB+uI,qBAAe,OAAOS,iBAAiB9B,OAAQ;AAI/C,UAAIhD,YAAYpxL,QAAW;AACzBoxL,kBAAU+E,cAAcrpM,QAAQskM;AAAAA,MAClC;AACA,UAAIC,iBAAiBrxL,QAAW;AAC9B+1L,gCAAwBI,cAAc5vL;AACtC8qL,uBAAe8E,cAAcrpM,QAAQukM;AAAAA,MACvC;AAEAiF,iBAAWN,iBAAiBtvI,MAAM;AAAA,IACpC;AAEA,QAAI6vI,YAAYC;AAChB,QAAIC,YAAY;AAChB,UAAMC,YAAYT,WAAY;AAE9B,SACG7E,YAAY,QAAQA,YAAYpxL,WACjC,OAAO2F,SAAQ8qD,aAAa,UAC5B;AACA,YAAMgqH,UAAU,QAAON,GAAAA,wBAAgBx0K,SAAQ8qD,QAAQ;AAEvD,UACEgqH,WACAkc,mBAAmBhxL,UAAS80K,SAAS4W,cAAc0E,qBAAqB,GACxE;AACA,SAAC;AAAA,UAAEztI,QAAQiuI;AAAAA,UAAYxnM,QAAQynM;AAAAA,QAAY,IAAI,QAAO,GAAAhc,OAAAA,oBACpDC,SACA90K,SAAQ+0K,SACR/0K,SAAQg1K,MACV;AAEA,YAAI4b,YAAY;AACdG,oBAAU/B,MAAMrsL,IAAIiuL,WAAWnc,QAAQ;AAAA,QACzC;AAEA,YACEmc,cACAK,aAAajxL,UAAS4wL,WAAWjuI,QAAQ,MAAMiuI,WAAWhwL,OAAO,GACjE;AACAkwL,sBAAY;AAAA,QACd;AAEA,YAAID,eAAe,CAACC,WAAW;AAC7B,gBAAMN,gBAAgBU,oBAAoBL,WAAW;AACrD,gBAAMM,gBAAgB,IAAI7C,SAAAA,cAAe;AACzC,gBAAMvtI,SAAS,OAAO2vI,cACpBF,eACAxwL,UACA3F,QACA82L,aACF;AACA,cAAI,CAACpwI,QAAQ;AACX+vI,wBAAY;AAAA,UACd,OAAO;AACLf,4BAAgB,OAAOoB,cAAc1C,OAAQ;AAC7CkC,uBAAWI,WAAWhwI,MAAM;AAAA,UAC9B;AAAA,QACF;AAEA,YAAI8vI,eAAeC,WAAW;AAC5BC,oBAAU/B,MAAMrsL,IAAIkuL,YAAYpc,QAAQ;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAEA,QAAIz0K,SAAQoxL,YAAY;AACtBhzL,cAAQgrI,IACN,qBAAqBppI,SAAQ8qD,QAAQ;AAAA,IAEnC,CAACglI,cAAcC,eAAeI,kBAAkB,EAC7CjwK,OAAOimF,OAAK,CAAC,CAACA,CAAC,EACfnsG,KAAK,MAAM,IACd,+BACJ;AAAA,IACF;AAGA,UAAMyjB,QAAQkzK,WACZA,WAAWA,WAAWL,WAAY,GAAED,eAAe,GAAGU,SAAS,GAC/Dd,iBACF;AAEA,WAAO;AAAA,MACLzlM,SAASsmM,YAAY,CAAA,IAAK/B,iBAAiBtxK,MAAMjzB,OAAO;AAAA,MACxDq6L,SAASiM,YAAY,CAAA,IAAK/B,iBAAiBtxK,MAAMonK,OAAO;AAAA,MACxD19L,SAAS2pM,YAAY,CAAE,IAAGrzK,MAAMt2B,QAAQ2S,IAAIylI,OAAKurB,iBAAiBvrB,CAAC,CAAC;AAAA,MACpE8xD,cAAcP,YAAY,YAAY;AAAA,MACtCnuI,QAAQiuI,cAAcv2L;AAAAA,MACtBoxL,SAASoF,eAAex2L;AAAAA,MACxBjR,QAAQ45L,cAAc3oL;AAAAA,MACtB20L,OAAOvxK,MAAMuxK;AAAAA,IACd;AAAA,EACH;AAEA,WAASgC,mBACPhxL,UACA80K,SACA4W,cACA0E,uBACS;AACT,QAAI,OAAO1E,iBAAiB,UAAW,QAAOA;AAE9C,UAAM4F,eAAetxL,SAAQ6jL;AAI7B,QAAI6H,iBAAiBrxL,QAAW;AAC9B,aAAOy6K,QAAQJ,YAAYn2J,SAAS+yK,YAAY;AAAA,IAClD;AAEA,QAAIC,kBAAkB7F;AACtB,QAAI,CAACluL,MAAMC,QAAQ8zL,eAAe,GAAG;AACnCA,wBAAkB,CAACA,eAAe;AAAA,IACpC;AACAA,sBAAkBA,gBAAgBz3L,IAAI03L,SAAO;AAC3C,aAAO,OAAOA,QAAQ,WAClB9qM,MAAGA,EAAEsnI,QAAQoiE,uBAAuBoB,GAAG,IACvCA;AAAAA,IACN,CAAC;AAID,QAAID,gBAAgBp9L,WAAW,KAAKo9L,gBAAgB,CAAC,MAAMD,cAAc;AACvE,aAAOxc,QAAQJ,YAAYn2J,SAAS+yK,YAAY;AAAA,IAClD;AAEA,WAAOC,gBAAgBh6G,KAAKi6G,SAAO;AACjC,UAAI,OAAOA,QAAQ,UAAU;AAC3BA,eAAM,GAAAC,gBAAAA,SAAmBD,KAAKpB,qBAAqB;AAAA,MACrD;AAEA,aAAOtb,QAAQJ,YAAYn9F,KAAKm6G,eAAa;AAC3C,eAAOC,aAAaH,KAAKpB,uBAAuBsB,WAAW1xL,QAAO;AAAA,MACpE,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAEA,QAAMywL,sBAAqB,GAAAjY,SAAiB,mBACzC3xL,CAAAA,WAAqC;AAAA,IACpC4tL,UAAU5tL,MAAK4tL;AAAAA,IACf7zK,SAAS/Z,MAAK+Z;AAAAA,IACdzZ,UAAS81B,GAAAA,SAAQ,UAAC,cAAcp2B,MAAKM,SAASN,MAAK4tL,QAAQ;AAAA,EAC7D,EACF;AAEA,QAAMyc,uBAAsB,GAAA1Y,SAAiB,mBAC1C3xL,CAAAA,WAAqC;AAAA,IACpC4tL,UAAU5tL,MAAK4tL;AAAAA,IACf7zK,SAAS/Z,MAAK+Z;AAAAA,IACdzZ,UAAS81B,GAAAA,SAAQ,UAAC,eAAep2B,MAAKM,SAASN,MAAK4tL,QAAQ;AAAA,EAC9D,EACF;AAEA,QAAMmd,sBAAqB,GAAApZ,SAAiB,mBACzC3xL,CAAAA,WAAqC;AAAA,IACpC4tL,UAAU5tL,MAAK4tL;AAAAA,IACf7zK,SAAS/Z,MAAK+Z;AAAAA,IACdzZ,UAAS81B,GAAAA,SAAQ,UAAC,eAAep2B,MAAKM,SAASN,MAAK4tL,QAAQ;AAAA,EAC9D,EACF;AAKA,QAAMyb,wBAAwBjB,gBAAgB;AAAA,IAC5CpL,MAAM/0L,CAAAA,WAAS2gM,qBAAqB3gM,QAAO,QAAQ81L,mBAAAA,uBAAuB;AAAA,IAC1EvtL,KAAKA,CAACvI,QAAOimL,YACX2a,oBAAoB5gM,QAAO,QAAQ81L,mBAAuB,yBAAE7P,OAAO;AAAA,IACrEx8G,WAAWA,CAACzpE,QAAOxH,WACjBqoM,yBAAyB7gM,QAAO,QAAQ81L,mBAAuB,yBAAEt9L,MAAK;AAAA,IACxEgoM,cAAcA,CAACxgM,QAAOxH,QAAOytL,YAC3B6a,4BACE9gM,QACA,QACA81L,mBAAAA,yBACAt9L,QACAytL,OACF;AAAA,IACFya,cAAcA,CAAC1gM,QAAOkR,UAAS6xL,eAC7BC,wBAAwBhjM,QAAOkR,UAAS6xL,UAAU;AAAA,EACtD,CAAC;AAKD,QAAME,sBAAsB9C,gBAA+B;AAAA,IACzDpL,MAAMh9L,CAAAA,UAAQmrM,oBAAoBnrM,KAAI;AAAA,IACtCwQ,KAAKA,CAACxQ,OAAMkuL,YAAYkd,uBAAuBprM,KAAI,EAAEkuL,OAAO;AAAA,IAC5Dx8G,WAAWA,CAAC1xE,OAAMS,WAAU4qM,6BAA6BrrM,KAAI,EAAES,MAAK;AAAA,IACpEgoM,cAAcA,CAACzoM,OAAMS,QAAOytL,YAC1Bod,gCAAgCtrM,KAAI,EAAES,MAAK,EAAEytL,OAAO;AAAA,IACtDya,cAAcA,CAAC3oM,OAAMmZ,UAAS6xL,eAC5BO,gBAAgBvrM,MAAK4tL,UAAUz0K,UAAS6xL,UAAU;AAAA,EACtD,CAAC;AAED,YAAUnB,cACR5hM,QACAkR,UACAgvL,OACA6C,YACA;AACA,UAAMp0K,QAAQ,OAAOs0K,oBAAoBjjM,QAAOkR,UAASgvL,OAAO6C,UAAU;AAC1Ep0K,aAAK,QAALA,MAAOuxK,MAAMrsL,IAAI7T,OAAM2lL,QAAQ;AAE/B,WAAOh3J;AAAAA,EACT;AAEA,QAAMu0K,uBAAsB,GAAAxZ,SAAiB,mBAAE3xL,CAAAA,UAC7C4oM,qBAAqB5oM,OAAMA,MAAK4tL,UAAUwQ,mBAAAA,yBAAyB,CACrE;AACA,QAAMgN,0BAAyB,GAAAzZ,SAAiB,mBAAE3xL,CAAAA,WAChD,GAAA6xL,SAAmB,qBAAE3D,aACnB2a,oBACE7oM,OACAA,MAAK4tL,UACLwQ,mBAAAA,2BACAlQ,OACF,CACF,CACF;AACA,QAAMmd,gCAA+B,GAAA1Z,SAAiB,mBAAE3xL,CAAAA,WACtD,GAAA6xL,SAAmB,qBAAEpxL,CAAAA,WACnBqoM,yBACE9oM,OACAA,MAAK4tL,UACLwQ,mBAAAA,2BACA39L,MACF,CACF,CACF;AACA,QAAM6qM,sCAAkC3Z,SAAAA,mBACrC3xL,CAAAA,WACC6xL,GAAAA,SAAAA,qBAAqBpxL,CAAAA,YACnB,GAAAoxL,8BAAqB3D,aACnB6a,4BACE/oM,OACAA,MAAK4tL,UACLwQ,mBAAyB,2BACzB39L,QACAytL,OACF,CACF,CACF,CACJ;AAEA,WAASqd,gBACP3d,UACAz0K,UACA6xL,YACA;AACA,QAAI,CAACA,YAAY;AACf,aAAO,MAAM;AAAA,MAAE;AAAA,IACjB;AACA,WAAOA,WAAWrD,UAAUxuL,SAAQoxL,YAAY1D,SAAAA,eAAeE,QAAQ;AAAA,MACrEnZ;AAAAA,IACF,CAAC;AAAA,EACH;AAEA,WAASgb,qBACP;AAAA,IAAE7uL;AAAAA,IAASzZ,SAAAA;AAAAA,EAAgC,GAC3C0wB,OACAytK,aAKA;AACA,WAAOA,YAAY1kL,SAASzZ,UAAS0wB,KAAK;AAAA,EAC5C;AAEA,WAASi6K,wBACPv3H,GACAv6D,UACA6xL,YACA;AAAA,QAAAQ;AACA,QAAI,CAACR,YAAY;AACf,aAAO,MAAM;AAAA,MAAE;AAAA,IACjB;AACA,WAAOA,WAAWrD,UAAUxuL,SAAQoxL,YAAY1D,SAAAA,eAAeC,cAAc;AAAA,MAC3EI,aAAUsE,kBAAEryL,SAAQg1K,WAAM,OAAA,SAAdqd,gBAAgB59L;AAAAA,IAC9B,CAAC;AAAA,EACH;AAEA,WAASi7L,oBACP;AAAA,IAAE9uL;AAAAA,IAASzZ,SAAAA;AAAAA,EAAgC,GAC3C0wB,OACAytK,aAKAvQ,SACA;AAAA,QAAAud;AACA,UAAMnjM,QAAImjM,eAAGnrM,SAAQkQ,QAARi7L,OAAAA,SAAAA,aAAcvd,OAAO;AAClC,WAAO5lL,OAAOm2L,YAAY1kL,SAASzR,MAAM,GAAG0oB,KAAK,SAASk9J,OAAO,IAAI,IAAI;AAAA,EAC3E;AAEA,WAAS4a,yBACP;AAAA,IAAE/uL;AAAAA,IAASzZ,SAAAA;AAAAA,EAAgC,GAC3C0wB,OACAytK,aAKAh+L,QACA;AAAA,QAAAirM;AACA,UAAMpjM,QAAIojM,qBAAGprM,SAAQoxE,cAARg6H,OAAAA,SAAAA,mBAAoBjrM,MAAK;AACtC,QAAI,CAAC6H,KAAM,OAAM,IAAIgP,MAAM,sCAAsC;AAEjE,WAAOmnL,YAAY1kL,SAASzR,MAAM,GAAG0oB,KAAK,cAAcvwB,MAAK,GAAG;AAAA,EAClE;AAEA,WAASsoM,4BACP;AAAA,IAAEhvL;AAAAA,IAASzZ,SAAAA;AAAAA,EAAiC,GAC5C0wB,OACAytK,aAKAh+L,QACAytL,SACA;AAAA,QAAAyd,qBAAAC;AACA,UAAMnsK,YAAQksK,sBAAGrrM,SAAQoxE,cAARi6H,OAAAA,SAAAA,oBAAoBlrM,MAAK;AAC1C,QAAI,CAACg/B,SAAU,OAAM,IAAInoB,MAAM,sCAAsC;AAErE,UAAMhP,QAAIsjM,gBAAGnsK,SAASjvB,QAATo7L,OAAAA,SAAAA,cAAe1d,OAAO;AACnC,WAAO5lL,OACHm2L,YACE1kL,SACAzR,MACA,GAAG0oB,KAAK,cAAcvwB,MAAK,UAAUytL,OAAO,IAC9C,IACA;AAAA,EACN;AAEA,WAASka,gBAMP;AAAA,IACApL,MAAAA;AAAAA,IACAxsL;AAAAA,IACAkhE;AAAAA,IACA+2H;AAAAA,IACAE;AAAAA,EAmBF,GAKiC;AAC/B,WAAO,UAAUkD,YAAY5jM,QAAOkR,UAASgvL,QAAQ,oBAAI95L,IAAK,GAAE28L,YAAY;AAC1E,YAAM;AAAA,QAAEjxL;AAAAA,MAAQ,IAAI9R;AAEpB,YAAM6jM,mBAID,CAAE;AAEP,YAAMtkB,WAAWwV,MAAK/0L,MAAK;AAC3B,UAAI8jM,mBAAmBvkB,UAAUztK,SAASZ,UAASlR,OAAM2lL,QAAQ,GAAG;AAClEke,yBAAiBvjM,KAAK;AAAA,UACpBhG,QAAQilL;AAAAA,UACR0G,SAAS16K;AAAAA,UACT/S,OAAO+S;AAAAA,QACT,CAAC;AAED,cAAMw4L,UAAUx7L,IAAIvI,QAAOkR,SAAQ+0K,OAAO;AAC1C,YACE8d,WACAD,mBAAmBC,SAASjyL,SAASZ,UAASlR,OAAM2lL,QAAQ,GAC5D;AACAke,2BAAiBvjM,KAAK;AAAA,YACpBhG,QAAQypM;AAAAA,YACR9d,SAAS/0K,SAAQ+0K;AAAAA,YACjBztL,OAAO+S;AAAAA,UACT,CAAC;AAAA,QACH;AAEA,SAACg0K,SAASlnL,QAAQoxE,aAAa,CAAE,GAAEz3C,QAAQ,CAACy5C,GAAGjzE,WAAU;AACvD,gBAAMwrM,cAAcv6H,UAAUzpE,QAAOxH,MAAK;AAC1C,cAAIsrM,mBAAmBE,aAAalyL,SAASZ,UAASlR,OAAM2lL,QAAQ,GAAG;AACrEke,6BAAiBvjM,KAAK;AAAA,cACpBhG,QAAQ0pM;AAAAA,cACRxrM,OAAAA;AAAAA,cACAytL,SAAS16K;AAAAA,YACX,CAAC;AAED,kBAAM04L,kBAAkBzD,aAAaxgM,QAAOxH,QAAO0Y,SAAQ+0K,OAAO;AAClE,gBACEge,mBACAH,mBACEG,iBACAnyL,SACAZ,UACAlR,OAAM2lL,QACR,GACA;AACAke,+BAAiBvjM,KAAK;AAAA,gBACpBhG,QAAQ2pM;AAAAA,gBACRzrM,OAAAA;AAAAA,gBACAytL,SAAS/0K,SAAQ+0K;AAAAA,cACnB,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF,CAAC;AAAA,MACH;AAKA,UACE4d,iBAAiBp7G,KACf,CAAC;AAAA,QACCnuF,QAAQ;AAAA,UACNjC,SAAS;AAAA,YAAEw7D;AAAAA,YAAQipI;AAAAA,UAAK;AAAA,QAC1B;AAAA,MACF,MAAMqF,aAAajxL,UAAS2iD,QAAQipI,MAAMhrL,OAAO,CACnD,GACA;AACA,eAAO;AAAA,MACT;AAEA,YAAM6c,QAAQ6yK,WAAY;AAC1B,YAAM0C,SAASxD,aAAa1gM,QAAOkR,UAAS6xL,UAAU;AAEtD,iBAAW;AAAA,QAAEzoM,QAAAA;AAAAA,QAAQ9B,OAAAA;AAAAA,QAAOytL;AAAAA,MAAS,KAAI4d,kBAAkB;AACzD,YACE,EAAE,OAAOM,kBACPx1K,OACAr0B,QAAOjC,SACPyZ,SACAZ,UACAgvL,OACA6C,UACF,IACA;AACA,iBAAO;AAAA,QACT;AAEAmB,eAAO5pM,SAAQ9B,QAAOytL,OAAO;AAC7B,eAAOme,eAAez1K,OAAOr0B,OAAM;AAAA,MACrC;AACA,aAAOq0B;AAAAA,IACR;AAAA,EACH;AAEA,YAAUw1K,kBACRx1K,OACAtuB,MACAyR,SACAZ,UACAgvL,OACA6C,YACkB;AAClB,QAAI1iM,KAAKm4B,YAAYjtB,OAAW,QAAO;AAEvC,UAAMxT,QAAO,WAAOquL,OAAU,YAC5B/lL,KAAKm4B,SACL1mB,SACAZ,SAAQ+0K,SACR/0K,SAAQg1K,MACV;AAEA,QAAIga,MAAMv5L,IAAI5O,KAAI,GAAG;AACnB,YAAM,IAAIsX,MACR,wCAAwCtX,MAAK4tL,QAAQ;AAAA;AAAA,IAEnDj3K,MAAM2/C,KAAK6xI,OAAOnoM,CAAAA,UAAQ,MAAMA,MAAK4tL,QAAQ,EAAE,EAAEz6K,KAAK,IAAI,CAC9D;AAAA,IACF;AAEAg1L,UAAMrsL,IAAI9b,KAAI;AACd,UAAMkqM,YAAY,OAAOL,cACvBkB,mBAAmB/qM,KAAI,GACvBmZ,UACAgvL,OACA6C,UACF;AACA7C,UAAMliH,OAAOjmF,KAAI;AAEjB,QAAI,CAACkqM,UAAW,QAAO;AAEvBJ,eAAWlzK,OAAOszK,SAAS;AAE3B,WAAO;AAAA,EACT;AAEA,WAASJ,WAAW17H,QAAqBhsE,SAAkC;AACzEgsE,WAAO9tE,QAAQiI,KAAK,GAAGnG,QAAO9B,OAAO;AACrC8tE,WAAOzqE,QAAQ4E,KAAK,GAAGnG,QAAOuB,OAAO;AACrCyqE,WAAO4vH,QAAQz1L,KAAK,GAAGnG,QAAO47L,OAAO;AACrC,eAAWh+L,SAAQoC,QAAO+lM,OAAO;AAC/B/5H,aAAO+5H,MAAMrsL,IAAI9b,KAAI;AAAA,IACvB;AAEA,WAAOouE;AAAAA,EACT;AAEA,YAAUi+H,eACRj+H,QACA;AAAA,IAAE9tE,SAAAA;AAAAA,IAASqD,SAAAA;AAAAA,IAASq6L;AAAAA,EAA+B,GAC7B;AACtB5vH,WAAO9tE,QAAQiI,KAAKjI,QAAO;AAC3B8tE,WAAOzqE,QAAQ4E,KAAK,GAAI,OAAO5E,SAAS,CAAC;AACzCyqE,WAAO4vH,QAAQz1L,KAAK,GAAI,OAAOy1L,QAAS,CAAC;AAEzC,WAAO5vH;AAAAA,EACT;AAEA,WAASq7H,aAA0B;AACjC,WAAO;AAAA,MACLnpM,SAAS,CAAE;AAAA,MACX09L,SAAS,CAAE;AAAA,MACXr6L,SAAS,CAAE;AAAA,MACXwkM,OAAO,oBAAI95L,IAAG;AAAA,IACf;AAAA,EACH;AAEA,WAAS41J,iBAAiB37J,MAA0C;AAClE,UAAMhI,WAAO4P,OAAAyE,OAAA,CAAA,GACRrM,IAAI;AAET,WAAOhI,SAAQmgC;AACf,WAAOngC,SAAQkQ;AACf,WAAOlQ,SAAQoxE;AACf,WAAOpxE,SAAQqD;AACf,WAAOrD,SAAQ09L;AACf,WAAO19L,SAAQ29L;AACf,WAAO39L,SAAQw7D;AACf,WAAOx7D,SAAQykM;AACf,WAAOzkM,SAAQV;AACf,WAAOU,SAAQ8kM;AACf,WAAO9kM,SAAQ+kM;AAIf,QAAI/0L,eAAAC,KAAcjQ,UAAS,WAAW,GAAG;AACvCA,MAAAA,SAAQskK,aAAatkK,SAAQilM;AAC7B,aAAOjlM,SAAQilM;AAAAA,IACjB;AACA,WAAOjlM;AAAAA,EACT;AAEA,WAAS4nM,iBACP55E,OACgC;AAChC,UAAMr7G,MAGF,oBAAIujD,IAAK;AAEb,UAAMioI,cAAc,CAAE;AAEtB,eAAWp7L,SAAQirH,OAAO;AACxB,UAAI,OAAOjrH,MAAKrC,UAAU,YAAY;AACpC,cAAMq7I,QAAQh5I,MAAKrC;AACnB,YAAIs+L,UAAUrsL,IAAIlD,IAAIssI,KAAK;AAC3B,YAAI,CAACijD,SAAS;AACZA,oBAAU,oBAAI9oI,IAAK;AACnBvjD,cAAI9F,IAAIkvI,OAAOijD,OAAO;AAAA,QACxB;AACA,YAAIhkF,OAAOgkF,QAAQvvL,IAAI1M,MAAKuK,IAAI;AAChC,YAAI,CAAC0tG,MAAM;AACTA,iBAAO;AAAA,YAAEt6G,OAAOqC;AAAAA,UAAM;AACtBo7L,sBAAYl2L,KAAK+yG,IAAI;AAIrB,cAAI,CAACj4G,MAAKs6L,QAAS2B,SAAQnyL,IAAI9J,MAAKuK,MAAM0tG,IAAI;AAAA,QAChD,OAAO;AACLA,eAAKt6G,QAAQqC;AAAAA,QACf;AAAA,MACF,OAAO;AACLo7L,oBAAYl2L,KAAK;AAAA,UAAEvH,OAAOqC;AAAAA,QAAK,CAAC;AAAA,MAClC;AAAA,IACF;AAEA,WAAOo7L,YAAY96H,OAAO,CAACC,KAAK03C,SAAS;AACvC13C,UAAIr7D,KAAK+yG,KAAKt6G,KAAK;AACnB,aAAO4iE;AAAAA,IACR,GAAE,EAAE;AAAA,EACP;AAEA,WAASmoI,mBACP;AAAA,IAAEzrM,SAAAA;AAAAA,EAA+B,GACjCyZ,SACAZ,UACAmzL,YACS;AACT,YACGhsM,SAAQV,SAAS4T,UAChB+4L,wBAAwBpzL,UAAS7Y,SAAQV,MAAMma,SAASuyL,UAAU,OACnEhsM,SAAQ8kM,YAAY5xL,UACnB+4L,wBAAwBpzL,UAAS7Y,SAAQ8kM,SAASrrL,SAASuyL,UAAU,OACtEhsM,SAAQ+kM,YAAY7xL,UACnB,CAAC+4L,wBAAwBpzL,UAAS7Y,SAAQ+kM,SAAStrL,SAASuyL,UAAU;AAAA,EAE5E;AAEA,WAASC,wBACPpzL,UACAvZ,OACAma,SACAuyL,YACS;AACT,UAAME,WAAW71L,MAAMC,QAAQhX,KAAI,IAAIA,QAAO,CAACA,KAAI;AAEnD,WAAO6sM,gBAAgBtzL,UAASqzL,UAAUzyL,SAASuyL,UAAU;AAAA,EAC/D;AAKA,WAASI,mBACPnzB,MACAv4K,QACkC;AAClC,QAAIA,kBAAiB6L,QAAQ;AAC3B,aAAOW,OAAOxM,MAAK;AAAA,IACrB;AAEA,WAAOA;AAAAA,EACT;AAKA,WAASopM,aACPjxL,UACA2iD,QACAipI,MACAhrL,SACS;AACT,QAAI+hD,UAAU2wI,gBAAgBtzL,UAAS2iD,QAAQ/hD,OAAO,GAAG;AAAA,UAAA4yL;AACvD,YAAM1gM,UAAU,6BAAA0gM,oBACdxzL,SAAQ8qD,aAAQ,OAAA0oI,oBAAI,WAAW,yCACQ/0K,KAAKtyB,UAC5Cw2D,QACA4wI,kBACF,CAAC,YAAY3yL,OAAO;AACpB1Z,MAAAA,OAAM4L,OAAO;AACb,UAAIkN,SAAQoxL,YAAY;AACtBhzL,gBAAQgrI,IAAIt2I,OAAO;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAEA,QAAI84L,QAAQ,CAAC0H,gBAAgBtzL,UAAS4rL,MAAMhrL,OAAO,GAAG;AAAA,UAAA6yL;AACpD,YAAM3gM,UAAU,6BAAA2gM,qBACdzzL,SAAQ8qD,aAAQ,OAAA2oI,qBAAI,WAAW,8CACah1K,KAAKtyB,UACjDy/L,MACA2H,kBACF,CAAC,YAAY3yL,OAAO;AACpB1Z,MAAAA,OAAM4L,OAAO;AACb,UAAIkN,SAAQoxL,YAAY;AACtBhzL,gBAAQgrI,IAAIt2I,OAAO;AAAA,MACrB;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAMA,WAASwgM,gBACPtzL,UACAqzL,UACAzyL,SACAuyL,YACS;AACT,WAAOE,SAAS97G,KAAKj2D,aACnBqwK,aAAarwK,SAAS1gB,SAASZ,SAAQ8qD,UAAU9qD,UAASmzL,UAAU,CACtE;AAAA,EACF;AAEA,WAASxB,aACPrwK,SACA1gB,SACA8yL,YACA1zL,UACAmzL,YACS;AACT,QAAI,OAAO7xK,YAAY,YAAY;AACjC,aAAO,CAAC,EAAC,GAAAopK,mBAAAA,oBAAmBppK,OAAO,EAAEoyK,YAAY;AAAA,QAC/C9yL;AAAAA,QACAm0K,SAAS/0K,SAAQ+0K;AAAAA,QACjBC,QAAQh1K,SAAQg1K;AAAAA,MAClB,CAAC;AAAA,IACH;AAEA,QAAI,OAAO0e,eAAe,UAAU;AAClC,YAAM,IAAIzI,aAAW,QACnB,qFACAkI,UACF;AAAA,IACF;AAEA,QAAI,OAAO7xK,YAAY,UAAU;AAC/BA,iBAAU,GAAAmwK,gBAAAA,SAAmBnwK,SAAS1gB,OAAO;AAAA,IAC/C;AACA,WAAO0gB,QAAQ76B,KAAKitM,UAAU;AAAA,EAChC;;;;;;;;;;;;AC75BA,MAAAvI,oBAAAj7L,wBAAA;AAqBA,QAAMyjM,aAA2B;AAAA,IAC/Bl/L,MAAMuzL,kBAA+C;AAAA,IACrDxmL,mBAAmBg5C,kBAElB;AAAA,IACDi9H,KAAKj9H,kBAAgD;AAAA,IACrDg9H,MAAMh9H,kBAAiD;AAAA,IACvDx6B,UAAUw6B,kBAAqD;AAAA,IAC/D95B,SAASkzK;AAAAA,IAETlc,gBAAgBl9H,kBAA2D;AAAA,IAC3Em9H,mBAAmBn9H,kBAAAA;AAAAA,EAGpB;AAED,WAASo5I,iBAAiBt4L,KAAiBzT,QAAyB;AAClE,UAAM4W,OAAMopL,GAAAA,kBAAAA,cAAavsL,KAAKzT,MAAK;AACnC,QAAI4W,KAAK;AACP1H,aAAOnK,KAAK6R,GAAG,EAAEqiB,QAAQ28C,UAAQ;AAC/B,YAAIA,SAAS,eAAeA,SAAS,aAAa;AAChDo2H,+BAAqBp2H,MAAMh/D,IAAIg/D,IAAI,CAAC;AAAA,QACtC;AAAA,MACF,CAAC;AAED,UAAIh/D,IAAI+iD,SAAS/iD,IAAIwmD,MAAM;AACzB,cAAM,IAAI9mD,MACR,IAAG+1J,GAAAA,uBACD54J,GACF,CAAC,uFACH;AAAA,MACF;AAAA,IACF;AACA,WAAOmD;AAAAA,EACT;AAEA,WAASo1L,qBACPpsM,MACAI,QACiC;AACjC,QAAIA,UAAS,OAAOA,WAAU,UAAU;AACtCkP,aAAOnK,KAAK/E,MAAK,EAAEi5B,QAAS2D,aAAoB;AAC9C,YAAIA,YAAY,WAAWA,YAAY,QAAQ;AAC7C,gBAAM,IAAItmB,MACR,aAAa1W,IAAG,gDAClB;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH,WAAW,OAAOI,WAAU,YAAY;AACtC,YAAM,IAAIsW,MAAM,aAAa1W,IAAG,uBAAuB;AAAA,IACzD;AAAA,EACF;AA2BO,WAASqsM,qBAAqBr1L,KAEpB;AACf,UAAMs1L,WAAqB;AAAA,MACzB56L,MAAM;AAAA,MACNlQ,QAAQ;AAAA,IACT;AACD8N,WAAOnK,KAAK6R,GAAG,EAAEqiB,QAASr5B,CAAAA,SAAgB;AACxC,YAAMy2B,aAAYy1K,WAAWlsM,IAAG;AAEhC,UAAIy2B,YAAW;AACb,cAAMuuK,SAAqB;AAAA,UACzBtzL,MAAM;AAAA,UACN1E,MAAMhN;AAAAA,UACN07B,QAAQ4wK;AAAAA,QACT;AACD71K,QAAAA,WAAUuuK,QAAQhuL,IAAIhX,IAAG,CAAC;AAAA,MAC5B,OAAO;AACL,cAAMusM,6BAA6B,IAAI71L,MACrC,IAAI1W,IAAG,iCACT;AAEAusM,mCAA2BjgM,OAAO;AAClC,cAAMigM;AAAAA,MACR;AAAA,IACF,CAAC;AAED,WAAOv1L;AAAAA,EACT;;;;;;;;;;;;;;AC/HA,WAAA2zK,UAAA;AAAA,UAAAzqC,OAAAz3I,cAAA;AAAAkiL,yBAAA;AAAA,aAAAzqC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAGA,MAAAlxH,SAAAvmB,aAAA;AACA,MAAA+zL,WAAA/zL,eAAA;AA+CO,WAAS+jM,cACdhqM,QACW;AAKX,UAAMoN,MACJxP,CAAAA,WAEAoC,OAAM80I,MAAM4I,UAAQ;AAClB,UAAI9/I,WAAUwS,OAAW,QAAOstI,KAAKotC;AACrC,UAAI,OAAOltL,WAAU,YAAY;AAC/B,gBAAO,GAAAkzL,2BAAiBlzL,OAAM8/I,KAAKotC,OAAO,CAAC;AAAA,MAC7C;AACA,cAAQv3K,MAAMC,QAAQ5V,MAAK,IAAIA,SAAQ,CAACA,MAAK,GAAG0vF,KAAK28G,WAAS;AAC5D,YAAI,OAAOA,UAAU,UAAU;AAC7B,gBAAM,IAAI/1L,MAAM,6BAA6B;AAAA,QAC/C;AACA,eAAO+1L,UAAUvsD,KAAKotC;AAAAA,MACxB,CAAC;AAAA,IACH,CAAC;AAEH,UAAMC,SACJ3vF,QACGp7F,OAAM80I,MAAM4I,cAAQozC,SAAgB,kBAAC11F,GAAGsiD,KAAKqtC,MAAM,CAAC,CAAC;AAE1D,WAAO;AAAA,MACLz0K,SAAS4zL,OAAW;AAAA,MACpBlqM,OAAOA,OAAMwwL,OAAQ;AAAA,MAErBpjL;AAAAA,MACAwrB,OAAOA,MAAM;AAAA,MACbmyJ;AAAAA,MACA70K;AAAAA,IACD;AAAA,EACH;AAEO,WAASi0L,cACdnqM,QACAstL,sBACW;AACX,UAAM/2K,WAAUA,MAKdie,KAAKvvB,MAAMjF,OAAM80I,MAAM4I,UAAQlpH,KAAKtyB,UAAUw7I,KAAKnnI,OAAO,CAAC,CAAC;AAE9D,UAAME,wBAAyB8+H,SAAgB;AAC7C+3C,2BAAqBnoL,KAAKowI,GAAG;AAAA,IAC9B;AAED,WAAAzoI,OAAAyE,WAAYy4L,cAAchqM,MAAK,GAAC;AAAA,MAAEuW,SAAAA;AAAAA,MAASE;AAAAA,IAAqB,CAAA;AAAA,EAClE;AAEO,WAAS2zL,cACdpqM,QACAstL,sBACW;AACX,UAAM92K,aAAchM,UAClBxK,OAAM80I,MAAM4I,UAAQA,KAAKmkD,YAAYr3L,IAAI,CAAC;AAE5C,WAAAsC,OAAAyE,OAAA,CAAA,GAAY44L,cAAcnqM,QAAOstL,oBAAoB,GAAC;AAAA,MAAE92K;AAAAA,IAAU,CAAA;AAAA,EACpE;AAEA,WAASN,cAAcE,OAA8B;AACnD,QAAI,OAAOA,UAAU,UAAU;AAC7B,UAAI,CAACa,OAAOC,UAAUd,KAAK,GAAG;AAC5B,cAAM,IAAIlC,MAAM,mCAAmC;AAAA,MACrD;AACAkC,cAAQ,IAAIA,KAAK;AAAA,IACnB;AACA,QAAI,OAAOA,UAAU,UAAU;AAC7B,YAAM,IAAIlC,MAAM,mCAAmC;AAAA,IACrD;AAKA,QAAIkC,UAAU,OAAOsyK,QAAM,EAAC2hB,UAAUH,OAAAA,SAAa9zL,KAAK,EAAG;AAE3D,UAAMe,QAAQjD,MAAMkD;AAEpB,QAAI,OAAOD,UAAU,YAAYA,QAAQ,IAAI;AAG3CjD,YAAMkD,kBAAkB;AAAA,IAC1B;AAEA,UAAMxB,MAAM,IAAI1B,MACd,mBAAmBkC,KAAK,2BAA2B8zL,OAAW,OAAA,qSAMhE;AAEA,QAAI,OAAO/yL,UAAU,UAAU;AAC7BjD,YAAMkD,kBAAkBD;AAAAA,IAC1B;AAEA,UAAMrK,OAAOyE,OAAOqE,KAAK;AAAA,MACvB9L,MAAM;AAAA,MACNwM,SAAS4zL,OAAW;AAAA,MACpB9zL;AAAAA,IACF,CAAC;AAAA,EACH;;;;;;;;;;;;;AC/JA,WAAA2nI,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAA4sD,UAAArkM,cAAA;AACA,MAAAg9J,QAAAh9J,cAAA;AACA,MAAA8zL,QAAA9zL,YAAA;AACA,MAAAskM,eAAAtkM,mBAAA;AAEA,MAAAukM,eAAAvkM,mBAAA;AACA,MAAAs8H,WAAAt8H,eAAA;AASA,MAAAumB,SAAAvmB,oBAAA;AAMA,MAAAg0L,kBAAAh0L,6BAAA;AAAsD,QAAAm6D,YAAA,CAAA,kBAAA;AAAA,WAAAD,8BAAA3zD,GAAAF;gBAAAE,EAAA,QAAA,CAAA;AAAA,QAAAC,IAAA,CAAA;AAAA,aAAAG,KAAAJ,EAAAU,KAAAA,CAAAA,EAAAA,eAAAC,KAAAX,GAAAI,CAAA,GAAAN;AAAAA,UAAAA,OAAAA,EAAAuL,QAAAjL,CAAA,EAAA;AAAAH,QAAAG,CAAA,IAAAJ,EAAAI,CAAA;AAAA;WAAAH;AAAAA,EAAA;AAEtD,WAASg+L,gBAAgBngB,SAAiB+W,UAA4B;AACpE,YAAQA,UAAQ;AAAA,MACd,KAAK;AACH,eAAO/W;AAAAA,MAET,KAAK,mBAAmB;AACtB,cAAMogB,iBAAgB,GAAArgB,OAAiB,mBAACC,OAAO;AAC/C,eAAOogB,kBAAkB,OAAOpgB,UAAUogB;AAAAA,MAC5C;AAAA,MAEA,KAAK,UAAU;AACb,cAAMA,iBAAgB,GAAArgB,OAAiB,mBAACC,OAAO;AAC/C,YAAIogB,kBAAkB,KAAM,QAAOA;AAEnC,cAAM59L,OAAOyE,OACX,IAAI2C,MACF,kGAC0Co2K,OAAO;AAAA,oEAE3CqgB,OAAAA,sBAAsB56L,KAAK,IAAI,CAAC,IACxC,GACA;AAAA,UACEjG,MAAM;AAAA,UACN6M,SAAS2zK;AAAAA,QACX,CACF;AAAA,MACF;AAAA,MACA;AACE,cAAM,IAAIp2K,MAAM,6CAA6C;AAAA,IACjE;AAAA,EACF;AAae,YAAU02L,yBACvBC,WACmC;AACnC,QACEA,aAAa,SACZ,OAAOA,cAAc,YAAYt3L,MAAMC,QAAQq3L,SAAS,IACzD;AACA,YAAM,IAAI32L,MAAM,qDAAqD;AAAA,IACvE;AAEA,UAAMqhB,OAAOs1K,aAAY73K,GAAAA,SAAAA,UAAS,aAAa63K,SAAS,IAAI,CAAE;AAE9D,UAAM;AAAA,MACJ/f,WAAU,GAAAS,aAAM,QAAE;AAAA,MAClB92K,MAAM;AAAA,MACNmlL,MAAMtP,UAAU;AAAA,MAChB+W,WAAW;AAAA,MACXtW;AAAAA,MACAuW,gBAAgB;AAAA,IAClB,IAAI/rK;AACJ,UAAMu1K,cAAcruM,QAAKsnI,QAAQtvH,GAAG;AACpC,UAAMs2L,kBAAkBN,gBACtBhuM,MAAI,EAACsnI,QAAQ+mE,aAAaxgB,OAAO,GACjC+W,QACF;AAEA,UAAMxgI,WACJ,OAAOtrC,KAAKsrC,aAAa,WACrBpkE,QAAKsnI,QAAQtvH,KAAK8gB,KAAKsrC,QAAQ,IAC/BzwD;AAEN,UAAM46L,iBAAiB,QAAO,GAAA9f,OAAqB,uBAAC4f,WAAW;AAE/D,UAAM/0L,WAAyB;AAAA,MAC7B8qD;AAAAA,MACApsD,KAAKq2L;AAAAA,MACLlR,MAAMmR;AAAAA,MACNjgB;AAAAA,MACAC;AAAAA,MACAoc,YAAY6D,mBAAmBnqI;AAAAA,IAChC;AAED,UAAMoqI,eAAc,QAAOrF,GAAAA,6BAAerwK,MAAMxf,QAAO;AACvD,QAAI,CAACk1L,aAAa,QAAO;AAEzB,UAAMC,SAA2B;AAAA,MAC/BrJ,aAAa,CAAA;AAAA,IACd;AACDoJ,IAAAA,aAAY/tM,QAAQ25B,QAAQ3xB,UAAQ;AAClC,OAAA,GAAA2nL,MAAY,cAACqe,QAAehmM,IAAI;AAAA,IAClC,CAAC;AAED,UAAMhI,WAA0B4P,OAAAyE,WAC3B25L,QAAM;AAAA,MACT30L,UAAS,GAAAuhL,gBAAAA,gBAAeoT,QAAQH,eAAe;AAAA,MAK/CzJ;AAAAA,MACAE,SAAS;AAAA,MACTzI,YAAY;AAAA,MACZW,wBAAwB;AAAA,MACxBmB,eAAe;AAAA,MACf/P,SAAS/0K,SAAQ+0K;AAAAA,MACjBr2K,KAAKsB,SAAQtB;AAAAA,MACbmlL,MAAM7jL,SAAQ6jL;AAAAA,MACdyH,UAAU;AAAA,MACVxgI,UACE,OAAO9qD,SAAQ8qD,aAAa,WAAW9qD,SAAQ8qD,WAAWzwD;AAAAA,MAE5D7P,SAAS0qM,aAAY1qM,QAAQsP,IAAIgiL,oBAC/BwK,MAAAA,0BAAyBxK,UAAU,CACrC;AAAA,MACA+I,SAASqQ,aAAYrQ,QAAQ/qL,IAAIgiL,oBAC/BwK,MAAwB,0BAACxK,UAAU,CACrC;AAAA,KACD;AAED,WAAO;AAAA,MACL30L,SAAAA;AAAAA,MACA6Y,SAAAA;AAAAA,MACAqxL,cAAc6D,aAAY7D;AAAAA,MAC1B1uI,QAAQuyI,aAAYvyI;AAAAA,MACpB8oI,SAASyJ,aAAYzJ;AAAAA,MACrBriM,QAAQ8rM,aAAY9rM;AAAAA,MACpB4lM,OAAOkG,aAAYlG;AAAAA,IACpB;AAAA,EACH;AAEO,YAAUoG,kBACfjmM,MAC+B;AAC/B,QAAIkmM,mBAAmB;AAGvB,QAAI,OAAOlmM,SAAS,YAAYA,SAAS,QAAQ,CAACqO,MAAMC,QAAQtO,IAAI,GAAG;AAAA,UAAAmmM,QACpCnmM;AAAI,OAApC;AAAA,QAAEkmM;AAAAA,MAA0B,IAACC;AAANnmM,aAAIi7D,8BAAAkrI,OAAAjrI,SAAA;AAAA,IAC9B;AAEA,UAAMtJ,SACJ,OAAO8zI,yBAAyB1lM,IAAI;AACtC,QAAI,CAAC4xD,OAAQ,QAAO;AAEpB,UAAM;AAAA,MAAE55D,SAAAA;AAAAA,MAASskM;AAAAA,MAAS9oI;AAAAA,MAAQv5D,QAAAA;AAAAA,MAAQioM;AAAAA,MAAcrC;AAAAA,IAAM,IAAIjuI;AAElE,QAAIswI,iBAAiB,aAAa,CAACgE,kBAAkB;AACnD,aAAO;AAAA,IACT;AAEA,KAACluM,SAAQqD,WAAW,IAAIs2B,QAAQ52B,CAAAA,UAAQ;AAEtC,UAAIA,MAAKrC,iBAAiByvL,iBAAQ;AAChC,cAAM,IAAIn5K,MACR,+EAEF;AAAA,MACF;AAAA,IACF,CAAC;AAED,WAAO,IAAIo3L,cACTpuM,UACAskM,UAAUA,QAAQhX,WAAWp6K,QAC7BsoD,SAASA,OAAO8xH,WAAWp6K,QAC3BjR,UAASA,QAAOqrL,WAAWp6K,QAC3Bg3L,cACArC,KACF;AAAA,EACF;AAAA,EAIA,MAAMuG,cAAc;AAAA,IAYlB16L,YACE1T,UACAskM,SACA9oI,QACAv5D,SACAioM,cACArC,OACA;AAAA,WAdF7nM,UAAO;AAAA,WACPskM,UAAO;AAAA,WACP+J,cAAW;AAAA,WACXpsM,SAAM;AAAA,WACNioM,eAAY;AAAA,WACZrC,QAAK;AAUH,WAAK7nM,UAAUA;AACf,WAAKquM,cAAc7yI;AACnB,WAAK8oI,UAAUA;AACf,WAAKriM,SAASA;AACd,WAAKioM,eAAeA;AACpB,WAAKrC,QAAQA;AAIbj4L,aAAOm5H,OAAO,IAAI;AAAA,IACpB;AAAA,IAKAulE,sBAA+B;AAC7B,aAAO,KAAKhK,YAAYpxL,UAAa,KAAKjR,WAAWiR;AAAAA,IACvD;AAAA,EACF;AACAtD,SAAOm5H,OAAOqlE,cAAcj3I,SAAS;;;;;;;;;;;AC/OrC,WAAAu3H,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,MAAAtgE,SAAAn3E,aAAA;AAMA,MAAAg9J,QAAAh9J,cAAA;AACA,MAAA8P,WAAA9P,aAAA;AACA,MAAAqkM,UAAArkM,cAAA;AACA,MAAA8zL,QAAA9zL,YAAA;AACA,MAAAskM,eAAAtkM,mBAAA;AACA,MAAAmnL,aAAAnnL,iBAAA;AAQA,WAAA24D,YAAA;AAAA,UAAA8+E,OAAAz3I,aAAA;AAAA24D,2BAAA;AAAA,aAAA8+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,MAAAs8C,WAAA/zL,eAAA;AAEA,MAAAs8H,WAAAt8H,eAAA;AAKA,MAAAgvL,WAAAhvL,eAAA;AACA,MAAAwlM,aAAAxlM,iBAAA;AAGA,MAAAylM,WAAAzlM,eAAA;AAIA,MAAAk7L,eAAAl7L,mBAAA;AAAoDwK,OAAAA,UAsBrCk7K,SAAO,EAAC,UAAUggB,eAC/Bd,WACgC;AAAA,QAAAe;AAChC,UAAM90I,SAAS,QAAO,GAAA8zI,SAAwB,SAACC,SAAS;AACxD,QAAI,CAAC/zI,QAAQ;AACX,aAAO;AAAA,IACT;AACA,UAAM;AAAA,MAAE55D,SAAAA;AAAAA,MAAS6Y,SAAAA;AAAAA,MAASqxL;AAAAA,IAAa,IAAItwI;AAE3C,QAAIswI,iBAAiB,WAAW;AAC9B,aAAO;AAAA,IACT;AAEA,UAAMyE,iBAAmC,CAAE;AAE3C,UAAM;AAAA,MAAEtrM,SAAAA;AAAAA,MAASq6L;AAAAA,IAAQ,IAAI19L;AAE7B,QAAI,CAACqD,YAAW,CAACq6L,SAAS;AACxB,YAAM,IAAI1mL,MAAM,+CAA+C;AAAA,IACjE;AAEA,UAAM43L,gBAAiCh/L,OAAAyE,WAClCwE,UAAO;AAAA,MACVQ,SAASrZ,SAAQqZ;AAAAA,KAClB;AAED,UAAMw1L,eAAgB9rM,CAAAA,UAAqB;AACzC,YAAMi4G,QAAO,GAAA8jF,MAAiB,mBAAC/7L,KAAI;AACnC,UAAI,CAACi4G,MAAM;AACT,cAAM,IAAIhkG,MAAM,yCAAyC;AAAA,MAC3D;AAEA,aAAOgkG;AAAAA,IACR;AAED,UAAM8zF,qBAAqBpR,QAAQ/qL,IAAIk8L,YAAY;AACnD,UAAME,4BAA4B1rM,SAAQsP,IAAIk8L,YAAY;AAC1D,UAAMG,0BAAuE,CAC3E,EAAE;AAEJ,UAAMC,SAA+B,CAAE;AAEvC,UAAM7e,uBAA0C,CAAE;AAElD,UAAM8e,UAAU,OAAOC,aACrBt2L,UACA,UAAUu2L,yBACRC,YACAC,uBACsB;AACtB,YAAM5R,WAGD,CAAE;AAEP,eAAS3wL,IAAI,GAAGA,IAAIsiM,WAAWriM,QAAQD,KAAK;AAC1C,cAAM4nL,aAAa0a,WAAWtiM,CAAC;AAC/B,YAAI4nL,WAAW30L,YAAY,OAAO;AAChC,cAAI;AAEF,gBAAI+nM,SAAS,OAAOwH,qBAAqB5a,YAAYia,aAAa;AAAA,UACnE,SAAQx/L,GAAG;AACV,gBAAIA,EAAExC,SAAS,wBAAwB;AACrC,eAAAg5L,GAAAA,SAAAA,iCAAgCyJ,YAAYtiM,GAAG,UAAUqC,CAAC;AAAA,YAC5D;AACA,kBAAMA;AAAAA,UACR;AAEAghL,+BAAqBnoL,KAAK8/L,OAAO3X,oBAAoB;AAKrD,cAAIuE,WAAW0I,SAAS;AACtBK,YAAAA,SAAQz1L,KAAK;AAAA,cAAE8/L,QAAQA,OAAOzxK;AAAAA,cAAO5qB,MAAM,CAAA;AAAA,YAAG,CAAC;AAAA,UACjD,OAAO;AACLgyL,YAAAA,SAAQ1kK,QAAQ;AAAA,cACd+uK,QAAQA,OAAOzxK;AAAAA,cACf5qB,MAAM4jM;AAAAA,YACR,CAAC;AAAA,UACH;AAAA,QACF;AAAA,MACF;AAGA,UAAI5R,SAAQ1wL,SAAS,GAAG;AAGtBgiM,gCAAwBp0L,OACtB,GACA,GACA,GAAG8iL,SAAQ/qL,IAAIylI,OAAKA,EAAE1sI,IAAI,EAAEqtB,OAAOo8F,OAAKA,MAAMm6E,qBAAqB,CACrE;AAEA,mBAAW;AAAA,UAAEvH,QAAAA;AAAAA,UAAQr8L;AAAAA,QAAM,KAAIgyL,UAAS;AACtC,cAAI,CAACqK,QAAQ,QAAO;AAEpBr8L,eAAKzD,KAAK,GAAG8/L,QAAO1kM,OAAO;AAE3B,gBAAM6rM,WAAU,OAAOE,yBAAyBrH,QAAOrK,SAAShyL,IAAI;AACpE,cAAIwjM,SAAS,QAAO;AAEpBnH,UAAAA,QAAO/nM,QAAQ25B,QAAQ3xB,CAAAA,UAAQ;AAC7B,aAAA,GAAA2nL,MAAY,cAACgf,gBAAgB3mM,KAAI;AAAA,UACnC,CAAC;AAAA,QACH;AAAA,MACF;AAAA,IAEJ,CAAA,EAAE8mM,oBAAoBE,wBAAwB,CAAC,CAAC;AAEhD,QAAIE,QAAS,QAAO;AAEpB,UAAMlnM,OAAyB2mM;AAC/B,KAAA,GAAAhf,MAAY,cAAC3nL,MAAMhI,QAAO;AAE1B,UAAMwvM,gBAAiC5/L,OAAAyE,WAClCu6L,eAAa;AAAA,MAChBjK,cAAW+J,oBAAE1mM,KAAK28L,gBAAW,OAAA+J,oBAAI,CAAA;AAAA,KAClC;AAED,WAAOS,aAAat2L,UAAS,UAAU42L,wBAAwB;AAC7DT,8BAAwB,CAAC,EAAEh2K,QAAQ,GAAG+1K,yBAAyB;AAE/D,iBAAWW,SAASV,yBAAyB;AAC3C,cAAMtjM,OAAiB,CAAE;AACzBujM,eAAOhnM,KAAKyD,IAAI;AAEhB,iBAASqB,IAAI,GAAGA,IAAI2iM,MAAM1iM,QAAQD,KAAK;AACrC,gBAAM4nL,aAAa+a,MAAM3iM,CAAC;AAC1B,cAAI4nL,WAAW30L,YAAY,OAAO;AAChC,gBAAI;AAEF,kBAAIuC,UAAS,OAAOotM,qBAAqBhb,YAAY6a,aAAa;AAAA,YACnE,SAAQpgM,GAAG;AACV,kBAAIA,EAAExC,SAAS,iCAAiC;AAE9C,iBAAAg5L,GAAAA,SAAAA,iCAAgC8J,OAAO3iM,GAAG,UAAUqC,CAAC;AAAA,cACvD;AACA,oBAAMA;AAAAA,YACR;AACA1D,iBAAKzD,KAAK1F,OAAM;AAEhB6tL,iCAAqBnoL,KAAK1F,QAAO6tL,oBAAoB;AAAA,UACvD;AAAA,QACF;AAAA,MACF;AAAA,KACD,EAAG;AAEJpoL,SAAK3E,UAAU4rM,OAAO,CAAC;AACvBjnM,SAAK01L,UAAUuR,OACZh9L,MAAM,CAAC,EACP8mB,OAAO11B,CAAAA,aAAWA,SAAQ2J,SAAS,CAAC,EACpC2F,IAAItP,CAAAA,cAAY;AAAA,MAAEA,SAAAA;AAAAA,IAAQ,EAAE;AAC/B2E,SAAK21L,gBAAgB31L,KAAK01L,QAAQ1wL,SAAS;AAE3C,WAAO;AAAA,MACLhN,SAASgI;AAAAA,MACTinM;AAAAA,MACA7e,uBAAsB,GAAAwf,WAAe,UAACxf,oBAAoB;AAAA,IAC3D;AAAA,EACF,CAAA;AAED,WAAS+e,aAAiCt2L,UAAwBP,IAAU;AAC1E,WAAO,WAAWu3L,MAAeC,MAAe;AAC9C,UAAI;AACF,eAAO,OAAOx3L,GAAGu3L,MAAMC,IAAI;AAAA,MAC5B,SAAQ1gM,GAAG;AAGV,YAAI,CAAC,aAAa9P,KAAK8P,EAAEzD,OAAO,GAAG;AAAA,cAAA0gM;AACjCj9L,YAAEzD,UAAU,YAAA0gM,oBAAWxzL,SAAQ8qD,aAAQ,OAAA0oI,oBAAI,cAAc,KACvDj9L,EAAEzD,OAAO;AAAA,QAEb;AAEA,cAAMyD;AAAAA,MACR;AAAA,IACD;AAAA,EACH;AAKA,QAAM2gM,uBACJC,oBAKA7e,SAAAA,eAAc,WACZ;AAAA,IAAEzwL,OAAAA;AAAAA,IAAOV,SAAAA;AAAAA,IAASyZ;AAAAA,IAASiX;AAAAA,EAAgC,GAC3D5tB,QAC2B;AAE3B,QAAI9C,aAAY,MAAO,OAAM,IAAIgX,MAAM,mBAAmB;AAE1DhX,IAAAA,WAAUA,YAAW,CAAE;AAEvB,UAAMowL,uBAAsC,CAAE;AAE9C,QAAIrtL,QAAgBrC;AACpB,QAAI,OAAOA,WAAU,YAAY;AAC/B,YAAMuvM,WAAU,GAAAjhB,OAAAA,YACdtuL,QACA,wFACF;AAEA,YAAMuY,MAAGrJ,OAAAyE,OACJwE,CAAAA,GAAAA,UACAm3L,WAAWltM,QAAOstL,oBAAoB,CAAC;AAE5C,UAAI;AACFrtL,QAAAA,QAAO,OAAOktM,QAAQh3L,KAAKjZ,UAASyZ,OAAO;AAAA,MAC5C,SAAQrK,GAAG;AACV,YAAIshB,OAAO;AACTthB,YAAEzD,WAAW,uBAAuB2rB,KAAKtyB,UAAU0rB,KAAK,CAAC;AAAA,QAC3D;AACA,cAAMthB;AAAAA,MACR;AAAA,IACF;AAEA,QAAI,CAACrM,SAAQ,OAAOA,UAAS,UAAU;AACrC,YAAM,IAAIiU,MAAM,yCAAyC;AAAA,IAC3D;AAEA,YAAIi4K,OAAAA,YAAWlsL,KAAI,GAAG;AAEpB,aAAO,CAAE;AAET,YAAM,IAAIiU,MACR,4QAKwBsgB,KAAKtyB,UAAU0rB,KAAK,CAAC,GAC/C;AAAA,IACF;AAEA,QACE0/J,qBAAqBpjL,SAAS,MAC7B,CAAClK,OAAM6vL,WAAY,KAAI7vL,OAAMgwL,WAAW,YACzC;AACA,UAAInzL,SACF,wDACIywL,qBAAqB,CAAC,CAAC;AAC7B,UAAI,CAACttL,OAAM6vL,cAAc;AACvBhzL,QAAAA,UAAS;AAAA,MACX,OAAO;AACLA,QAAAA,UAAS;AAAA,MACX;AACAA,MAAAA,UACE;AAAA,qBAGsB23B,KAAKtyB,UAAU0rB,KAAK,CAAC;AAE7C,YAAM,IAAI1Z,MAAMrX,MAAK;AAAA,IACvB;AAEA,WAAO;AAAA,MACLe,OAAOqC;AAAAA,MACP/C,SAAAA;AAAAA,MACAyZ;AAAAA,MACAiX;AAAAA,MACA0/J,uBAAsB,GAAAwf,WAAe,UAACxf,oBAAoB;AAAA,IAC3D;AAAA,EACH,CAAC;AAEH,QAAM8f,yBAAyBH,qBAG7B7C,wBAAa;AACf,QAAMiD,yBAAyBJ,qBAG7B9C,wBAAa;AAEf,QAAMmD,qBAAoB,GAAAjf,SAAAA,eAAc,WACtC;AAAA,IAAEzwL,OAAAA;AAAAA,IAAOV,SAAAA;AAAAA,IAASyZ;AAAAA,IAASiX;AAAAA,IAAO0/J;AAAAA,EAAwC,GAC1EttL,QACiB;AACjB,UAAMutM,aAAY,GAAA1D,SAAoB,sBAACjsM,MAAK;AAE5C,UAAM6B,UAAMqN,OAAAyE,OAAA,CAAA,GACPg8L,SAAS;AAEd,QAAI9tM,QAAOg3B,SAAS;AAClBh3B,MAAAA,QAAOg3B,UAAUqkC,UAAAA,EAAAA,QAAS8/E,QAAO9tI,OAAAyE,OAC5B9R,CAAAA,GAAAA,QAAOg3B,OAAO,CAClB;AAAA,IACH;AAEA,QAAIh3B,QAAOs2B,UAAU;AACnB,YAAMy3K,qBAAoD;AAAA,QACxDhjM,MAAM4F;AAAAA,QACNwd,OAAO,GAAGA,KAAK;AAAA,QACfhwB,OAAO6B,QAAOs2B;AAAAA,QACd74B,SAAAA;AAAAA,QACAyZ;AAAAA,MACD;AAED,YAAMof,YAAW,QAAOu2J,GAAAA,qBAAaugB,sBAAsB5kC,SAAO;AAEhE,eAAOjoK,OAAM2wL,WAAWjzC,UAAQuqB,IAAIulC,oBAAoB9vD,IAAI,CAAC;AAAA,MAC/D,CAAC;AAEDj+I,MAAAA,QAAO+tL,MAAMigB,gBAAgB13K,UAASy3J,KAAK/tL,QAAO+tL,GAAG;AACrD/tL,MAAAA,QAAO8tL,OAAOkgB,gBAAgB13K,UAASw3J,MAAM9tL,QAAO8tL,IAAI;AACxD9tL,MAAAA,QAAO8X,oBAAoBk2L,gBACzB13K,UAASxe,mBACT9X,QAAO8X,iBACT;AACA9X,MAAAA,QAAOg3B,UAAUqkC,UAAQ,EAAA,QAACu9E,SAASx4E,MAAM,CACvC9pC,UAASU,WAAW,CAAE,GACtBh3B,QAAOg3B,WAAW,CAAE,CAAA,CACrB;AAED,UAAIV,UAASu3J,qBAAqBpjL,SAAS,GAAG;AAC5C,YAAIojL,qBAAqBpjL,WAAW,GAAG;AACrCojL,iCAAuBv3J,UAASu3J;AAAAA,QAClC,OAAO;AACLA,kCAAuBwf,GAAAA,WAAAA,UAAgB,CACrCxf,sBACAv3J,UAASu3J,oBAAoB,CAC9B;AAAA,QACH;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAID,QAAM,QAAC5tL,SAAQvC,UAAS0wB,OAAO0/J,oBAAoB;AAAA,EAChE,CAAC;AAKD,YAAUuf,qBACRhb,YACA97K,UACiB;AACjB,QAAI87K,WAAWj0L,iBAAiByvL,iBAAQ;AACtC,UAAIwE,WAAW30L,SAAS;AACtB,cAAM,IAAIgX,MACR,8DACF;AAAA,MACF;AAEA,aAAO29K,WAAWj0L;AAAAA,IACpB;AAEA,WAAO,OAAO0vM,kBACZ,OAAOF,uBAAuBvb,YAAY97K,QAAO,GACjDA,QACF;AAAA,EACF;AAEA,QAAM23L,gBAAiBt8K,SAAiBA,OAAO,OAAOA,QAAQ;AAE9D,QAAMu8K,gCAAgCA,CACpCzwM,UACA20L,eACS;AACT,QACE6b,cAAcxwM,SAAQV,IAAI,KAC1BkxM,cAAcxwM,SAAQ8kM,OAAO,KAC7B0L,cAAcxwM,SAAQ+kM,OAAO,GAC7B;AACA,YAAM2L,sBAAsB/b,WAAWrnL,OACnC,IAAIqnL,WAAWrnL,IAAI,MACnB;AACJ,YAAM,IAAIw2L,qBACR,CACE,UAAU4M,mBAAmB,iEAC7B,UACA,8DAA8DA,mBAAmB,SACjF,UACA,uEAAuE,EACvE79L,KAAK,IAAI,CACb;AAAA,IACF;AAAA,EACD;AAED,QAAM89L,iBAAiBA,CACrB5I,QACAlvL,UACA87K,eACS;AACT,QAAI,CAAC97K,SAAQ8qD,UAAU;AAAA,UAAAynI;AACrB,YAAM;AAAA,QAAEprM,SAAAA;AAAAA,MAAQ,IAAI+nM;AACpB0I,oCAA8BzwM,UAAS20L,UAAU;AACjD,OAAAyW,qBAAAprM,SAAQoxE,cAAS,QAAjBg6H,mBAAmBzxK,QAAQi3K,qBACzBH,8BAA8BG,iBAAiBjc,UAAU,CAC3D;AAAA,IACF;AAAA,EACD;AAED,QAAMkc,qBAAoB,GAAAxf,SAAAA,mBACxB,CAAC;AAAA,IACC3wL,OAAAA;AAAAA,IACA+Y;AAAAA,IACAiX;AAAAA,IACA0/J;AAAAA,EACgB,MAAsB;AACtC,WAAO;AAAA,MACLpwL,UAAS,GAAA81B,SAAAA,UAAS,UAAUp1B,MAAK;AAAA,MACjCgwB;AAAAA,MACAjX;AAAAA,MACA22K;AAAAA,IACD;AAAA,EACH,CACF;AAKA,YAAUmf,qBACR5a,YACA97K,UAIC;AACD,UAAMkvL,SAAS8I,kBACb,OAAOV,uBAAuBxb,YAAY97K,QAAO,CACnD;AACA83L,mBAAe5I,QAAQlvL,UAAS87K,UAAU;AAC1C,WAAO;AAAA,MACLr+J,OAAO,QAAOoxK,GAAAA,aAAAA,kBAAiBK,QAAQlvL,QAAO;AAAA,MAC9Cu3K,sBAAsB2X,OAAO3X;AAAAA,IAC9B;AAAA,EACH;AAEA,WAASmgB,gBACP5qM,GACAC,GACsB;AACtB,QAAI,CAACD,EAAG,QAAOC;AACf,QAAI,CAACA,EAAG,QAAOD;AAEf,WAAO,YAA4B0yB,MAAY;AAC7C,YAAM5F,MAAM9sB,EAAEq2I,MAAM,MAAM3jH,IAAI;AAC9B,UAAI5F,OAAO,OAAOA,IAAIoqJ,SAAS,YAAY;AACzC,eAAOpqJ,IAAIoqJ,KAAK,MAAMj3K,EAAEo2I,MAAM,MAAM3jH,IAAI,CAAC;AAAA,MAC3C;AACA,aAAOzyB,EAAEo2I,MAAM,MAAM3jH,IAAI;AAAA,IAC1B;AAAA,EACH;;;;;;;;;;;;;;;;;;;;;;;;;;ACxfA,aAAAq2J,WAAA;AAAA,YAAAluC,OAAAz3I,eAAA;AAAA2lL,4BAAA;AAAA,eAAAluC;AAAAA,MAAA;AAAA,aAAAA;AAAAA,IAAA;AAyBA,QAAAswD,QAAA/nM,YAAA;AACA,QAAAylM,WAAAzlM,eAAA;AAQA,QAAA8zL,QAAA9zL,YAAA;AAIA,QAAA86L,qBAAA96L,yBAAA;AAEA,UAAMgoM,0BAA0BtiB,WAAQuiB,0BAAqB;AACtD,aAASC,0BACX54K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAAC0N,wBAAwBr1K,KAAK,EAAE,GAAGrD,IAAI;AAAA,IACpE;AACO,aAAS64K,yBACX74K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAAC0N,wBAAwBjiB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,IACnE;AACO,aAAS41K,kBACdjmM,MACA2uB,UACA;AACA,UAAIA,aAAazjB,QAAW;AAC1B,SAAAmwL,GAAAA,mBAAAA,sBAAqB0N,wBAAwBhiB,OAAO,EAAE/mL,MAAM2uB,QAAQ;AAAA,MACtE,WAAW,OAAO3uB,SAAS,YAAY;AACrC,SAAAq7L,GAAAA,mBAAAA,sBAAqB0N,wBAAwBhiB,OAAO,EAClD77K,QACAlL,IACF;AAAA,MACF,OAAO;AAKE;AACL,iBAAOkpM,sBAAsBlpM,IAAI;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAEA,cAAUmpM,gBAAgBnpM,MAAoD;AAAA,UAAAopM;AAC5E,YAAMnvM,UAAS,QAAO,GAAAwsM,MAAc,SAACzmM,IAAI;AAEzC,cAAAopM,kBAAOnvM,WAAAA,OAAAA,SAAAA,QAAQjC,YAAO,OAAAoxM,kBAAI;AAAA,IAC5B;AACA,UAAMC,oBAAoB5iB,SAAO,EAAC0iB,eAAe;AAC1C,aAASG,oBACXj5K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAACgO,kBAAkB31K,KAAK,EAAE,GAAGrD,IAAI;AAAA,IAC9D;AACO,aAASk5K,mBACXl5K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAACgO,kBAAkBviB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,IAC7D;AACO,aAASm5K,YACdxpM,MACA2uB,UACA;AACA,UAAIA,aAAazjB,QAAW;AAC1B,SAAAmwL,GAAAA,mBAAAA,sBAAqBgO,kBAAkBtiB,OAAO,EAAE/mL,MAAM2uB,QAAQ;AAAA,MAChE,WAAW,OAAO3uB,SAAS,YAAY;AACrC,SAAAq7L,GAAAA,mBAAAA,sBAAqBgO,kBAAkBtiB,OAAO,EAC5C77K,QACAlL,IACF;AAAA,MACF,OAAO;AAKE;AACL,iBAAOupM,gBAAgBvpM,IAAI;AAAA,QAC7B;AAAA,MACF;AAAA,IACF;AAEA,UAAMypM,yBAAyBhjB,WAAQijB,sBAAoB;AACpD,aAASC,yBACXt5K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAACoO,uBAAuB/1K,KAAK,EAAE,GAAGrD,IAAI;AAAA,IACnE;AACO,aAASu5K,wBACXv5K,MACH;AACA,cAAO,GAAAgrK,mBAAoB,sBAACoO,uBAAuB3iB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,IAClE;AACO,aAASgnK,iBACdvxH,QACA9tE,UACA22B,UACA;AACA,UAAIA,aAAazjB,QAAW;AAC1B,SAAAmwL,GAAAA,mBAAoB,sBAACoO,uBAAuB1iB,OAAO,EACjDjhH,QACA9tE,UACA22B,QACF;AAAA,MACF,WAAW,OAAO32B,aAAY,YAAY;AACxC,SAAAqjM,GAAAA,mBAAoB,sBAACoO,uBAAuB1iB,OAAO,EACjDjhH,QACA56D,QACAyjB,QACF;AAAA,MACF,OAAO;AAKE;AACL,iBAAOi7K,qBAAqB9jI,QAAQ9tE,QAAO;AAAA,QAC7C;AAAA,MACF;AAAA,IACF;AAAA;;;;;;;;;;;;;;ECjJe,MAAM6xM,WAA6B;AAAA,IAoBhDn+L,YACEhU,OACAY,MACAN,UACAs0E,SACA;AAAA,WAxBFyyE,OAA8B,oBAAI7wF,IAAK;AAAA,WACvC51D,MAAG;AAAA,WACHZ,OAAI;AAAA,WACJsI,OAAI;AAAA,WAMJuP,MAAG;AAAA,WAGHosD,WAAQ;AAAA,WAKR2Q,UAAO;AAQL,WAAKh0E,MAAMA;AACX,WAAKZ,OAAOA;AACZ,WAAKsI,OAAOhI,YAAW,CAAE;AACzB,WAAKuX,MAAM7X,MAAKsI,KAAKuP;AACrB,WAAKosD,WAAWjkE,MAAKsI,KAAK27D;AAC1B,WAAK2Q,UAAUA;AAAAA,IACjB;AAAA,IAEAznE,IAAIvM,MAAc4zB,KAAc;AAC9B,WAAK6yH,KAAKl6I,IAAIvM,MAAK4zB,GAAG;AAAA,IACxB;AAAA,IAEAzkB,IAAInP,MAAmB;AACrB,aAAO,KAAKymJ,KAAKt3I,IAAInP,IAAG;AAAA,IAC1B;AAAA,IAEAgrL,gBAAgBh+K,MAAci+K,cAA8B;AAC1D,aAAO,KAAK7rL,KAAK4rL,gBAAgBh+K,MAAMi+K,YAAY;AAAA,IACrD;AAAA,IAEA3lC,UAAUt4I,MAAc;AACtB,aAAO,KAAK5N,KAAKkmJ,UAAUt4I,IAAI;AAAA,IACjC;AAAA,IAEAs8J,oBACE/oK,OACAksK,KACA6e,QACA;AACA,aAAO,KAAKlsL,KAAKkqK,oBAAoB/oK,OAAMksK,KAAK6e,MAAM;AAAA,IACxD;AAAA,EACF;AAACr4K,aAAAA,UAAAs+L;AAEkC;AAChCA,eAAmB16I,UAAU8vH,gBAAgB,SAASA,iBAEjC;AAEpB,aAAO,KAAKvnL,KAAKunL,cAAe;AAAA,IACjC;AACA4qB,eAAmB16I,UAAU20H,YAAY,SAASA,YAE3C;AAEN,WAAKpsL,KAAKosL,UAAW;AAAA,IACtB;AAAA,EACH;;;;;;;;;;;;AC3EA,WAAApqH,YAAA;AAAA,UAAA8+E,OAAAz3I,aAAA;AAAA24D,2BAAA;AAAA,aAAA8+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAGA,MAAA4sD,UAAArkM,cAAA;AAEA,MAAI+oM;AAEJ,QAAMC,qBAAiC;AAAA,IAarCzkM,MAAM;AAAA,IAENisB,SAAS;AAAA,MACPy4K,OAAO;AAAA,QACLl0I,KAAK;AAAA,UAAEj9D,MAAAA;AAAAA,QAAK,GAAG;AACbA,UAAAA,MAAK65B,OAAOu3K,gBAAgBpxM,MAAK65B,IAAI;AAAA,QACvC;AAAA,MACD;AAAA,MACD0O,YAAY;AAAA,QACV00B,KAAK;AAAA,UAAEj9D,MAAAA;AAAAA,QAAK,GAAG;AAKbA,UAAAA,MAAKm6B,aAAai3K,gBAAgBpxM,MAAKm6B,UAAU;AAAA,QACnD;AAAA,MACF;AAAA,IACF;AAAA,EACD;AAED,WAASi3K,gBAAgBv3K,MAAgC;AAEvD,QAAIzlB,MAAMD,KAAAw7J,IAAC,GAAI,EAAE,IAAG;AACpB,QAAI0hC,YAAY;AAChB,aAASnlM,IAAI,GAAGA,IAAI2tB,KAAK1tB,QAAQD,KAAK;AACpC,YAAM2C,IAAIgrB,KAAK3tB,CAAC;AAChB,YAAMooH,IAAIg9E,SAASziM,CAAC;AACpB,UAAIylH,IAAIlgH,KAAK;AACXi9L,oBAAY;AACZ;AAAA,MACF;AACAj9L,YAAMkgH;AAAAA,IACR;AACA,QAAI,CAAC+8E,UAAW,QAAOx3K;AAGvB,WAAO03K,WAAW13K,KAAKzoB,OAAO;AAAA,EAChC;AAEe,WAASogM,uBAA+B;AACrD,QAAI,CAACP,eAAe;AAElBA,sBAAgB,IAAI3hB,QAAM,QAAAvgL,OAAAyE,WAEnB09L,oBAAgB;AAAA,QACnBx4K,SAASqkC,UAAQ,EAAA,QAAC8/E,QAAQq0D,mBAAiBx4K,OAAO;AAAA,MAEpD,CAAA,GAAA,CAAA,CACF;AAAA,IACF;AAEA,WAAOu4K;AAAAA,EACT;AAEA,WAASK,SAAS71G,UAAuD;AACvE,UAAM61G,YAAW71G,YAAAA,OAAAA,SAAAA,SAAUunD;AAC3B,QAAIsuD,aAAY,KAAM,QAAO;AAC7B,QAAIA,cAAa,KAAM,QAAO;AAC9B,WAAOA;AAAAA,EACT;AAEA,WAASC,WAAW13K,MAAmB;AAErC,UAAM43K,UAAU1iM,uBAAOktD,OAAO,IAAI;AAGlC,aAAS/vD,IAAI,GAAGA,IAAI2tB,KAAK1tB,QAAQD,KAAK;AACpC,YAAM2C,IAAIgrB,KAAK3tB,CAAC;AAChB,YAAMooH,IAAIg9E,SAASziM,CAAC;AAGpB,YAAM6iM,SAASD,QAAQn9E,CAAC,MAAMm9E,QAAQn9E,CAAC,IAAI;AAC3Co9E,aAAOtqM,KAAKyH,CAAC;AAAA,IACf;AAIA,UAAMjK,OAAOmK,OAAOnK,KAAK6sM,OAAO,EAC7B3/L,IAAI6mB,OAAK,CAACA,CAAC,EACXysH,KAAK,CAACtgJ,GAAGC,MAAMA,IAAID,CAAC;AAEvB,QAAIxF,SAAQ;AACZ,eAAWG,QAAOmF,MAAM;AACtB,YAAM8sM,SAASD,QAAQhyM,IAAG;AAC1B,iBAAWoP,KAAK6iM,QAAQ;AACtB73K,aAAKv6B,QAAO,IAAIuP;AAAAA,MAClB;AAAA,IACF;AACA,WAAOgrB;AAAAA,EACT;;;;;;;;;;;;AC7GA,WAAAmmH,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAGe,WAASmjB,iBAAiB1hK,SAAwB;AAC/D,UAAM;AAAA,MACJ0hE;AAAAA,MACApsD;AAAAA,MACAqwK,mBAAmB,OAAOjkH,aAAa,WACnCpkE,MAAI,EAACizM,SAASj7L,KAAKosD,QAAQ,IAC3B;AAAA,MACJhnC,aAAa;AAAA,MACb8qH;AAAAA,MACA6c,aAAa,CAAC,CAAC7c;AAAAA,MACfF,aAEItlJ,QAAOjC,QAAQ2nL;AAAAA,MAEnBngC,iBAAiBjoJ,MAAGA,EAAEsmL,SAAS+B,gBAAgB;AAAA,MAE/CzsJ,UAAAA,YAAW;AAAA,MACXsjI,UAAU;AAAA,IACX,IAAGx8J,QAAOjC;AAEX,UAAMgI,OAAO/F,QAAOjC;AAEpB,UAAMA,WAAO4P,OAAAyE,WACRrM,MAAI;AAAA,MAEPsS,YAAU1K,OAAAyE,OAAA;AAAA,QACRsoB,YACEp9B,MAAAA,EAAKumL,QAAQ8B,gBAAgB,MAAM,SAAS,WAAWjrJ;AAAAA,QAEzD6qH,gBAAgB7jF;AAAAA,QAChBtgE,SAAS,CAAA;AAAA,SACN2E,KAAKsS,UAAU;AAAA,MAGpBC,eAAa3K,OAAAyE,OAAA;AAAA,QAEXsvD;AAAAA,QAEAi9F,wBAAwB54J,KAAK44J;AAAAA,QAC7BE,uBAAuB94J,KAAK84J;AAAAA,QAC5B/L,aAAa/sJ,KAAK+sJ;AAAAA,QAClB55H,UAAAA;AAAAA,QACAknI,oBAAoBr6J,KAAKq6J;AAAAA,QACzB5D;AAAAA,QACAxN,UAAUjpJ,KAAKipJ;AAAAA,QAGfqT;AAAAA,QAEA/c;AAAAA,QACAC;AAAAA,MACGx/I,GAAAA,KAAKuS,aAAa;AAAA,KAExB;AAED,eAAWlX,YAAWpB,QAAOgtM,QAAQ;AACnC,iBAAW1sM,WAAUc,UAAS;AAC5B,YAAId,QAAO8X,mBAAmB;AAC5B9X,UAAAA,QAAO8X,kBAAkBra,UAASA,SAAQsa,UAAU;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAEA,WAAOta;AAAAA,EACT;;;;;;;;;;ACjEA,WAAO,eAAe,SAAS,gBAAgB;AAAA,MAC7C,KAAK,SAAS,kBAAmB;AAE/B,eAAO;AAAA,MACX;AAAA,IACA,CAAC;AAGD,WAAO,eAAe,SAAS,uBAAuB;AAAA,MACpD,KAAK,SAAS,yBAA0B;AAEtC,eAAO;AAAA,MACX;AAAA,IACA,CAAC;AAED,QAAI;AACJ,QAAI,OAAO,WAAW,aAAa;AACjC,UAAI,OAAO,OAAO,SAAS,YAAY;AACrC,uBAAe;AAAA,MACnB,OAAS;AACL,uBAAe;AAAA,MACnB;AAAA,IACA,OAAO;AACL,qBAAe;AAAA,IACjB;AAEA,aAAS,2BAA2ByyM,SAAQ;AAC1C,aAAO,OAAO,KAAKA,SAAQ,QAAQ,EAAE,SAAU;AAAA,IACjD;AAEA,aAAS,0BAA0BA,SAAQ;AACzC,UAAI,OAAO,UAAU,UAAU;AAC7B,cAAM,IAAI,UAAU,iDAAiD;AAAA,MACzE;AACE,aAAO,IAAI,OAAOA,SAAQ,QAAQ,EAAE,SAAU;AAAA,IAChD;AAEA,aAAS,qBAAqBA,SAAQ;AACpC,aAAO,mBAAmB,OAAO,KAAKA,OAAM,CAAC,CAAC;AAAA,IAChD;AAEA,aAAS,aAAa,IAAI;AACxB,aAAO,GAAG,MAAM,GAAG,EAAE,IAAK;AAAA,IAC5B;AAEA,aAAS,gBAAgB,IAAIzzB,OAAM;AACjC,UAAI,IAAI,QAAQ,oBAAoB,KAAK,EAAE;AAE3C,UAAI,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC;AAE1B,UAAI;AACF,YAAI,KAAKA,MAAK,QAAQ;AACtB,YAAI,MAAM,QAAQ,OAAO,GAAG,UAAU,YAAY;AAChD,iBAAO,GAAG,MAAM,UAAU;AAAA,QAChC,OAAW;AACL,iBAAO;AAAA,QACb;AAAA,MACG,SAAQ,GAAG;AACV,mBAAW,CAAC;AAAA,MAChB;AAEE,eAAS,WAAW,GAAG;AACrB,cAAM,IAAI,MAAM,4DAA4D,WAAW,OAAO,EAAE,KAAK;AAAA,MACzG;AAAA,IACA;AAEA,aAAS,UAAW,IAAI,MAAM;AAC5B,aAAO,QAAQ,CAAE;AAEjB,UAAI,KAAK,YAAY;AACnB,aAAK,aAAa,EAAE;AAAA,MACxB;AAEE,UAAI,KAAK,aAAa,UAAU;AAC9B,aAAK,aAAa,EAAE;AAAA,MACxB,WAAa,KAAK,aAAa,OAAO;AAClC,aAAK,mBAAmB,EAAE;AAAA,MAC9B;AAEE,UAAI,KAAK,UAAU,KAAK,UAAU;AAChC,aAAK,KAAK,MAAM,EAAE;AAAA,MACtB;AAEE,WAAK,YAAY;AAAA,IACnB;AAEA,cAAU,UAAU,SAAS,SAAU,OAAO;AAC5C,aAAO,KAAK,UAAU,KAAK,WAAW,MAAM,KAAK;AAAA,IAClD;AAED,QAAI,OAAO,WAAW,aAAa;AACjC,UAAI,OAAO,OAAO,SAAS,YAAY;AACrC,kBAAU,UAAU,WAAW;AAAA,MACnC,OAAS;AACL,kBAAU,UAAU,WAAW;AAAA,MACnC;AAAA,IACA,OAAO;AACL,gBAAU,UAAU,WAAW;AAAA,IACjC;AAEA,aAAS,6BAA6B;AACpC,UAAI,OAAO,KAAK,OAAQ;AACxB,aAAO,OAAO,KAAK,MAAM,MAAM,EAAE,SAAS,QAAQ;AAAA,IACpD;AAEA,aAAS,4BAA4B;AACnC,UAAI,OAAO,KAAK,OAAQ;AACxB,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,gDAAgD;AAAA,MACxE;AACE,aAAO,IAAI,OAAO,MAAM,MAAM,EAAE,SAAS,QAAQ;AAAA,IACnD;AAEA,aAAS,uBAAuB;AAC9B,UAAI,OAAO,KAAK,OAAQ;AACxB,aAAO,KAAK,SAAS,mBAAmB,IAAI,CAAC,CAAC;AAAA,IAChD;AAEA,cAAU,UAAU,QAAQ,WAAY;AACtC,UAAI,OAAO,KAAK,OAAQ;AACxB,aAAO,mBAAmB,IAAI;AAAA,IAC/B;AAED,cAAU,UAAU,YAAY,SAAUh/K,UAAS;AACjD,UAAI,UAAU,SAAS;AACvB,UAAIA,YAAW,QAAQA,SAAQ,aAAa,OAAO;AACjD,mBAAW;AACX,kBAAU,KAAK,MAAO;AAAA,MAC1B,OAAS;AACL,mBAAW;AACX,kBAAU,KAAK,SAAU;AAAA,MAC7B;AACE,aAAO,yDAAyD,WAAW,MAAM;AACjF,aAAOA,YAAW,QAAQA,SAAQ,YAAY,SAAS,OAAO,QAAQ,SAAS;AAAA,IAChF;AAGD,cAAU,UAAU,WAAW,WAAY;AACzC,aAAO,KAAK,MAAM,KAAK,OAAM,CAAE;AAAA,IAChC;AAED,cAAU,UAAU,cAAc,SAAUM,MAAKI,QAAO;AACtD,UAAI,KAAK,UAAU,eAAeJ,IAAG,EAAG,OAAM,IAAI,MAAM,eAAeA,OAAM,6DAA6D;AAC1I,aAAO,KAAK,YAAYA,MAAKI,MAAK;AAAA,IACnC;AAED,cAAU,UAAU,cAAc,SAAUJ,MAAKI,QAAO;AACtD,WAAK,UAAUJ,IAAG,IAAII;AACtB,aAAO;AAAA,IACR;AAED,cAAU,UAAU,cAAc,SAAUJ,MAAK;AAC/C,aAAO,KAAK,UAAUA,IAAG;AAAA,IAC1B;AAED,YAAqB,aAAA,SAAU,KAAK;AAClC,aAAO,IAAI,UAAU,GAAG;AAAA,IACzB;AAED,YAAmB,WAAA,SAAU,MAAM;AACjC,aAAO,IAAI,UAAU,MAAM,EAAE,QAAQ,KAAI,CAAE;AAAA,IAC5C;AAED,YAAkB,UAAA,SAAU,KAAK;AAC/B,aAAO,IAAI,UAAU,KAAK,EAAE,UAAU,MAAK,CAAE;AAAA,IAC9C;AAED,YAAqB,aAAA,SAAUmyM,SAAQ;AACrC,aAAO,IAAI,UAAUA,SAAQ,EAAE,UAAU,SAAQ,CAAE;AAAA,IACpD;AAED,YAAsB,cAAA,SAAU,SAAS;AACvC,UAAI,GAAG;AACP,gBAAU,QACP,QAAQ,UAAU,IAAI,EACtB,QAAQ,UAAU,EAAE;AACvB,UAAI,QAAQ,aAAa,KAAK,OAAO;AACrC,iBAAW,KAAK,EAAE,CAAC,KAAK;AACxB,aAAO,IAAI,UAAU,SAAS,EAAE,UAAoB,YAAY,MAAM;AAAA,IACvE;AAED,aAAS,cAAc,IAAI;AACzB,aAAO,IAAI,UAAU,IAAI,EAAE,QAAQ,KAAI,CAAE;AAAA,IAC3C;AAEA,YAAA,qBAA6B,SAAU,SAASzzB,OAAM;AACpD,UAAI,OAAOA,UAAS,UAAU;AAC5B,cAAM,IAAI;AAAA,UACR;AAAA,QAEN;AAAA,MACA;AAEE,UAAI,KAAK,gBAAgB,SAASA,KAAI;AACtC,UAAI,MAAM,QAAQ,OAAO,GAAG,SAAS,YAAY;AAC/C,eAAO,GAAG,KAAK,aAAa;AAAA,MAChC,OAAS;AACL,eAAO,cAAc,EAAE;AAAA,MAC3B;AAAA,IACC;AAGD,YAAqB,aAAA,SAAU,SAAS;AACtC,UAAI,IAAI,QAAQ,MAAM,QAAQ,YAAY;AAC1C,aAAO,IAAI,QAAQ,YAAY,EAAE,IAAK,CAAA,IAAI;AAAA,IAC3C;AAGD,YAAA,oBAA4B,SAAU,SAASA,OAAM;AACnD,UAAI,OAAOA,UAAS,UAAU;AAC5B,cAAM,IAAI;AAAA,UACR;AAAA,QAEN;AAAA,MACA;AACE,UAAI,IAAI,QAAQ,MAAM,QAAQ,mBAAmB;AACjD,aAAO,IAAI,QAAQ,mBAAmB,EAAE,IAAK,GAAEA,KAAI,IAAI;AAAA,IACxD;AAED,YAAyB,iBAAA,SAAU,KAAK;AACtC,aAAO,IAAI,QAAQ,QAAQ,cAAc,EAAE;AAAA,IAC5C;AAED,YAAgC,wBAAA,SAAU,KAAK;AAC7C,aAAO,IAAI,QAAQ,QAAQ,qBAAqB,EAAE;AAAA,IACnD;AAED,YAAA,yBAAiC,SAAUt/K,OAAMM,UAAS;AACxD,UAAI,OAAO,sBAAsBN;AACjC,aAAOM,YAAWA,SAAQ,YAAY,SAAS,OAAO,QAAQ,SAAS;AAAA;;;;;;;;;;;;;;ACvOzE,QAAM0yM,gBAGF;AAAA,IACFC,oBAAoB;AAAA,MAClBC,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDm7D,SAAS;AAAA,MACPg/H,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACD0jB,YAAY;AAAA,MACVy2K,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDo6L,eAAe;AAAA,MACbD,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDq6L,mBAAmB;AAAA,MACjBF,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACD6hF,MAAM;AAAA,MACJs4G,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDs6L,cAAc;AAAA,MACZH,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDu6L,cAAc;AAAA,MACZJ,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACD6tF,KAAK;AAAA,MACHssG,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDw6L,kBAAkB;AAAA,MAChBL,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDy6L,gBAAgB;AAAA,MACdN,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACD06L,kBAAkB;AAAA,MAChBP,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACD;AAAA,IACDwqG,YAAY;AAAA,MACV2vF,QAAQ;AAAA,QACNtlM,MAAM;AAAA,QACNmL,KAAK;AAAA,MACN;AAAA,MACDpB,WAAW;AAAA,QACT/J,MAAM;AAAA,QACNmL,KAAK;AAAA,MACP;AAAA,IACF;AAAA,EACD;AAEkC;AAEjC7I,WAAOyE,OAAOq+L,eAAe;AAAA,MAC3BU,iBAAiB;AAAA,QACfR,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD46L,iBAAiB;AAAA,QACfT,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD66L,wBAAwB;AAAA,QACtBV,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD86L,qBAAqB;AAAA,QACnBX,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD+6L,kBAAkB;AAAA,QAChBZ,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDg7L,eAAe;AAAA,QACbb,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDi7L,qBAAqB;AAAA,QACnBd,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MAEDk7L,kBAAkB;AAAA,QAChBf,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDylB,kBAAkB;AAAA,QAChB00K,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDm7L,YAAY;AAAA,QACVhB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDo7L,mBAAmB;AAAA,QACjBjB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDq7L,mBAAmB;AAAA,QACjBlB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDs7L,kBAAkB;AAAA,QAChBnB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDu7L,2BAA2B;AAAA,QACzBpB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDw7L,kBAAkB;AAAA,QAChBrB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACDy7L,sBAAsB;AAAA,QACpBtB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD07L,kBAAkB;AAAA,QAChBvB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD27L,WAAW;AAAA,QACTxB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACD;AAAA,MACD47L,mBAAmB;AAAA,QACjBzB,QAAQ;AAAA,UACNtlM,MAAM;AAAA,UACNmL,KAAK;AAAA,QACN;AAAA,QACDpB,WAAW;AAAA,UACT/J,MAAM;AAAA,UACNmL,KAAK;AAAA,QACP;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAEA,QAAM67L,wBAAwBA,CAAC;AAAA,IAAEhnM;AAAAA,IAAMmL,KAAAA;AAAAA,EAAoC,MACzE,GAAGnL,IAAI,KAAKmL,IAAG;AAWF,WAAS87L,6BACtBC,mBACArgM,KAIAsgM,WACA9wI,UACQ;AACR,QAAI+wI,cACF,wCAAwCF,iBAAiB,8BACrDrgM,IAAI1U,IAAI,IAAI0U,IAAIG,SAAS,CAAC;AAAA;AAAA,IAC9BmgM;AACF,UAAME,aAAajC,cAAc8B,iBAAiB;AAClD,QAAIG,YAAY;AACd,YAAM;AAAA,QAAE/B,QAAQniI;AAAAA,QAAcp5D,WAAWu9L;AAAAA,MAAgB,IAAID;AAC7D,UAAIlkI,cAAc;AAChB,cAAMokI,mBAAmBP,sBAAsB7jI,YAAY;AAC3D,YAAImkI,iBAAiB;AACnB,gBAAME,sBAAsBR,sBAAsBM,eAAe;AACjE,gBAAMG,cAAcH,gBAAgBtnM,KAAK0mH,WAAW,eAAe,IAC/D,YACA;AACJ0gF,yBAAe;AAAA;AAAA,MAAWI,mBAAmB,YAAYC,WAAW;AAAA,qCACvCF,gBAAgB;AAAA,QAC/C,OAAO;AACLH,yBACE;AAAA;AAAA,MAAWG,gBAAgB;AAAA,QAE/B;AAAA,MACF;AAAA,IACF;AAEA,UAAMG,cACJrxI,aAAa,YAAY,6BAA6BA;AACxD+wI,mBAAe;AAAA;AAAA;AAAA;AAAA,uCAMuBM,WAAW;AAAA;AAAA;AAGjD,WAAON;AAAAA,EACT;;;;;;;;;;;ACrWA,WAAAxuE,UAAA;AAAA,UAAAsa,OAAAz3I,aAAA;AAAAm9H,yBAAA;AAAA,aAAAsa;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAra,aAAA;AAAA,UAAAqa,OAAAz3I,aAAA;AAAAo9H,4BAAA;AAAA,aAAAqa;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,MAAAy0D,uBAAAlsM,2BAAA;AAKe,YAAUg6D,SACvBmyI,cACA;AAAA,IAAE56L;AAAAA,IAAY7E,gBAAgB;AAAA,IAAMkuD,WAAW;AAAA,EAAgB,GAC/D/2D,MACsB;AACtB,QAAI;AACF,YAAM89K,UAAU,CAAE;AAClB,iBAAWrnL,YAAW6xM,cAAc;AAClC,mBAAW3yM,WAAUc,UAAS;AAC5B,gBAAM;AAAA,YAAEktL;AAAAA,UAAe,IAAIhuL;AAC3B,cAAIguL,gBAAgB;AAClB,kBAAM9tH,MAAM8tH,eAAe3jL,MAAM0N,YAAYvS,QAAAA,EAAAA,KAAK;AAElD,gBAAI06D,QAAQvvD,OAAWw3K,SAAQziL,KAAKw6D,GAAG;AAAA,UACzC;AAAA,QACF;AAAA,MACF;AAEA,UAAIioH,QAAQ19K,WAAW,GAAG;AACxB,mBAAOjF,QAAK,EAAA,OAAC6E,MAAM0N,UAAU;AAAA,MAC/B,WAAWowK,QAAQ19K,WAAW,GAAG;AAE/B,eAAO,CAAE;AACT,YAAI,OAAO09K,QAAQ,CAAC,EAAE7N,SAAS,YAAY;AACzC,gBAAM,IAAI7lK,MACR,4LAIF;AAAA,QACF;AACA,eAAO0zK,QAAQ,CAAC;AAAA,MAClB;AAEA,YAAM,IAAI1zK,MAAM,qDAAqD;AAAA,IACtE,SAAQ0B,KAAK;AACZ,UAAIA,IAAI9L,SAAS,2CAA2C;AAC1D8L,YAAI/M,WACF;AAAA,MAGJ;AAEA,YAAM;AAAA,QAAEwI;AAAAA,QAAKg2D;AAAAA,MAAc,IAAIzxD;AAC/B,UAAIvE,KAAK;AACP,cAAMsgM,aAAYl/L,GAAAA,aAAgB,kBAChC3I,MACA;AAAA,UACE2H,OAAO;AAAA,YACL9U,MAAM0U,IAAI1U;AAAAA,YACV6U,QAAQH,IAAIG,SAAS;AAAA,UACvB;AAAA,QACF,GACA;AAAA,UACEmB;AAAAA,QACF,CACF;AACA,YAAI00D,eAAe;AACjBzxD,cAAI/M,UACF,GAAGg4D,QAAQ,QACX4wI,GAAAA,qBAA4B,SAC1BpqI,cAAc,CAAC,GACfh2D,KACAsgM,WACA9wI,QACF;AAAA,QACJ,OAAO;AACLjrD,cAAI/M,UAAU,GAAGg4D,QAAQ,KAAKjrD,IAAI/M,OAAO;AAAA;AAAA,IAAS8oM;AAAAA,QACpD;AACA/7L,YAAI9L,OAAO;AAAA,MACb;AACA,YAAM8L;AAAAA,IACR;AAAA,EACF;;;;;;;;;;;;AC9EA,WAASy8L,UACPz0M,QACAoC,QACAsyM,aACK;AACL,QAAI10M,WAAU,MAAM;AACD;AACf,YAAIoC,OAAMwL,IAAI5N,MAAK,EAAG,QAAOoC,OAAM2M,IAAI/O,MAAK;AAAA,MAC9C;AAQA,UAAIq1F;AACJ,UAAI1/E,MAAMC,QAAQ5V,MAAK,GAAG;AACxBq1F,iBAAS,IAAI1/E,MAAM3V,OAAMsM,MAAM;AACdlK,QAAAA,OAAM+J,IAAInM,QAAOq1F,MAAM;AACxC,iBAAShpF,IAAI,GAAGA,IAAIrM,OAAMsM,QAAQD,KAAK;AACrCgpF,iBAAOhpF,CAAC,IACN,OAAOrM,OAAMqM,CAAC,MAAM,WAChBrM,OAAMqM,CAAC,IACPooM,UAAUz0M,OAAMqM,CAAC,GAAGjK,MAAkB;AAAA,QAC9C;AAAA,MACF,OAAO;AACLizF,iBAAS,CAAE;AACMjzF,QAAAA,OAAM+J,IAAInM,QAAOq1F,MAAM;AACxC,cAAMtwF,OAAOmK,OAAOnK,KAAK/E,MAAK;AAC9B,iBAASqM,IAAI,GAAGA,IAAItH,KAAKuH,QAAQD,KAAK;AACpC,gBAAMzM,OAAMmF,KAAKsH,CAAC;AAClBgpF,iBAAOz1F,IAAG,IACR,OAAOI,OAAMJ,IAAG,MAAM,WAClBI,OAAMJ,IAAG,IACT60M,UACEz0M,OAAMJ,IAAG,GACTwC,MAMF;AAAA,QACR;AAAA,MACF;AAIA,aAAOizF;AAAAA,IACT;AACA,WAAOr1F;AAAAA,EACT;AAEe,WAAAkW,SAAalW,QAAa;AACvC,QAAI,OAAOA,WAAU,SAAU,QAAOA;AAO/B;AACL,UAAI;AACF,eAAOy0M,UAAUz0M,QAAO,oBAAIw1D,IAAG,GAAI,IAAI;AAAA,MACxC,SAAQkd,GAAG;AACV,eAAOiiI,gBAAgB30M,MAAK;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;;;;;;;;;;;ACxEA,WAAA40M,MAAA;AAAA,UAAA90D,OAAAz3I;AAAAusM,qBAAA;AAAA,aAAA90D;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAK,QAAA;AAAA,UAAAL,OAAAz3I,cAAA;AAAA83I,uBAAA;AAAA,aAAAL;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AACA,WAAAu5B,SAAA;AAAA,UAAAv5B,OAAAz3I,iBAAA;AAAAgxK,wBAAA;AAAA,aAAAv5B;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,WAAAl+E,KAAA;AAAA,UAAAk+E,OAAAz3I,aAAA;AAAAu5D,oBAAA;AAAA,aAAAk+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAGA,WAAA+0D,oBAAA;AAAA,UAAA/0D,OAAAz3I,wBAAA;AAAAwsM,mCAAA;AAAA,aAAA/0D;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAg1D,QAAAzsM,YAAA;AACA,MAAAumB,SAAAvmB,cAAA;AACA,MAAAs3D,aAAAt3D,iBAAA;AAA6C,QAAA;AAAA,IAPpCrJ,MAAAA;AAAAA,IAAM06D,cAAAA;AAAAA,EAAY,IAAAkI,GAAA;AAS3B,QAAMviE,SAAQ86K,OAAU,EAAC,sBAAsB;AAK/C,QAAM46B,yBACJ;AACF,QAAMC,2BACJ;AAQa,YAAUC,gBACvBT,cACAl1M,UACA4M,MACA61D,KACe;AACf71D,WAAO,GAAGA,QAAQ,EAAE;AAEpB,QAAI61D,KAAK;AACP,UAAIA,IAAIzwD,SAAS,WAAW;AAC1BywD,cAAM/iE,MAAK+iE,KAAK,CAAA,GAAI,CAAA,CAAE;AAAA,MACxB,WAAWA,IAAIzwD,SAAS,QAAQ;AAC9B,cAAM,IAAIgF,MAAM,yCAAyC;AAAA,MAC3D;AAEA,UAAIhX,SAAQokM,eAAe;AACzB3hI,eAAMrK,GAAAA,WAAS,SAACqK,GAAG;AAAA,MACrB;AAAA,IACF,OAAO;AACLA,YAAM,QAAO,GAAAM,OAAM,SAACmyI,cAAcl1M,UAAS4M,IAAI;AAAA,IACjD;AAEA,QAAIw+K,WAAW;AACf,QAAIprL,SAAQynJ,mBAAmB,OAAO;AAGpC,UAAI,OAAOznJ,SAAQynJ,mBAAmB,UAAU;AAC9C2jC,mBAAWwqB,kBAAgB,EAACC,WAAW71M,SAAQynJ,cAAc;AAAA,MAC/D;AAEA,UAAI,CAAC2jC,UAAU;AACb,cAAM0qB,cAAcC,gBAAgBN,wBAAwBhzI,GAAG;AAC/D,YAAIqzI,aAAa;AACf,cAAI;AACF1qB,uBAAWwqB,kBAAgB,EAACI,YAAY,OAAOF,WAAW;AAAA,UAC3D,SAAQp9L,KAAK;AAOL;AACL3Y,cAAAA,OAAM,2CAA2C;AAAA,YACnD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAACqrL,UAAU;AACb,cAAM0qB,cAAcC,gBAAgBL,0BAA0BjzI,GAAG;AACjE,YAAI,OAAOziE,SAAQ2jE,aAAa,YAAYmyI,aAAa;AACvD,cAAI;AAEF,kBAAM3jM,QAA0BujM,yBAAyBtjM,KACvD0jM,WACF;AACA,kBAAMG,kBAAkB9vM,IAAE,EAAC+vM,aACzB32M,MAAAA,EAAKsnI,QAAQtnI,MAAGA,EAAEka,QAAQzZ,SAAQ2jE,QAAQ,GAAGxxD,MAAM,CAAC,CAAC,GACrD,MACF;AACAi5K,uBAAWwqB,kBAAeA,EAAEO,SAASF,eAAe;AAAA,UACrD,SAAQv9L,KAAK;AACZ3Y,YAAAA,OAAM,2CAA2C2Y,GAAG;AAAA,UACtD;AAAA,QACD,WAAUo9L,aAAa;AACtB/1M,UAAAA,OAAM,6CAA6C;AAAA,QACrD;AAAA,MACF;AAAA,IACF;AAEA,WAAO,IAAIwmC,MAAAA,QAAKvmC,UAAS;AAAA,MACvB4M;AAAAA,MACA61D;AAAAA,MACA2oH;AAAAA,IACF,CAAC;AAAA,EACH;AAEA,WAASgrB,wBACPjlM,OACAgqB,WACA26K,aAC8B;AAC9B,QAAI36K,WAAU;AACZA,MAAAA,YAAWA,UAASpC,OAAO,CAAC;AAAA,QAAEr4B,OAAAA;AAAAA,MAAM,MAAM;AACxC,YAAIyQ,MAAM7R,KAAKoB,MAAK,GAAG;AACrBo1M,wBAAcp1M;AACd,iBAAO;AAAA,QACT;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH;AACA,WAAO,CAACy6B,WAAU26K,WAAW;AAAA,EAC/B;AAEA,WAASC,gBAAgB5kM,OAAesxD,KAAa;AACnD,QAAIqzI,cAAsB;AAC1B17I,IAAAA,cAAaqI,KAAK5hE,CAAAA,UAAQ;AACxB,OAACA,MAAKg3D,iBAAiBi+I,WAAW,IAAIM,wBACpCjlM,OACAtQ,MAAKg3D,iBACLi+I,WACF;AACA,OAACj1M,MAAKi3D,eAAeg+I,WAAW,IAAIM,wBAClCjlM,OACAtQ,MAAKi3D,eACLg+I,WACF;AACA,OAACj1M,MAAKk3D,kBAAkB+9I,WAAW,IAAIM,wBACrCjlM,OACAtQ,MAAKk3D,kBACL+9I,WACF;AAAA,IACF,CAAC;AACD,WAAOA;AAAAA,EACT;;;;;;;;;;;;;;;ACnHA,YAAM,qBAAqC,8BAAc,IAAI,IAAI,IAAI,IAAI,IAAI;AAC7E,YAAM,gBAA2B,CAAE;AAEnC,eAAS,cACPh0M,SACArC,OACA6U,SACA,MACA,SAAsB;AAEtB,eAAO,EAAE,QAAAxS,SAAQ,MAAArC,OAAM,QAAA6U,SAAQ,MAAM,QAAS;AAAA;AAUhD,eAAS,OACP,KACA,SACAxS,SACA,SAAsB;AAEtB,eAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA,QAAAA;AAAA,UACA;AAAA,QACM;AAAA;AAOM,eAAA,UAAU,KAAe,SAAkB;AACzD,eAAO,OAAO,KAAK,SAAS,IAAI,IAAI;AAAA;AAOtB,eAAA,eAAeA,SAAgB,SAAsB;AACnE,eAAO,OAAO,MAAM,eAAeA,SAAQ,OAAO;AAAA;AAO9C,eAAU,cAAc,MAAe;AAG3C,cAAM,MAAM,IAAIwlJ,WAAAA,WAAW,EAAE,MAAM,KAAK,IAAI,MAAM;AAClD,cAAM,EAAE,SAAS,aAAa,IAAK,IAAG;AACtC,cAAM,YAAY,IAAI;AACtB,cAAM,eAAeZ,6BAAgB,GAAG;AAExC,iBAAS,IAAI,GAAG,IAAI,aAAa,QAAQ,KAAK;AAC5C,gBAAM,WAAW,aAAa,CAAC;AAE/B,mBAAS,IAAI,GAAG,IAAI,SAAS,QAAQ,KAAK;AACxC,kBAAM,UAAU,SAAS,CAAC;AAC1B,kBAAM,SAAS,QAAQ,CAAC;AACxB,gBAAI,SAAwC;AAI5C,gBAAI,QAAQ,WAAW,GAAG;AACxB,oBAAM5kJ,UAAS,YAAY,QAAQ,CAAC,CAAC;AACrC,uBAAS,oBACPA,SACA,QAAQ,CAAC,GACT,QAAQ,CAAC,GACT,QAAQ,WAAW,IAAI,UAAU,QAAQ,CAAC,CAAC,IAAI,EAAE;AAKnD,kBAAI,UAAU;AAAM;AAAA;AAGtB,kBAAM,EAAE,QAAAwS,SAAQ,MAAA7U,OAAM,MAAM,SAAS,QAAAqC,QAAM,IAAK;AAEhDu0M,uCAAgB,KAAK,GAAG,QAAQv0M,SAAQrC,OAAM6U,SAAQ,IAAI;AAC1D,gBAAIxS,WAAU,WAAW;AAAM8lJ,yBAAAA,iBAAiB,KAAK9lJ,SAAQ,OAAO;AAAA;;AAIxE,eAAO;AAAA;AAOH,eAAU,oBACdA,SACArC,OACA6U,SACA,MAAY;AAEZ,YAAI,CAACxS,QAAO,KAAK;AACf,iBAAO,cAAcA,QAAO,QAAQrC,OAAM6U,SAAQ,MAAMxS,QAAO,OAAO;AAAA;AAGxE,cAAM,UAAUw0M,aAAAA,aAAax0M,QAAO,KAAKrC,OAAM6U,OAAM;AAGrD,YAAI,WAAW;AAAM,iBAAO;AAG5B,YAAI,QAAQ,WAAW;AAAG,iBAAO;AAEjC,eAAO,oBACLxS,QAAO,QAAQ,QAAQ,CAAC,CAAC,GACzB,QAAQ,CAAC,GACT,QAAQ,CAAC,GACT,QAAQ,WAAW,IAAIA,QAAO,IAAI,MAAM,QAAQ,CAAC,CAAC,IAAI,IAAI;AAAA,MAE9D;AClJA,eAAS,QAAWpB,QAAc;AAChC,YAAI,MAAM,QAAQA,MAAK;AAAG,iBAAOA;AACjC,eAAO,CAACA,MAAK;AAAA;AAcD,eAAU,mBACtBiH,QACA,QAAuB;AAEvB,cAAM,OAAO,QAAQA,MAAK,EAAE,IAAI,CAAC,MAAM,IAAI8+I,sBAAS,GAAG,EAAE,CAAC;AAC1D,cAAM,MAAM,KAAK,IAAM;AAEvB,iBAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK;AACpC,cAAI,KAAK,CAAC,EAAE,QAAQ,SAAS,GAAG;AAC9B,kBAAM,IAAI,MACR,sBAAsB,CAAC;AAAA,sEACkD;AAAA;;AAK/E,YAAI,OAAO1kJ,OAAM,KAAK,QAAQ,IAAI,CAAC;AACnC,iBAAS,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACzC,iBAAO,UAAU,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;AAAA;AAElC,eAAO;AAAA;AAGT,eAASA,OACP,KACA,QACA,UACA,eAAqB;AAErB,cAAM,EAAE,iBAAiB,eAAc,IAAK;AAE5C,cAAM,QAAQ,gBAAgB;AAC9B,cAAM,WAAW,gBAAgB,IAAI,CAAC,YAA2B,MAAsB;AAKrF,gBAAM,MAAqB;AAAA,YACzB;AAAA,YACA;AAAA,YACA,QAAQ,cAAc;AAAA,YACtB,SAAS;AAAA,UACV;AAID,gBAAMkjM,aAAY,OAAO,IAAI,QAAQ,GAAG;AAExC,gBAAM,EAAE,QAAAnjM,SAAQ,QAAO,IAAK;AAG5B,cAAImjM;AAAW,mBAAOljM,OAAM,IAAI0kJ,aAAAA,SAASw+C,YAAWnjM,OAAM,GAAG,QAAQA,SAAQ,KAAK;AAMlF,gBAAM,gBACJ,YAAY,SAAY,UAAU,iBAAiB,eAAe,CAAC,IAAI;AACzE,iBAAO,eAAeA,SAAQ,aAAa;AAAA,QAC7C,CAAC;AAED,eAAO,UAAU,KAAK,QAAQ;AAAA,MAChC;AAAA,MC7Ec,MAAO,UAAS;AAAA,QAS5B,YAAY,KAAiB9B,UAAgB;AAC3C,gBAAM,MAAMA,SAAQ,kBAAkBgoJ,WAAAA,aAAa,GAAG,IAAIF,WAAAA,aAAa,GAAG;AAC1E,eAAK,UAAU,IAAI;AACnB,eAAK,OAAO,IAAI;AAChB,eAAK,WAAW,IAAI;AACpB,eAAK,QAAQ,IAAI;AAEjB,eAAK,aAAa,IAAI;AAEtB,eAAK,UAAU,IAAI;AACnB,cAAI,CAAC9nJ,SAAQ,gBAAgB;AAC3B,iBAAK,iBAAiB,IAAI;AAAA;QAE7B;AAAA,QAED,WAAQ;AACN,iBAAO,KAAK,UAAU,IAAI;AAAA,QAC3B;AAAA,MACF;ACLuB,eAAA,UACtB2H,QACA,QACA3H,UAA2B;AAE3B,cAAM,OACJ,OAAOA,aAAY,WAAWA,WAAU,EAAE,gBAAgB,CAAC,CAACA,UAAS,iBAAiB,MAAO;AAC/F,cAAM,OAAO,mBAAmB2H,QAAO,MAAM;AAC7C,eAAO,IAAI,UAAU,cAAc,IAAI,GAAG,IAAI;AAAA,MAChD;;;;;;;;;;;;;;ACvCA,WAAA4uM,aAAA;AAAA,UAAA/1D,OAAAz3I,qBAAA;AAAAwtM,4BAAA;AAAA,aAAA/1D;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEe,WAASg2D,eACtBprB,UACAz4K,KACA60I,gBACW;AAOX,UAAM1lJ,UAAS0lJ,eAAehxI,QAAQ,OAAO,GAAG;AAMhD,QAAIigM,QAAQ;AACZ,UAAM78I,SAAS88I,aAAUC,SAAShkM,GAAG,GAAG,CAAC60L,GAAGoP,QAAQ;AAClD,UAAIpP,MAAM1lM,WAAU,CAAC20M,OAAO;AAC1BA,gBAAQ;AAMRG,YAAI90M,SAAS;AAEb,eAAO60M,SAASvrB,QAAQ;AAAA,MAC1B;AAEA,aAAO;AAAA,IACT,CAAC;AAED,QAAI,OAAOA,SAAS7jC,eAAe,UAAU;AAC3C3tF,aAAO2tF,aAAa6jC,SAAS7jC;AAAAA,IAC/B;AAOA,WAAA33I,OAAAyE,OAAA,CAAA,GAAYulD,MAAM;AAAA,EACpB;AAEA,WAAS+8I,SAAShkM,KAA2B;AAC3C,WAAA/C,OAAAyE,OAAA,CAAA,GACK1B,KAAG;AAAA,MAKN40I,YAAY;AAAA,IAAI,CAAA;AAAA,EAEpB;;;;;;;;;;;ACzDA,WAAAguD,oBAAA;AAAA,UAAA/0D,OAAAz3I,wBAAA;AAAAwsM,mCAAA;AAAA,aAAA/0D;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,WAAAw5B,aAAA;AAAA,UAAAx5B,OAAAz3I,aAAA;AAAAixK,4BAAA;AAAA,aAAAx5B;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAGA,MAAAq2D,YAAA9tM,gBAAA;AAEe,WAAS+tM,aACtB5B,cACAx1M,OAIA;AACA,UAAM;AAAA,MAAEsI;AAAAA,MAAMy6D;AAAAA,MAAK71D;AAAAA,MAAMw+K;AAAAA,IAAS,IAAI1rL;AACtC,UAAM;AAAA,MAAE6a;AAAAA,IAAc,IAAIvS;AAE1BuS,kBAAcktI,iBAAiB2jC,4BAAAA,SAAU2rB,SAAU;AAEnD,UAAMrsB,UAAU,CAAE;AAClB,eAAWrnL,YAAW6xM,cAAc;AAClC,iBAAW3yM,WAAUc,UAAS;AAC5B,cAAM;AAAA,UAAEmtL;AAAAA,QAAkB,IAAIjuL;AAC9B,YAAIiuL,mBAAmB;AACrB,gBAAM52H,UAAS42H,kBAAkB/tH,KAAKloD,eAAe3N,MAAM2xJ,WAAAA,EAAAA,OAAQ;AAEnE,cAAI3kG,YAAW1mD,OAAWw3K,SAAQziL,KAAK2xD,OAAM;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAEA,QAAIA;AACJ,QAAI8wH,QAAQ19K,WAAW,GAAG;AACxB4sD,gBAAS2kG,GAAAA,WAAQ,EAAA,SAAC97F,KAAKloD,eAAe3N,IAAI;AAAA,IAC5C,WAAW89K,QAAQ19K,WAAW,GAAG;AAC/B4sD,eAAS8wH,QAAQ,CAAC;AAElB,UAAI,OAAO9wH,OAAOijH,SAAS,YAAY;AACrC,cAAM,IAAI7lK,MACR,6LAIF;AAAA,MACF;AAAA,IACF,OAAO;AACL,YAAM,IAAIA,MAAM,qDAAqD;AAAA,IACvE;AAKA,QAAI;AAAA,MAAEpK,MAAMoqM;AAAAA,MAAYjtD,YAAYktD,YAAYr9I,OAAOjnD;AAAAA,IAAI,IAAIinD;AAG/D,QAAIA,OAAOowF,aAAa;AAItBitD,kBAASrnM,OAAAyE,WAAQulD,OAAOjnD,GAAG;AAAA,IAC7B,OAAO;AACL,UAAIskM,WAAW;AACb,YAAI7rB,UAAU;AAEZ6rB,uBAAY,GAAAT,UAAc,SACxBprB,SAAS2rB,YACTE,WACA18L,cAAcitI,cAChB;AAAA,QACF,OAAO;AAGLyvD,sBAAYr9I,OAAOjnD;AAAAA,QACrB;AAAA,MACF;AAAA,IACF;AAEA,QAAI3K,KAAKs8J,eAAe,YAAYt8J,KAAKs8J,eAAe,QAAQ;AAC9D0yC,oBAAc,OAAOpB,kBAAAA,EAAiBC,WAAWoB,SAAS,EAAEC,UAAW;AAAA,IACzE;AAEA,QAAIlvM,KAAKs8J,eAAe,UAAU;AAChC2yC,kBAAY;AAAA,IACd;AAEA,WAAO;AAAA,MAAED;AAAAA,MAAYC;AAAAA,IAAW;AAAA,EAClC;;;;;;;;;;;ACvFA,WAAAv1I,YAAA;AAAA,UAAA8+E,OAAAz3I,aAAA;AAAA24D,2BAAA;AAAA,aAAA8+E;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAQA,MAAA22D,cAAApuM,kBAAA;AACA,MAAAquM,oBAAAruM,wBAAA;AACA,MAAAsuM,iBAAAtuM,qBAAA;AACA,MAAAuuM,iBAAAvuM,qBAAA;AAEA,MAAAwuM,YAAAxuM,gBAAA;AAGA,MAAAmnL,aAAAnnL,iBAAA;AACA,MAAAm3E,SAAAn3E,aAAA;AAiBO,YAAUgiK,IACf9oK,SACA2K,MACA61D,KACqB;AACrB,UAAM/iE,QAAO,QAAO,GAAAi2M,eAAa,SAC/B1zM,QAAOgtM,SACPtrC,GAAAA,eAAAA,SAAiB1hK,OAAM,GACvB2K,MACA61D,GACF;AAEA,UAAMz6D,OAAOtI,MAAKsI;AAClB,QAAI;AACF,aAAOwvM,cAAc93M,OAAMuC,QAAOgtM,MAAM;AAAA,IACzC,SAAQ7/L,GAAG;AAAA,UAAAqoM;AACVroM,QAAEzD,UAAU,IAAA8rM,iBAAGzvM,KAAK27D,aAAQ,OAAA8zI,iBAAI,cAAc,KAAKroM,EAAEzD,OAAO;AAC5D,UAAI,CAACyD,EAAExC,MAAM;AACXwC,UAAExC,OAAO;AAAA,MACX;AACA,YAAMwC;AAAAA,IACR;AAEA,QAAI4nM,YAAYC;AAChB,QAAI;AACF,UAAIjvM,KAAK4E,SAAS,OAAO;AACvB,SAAC;AAAA,UAAEoqM;AAAAA,UAAYC;AAAAA,gBAAcH,UAAY,SAAC70M,QAAOgtM,QAAQvvM,KAAI;AAAA,MAC/D;AAAA,IACD,SAAQ0P,GAAG;AAAA,UAAAsoM;AACVtoM,QAAEzD,UAAU,IAAA+rM,kBAAG1vM,KAAK27D,aAAQ,OAAA+zI,kBAAI,cAAc,KAAKtoM,EAAEzD,OAAO;AAC5D,UAAI,CAACyD,EAAExC,MAAM;AACXwC,UAAExC,OAAO;AAAA,MACX;AACA,YAAMwC;AAAAA,IACR;AAEA,WAAO;AAAA,MACL63H,UAAUvnI,MAAKunI;AAAAA,MACfjnI,SAASgI;AAAAA,MACTy6D,KAAKz6D,KAAKy6D,QAAQ,OAAO/iE,MAAK+iE,MAAM;AAAA,MACpC71D,MAAMoqM,eAAe9jM,SAAY,OAAO8jM;AAAAA,MACxCrkM,KAAKskM,cAAc/jM,SAAY,OAAO+jM;AAAAA,MACtCt6K,YAAYj9B,MAAK+iE,IAAIvnC,QAAQyB;AAAAA,MAC7ByzJ,uBAAsBH,GAAAA,WAAAA,cAAahuL,QAAOmuL,oBAAoB;AAAA,IAC/D;AAAA,EACH;AAEA,YAAUonB,cAAc93M,OAAYw1M,cAA2C;AAC7E,UAAMx5K,SAAQ,WAAO44C,OAAAA,SAAS;AAE9B,eAAWqjI,eAAezC,cAAc;AACtC,YAAM0C,YAAoC,CAAE;AAC5C,YAAM3I,SAAS,CAAE;AACjB,YAAM9zD,YAAW,CAAE;AAEnB,iBAAW54I,WAAUo1M,YAAYj+K,OAAO,EAAC,GAAA24K,kBAAoB,SAAE,CAAA,CAAC,GAAG;AACjE,cAAM3mM,OAAO,IAAImmM,YAAU,QAACnyM,OAAM6C,QAAOjC,KAAKiC,QAAOvC,SAAS07B,MAAK;AAEnEk8K,kBAAU3vM,KAAK,CAAC1F,SAAQmJ,IAAI,CAAC;AAC7BujM,eAAOhnM,KAAKyD,IAAI;AAChByvI,QAAAA,UAASlzI,KAAK1F,QAAOg3B,OAAO;AAAA,MAC9B;AAEA,iBAAW,CAACh3B,SAAQmJ,IAAI,KAAKksM,WAAW;AACtC,YAAIr1M,QAAO+tL,KAAK;AACd,gBAAMh4K,MAAK,GAAA02K,OAAU,YACnBzsL,QAAO+tL,KACP,wFACF;AAGA,iBAAOh4K,GAAGrI,KAAKvE,MAAMhM,KAAI;AAAA,QAC3B;AAAA,MACF;AAGA,YAAM65B,UAAUqkC,YAAAA,QAASu9E,SAASx4E,MAChCw4E,WACA8zD,QACAvvM,MAAKsI,KAAKg9L,uBACZ;AAGO;AACL,SAAApnI,GAAAA,UAAAA,EAAAA,SAASl+D,MAAK+iE,KAAKlpC,SAAS75B,MAAKigE,KAAK;AAAA,MACxC;AAEA,iBAAW,CAACp9D,SAAQmJ,IAAI,KAAKksM,WAAW;AACtC,YAAIr1M,QAAO8tL,MAAM;AACf,gBAAM/3K,MAAK,GAAA02K,OAAU,YACnBzsL,QAAO8tL,MACP,wFACF;AAGA,iBAAO/3K,GAAGrI,KAAKvE,MAAMhM,KAAI;AAAA,QAC3B;AAAA,MACF;AAAA,IACF;AAAA,EACF;;;;;;;;;;;;;ACrIA,WAAAgvL,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAlxH,SAAAvmB,cAAA;AAEA,MAAA44C,UAAA54C,sBAAA;AAGA,MAAA86L,qBAAA96L,yBAAA;AAcA,QAAM8uM,kBAAkBppB,SAAO,EAAC,UAAUp3K,WACxCzK,MACA5E,MAC4B;AAC5B,UAAM/F,UAAgC,QAAO,GAAA8rL,OAAU,SAAC/lL,IAAI;AAC5D,QAAI/F,YAAW,KAAM,QAAO;AAE5B,WAAO,QAAO,GAAA8oK,QAAAA,KAAI9oK,SAAQ2K,IAAI;AAAA,EAChC,CAAC;AAEgC2G,YAAA,YAAG,SAAS8D,WAC3CzK,MACAkrM,gBACAC,eACA;AACA,QAAI/vM;AACJ,QAAI2uB;AACJ,QAAI,OAAOmhL,mBAAmB,YAAY;AACxCnhL,iBAAWmhL;AACX9vM,aAAOkL;AAAAA,IACT,OAAO;AACLlL,aAAO8vM;AACPnhL,iBAAWohL;AAAAA,IACb;AAEA,QAAIphL,aAAazjB,QAAW;AAKnB;AAIL,gBAAO,GAAAmwL,mBAAoB,sBAACwU,gBAAgB/oB,IAAI,EAAEliL,MAAM5E,IAAI;AAAA,MAC9D;AAAA,IACF;AAEA,KAAAq7L,GAAAA,mBAAoB,sBAACwU,gBAAgB9oB,OAAO,EAAEniL,MAAM5E,MAAM2uB,QAAQ;AAAA;AAG7D,WAASqhL,iBACX3/K,MACH;AACA,YAAO,GAAAgrK,mBAAoB,sBAACwU,gBAAgB/oB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,EAC3D;AACO,WAAS4/K,kBACX5/K,MACH;AACA,YAAO,GAAAgrK,mBAAoB,sBAACwU,gBAAgBn8K,KAAK,EAAE,GAAGrD,IAAI;AAAA,EAC5D;;;;;;;;;;;;;;AC7DyC9kB,uBAAA,gBAAG,SAASikM,cACnD7zI,UACA37D,MACA2uB,UACA;AACA,QAAI,OAAO3uB,SAAS,YAAY;AAC9B2uB,iBAAW3uB;AAAAA,IACb;AAEA2uB,aAAS,IAAI3f,MAAM,iDAAiD,GAAG,IAAI;AAAA;AAGtE,WAASkhM,oBAA2B;AACzC,UAAM,IAAIlhM,MAAM,iDAAiD;AAAA,EACnE;AAEO,WAASmhM,qBAAqB;AACnC,WAAOxpB,QAAQmC,OACb,IAAI95K,MAAM,iDAAiD,CAC7D;AAAA,EACF;;;;;;;;;;;;;;AC9BA,WAAA03K,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAlxH,SAAAvmB,cAAA;AAEA,MAAA44C,UAAA54C,sBAAA;AAGA,MAAA86L,qBAAA96L,yBAAA;AAgBA,QAAMqvM,yBAAyB3pB,SAAO,EAAC,WACrChsH,KACA71D,MACA5E,MAC4B;AAC5B,UAAM/F,UAAgC,QAAO,GAAA8rL,OAAU,SAAC/lL,IAAI;AAC5D,QAAI/F,YAAW,KAAM,QAAO;AAE5B,QAAI,CAACwgE,IAAK,OAAM,IAAIzrD,MAAM,cAAc;AAExC,WAAO,QAAO+zJ,GAAAA,QAAG,KAAC9oK,SAAQ2K,MAAM61D,GAAG;AAAA,EACrC,CAAC;AAE8ClvD,eAAA,mBAAG,SAAS8kM,iBACzD51I,KACA71D,MACAkrM,gBACAC,eACA;AACA,QAAI/vM;AACJ,QAAI2uB;AACJ,QAAI,OAAOmhL,mBAAmB,YAAY;AACxCnhL,iBAAWmhL;AACX9vM,aAAOkL;AAAAA,IACT,OAAO;AACLlL,aAAO8vM;AACPnhL,iBAAWohL;AAAAA,IACb;AAEA,QAAIphL,aAAazjB,QAAW;AAKnB;AAIL,gBAAOmwL,GAAAA,mBAAAA,sBAAqB+U,uBAAuBtpB,IAAI,EAAErsH,KAAK71D,MAAM5E,IAAI;AAAA,MAC1E;AAAA,IACF;AAEA,QAAAq7L,mBAAoB,sBAAC+U,uBAAuBrpB,OAAO,EACjDtsH,KACA71D,MACA5E,MACA2uB,QACF;AAAA;AAGK,WAAS2hL,wBACXjgL,MACH;AACA,YAAO,GAAAgrK,mBAAoB,sBAAC+U,uBAAuBtpB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,EAClE;AAEO,WAASkgL,yBACXlgL,MACH;AACA,YAAO,GAAAgrK,mBAAoB,sBAAC+U,uBAAuB18K,KAAK,EAAE,GAAGrD,IAAI;AAAA,EACnE;;;;;;;;;;;;;;ACnFA,WAAAq2J,WAAA;AAAA,UAAAluC,OAAAz3I,eAAA;AAAA2lL,0BAAA;AAAA,aAAAluC;AAAAA,IAAA;AAAA,WAAAA;AAAAA,EAAA;AAEA,MAAAlxH,SAAAvmB,cAAA;AACA,MAAA44C,UAAA54C,cAAA;AACA,MAAAsuM,iBAAAtuM,qBAAA;AAGA,MAAA86L,qBAAA96L,yBAAA;AAiBA,QAAMyvM,cAAc/pB,SAAO,EAAC,UAAU1mL,OACpC6E,MACA5E,MAC6B;AAC7B,UAAM/F,UAAS,QAAO,GAAA8rL,OAAU,SAAC/lL,IAAI;AAErC,QAAI/F,YAAW,MAAM;AACnB,aAAO;AAAA,IACT;AAEA,WAAO,QAAO8gE,GAAAA,QAAM,SAAC9gE,QAAOgtM,SAAQtrC,GAAAA,wBAAiB1hK,OAAM,GAAG2K,IAAI;AAAA,EACpE,CAAC;AAEwB2G,UAAA,QAAG,SAASxL,OACnC6E,MACA5E,MACA2uB,UACA;AACA,QAAI,OAAO3uB,SAAS,YAAY;AAC9B2uB,iBAAW3uB;AACXA,aAAOkL;AAAAA,IACT;AAEA,QAAIyjB,aAAazjB,QAAW;AAKnB;AAIL,gBAAO,GAAAmwL,mBAAoB,sBAACmV,YAAY1pB,IAAI,EAAEliL,MAAM5E,IAAI;AAAA,MAC1D;AAAA,IACF;AAEA,KAAAq7L,GAAAA,mBAAoB,sBAACmV,YAAYzpB,OAAO,EAAEniL,MAAM5E,MAAM2uB,QAAQ;AAAA;AAGzD,WAAS8hL,aAAapgL,MAA2C;AACtE,YAAO,GAAAgrK,mBAAoB,sBAACmV,YAAY1pB,IAAI,EAAE,GAAGz2J,IAAI;AAAA,EACvD;AACO,WAASqgL,cAAcrgL,MAA4C;AACxE,YAAO,GAAAgrK,mBAAoB,sBAACmV,YAAY98K,KAAK,EAAE,GAAGrD,IAAI;AAAA,EACxD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5DA,QAAAm9K,QAAAzsM,YAAA;AAEA,QAAA4vM,wBAAA5vM,4BAAA;AAEA,QAAA6vM,YAAA7vM,oBAAA;AAQA,QAAAukM,eAAAvkM,mBAAA;AAAyD,aAAAozJ,SAAA;AAAA,YAAA3b,OAAAz3I,aAAA;AAAAozJ,0BAAA;AAAA,eAAA3b;AAAAA,MAAA;AAAA,aAAAA;AAAAA,IAAA;AAAA5wI,WAAAC,eAAA0D,SAAA,SAAA;AAAA,MAAAkuC,YAAA;AAAA,MAAAhyC,gBAAA;AAAA,eAAA0sJ,OAAA;AAAA,MAAA;AAAA,IAAA,CAAA;AAMzD,aAAAj2B,UAAA;AAAA,YAAAsa,OAAAz3I,aAAA;AAAAm9H,2BAAA;AAAA,eAAAsa;AAAAA,MAAA;AAAA,aAAAA;AAAAA,IAAA;AACA,aAAA9+E,YAAA;AAAA,YAAA8+E,OAAAz3I,aAAA;AAAA24D,6BAAA;AAAA,eAAA8+E;AAAAA,MAAA;AAAA,aAAAA;AAAAA,IAAA;AACA,aAAA5X,YAAA;AAAA,YAAA4X,OAAAz3I,aAAA;AAAA6/H,6BAAA;AAAA,eAAA4X;AAAAA,MAAA;AAAA,aAAAA;AAAAA,IAAA;AASA,QAAA7+F,UAAA54C,cAAA;AA0BA,QAAA8vM,aAAA9vM,iBAAA;AAMA,QAAA+vM,iBAAA/vM,4BAAA;AAKA,QAAAgwM,gBAAAhwM,oBAAA;AAKA,QAAAs+H,SAAAt+H,aAAA;AAzEoBwK,YAAAA,UAAuB;AASpC,UAAM06K,gBAAgBA,CAAC3gL,MAAcmM,YAC1Cm/L,UAAU3qB,cAAc3gL,MAAMmM,SAAS,KAAK,EAAE6zK;AAAS/5K,YAAAA,gBAAA06K;AAClD,UAAMC,gBAAgBA,CAAC5gL,MAAcmM,YAC1Cm/L,UAAU1qB,cAAc5gL,MAAMmM,SAAS,KAAK,EAAE6zK;AAAS/5K,YAAAA,gBAAA26K;AAmE1B36K,YAAG3D,qBAAAA,OAAOm5H,OAAO,CAC9C,OACA,QACA,QACA,OACA,QACA,MAAM,CACE;AAUqC;AAG7Cx1H,cAAAA,gBAAwB,MAAMylM,cAAc;AAAA,QAC1C39K,KAAKrzB,MAAW;AACd,kBAAOupM,GAAAA,QAAAA,iBAAgBvpM,IAAI;AAAA,QAC7B;AAAA,MACD;AAGDuL,cAAiB,SAAA,SAAS48K,OAAOz/J,OAAe;AAC9C,cAAM,IAAI1Z,MACR,QAAQ0Z,KAAK,kEACf;AAAA,MACD;AAAA,IACH;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACpGO,WAASuoL,sBAAsB15M,OAAyB;AAC7D,UAAM25M,eAAe35M;AACrB,UAAM;AAAA,MAAEsB,MAAAA;AAAAA,MAAMu4I;AAAAA,IAAW,IAAI8/D;AAC7B,QAAI9/D,WAAWp7H,uBAAuB;AACpC,YAAM;AAAA,QAAEgc;AAAAA,QAAUK;AAAAA,MAAO,IAAG++G,WAAWv4I;AACvC,UACEm5B,aAAa,QACbA,aAAa,QACZA,aAAa,QAAQn5B,UAASw5B,OAC/B;AACA,eAAO4+K,sBAAsB7/D,UAAU;AAAA,MACzC;AAAA,IACF;AACA,QAAIA,WAAW36H,wBAAwB;AACrC,YAAM;AAAA,QAAEye,aAAAA;AAAAA,MAAa,IAAGk8G,WAAWv4I;AACnC,UAAIq8B,aAAYA,aAAYlwB,SAAS,CAAC,MAAMnM,OAAM;AAChD,eAAOo4M,sBAAsB7/D,UAAU;AAAA,MACzC,OAAO;AAIL,eAAO;AAAA,MACT;AAAA,IACF;AACA,WACEA,WAAW3sH,cAAc;AAAA,MAAEntB,MAAMuB;AAAAA,IAAK,CAAC,KACvCu4I,WAAWp6H,kBAAkB;AAAA,MAAEgb,UAAU;AAAA,IAAI,CAAC,KAC9Co/G,WAAW1sH,OAAO;AAAA,MAAEptB,MAAMuB;AAAAA,IAAK,CAAC;AAAA,EAEpC;ACxBsB,QAAA;AAAA,IApBpB6zB;AAAAA,IACAiW;AAAAA,IACAjG;AAAAA,IACAE;AAAAA,IACA8C;AAAAA,IACAlC;AAAAA,IACAkyB,WAAAA;AAAAA,IACA7xB;AAAAA,IACA5L,YAAAA;AAAAA,IACAhc;AAAAA,IACAmD;AAAAA,IACAD;AAAAA,IACAlC;AAAAA,IACA6oB;AAAAA,IACAE;AAAAA,IACAP;AAAAA,IACA0G;AAAAA,IACAF;AAAAA,IACAlF;AAAAA,IACAc;AAAAA,EAAgB,IAAAy4B;AAAAA,EAKlB,MAAM62I,mBAAmB;AAAA,IAEvBzlM,cAAc;AAAA,WADNqzI,OAAI;AAEV,WAAKA,OAAO,oBAAI13I,QAAS;AAAA,IAC3B;AAAA,IAEAf,IAAIhO,MAAmB;AACrB,aAAO,KAAKymJ,KAAKz4I,IAAIhO,IAAG;AAAA,IAC1B;AAAA,IAEAmP,IAAInP,MAAmB;AACrB,UAAI,CAAC,KAAKgO,IAAIhO,IAAG,EAAG;AAEpB,YAAM84M,SAAS,KAAKryD,KAAKt3I,IAAInP,IAAG;AAChC,YAAM;AAAA,QAAEI,OAAAA;AAAAA,MAAM,IAAI04M;AAElBA,aAAOr+F;AACP,UAAIq+F,OAAOr+F,UAAU,GAAG;AAGtB,eAAOr2E,qBAAqB,KAAKhkC,QAAOJ,IAAG;AAAA,MAC7C;AACA,aAAOI;AAAAA,IACT;AAAA,IAEAmM,IAAIvM,MAAmBI,QAAqBq6G,OAAe;AACzD,aAAO,KAAKgsC,KAAKl6I,IAAIvM,MAAK;AAAA,QAAEy6G;AAAAA,QAAOr6G,OAAAA;AAAAA,MAAM,CAAC;AAAA,IAC5C;AAAA,EACF;AAEA,WAAS24M,cACP95M,OACAO,OACc;AACd,UAAM;AAAA,MAAEe,MAAAA;AAAAA,IAAK,IAAItB;AACjB,QAAI4hB,2BAA2BtgB,KAAI,GAAG;AACpC,aAAOmnC,iBAAiBloC,OAAMe,MAAK+uB,UAAU/uB,MAAKy7B,QAAQ;AAAA,IAC5D;AAEA,QAAI/8B,MAAK6hB,4BAA4B;AACnC,YAAM+W,SAAS54B,MAAKkQ,IAAI,QAAQ;AAChC,UAAIlQ,MAAKsB,KAAKu0B,YAAY+C,OAAOhX,2BAA0B,GAAI;AAE7D,cAAMtb,SAASsyB,OAAOt3B,KAAKgF;AAC3B,cAAMgT,WAAUtZ,MAAKogE,MAAM8hF,sBAAsB57I,MAAM;AACvDsyB,eACG1oB,IAAI,QAAQ,EACZ21I,YAAY1gH,qBAAqB,KAAK7rB,UAAShT,MAAM,CAAC;AAEzD,eAAO2/B,eAAewC,iBAAiBloC,OAAMm6B,YAAW,MAAM,CAAC,GAAG,CAChEphB,UACA,GAAGtZ,MAAKsB,KAAK+5B,SAAS,CACvB;AAAA,MACH;AAEA,aAAO4K,eAAe1lC,OAAMP,MAAKsB,KAAK+5B,SAAS;AAAA,IACjD;AAEA,WAAOr7B,MAAKsB;AAAAA,EACd;AAMA,WAASy4M,iBAAiB/5M,OAAgB;AACxC,WAAOA,OAAM;AACX,UAAIA,MAAK4e,YAAa;AAEtB,YAAM;AAAA,QAAEi7H;AAAAA,QAAYqrB;AAAAA,QAAWxnI;AAAAA,MAAQ,IAAI19B;AAC3C,YAAMs0J,aAAaza,WAAWv4I;AAC9B,UAAIo8B,SAAS;AACX,YACEwnI,cAEA5Q,WAAW52H,OAAO,GAClB;AACA,iBAAO;AAAA,QACT;AAAA,MACF,OAAO;AACL,YAAIwnI,cAAc5Q,WAAY,QAAO;AAAA,MACvC;AAEAt0J,MAAAA,QAAO65I;AAAAA,IACT;AAEA,WAAO;AAAA,EACT;AAIA,QAAMmgE,SAAS;AAAA,IACbC,UAAU;AAAA,IAET;AAAA,IAEDD,OAA2B/pL,QAAgBiqL,eAAwB;AACjE,YAAM;AAAA,QAAE54M,MAAAA;AAAAA,QAAMm7B;AAAAA,QAAQo9G;AAAAA,QAAYz5E,OAAAA;AAAAA,MAAM,IAAInwC;AAE5C,UAAIA,OAAOrO,8BAA8B;AAEvC,YAAIm4L,iBAAiB9pL,MAAM,EAAG;AAW9B,cAAMkqL,UAAUlqL,OAAO+0G,KAAK,CAAC;AAAA,UAAE1jI,MAAAA;AAAAA,UAAMm7B,QAAAA;AAAAA,QAAO,MAAM;AAChD,cAAI7a,2BAA2B6a,OAAM,GAAG;AAItC,mBAAOA,QAAO5G,YAAY4G,QAAOn2B,WAAWhF;AAAAA,UAC9C;AACA,cAAIugB,yBAAyB4a,OAAM,GAAG;AAIpC,mBAEGn7B,UAAS2uB,OAAO3uB,QAAQm7B,QAAO5G,YAAa4G,QAAO7D,WAAWt3B;AAAAA,UAEnE;AACA,iBAAO;AAAA,QACT,CAAC;AAKD,YAAI8+D,OAAMpgE,KAAKsuB,aAAa;AAC1B6rL,kBAAQt0D,YAEN5/G,eAAemF,wBAAwB,CAAE,GAAE+uK,QAAQ74M,IAAI,GAAG,CAAA,CAAE,CAC9D;AACA;AAAA,QACF;AAEA,cAAM84M,2BAA2BV,sBAAsBS,OAAO;AAE9D,cAAME,iBAAiBF,QAAQtgE;AAC/B,YAAIwgE,eAAe36L,mBAAmB;AAAA,UAAE+d,UAAUn8B;AAAAA,QAAK,CAAC,GAAG;AACzD,gBAAM2uB,OAAOo6I,oBAAoB,gCAAgC;AAAA,QACnE;AACA,cAAMqJ,eAAe2mC,eAAex9L,uBAAuB;AAAA,UACzDge,MAAMs/K,QAAQ74M;AAAAA,QAChB,CAAC;AACD,cAAMg5M,oBAAoBD,eAAe56L,kBAAkB;AAAA,UACzDgb,UAAU;AAAA,QACZ,CAAC;AACD,YACE6/K,qBACAH,QAAQv4L,2BAA4B,KACpCu4L,QAAQjqM,IAAI,UAAU,EAAEgS,iBACxB;AAGA,gBAAM+N,OAAOo6I,oBACX,sCACF;AAAA,QACF;AAUA,YAAIkwC,mBAA2CtqL;AAC/C,mBAAS;AACP,cAAIsqL,iBAAiB34L,8BAA8B;AACjD,gBAAI24L,iBAAiBj5M,KAAKu0B,SAAU;AACpC0kL,+BAAmBA,iBAAiBrqM,IAAI,QAAQ;AAChD;AAAA,UACF,WAAWqqM,iBAAiB14L,4BAA4B;AACtD,gBAAI04L,iBAAiBj5M,KAAKu0B,SAAU;AACpC0kL,+BAAmBA,iBAAiBrqM,IAAI,QAAQ;AAChD;AAAA,UACF;AAEA,gBAAM,IAAIuH,MACR,8BAA8B8iM,iBAAiBj5M,KAAKmR,IAAI,EAC1D;AAAA,QACF;AAEA,cAAM+nM,eAAeD,iBAAiB34L,+BAClC24L,iBAAiBj5M,KAAKgF,SACtBi0M,iBAAiBj5M,KAAKs3B;AAC1B,cAAM6hL,oBAAoBr6I,OAAM8hF,sBAAsBs4D,YAAY;AAClE,cAAME,UAAUD,qBAAAA,OAAAA,oBAAqBD;AAIrC,cAAMG,uBAAuB9gE,WAAWh4H,yBAAyB;AAAA,UAC/D+W,QAAQt3B;AAAAA,QACV,CAAC;AAID,cAAMstH,iBACJnyF,CAAAA,YACuCk+K;AAEzC,cAAMC,eAAe/gE,WAAWz8H,iBAAiB;AAAA,UAAEwb,QAAQt3B;AAAAA,QAAK,CAAC;AACjEi5M,yBAAiB10D,YAAYi0D,cAAcS,kBAAkBG,OAAO,CAAC;AACrE,YAAI9rF,eAAc,GAAU;AAC1B,cAAInyF,OAAO5G,UAAU;AACnBgkH,uBAAWgM,YAAY,KAAKg1D,aAAa5qL,QAAQwM,OAAOpB,SAAS,CAAC;AAAA,UACpE,OAAO;AACLw+G,uBAAWgM,YAAY,KAAKn1I,KAAKuf,QAAQwM,OAAOpB,SAAS,CAAC;AAAA,UAC5D;AAAA,QACD,WAAUu/K,cAAc;AAEvB3qL,iBAAO41H,YAAY,KAAKi1D,SAAS7qL,MAAM,CAAC;AAAA,QACzC,WACkC,KAAKm2D,UACtCyzD,WAAWp6H,kBAAkB;AAAA,UAAEgb,UAAU;AAAA,QAAS,CAAC,GACnD;AACAo/G,qBAAWgM,YAAY,KAAKz/D,OAAOn2D,MAAM,CAAC;AAAA,QAC5C,WAAW4pH,WAAWh9H,0BAA0B;AAE9Ck+L,2BAAiB,MAAM9qL,QAAQ4pH,UAAU;AAAA,QAC3C,OAAO;AACL5pH,iBAAO41H,YAAY,KAAK31I,IAAI+f,MAAM,CAAC;AAAA,QACrC;AAEA,YAAI+qL,UAAwB/qL,OAAO3uB;AACnC,iBAASq3B,UAAoB1I,QAAQ0I,YAAYwhL,WAAW;AAC1D,gBAAMtgE,cAAalhH,QAAQkhH;AAE3B,cACEA,gBAAesgE,WACfvrF,eAAc,KACdnyF,OAAO5G,UACP;AACAmlL,sBAAUnhE,YAAWv4I;AACrB;AAAA,UACF;AACA05M,oBAAUlB,cAAcjgE,aAAYmhE,OAAO;AAC3CriL,oBAAUkhH;AAAAA,QACZ;AAEA,YAAIvgI;AACJ,cAAM2hM,gBAAgBd,QAAQtgE;AAC9B,YACEn7H,mBAAmBs8L,OAAO,KAC1BC,cAAcp5L,yBAAyB;AAAA,UACrC+W,QAAQuhL,QAAQ74M;AAAAA,UAChBu0B,UAAU;AAAA,QACZ,CAAC,GACD;AACA,gBAAM;AAAA,YAAEvvB;AAAAA,UAAO,IAAI00M;AACnB1hM,UAAAA,WAAU2W,OAAOmwC,MAAM8hF,sBAAsB57I,MAAM;AACnD,cAAIgT,UAAS;AACX0hM,oBAAQ10M,SAAS6+B,qBACf,KACA7rB,UAGAhT,MACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI6nK,kBAA4BgsC;AAChC,YAAIG,qBAAqB5mC,cAAc;AACrCvF,4BAAkB8sC;AAClBD,oBAAUC,cAAc35M;AAAAA,QAC1B;AAEA,cAAM45M,eAAeT,oBACjBt1K,qBACE,KAEAgzB,WAAUuiJ,OAAuB,GACjCviJ,WAAUqiJ,YAAY,CACxB,IACAriJ,WAAUuiJ,OAAO;AAErB,YAAIN,0BAA0B;AAC5B,cAAIe;AACJ,cAAIjB,eAAe;AACjBiB,8BAAkB91K,iBAAiB,MAAM61K,cAAchzK,YAAW,CAAE;AAAA,UACtE,OAAO;AACLizK,8BAAkB5yK,kBAChB,MACAlD,iBAAiB,OAAO61K,cAAchzK,YAAa,CAAA,GACnD7C,iBACE,OACA8yB,WAAUuiJ,OAAO,GACjBt6I,OAAM5I,mBAAkB,CAC1B,CACF;AAAA,UACF;AACA22G,0BAAgBtoB,YACdt9G,kBAAkB,MAAM4yK,iBAAiBH,OAAO,CAClD;AAAA,QACF,OAAO;AACL,cAAII;AACJ,cAAIlB,eAAe;AACjBkB,2BAAe/1K,iBAAiB,MAAM61K,cAAchzK,YAAW,CAAE;AAAA,UACnE,OAAO;AACLkzK,2BAAe7yK,kBACb,MACAlD,iBAAiB,OAAO61K,cAAchzK,YAAa,CAAA,GACnD7C,iBACE,OACA8yB,WAAUuiJ,OAAO,GACjBt6I,OAAM5I,mBAAkB,CAC1B,CACF;AAAA,UACF;AAEA22G,0BAAgBtoB,YACdv/G,sBACE80K,cACAd,oBACInyK,eAAe,IAAI,IACnBi4B,OAAM5I,mBAAoB,GAC9BwjJ,OACF,CACF;AAAA,QACF;AAGA,YAAI1hM,UAAS;AACX,gBAAM+hM,YAAYJ,cAAc35M;AAChC25M,wBAAcp1D,YACZj3G,uBACEF,yBACE2sK,UAAUziL,QACV8B,YAAW,MAAM,GACjB,OACA,IACF,GACA,CAACy9B,WAAU7+C,QAAO,GAAG,GAAG+hM,UAAUhgL,SAAS,GAC3C,KACF,CACF;AAAA,QACF;AAEA;AAAA,MACF;AAIA,UAAI3b,mBAAmB+c,QAAQ;AAAA,QAAEgB,UAAUn8B;AAAAA,MAAK,CAAC,GAAG;AAClD,YAAI,KAAKg6M,WAAW;AAClBrrL,iBAAO41H,YAAY,KAAKy1D,UAAUrrL,MAAM,CAAC;AACzC;AAAA,QACF;AAEA,cAAM;AAAA,UAAEwK;AAAAA,UAAUze;AAAAA,QAAO,IAAIygB;AAK7B,aAAKw9K,QAAQhqL,QAAQ,CAAC;AAEtB,cAAM6oH,MAAM14E,OAAM6hF,iCAAiC3gJ,KAAI;AACvD8+D,QAAAA,OAAM13D,KAAK;AAAA,UAAE6zB,IAAIu8G;AAAAA,QAAI,CAAC;AAEtB,cAAMyiE,MAAsB,CAE1Bp2K,qBAAqB,KAAKgzB,WAAU2gF,GAAG,GAAG,KAAK5oI,IAAI+f,MAAM,CAAC,CAAC;AAG7D,YAAIjU,QAAQ;AACVu/L,cAAI7yM,KAAK4hC,iBAAiB7P,UAAU09B,WAAU2gF,GAAG,GAAG98H,MAAM,CAAC;AAG3D,gBAAM7a,SAAQqoC,mBAAmB+xK,GAAG;AACpC1hE,qBAAWgM,YAAY,KAAKv4I,IAAI2iB,QAAQ9uB,MAAK,CAAC;AAE9C;AAAA,QACF,OAAO;AACL,gBAAMq6M,OAAOp7I,OAAM6hF,iCAAiC3gJ,KAAI;AACxD8+D,UAAAA,OAAM13D,KAAK;AAAA,YAAE6zB,IAAIi/K;AAAAA,UAAK,CAAC;AAEvBD,cAAI7yM,KACFy8B,qBACE,KACAgzB,WAAUqjJ,IAAI,GACdlxK,iBAAiB7P,UAAU09B,WAAU2gF,GAAG,GAAG98H,MAAM,CACnD,GACAm8C,WAAU2gF,GAAG,CACf;AAGA,gBAAM33I,SAAQqoC,mBAAmB+xK,GAAG;AACpC1hE,qBAAWgM,YACTr8G,mBAAmB,CAAC,KAAKl8B,IAAI2iB,QAAQ9uB,MAAK,GAAGg3D,WAAUqjJ,IAAI,CAAC,CAAC,CAC/D;AAEA;AAAA,QACF;AAAA,MACF;AAKA,UAAI3hE,WAAWh9H,uBAAuB;AAAA,QAAEge,MAAMv5B;AAAAA,MAAK,CAAC,GAAG;AACrDy5M,yBAAiB,MAAM9qL,QAAQ4pH,UAAU;AACzC;AAAA,MACF;AAGA,UAAIA,WAAWz8H,iBAAiB;AAAA,QAAEwb,QAAQt3B;AAAAA,MAAK,CAAC,GAAG;AACjDu4I,mBAAWgM,YAAY,KAAKn1I,KAAKuf,QAAQ4pH,WAAWv4I,KAAK+5B,SAAS,CAAC;AACnE;AAAA,MACF;AAGA,UAAIw+G,WAAWh4H,yBAAyB;AAAA,QAAE+W,QAAQt3B;AAAAA,MAAK,CAAC,GAAG;AAIzD,YAAI8+D,OAAMpgE,KAAKsuB,aAAa;AAC1BurH,qBAAWgM,YAET5/G,eAAemF,wBAAwB,CAAE,GAAEyuG,WAAWv4I,IAAI,GAAG,CAAA,CAAE,CACjE;AACA;AAAA,QACF;AACAu4I,mBAAWgM,YACT,KAAKg1D,aAAa5qL,QAAQ4pH,WAAWv4I,KAAK+5B,SAAS,CACrD;AACA;AAAA,MACF;AAGA,UACmC,KAAK+qD,UACtCyzD,WAAWp6H,kBAAkB;AAAA,QAAEgb,UAAU;AAAA,MAAS,CAAC,GACnD;AACAo/G,mBAAWgM,YAAY,KAAKz/D,OAAOn2D,MAAM,CAAC;AAC1C;AAAA,MACF;AAWA,UAGE4pH,WAAWtsH,gBAAgB;AAAA,QAAEsN,MAAMv5B;AAAAA,MAAK,CAAC,KAExCu4I,WAAW96H,iBAAiB;AAAA,QAAE5d,OAAOG;AAAAA,MAAK,CAAC,KAC1Cu4I,WAAWA,WAAW54H,gBAAe,KAEtC44H,WAAW95H,oBAAoB;AAAA,QAAE8a,MAAMv5B;AAAAA,MAAK,CAAC,KAC5Cu4I,WAAWA,WAAW96H,iBAAiB;AAAA,QAAE5d,OAAOs7B;AAAAA,MAAQ,CAAA,KACxDo9G,WAAWA,WAAWA,WAAW54H,qBAEnC44H,WAAW75H,eAAc,KAExB65H,WAAW95H,oBAAoB;AAAA,QAAE8a,MAAMv5B;AAAAA,MAAK,CAAC,KAC5Cu4I,WAAWA,WAAW75H,eAAc,KAGtC65H,WAAW76H,iBACX;AACAiR,eAAO41H,YAAY,KAAK41D,eAAexrL,MAAM,CAAC;AAC9C;AAAA,MACF;AAEA,UAAI4pH,WAAWz4H,8BAA8B;AAE3C6O,eAAO41H,YAAY,KAAKi1D,SAAS7qL,MAAM,CAAC;AAAA,MAC1C,OAAO;AAELA,eAAO41H,YAAY,KAAK31I,IAAI+f,MAAM,CAAC;AAAA,MACrC;AAAA,IACF;AAAA,EACD;AAED,WAAS8qL,iBACP96M,QACAgwB,QACA4pH,YACA;AACA,QAAI55I,OAAMq7M,WAAW;AACnBrrL,aAAO41H,YAAY5lJ,OAAMq7M,UAAUrrL,MAAM,CAAC;AAC1C;AAAA,IACF;AAEA,UAAM;AAAA,MAAEwK;AAAAA,MAAUK,OAAO35B;AAAAA,IAAO,IAAG04I,WAAWv4I;AAE9C,QAAIm5B,aAAa,KAAK;AACpBo/G,iBAAWgM,YAAY5lJ,OAAMqN,IAAI2iB,QAAQ9uB,MAAK,CAAC;AAAA,IACjD,OAAO;AACL,YAAMu6M,gBAAgBjhL,SAAS/nB,MAAM,GAAG,EAAE;AAC1C,UAAIyiB,kBAAkB0C,SAAS6jL,aAAa,GAAG;AAI7Cz7M,QAAAA,OAAMg6M,QAAQhqL,QAAQ,CAAC;AACvB4pH,mBAAWgM,YACTt9G,kBACEmzK,eACAz7M,OAAMiQ,IAAI+f,MAAM,GAChBhwB,OAAMqN,IAAI2iB,QAAQ9uB,MAAK,CACzB,CACF;AAAA,MACF,OAAO;AAELlB,QAAAA,OAAMg6M,QAAQhqL,QAAQ,CAAC;AACvB4pH,mBAAWgM,YACT5lJ,OAAMqN,IACJ2iB,QACAoV,iBACEq2K,eACAz7M,OAAMiQ,IAAI+f,MAAM,GAChB9uB,MACF,CACF,CACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAiDe,WAASw6M,4BACtB37M,OACAg6B,SACA/5B,QACA;AACAD,IAAAA,MAAKq+D,SAASrkC,SAAO3pB,OAAAyE,OAAA,CAAA,GAChBklM,QACA/5M,QAAK;AAAA,MACR27M,UAAU,IAAIhC,mBAAkB;AAAA,IAAE,CAAA,CACnC;AAAA,EACH;;;;;;;;;;;;;ACxmBA,MAAA72I,KAAAv5D,aAAA;AAQsB,QAAA;AAAA,IAPpBy8B;AAAAA,IACAvL,YAAAA;AAAAA,IACAzc;AAAAA,IACAiD;AAAAA,IACAunB;AAAAA,IACAmG;AAAAA,IACAF;AAAAA,EAAwB,IAAAq0B;AAmBX,WAAS84I,uBACtBjjL,QACAkjL,UACAhjL,MACAjD,UACyC;AACzC,QACEiD,KAAKrrB,WAAW,KAChByT,gBAAgB4X,KAAK,CAAC,CAAC,KACvB7a,aAAa6a,KAAK,CAAC,EAAE2E,UAAU;AAAA,MAAE1vB,MAAM;AAAA,IAAY,CAAC,GACpD;AAEA,UAAI8nB,UAAU;AACZ,eAAO+Y,uBACLF,yBAAyB9V,QAAQ8B,YAAW,OAAO,GAAG,OAAO,IAAI,GACjE,CAACohL,UAAUhjL,KAAK,CAAC,EAAE2E,QAAQ,GAC3B,KACF;AAAA,MACF;AAEA,aAAOwI,eAAewC,iBAAiB7P,QAAQ8B,YAAW,OAAO,CAAC,GAAG,CACnEohL,UACAhjL,KAAK,CAAC,EAAE2E,QAAQ,CACjB;AAAA,IACH,OAAO;AAEL,UAAI5H,UAAU;AACZ,eAAO+Y,uBACLF,yBAAyB9V,QAAQ8B,YAAW,MAAM,GAAG,OAAO,IAAI,GAChE,CAACohL,UAAU,GAAGhjL,IAAI,GAClB,KACF;AAAA,MACF;AAEA,aAAOmN,eAAewC,iBAAiB7P,QAAQ8B,YAAW,MAAM,CAAC,GAAG,CAClEohL,UACA,GAAGhjL,IAAI,CACR;AAAA,IACH;AAAA,EACF;;;;;;;;;;;AChEA,MAAAijL,qCAAAvyM,aAAA;AAEA,MAAAwyM,gCAAAxyM,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AACA,MAAA24D,YAAA34D,aAAA;AACA,QAAM;AAAA,IACJ27B;AAAAA,IACAc;AAAAA,IACAkyB,WAAAA;AAAAA,IACAz9B,YAAAA;AAAAA,IACA+N;AAAAA,IACAe;AAAAA,IACA1B;AAAAA,IACAkC;AAAAA,EACD,IAAGh6B,MAAC;AAE4D;AAE/DgE,UAAAA,qBAA6B4nI,UAAAA,SAASoB,mBAAmB,CAAA,CAAE;AAE3DhpI,kCAAgC,SAASioM,sBACvCj8M,OACA;AACAA,MAAAA,MAAKqc,KAAM;AACX,UAAIrc,MAAKsB,KAAKy7B,UAAU;AACtB/8B,QAAAA,MAAKsZ,QAAQwzJ,WAAW9sK,MAAKkQ,IAAI,KAAK,CAAC;AAAA,MACzC;AAAA,IACD;AAAA,EACH;AAEA,QAAM8pB,UAAU4hH,UAAQ,SAACoB,mBAEvB;AAAA,IACA8U,MAAM9xJ,OAAMC,QAAO;AACjB,YAAM;AAAA,QAAEqB,MAAAA;AAAAA,QAAMu4I;AAAAA,MAAW,IAAI75I;AAC7B,UAAI,CAAC65I,WAAWn7H,mBAAmB;AAAA,QAAEpY,QAAQhF;AAAAA,MAAK,CAAC,EAAG;AACtDrB,MAAAA,OAAM+5M,OAAOngE,UAAU;AAAA,IACzB;AAAA,EACF,CAAC;AAED,QAAMqiE,8BAA8BtgE,UAAQ,SAACoB,mBAE1C;AAAA,IACDm/D,SAASn8M,OAAM;AAAA,MAAEo8M;AAAAA,IAAQ,GAAG;AAE1B,YAAMhlI,WAAUp3E,MAAKogE,MAAMgjF,cAAcg5D,OAAO;AAChD,UAAIhlI,YAAWA,SAAQ18C,WAAW3sB,SAASquM,SAAS;AAClDp8M,QAAAA,MAAKogE,MAAM09E,OAAOs+D,OAAO;AAAA,MAC3B;AAAA,IACF;AAAA,EACF,CAAC;AAoDD,QAAMC,eAA4B;AAAA,IAChCpC,QAEEqC,aACA9gG,OACA;AACA,YAAM;AAAA,QAAEp7C,OAAAA;AAAAA,QAAO9+D,MAAAA;AAAAA,MAAK,IAAIg7M;AACxB,YAAM;AAAA,QAAEv/K;AAAAA,QAAU1M;AAAAA,MAAS,IAAI/uB;AAC/B,UAAI,CAACy7B,UAAU;AACb;AAAA,MACF;AAEA,YAAMw/K,OAAOn8I,OAAM8hF,sBAAsB7xH,QAAQ;AACjD,UAAI,CAACksL,MAAM;AACT;AAAA,MACF;AAEA,WAAKX,SAAStuM,IAAI+iB,UAAUksL,MAAM/gG,KAAK;AAAA,IACxC;AAAA,IAEDzkC,KAAkCulI,aAA0B;AAC1D,YAAM;AAAA,QAAEv/K;AAAAA,QAAU1M;AAAAA,MAAU,IAAGisL,YAAYh7M;AAC3C,UAAI,KAAKs6M,SAAS7sM,IAAIshB,QAAQ,GAAG;AAC/B,eAAO8nC,WAAU,KAAKyjJ,SAAS1rM,IAAImgB,QAAQ,CAAC;AAAA,MAC9C;AAEA,UAAI0M,UAAU;AACZ,eAAOo7B,WAAU9nC,QAAQ;AAAA,MAC3B;AAEA,aAAOyX,cAAezX,SAA0BtiB,IAAI;AAAA,IACrD;AAAA,IAaDyuM,4BAAuD;AACrD,YAAMC,YAAYtkJ,WAAU,KAAKukJ,aAAY,CAAE;AAC/C,YAAMrpC,YACJ,KAAK/zE,YAAY,KAAKq9G,kBAClBF,YACAh0K,iBAAiBg0K,WAAW/hL,YAAW,WAAW,CAAC;AAEzD,aAAOuL,eAAe,KAAK9lC,KAAKkmJ,UAAU,gBAAgB,GAAG,CAACgtB,SAAS,CAAC;AAAA,IACzE;AAAA,IAEDnjK,IAAiCosM,aAA0B;AACzD,YAAMG,YAAYtkJ,WAAU,KAAKukJ,aAAY,CAAE;AAC/C,aAAOz2K,eAAe,KAAK9lC,KAAKkmJ,UAAU,cAAc,GAAG,CACzD,KAAKu2D,uBACDpzK,mBAAmB,CAACQ,eAAc,GAAIyyK,SAAS,CAAC,IAChDA,WACJ,KAAK1lI,KAAKulI,WAAW,GACrBtyK,eAAgB,GAChB,GAAI,KAAKs1D,YAAY,KAAKq9G,kBACtB,CAAA,IACA,CAAC3sM,MAAC,MAACg4B,eAAc,CAAgB,CAAC,CAAE,CACzC;AAAA,IACF;AAAA,IAEDq0I,MAEEigC,aACAxjL,MACAjD,UAC6C;AAC7C,YAAM4mL,YAAYtkJ,WAAU,KAAKukJ,aAAY,CAAE;AAC/C,UAAIG;AACJ,UACE/jL,KAAKrrB,WAAW,KAChBuC,YAAEkR,gBAAgB4X,KAAK,CAAC,CAAC,MACxB9oB,MAAAA,MAAEiO,aAAa6a,KAAK,CAAC,EAAE2E,QAAQ,KAC9BztB,YAAE4M,kBAAkBkc,KAAK,CAAC,EAAE2E,QAAQ,IACtC;AACAo/K,mBAAW/jL,KAAK,CAAC,EAAE2E;AAAAA,MACrB,OAAO;AACLo/K,mBAAW7sM,MAAC,MAACi1B,gBAAgBnM,IAAsB;AAAA,MACrD;AAEA,YAAMpoB,OAAOV,MAAC,MAACi2B,eAAe,KAAK9lC,KAAKkmJ,UAAU,cAAc,GAAG,CACjE,KAAKu2D,uBACDpzK,mBAAmB,CAACQ,eAAc,GAAIyyK,SAAS,CAAC,IAChDA,WACJ,KAAK1lI,KAAKulI,WAAW,GACrBtyK,eAAc,GACdh6B,MAAAA,MAAEg4B,eACA,KACG,KAAKs3D,YAAY,KAAKq9G,kBAAkB,IAAC,EAC9C,CAAC,CACF;AACD,UAAI9mL,UAAU;AACZ,eAAO7lB,MAAAA,MAAE4+B,uBAAuBl+B,MAAM,CAACmsM,QAAQ,GAAG,IAAI;AAAA,MACxD;AACA,aAAO52K,eAAev1B,MAAM,CAACmsM,QAAQ,CAAC;AAAA,IACvC;AAAA,IAEDvvM,IAEEgvM,aACAn7M,QACA;AACA,YAAMs7M,YAAYtkJ,WAAU,KAAKukJ,aAAY,CAAE;AAE/C,aAAOz2K,eAAe,KAAK9lC,KAAKkmJ,UAAU,cAAc,GAAG,CACzD,KAAKu2D,uBACDpzK,mBAAmB,CAACQ,kBAAkByyK,SAAS,CAAC,IAChDA,WACJ,KAAK1lI,KAAKulI,WAAW,GACrBn7M,QACA6oC,eAAc,GACdh6B,MAAC,MAACg4B,eAAes0K,YAAYzkC,eAAgB,IAAG,IAAI,CAAC,GACrD,GAAI,KAAKv4E,YAAY,KAAKq9G,kBAAkB,CAAE,IAAG,CAAC3sM,MAAC,MAACg4B,eAAe,CAAC,CAAC,CAAE,CACxE;AAAA,IACF;AAAA,IAEDyzK,eAA4Ca,aAA0B;AACpE,YAAMA,YAAYjyC,oBAChB,sDACF;AAAA,IACD;AAAA,IAED35J,KAEE4rM,aACAxjL,MACA;AACA,aAAO,KAAKujJ,MAAMigC,aAAaxjL,MAAM,KAAK;AAAA,IAC3C;AAAA,IAED+hL,aAEEyB,aACAxjL,MACA;AACA,aAAO,KAAKujJ,MAAMigC,aAAaxjL,MAAM,IAAI;AAAA,IAC1C;AAAA,IAEDstD,OAAoCk2H,aAA0B;AAC5D,UAAIA,YAAYh7M,KAAKy7B,UAAU;AAC7B,eAAOyM,mBAAmB,CACxBvD,eAAe,KAAK9lC,KAAKkmJ,UAAU,eAAe,GAAG,CACnDluF,WAAUmkJ,YAAYh7M,KAAK+uB,QAAQ,CAAC,CACrC,GACD8hD,MAAAA,SAASn3C,WAAWkoC;AAAAA;AAAAA,SAEnB,CACF;AAAA,MACH,OAAO;AACL,eAAOiP,MAAQ,SAACn3C,WAAWkoC;AAAAA;AAAAA;AAAAA,MAG7B;AAAA,IACF;AAAA,EACD;AAED,QAAM45I,mBAAgC;AAAA,IACpC7C,QAEEqC,aACA9gG,OACA;AACA,YAAM;AAAA,QAAEp7C,OAAAA;AAAAA,QAAO9+D,MAAAA;AAAAA,MAAK,IAAIg7M;AACxB,YAAM;AAAA,QAAEv/K;AAAAA,QAAU1M;AAAAA,MAAS,IAAI/uB;AAC/B,UAAI,CAACy7B,UAAU;AACb;AAAA,MACF;AAEA,YAAMw/K,OAAOn8I,OAAM8hF,sBAAsB7xH,QAAQ;AACjD,UAAI,CAACksL,MAAM;AACT;AAAA,MACF;AAEA,WAAKX,SAAStuM,IAAI+iB,UAAUksL,MAAM/gG,KAAK;AAAA,IACxC;AAAA,IAEDzkC,KAAkCulI,aAA0B;AAC1D,YAAM;AAAA,QAAEv/K;AAAAA,QAAU1M;AAAAA,MAAU,IAAGisL,YAAYh7M;AAC3C,UAAI,KAAKs6M,SAAS7sM,IAAIshB,QAAQ,GAAG;AAC/B,eAAO8nC,WAAU,KAAKyjJ,SAAS1rM,IAAImgB,QAAQ,CAAC;AAAA,MAC9C;AAEA,UAAI0M,UAAU;AACZ,eAAOo7B,WAAU9nC,QAAQ;AAAA,MAC3B;AAEA,aAAOyX,cAAezX,SAA0BtiB,IAAI;AAAA,IACrD;AAAA,IAaDyuM,4BAAuD;AACrD,YAAMC,YAAYtkJ,WAAU,KAAKukJ,aAAY,CAAE;AAC/C,YAAMrpC,YACJ,KAAK/zE,YAAY,KAAKq9G,kBAClBF,YACAh0K,iBAAiBg0K,WAAW/hL,YAAW,WAAW,CAAC;AAEzD,aAAOuL,eAAe,KAAK9lC,KAAKkmJ,UAAU,gBAAgB,GAAG,CAACgtB,SAAS,CAAC;AAAA,IACzE;AAAA,IAEDnjK,IAAiCosM,aAA0B;AACzD,aAAO,KAAKx7H,KAAKw7H,WAAW;AAAA,IAC7B;AAAA,IAEDx7H,KAAkCw7H,aAA0B;AAC1D,YAAMl1M,QAAQ,KAAKo1M,0BAA2B;AAC9C,aAAOv2K,eAAe,KAAK9lC,KAAKkmJ,UAAU,KAAK,GAAG,CAChD,KAAKu2D,uBACDpzK,mBAAmB,CAACQ,kBAAkB5iC,KAAK,CAAC,IAC5CA,OACJ,KAAK2vE,KAAKulI,WAAW,GACrBtyK,eAAc,CAAE,CACjB;AAAA,IACF;AAAA,IAED18B,IAEEgvM,aACAn7M,QACA;AACA,YAAMiG,QAAQ,KAAKo1M,0BAA2B;AAE9C,aAAOv2K,eAAe,KAAK9lC,KAAKkmJ,UAAU,KAAK,GAAG,CAChD,KAAKu2D,uBACDpzK,mBAAmB,CAACQ,eAAc,GAAI5iC,KAAK,CAAC,IAC5CA,OACJ,KAAK2vE,KAAKulI,WAAW,GACrBn7M,QACA6oC,eAAc,GACdh6B,MAAAA,MAAEm4B,eAAem0K,YAAYzkC,eAAc,CAAE,CAAC,CAC/C;AAAA,IACF;AAAA,IAED4jC,eAA4Ca,aAA0B;AACpE,YAAMA,YAAYjyC,oBAChB,sDACF;AAAA,IACD;AAAA,IAED35J,KAEE4rM,aACAxjL,MACA;AACA,cAAOikL,GAAAA,8BAAY,SAAC,KAAKj8H,KAAKw7H,WAAW,GAAGtyK,eAAc,GAAIlR,MAAM,KAAK;AAAA,IAC1E;AAAA,IAED+hL,aAEEyB,aACAxjL,MACA;AACA,iBAAOikL,uCACL,KAAKj8H,KAAKw7H,WAAW,GACrBnkJ,WAAUnuB,eAAc,CAAE,GAC1BlR,MACA,IACF;AAAA,IACD;AAAA,IAEDstD,OAAoCk2H,aAA0B;AAC5D,UAAIA,YAAYh7M,KAAKy7B,UAAU;AAC7B,eAAOyM,mBAAmB,CACxBvD,eAAe,KAAK9lC,KAAKkmJ,UAAU,eAAe,GAAG,CACnDluF,WAAUmkJ,YAAYh7M,KAAK+uB,QAAQ,CAAC,CACrC,GACD8hD,MAAAA,SAASn3C,WAAWkoC;AAAAA;AAAAA,SAEnB,CACF;AAAA,MACH,OAAO;AACL,eAAOiP,MAAQ,SAACn3C,WAAWkoC;AAAAA;AAAAA;AAAAA,MAG7B;AAAA,IACF;AAAA,EACD;AAED,QAAM85I,gBAAa3sM,OAAAyE,WACdunM,cAAY;AAAA,IAEftlI,KAA0CulI,aAA0B;AAClE,YAAM;AAAA,QAAEjsL;AAAAA,MAAU,IAAGisL,YAAYh7M;AACjC,UAAI,KAAKs6M,SAAS7sM,IAAIshB,QAAQ,GAAG;AAC/B,eAAO8nC,WAAU,KAAKyjJ,SAAS1rM,IAAImgB,QAAQ,CAAC;AAAA,MAC9C;AAEA,aAAO8nC,WAAU9nC,QAAQ;AAAA,IAC1B;AAAA,IAEDngB,IAAyCosM,aAA0B;AACjE,YAAM;AAAA,QAAEh9G;AAAAA,QAAU29G;AAAAA,MAAY,IAAI;AAClC,YAAM;AAAA,QAAElgL;AAAAA,MAAU,IAAGu/K,YAAYh7M;AACjC,YAAMy1E,OAAO,KAAKA,KAAKulI,WAAW;AAElC,UAAIh2M;AACJ,UAAIg5F,UAAU;AAAA,YAAA49G;AACZ52M,kBAAM42M,eACJD,YAAW,MAAE,OAAAC,eACbz0K,iBAAiB/N,YAAW,UAAU,GAAGA,YAAW,WAAW,CAAC;AAAA,MACpE,OAAO;AAAA,YAAAyiL;AACL72M,iBAASmiC,kBAAgB00K,gBACvBF,YAAW,MAAEE,OAAAA,gBAAIziL,YAAW,QAAQ,GACpCA,YAAW,WAAW,CACxB;AAAA,MACF;AAEA,aAAO+N,iBAAiBniC,QAAQywE,MAAMh6C,QAAQ;AAAA,IAC/C;AAAA,IAEDzvB,IAEEgvM,aACAn7M,QACA;AACA,YAAM;AAAA,QAAE47B;AAAAA,MAAU,IAAGu/K,YAAYh7M;AACjC,YAAMy1E,OAAO,KAAKA,KAAKulI,WAAW;AAElC,aAAOn3K,qBACL,KACAsD,iBAAiBuB,eAAgB,GAAE+sC,MAAMh6C,QAAQ,GACjD57B,MACF;AAAA,IACD;AAAA,IAEDs6M,eAEEa,aACA;AACA,YAAM;AAAA,QAAEv/K;AAAAA,MAAU,IAAGu/K,YAAYh7M;AACjC,YAAMy1E,OAAO,KAAKA,KAAKulI,WAAW;AAElC,aAAO7zK,iBAAiBuB,kBAAkB+sC,MAAMh6C,QAAQ;AAAA,IACzD;AAAA,IAEDrsB,KAEE4rM,aACAxjL,MACA;AACA,cAAOikL,GAAAA,8BAAY,SAAC,KAAK7sM,IAAIosM,WAAW,GAAGtyK,eAAc,GAAIlR,MAAM,KAAK;AAAA,IACzE;AAAA,IAED+hL,aAEEyB,aACAxjL,MACA;AACA,cAAOikL,GAAAA,8BAAY,SAAC,KAAK7sM,IAAIosM,WAAW,GAAGtyK,eAAc,GAAIlR,MAAM,IAAI;AAAA,IACzE;AAAA,EAAC,CACF;AAAA,EAsCc,MAAMskL,cAAc;AAAA,IACjCjpM,YAAY1L,MAA4B;AAAA,UAAA40M;AACtC,YAAMr9M,QAAOyI,KAAK60M;AAElB,WAAKA,aAAat9M;AAClB,WAAK48M,uBACH58M,MAAKghB,cAAc;AAAA,QAAEuc,MAAM;AAAA,MAAc,CAAC,KAAK,CAAC,CAAC90B,KAAK80M;AACxD,WAAKj+G,WACHt/F,MAAK8e,eAAgB,KAErB9e,MAAKsB,KAAKq+B,WACV3/B,MAAKmiB,iCAALniB,MAAKmiB,cAAa;AACpB,WAAKw6L,kBAAkB38M,MAAK4uB,UAAS,KAAM5uB,MAAKkuB,SAAU;AAE1D,WAAK/tB,OAAOsI,KAAKtI;AACjB,WAAKq9M,iBAAaH,sBAGb50M,KAAK+0M,kBAAaH,OAAAA,sBAAK50M,KAAag1M;AACzC,WAAKh1M,OAAOA;AAAAA,IACd;AAAA,IAUAi0M,eAAe;AACb,aAAOvkJ,WAAU,KAAK1vD,KAAKg0M,aAAa,KAAKh0M,KAAKi0M,cAAc;AAAA,IAClE;AAAA,IAEAO,cAAc;AACZ,UAAI,KAAKx0M,KAAK80M,SAAU,QAAOplJ,WAAU,KAAK1vD,KAAK80M,QAAQ;AAC3D,UAAI,KAAK90M,KAAKw0M,aAAa;AACzB,eAAO9kJ,WAAU,KAAK1vD,KAAKw0M,YAAW,CAAE;AAAA,MAC1C;AAAA,IACF;AAAA,IAEAhmM,UAAU;AACR,YAAM;AAAA,QAAEqmM;AAAAA,MAAW,IAAI;AAEvB,UAAI,KAAK70M,KAAKi1M,eAAe;AAC3BJ,mBAAWj/I,SAAS69I,6BAA6B;AAAA,UAC/CE,SAAS,KAAK3zM,KAAKi1M,cAAc3vM;AAAAA,QACnC,CAAC;AAAA,MACH;AAEA,YAAMgwB,UAAU,KAAKy/K,gBACjBR,gBAEE,KAAK78M,KAAK4rL,gBAAgB,cAAc,IACxCswB,eACAS;AAMN9iL,cAAQunH,aAAcvhJ,CAAAA,UAAmB;AACvC,YAAIA,MAAK65I,eAAeyjE,YAAY;AAClC,cAAIt9M,MAAK68B,cAAc,gBAAgB78B,MAAK68B,cAAc,OAAO;AAC/D,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,MACD;AAED,OAAA8+K,GAAAA,mCAAAA,SAA0C2B,YAAYtjL,SAAO3pB,OAAAyE,OAAA;AAAA,QAC3D3U,MAAM,KAAKA;AAAAA,QACXigE,OAAO,KAAKk9I,WAAWl9I;AAAAA,QACvBw8I,sBAAsB,KAAKA;AAAAA,QAC3Bt9G,UAAU,KAAKA;AAAAA,QACfq9G,iBAAiB,KAAKA;AAAAA,QACtBD,cAAc,KAAKA,aAAa/kJ,KAAK,IAAI;AAAA,QACzCslJ,aAAa,KAAKA,YAAYtlJ,KAAK,IAAI;AAAA,QAEvCmjJ,UAAU/8K,QAAQ7tB;AAAAA,MACf6tB,GAAAA,OAAO,CACX;AAAA,IACH;AAAA,EACF;AAAC/pB,QAAAA,UAAAopM;;;;;;;;;;;;AC9kBD,MAAAr6I,KAAAv5D,aAAA;AAAqD,QAAA;AAAA,IAA5C0vD,YAAAA;AAAAA,EAAU,IAAA6J;AAEnB,QAAM46I,kBAAkB;AAExB,QAAMC,kBAAkBA,CAAC;AAAA,IAAEtlJ;AAAAA,EAAsB,MAC/C,CAAC,CAACA,mBACFA,gBAAgBu4B,KAAKh/E,aAAW,eAAe9R,KAAK8R,QAAQ1Q,KAAK,CAAC;AAErD,WAAS08M,eACtBC,YACM;AACN,UAAMx8M,QAEHw8M,WAAW,MAAM,KAAKA;AACzB,QAAIF,gBAAgBt8M,KAAI,GAAG;AACzB;AAAA,IACF;AACA43D,IAAAA,YAAW53D,OAAM,WAAWq8M,eAAe;AAAA,EAC7C;;;;;;;;;;;;;;AClBA,MAAA56I,KAAAv5D,aAAA;AAOsB,QAAA;AAAA,IANpB2V;AAAAA,IACAmM;AAAAA,IACAW;AAAAA,IACAV;AAAAA,IACAC;AAAAA,IACArG;AAAAA,EAAoB,IAAA49C;AAmBf,WAASg7I,yBACdz8M,OACgC;AAChC,WACEgqB,iBAAiBhqB,KAAI,KACrBiqB,wBAAwBjqB,KAAI,KAC5BkqB,kBAAkBlqB,KAAI,KACtB2qB,sBAAsB3qB,KAAI,KAC1B6jB,qBAAqB7jB,KAAI,KACzB6d,0BAA0B7d,KAAI;AAAA,EAElC;AAEO,WAAS08M,4BACdh+M,OACwB;AACxB,WAAO+9M,yBAAyB/9M,MAAKsB,IAAI,GAAG;AAC1CtB,MAAAA,QAAOA,MAAKkQ,IAAI,YAAY;AAAA,IAC9B;AACA,WAAOlQ;AAAAA,EACT;AAEO,WAASi+M,gCACd38M,OACwB;AACxB,WAAOy8M,yBAAyBz8M,KAAI,GAAG;AACrCA,MAAAA,QAAOA,MAAK05B;AAAAA,IACd;AACA,WAAO15B;AAAAA,EACT;;;;;;;;;;;;ACpDO,WAAS48M,uBACdl+M,OACA;AACA,QACEA,MAAKsB,KAAK2Y,WAGN,OAAM;AAEV,YAAAja,MAAA,oBAAA;AAAA;AAAA;AAAA;AAAA,qCAAA;AAAA,IASF;AAAA,EACF;;;;;;;;;;;;;;;;ACrBA,MAAA0gC,QAAAl3B,aAAA;AAEA,MAAA24D,YAAA34D,aAAA;AACA,MAAA20M,uBAAA30M,aAAA;AACA,MAAAuyM,qCAAAvyM,aAAA;AAKA,MAAAwyM,gCAAAxyM,aAAA;AACA,MAAA40M,wBAAA50M,aAAA;AACA,MAAA60M,2CAAA70M,aAAA;AAEA,MAAA80M,KAAA90M,kBAAA;AAkBmC;AAEjC,QAAI+0M,aAAcp+M,CAAAA,UAAe;AAS/B,aAAOA,MAAK4rL,gBAAgB,uBAAuB;AAAA,IACpD;AAAA,EACH;AAEO,WAASyyB,qBACdC,WACAC,oCACA9hJ,OACAz8D,OACA;AACA,UAAMw+M,kBAAmC,oBAAIhoJ,IAAK;AAClD,QAAIioJ;AACJ,eAAW7nI,QAAQna,OAAO;AACxB,UAAIma,KAAKnoD,aAAa;AACpB,cAAM;AAAA,UAAE7gB;AAAAA,QAAK,IAAIgpE,KAAKz1E,KAAKP,IAAIw7B;AAC/B,YAAIR,SAA8B4iL,gBAAgBzuM,IAAInC,IAAI;AAC1D,YAAI,CAACguB,QAAQ;AACX,gBAAM7N,WAAW,CAAC6oD,KAAK3oD,WAAY;AACnC,gBAAMkxE,WAAWvoB,KAAKz1E,KAAKq+B;AAC3B,cAAIk/K,YAAY;AAChB,cAAItiL;AACJ,cACE,CAACmiL,sCACgCH,WAAWp+M,KAAI,KAChD+tB,YACA,CAACoxE,UACD;AAAA,gBAAAw/G;AACAD,wBAAY,CAAC,CAACD;AACd,aAAAE,gBAAAF,iBAAYE,OAAAA,gBAAZF,eAAiB7nI,KAAK3W,MAAMqhF,sBAC1B,GAAGg9D,SAAS,QACd;AACAliL,iBAAKqiL;AAAAA,UACP,OAAO;AACLriL,iBAAKw6C,KAAK3W,MAAMqhF,sBAAsB1zI,IAAI;AAAA,UAC5C;AACAguB,mBAAS;AAAA,YAAEQ;AAAAA,YAAIoD,QAAQ2/D;AAAAA,YAAUj+D,QAAQnT;AAAAA,YAAU2wL;AAAAA,UAAW;AAC9DF,0BAAgBrxM,IAAIS,MAAMguB,MAAM;AAAA,QAClC;AACA,YAAIg7C,KAAK90D,wBAAwB;AAC/B,cAAI80D,KAAKz1E,KAAKi8B,SAAS,OAAO;AAC5B,kBAAM;AAAA,cAAEpC;AAAAA,YAAK,IAAI47C,KAAKz1E,KAAK65B;AAC3B,gBAAI4jL;AACJ,gBAIE5jL,KAAK1tB,WAAW,KAChBuC,MAAAA,MAAEiP,kBAAmB8/L,IAAI5jL,KAAK,CAAC,CAAE,KACjCnrB,MAAAA,MAAEoN,iBAAkB2hM,IAAIA,EAAEthL,QAAS,KACnCshL,EAAE1jL,UAAU5tB,WAAW,KACvBuC,MAAC,MAACsP,iBAAiBy/L,EAAE1jL,UAAU,CAAC,CAAC,KACjCrrB,MAAC,MAACiO,aAAc8gM,IAAIA,EAAEnmL,MAAO,GAC7B;AACAmD,qBAAOijL,QAAQhvM,MAAAA,MAAEmoD,UAAU4mJ,CAAC;AAC5BhjL,qBAAOkjL,iBAAiB;AAAA,YAC1B,OAAO;AACLljL,qBAAOijL,QAAQjoI,KAAK3W,MAAMqhF,sBAAsB,OAAO1zI,IAAI,EAAE;AAAA,YAC/D;AAAA,UACD,WAAUgpE,KAAKz1E,KAAKi8B,SAAS,OAAO;AACnC,kBAAM;AAAA,cAAEtB;AAAAA,YAAQ,IAAG86C,KAAKz1E;AACxB,kBAAM;AAAA,cAAE65B;AAAAA,YAAK,IAAI47C,KAAKz1E,KAAK65B;AAC3B,gBAAI4jL;AACJ,gBAIE5jL,KAAK1tB,WAAW,KAChBuC,MAAAA,MAAE2N,sBAAuBohM,IAAI5jL,KAAK,CAAC,CAAE,KACrCnrB,MAAAA,MAAEoN,iBAAkB2hM,IAAIA,EAAE/jL,UAAW,KACrC+jL,EAAE1jL,UAAU5tB,WAAW,KACvBuC,MAAC,MAACsP,iBAAiBy/L,EAAE1jL,UAAU,CAAC,CAAC,KACjCrrB,MAAC,MAACiO,aAAa8gM,EAAE1jL,UAAU,CAAC,GAAG;AAAA,cAC7BttB,MAAOkuB,OAAO,CAAC,EAAmBluB;AAAAA,YACpC,CAAC,KACDiC,MAAC,MAACiO,aAAc8gM,IAAIA,EAAEnmL,MAAO,GAC7B;AACAmD,qBAAOmjL,QAAQlvM,MAAAA,MAAEmoD,UAAU4mJ,CAAC;AAC5BhjL,qBAAOojL,iBAAiB;AAAA,YAC1B,OAAO;AACLpjL,qBAAOmjL,QAAQnoI,KAAK3W,MAAMqhF,sBAAsB,OAAO1zI,IAAI,EAAE;AAAA,YAC/D;AAAA,UACD,WAAUgpE,KAAKz1E,KAAKi8B,SAAS,UAAU;AACtCxB,mBAAOqjL,WAAWroI,KAAK3W,MAAMqhF,sBAAsB1zI,IAAI;AAAA,UACzD;AAAA,QACF;AACA4wM,wBAAgBrxM,IAAIS,MAAMguB,MAAM;AAAA,MAClC;AAAA,IACF;AACA,WAAO4iL;AAAAA,EACT;AAEO,WAASU,uBACdV,iBACAW,2BACAC,wBACAt/M,QACA;AACA,UAAMu/M,YAA2B,CAAE;AAEnC,UAAMC,cAAc,oBAAIjxM,IAAa;AAErC,eAAW,CAACT,MAAM5M,MAAK,KAAKw9M,iBAAiB;AAW3C,YAAM;AAAA,QAAEh/K,QAAQ2/D;AAAAA,QAAUj+D,QAAQnT;AAAAA,QAAU8wL;AAAAA,QAAOE;AAAAA,MAAM,IAAI/9M;AAC7D,YAAMu+M,mBAAmBV,SAASE;AAClC,YAAM3iL,KAAKvsB,MAAC,MAACmoD,UAAUh3D,OAAMo7B,EAAE;AAE/B,UAAIT;AAEJ,UAAIwjL,2BAA2B;AAC7BxjL,eAAO9rB,YAAEi2B,eAAehmC,OAAMomJ,UAAU,2BAA2B,GAAG,CACpEr2I,YAAE83B,cAAc/5B,IAAI,CAAC,CACtB;AAAA,MACF,WAAUwxM,wBAAwB;AACjCzjL,eAAO9rB,YAAEi2B,eAAej2B,MAAC,MAAC0qB,WAAW,QAAQ,GAAG,CAAC1qB,YAAE83B,cAAc/5B,IAAI,CAAC,CAAC;AAAA,MACzE,WAAW,CAACuxF,UAAU;AACpB,YAAImgH,YAAY1wM,IAAIwtB,GAAGxuB,IAAI,EAAG;AAC9B0xM,oBAAYxjM,IAAIsgB,GAAGxuB,IAAI;AAEvB+tB,eAAO9rB,MAAC,MAAC24B,cACP34B,YAAE0qB,WACAxM,aAEI,CAACwxL,oBACDnB,WAAWt+M,MAAK,KAChB,YACA,SACN,GACA,EACF;AAAA,MACF;AAEA,UAAI67B,MAAM;AACR,YAAI,CAACyjL,wBAAwB;AAC3B,cAAA1B,sBAAAA,SAAe/hL,IAAI;AAAA,QACrB;AACA0jL,kBAAU92M,KAAKypE,MAAAA,SAASg3D,UAAUjmE,UAAU3mC,EAAE,MAAMT,IAAI,EAAE;AAAA,MAC5D;AAAA,IACF;AAEA,WAAO0jL;AAAAA,EACT;AAUO,WAASG,0BACd3lL,SACA;AAGA,UAAM4lL,gBAAgBhkE,UAAQ,SAACoB,mBAAkB3sI,OAAAyE,OAAA,IAAMklB,OAAO,CAAE;AAEhE,UAAM6lL,sBAELxvM,OAAAyE,WACIklB,SAAO;AAAA,MAEV8lL,MAAM9/M,OAAM;AACV,cAAM;AAAA,UAAE2+M;AAAAA,QAAgB,IAAI;AAC5B,cAAMxjL,OAAOn7B,MAAKkQ,IAAI,WAAW;AAEjC,cAAM6vM,sBAAsB,IAAIppJ,IAAIgoJ,eAAe;AACnD,cAAMqB,aAAa,CAAE;AACrB,mBAAWjpI,QAAQ57C,MAAM;AACvB,cAAI,CAAC47C,KAAKnoD,YAAa;AACvB,gBAAM;AAAA,YAAE7gB;AAAAA,UAAK,IAAIgpE,KAAKz1E,KAAKP,IAAIw7B;AAC/BwjL,8BAAoB35H,OAAOr4E,IAAI;AAC/BiyM,qBAAWt3M,KAAKqF,IAAI;AAAA,QACtB;AAIA,YAAI,CAACiyM,WAAWvyM,QAAQ;AACtB;AAAA,QACF;AAKAzN,QAAAA,MAAKkQ,IAAI,MAAM,EAAEmuD,SAASuhJ,eAAavvM,OAAAyE,WAClC,MAAI;AAAA,UACPkrM;AAAAA,QAAU,CAAA,CACX;AACDhgN,QAAAA,MAAKq+D,SAASwhJ,qBAAkBxvM,OAAAyE,OAAA,CAAA,GAC3B,MAAI;AAAA,UACP6pM,iBAAiBoB;AAAAA,QAAmB,CAAA,CACrC;AAID//M,QAAAA,MAAK+7K,QAAQ,MAAM;AAAA,MACrB;AAAA,KACD;AAED,WAAO8jC;AAAAA,EACT;AAWA,QAAMA,qBAAqBF,0BAGzB;AAAA,IACApwK,YAAYvvC,OAAM;AAAA,MAAEk6M;AAAAA,IAAc,GAAG;AACnC,YAAM;AAAA,QAAEyE;AAAAA,QAAiBqB;AAAAA,MAAW,IAAI;AACxC,YAAM;AAAA,QAAE1+M,MAAAA;AAAAA,QAAMu4I;AAAAA,MAAW,IAAI75I;AAE7B,UACE,CAAC65I,WAAWn7H,mBAAmB;AAAA,QAAE2R,UAAU/uB;AAAAA,MAAK,CAAC,KACjD,CAACu4I,WAAWj4H,2BAA2B;AAAA,QAAEyO,UAAU/uB;AAAAA,MAAK,CAAC,GACzD;AACA;AAAA,MACF;AACA,YAAM;AAAA,QAAEyM;AAAAA,MAAM,IAAGzM,MAAKi7B;AACtB,UAAI,CAACoiL,gBAAgB5vM,IAAIhB,IAAI,EAAG;AAChC,UAAIiyM,sBAAAA,WAAYnoL,SAAS9pB,IAAI,EAAG;AAEhC,WAAKisM,OAAOngE,YAAYqgE,aAAa;AAAA,IACvC;AAAA,EACF,CAAC;AAGD,WAAS+F,SACPlyM,MACAqyD,QACA8/I,cACA;AAIA,YACEnhC,SAAA3+G,mBAAA2+G,OAAOn9B,WAAW7zI,IAAI,KACtB,CAACqyD,OAAMi9E,wBAAwBtvI,MAAMmyM,YAAY,GACjD;AAAA,UAAAnhC;AACA3+G,MAAAA,OAAM09E,OAAO/vI,IAAI;AACjBqyD,MAAAA,SAAQA,OAAM3jC;AAAAA,IAChB;AAAA,EACF;AAEO,WAAS0jL,gBACdC,KACAjgN,OACAkgN,eACA;AACA,QAAIA,iBAAiB,EAAClgN,MAAK4rL,mBAAe,QAApB5rL,MAAK4rL,gBAAkB,YAAY,GAAG,QAAOq0B;AACnE,WAAOpwM,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,YAAY,GAAG,CAAC+5D,GAAG,CAAC;AAAA,EAC7D;AAEA,QAAME,mBAAmBX,0BAQvB;AAAA,IACAr6K,iBAAiBtlC,OAAM;AAAA,MAAEG,MAAAA;AAAAA,IAAK,GAAG;AAC/B,YAAM;AAAA,QAAEs6B;AAAAA,QAAUI;AAAAA,QAAMC;AAAAA,MAAO,IAAG96B,MAAKsB;AACvC,UAAIm5B,aAAa,KAAM;AACvB,UAAI,CAACzqB,MAAC,MAACkS,cAAc2Y,IAAI,EAAG;AAE5B,YAAM;AAAA,QAAEykL;AAAAA,QAA2BX;AAAAA,QAAiBqB;AAAAA,MAAW,IAAI;AAEnE,YAAM;AAAA,QAAEjyM;AAAAA,MAAM,IAAG8sB,KAAK0B;AAEtB,UAAI,CAACoiL,gBAAgB5vM,IAAIhB,IAAI,EAAG;AAChC,UAAIiyM,sBAAAA,WAAYnoL,SAAS9pB,IAAI,EAAG;AAIhCkyM,eAAS,KAAKM,SAASxyM,MAAM/N,MAAKogE,OAAO,KAAK8/I,YAAY;AAE1D,UAAIZ,2BAA2B;AAC7B,cAAM;AAAA,UAAE/iL,IAAAA;AAAAA,QAAG,IAAIoiL,gBAAgBzuM,IAAInC,IAAI;AACvC/N,QAAAA,MAAK6lJ,YAAY1zE,eAASn3C,WAAWkoC;AAAAA,+CACIi9I,gBACrCrlL,OACA36B,KACF,CAAC,KAAK6P,MAAAA,MAAEmoD,UAAU57B,GAAE,CAAC;AAAA,OACtB;AACD;AAAA,MACF;AAEA,YAAM;AAAA,QAAEA;AAAAA,QAAIoD,QAAQ2/D;AAAAA,MAAS,IAAIq/G,gBAAgBzuM,IAAInC,IAAI;AAEzD,UAAIuxF,UAAU;AACZt/F,QAAAA,MAAK6lJ,YACH1zE,MAAQ,SAACn3C,WAAWkoC,MAAMi9I,gBACxBrlL,OACA36B,KACF,CAAC,QAAQ6P,MAAAA,MAAEmoD,UAAU,KAAKooJ,QAAQ,CAAC,EACrC;AACA;AAAA,MACF;AAEAvgN,MAAAA,MAAK6lJ,YACH1zE,MAAAA,SAASn3C,WAAWkoC,MAAMlzD,MAAC,MAACmoD,UAAU57B,EAAE,CAAC,QAAQ4jL,gBAC/CrlL,OACA36B,KACF,CAAC,GACH;AAAA,IACF;AAAA,EACF,CAAC;AASD,WAAS0xI,cAAc1xI,OAAY4N,MAAc;AAC/C,WAAOiC,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,eAAe,GAAG,CACvDr2I,MAAAA,MAAE83B,cAAc,IAAI/5B,IAAI,EAAE,CAAC,CAC5B;AAAA,EACH;AAEA,WAASumI,eAAen0I,OAAY4N,MAAc;AAChD,QAEE,CAAC5N,MAAK4rL,gBAAgB,gBAAgB,GACtC;AACAr0K,cAAQC,KACN,gEACF;AACA,aAAO3H,MAAC,MAACwnD,mBAAoB;AAAA,IAC/B;AACA,WAAOxnD,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,gBAAgB,GAAG,CACxDr2I,MAAAA,MAAE83B,cAAc,IAAI/5B,IAAI,EAAE,CAAC,CAC5B;AAAA,EACH;AAEA,WAASyyM,8BACPx+G,MACAy+G,mCACA;AACA,QAAIA,kCAAmC,QAAOz+G;AAC9C,WAAOhyF,MAAC,MAACy4B,iBAAiBu5D,MAAMhyF,MAAC,MAAC0qB,WAAW,GAAG,CAAC;AAAA,EACnD;AAEA,WAASgmL,aAIP3nM,IAAY;AACZ,WAAO,SAAuCkX,QAAQ;AACpD,aAAOjgB,YAAEspB,SAASvgB,GAAG0jI,MAAM,MAAMphH,SAAgB,GAAGpL,OAAO3uB,IAAI;AAAA,IAChE;AAAA,EACH;AAEA,QAAMq/M,yBACJ;AAAA,IACE1G,QAAQhqL,QAAQurF,OAAO;AACrB,YAAM;AAAA,QAAEp7C,OAAAA;AAAAA,MAAM,IAAInwC;AAClB,YAAM;AAAA,QAAE3pB;AAAAA,MAAQ,IAAG2pB,OAAO3uB;AAE1B,YAAMi7M,OAAOn8I,OAAM8hF,sBAAsB57I,MAAM;AAC/C,UAAI,CAACi2M,MAAM;AACT;AAAA,MACF;AAEA,WAAKX,SAAStuM,IAAIhH,QAAQi2M,MAAM/gG,KAAK;AAAA,IACtC;AAAA,IAEDolG,SAAS3wL,QAAQ;AACf,YAAM;AAAA,QAAE3pB;AAAAA,MAAQ,IAAG2pB,OAAO3uB;AAE1B,UAAI,KAAKs6M,SAAS7sM,IAAIzI,MAAM,GAAG;AAC7B,eAAO0J,MAAC,MAACmoD,UAAU,KAAKyjJ,SAAS1rM,IAAI5J,MAAM,CAAC;AAAA,MAC9C;AAEA,aAAO0J,MAAC,MAACmoD,UAAU7xD,MAAM;AAAA,IAC1B;AAAA,IAED4J,KAAKwwM,aAAa,SAAUzwL,QAAQ;AAClC,YAAM;AAAA,QACJswL;AAAAA,QACA5B;AAAAA,QACAx+M,MAAAA;AAAAA,QACA+/M;AAAAA,QACAO;AAAAA,MACF,IAAI;AACJ,YAAMnxK,cAAcrf,OAAO3uB,KAAK+uB;AAChC,YAAM;AAAA,QAAEtiB;AAAAA,MAAM,IAAGuhC,YAAY/S;AAC7B,YAAM;AAAA,QACJA;AAAAA,QACAoD,QAAQ2/D;AAAAA,QACRj+D,QAAQnT;AAAAA,QACRkxL;AAAAA,QACAJ;AAAAA,QACAE;AAAAA,MACF,IAAIP,gBAAgBzuM,IAAInC,IAAI;AAC5B,YAAM2xM,mBAAmBV,SAASE;AAElC,YAAM2B,UAAWtkL,CAAAA,QACfvsB,MAAAA,MAAEspB,SAAStpB,MAAC,MAACmoD,UAAU57B,GAAE,GAAG+S,WAAW;AAEzC,UAAIgwD,UAAU;AAGZ2gH,iBAASM,SAASxyM,MAAMkiB,OAAOmwC,OAAO8/I,YAAY;AAElD,YAAqC,CAAC3B,WAAWp+M,KAAI,GAAG;AAGtD,gBAAMimJ,aACJl4H,YAAY,CAACwxL,mBACT,gCACA;AAEN,iBAAO1vM,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAUD,UAAU,GAAG,CAClD,KAAKw6D,SAAS3wL,MAAM,GACpBjgB,MAAC,MAACmoD,UAAUooJ,QAAQ,GACpBM,QAAQtkL,EAAE,CAAC,CACZ;AAAA,QACH;AAEA,cAAMqkL,WAAW,KAAKA,SAAS3wL,MAAM;AACrC,cAAM6wL,YACJ9wM,MAAC,MAACiO,aAAa2iM,QAAQ,KAAKA,SAAS7yM,SAASwyM,SAASxyM;AAEzD,YAAI,CAACmgB,UAAU;AACb,cAAI4yL,WAAW;AACb,mBAAON,8BACLK,QAAQtkL,EAAE,GACVkkL,iCACF;AAAA,UACF;AAEA,iBAAOD,8BACLxwM,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CACnDr2I,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBK,UACAC,QAAQtkL,EAAE,CAAC,CACZ,GACDkkL,iCACF;AAAA,QACF;AAEA,YAAIzB,OAAO;AACT,cAAI8B,WAAW;AACb,mBAAO9wM,MAAC,MAACi2B,eAAe46K,QAAQ7B,KAAK,GAAG,CAAC4B,QAAQ,CAAC;AAAA,UACpD;AACA,iBAAO5wM,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,oBAAoB,GAAG,CAC5Dr2I,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBK,UACAC,QAAQ7B,KAAK,CAAC,CACf;AAAA,QACH;AAEA,YAAIE,OAAO;AACT,gBAAM/lM,MAAMnJ,MAAAA,MAAEwnD,mBAAoB;AAClC,cAAIspJ,UAAW,QAAO3nM;AACtB,iBAAOnJ,MAAC,MAACw5B,mBAAmB,CAC1Bx5B,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CACnDr2I,MAAC,MAACmoD,UAAUooJ,QAAQ,GACpBK,QAAQ,CACT,GACDznM,GAAG,CACJ;AAAA,QACH;AAEA,YAAI2nM,UAAW,QAAOD,QAAQtkL,EAAE;AAChC,eAAOvsB,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CAC1Dr2I,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBK,UACAC,QAAQtkL,EAAE,CAAC,CACZ;AAAA,MACH;AAEA,UAAIrO,UAAU;AACZ,YAAIwxL,kBAAkB;AACpB,cAAI,CAACV,OAAO;AACV,mBAAOhvM,YAAEw5B,mBAAmB,CAC1B,KAAKo3K,SAAS3wL,MAAM,GACpBqkH,eAAen0I,OAAM4N,IAAI,CAAC,CAC3B;AAAA,UACH;AACA,cAAqC,CAACwwM,WAAWp+M,KAAI,GAAG;AACtD,mBAAO6P,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,sBAAsB,GAAG,CAC9D,KAAKu6D,SAAS3wL,MAAM,GACpB4wL,QAAQtkL,EAAE,CAAC,CACZ;AAAA,UACH;AACA,iBAAOvsB,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,oBAAoB,GAAG,CAC5Dr2I,YAAEmoD,UAAU57B,EAAE,GACd,KAAKqkL,SAAS3wL,MAAM,GACpB4wL,QAAQ7B,KAAK,CAAC,CACf;AAAA,QACH;AACA,YAAqC,CAACT,WAAWp+M,KAAI,GAAG;AACtD,iBAAO6P,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,uBAAuB,GAAG,CAC/D,KAAKu6D,SAAS3wL,MAAM,GACpBjgB,MAAC,MAACmoD,UAAU57B,EAAE,GACdskL,QAAQzB,QAAQ,CAAC,CAClB;AAAA,QACH;AACA,eAAOpvM,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CAC1Dr2I,YAAEmoD,UAAU57B,EAAE,GACd,KAAKqkL,SAAS3wL,MAAM,GACpB4wL,QAAQzB,QAAQ,CAAC,CAClB;AAAA,MACH;AACA,UAAoCb,WAAWp+M,KAAI,GAAG;AACpD,eAAO6P,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,uBAAuB,GAAG,CAC/Dw6D,QAAQtkL,EAAE,GACV,KAAKqkL,SAAS3wL,MAAM,CAAC,CACtB;AAAA,MACH;AAEA,aAAOjgB,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,sBAAsB,GAAG,CAC9D,KAAKu6D,SAAS3wL,MAAM,GACpB4wL,QAAQtkL,EAAE,CAAC,CACZ;AAAA,IACH,CAAC;AAAA,IAEDu+K,SAAS7qL,QAAQ;AACf,WAAKgqL,QAAQhqL,QAAQ,CAAC;AAEtB,aAAOjgB,MAAC,MAACi2B,eACPj2B,MAAC,MAACy4B,iBAAiB,KAAKv4B,IAAI+f,MAAM,GAAGjgB,MAAC,MAAC0qB,WAAW,MAAM,CAAC,GACzD,CAAC,KAAKkmL,SAAS3wL,MAAM,CAAC,CACxB;AAAA,IACD;AAAA,IAED3iB,KAAKozM,aAAa,SAAUzwL,QAAQ9uB,QAAO;AACzC,YAAM;AAAA,QACJo/M;AAAAA,QACA5B;AAAAA,QACAx+M,MAAAA;AAAAA,QACAsgN;AAAAA,MACF,IAAI;AACJ,YAAMnxK,cAAcrf,OAAO3uB,KAAK+uB;AAChC,YAAM;AAAA,QAAEtiB;AAAAA,MAAM,IAAGuhC,YAAY/S;AAC7B,YAAM;AAAA,QACJA;AAAAA,QACAoD,QAAQ2/D;AAAAA,QACRj+D,QAAQnT;AAAAA,QACRgxL;AAAAA,QACAF;AAAAA,MACF,IAAIL,gBAAgBzuM,IAAInC,IAAI;AAC5B,YAAM2xM,mBAAmBV,SAASE;AAElC,YAAM2B,UAAWtkL,CAAAA,QACfvsB,MAAAA,MAAEspB,SAAStpB,MAAC,MAACmoD,UAAU57B,GAAE,GAAG+S,WAAW;AAEzC,UAAIgwD,UAAU;AACZ,YAAqC,CAACi/G,WAAWp+M,KAAI,GAAG;AACtD,gBAAMimJ,aACJl4H,YAAY,CAACwxL,mBACT,gCACA;AAEN,iBAAO1vM,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAUD,UAAU,GAAG,CAClD,KAAKw6D,SAAS3wL,MAAM,GACpBjgB,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBM,QAAQtkL,EAAE,GACVp7B,MAAK,CACN;AAAA,QACH;AAEA,cAAMy/M,WAAW,KAAKA,SAAS3wL,MAAM;AACrC,cAAM6wL,YACJ9wM,MAAC,MAACiO,aAAa2iM,QAAQ,KAAKA,SAAS7yM,SAASwyM,SAASxyM;AAEzD,YAAImgB,YAAY,CAACgxL,OAAO;AACtB,gBAAM/lM,MAAM04H,cAAc1xI,OAAM4N,IAAI;AACpC,cAAI+yM,UAAW,QAAO9wM,MAAAA,MAAEw5B,mBAAmB,CAACroC,QAAOgY,GAAG,CAAC;AACvD,iBAAOnJ,YAAEw5B,mBAAmB,CAC1BroC,QACA6O,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CACnDr2I,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBK,QAAQ,CACT,GACD/uE,cAAc1xI,OAAM4N,IAAI,CAAC,CAC1B;AAAA,QACH;AAEA,YAAImxM,OAAO;AACT,cAAI4B,WAAW;AACb,mBAAO9wM,YAAEi2B,eAAej2B,MAAAA,MAAEmoD,UAAU+mJ,KAAK,GAAG,CAAC0B,UAAUz/M,MAAK,CAAC;AAAA,UAC/D;AACA,iBAAO6O,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,oBAAoB,GAAG,CAC5Dr2I,MAAC,MAACmoD,UAAUooJ,QAAQ,GACpBM,QAAQ3B,KAAK,GACb0B,UACAz/M,MAAK,CACN;AAAA,QACH;AACA,eAAO6O,MAAAA,MAAEm1B,qBACP,KACAq7K,8BACEK,QAAQtkL,EAAE,GACVkkL,iCACF,GACAK,YACI3/M,SACA6O,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,kBAAkB,GAAG,CACnDr2I,MAAC,MAACmoD,UAAUooJ,QAAQ,GACpBK,UACAz/M,MAAK,CACN,CACP;AAAA,MACF;AACA,UAAI+sB,UAAU;AACZ,YAAIgxL,OAAO;AACT,cAAqC,CAACX,WAAWp+M,KAAI,GAAG;AACtD,mBAAO6P,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,sBAAsB,GAAG,CAC9D,KAAKu6D,SAAS3wL,MAAM,GACpB4wL,QAAQtkL,EAAE,GACVp7B,MAAK,CACN;AAAA,UACH;AACA,iBAAO6O,MAAC,MAACi2B,eAAe9lC,MAAKkmJ,UAAU,oBAAoB,GAAG,CAC5Dr2I,MAAAA,MAAEmoD,UAAU57B,EAAE,GACdskL,QAAQ3B,KAAK,GACb,KAAK0B,SAAS3wL,MAAM,GACpB9uB,MAAK,CACN;AAAA,QACH;AACA,eAAO6O,MAAAA,MAAEw5B,mBAAmB,CAC1B,KAAKo3K,SAAS3wL,MAAM,GACpB9uB,QACA0wI,cAAc1xI,OAAM4N,IAAI,CAAC,CAC1B;AAAA,MACH;AAEA,UAAoCwwM,WAAWp+M,KAAI,GAAG;AACpD,eAAO6P,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,uBAAuB,GAAG,CAC/Dw6D,QAAQtkL,EAAE,GACV,KAAKqkL,SAAS3wL,MAAM,GACpB9uB,MAAK,CACN;AAAA,MACH;AAEA,aAAO6O,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,sBAAsB,GAAG,CAC9D,KAAKu6D,SAAS3wL,MAAM,GACpB4wL,QAAQtkL,EAAE,GACVp7B,MAAK,CACN;AAAA,IACH,CAAC;AAAA,IAEDs6M,eAAexrL,QAAQ;AACrB,YAAM;AAAA,QACJswL;AAAAA,QACA5B;AAAAA,QACAx+M,MAAAA;AAAAA,QACAsgN;AAAAA,MACF,IAAI;AACJ,YAAMnxK,cAAcrf,OAAO3uB,KAAK+uB;AAChC,YAAM;AAAA,QAAEtiB;AAAAA,MAAM,IAAGuhC,YAAY/S;AAC7B,YAAM;AAAA,QACJA;AAAAA,QACAoD,QAAQ2/D;AAAAA,QACRj+D,QAAQnT;AAAAA,QACRgxL;AAAAA,MACF,IAAIP,gBAAgBzuM,IAAInC,IAAI;AAE5B,YAAM8yM,UAAWtkL,CAAAA,QACfvsB,MAAAA,MAAEspB,SAAStpB,MAAC,MAACmoD,UAAU57B,GAAE,GAAG+S,WAAW;AAEzC,UAAqC,CAACivK,WAAWp+M,KAAI,GAAG;AACtD,YAAIm/F,UAAU;AACZ,cAAI;AAGF,gBAAIgqC,SAASnpI,MAAKkmJ,UAChB,uCACF;AAAA,UACD,SAACnyE,SAAM;AACN,kBAAM,IAAIz8D,MACR,6HAEF;AAAA,UACF;AACA,iBAAOzH,YAAEy4B,iBACPz4B,MAAAA,MAAEi2B,eAAeqjG,QAAQ,CACvB,KAAKs3E,SAAS3wL,MAAM,GACpBjgB,MAAAA,MAAEmoD,UAAUooJ,QAAQ,GACpBM,QAAQtkL,EAAE,CAAC,CACZ,GACDvsB,MAAC,MAAC0qB,WAAW,OAAO,CACtB;AAAA,QACF;AAEA,eAAO1qB,YAAEy4B,iBACPz4B,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,iCAAiC,GAAG,CAClE,KAAKu6D,SAAS3wL,MAAM,GACpB4wL,QAAQtkL,EAAE,CAAC,CACZ,GACDvsB,YAAE0qB,WAAW,OAAO,CACtB;AAAA,MACF;AAEA,UAAIxM,YAAY,CAACgxL,OAAO;AACtB,eAAOlvM,MAAC,MAACy4B,iBACPz4B,MAAC,MAACw5B,mBAAmB,CAEnBvZ,OAAO3uB,KAAKgF,QACZurI,cAAc1xI,OAAM4N,IAAI,CAAC,CAC1B,GACDiC,MAAAA,MAAE0qB,WAAW,GAAG,CAClB;AAAA,MACF;AAEA,UAAI4kE,YAAY,CAACpxE,UAAU;AACzB,cAAM6yL,UAAU,KAAK7wM,IAAI+f,MAAM;AAC/B,YACE,CAACwwL,qCACD,CAACzwM,MAAAA,MAAEoN,iBAAiB2jM,OAAO,GAC3B;AACA,iBAAOA;AAAAA,QACT;AACA,cAAMjoE,MAAMioE,QAAQ1lL,UAAUmiC,IAAK;AACnCujJ,gBAAQ1lL,UAAU3yB,KAAKypE,MAAAA,SAASn3C,WAAWkoC,aAAa41E,GAAG,MAAM;AACjE,eAAO9oI,MAAAA,MAAEy4B,iBACPz4B,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,UAAU,GAAG,CAAC06D,OAAO,CAAC,GACtD/wM,MAAC,MAAC0qB,WAAW,GAAG,CAClB;AAAA,MACF;AAEA,YAAMsmL,UAAU,KAAK1zM,IAAI2iB,QAAQjgB,MAAAA,MAAE0qB,WAAW,GAAG,CAAC;AAClD,UACE,CAAC1qB,MAAC,MAACoN,iBAAiB4jM,OAAO,KAC3B,CAAChxM,MAAAA,MAAEiO,aAAa+iM,QAAQ3lL,UAAU2lL,QAAQ3lL,UAAU5tB,SAAS,CAAC,GAAG;AAAA,QAC/DM,MAAM;AAAA,MACR,CAAC,GACD;AACA,cAAMkiB,OAAOo6I,oBACX,iIAEF;AAAA,MACF;AAIA,UAAIvxI;AACJ,UACE9oB,YAAE0O,mBAAmBsiM,QAAQpoL,QAAQ;AAAA,QAAEmE,UAAU;AAAA,MAAO,CAAA,KACxD/sB,MAAC,MAACiO,aAAa+iM,QAAQpoL,OAAOvI,QAAQ,KACtC2wL,QAAQpoL,OAAOvI,SAAStiB,SAAS,QACjC;AACA+qB,eAAO,CAELkoL,QAAQpoL,OAAOtyB,QACf0J,MAAC,MAACi1B,gBAEC+7K,QAAQ3lL,UAA6B3oB,MAAM,GAAG,EAAE,CACnD,GACAsuM,QAAQ3lL,UAAU,CAAC,CAAC;AAAA,MAExB,OAAO;AACLvC,eAAO,CACLkoL,QAAQpoL,QACR5oB,MAAAA,MAAEi1B,gBAEC+7K,QAAQ3lL,UAA6B3oB,MAAM,GAAG,EAAE,CACnD,CAAC;AAAA,MAEL;AAEA,aAAO1C,MAAAA,MAAEy4B,iBACPz4B,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,UAAU,GAAGvtH,IAAI,GACjD9oB,MAAAA,MAAE0qB,WAAW,GAAG,CAClB;AAAA,IACD;AAAA,IAEDhqB,KAAKuf,QAAQ6I,MAA0C;AAErD,WAAKmhL,QAAQhqL,QAAQ,CAAC;AAEtB,iBAAO8sL,uCAAa,KAAK7sM,IAAI+f,MAAM,GAAG,KAAK2wL,SAAS3wL,MAAM,GAAG6I,MAAM,KAAK;AAAA,IACzE;AAAA,IAED+hL,aAAa5qL,QAAQ6I,MAA0C;AAC7D,WAAKmhL,QAAQhqL,QAAQ,CAAC;AAEtB,iBAAO8sL,uCAAa,KAAK7sM,IAAI+f,MAAM,GAAG,KAAK2wL,SAAS3wL,MAAM,GAAG6I,MAAM,IAAI;AAAA,IACxE;AAAA,IAEDstD,SAAS;AACP,YAAM,IAAI3uE,MACR,qEACF;AAAA,IACF;AAAA,EACD;AAEH,QAAMwpM,0BAAqD;AAAA,IACzD/wM,IAAI+f,QAAQ;AACV,YAAM;AAAA,QAAE0uL;AAAAA,QAAiBx+M,MAAAA;AAAAA,MAAK,IAAI;AAClC,YAAM;AAAA,QAAEmG;AAAAA,MAAQ,IAAG2pB,OAAO3uB;AAC1B,YAAM;AAAA,QAAEyM;AAAAA,MAAK,IAAKkiB,OAAO3uB,KAAK+uB,SAA2BkM;AAEzD,aAAO41C,MAAQ,SAACn3C,kCAAkC;AAAA,QAChDkmL,MAAM/gN,MAAKkmJ,UAAU,4BAA4B;AAAA,QACjD86D,KAAKnxM,MAAC,MAACmoD,UAAU7xD,MAAM;AAAA,QACvB86M,MAAMpxM,MAAAA,MAAEmoD,UAAUwmJ,gBAAgBzuM,IAAInC,IAAI,EAAEwuB,EAAE;AAAA,MAChD,CAAC;AAAA,IACF;AAAA,IAEDjvB,MAAM;AAEJ,YAAM,IAAImK,MAAM,yDAAyD;AAAA,IAC1E;AAAA,IAEDqjM,SAAS7qL,QAAQ;AACf,aAAOjgB,MAAC,MAACi2B,eACPj2B,YAAEy4B,iBAAiB,KAAKv4B,IAAI+f,MAAM,GAAGjgB,MAAC,MAAC0qB,WAAW,MAAM,CAAC,GAEzD,CAAC1qB,YAAEmoD,UAAUloC,OAAO3uB,KAAKgF,MAAsB,CAAC,CAClD;AAAA,IACD;AAAA,IAEDg1M,UAAUrrL,QAAQ;AAChB,aAAO,KAAK/f,IAAI+f,MAAM;AAAA,IACvB;AAAA,IAEDwrL,eAAexrL,QAAQ;AACrB,aAAO,KAAK/f,IAAI+f,MAAM;AAAA,IACvB;AAAA,IAEDvf,KAAKuf,QAAQ6I,MAAM;AACjB,aAAO9oB,MAAC,MAACi2B,eAAe,KAAK/1B,IAAI+f,MAAM,GAAG6I,IAAI;AAAA,IAC/C;AAAA,IAED+hL,aAAa5qL,QAAQ6I,MAAM;AACzB,aAAO9oB,MAAC,MAAC4+B,uBAAuB,KAAK1+B,IAAI+f,MAAM,GAAG6I,MAAM,IAAI;AAAA,IAC7D;AAAA,IAEDstD,SAAS;AACP,YAAM,IAAI3uE,MACR,qEACF;AAAA,IACF;AAAA,EACD;AAEM,WAAS4pM,2BACdvoE,KACA94I,OACA2+M,iBACA;AAAA,IACEW;AAAAA,IACAmB;AAAAA,IACAvG;AAAAA,IACAgG;AAAAA,EAMD,GACDjgN,QACA;AACA,QAAI,CAAC0+M,gBAAgB9vH,KAAM;AAE3B,UAAM1zD,OAAOn7B,MAAKkQ,IAAI,MAAM;AAC5B,UAAM6tB,UAAUuhL,4BACZ2B,0BACAN;AAEJ,KAAAhF,GAAAA,mCAAAA,SAA8CxgL,MAAM0kL,oBAAkBxvM,OAAAyE,OAAA;AAAA,MACpE6pM;AAAAA,MACA4B,UAAUznE;AAAAA,MACV34I,MAAMF;AAAAA,IAAK,GACR89B,SAAO;AAAA,MACVm8K;AAAAA,MACAuG;AAAAA,MACAP;AAAAA,IAAY,CAAA,CACb;AACD/kL,SAAKkjC,SAASiiJ,kBAAkB;AAAA,MAC9B3B;AAAAA,MACA4B,UAAUznE;AAAAA,MACV34I,MAAMF;AAAAA,MACNq/M;AAAAA,MACAY;AAAAA,IACF,CAAC;AAAA,EACH;AAEA,WAASoB,2BACPxoE,KACA/hE,MACA4nI,iBACA;AACA,UAAM;AAAA,MAAEpiL;AAAAA,IAAG,IAAIoiL,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AACxD,UAAM5M,SAAQ41E,KAAKz1E,KAAKH,SAAS41E,KAAK3W,MAAM5I,mBAAoB;AAEhE,WAAO+pJ,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,8BACO41E,GAAG,KAAK9oI,MAAAA,MAAEmoD,UAAU57B,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,iBAIpCp7B,MAAK;AAAA;AAAA,OAGlB41E,IACF;AAAA,EACF;AAEA,WAASyqI,kCACP1oE,KACA/hE,MACA4nI,iBACA1+M,QACA;AACA,UAAM;AAAA,MAAEs8B;AAAAA,IAAG,IAAIoiL,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AACxD,UAAM5M,SAAQ41E,KAAKz1E,KAAKH,SAAS41E,KAAK3W,MAAM5I,mBAAoB;AAE7B;AACjC,UAAI,CAACv3D,OAAM8rL,gBAAgB,2BAA2B,GAAG;AACvD,eAAOw1B,oBACLpvI,MAAQ,SAACg3D,UAAUjmE,MAAMlzD,MAAAA,MAAEmoD,UAAU57B,EAAE,CAAC,QAAQu8G,GAAG;AAAA;AAAA;AAAA;AAAA,mBAIxC33I,MAAK;AAAA,aAEhB41E,IACF;AAAA,MACF;AAAA,IACF;AAEA,UAAMuyD,SAASrpI,OAAMomJ,UAAU,2BAA2B;AAC1D,WAAOo7D,WACLF,oBACEvxM,MAAC,MAAC82B,oBACA92B,MAAC,MAACi2B,eAAeqjG,QAAQ,CACvBt5H,MAAAA,MAAEg6B,kBACFy3K,WAAWzxM,MAAAA,MAAEmoD,UAAU57B,EAAE,GAAGw6C,KAAKz1E,KAAKP,GAAG,GACTw9M,WAAWt+M,MAAK,IAC5CkB,SACAgxE,MAAAA,SAASn3C,WAAWkoC,+BAA+B/hE,MAAK,IAAI,CACjE,CACH,GACA41E,IACF,GACAA,KAAKz1E,IACP;AAAA,EACF;AAEA,WAASogN,gCACP3qI,MACA4nI,iBACA8B,mCACA;AACA,UAAMnxK,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAE7D,UAAM5M,SAAQs/M,oCACV1pI,KAAKz1E,KAAKH,QACVgxE,MAAAA,SAASn3C,WAAWkoC;AAAAA,aACb6T,KAAKz1E,KAAKH,SAAS6O,MAAC,MAACwnD,mBAAoB,CAAA;AAAA;AAGpD,WAAO+pJ,oBACLvxM,MAAC,MAACw6B,oBAAoB,OAAO,CAC3Bx6B,MAAAA,MAAE06B,mBAAmB16B,MAAAA,MAAEmoD,UAAU7oB,YAAY/S,EAAE,GAAGp7B,MAAK,CAAC,CACzD,GACD41E,IACF;AAAA,EACF;AAEmC;AAEjC,QAAI4qI,qCAAqC,SACvC5qI,MACA4nI,iBACA;AACA,YAAMrvK,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,YAAM;AAAA,QAAEwuB;AAAAA,QAAIyiL;AAAAA,QAAOE;AAAAA,QAAOL;AAAAA,MAAU,IAAIvvK;AACxC,YAAMowK,mBAAmBV,SAASE;AAElC,UAAI,CAACnoI,KAAK3oD,WAAU,MAAOywL,aAAa,CAACa,kBAAmB;AAE5D,UAAIA,kBAAkB;AACpBf,wBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,UACduvK,WAAW;AAAA,QAAI,CAAA,CAChB;AAED,eAAO0C,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,gBACXlzD,MAAC,MAACmoD,UAAU57B,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,mBAIZyiL,QAAQA,MAAMjxM,OAAOgpE,KAAK3W,MAAM5I,oBAAoB;AAAA,mBACpD0nJ,QAAQA,MAAMnxM,OAAOgpE,KAAK3W,MAAM5I,mBAAoB,CAAA;AAAA;AAAA,WAG/Duf,IACF;AAAA,MACF;AAEA,YAAM51E,SAAQ41E,KAAKz1E,KAAKH,SAAS41E,KAAK3W,MAAM5I,mBAAoB;AAChE,aAAO+pJ,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,cACXlzD,MAAC,MAACmoD,UAAU57B,EAAE,CAAC;AAAA;AAAA;AAAA;AAAA,mBAIVp7B,MAAK;AAAA;AAAA,SAGlB41E,IACF;AAAA,IACD;AAAA,EACH;AAEA,WAAS6qI,4BACP9oE,KACA/hE,MACA4nI,iBACA;AACA,UAAMrvK,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,UAAM;AAAA,MAAEqxM;AAAAA,MAAU7iL;AAAAA,MAAIyiL;AAAAA,MAAOE;AAAAA,MAAOL;AAAAA,IAAU,IAAIvvK;AAClD,QAAIuvK,UAAW;AAEf,QAAIO,UAAU;AACZ,aAAOmC,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,gCACO41E,GAAG,KAAKv8G,EAAE;AAAA;AAAA;AAAA;AAAA,mBAIvB6iL,SAASrxM,IAAI;AAAA;AAAA,SAG1BgpE,IACF;AAAA,IACF;AACA,UAAM2oI,mBAAmBV,SAASE;AAClC,QAAIQ,kBAAkB;AACpBf,sBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,QACduvK,WAAW;AAAA,MAAI,CAAA,CAChB;AAED,aAAO0C,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,gCACO41E,GAAG,KAAKv8G,EAAE;AAAA;AAAA;AAAA;AAAA,iBAIzByiL,QAAQA,MAAMjxM,OAAOgpE,KAAK3W,MAAM5I,oBAAoB;AAAA,iBACpD0nJ,QAAQA,MAAMnxM,OAAOgpE,KAAK3W,MAAM5I,mBAAoB,CAAA;AAAA;AAAA,SAG/Duf,IACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS8qI,mCACP/oE,KACA/hE,MACA4nI,iBACA1+M,QACA;AACA,UAAMqvC,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAE7D,QAAIuhC,YAAYuvK,UAAW;AAE3B,QAAqC,CAACN,WAAWt+M,MAAK,GAAG;AACvD,YAAMy/M,mBAAmBpwK,YAAY0vK,SAAS1vK,YAAY4vK;AAC1D,UAAIQ,kBAAkB;AACpB,eAAOoC,mCACLhpE,KACA/hE,MACA4nI,iBACA1+M,MACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO8hN,yCACLjpE,KACA/hE,MACA4nI,iBACA1+M,MACF;AAAA,EACF;AAEA,WAAS6hN,mCACPhpE,KACA/hE,MACA4nI,iBACA1+M,QACA;AACA,UAAMqvC,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,UAAM;AAAA,MAAEwuB;AAAAA,MAAIyiL;AAAAA,MAAOE;AAAAA,IAAM,IAAI5vK;AAE7BqvK,oBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,MACduvK,WAAW;AAAA,IAAI,CAAA,CAChB;AAEkC;AACjC,UAAI,CAAC5+M,OAAM8rL,gBAAgB,2BAA2B,GAAG;AACvD,eAAOw1B,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,YACf3mC,EAAE,QAAQu8G,GAAG;AAAA,mBACNkmE,QAAQA,MAAMjxM,OAAOgpE,KAAK3W,MAAM5I,oBAAoB;AAAA,mBACpD0nJ,QAAQA,MAAMnxM,OAAOgpE,KAAK3W,MAAM5I,mBAAoB,CAAA;AAAA;AAAA,WAG/Duf,IACF;AAAA,MACF;AAAA,IACF;AAEA,UAAMuyD,SAASrpI,OAAMomJ,UAAU,2BAA2B;AAC1D,WAAOo7D,WACLF,oBACEpvI,MAAAA,SAASg3D,UAAUjmE,MAAMomE,MAAM;AAAA,QAC7Bt5H,MAAC,MAACg6B,gBAAgB;AAAA,QAClBh6B,MAAC,MAACmoD,UAAU57B,EAAE,CAAC;AAAA;AAAA,eAERyiL,QAAQA,MAAMjxM,OAAOgpE,KAAK3W,MAAM5I,oBAAoB;AAAA,eACpD0nJ,QAAQA,MAAMnxM,OAAOgpE,KAAK3W,MAAM5I,mBAAoB,CAAA;AAAA;AAAA,QAG7Duf,IACF,GACAA,KAAKz1E,IACP;AAAA,EACF;AAEA,WAASygN,yCACPjpE,KACA/hE,MACA4nI,iBACA1+M,QACA;AACA,UAAMqvC,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,UAAM;AAAA,MAAEwuB;AAAAA,IAAG,IAAI+S;AAEoB;AACjC,UAAI,CAACrvC,OAAM8rL,gBAAgB,4BAA4B,GAAG;AACxD,eAAOw1B,oBACLpvI,MAAQ,SAACg3D,UAAUjmE,MAAM3mC,EAAE,QAAQu8G,GAAG,KACtC/hE,IACF;AAAA,MACF;AAAA,IACF;AAEA,UAAMuyD,SAASrpI,OAAMomJ,UAAU,4BAA4B;AAC3D,WAAOk7D,oBACLpvI,MAAQ,SAACg3D,UAAUjmE,MAAMomE,MAAM;AAAA,QAC3Bt5H,MAAC,MAACg6B,gBAAgB;AAAA,QAClBh6B,MAAC,MAACmoD,UAAU57B,EAAE,CAAC;AAAA,QAEnBw6C,IACF;AAAA,EACF;AAEA,WAASirI,0BACPlpE,KACA/hE,MACA;AACA,UAAM;AAAA,MAAEh2E,KAAAA;AAAAA,MAAKg8B;AAAAA,IAAU,IAAGg6C,KAAKz1E;AAC/B,UAAMH,SAAQ41E,KAAKz1E,KAAKH,SAAS41E,KAAK3W,MAAM5I,mBAAoB;AAEhE,WAAO+pJ,oBACLvxM,MAAC,MAAC82B,oBACA92B,MAAAA,MAAEm1B,qBACA,KACAn1B,MAAC,MAACy4B,iBAAiBqwG,KAAK/3I,MAAKg8B,YAAY/sB,MAAC,MAAC+d,UAAUhtB,IAAG,CAAC,GACzDI,MACF,CACF,GACA41E,IACF;AAAA,EACF;AAEA,WAASkrI,yBACPnpE,KACA/hE,MACA92E,QACA;AACA,UAAM;AAAA,MAAEc,KAAAA;AAAAA,MAAKg8B;AAAAA,IAAU,IAAGg6C,KAAKz1E;AAC/B,UAAMH,SAAQ41E,KAAKz1E,KAAKH,SAAS41E,KAAK3W,MAAM5I,mBAAoB;AAEhE,WAAO+pJ,oBACLvxM,MAAC,MAAC82B,oBACA92B,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,gBAAgB,GAAG,CAClDvN,KACA/7G,YAAY/sB,MAAAA,MAAE+d,UAAUhtB,IAAG,IACvBA,OACAiP,MAAAA,MAAE83B,cAAe/mC,KAAqBgN,IAAI,GAC9C5M,MAAK,CACN,CACH,GACA41E,IACF;AAAA,EACF;AAEA,WAASmrI,kCACPppE,KACA/hE,MACA92E,QACA0+M,iBACA;AACA,UAAMrvK,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,UAAM;AAAA,MAAEwuB;AAAAA,MAAI6iL;AAAAA,MAAUJ;AAAAA,MAAOE;AAAAA,MAAOL;AAAAA,IAAU,IAAIvvK;AAElD,QAAIuvK,UAAW;AAEf,UAAMa,mBAAmBV,SAASE;AAClC,QAAIQ,kBAAkB;AACpBf,sBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,QACduvK,WAAW;AAAA,MAAI,CAAA,CAChB;AAED,aAAO0C,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,gCACO41E,GAAG,KAAKv8G,EAAE;AAAA;AAAA;AAAA;AAAA,iBAIzByiL,QAAQA,MAAMjxM,OAAOgpE,KAAK3W,MAAM5I,oBAAoB;AAAA,iBACpD0nJ,QAAQA,MAAMnxM,OAAOgpE,KAAK3W,MAAM5I,mBAAoB,CAAA;AAAA;AAAA,SAG/Duf,IACF;AAAA,IACF;AAEA,WAAOwqI,oBACLpvI,MAAAA,SAASg3D,UAAUjmE;AAAAA,8BACO41E,GAAG,KAAKv8G,EAAE;AAAA;AAAA;AAAA;AAAA,iBAIvB6iL,SAASrxM,IAAI;AAAA;AAAA,OAG1BgpE,IACF;AAAA,EACF;AAEA,WAASorI,8BACPhiN,OACA42E,MACA4nI,iBACAD,qCAAqC,OACrC;AACA,UAAMpvK,cAAcqvK,gBAAgBzuM,IAAI6mE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,IAAI;AAC7D,UAAM;AAAA,MACJwuB;AAAAA,MACA6iL;AAAAA,MACAJ;AAAAA,MACAE;AAAAA,MACAD;AAAAA,MACAE;AAAAA,MACAx/K,QAAQ2/D;AAAAA,IACV,IAAIhwD;AACJ,UAAM;AAAA,MAAErT;AAAAA,MAAQd;AAAAA,MAAMe;AAAAA,MAAWC,OAAAA;AAAAA,IAAO,IAAG46C,KAAKz1E;AAChD,UAAM8gN,WAAWpD,SAAS/iL,OAAOxuB,WAAW;AAC5C,UAAM40M,WAAWnD,SAASjjL,OAAOxuB,SAAS;AAE1C,QAAK20M,YAAYnD,kBAAoBoD,YAAYlD,gBAAiB;AAChER,sBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,QACduvK,WAAW;AAAA,MAAI,CAAA,CAChB;AACD,aAAO;AAAA,IACT;AAEA,QACmCN,WAAWp+M,KAAI,MAC/CiiN,YAAYC,aACb,CAAC3D,oCACD;AACA,YAAMt+I,SAAQ2W,KAAK7mE,IAAI,MAAM,EAAEkwD;AAC/B,YAAMkiJ,UAAUliJ,OAAMqhF,sBAAsB,MAAM;AAClD,YAAMxhJ,SAA0B;AAAA,QAC9Bg0K,SAASquC;AAAAA,QACTC,eAAe,CAAA;AAAA,MAChB;AAEDxrI,WAAK1Y,SAASmkJ,oBAAoBviN,MAAK;AACvC,UAAIA,OAAMsiN,cAAc90M,QAAQ;AAC9B,cAAMg1M,cAAcriJ,OAAMqhF,sBAAsB,WAAW;AAC3DrhF,QAAAA,OAAM13D,KAAK;AAAA,UACT6zB,IAAIkmL;AAAAA,UACJ3mL,MAAMq2C,MAAAA,SAASn3C,WAAWkoC;AAAAA,QAC5B,CAAC;AACD,mBAAWljE,SAAQC,OAAMsiN,eAAe;AACtCviN,UAAAA,MAAK6lJ,YAAY71I,MAAAA,MAAEmoD,UAAUsqJ,WAAW,CAAC;AAAA,QAC3C;AAAA,MACF;AAEAxmL,aAAOxC,QAAQzpB,MAAAA,MAAEmoD,UAAUmqJ,OAAO,CAAC;AAAA,IACrC;AAEA,QAAII,SAAStD;AAEb,QAAIgD,UAAU;AACZzD,sBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,QACd2vK,gBAAgB;AAAA,QAChBJ,WAAW;AAAA,MAAI,CAAA,CAChB;AACD6D,eAAS1D;AAAAA,IACV,WAAUqD,UAAU;AACnB1D,sBAAgBrxM,IAAIypE,KAAKz1E,KAAKP,IAAIw7B,GAAGxuB,MAAIsC,OAAAyE,WACpCw6B,aAAW;AAAA,QACd6vK,gBAAgB;AAAA,QAChBN,WAAW;AAAA,MAAI,CAAA,CAChB;AACD6D,eAASxD;AAAAA,IACX,WAAW5/G,YAAY,CAACo/G,oCAAoC;AAC1DgE,eAASnmL;AAAAA,IACX;AAEA,WAAOglL,oBACLvxM,MAAC,MAACq3B,oBACAr3B,MAAAA,MAAEmoD,UAAUuqJ,MAAM,GAElBzmL,QACAd,MACAe,WACAC,MACF,GACA46C,IACF;AAAA,EACF;AAWA,QAAMyrI,qBAAqB5mE,UAAQ,SAACoB,mBAAqC;AAAA,IACvEv1G,WAAWznC,OAAMC,QAAO;AACtB,UAAIA,OAAMsiN,iBAAiBviN,MAAKsB,KAAKyM,SAAS,aAAa;AACzD9N,QAAAA,OAAMsiN,cAAc75M,KAAK1I,KAAI;AAAA,MAC/B;AAAA,IACD;AAAA,IACDqqC,gBAAgBrqC,OAAM;AAEpB,YAAM;AAAA,QAAEsB,MAAAA;AAAAA,MAAK,IAAItB;AACjB,UAAIsB,MAAKm5B,aAAa,UAAU;AAC9B,cAAMgD,YAAWwgL,GAAAA,yCAAAA,iCAAgC38M,MAAKm8B,QAAQ;AAC9D,YAAIztB,YAAEsP,iBAAiBme,QAAQ,GAAG;AAChCz9B,UAAAA,MAAK6lJ,YAAY71I,MAAAA,MAAEm4B,eAAe,IAAI,CAAC;AAAA,QACzC;AAAA,MACF;AAAA,IACD;AAAA,IACD0pH,eAAe7xJ,OAAMC,QAAO;AAC1BA,MAAAA,OAAM0iN,gBAAgB;AACtB3iN,MAAAA,MAAK6lJ,YAAY71I,MAAC,MAACmoD,UAAUl4D,OAAMg0K,OAAO,CAAC;AAAA,IAC5C;AAAA,IACD/mI,aAAaltC,OAAM;AACjB,YAAM;AAAA,QAAEsB,MAAAA;AAAAA,QAAM8+D,OAAAA;AAAAA,MAAM,IAAIpgE;AAGxB,UAAIsB,MAAK27B,KAAKlvB,SAAS,SAASzM,MAAK+uB,SAAStiB,SAAS,UAAU;AAC/D/N,QAAAA,MAAK6lJ,YAAYzlF,OAAM5I,oBAAoB;AAAA,MAC7C;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAMorJ,yBAAqE;AAAA,IACzExlE,qBAAqBp9I,OAAMC,QAAO;AAChC,UACED,MAAKogE,MAAMi9E,wBAAwBr9I,MAAKsB,KAAKyM,MAAM9N,OAAMigN,YAAY,GACrE;AACAjgN,QAAAA,OAAM0iN,gBAAgB;AACtB3iN,QAAAA,MAAKsB,KAAKyM,OAAO9N,OAAMg0K,QAAQlmK;AAAAA,MACjC;AAAA,IACF;AAAA,EACD;AAED,WAAS80M,mBACP7iN,OACA84I,KACAgqE,iBACA;AAAA,QAAAC;AACA,UAAM9iN,SAA0B;AAAA,MAC9Bg0K,SAASn7B;AAAAA,MACT6pE,eAAe;AAAA,MACfzC,cAAc4C;AAAAA,IACf;AACD,QAAI,CAAC9iN,MAAKkuB,YAAY;AAEpBluB,MAAAA,MAAKq+D,SAASmkJ,oBAAoBviN,MAAK;AAAA,IACzC;AAGA,QACE6iN,mBAAmB,SAAIC,iBACvB9iN,OAAMg0K,YAAN8uC,QAAAA,eAAeh1M,QACf9N,OAAMg0K,QAAQlmK,SAAS+0M,gBAAgB/0M,MACvC;AACA/N,MAAAA,MAAKq+D,SAASukJ,wBAAwB3iN,MAAK;AAAA,IAC7C;AAEA,WAAOA,OAAM0iN;AAAAA,EACf;AASA,WAASK,eAAe;AAAA,IAAEjiN,KAAAA;AAAAA,IAAKg8B;AAAAA,EAA0B,GAAG;AAC1D,QAAIh8B,KAAI0R,SAAS,cAAc;AAC7B,aAAO,CAACsqB,aAAah8B,KAAIgN,SAAS,UAAUhN,KAAIgN,SAAS;AAAA,IAC3D;AACA,QAAIhN,KAAI0R,SAAS,iBAAiB;AAChC,aAAO1R,KAAII,UAAU,UAAUJ,KAAII,UAAU;AAAA,IAC/C;AACA,WAAO;AAAA,EACT;AAaA,WAASogN,oBAAsCjgN,OAASy1E,MAAgB;AACtE/mE,UAAC,MAACwpD,uBAAuBl4D,OAAMy1E,KAAKz1E,IAAI;AACxC0O,UAAC,MAACupD,qBAAqBj4D,OAAMy1E,KAAKz1E,IAAI;AACtC,WAAOA;AAAAA,EACT;AAEA,WAASmgN,WAA6BngN,OAAS6nJ,UAAkB;AAC/D7nJ,IAAAA,MAAK0T,QAAQm0I,SAASn0I;AACtB1T,IAAAA,MAAK4T,MAAMi0I,SAASj0I;AACpB5T,IAAAA,MAAKsT,MAAMu0I,SAASv0I;AACpB,WAAOtT;AAAAA,EACT;AAyBO,WAAS2hN,qBACdnqE,KACAykE,UACA3gJ,OACA+hJ,iBACAx+M,OACA+iN,sBACAxE,oCACA+B,mCACAjD,eACAsF,iBACA;AAAA,QAAAr/I,MAAAsU;AACA,QAAIorI,gBAAiC;AACrC,QAAIC;AACJ,UAAMC,cAA6B,CAAE;AACrC,UAAMC,gBAAyC,CAAE;AACjD,QAAIC,8BAA8B;AAElC,UAAMC,kBAA2C,CAAE;AACnD,QAAIC,mBAAiD;AAErD,UAAMxG,cAAcjtM,MAAC,MAACiO,aAAas/L,QAAQ,IACvC,MAAMA,WACN,MAAM;AAAA,UAAAmG;AACJ,OAAAA,kBAAAN,0BAAcM,kBAAdN,iBACExmJ,MAAM,CAAC,EAAEwD,MAAM6hF,iCAAiCs7D,QAAQ;AAC1D,aAAO6F;AAAAA,IACR;AAEL,UAAMO,2BAAuBlgJ,OAC3Bq1E,eAAGr1E,OACH7G,MAAM,CAAC,EAAEwD,MAAMqhF,uBAAsBqhE,mBAAAA,OAAAA,SAAAA,gBAAiB/0M,SAAQ,OAAO;AACvE,KAAAgqE,QAAA+gE,QAAG,OAAA/gE,QAAH+gE,MAAQ9oI,MAAC,MAACmoD,UAAU2qJ,eAAe;AAEnC,eAAW/rI,QAAQna,OAAO;AACxB,UAAIma,KAAKj1D,mBAAmB;AAC1Bw8L,WAAGJ,uBAAuBnnI,IAAI;AAAA,MAChC;AAGA,YAAMuoB,WAAW,EAACtvF,MAAAA,MAAEmS,iBAAa,QAAfnS,YAAEmS,cAAgB40D,KAAKz1E,IAAI,MAAKy1E,KAAKz1E,KAAKq+B;AAC5D,YAAMikL,aAAa,CAACtkH;AACpB,YAAM1wE,YAAYmoD,KAAKnoD,UAAW;AAClC,YAAMi1L,WAAW,CAACj1L;AAClB,YAAMk1L,UAAU/sI,KAAK3oD,WAAY;AACjC,YAAMF,WAAW,CAAC41L;AAClB,YAAM3hM,gBAAgB40D,KAAK50D,iCAAL40D,KAAK50D,cAAiB;AAE5C,UAAIm9E,SAAU6jH,kBAAuC;AAErD,UAAI7jH,YAAapxE,YAAYU,aAAczM,eAAe;AACxD,YAAIi7L,6BAAc;AAAA,UAChBE,YAAYvmI;AAAAA,UACZymI;AAAAA,UACAr9M,MAAMA;AAAAA,UACNu9M,eAAeoF;AAAAA,UACf7F;AAAAA,UACAP,eAAe;AACbyG,6BAA6C;AAC7C,gBAAI7jH,YAAYn9E,eAAe;AAC7B,qBAAOwhM;AAAAA,YACT,OAAO;AACL,qBAAO3zM,MAAC,MAACy4B,iBACPk7K,yBACA3zM,MAAC,MAAC0qB,WAAW,WAAW,CAC1B;AAAA,YACF;AAAA,UACF;AAAA,QACD,CAAA,EAAEzjB,QAAS;AAEZ,cAAM8sM,WAAWlB,mBACf9rI,MACA4sI,yBACAb,eACF;AACA,YAAIiB,UAAU;AACZZ,2BAA6C;AAAA,QAC/C;AAAA,MACF;AAEAI,oCAA8B;AAO9B,cAAQ,MAAI;AAAA,QACV,KAAKphM,eAAe;AAClB,gBAAM6hM,YAAYjtI,KAAKz1E,KAAK65B;AAG5B,cAAI6oL,UAAUv2M,WAAW,KAAKuC,MAAAA,MAAE2N,sBAAsBqmM,UAAU,CAAC,CAAC,GAAG;AACnEX,wBAAY36M,KAAK64M,oBAAoByC,UAAU,CAAC,GAAGjtI,IAAI,CAAC;AAAA,UAC1D,OAAO;AACLssI,wBAAY36M,KACVsH,MAAAA,MAAE6pD,iBACAsY,eAASg3D,UAAUjmE,eAAe8gJ,SAAS,SAC3CjtI,KAAKz1E,IACP,CACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,MAAKg+F,YACH1wE,aACAk1L,WACApF;AACA2E,sBAAY36M,KACV44M,2BAA2BtxM,YAAEmoD,UAAU2gF,GAAG,GAAG/hE,MAAM4nI,eAAe,CACpE;AACA;AAAA,QACF,MAAKr/G,YACH1wE,aACAk1L,WACA,CAACpF;AACD,cAAqC,CAACH,WAAWp+M,KAAI,GAAG;AACtDkjN,wBAAY36M,KACVi5M,mCAAmC5qI,MAAM4nI,eAAe,CAC1D;AAAA,UACF,OAAO;AACL0E,wBAAY36M,KACVg5M,gCACE3qI,MACA4nI,iBACA8B,iCACF,CACF;AAAA,UACF;AACA;AAAA,QACF,MAAKnhH,YAAYukH,YAAYC,WAAWZ;AAMtC,cAAI,CAACF,eAAejsI,KAAKz1E,IAAI,GAAG;AAC9B+hN,wBAAY36M,KAAKs5M,0BAA0BhyM,MAAC,MAACmoD,UAAU2gF,GAAG,GAAG/hE,IAAI,CAAC;AAClE;AAAA,UACF;AAAA,QAEF,MAAKuoB,YAAYukH,YAAYC,WAAW,CAACZ;AACvCG,sBAAY36M,KACVu5M,yBAAyBjyM,YAAEmoD,UAAU2gF,GAAG,GAAG/hE,MAAM52E,KAAI,CACvD;AACA;AAAA,QACF,MAAKyjN,cACHh1L,aACAk1L,WACApF;AACA4E,wBAAc56M,KACZ44M,2BAA2BtxM,MAAC,MAACg6B,eAAgB,GAAE+sC,MAAM4nI,eAAe,CACtE;AACA;AAAA,QACF,MAAKiF,cACHh1L,aACAk1L,WACA,CAACpF;AACD4E,wBAAc56M,KACZ84M,kCACExxM,YAAEg6B,eAAc,GAChB+sC,MACA4nI,iBACAx+M,KACF,CACF;AACA;AAAA,QACF,MAAKyjN,cACHh1L,aACAV,YACAwwL;AACA4E,wBAAc7pL,QACZmoL,4BACE5xM,MAAC,MAACg6B,eAAgB,GAClB+sC,MACA4nI,eACF,CACF;AACA6E,0BAAgB96M,KACdy5M,8BACEhiN,OACA42E,MACA4nI,iBACAD,kCACF,CACF;AACA;AAAA,QACF,MAAKkF,cACHh1L,aACAV,YACA,CAACwwL;AACD4E,wBAAc7pL,QACZooL,mCACE7xM,YAAEg6B,eAAc,GAChB+sC,MACA4nI,iBACAx+M,KACF,CACF;AACAqjN,0BAAgB96M,KACdy5M,8BACEhiN,OACA42E,MACA4nI,iBACAD,kCACF,CACF;AACA;AAAA,QACF,MAAKp/G,YACH1wE,aACAV,YACA,CAACwwL;AACD,cAAqC,CAACH,WAAWp+M,KAAI,GAAG;AACtDkjN,wBAAY5pL,QAEVkoL,mCAAmC5qI,MAAM4nI,eAAe,CAC1D;AAAA,UACF;AACA6E,0BAAgB96M,KACdy5M,8BACEhiN,OACA42E,MACA4nI,iBACAD,kCACF,CACF;AACA;AAAA,QACF,MAAKp/G,YACH1wE,aACAV,YACAwwL;AACA2E,sBAAY5pL,QACVyoL,kCACElyM,MAAAA,MAAEmoD,UAAU2gF,GAAG,GACf/hE,MACA52E,OACAw+M,eACF,CACF;AACA6E,0BAAgB96M,KACdy5M,8BACEhiN,OACA42E,MACA4nI,iBACAD,kCACF,CACF;AACA;AAAA,QACF,MAAKkF,cAAcC,YAAYC,WAAWZ;AACxCI,wBAAc56M,KAAKs5M,0BAA0BhyM,MAAAA,MAAEg6B,eAAc,GAAI+sC,IAAI,CAAC;AACtE;AAAA,QACF,MAAK6sI,cAAcC,YAAYC,WAAW,CAACZ;AACzCK,wCAA8B;AAC9BD,wBAAc56M,KACZu5M,yBAAyBjyM,MAAC,MAACg6B,eAAgB,GAAE+sC,MAAM52E,KAAI,CACzD;AACA;AAAA,QACF;AACE,gBAAM,IAAIsX,MAAM,cAAc;AAAA,MAClC;AAAA,IACF;AAEA,QAAI0rM,gBAA4C,KAAIL,mBAAmB,MAAM;AAC3EW,yBAAmBzzM,MAAC,MAAC82B,oBACnB92B,YAAEm1B,qBACA,KACAn1B,MAAAA,MAAEmoD,UAAUwrJ,uBAAuB,GACnC3zM,MAAAA,MAAEmoD,UAAU2qJ,eAAe,CAC7B,CACF;AAAA,IACF;AAEA,WAAO;AAAA,MACLO,aAAaA,YAAY7pL,OAAO6/B,OAAO;AAAA,MACvCiqJ,eAAeA,cAAc9pL,OAAO6/B,OAAO;AAAA,MAC3CkqJ;AAAAA,MACAC,iBAAiBA,gBAAgBhqL,OAAO6/B,OAAO;AAAA,MAC/CoqJ;AAAAA,MACAQ,UAAUjkN,OAAyB;AACjC,mBAAW+2E,QAAQna,OAAO;AAMxBma,eAAKz1E,KAAKg3D,kBAAkB;AAC5Bye,eAAK+uE,OAAQ;AAAA,QACf;AAEA,YAAIs9D,gBAAgB;AAClBpjN,UAAAA,MAAKogE,MAAM13D,KAAK;AAAA,YAAE6zB,IAAIvsB,MAAAA,MAAEmoD,UAAUirJ,cAAc;AAAA,UAAE,CAAC;AACnDpjN,UAAAA,MAAKsN,IACH,cACA0C,MAAAA,MAAEm1B,qBAAqB,KAAKi+K,gBAAgBpjN,MAAKsB,KAAKi9B,UAAU,CAClE;AAAA,QACF;AAEA,YAAI4kL,qBAAqC;AACvC,cAAInjN,MAAKmgB,qBAAqB;AAC5BngB,YAAAA,MAAKogE,MAAM13D,KAAK;AAAA,cAAE6zB,IAAIu8G;AAAAA,YAAI,CAAC;AAC3B94I,YAAAA,MAAK6lJ,YACH71I,MAAAA,MAAEm1B,qBAAqB,KAAKn1B,MAAAA,MAAEmoD,UAAU2gF,GAAG,GAAG94I,MAAKsB,IAAI,CACzD;AAAA,UACF,OAAO;AACL,gBAAIwhN,mBAAmB,MAAM;AAE3B9iN,cAAAA,MAAKsB,KAAKi7B,KAAKu8G;AAAAA,YACjB;AACA,gBAAI2qE,oBAAoB,MAAM;AAC5BzjN,cAAAA,MAAKogE,MAAM13D,KAAK;AAAA,gBAAE6zB,IAAIonL;AAAAA,cAAwB,CAAC;AAAA,YACjD;AAAA,UACF;AAAA,QACF;AAEA,eAAO3jN;AAAAA,MACT;AAAA,IACD;AAAA,EACH;;;;;;;;;;;;;;;AC5zDA,MAAA0gC,QAAAl3B,aAAA;AAEA,MAAA24D,YAAA34D,aAAA;AAEA,QAAM06M,iBAAiBtoE,UAAQ,SAACoB,mBAE9B;AAAA,IACA8U,MAAM9xJ,OAAM;AACV,YAAM;AAAA,QAAEsB,MAAAA;AAAAA,QAAMu4I;AAAAA,MAAW,IAAI75I;AAC7B,UAAI65I,WAAWz8H,iBAAiB;AAAA,QAAEwb,QAAQt3B;AAAAA,MAAK,CAAC,GAAG;AACjD,aAAKoH,KAAKmxI,UAAU;AAAA,MACtB;AAAA,IACF;AAAA,EACF,CAAC;AAED,QAAM0wB,mBAA8C;AAAA,IAClD,kCACEvqK,OACA;AACAA,MAAAA,MAAKqc,KAAM;AAAA,IACZ;AAAA,IAED+gI,qBAAqBp9I,OAA8B;AAAA,MAAEogE,OAAAA;AAAAA,IAAM,GAAG;AAC5D,UAAIA,OAAM4kF,cAAchlJ,MAAKsB,KAAKyM,IAAI,GAAG;AACvCqyD,QAAAA,OAAM09E,OAAO99I,MAAKsB,KAAKyM,IAAI;AAC3B/N,QAAAA,MAAKqc,KAAM;AAAA,MACb;AAAA,IACF;AAAA,EACD;AAOD,WAAS8nM,eACPnkN,OACAC,QACA;AACA,QACEA,OAAMmkN,gBACNnkN,OAAMmkN,iBAAiBpkN,MAAKogE,MAAMwgF,WAAW5gJ,MAAKsB,KAAKyM,IAAI,GAC3D;AACA,YAAMm+H,oBAAoBjsI,OAAME,KAAKkmJ,UAAU,mBAAmB;AAClE,YAAMg+D,YAAYr0M,MAAC,MAACi2B,eAAeimG,mBAAmB,CACpDl8H,MAAAA,MAAE83B,cAAc9nC,MAAKsB,KAAKyM,IAAI,CAAC,CAChC;AAED/N,MAAAA,MAAK6lJ,YAAY71I,MAAAA,MAAEw5B,mBAAmB,CAAC66K,WAAWrkN,MAAKsB,IAAI,CAAC,CAAC;AAC7DtB,MAAAA,MAAKqc,KAAM;AAAA,IACb;AAAA,EACF;AAEA,QAAMioM,2CAAyE;AAAA,IAC7ElnE,sBAAsB+mE;AAAAA,EACvB;AAMM,WAASI,qBACdvkN,OACAmU,aACAic,OACAmyH,UACAiiE,iBACA;AACA,QAAI,CAACp0L,MAAM3iB,OAAQ;AAEnB,UAAMg3M,YAAY,CAAC,CAACzkN,MAAKsB,KAAKi9B;AAE9B,QAAI,CAACpqB,aAAa;AAChB,YAAMuwM,iBAAiB10M,MAAC,MAACm9B,YACvB,eACAn9B,MAAAA,MAAE0qB,WAAW,aAAa,GAC1B,CAAA,GACA1qB,MAAAA,MAAE61B,eAAe,CAAA,CAAE,CACrB;AAEA,UAAI4+K,WAAW;AACbC,uBAAezoL,SAAS,CAACjsB,YAAEo5B,YAAYp5B,MAAAA,MAAE0qB,WAAW,MAAM,CAAC,CAAC;AAC5DgqL,uBAAevpL,KAAKA,KAAKzyB,KAAKypE,MAAAA,SAASg3D,UAAUjmE,mBAAmB;AAAA,MACtE;AAEA,OAAC/uD,WAAW,IAAInU,MACbkQ,IAAI,MAAM,EACVu0I,iBAAiB,QAAQigE,cAAc;AAAA,IAC5C;AAEA,QAAIniE,UAAS;AACXA,MAAAA,SAAQgoB,kBAAkB;AAAA,QAAEnqG,OAAOjsD,YAAYisD;AAAAA,MAAM,CAAC;AAAA,IACxD;AAEA,QAAIqkJ,WAAW;AACb,YAAME,aAA2C,CAAE;AACnDxwM,kBAAYkqD,SAAS6lJ,gBAAgBS,UAAU;AAC/C,UAAI32M,UAAU;AACd,iBAAW42M,aAAaD,YAAY;AAClC,YAAI32M,SAAS;AACXA,oBAAU;AAAA,QACZ,OAAO;AACLoiB,kBAAQA,MAAMhd,IAAIjD,OAAKH,MAAAA,MAAEmoD,UAAUhoD,CAAC,CAAC;AAAA,QACvC;AACA,YAAI,CAACy0M,UAAU/qE,WAAWl8H,yBAAyB;AACjD,gBAAMknM,WAA2B,CAC/BD,UAAUtjN,MACV,GAAG8uB,MAAMhd,IAAIjD,OAAKH,MAAC,MAAC4qD,aAAazqD,CAAC,CAAC,CAAC;AAEtC,cAAI,CAACq0M,gBAAiBK,UAASn8M,KAAKsH,MAAAA,MAAEg6B,gBAAgB;AACtD46K,oBAAU/+D,YAAY71I,MAAAA,MAAEw5B,mBAAmBq7K,QAAQ,CAAC;AAAA,QACtD,OAAO;AACLD,oBAAUx3C,YAAYh9I,KAAK;AAAA,QAC7B;AAAA,MACF;AAAA,IACF,OAAO;AACLjc,kBAAYjE,IAAI,MAAM,EAAEu0I,iBAAiB,QAAQr0H,KAAK;AAAA,IACxD;AAAA,EACF;AAgBO,WAAS00L,mBACdC,SACA3kJ,QACA4kJ,MAC6C;AAC7C,UAAMC,iBAAiBj1M,MAAAA,MAAEiO,aAAa8mM,OAAO,KAAK3kJ,OAAMkjF,OAAOyhE,QAAQh3M,IAAI;AAC3E,QAAIk3M,gBAAgB;AAClB;AAAA,IACF;AACA,UAAMC,sBACJl1M,MAAAA,MAAE6M,uBAAuBkoM,SAAS;AAAA,MAAEtqL,UAAU;AAAA,IAAK,CAAA,KACnDzqB,MAAC,MAACiO,aAAa8mM,QAAQlqL,IAAI,KAC3BulC,OAAMkjF,OAAOyhE,QAAQlqL,KAAK9sB,IAAI;AAChC,QAAIm3M,qBAAqB;AACvB,aAAOl1M,MAAC,MAACmoD,UAAU4sJ,OAA0C;AAAA,IAC/D,OAAO;AACL,YAAMvmH,QAAQxuF,MAAAA,MAAE0qB,WAAWsqL,IAAI;AAG/B5kJ,MAAAA,OAAM13D,KAAK;AAAA,QACT6zB,IAAIiiE;AAAAA,QACJjhE,MAAM;AAAA,MACR,CAAC;AACD,aAAOvtB,MAAC,MAACm1B,qBACP,KACAn1B,MAAAA,MAAEmoD,UAAUqmC,KAAK,GACjBumH,OACF;AAAA,IACF;AAAA,EACF;AAEO,WAASI,oBACdnlN,OACAolN,eACAjlN,OACA;AACA,UAAM;AAAA,MAAEigE,OAAAA;AAAAA,IAAM,IAAIpgE;AAClB,UAAMm+B,eAAwC,CAAE;AAChD,UAAMl+B,SAAQ;AAAA,MACZmkN,cAAcpkN,MAAKsB,KAAKi7B,MAAM6jC,OAAMwgF,WAAW5gJ,MAAKsB,KAAKi7B,GAAGxuB,IAAI;AAAA,MAChE5N,MAAAA;AAAAA,IACD;AACD,eAAWklN,gBAAgBD,eAAe;AACxC,YAAM7wC,cAAc8wC,aAAan1M,IAAI,KAAK;AAC1C,UAAIqkK,YAAY36B,0BAA0B;AACxCuqE,uBAAe5vC,aAAat0K,MAAK;AAAA,MACnC,OAAO;AACLs0K,oBAAYl2G,SAASimJ,0CAA0CrkN,MAAK;AAAA,MACtE;AAEA,YAAMqlN,eAAeD,aAAa/jN;AAGlC,UAAI,CAACizK,YAAYqD,wBAAwB;AACvC,cAAMuM,aAAa2gC,mBACjBvwC,YAAYjzK,MACZ8+D,QACAA,OAAM2hF,uBAAuBwyB,YAAYjzK,IAAI,CAC/C;AACA,YAAI6iL,YAAY;AACdhmJ,uBAAaz1B,KAAKsH,MAAAA,MAAE82B,oBAAoBq9I,UAAU,CAAC;AACnDmhC,uBAAavkN,MAAMiP,MAAC,MAACmoD,UAAUgsH,WAAWtpJ,IAAI;AAAA,QAChD;AAAA,MACF;AAAA,IACF;AAEA,WAAOsD;AAAAA,EACT;;;;;;;;;;;;;ACxMA,MAAAuC,QAAAl3B,aAAA;AACA,MAAA20M,uBAAA30M,aAAA;AAEA,MAAA60M,2CAAA70M,aAAA;AACA,MAAA+7M,UAAA/7M,cAAA;AAIA,MAAAg8M,QAAAh8M,YAAA;AAEO,WAASi8M,iBAAiBnkN,OAA6C;AAAA,QAAAiiJ;AAE5E,WAAO,CAAC,GAAAA,mBAACjiJ,MAAKs7B,eAAU,QAAf2mH,iBAAiB91I;AAAAA,EAC5B;AAEO,WAASi4M,cAAcpkN,OAAe;AAC3C,WAAOmkN,iBAAiBnkN,KAAI,KAAKA,MAAK65B,KAAKA,KAAK01D,KAAK40H,gBAAgB;AAAA,EACvE;AAoCA,WAASE,YAAYppL,IAAcwrF,MAAMxrF,GAAG9uB,SAAS,GAAS;AAE5D,QAAIs6G,QAAQ,IAAI;AACdxrF,SAAG9C,QAAO,EAAqB;AAC/B;AAAA,IACF;AAEA,UAAMd,UAAU4D,GAAGwrF,GAAG;AAEtB,QAAIpvF,gBAAkC;AAEpC4D,SAAGwrF,GAAG,IAAwB;AAAA,IAChC,WAAWpvF,YAAO,KAA2B;AAE3C4D,SAAGwrF,GAAG,IAAwB;AAC9B49F,kBAAYppL,IAAIwrF,MAAM,CAAC;AAAA,IACzB,OAAO;AAELxrF,SAAGwrF,GAAG,IAAIpvF,UAAU;AAAA,IACtB;AAAA,EACF;AASA,WAASitL,kCACPC,WACqB;AACrB,UAAMC,mBAA6B,CAAE;AACrC,UAAM/0H,eAAe,oBAAIviF,IAAa;AAEtCq3M,cAAUxnJ,SAAS;AAAA,MACjB9uB,YAAYvvC,OAAM;AAChB+wF,qBAAa90E,IAAIjc,MAAKsB,KAAKi7B,GAAGxuB,IAAI;AAAA,MACpC;AAAA,IACF,CAAC;AAED,WAAO,MAAqB;AAC1B,UAAIg4M;AACJ,SAAG;AACDJ,oBAAYG,gBAAgB;AAC5BC,oBAAYp4M,OAAOC,aAAa,GAAGk4M,gBAAgB;AAAA,MACrD,SAAS/0H,aAAahiF,IAAIg3M,SAAS;AAEnC,aAAO/1M,MAAAA,MAAEs/B,YAAYt/B,MAAAA,MAAE0qB,WAAWqrL,SAAS,CAAC;AAAA,IAC7C;AAAA,EACH;AAQA,WAASC,sCACPH,WACqB;AACrB,QAAI3pL;AAEJ,WAAO,MAAqB;AAC1B,UAAI,CAACA,WAAW;AACdA,oBAAY0pL,kCAAkCC,SAAS;AAAA,MACzD;AAEA,aAAO3pL,UAAW;AAAA,IACnB;AAAA,EACH;AAUA,WAAS+pL,oBACPjmN,OACAy+M,WAIA;AACA,UAAMliL,KAAKv8B,MAAKsB,KAAKi7B;AACrB,UAAM6jC,SAAQpgE,MAAKogE;AACnB,QAAIpgE,MAAKyS,SAAS,oBAAoB;AACpC,YAAMgsM,aAAYliL,GAAGxuB;AACrB,YAAMm4M,QAAQ9lJ,OAAM6hF,iCAAiC1lH,EAAE;AACvD,YAAM4pL,UAAUn2M,MAAAA,MAAE0qB,WAAW+jL,UAAS;AAEtCr+I,MAAAA,OAAM09E,OAAO2gE,YAAWyH,MAAMn4M,IAAI;AAElC/N,MAAAA,MAAKkQ,IAAI,IAAI,EAAE21I,YAAYsgE,OAAO;AAElC,aAAO;AAAA,QAAE5pL,IAAIvsB,MAAC,MAACmoD,UAAU+tJ,KAAK;AAAA,QAAGlmN,MAAAA;AAAAA,MAAM;AAAA,IACzC,OAAO;AACL,UAAIkmN;AAEJ,UAAI3pL,IAAI;AACNkiL,oBAAYliL,GAAGxuB;AACfm4M,gBAAQE,yBAAyBhmJ,OAAM3jC,QAAQgiL,SAAS;AACxDr+I,QAAAA,OAAM09E,OAAO2gE,WAAWyH,MAAMn4M,IAAI;AAAA,MACpC,OAAO;AACLm4M,gBAAQE,yBACNhmJ,OAAM3jC,QACN,OAAOgiL,cAAc,WAAWA,YAAY,iBAC9C;AAAA,MACF;AAEA,YAAM4H,eAAer2M,MAAC,MAACw7B,gBACrB,OAAOizK,cAAc,WAAWzuM,MAAAA,MAAE0qB,WAAW+jL,SAAS,IAAI,MAC1Dz+M,MAAKsB,KAAKi9B,YACVv+B,MAAKsB,KAAK65B,IACZ;AAEA,YAAM,CAACmrL,OAAO,IAAItmN,MAAK6lJ,YACrB71I,MAAAA,MAAEw5B,mBAAmB,CAAC68K,cAAcH,KAAK,CAAC,CAC5C;AAEA,aAAO;AAAA,QACL3pL,IAAIvsB,MAAC,MAACmoD,UAAU+tJ,KAAK;AAAA,QACrBlmN,MAAMsmN,QAAQp2M,IAAI,eAAe;AAAA,MAClC;AAAA,IACH;AAAA,EACF;AAEA,WAASq2M,sBACPxlN,MACAI,QACAm+F,UAC0C;AAC1C,QAAIv+F,KAAI0R,SAAS,eAAe;AAC9B,aAAOzC,MAAAA,MAAEk/B,qBAAqBnuC,MAAKI,QAAOwS,QAAW2rF,QAAQ;AAAA,IAC/D,OAAO;AACL,aAAOtvF,MAAC,MAAC8+B,cAAc/tC,MAAKI,QAAOwS,QAAWA,QAAW2rF,QAAQ;AAAA,IACnE;AAAA,EACF;AAEA,WAASknH,0BACPxmN,OACAy+M,WACA;AACA,QAAI,CAACz+M,MAAKsB,KAAKi7B,IAAI;AACjBv8B,MAAAA,MAAKsB,KAAKi7B,KACR,OAAOkiL,cAAc,WACjBzuM,MAAC,MAAC0qB,WAAW+jL,SAAS,IACtBz+M,MAAKogE,MAAMqhF,sBAAsB,OAAO;AAAA,IAChD;AAAA,EACF;AAEA,WAASglE,qBACPhI,WACA3gG,SACA4oG,WACAC,WACAjvC,WACAkvC,YACAtnH,UACAzlF,UACM;AACN,UAAMyoM,WACHzoM,aAAY,aACuBA,aAAY,cAChDylF,WACIm/G,YACAzuM,YAAEg6B,eAAgB;AAExB,UAAM68K,aAAa72M,MAAC,MAAC61B,eAAe,CAClC71B,MAAAA,MAAEs5B,gBACAt5B,MAAAA,MAAEy4B,iBAAiBz4B,MAAC,MAACmoD,UAAUmqJ,OAAO,GAAGtyM,MAAC,MAACmoD,UAAUu/G,SAAS,CAAC,CACjE,CAAC,CACF;AAED,UAAMovC,aAAa92M,MAAC,MAAC61B,eAAe,CAClC71B,YAAE82B,oBACA92B,MAAC,MAACm1B,qBACA,KACAn1B,MAAC,MAACy4B,iBAAiBz4B,MAAAA,MAAEmoD,UAAUmqJ,OAAO,GAAGtyM,YAAEmoD,UAAUu/G,SAAS,CAAC,GAC/D1nK,MAAAA,MAAE0qB,WAAW,GAAG,CAClB,CACF,CAAC,CACF;AAED,QAAIqsL,QACFC;AAEF,QAAIN,UAAUj0M,SAAS,eAAe;AACpCs0M,eAAS/2M,MAAAA,MAAEo/B,mBAAmB,OAAOs3K,WAAW,CAAA,GAAIG,YAAYvnH,QAAQ;AACxE0nH,eAASh3M,YAAEo/B,mBACT,OACAu3K,WACA,CAAC32M,YAAE0qB,WAAW,GAAG,CAAC,GAClBosL,YACAxnH,QACF;AAAA,IACF,OAAO;AACLynH,eAAS/2M,MAAC,MAACm9B,YACT,OACAu5K,WACA,IACAG,YACAD,YACAtnH,QACF;AACA0nH,eAASh3M,YAAEm9B,YACT,OACAw5K,WACA,CAAC32M,MAAAA,MAAE0qB,WAAW,GAAG,CAAC,GAClBosL,YACAF,YACAtnH,QACF;AAAA,IACF;AAEAwe,YAAQsvD,YAAY45C,MAAM;AAC1BlpG,YAAQsvD,YAAY25C,MAAM;AAAA,EAC5B;AAEA,WAASE,yBACPvvC,WACA79J,UACsD;AACtD,QAAIA,aAAY,aAAaA,aAAY,aAAaA,aAAY,WAAW;AAC3E,aAAO,CACLs4D,MAAAA,SAASn3C,WAAWkoC;AAAAA;AAAAA,wBAEFlzD,MAAC,MAACmoD,UAAUu/G,SAAS,CAAC;AAAA;AAAA,SAGxCvlG,MAAAA,SAASn3C,WAAWkoC;AAAAA;AAAAA,iBAETlzD,MAAC,MAACmoD,UAAUu/G,SAAS,CAAC;AAAA;AAAA,OAEhC;AAAA,IAEL;AACA,WAAO,CACLvlG,MAAAA,SAASn3C,WAAWkoC;AAAAA,eACTlzD,MAAC,MAACmoD,UAAUu/G,SAAS,CAAC;AAAA,OAEjCvlG,MAAAA,SAASn3C,WAAWkoC;AAAAA,oBACJlzD,MAAC,MAACmoD,UAAUu/G,SAAS,CAAC;AAAA,KACrC;AAAA,EAEL;AAWA,WAASwvC,0BACPlnN,OACwB;AACxBA,IAAAA,SAAOg+M,GAAAA,yCAA2B,6BAACh+M,KAAI;AACvC,QAAIA,MAAKkf,wBAAwB;AAC/B,YAAMye,eAAc39B,MAAKkQ,IAAI,aAAa;AAC1C,aAAOg3M,0BAA0BvpL,aAAYA,aAAYlwB,SAAS,CAAC,CAAC;AAAA,IACtE;AACA,WAAOzN;AAAAA,EACT;AAYA,WAASmnN,uBAAuBnnN,OAA4C;AAC1E,UAAM89G,UAAUopG,0BAA0BlnN,KAAI;AAC9C,QAAI89G,QAAQ85D,wBAAwB;AAClC,aAAO5nK,YAAEmoD,UAAUn4D,MAAKsB,IAAI;AAAA,eACnBw8G,QAAQ7/F,aAAY,KAAMje,MAAKogE,MAAMkjF,OAAOxlC,QAAQx8G,KAAKyM,IAAI,GAAG;AACzE,aAAOiC,YAAEmoD,UAAUn4D,MAAKsB,IAAI;AAAA,IAC9B,WACEw8G,QAAQjhG,4BACRihG,QAAQ5tG,IAAI,MAAM,EAAE+N,gBACpB;AACA,aAAOjO,MAAAA,MAAEmoD,UAAU2lD,QAAQx8G,KAAKu5B,IAAoB;AAAA,IACtD,OAAO;AACL,YAAM,IAAIpjB,MACR,oCAAoCzX,MAAKs8D,SAAQ,CAAE,6BACrD;AAAA,IACF;AAAA,EACF;AAaA,WAAS8qJ,gCACPzpL,cACA0pL,WAGA;AACA,UAAMtmN,OAAMsmN,UAAUn3M,IAAI,KAAK;AAC/B,QAAInP,KAAIme,wBAAwB;AAC9Bye,MAAAA,aAAYj1B,KAAK,GAAG3H,KAAIO,KAAKq8B,WAAW;AAAA,IAC1C,OAAO;AACLA,MAAAA,aAAYj1B,KAAK3H,KAAIO,IAAI;AAAA,IAC3B;AACAP,IAAAA,KAAI8kJ,YAAYyhE,wBAAwB3pL,YAAW,CAAC;AAAA,EACtD;AAcA,WAAS4pL,+BACP5pL,cACA0pL,WAGA;AACA,UAAMtmN,OAAMsmN,UAAUn3M,IAAI,KAAK;AAC/B,UAAMs3M,aAAaN,0BAA0BnmN,IAAG;AAChD,QAAIymN,WAAW5vC,wBAAwB;AACrCwvC,sCAAgCzpL,cAAa0pL,SAAS;AAAA,IACxD,OAAO;AACL,YAAMI,cAAc1mN,KAAIq/D,MAAM3jC;AAC9B,YAAMirL,mBAAkB,GAAA5C,MAAkB,oBACxC0C,WAAWlmN,MACXmmN,aACAA,YAAY/lE,YAAY,aAAa,CACvC;AACA,UAAI,CAACgmE,iBAAiB;AAGpBN,wCAAgCzpL,cAAa0pL,SAAS;AAAA,MACxD,OAAO;AACL,cAAMM,qBAAqB,CACzB,GAAGhqL,cAEH3tB,MAAAA,MAAEmoD,UAAUuvJ,gBAAgB7sL,IAAI,CAAC;AAEnC,cAAM+sL,mBAAmBJ,WAAW3tE;AACpC,YAAI+tE,iBAAiB1oM,wBAAwB;AAC3C0oM,2BAAiBxjE,cAAc,eAAeujE,kBAAkB;AAAA,QAClE,OAAO;AACLH,qBAAW3hE,YACTyhE,wBAAwB,CACtBt3M,MAAC,MAACmoD,UAAUuvJ,eAAe,GAC3B,GAAGC,kBAAkB,CACtB,CACH;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAWA,WAASE,qCACPlqL,cACA0pL,WAGA;AACA,UAAMljL,cAAckjL,UAAUn3M,IAAI,OAAO;AACzC,QAAIi0B,YAAY7iC,MAAM;AACpBq8B,MAAAA,aAAYj1B,KAAKy7B,YAAY7iC,IAAI;AAAA,IACnC,WAAWq8B,aAAYlwB,SAAS,GAAG;AACjCkwB,MAAAA,aAAYA,aAAYlwB,SAAS,CAAC,IAAIuC,MAAAA,MAAE+zB,gBACtC,QACApG,aAAYA,aAAYlwB,SAAS,CAAC,CACpC;AAAA,IACF;AACA02B,gBAAY0hH,YAAYyhE,wBAAwB3pL,YAAW,CAAC;AAAA,EAC9D;AAEA,WAASmqL,gCACPnqL,cACAoqL,WACA;AACAA,cAAUtjE,iBACR,QACAz0I,MAAC,MAAC82B,oBAAoBwgL,wBAAwB3pL,YAAW,CAAC,CAC5D;AAAA,EACF;AAEA,WAASqqL,gCACPrqL,cACAsqL,iBACA;AACAA,oBAAgB3mN,KAAK65B,KAAKA,KAAK1B,QAC7BzpB,MAAC,MAAC82B,oBAAoBwgL,wBAAwB3pL,YAAW,CAAC,CAC5D;AAAA,EACF;AAEA,WAASuqL,0BACPltL,YACAmtL,eACA;AACA,WACEn4M,MAAC,MAACoN,iBAAiB4d,UAAU,KAC7BhrB,MAAC,MAACiO,aAAa+c,WAAWpC,QAAQ;AAAA,MAAE7qB,MAAMo6M,cAAcp6M;AAAAA,IAAK,CAAC;AAAA,EAElE;AASA,WAASq6M,gCACPzqL,cACA0qL,gBACA;AACA,QAAIA,gBAAgB;AAClB,UACE1qL,aAAYlwB,UAAU,KACtBy6M,0BAA0BvqL,aAAY,CAAC,GAAG0qL,cAAc,GACxD;AAEA,cAAMC,kBAAkBt4M,MAAAA,MAAEi2B,eAAej2B,YAAEmoD,UAAUkwJ,cAAc,GAAG,CACpE1qL,aAAY,CAAC,CAAC,CACf;AACDA,QAAAA,aAAYtiB,OAAO,GAAG,GAAGitM,eAAe;AAAA,MAC1C;AAEA,UACE3qL,aAAYlwB,UAAU,KACtBuC,MAAAA,MAAEsP,iBAAiBqe,aAAYA,aAAYlwB,SAAS,CAAC,CAAC,KACtDy6M,0BACEvqL,aAAYA,aAAYlwB,SAAS,CAAC,GAClC46M,cACF,GACA;AACA1qL,QAAAA,aAAYtiB,OAAOsiB,aAAYlwB,SAAS,GAAG,CAAC;AAAA,MAC9C;AAAA,IACF;AACA,WAAO65M,wBAAwB3pL,YAAW;AAAA,EAC5C;AAWA,WAAS4qL,2CACP5qL,cACAsqL,iBACAI,gBACA;AACAJ,oBAAgB5pJ,SAAS;AAAA,MACvBl4B,gBAAgB;AAAA,QACdo4B,KAAKv+D,OAAM;AACT,cAAI,CAACA,MAAKkQ,IAAI,QAAQ,EAAEiR,QAAO,EAAI;AACnC,gBAAMqnM,WAAW,CACfxoN,MAAKsB,MACL,GAAGq8B,aAAYvqB,IAAI4uF,UAAQhyF,MAAC,MAACmoD,UAAU6pC,IAAI,CAAC,CAAC;AAG/C,cAAIhiG,MAAKg2K,sBAAsB;AAC7BwyC,qBAAS9/M,KAAKsH,MAAAA,MAAEg6B,eAAc,CAAE;AAAA,UAClC;AACAhqC,UAAAA,MAAK6lJ,YACHuiE,gCAAgCI,UAAUH,cAAc,CAC1D;AAEAroN,UAAAA,MAAKqc,KAAM;AAAA,QACb;AAAA,MACD;AAAA,MACDgxB,YAAYrtC,OAAM;AAChB,YAAIA,MAAKsB,KAAKi8B,SAAS,eAAe;AACpCv9B,UAAAA,MAAKqc,KAAM;AAAA,QACb;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACH;AAWA,WAASosM,iCACP9qL,cACA+qL,gBACA;AACA,UAAMvtL,OAAsB,CAC1BnrB,MAAAA,MAAE82B,oBAAoBwgL,wBAAwB3pL,YAAW,CAAC,CAAC;AAE7D,QAAI+qL,gBAAgB;AAClBvtL,WAAK1B,QACHzpB,MAAAA,MAAE82B,oBACA92B,MAAC,MAACi2B,eAAej2B,MAAC,MAACkhK,MAAO,GAAE,CAAClhK,MAAC,MAACw9B,cAAcx9B,YAAE0qB,WAAW,MAAM,CAAC,CAAC,CAAC,CACrE,CACF;AAAA,IACF;AACA,WAAO1qB,YAAEm9B,YACP,eACAn9B,MAAC,MAAC0qB,WAAW,aAAa,GAC1BguL,iBAAiB,CAAC14M,MAAC,MAACo5B,YAAYp5B,YAAE0qB,WAAW,MAAM,CAAC,CAAC,IAAI,CAAE,GAC3D1qB,MAAC,MAAC61B,eAAe1K,IAAI,CACvB;AAAA,EACF;AAEA,WAASwtL,iCAAiChrL,cAA6B;AACrE,WAAO3tB,MAAC,MAACw/B,YAAY,CACnBx/B,MAAC,MAAC82B,oBAAoBwgL,wBAAwB3pL,YAAW,CAAC,CAAC,CAC5D;AAAA,EACH;AAGA,QAAMirL,QAAQ;AACd,QAAMC,WAAW;AACjB,QAAMC,SAAS;AACf,QAAMC,SAAS;AACf,QAAMC,SAAS;AAEf,QAAMC,qBAAqB;AAC3B,QAAMC,SAAS;AACf,QAAMC,uBAAuB;AAE7B,WAASC,eAAetrG,SAAoD;AAC1E,YAAQA,QAAQx8G,KAAKmR,MAAI;AAAA,MACvB,KAAK;AAAA,MACL,KAAK;AACH,eAAOm2M;AAAAA,MACT,KAAK;AACH,eAAOC;AAAAA,MACT,KAAK;AAAA,MACL,KAAK;AACH,YAAI/qG,QAAQx8G,KAAKi8B,SAAS,OAAO;AAC/B,iBAAOwrL;AAAAA,QACR,WAAUjrG,QAAQx8G,KAAKi8B,SAAS,OAAO;AACtC,iBAAOyrL;AAAAA,QACT,OAAO;AACL,iBAAOF;AAAAA,QACT;AAAA,IACJ;AAAA,EACF;AAmCA,WAASO,sBAAsB/jE,MAAwC;AACrE,WAAO,CACL,GAAGA,KAAK9rH,OACN+gJ,QAAMA,GAAGj7E,YAAYi7E,GAAGh9I,QAAQsrL,YAAYtuC,GAAGh9I,QAAQyrL,MACzD,GACA,GAAG1jE,KAAK9rH,OACN+gJ,QAAM,CAACA,GAAGj7E,YAAYi7E,GAAGh9I,QAAQsrL,YAAYtuC,GAAGh9I,QAAQyrL,MAC1D,GACA,GAAG1jE,KAAK9rH,OAAO+gJ,QAAMA,GAAGj7E,YAAYi7E,GAAGh9I,SAASqrL,KAAK,GACrD,GAAGtjE,KAAK9rH,OAAO+gJ,QAAM,CAACA,GAAGj7E,YAAYi7E,GAAGh9I,SAASqrL,KAAK,CAAC;AAAA,EAE3D;AAgBA,WAASU,uBACP1sL,aACA2sL,gBACA1vM,UAC8B;AAC9B,UAAM2vM,YAAY5sL,YAAWnvB;AAC7B,UAAMg8M,cAAcF,eAAe14H,KAAKx3B,OAAO;AAC/C,UAAMqwJ,OAAuB,CAAE;AAC/B,aAASl8M,IAAI,GAAGA,IAAIg8M,WAAWh8M,KAAK;AAClC,WACGqM,aAAY,aACuBA,aAAY,cAChD4vM,aACA;AACAC,aAAKhhN,KACH6gN,eAAe/7M,CAAC,KAAKwC,MAAC,MAAC+zB,gBAAgB,QAAQ/zB,MAAC,MAACg4B,eAAe,CAAC,CAAC,CACpE;AAAA,MACF;AACA0hL,WAAKhhN,KAAKk0B,YAAWpvB,CAAC,EAAEwtB,UAAU;AAAA,IACpC;AAEA,WAAO;AAAA,MAAE2uL,UAAUF;AAAAA,MAAaC;AAAAA,IAAM;AAAA,EACxC;AAEA,WAASE,wBACPC,gBACAhwM,UACmB;AACnB,WAAO7J,MAAAA,MAAEi1B,gBACP4kL,eAAez2M,IAAImnK,QAAM;AACvB,UAAIprB,OAAOorB,GAAGh9I;AACd,UAAIg9I,GAAGj7E,UAAU;AACf6vD,gBACEt1I,aAAY,aACsBA,aAAY,YAC1CqvM,SACAD;AAAAA,MACR;AACA,UAAI1uC,GAAGuvC,mBAAoB36D,SAAQg6D;AAEnC,aAAOn5M,MAAC,MAACi1B,gBAAgB,CACvBs1I,GAAGwvC,iBACH/5M,MAAAA,MAAEg4B,eAAemnH,IAAI,GACrBorB,GAAGxsK,MACH,GAAIwsK,GAAGyvC,kBAAkB,CAAE,CAAC,CAC7B;AAAA,IACH,CAAC,CACH;AAAA,EACF;AAEA,WAASC,+BAA+BJ,gBAAiC;AACvE,UAAMK,WAA2B,CAAE;AAEnC,eAAW3vC,MAAMsvC,gBAAgB;AAC/B,YAAM;AAAA,QAAElgF;AAAAA,MAAO,IAAI4wC;AAEnB,UAAIzjK,MAAMC,QAAQ4yH,MAAM,GAAG;AACzBugF,iBAASxhN,KAAK,GAAGihI,MAAM;AAAA,MACzB,WAAWA,WAAWh2H,QAAW;AAC/Bu2M,iBAASxhN,KAAKihI,MAAM;AAAA,MACtB;AAAA,IACF;AAEA,WAAOugF;AAAAA,EACT;AAEA,WAASC,oBACPtwM,UACAikG,SACA/8G,MACAi+M,OACAE,OACA5/G,UACA;AACAwe,YAAQsvD,YACNp9J,MAAAA,MAAEo/B,mBACA,OACAp/B,MAAAA,MAAEmoD,UAAUp3D,IAAG,GACf,CAAA,GACAiP,MAAC,MAAC61B,eAAe,CACf71B,MAAAA,MAAEs5B,gBACAt5B,MAAAA,MAAEi2B,eACAj2B,MAAAA,MAAEmoD,UAAU6mJ,KAAK,GACgBnlM,aAAY,aAAcylF,WACvD,CAAA,IACA,CAACtvF,MAAAA,MAAEg6B,eAAc,CAAE,CACzB,CACF,CAAC,CACF,GACDs1D,QACF,CACF;AAEAwe,YAAQsvD,YACNp9J,MAAC,MAACo/B,mBACA,OACAp/B,MAAAA,MAAEmoD,UAAUp3D,IAAG,GACf,CAACiP,MAAC,MAAC0qB,WAAW,GAAG,CAAC,GAClB1qB,MAAAA,MAAE61B,eAAe,CACf71B,MAAAA,MAAE82B,oBACA92B,YAAEi2B,eACAj2B,MAAC,MAACmoD,UAAU+mJ,KAAK,GACgBrlM,aAAY,aAAcylF,WACvD,CAACtvF,YAAE0qB,WAAW,GAAG,CAAC,IAClB,CAAC1qB,MAAC,MAACg6B,eAAgB,GAAEh6B,MAAC,MAAC0qB,WAAW,GAAG,CAAC,CAC5C,CACF,CAAC,CACF,GACD4kE,QACF,CACF;AAAA,EACF;AAEA,WAAS8qH,oBACPtsG,SACA/8G,MACAspN,gBACA/qH,UACA;AACA,QAAIrjE;AACJ,QAAI6B;AAEJ,QAAIggF,QAAQx8G,KAAKi8B,SAAS,OAAO;AAC/BtB,eAAS,CAACjsB,MAAC,MAAC0qB,WAAW,GAAG,CAAC;AAC3BoD,cAAQ,CACN9tB,MAAC,MAAC82B,oBACA92B,MAAC,MAACi2B,eAAeokL,gBAAgB,CAC/Br6M,MAAAA,MAAEg6B,eAAgB,GAClBh6B,MAAAA,MAAE0qB,WAAW,GAAG,CAAC,CAClB,CACH,CAAC;AAAA,IAEL,OAAO;AACLuB,eAAS,CAAE;AACX6B,cAAQ,CACN9tB,MAAC,MAACs5B,gBAAgBt5B,MAAAA,MAAEi2B,eAAeokL,gBAAgB,CAACr6M,YAAEg6B,eAAgB,CAAA,CAAC,CAAC,CAAC;AAAA,IAE7E;AAEA8zE,YAAQ+nC,YACN71I,MAAAA,MAAEo/B,mBACA0uE,QAAQx8G,KAAKi8B,MACbvtB,MAAC,MAACmoD,UAAUp3D,IAAG,GACfk7B,QACAjsB,MAAC,MAAC61B,eAAe/H,KAAK,GACtBwhE,QACF,CACF;AAAA,EACF;AAEA,WAASgrH,8BACPtqN,OAC2C;AAC3C,UAAM;AAAA,MAAEyS;AAAAA,IAAK,IAAIzS;AAEjB,WACEyS,SAAS,qBACTA,SAAS,sBACTA,SAAS;AAAA,EAEb;AAEA,WAAS83M,kBAAkBzsL,OAAsB;AAC/C,WAAO9tB,MAAAA,MAAEi2B,eACPj2B,YAAEo7B,wBAAwB,CAAA,GAAIp7B,YAAE61B,eAAe/H,MAAM3C,IAAI,CAAC,GAC1D,CAAA,CACF;AAAA,EACF;AAEA,WAASqvL,6BAA6B1sL,OAAsB;AAC1D,WAAO9tB,YAAEu3B,mBAAmB,MAAM,CAAA,GAAIv3B,MAAC,MAAC61B,eAAe/H,MAAM3C,IAAI,CAAC;AAAA,EACpE;AAEA,WAASsvL,0BAA0BtpN,QAAqB;AACtD,WAAO6O,MAAAA,MAAEu3B,mBACP,MACA,CAAA,GACAv3B,MAAC,MAAC61B,eAAe,CAAC71B,YAAEs5B,gBAAgBnoC,MAAK,CAAC,CAAC,CAC7C;AAAA,EACF;AAEA,WAASmmN,wBAAwBxnJ,OAAuB;AACtD,QAAIA,MAAMryD,WAAW,EAAG,QAAOuC,MAAC,MAAC+zB,gBAAgB,QAAQ/zB,MAAC,MAACg4B,eAAe,CAAC,CAAC;AAC5E,QAAI83B,MAAMryD,WAAW,EAAG,QAAOqyD,MAAM,CAAC;AACtC,WAAO9vD,MAAC,MAACw5B,mBAAmBs2B,KAAK;AAAA,EACnC;AASA,WAAS4qJ,0CAA0CppN,OAA4B;AAC7E,UAAM;AAAA,MAAE26B;AAAAA,MAAQd;AAAAA,MAAMe,WAAWg6C;AAAAA,MAAa/5C,OAAO44C;AAAAA,IAAQ,IAAIzzE;AACjE,WAAO0O,MAAC,MAACu3B,mBACP5zB,QAEAsoB,QACAd,MACA+6C,aACAnB,OACF;AAAA,EACF;AAEA,WAAS41I,0BACP1qN,QACAw+M,WACA;AACA,WAAOzuM,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,iBAAiB,GAAG,CAC1Dr2I,MAAAA,MAAEg6B,eAAgB,GAClBy0K,SAAS,CACV;AAAA,EACH;AAEA,WAASmM,wBAAwB3qN,QAAmB4qN,aAA2B;AAC7E,WAAO76M,MAAC,MAACi2B,eAAehmC,OAAMomJ,UAAU,eAAe,GAAG,CAACwkE,WAAW,CAAC;AAAA,EACzE;AAEA,WAASC,+BAA+BC,WAA0B;AAChE,WAAO/6M,MAAC,MAACo7B,wBACP,CAACp7B,MAAC,MAAC0qB,WAAW,GAAG,CAAC,GAClB1qB,YAAEq1B,iBAAiB,MAAMr1B,MAAAA,MAAEmoD,UAAU4yJ,SAAS,GAAG/6M,MAAAA,MAAE0qB,WAAW,GAAG,CAAC,CACpE;AAAA,EACF;AAEA,WAASswL,iBAAiBhwL,YAAoB;AAC5C,QAAI;AACFhrB,YAAAA,MAAE6qD,aAAa7/B,YAAY15B,CAAAA,UAAQ;AACjC,YAAI0O,YAAEkS,cAAc5gB,KAAI,GAAG;AAGzB,gBAAM;AAAA,QACR;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACR,SAAC4yE,SAAM;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAUA,WAAS+2I,qBAAqBjrN,OAAiD;AAC7E,UAAM;AAAA,MAAEsB,MAAAA;AAAAA,IAAK,IAAItB;AACjBsB,IAAAA,MAAKy7B,WAAW;AAChB,QAAI/sB,MAAAA,MAAEiO,aAAa3c,MAAKP,GAAG,GAAG;AAC5BO,MAAAA,MAAKP,MAAMiP,MAAAA,MAAE83B,cAAcxmC,MAAKP,IAAIgN,IAAI;AAAA,IAC1C;AAAA,EACF;AAEA,WAASm9M,yBAAyBlrN,OAAgB+wF,cAAwB;AACxE,QAAIo6H,gCAAgC;AACpC,QAAIp6H,aAAatjF,SAAS,GAAG;AAC3B,YAAMoyM,yBAAqBF,QAAAA,2BAGzB;AAAA,QACApwK,YAAYvvC,OAAMC,QAAO;AACvB,cAAIA,OAAM0+M,gBAAgB5vM,IAAI/O,MAAKsB,KAAKi7B,GAAGxuB,IAAI,GAAG;AAChDo9M,4CAAgC;AAChCnrN,YAAAA,MAAK04E,KAAM;AAAA,UACb;AAAA,QACF;AAAA,MACF,CAAC;AACD,YAAMimI,kBAAkB,oBAAIhoJ,IAAmB;AAC/C,iBAAW5oD,QAAQgjF,cAAc;AAC/B4tH,wBAAgBrxM,IAAIS,MAAM,IAAI;AAAA,MAChC;AACA/N,MAAAA,MAAKq+D,SAASwhJ,oBAAoB;AAAA,QAChClB;AAAAA,MACF,CAAC;AAAA,IACH;AACA,WAAOwM;AAAAA,EACT;AAEA,WAASC,8BACPprN,OACAqrN,yBACA;AACA,UAAMxL,yBAAqBF,QAAAA,2BAGzB;AAAA,MACApwK,YAAYvvC,OAAMC,QAAO;AACvB,YAAI,CAACA,OAAM0+M,gBAAgB5vM,IAAI/O,MAAKsB,KAAKi7B,GAAGxuB,IAAI,EAAG;AAEnD,cAAM8rI,aAAa75I,MAAK65I;AACxB,cAAMyxE,mBAAmBzxE,WAAWA;AAEpC,YAEGyxE,iBAAiBhqN,KAAKmR,SAAS,0BAC9B64M,iBAAiBhqN,KAAKu5B,SAASg/G,WAAWv4I,QAE5CgqN,iBAAiBhqN,KAAKmR,SAAS,sBAE/B64M,iBAAiBhqN,KAAKmR,SAAS,iBAE/B64M,iBAAiBhqN,KAAKmR,SAAS,kBAE9B64M,iBAAiBhqN,KAAKmR,SAAS,oBAC9B64M,iBAAiBhqN,KAAKH,UAAU04I,WAAWv4I,QAC3CgqN,iBAAiBzxE,WAAWpnI,SAAS,mBAEtC64M,iBAAiBhqN,KAAKmR,SAAS,oBAC9B64M,iBAAiBhqN,KAAKu5B,SAASg/G,WAAWv4I,MAC5C;AACA,gBAAMtB,MAAKqqK,oBACT,kDAAkDrqK,MAAKsB,KAAKi7B,GAAGxuB,IAAI,mCACrE;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAC;AACD,UAAM4wM,kBAAkB,oBAAIhoJ,IAAmB;AAC/C,eAAW5oD,QAAQs9M,yBAAyB;AAC1C1M,sBAAgBrxM,IAAIS,MAAM,IAAI;AAAA,IAChC;AACA/N,IAAAA,MAAKq+D,SAASwhJ,oBAAoB;AAAA,MAChClB;AAAAA,IACF,CAAC;AAAA,EACH;AAgBA,WAAS4M,eACPvrN,OACAC,QACAu9M,eACAgO,sBACA/M,WACAgN,iBACA5xM,UACsB;AAAA,QAAA6xM,eAAAC;AACtB,UAAMxwL,OAAOn7B,MAAKkQ,IAAI,WAAW;AAEjC,UAAM07M,kBAAkB5rN,MAAKsB,KAAKs7B;AAClC,QAAIivL,uBAAuB;AAC3B,QAAIC,6BAA6B;AACjC,QAAIC,uBAAuB;AAE3B,UAAMC,0BAA0BhG,sCAAsChmN,KAAI;AAE1E,UAAMisN,mBAA6C,CAAE;AACrD,UAAMxE,cAAqBznN,MAAKogE,MAAM3jC;AACtC,UAAMyvL,oBAAoBA,CACxBlxL,YACAgqL,MACAnkE,gBACG;AACH,YAAMsrE,mBAAmB/F,yBAAyBqB,aAAazC,IAAI;AACnEnkE,kBAAYn4I,KAAKsH,MAAAA,MAAEm1B,qBAAqB,KAAKgnL,kBAAkBnxL,UAAU,CAAC;AAC1E,aAAOhrB,MAAC,MAACmoD,UAAUg0J,gBAAgB;AAAA,IACpC;AAED,QAAI9D;AACJ,QAAI+D;AACJ,UAAMC,eAAWX,gBAAG1rN,MAAKsB,KAAKi7B,OAAE,OAAA,SAAZmvL,cAAc39M;AAElC,UAAMu+M,eAAe,OAAO7N,cAAc,WAAWA,YAAY9qM;AAIjE,UAAM44M,kCAAmCtzK,eAA2B;AAClE,UAAI;AACFjpC,cAAAA,MAAE6qD,aAAa5hB,WAAW33C,CAAAA,UAAQ;AAChC,cACE0O,MAAC,MAACsP,iBAAiBhe,KAAI,KACvB0O,MAAC,MAACmR,QAAQ7f,KAAI,KACd0O,MAAC,MAACuR,kBAAkBjgB,KAAI,KACxB0O,MAAAA,MAAEwR,kBAAkBlgB,KAAI,KACxB0O,MAAC,MAACiO,aAAa3c,OAAM;AAAA,YAAEyM,MAAM;AAAA,UAAa,CAAA,KACzCs+M,eAAer8M,YAAEiO,aAAa3c,OAAM;AAAA,YAAEyM,MAAMs+M;AAAAA,UAAY,CAAC,KACzDr8M,MAAAA,MAAE+Q,eAAezf,KAAI,KAAKA,MAAK27B,KAAKlvB,SAAS,UAC9C;AAGA,kBAAM;AAAA,UACR;AAAA,QACF,CAAC;AACD,eAAO;AAAA,MACR,SAACi9G,UAAM;AACN,eAAO;AAAA,MACT;AAAA,IACD;AAED,UAAMwhG,uBAAiC,CAAE;AAIzC,eAAW1uG,WAAW3iF,MAAM;AAC1B,UAAI,CAACmvL,8BAA8BxsG,OAAO,GAAG;AAC3C;AAAA,MACF;AAEA,YAAM4K,cAAc5K,QAAQx8G;AAE5B,UAAI,CAAConH,YAAY/oF,UAAU3vB,MAAAA,MAAEkS,cAAcwmG,YAAY3nH,GAAG,GAAG;AAC3DyrN,6BAAqB9jN,KAAKggH,YAAY3nH,IAAIw7B,GAAGxuB,IAAI;AAAA,MACnD;AAEA,UAAI0+M,YAAY/jG,WAAW,GAAG;AAC5B,gBAAQA,YAAYj2G,MAAI;AAAA,UACtB,KAAK;AAEHg5M,4BAAgB18K,cACd+uE,SACA79G,MACF;AACA;AAAA,UACF,KAAK;AAEHwrN,4BAAgBt8K,qBACd2uE,SACA79G,MACF;AACA;AAAA,UACF,KAAK;AAEHwrN,4BAAgBx8K,sBACd6uE,SACA79G,MACF;AACA,gBAAI4Z,aAAY,WAAW;AACzB;AAAA,YACF;AAAA,UAEF;AACE,gBAAI6uG,YAAY/oF,QAAQ;AAAA,kBAAA+sL;AACtB,eAAAA,mBAAAN,oBAAe,OAAAM,mBAAfN,kBAAoBhG,yBAClBqB,aACA,YACF;AAAA,YACF,OAAO;AAAA,kBAAAkF;AACL,eAAAA,kBAAAtE,mBAAc,OAAAsE,kBAAdtE,iBAAmBjC,yBACjBqB,aACA,WACF;AAAA,YACF;AACA;AAAA,QACJ;AACAoE,+BAAuB;AACvBE,iCAAAA,uBAAyBrjG,YAAY9rF,WAAWi0D,KAC9C07H,+BACF;AAAA,MACF,WAAW7jG,YAAYj2G,SAAS,yBAAyB;AAEvDg5M,wBAAgBx8K,sBACd6uE,SACA79G,MACF;AACA,cAAM;AAAA,UAAEc,KAAAA;AAAAA,UAAKI,OAAAA;AAAAA,UAAOw+B,QAAQ2/D;AAAAA,UAAUviE;AAAAA,QAAS,IAAI2rF;AAEnD,cAAMkkG,QAAQZ,wBAAyB;AACvC,cAAMa,WAAWtG,sBAAsBqG,OAAOzrN,QAAOm+F,QAAQ;AAC7D,cAAMsxE,UAAU9yD,QAAQ5tG,IAAI,KAAK;AACjC,cAAM,CAACo2M,OAAO,IAAIxoG,QAAQ+nC,YAAYgnE,QAAQ;AAE9C,YAAInG,WAAWC;AACf,YAAI5pL,YAAY,CAAC6zI,QAAQgH,wBAAwB;AAC/C8uC,uBAAY5B,GAAAA,MAAAA,oBACV8F,wBAAwB3qN,QAAOc,IAAmB,GAClD0mN,aACAA,YAAY/lE,YAAY,aAAa,CACvC;AACAilE,sBAAY32M,YAAEmoD,UAAUuuJ,UAAU7rL,IAAoB;AAAA,QACxD,OAAO;AACL6rL,sBAAY12M,MAAC,MAACmoD,UAAUp3D,IAAG;AAC3B4lN,sBAAY32M,MAAC,MAACmoD,UAAUp3D,IAAG;AAAA,QAC7B;AAEAylN,kCAA0BxmN,OAAMy+M,SAAS;AAEzCgI,6BACEzmN,MAAKsB,KAAKi7B,IACV+pL,SACAI,WACAC,WACAiG,OACA7vL,UACAuiE,UACAzlF,QACF;AAAA,MACF;AAEA,UAAI,cAAcikG,QAAQx8G,QAAQw8G,QAAQx8G,KAAKy7B,UAAU;AACvD+uL,uCAAAA,6BAA+B,CAACrE,YAAYnoH,SAASwe,QAAQx8G,KAAKP,GAAG;AAAA,MACvE;AAAA,IACF;AAEA,QAAI,CAAC6qN,mBAAmB,CAACC,sBAAsB;AAC7C,UAAI,CAAC7rN,MAAKsB,KAAKi7B,MAAM,OAAOkiL,cAAc,UAAU;AAClDz+M,QAAAA,MAAKsB,KAAKi7B,KAAKvsB,YAAE0qB,WAAW+jL,SAAS;AAAA,MACvC;AACA,UAAI6N,cAAc;AAChBtsN,QAAAA,MAAKsB,KAAK65B,KAAKA,KAAK1B,QAClBkvL,iCAAiC,CAC/BgC,0BAA0B1qN,QAAOqsN,YAAY,CAAC,CAC/C,CACH;AAAA,MACF;AAEA;AAAA,IACF;AAEA,UAAMQ,uBAAwC,CAAE;AAEhD,QAAI7E;AACJ,UAAMoD,0BAA0B,oBAAI78M,IAAa;AAEjD,QAAIu+M,gBAA8BC;AAClC,QAAIC,sBAA2C;AAU/C,aAASC,iBAAiBtwL,aAAmD;AAC3E,UAAIuwL,iBAAiB;AACrB,UAAIC,gBAAgB;AACpB,YAAM7D,iBAA0C,CAAE;AAClD,iBAAWtwK,aAAarc,aAAY;AAClC,cAAM;AAAA,UAAE5B;AAAAA,QAAW,IAAIie;AACvB,YAAI3yC;AACJ,aACGuT,aAAY,aACuBA,aAAY,cAChD7J,MAAAA,MAAE0O,mBAAmBsc,UAAU,GAC/B;AACA,cAAIhrB,MAAAA,MAAEmR,QAAQ6Z,WAAW10B,MAAM,GAAG;AAChCA,qBAAS0J,MAAAA,MAAEg6B,eAAgB;AAAA,UAC5B,WAAUy9K,YAAYnoH,SAAStkE,WAAW10B,MAAM,GAAG;AAClDA,qBAAS0J,YAAEmoD,UAAUn9B,WAAW10B,MAAM;AAAA,UACxC,OAAO;AAAA,gBAAA+mN;AACL,aAAAA,uBAAAJ,wBAAmB,OAAAI,uBAAnBJ,sBAAwB7G,yBAAyBqB,aAAa,KAAK;AACnEnhN,qBAAS0J,MAAC,MAACm1B,qBACT,KACAn1B,MAAAA,MAAEmoD,UAAU80J,mBAAmB,GAC/BjyL,WAAW10B,MACb;AACA00B,uBAAW10B,SAAS0J,MAAAA,MAAEmoD,UAAU80J,mBAAmB;AAAA,UACrD;AAAA,QACF;AACA1D,uBAAe7gN,KAAKpC,MAAM;AAC1B6mN,2BAAAA,iBAAmB,CAAC1F,YAAYnoH,SAAStkE,UAAU;AACnDoyL,0BAAAA,gBAAkBb,gCAAgCtzK,SAAS;AAAA,MAC7D;AACA,aAAO;AAAA,QAAEk0K;AAAAA,QAAgBC;AAAAA,QAAe7D;AAAAA,MAAgB;AAAA,IAC1D;AAEA,UAAM+D,0BACJxB,8BAGIC,wBAAwBlyM,aAAY;AAE1C,QAAI0zM,iCAAiC;AACrC,QAAIC,uBAAuB;AAC3B,QAAIC,mBAAmC,CAAE;AACzC,QAAIC;AACJ,QAAIC,yBAAmD,CAAE;AACzD,QAAI/B,iBAAiB;AACnBmB,uBAAiB3G,yBAAyBqB,aAAa,WAAW;AAClE8F,uCAAiCvtN,MAAKogB,mBAAoB;AAC1D,OAAC;AAAA,QAAEmc,IAAIywL;AAAAA,QAAchtN,MAAAA;AAAAA,MAAK,IAAIimN,oBAAoBjmN,OAAMy+M,SAAS;AAEjEz+M,MAAAA,MAAKsB,KAAKs7B,aAAa;AAEvB,YAAMgxL,0BAA0BhC,gBAAgB/6H,KAAKm6H,gBAAgB;AACrE,YAAM;AAAA,QAAEmC;AAAAA,QAAgBC;AAAAA,QAAe7D;AAAAA,MAAe,IACpD2D,iBAAiBtB,eAAe;AAElC,YAAM;AAAA,QAAEjC;AAAAA,QAAUD;AAAAA,MAAM,IAAGJ,uBACzBsC,iBACArC,gBACA1vM,QACF;AACA2zM,6BAAuB7D,WAAW,IAAI;AACtC8D,yBAAmB/D;AAEnB,UACE0D,iBACCD,kBAAkBG,2BACnBM,yBACA;AACAF,6BAAqBxB,kBACnBl8M,MAAAA,MAAEi1B,gBAAgBwoL,gBAAgB,GAClC,aACAxB,gBACF;AAAA,MACF;AAEA,UAAI,CAACJ,sBAAsB;AAGzB,mBAAW/tG,WAAW99G,MAAKkQ,IAAI,WAAW,GAAG;AAC3C,gBAAM;AAAA,YAAE5O,MAAAA;AAAAA,UAAK,IAAIw8G;AACjB,gBAAM8oG,aAAa,cAActlN,SAAQA,MAAKy7B;AAC9C,cAAI6pL,YAAY;AACd,gBAAI9oG,QAAQh8F,gBAAgB;AAAA,cAAE6d,QAAQ;AAAA,YAAK,CAAC,GAAG;AAC7C,kBAAI,CAACm+E,QAAQ5tG,IAAI,KAAK,EAAE0nK,qBAAoB,GAAI;AAC9C,sBAAM72K,OAAOO,MAAyBP;AACtC,sBAAM2mN,sBAAkB5C,MAAAA,oBACtB/jN,MACA0mN,aACAA,YAAY/lE,YAAY,aAAa,CACvC;AACA,oBAAIgmE,mBAAmB,MAAM;AAI3BpmN,kBAAAA,MAAKP,MAAMiP,MAAC,MAACmoD,UAAUuvJ,gBAAgB7sL,IAAI;AAC3C8yL,yCAAuBjlN,KAAKg/M,eAAe;AAAA,gBAC7C;AAAA,cACF;AAAA,YACF,WAAWiG,uBAAuBlgN,SAAS,GAAG;AAC5C25M,8CACEuG,wBACA7vG,OACF;AACA6vG,uCAAyB,CAAE;AAAA,YAC7B;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACLnH,gCAA0BxmN,OAAMy+M,SAAS;AACzCuO,qBAAeh9M,MAAC,MAACmoD,UAAUn4D,MAAKsB,KAAKi7B,EAAE;AAAA,IACzC;AAEA,QAAIsxL;AACJ,QAAIC,iCAAiC;AAErC,QAAIC,8BAA8B,CAAE;AACpC,QAAIC,oCAAoD,CAAE;AAE1D,QAAInC,sBAAsB;AACxB,UAAIxD,gBAAgB;AAClB,cAAMF,gBAAgBn4M,MAAC,MAACi2B,eAAej2B,MAAAA,MAAEmoD,UAAUkwJ,cAAc,GAAG,CAClEr4M,MAAC,MAACg6B,eAAgB,CAAA,CACnB;AACD+jL,oCAA4BrlN,KAAKy/M,aAAa;AAAA,MAChD;AACA,iBAAWrqG,WAAW3iF,MAAM;AAC1B,YAAI,CAACmvL,8BAA8BxsG,OAAO,GAAG;AAC3C,cACEkwG,kCAAkCvgN,SAAS,KAC3CqwG,QAAQ37F,cAAa,GACrB;AACA2lM,4CACEkG,mCACAlwG,OACF;AACAkwG,gDAAoC,CAAE;AAAA,UACxC;AACA;AAAA,QACF;AAEA,cAAM;AAAA,UAAE1sN,MAAAA;AAAAA,QAAK,IAAIw8G;AACjB,cAAMlhF,cAAat7B,MAAKs7B;AAExB,cAAM8oL,iBAAgB,CAAC,EAAC9oL,eAAAA,QAAAA,YAAYnvB;AAEpC,cAAMm5M,aAAa,cAActlN,SAAQA,MAAKy7B;AAE9C,YAAIhvB,OAAO;AAEX,YAAIzM,MAAKP,IAAI0R,SAAS,eAAe;AACnC1E,iBAAOzM,MAAKP,IAAIw7B,GAAGxuB;AAAAA,QACrB,WAAW,CAAC64M,cAActlN,MAAKP,IAAI0R,SAAS,cAAc;AACxD1E,iBAAOzM,MAAKP,IAAIgN;AAAAA,QAClB;AACA,YAAIg8M;AACJ,YAAID;AAEJ,YAAIpE,gBAAe;AACjB,gBAAM;AAAA,YAAEyH;AAAAA,YAAgBC;AAAAA,YAAe7D;AAAAA,UAAe,IACpD2D,iBAAiBtwL,WAAU;AAC7B,gBAAM;AAAA,YAAE8sL;AAAAA,YAAMC;AAAAA,UAAU,IAAGL,uBACzB1sL,aACA2sL,gBACA1vM,QACF;AACAiwM,+BAAqBH;AACrBI,4BAAkBL,KAAKj8M,WAAW,IAAIi8M,KAAK,CAAC,IAAI15M,MAAAA,MAAEi1B,gBAAgBykL,IAAI;AACtE,cAAI0D,iBAAkBD,kBAAkBG,yBAA0B;AAChEvD,8BAAkBmC,kBAChBnC,iBACAh8M,OAAO,QACP4/M,sBACF;AAAA,UACF;AAAA,QACF;AAEA,YAAI/G,YAAY;AACd,cAAI,CAAC9oG,QAAQ5tG,IAAI,KAAK,EAAE0nK,qBAAoB,GAAI;AAC9C,kBAAM72K,OAAMO,MAAKP;AACjB,kBAAM2mN,mBAAkB5C,GAAAA,MAAkB,oBACxCY,iBAAgBkF,wBAAwB3qN,QAAOc,IAAG,IAAIA,MACtD0mN,aACAA,YAAY/lE,YAAY,aAAa,CACvC;AACA,gBAAIgmE,mBAAmB,MAAM;AAI3B,kBAAIkE,mBAAmB9tG,QAAQh8F,gBAAgB;AAAA,gBAAE6d,QAAQ;AAAA,cAAK,CAAC,GAAG;AAChEr+B,gBAAAA,MAAKP,MAAMiP,MAAC,MAACmoD,UAAUuvJ,gBAAgB7sL,IAAI;AAC3C8yL,uCAAuBjlN,KAAKg/M,eAAe;AAAA,cAC7C,OAAO;AACLpmN,gBAAAA,MAAKP,MAAM2mN;AAAAA,cACb;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAEA,cAAM;AAAA,UAAE3mN,KAAAA;AAAAA,UAAK4+B,QAAQ2/D;AAAAA,QAAS,IAAIh+F;AAElC,cAAMstB,YAAY7tB,KAAI0R,SAAS;AAE/B,cAAM8qB,OAAO6rL,eAAetrG,OAAO;AAEnC,YAAIlvF,aAAa,CAAC0wE,UAAU;AAC1B,cAAIomH,gBAAe;AACjBoI,6CAAiC;AAAA,UACnC;AACA,cAAI99M,MAAAA,MAAEgS,uBAAuB1gB,KAAI,KAAK,CAACusN,yBAAyB;AAC9DA,sCAA0B9sN;AAAAA,UAC5B;AAAA,QACF;AAEA,YAAI+8G,QAAQ98F,cAAc;AAAA,UAAEuc,MAAM;AAAA,QAAc,CAAC,GAAG;AAClD0qL,4BAAkBnqG;AAAAA,QACpB;AAEA,YAAI6rB;AACJ,YAAI+7E,gBAAe;AACjB,cAAIsE;AAIJ,cAAIiE;AAEJ,cAAIrH,YAAY;AACdqH,uBAAW9G,uBACTrpG,QAAQ5tG,IAAI,KAAK,CACnB;AAAA,UACF,WAAWnP,KAAI0R,SAAS,eAAe;AACrCw7M,uBAAWj+M,MAAC,MAAC83B,cAAc/mC,KAAIw7B,GAAGxuB,IAAI;AAAA,UACxC,WAAWhN,KAAI0R,SAAS,cAAc;AACpCw7M,uBAAWj+M,YAAE83B,cAAc/mC,KAAIgN,IAAI;AAAA,UACrC,OAAO;AACLkgN,uBAAWj+M,MAAC,MAACmoD,UAAUp3D,IAAmB;AAAA,UAC5C;AAEA,cAAIw8B,SAASsrL,UAAU;AACrB,kBAAM;AAAA,cAAE1nN,OAAAA;AAAAA,YAAO,IAAG28G,QAAQx8G;AAE1B,kBAAM26B,SAC6BpiB,aAAY,aAAcylF,WACvD,CAAE,IACF,CAACtvF,MAAC,MAACg6B,gBAAgB;AAEzB,gBAAI7oC,QAAO;AACT86B,qBAAOvzB,KAAKsH,MAAAA,MAAEmoD,UAAUh3D,MAAK,CAAC;AAAA,YAChC;AAEA,kBAAMyrN,QAAQZ,wBAAyB;AACvC,kBAAMkC,iBAAiB9H,yBACrBqB,aACA,QAAQ15M,IAAI,EACd;AACA,kBAAMogN,WAAWn+M,MAAC,MAACi2B,eACjBj2B,MAAAA,MAAEmoD,UAAU+1J,cAAc,GAC1BjyL,MACF;AAEA,kBAAM4wL,WAAWtG,sBAAsBqG,OAAOuB,UAAU7uH,QAAQ;AAChE,kBAAM,CAACgnH,OAAO,IAAIxoG,QAAQ+nC,YAAYgnE,QAAQ;AAE9C,gBAAIj+L,WAAW;AACbo7L,+BAAiB/C,yBAAyB2F,OAAO/yM,QAAO;AAExD,oBAAMmlM,QAAQoH,yBAAyBqB,aAAa,OAAO15M,IAAI,EAAE;AACjE,oBAAMmxM,QAAQkH,yBAAyBqB,aAAa,OAAO15M,IAAI,EAAE;AAEjEo8M,kCAAoBtwM,UAASysM,SAASvlN,MAAKi+M,OAAOE,OAAO5/G,QAAQ;AAEjEqqC,uBAAS,CAACukF,gBAAgBlP,OAAOE,KAAK;AAAA,YACxC,OAAO;AACLsH,wCAA0BxmN,OAAMy+M,SAAS;AACzCgI,mCACEzmN,MAAKsB,KAAKi7B,IACV+pL,SACAt2M,MAAAA,MAAEmoD,UAAUp3D,IAAG,GACfiP,YAAE6M,uBAAuB9b,IAAG,IACxBiP,YAAEmoD,UAAUp3D,KAAI85B,IAAoB,IACpC7qB,YAAEmoD,UAAUp3D,IAAG,GACnB6rN,OACAhG,YACAtnH,UACAzlF,QACF;AACA8vH,uBAAS,CAACukF,cAAc;AAAA,YAC1B;AAAA,UACF,WAAW3wL,SAASqrL,OAAO;AACzB,kBAAMwF,SAAShI,yBAAyBqB,aAAa,QAAQ15M,IAAI,EAAE;AACnE,kBAAM8iK,YACJ/yD,QACA5tG,IAAI,OAAO;AAEb,kBAAM4oB,OAC6Bjf,aAAY,aAAcylF,WACvD,CAAE,IACF,CAACtvF,MAAC,MAACg6B,gBAAgB;AACzB,gBAAI6mI,UAAUvvK,KAAMw3B,MAAKpwB,KAAKmoK,UAAUvvK,IAAI;AAE5CuvK,sBAAUhrB,YAAY71I,MAAC,MAACi2B,eAAej2B,MAAAA,MAAEmoD,UAAUi2J,MAAM,GAAGt1L,IAAI,CAAC;AAEjE6wG,qBAAS,CAACykF,MAAM;AAEhB,gBAAIx/L,WAAW;AACbo7L,+BAAiB/C,yBAAyBlmN,MAAK8Y,QAAO;AAAA,YACxD;AAAA,UACD,WAAU+U,WAAW;AACpB,kBAAMy/L,SAASjI,yBAAyBqB,aAAa,QAAQ15M,IAAI,EAAE;AACnE47H,qBAAS,CAAC0kF,MAAM;AAEhB,kBAAMC,gBAAgB,IAAIlR,qBAAAA,QAAc;AAAA,cACtCI;AAAAA,cACAF,YAAYx/F;AAAAA,cACZ2+F,WAAWuQ;AAAAA,cACXzP,UAAUv9M,MAAKsB,KAAKi9B;AAAAA,cACpBp+B,MAAMF,OAAME;AAAAA,cACZu9M,eAAesP;AAAAA,YACjB,CAAC;AAEDsB,0BAAcr3M,QAAS;AAEvB+yM,6BAAiB,CACfU,0CACE5sG,QAAQx8G,IACV,CAAC;AAGH,gBAAIi8B,SAASwrL,UAAUxrL,SAASyrL,QAAQ;AACtCoB,kCACEtsG,SACA9tG,YAAEmoD,UAAUp3D,IAAG,GACfiP,MAAAA,MAAEmoD,UAAUk2J,MAAM,GAClB/uH,QACF;AAAA,YACF,OAAO;AACL,oBAAMh+F,QAAOw8G,QAAQx8G;AAGrBtB,cAAAA,MAAKsB,KAAK65B,KAAKA,KAAK1B,QAClBzpB,MAAAA,MAAEk/B,qBAAqBnuC,MAAKiP,MAAAA,MAAEmoD,UAAUk2J,MAAM,GAAG,IAAI/sN,MAAKq+B,MAAM,CAClE;AAEA0rL,sCAAwBpvM,IAAIlb,KAAIw7B,GAAGxuB,IAAI;AAEvC+vG,sBAAQgoC,OAAQ;AAAA,YAClB;AAAA,UACF;AAEAgnE,+BAAqBpkN,KAAK;AAAA,YACxB60B;AAAAA,YACAwsL;AAAAA,YACAD;AAAAA,YACA/7M,MAAMkgN;AAAAA,YACN3uH;AAAAA,YACA0qH;AAAAA,YACArgF;AAAAA,UACF,CAAC;AAED,cAAI7rB,QAAQx8G,MAAM;AAChBw8G,oBAAQx8G,KAAKs7B,aAAa;AAAA,UAC5B;AAAA,QACF;AAEA,YAAIgqL,cAAc+G,uBAAuBlgN,SAAS,GAAG;AACnD,cAAIm+M,mBAAmB9tG,QAAQh8F,gBAAgB;AAAA,YAAE6d,QAAQ;AAAA,UAAM,CAAA,EAAG;AAAA,eAM3D;AACLynL,4CACEuG,wBACCpwL,SAASsrL,WACN/qG,QAAQ07D,eAAgB,IACxB17D,OACN;AACA6vG,qCAAyB,CAAE;AAAA,UAC7B;AAAA,QACF;AAEA,YACEI,4BAA4BtgN,SAAS,KACrC,CAAC6xF,aACA/hE,SAASqrL,SAASrrL,SAASsrL,WAC5B;AACAhB,+CACEkG,6BACAjwG,OACF;AACAiwG,wCAA8B,CAAE;AAAA,QAClC;AAEA,YACEC,kCAAkCvgN,SAAS,KAC3C6xF,aACC/hE,SAASqrL,SAASrrL,SAASsrL,WAC5B;AACAhB,+CACEmG,mCACAlwG,OACF;AACAkwG,8CAAoC,CAAE;AAAA,QACxC;AAEA,YAAItI,kBAAiB7rM,aAAY,WAAW;AAC1C,cAAI0jB,SAASqrL,SAASrrL,SAASsrL,UAAU;AACvC,kBAAM0F,cAAcnI,yBAClBqB,aACA,cAAc15M,IAAI,EACpB;AACA47H,mBAAOjhI,KAAK6lN,WAAW;AACvB,kBAAMC,gBAAgBx+M,MAAAA,MAAEi2B,eACtBj2B,MAAC,MAACmoD,UAAUo2J,WAAW,GACvBjvH,WAAW,CAAA,IAAK,CAACtvF,MAAAA,MAAEg6B,eAAc,CAAE,CACrC;AACA,gBAAI,CAACs1D,UAAU;AACbyuH,0CAA4BrlN,KAAK8lN,aAAa;AAAA,YAChD,OAAO;AACLR,gDAAkCtlN,KAAK8lN,aAAa;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAIb,uBAAuBlgN,SAAS,GAAG;AACrC,YAAM+sB,WAAWx6B,MAAKkQ,IAAI,WAAW;AACrC,UAAIu+M;AACJ,eAASjhN,IAAIgtB,SAAS/sB,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC7C,cAAMxN,QAAOw6B,SAAShtB,CAAC;AACvB,cAAMlM,QAAOtB,MAAKsB;AAClB,YAAIA,MAAKy7B,UAAU;AACjB,cAAI6uL,mBAAmB57M,MAAAA,MAAE8R,gBAAgBxgB,OAAM;AAAA,YAAEq+B,QAAQ;AAAA,UAAK,CAAC,GAAG;AAChE;AAAA,UACF;AACA8uL,gCAAsBzuN;AACtB;AAAA,QACF;AAAA,MACF;AACA,UAAIyuN,uBAAuB,MAAM;AAC/BlH,uCACEoG,wBACAc,mBACF;AACAd,iCAAyB,CAAE;AAAA,MAC7B;AAAA,IAKF;AAEA,QAAII,4BAA4BtgN,SAAS,GAAG;AAC1C,YAAMi7M,iBAAiB,CAAC,CAAC1oN,MAAKsB,KAAKi9B;AACnC,UAAI0pL,iBAAiB;AACnB,YAAIS,gBAAgB;AAClBH,qDACEwF,6BACA9F,iBACAI,cACF;AAAA,QACF,OAAO;AACLL,0CACE+F,6BACA9F,eACF;AAAA,QACF;AAAA,MACF,OAAO;AACLjoN,QAAAA,MAAKsB,KAAK65B,KAAKA,KAAK1B,QAClBgvL,iCACEsF,6BACArF,cACF,CACF;AAAA,MACF;AACAqF,oCAA8B,CAAE;AAAA,IAClC;AAEA,QAAIC,kCAAkCvgN,SAAS,GAAG;AAChDzN,MAAAA,MAAKsB,KAAK65B,KAAKA,KAAKzyB,KAClBigN,iCAAiCqF,iCAAiC,CACpE;AACAA,0CAAoC,CAAE;AAAA,IACxC;AAEA,UAAMU,6BACJrF,sBAAsByD,oBAAoB;AAE5C,UAAM6B,qBAAqB/E,wBACO/vM,aAAY,YACxCizM,uBACA4B,4BACJ70M,QACF;AAEA,UAAM+0M,gBAAgC3E,+BACpCyE,0BACF;AAEA,QAAIrG,gBAAgB;AAClBuG,oBAAclmN,KAAK2/M,cAAc;AAAA,IACnC;AAEA,QAAI+D,iBAAiB;AACnBwC,oBAAclmN,KAAK0jN,eAAe;AAAA,IACpC;AAEA,UAAMyC,cAA8B,CAAE;AACtC,QAAIC,oBAAoB;AACxB,UAAMC,gBACJhC,kBAAkB/8M,MAAAA,MAAEi2B,eAAej2B,MAAC,MAACmoD,UAAU40J,cAAc,GAAG,CAAA,CAAE;AAEpE,QAAIiC,oBAAoBhvN;AACxB,UAAMivN,gBAAgBjvN,MAAKsB;AAE3B,UAAM4tN,iBAA2C,CAAE;AACnD,QAAItD,iBAAiB;AACnBiD,kBAAYnmN,KAAKskN,cAAcD,cAAc;AAC7C,YAAMoC,UAIA,CAAE;AACRnvN,MAAAA,MAAKkQ,IAAI,WAAW,EAAEkqB,QAAQ0jF,aAAW;AAGvC,YAAIA,QAAQ37F,iBAAiB;AAC3B,cAAI+oM,yBAAyBptG,SAAS0uG,oBAAoB,GAAG;AAC3D,kBAAM4C,uBAAuBlD,kBAC3B1B,6BAA6B1sG,QAAQx8G,IAAI,GACzC,eACA4tN,cACF;AACAlB,8CAAkCtlN,KAChCsH,MAAAA,MAAEi2B,eACAj2B,MAAAA,MAAEy4B,iBAAiB2mL,sBAAsBp/M,MAAAA,MAAE0qB,WAAW,MAAM,CAAC,GAC7D,CAAC1qB,MAAC,MAACg6B,eAAgB,CAAA,CACrB,CACF;AAAA,UACF,OAAO;AACLgkL,8CAAkCtlN,KAChC6hN,kBAAkBzsG,QAAQx8G,IAAI,CAChC;AAAA,UACF;AACAw8G,kBAAQgoC,OAAQ;AAChB;AAAA,QACF;AAEA,aACGhoC,QAAQh8F,qBAAqBg8F,QAAQ97F,6BACtC87F,QAAQx8G,KAAKq+B,QACb;AACA,gBAAMkxI,YACJ/yD,QACA5tG,IAAI,OAAO;AACb,cAAIg7M,yBAAyBr6C,WAAW27C,oBAAoB,GAAG;AAC7D,kBAAM6C,sBAAsBnD,kBAC1BzB,0BAA0B55C,UAAUvvK,IAAI,GACxC,cACA4tN,cACF;AACAr+C,sBAAUhrB,YACR71I,MAAAA,MAAEi2B,eACAj2B,MAAAA,MAAEy4B,iBAAiB4mL,qBAAqBr/M,MAAAA,MAAE0qB,WAAW,MAAM,CAAC,GAC5D,CAAC1qB,MAAC,MAACg6B,eAAgB,CAAA,CACrB,CACF;AAAA,UACF;AACA,cAAIgkL,kCAAkCvgN,SAAS,GAAG;AAChDo6M,iDACEmG,mCACAlwG,OACF;AACAkwG,gDAAoC,CAAE;AAAA,UACxC;AACAlwG,kBAAQx8G,KAAKq+B,SAAS;AACtBwvL,kBAAQzmN,KAAKo1G,QAAQx8G,IAAI;AACzBw8G,kBAAQgoC,OAAQ;AAAA,QAClB,WAAWhoC,QAAQ77F,qBAAqB;AAAA,UAAE0d,QAAQ;AAAA,QAAK,CAAC,GAAG;AAGzD,cAAIurL,yBAAyBptG,SAAS0uG,oBAAoB,GAAG;AAC3D,kBAAM8B,gBAAgB,IAAIlR,qBAAAA,QAAc;AAAA,cACtCI;AAAAA,cACAF,YAAYx/F;AAAAA,cACZ2+F,WAAWuQ;AAAAA,cACXzP,UAAUv9M,MAAKsB,KAAKi9B;AAAAA,cACpBp+B,MAAMF,OAAME;AAAAA,cACZu9M,eAAesP;AAAAA,YACjB,CAAC;AAEDsB,0BAAcr3M,QAAS;AAEvB,kBAAMq4M,0BAA0BpD,kBAC9BxB,0CAA0C5sG,QAAQx8G,IAAI,GACtDw8G,QAAQ5tG,IAAI,QAAQ,EAAE5O,KAAKyM,MAC3BmhN,cACF;AAEA,gBAAI1D,sBAAsB;AACxB1tG,sBAAQx8G,KAAK26B,SAAS,CAACjsB,MAAC,MAACo5B,YAAYp5B,YAAE0qB,WAAW,KAAK,CAAC,CAAC;AACzDojF,sBAAQx8G,KAAK65B,OAAOnrB,MAAC,MAAC61B,eAAe,CACnC71B,MAAAA,MAAEs5B,gBACAt5B,YAAEi2B,eACAj2B,MAAC,MAACy4B,iBACA6mL,yBACAt/M,YAAE0qB,WAAW,OAAO,CACtB,GACA,CAAC1qB,MAAC,MAACg6B,eAAc,GAAIh6B,MAAAA,MAAE0qB,WAAW,KAAK,CAAC,CAC1C,CACF,CAAC,CACF;AAAA,YACH,OAAO;AACLojF,sBAAQx8G,KAAK26B,SAAS6hF,QAAQx8G,KAAK26B,OAAO7oB,IAAI,CAACwiH,GAAGpoH,MAAM;AACtD,oBAAIwC,YAAEgP,cAAc42G,CAAC,GAAG;AACtB,yBAAO5lH,MAAAA,MAAEo5B,YAAYp5B,MAAAA,MAAE0qB,WAAW,KAAK,CAAC;AAAA,gBAC1C,OAAO;AACL,yBAAO1qB,YAAE0qB,WAAW,MAAMltB,CAAC;AAAA,gBAC7B;AAAA,cACF,CAAC;AACDswG,sBAAQx8G,KAAK65B,OAAOnrB,MAAC,MAAC61B,eAAe,CACnC71B,MAAAA,MAAEs5B,gBACAt5B,YAAEi2B,eACAj2B,MAAC,MAACy4B,iBACA6mL,yBACAt/M,YAAE0qB,WAAW,OAAO,CACtB,GACA,CAAC1qB,MAAC,MAACg6B,eAAc,GAAIh6B,MAAAA,MAAE0qB,WAAW,WAAW,CAAC,CAChD,CACF,CAAC,CACF;AAAA,YACH;AAAA,UACF;AACAojF,kBAAQx8G,KAAKq+B,SAAS;AACtBwvL,kBAAQzmN,KAAKo1G,QAAQx8G,IAAI;AACzBw8G,kBAAQgoC,OAAQ;AAAA,QAClB;AAAA,MACF,CAAC;AAED,UAAIqpE,QAAQ1hN,SAAS,KAAKugN,kCAAkCvgN,SAAS,GAAG;AACtE,cAAM8hN,eAAep9I,MAAAA,SAASn3C,WAAWkoC;AAAAA,wBACvBjjE,OAAMomJ,UAAU,UAAU,CAAC;AAAA;AAE7CkpE,qBAAap0L,KAAKA,OAAO,CAOvBnrB,MAAC,MAAC8+B,cACA9+B,MAAC,MAAC4qD,aAAaq0J,aAAa,GAC5Bt7M,QACAA,QACAA,QACe,MACF,IACf,GACA,GAAGw7M,OAAO;AAGZ,cAAMK,kBAAkC,CAAE;AAE1C,cAAMprC,UAAUp0K,MAAC,MAAC24B,cAAc4mL,cAAc,CAAA,CAAE;AAEhD,YAAIvB,kCAAkCvgN,SAAS,GAAG;AAChD+hN,0BAAgB9mN,KAAK,GAAGslN,iCAAiC;AAAA,QAC3D;AACA,YAAIe,eAAe;AACjBD,8BAAoB;AACpBU,0BAAgB9mN,KAAKqmN,aAAa;AAAA,QACpC;AACA,YAAIS,gBAAgB/hN,SAAS,GAAG;AAC9B+hN,0BAAgB/1L,QACdzpB,MAAAA,MAAEi2B,eAAej2B,MAAC,MAACkhK,MAAK,GAAI,CAAClhK,YAAEmoD,UAAU60J,YAAY,CAAC,CAAC,CACzD;AAGAuC,uBAAap0L,KAAKA,KAAKzyB,KACrB+/M,iCACE+G,iBACqB,KACvB,CACF;AAAA,QACF,OAAO;AACLprC,kBAAQ/oJ,UAAU3yB,KAAKsH,MAAC,MAACmoD,UAAU60J,YAAY,CAAC;AAAA,QAClD;AAEA,cAAM,CAAC1G,OAAO,IAAItmN,MAAK6lJ,YAAYu+B,OAAO;AAG1C4qC,4BACE1I,QAAQp2M,IAAI,QAAQ,EAAEA,IAAI,MAAM,EAChCA,IAAI,YAAY;AAAA,MACpB;AAAA,IACF;AACA,QAAI,CAAC4+M,qBAAqBC,eAAe;AACvC/uN,MAAAA,MAAKsB,KAAK65B,KAAKA,KAAKzyB,KAClBsH,MAAC,MAACw/B,YAAY,CAACx/B,YAAE82B,oBAAoBioL,aAAa,CAAC,CAAC,CACtD;AAAA,IACF;AAEA,QAAI;AAAA,MAAExwL;AAAAA,IAAW,IAAI0wL;AACrB,QACE1wL,eAEE1kB,aAAY,aACZA,aAAY,YACd;AACA,YAAM0iB,KAAKv8B,MAAKogE,MAAM8hF,sBAAsB3jH,UAAU;AACtD,UAAIhC,IAAI;AACN0yL,sBAAc1wL,aAAavuB,MAAAA,MAAEm1B,qBAAqB,KAAK5I,IAAIgC,UAAU;AACrEA,qBAAahC;AAAAA,MACf;AAAA,IACF;AAEA,UAAMkzL,wBAAwBz/M,MAAAA,MAAEw/B,YAAY,CAAA,CAAE;AAC9Cy/K,kBAAc9zL,KAAKA,KAAK1B,QAAQg2L,qBAAqB;AACrD,UAAMC,gBAAgBD,sBAAsBt0L;AAC5C,QAAIwyL,uBAAuBlgN,SAAS,GAAG;AACrC,YAAM+sB,WAAWw0L,kBAAkB9+M,IAAI,WAAW;AAClD,UAAIy/M;AACJ,iBAAW3vN,SAAQw6B,UAAU;AAC3B,aACGx6B,MAAK8hB,gBAAe,KAAM9hB,MAAKghB,cAAe,MAC9ChhB,MAAKsB,KAAuBi8B,SAAS,eACtC;AACAoyL,+BAAqB3vN;AACrB;AAAA,QACF;AAAA,MACF;AACA,UAAI2vN,sBAAsB,MAAM;AAE9B1E,6BAAqB0E,kBAAkB;AACvCvI,wCACEuG,wBACAgC,kBACF;AAAA,MACF,OAAO;AAILV,sBAAc9zL,KAAKA,KAAK1B,QACtBzpB,MAAAA,MAAE8+B,cACA9+B,MAAC,MAACw5B,mBAAmB,CACnB,GAAGmkL,wBACH39M,MAAC,MAAC83B,cAAc,GAAG,CAAC,CACrB,GACDn0B,QACAA,QACAA,QACe,MACF,IACf,CACF;AACA+7M,sBAAchnN,KACZsH,MAAAA,MAAE82B,oBACA92B,MAAC,MAAC+zB,gBACA,UACA/zB,YAAEy4B,iBAAiBz4B,MAAAA,MAAEg6B,kBAAkBh6B,MAAC,MAAC0qB,WAAW,GAAG,CAAC,CAC1D,CACF,CACF;AAAA,MACF;AACAizL,+BAAyB,CAAE;AAAA,IAC7B;AAEA+B,kBAAchnN,KACZsH,MAAC,MAAC82B,oBACA8oL,uBACEhB,eACAC,aACAF,qBAAkBhD,sBAClB+B,uBAAkB,OAAA/B,sBAAI37M,MAAC,MAACi1B,gBAAgBwoL,gBAAgB,GACxDz9M,MAAC,MAACg4B,eAAewlL,oBAAoB,GACrCM,iCAAiCD,0BAA0B,MAC3DvB,cACAt8M,MAAC,MAACmoD,UAAU55B,UAAU,GACtBt+B,QACA4Z,QACF,CACF,CACF;AACA,QAAIuyM,iBAAiB;AACnBsD,oBAAchnN,KACZsH,MAAC,MAAC82B,oBACA92B,MAAC,MAACi2B,eAAej2B,MAAC,MAACmoD,UAAUi0J,eAAe,GAAG,CAACp8M,MAAC,MAACg6B,eAAc,CAAE,CAAC,CACrE,CACF;AAAA,IACF;AACA,QAAIklL,eAAezhN,SAAS,GAAG;AAC7BiiN,oBAAchnN,KACZ,GAAGwmN,eAAe97M,IAAI4uF,UAAQhyF,YAAE82B,oBAAoBk7D,IAAI,CAAC,CAC3D;AAAA,IACF;AAIAhiG,IAAAA,MAAK8rK,aAAamgD,iBAAiB74M,IAAI4uF,UAAQhyF,MAAAA,MAAE82B,oBAAoBk7D,IAAI,CAAC,CAAC;AAE3E,QAAIurH,gCAAgC;AAClC,YAAMsC,mBAAmBpI,YAAY7mE,WAAWosE,aAAaj/M,IAAI;AACjE,UAAI,CAAC8hN,iBAAiBvxE,mBAAmB7wI,QAAQ;AAE/CzN,QAAAA,MAAK8rK,aACH97J,MAAAA,MAAEw6B,oBAAoB,OAAO,CAC3Bx6B,MAAAA,MAAE06B,mBAAmB16B,MAAC,MAACmoD,UAAU60J,YAAY,CAAC,CAAC,CAChD,CACH;AAAA,MACF,OAAO;AACL,cAAM8C,iCAAiCrI,YAAYhmE,sBACjD,MAAMurE,aAAaj/M,IACrB;AACA,cAAMgiN,yBAAyB/C;AAC/BhtN,QAAAA,MAAK2tK,oBAAoB,CACvB39J,MAAAA,MAAEw6B,oBAAoB,OAAO,CAC3Bx6B,MAAC,MAAC06B,mBAAmB16B,MAAAA,MAAEmoD,UAAU43J,sBAAsB,CAAC,GACxD//M,MAAAA,MAAE06B,mBAAmBolL,8BAA8B,CAAC,CACrD,GACD9/M,MAAAA,MAAE61B,eAAe,CACf71B,MAAC,MAACw6B,oBAAoB,OAAO,CAC3Bx6B,MAAC,MAAC06B,mBAAmB16B,MAAC,MAACmoD,UAAU60J,YAAY,CAAC,CAAC,CAChD,GAEDhtN,MAAKsB,MACL0O,MAAAA,MAAE82B,oBACA92B,MAAAA,MAAEm1B,qBACA,KACAn1B,MAAAA,MAAEmoD,UAAU23J,8BAA8B,GAC1C9/M,MAAAA,MAAEmoD,UAAU60J,YAAY,CAC1B,CACF,CAAC,CACF,GACDh9M,MAAAA,MAAE82B,oBACA92B,MAAAA,MAAEm1B,qBACA,KACAn1B,MAAAA,MAAEmoD,UAAU43J,sBAAsB,GAClC//M,MAAAA,MAAEmoD,UAAU23J,8BAA8B,CAC5C,CACF,CAAC,CACF;AAAA,MACH;AAAA,IACF;AAEA,QAAIzE,wBAAwBx8H,OAAO,GAAG;AACpCu8H,oCAA8BprN,OAAMqrN,uBAAuB;AAAA,IAC7D;AAGArrN,IAAAA,MAAKogE,MAAM0jF,MAAO;AAElB,WAAO9jJ;AAAAA,EACT;AAEA,WAAS4vN,uBACPhB,eACAC,aACAF,oBACAlB,kBACAD,sBACAwC,uBACA1D,cACA/tL,YACAt+B,QACA4Z,UACA;AACA,QAAIssG,KAAKi6F;AACT,UAAMtnL,OAAuB,CAC3BwzL,eACI3B,0BAA0B1qN,QAAOqsN,YAAY,IAC7Ct8M,MAAAA,MAAEg6B,kBACNyjL,kBACAkB,kBAAkB;AAGe;AACjC,UAAI90M,aAAY,WAAW;AACzBif,aAAKzd,OAAO,GAAG,GAAGszM,oBAAoBlB,gBAAgB;AAAA,MACxD;AACA,UACE5zM,aAAY,aACXA,aAAY,aAAa,CAAC5Z,OAAM8rL,gBAAgB,gBAAgB,GACjE;AACA5lE,cAAMn2G,MAAAA,MAAEk7B,aAAa,CAAC,GAAG0jL,eAAe,GAAGC,WAAW,CAAC;AACvDzO,cAAMpwM,MAAC,MAACi2B,eACNhmC,OAAMomJ,UAAUxsI,aAAY,YAAY,cAAc,eAAe,GACrEif,IACF;AACA,eAAO9oB,MAAAA,MAAEm1B,qBAAqB,KAAKghF,KAAKi6F,GAAG;AAAA,MAC7C,WAAWvmM,aAAY,WAAW;AAChCumM,cAAMpwM,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,gBAAgB,GAAGvtH,IAAI;AAAA,MAChE,WAAWjf,aAAY,WAAW;AAChC,YAAIm2M,uBAAuB;AACzBl3L,eAAKpwB,KAAKoiN,+BAA+BkF,qBAAqB,CAAC;AAAA,QACjE;AACA5P,cAAMpwM,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,eAAe,GAAGvtH,IAAI;AAAA,MAC/D,WAAWjf,aAAY,WAAW;AAChC,YACEm2M,yBACAzxL,cACAivL,qBAAqBrsN,UAAU,GAC/B;AACA23B,eAAKpwB,KAAK8kN,oBAAoB;AAAA,QAChC;AACA,YAAIwC,uBAAuB;AACzBl3L,eAAKpwB,KAAKoiN,+BAA+BkF,qBAAqB,CAAC;AAAA,QAChE,WAAUzxL,YAAY;AACrBzF,eAAKpwB,KAAKsH,MAAC,MAAC+zB,gBAAgB,QAAQ/zB,MAAAA,MAAEg4B,eAAe,CAAC,CAAC,CAAC;AAAA,QAC1D;AACA,YAAIzJ,WAAYzF,MAAKpwB,KAAK61B,UAAU;AACpC6hL,cAAMpwM,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,eAAe,GAAGvtH,IAAI;AAAA,MAC/D;AAAA,IACF;AACA,QAAoCjf,aAAY,WAAW;AACzD,UACEm2M,yBACAzxL,cACAivL,qBAAqBrsN,UAAU,GAC/B;AACA23B,aAAKpwB,KAAK8kN,oBAAoB;AAAA,MAChC;AACA,UAAIwC,uBAAuB;AACzBl3L,aAAKpwB,KAAKoiN,+BAA+BkF,qBAAqB,CAAC;AAAA,MAChE,WAAUzxL,YAAY;AACrBzF,aAAKpwB,KAAKsH,MAAC,MAAC+zB,gBAAgB,QAAQ/zB,MAAAA,MAAEg4B,eAAe,CAAC,CAAC,CAAC;AAAA,MAC1D;AACA,UAAIzJ,WAAYzF,MAAKpwB,KAAK61B,UAAU;AACpC6hL,YAAMpwM,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,eAAe,GAAGvtH,IAAI;AAAA,IAC/D;AAIA,QAAI81L,cAAcnhN,SAAS,GAAG;AAC5B,UAAIohN,YAAYphN,SAAS,GAAG;AAC1B04G,cAAMn2G,YAAEs9B,cAAc,CACpBt9B,MAAAA,MAAEk5B,eAAel5B,YAAE0qB,WAAW,GAAG,GAAG1qB,MAAC,MAACk7B,aAAa0jL,aAAa,CAAC,GACjE5+M,YAAEk5B,eAAel5B,MAAC,MAAC0qB,WAAW,GAAG,GAAG1qB,MAAAA,MAAEk7B,aAAa2jL,WAAW,CAAC,CAAC,CACjE;AAAA,MACH,OAAO;AACL1oG,cAAMn2G,MAAC,MAACk7B,aAAa0jL,aAAa;AAElCxO,cAAMpwM,MAAC,MAACy4B,iBAAiB23K,KAAKpwM,MAAAA,MAAE0qB,WAAW,GAAG,GAAG,OAAO,KAAK;AAAA,MAC/D;AAAA,IACF,OAAO;AAELyrF,YAAMn2G,MAAC,MAACk7B,aAAa2jL,WAAW;AAEhCzO,YAAMpwM,MAAC,MAACy4B,iBAAiB23K,KAAKpwM,MAAAA,MAAE0qB,WAAW,GAAG,GAAG,OAAO,KAAK;AAAA,IAC/D;AAEA,WAAO1qB,MAAAA,MAAEm1B,qBAAqB,KAAKghF,KAAKi6F,GAAG;AAAA,EAC7C;AAEA,WAAS6P,WACP3uN,OACA;AACA,WAAOA,MAAKmR,SAAS,eACjBnR,MAAKyM,SAAS,cACdzM,MAAKH,UAAU;AAAA,EACrB;AAEA,WAASsrN,YAAYnrN,OAAyC;AAC5D,WAAOA,MAAKs7B,cAAct7B,MAAKs7B,WAAWnvB,SAAS;AAAA,EACrD;AAEA,WAASyiN,uBAAuB5uN,OAAoB;AAClD,YAAQA,MAAKmR,MAAI;AAAA,MACf,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAOg6M,YAAYnrN,KAAI;AAAA,MACzB;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAEA,WAAS6uN,qBAAqB7uN,OAAe;AAC3C,WAAOmrN,YAAYnrN,KAAI,KAAKA,MAAK65B,KAAKA,KAAK01D,KAAKq/H,sBAAsB;AAAA,EACxE;AAGA,WAASE,+BACPC,aACAr2L,SAUA;AACA,aAASs2L,uBACPC,cAGAxvN,MACAd,QACgC;AAChC,cAAQc,KAAI0R,MAAI;AAAA,QACd,KAAK;AACH,iBAAOzC,YAAE83B,cAAc/mC,KAAII,KAAK;AAAA,QAClC,KAAK;AAAA,QACL,KAAK,iBAAiB;AACpB,gBAAMqvN,WAAWzvN,KAAII,QAAQ;AAC7BovN,uBAAargN,IAAI,KAAK,EAAE21I,YAAY71I,MAAAA,MAAE83B,cAAc0oL,QAAQ,CAAC;AAC7D,iBAAOxgN,MAAC,MAAC83B,cAAc0oL,QAAQ;AAAA,QACjC;AAAA,QACA,SAAS;AACP,gBAAM13E,MAAMy3E,aAAanwJ,MAAM8hF,sBAAsBnhJ,IAAG;AACxDwvN,uBACGrgN,IAAI,KAAK,EACT21I,YACC71I,MAAAA,MAAEm1B,qBACA,KACA2zG,KACA8xE,wBAAwB3qN,QAAOc,IAAG,CACpC,CACF;AACF,iBAAOiP,MAAC,MAACmoD,UAAU2gF,GAAG;AAAA,QACxB;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACLnuG,mBAAmB3qC,OAAMC,QAAO;AAC9B,cAAMs8B,KAAKv8B,MAAKsB,KAAKi7B;AACrB,YAAIA,GAAG9pB,SAAS,cAAc;AAC5B,gBAAM0xB,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,MAAM,CAAC;AAChE,cAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,kBAAMp2B,OAAOwuB,GAAGxuB;AAChBisB,oBAAQmK,aAAalkC,QAAO8N,IAAI;AAAA,UAClC;AAAA,QACF;AAAA,MACD;AAAA,MACDq3B,qBAAqBplC,OAAMC,QAAO;AAChC,cAAMs8B,KAAKv8B,MAAKsB,KAAKu5B;AACrB,YAAI0B,GAAG9pB,SAAS,cAAc;AAC5B,gBAAM0xB,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,OAAO,CAAC;AACjE,cAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,oBAAQnkC,MAAKsB,KAAKm5B,UAAQ;AAAA,cACxB,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AAAA,cACL,KAAK;AACHT,wBAAQmK,aAAalkC,QAAOs8B,GAAGxuB,IAAI;AAAA,YACvC;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAAA,MACDk9B,kBAAkBjrC,OAAMC,QAAO;AAC7B,cAAMs8B,KAAKv8B,MAAKsB,KAAKu5B;AACrB,YAAI0B,GAAG9pB,SAAS,cAAc;AAC5B,gBAAM0xB,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,OAAO,CAAC;AACjE,cAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,kBAAMp2B,OAAOwuB,GAAGxuB;AAChBisB,oBAAQmK,aAAalkC,QAAO8N,IAAI;AAAA,UAClC;AAAA,QACF;AAAA,MACD;AAAA,MAGDg7B,iBAAiB/oC,OAAMC,QAAO;AAC5B,mBAAWswN,gBAAgBvwN,MAAKkQ,IAAI,YAAY,GAAG;AACjD,cAAI,CAACqgN,aAAaxxM,mBAAoB;AACtC,gBAAM;AAAA,YAAEzd,MAAAA;AAAAA,UAAK,IAAIivN;AACjB,gBAAMh0L,KAAKj7B,MAAKP;AAChB,gBAAMojC,eAAc,GAAA65K,yCAA2B,6BAC7CuS,aAAargN,IAAI,OAAO,CAC1B;AACA,cAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,gBAAI,CAAC7iC,MAAKy7B,UAAU;AAElB,kBAAI,CAACkzL,WAAW1zL,EAAoC,GAAG;AACrD,oBAAIA,GAAG9pB,SAAS,cAAc;AAC5BunB,0BAAQmK,aAAalkC,QAAOs8B,GAAGxuB,IAAI;AAAA,gBACrC,OAAO;AACL,wBAAM0wM,YAAYzuM,MAAAA,MAAE83B,cACjBvL,GACEp7B,QAAQ,EACb;AACA64B,0BAAQmK,aAAalkC,QAAOw+M,SAAS;AAAA,gBACvC;AAAA,cACF;AAAA,YACF,OAAO;AACL,oBAAM3lE,MAAMw3E,uBACVC,cAEAh0L,IACAt8B,MACF;AACA+5B,sBAAQmK,aAAalkC,QAAO64I,GAAG;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAAA,MACD3pG,qBAAqBnvC,OAAMC,QAAO;AAChC,cAAM;AAAA,UAAEqB,MAAAA;AAAAA,QAAK,IAAItB;AACjB,cAAMmkC,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,OAAO,CAAC;AACjE,YAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,gBAAMs6K,YAAYzuM,MAAC,MAAC83B,cAAc,MAAMxmC,MAAKP,IAAIw7B,GAAGxuB,IAAI;AACxDisB,kBAAQmK,aAAalkC,QAAOw+M,SAAS;AAAA,QACvC;AAAA,MACD;AAAA,MACDxvK,sBAAsBjvC,OAAMC,QAAO;AACjC,cAAM;AAAA,UAAEqB,MAAAA;AAAAA,QAAK,IAAItB;AACjB,cAAMu8B,KAAKj7B,MAAKP;AAChB,cAAMojC,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,OAAO,CAAC;AACjE,YAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,cAAI,CAAC7iC,MAAKy7B,UAAU;AAClB,gBAAIR,GAAG9pB,SAAS,cAAc;AAC5BunB,sBAAQmK,aAAalkC,QAAOs8B,GAAGxuB,IAAI;AAAA,YACrC,WAAWwuB,GAAG9pB,SAAS,eAAe;AACpC,oBAAMgsM,YAAYzuM,MAAC,MAAC83B,cAAc,MAAMvL,GAAGA,GAAGxuB,IAAI;AAClDisB,sBAAQmK,aAAalkC,QAAOw+M,SAAS;AAAA,YACvC,OAAO;AACL,oBAAMA,YAAYzuM,MAAAA,MAAE83B,cACjBvL,GACEp7B,QAAQ,EACb;AACA64B,sBAAQmK,aAAalkC,QAAOw+M,SAAS;AAAA,YACvC;AAAA,UACF,OAAO;AACL,kBAAM3lE,MAAMw3E,uBACVtwN,OAEAu8B,IACAt8B,MACF;AACA+5B,oBAAQmK,aAAalkC,QAAO64I,GAAG;AAAA,UACjC;AAAA,QACF;AAAA,MACD;AAAA,MACD/pG,cAAc/uC,OAAMC,QAAO;AACzB,cAAM;AAAA,UAAEqB,MAAAA;AAAAA,QAAK,IAAItB;AACjB,cAAMu8B,KAAKj7B,MAAKP;AAChB,cAAMojC,eAAc,GAAA65K,yCAA2B,6BAACh+M,MAAKkQ,IAAI,OAAO,CAAC;AACjE,YAAImgN,YAAYlsL,WAAW,GAAG;AAC5B,cAAI,CAAC7iC,MAAKy7B,UAAU;AAClB,gBAAIR,GAAG9pB,SAAS,cAAc;AAC5BunB,sBAAQmK,aAAalkC,QAAOs8B,GAAGxuB,IAAI;AAAA,YACrC,OAAO;AACL,oBAAM0wM,YAAYzuM,MAAAA,MAAE83B,cACjBvL,GACEp7B,QAAQ,EACb;AACA64B,sBAAQmK,aAAalkC,QAAOw+M,SAAS;AAAA,YACvC;AAAA,UACF,OAAO;AACL,kBAAM3lE,MAAMw3E,uBAAuBtwN,OAAMu8B,IAAIt8B,MAAK;AAClD+5B,oBAAQmK,aAAalkC,QAAO64I,GAAG;AAAA,UACjC;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,EACH;AAEA,WAAS23E,oCAAoCzwN,OAAgB;AAC3D,WACEA,MAAKmgB,kBAAkB;AAAA,MAAEoc,IAAI;AAAA,IAAK,CAAC,KAAK4zL,qBAAqBnwN,MAAKsB,IAAI;AAAA,EAE1E;AAEA,WAAS8kN,yBAAyBhmJ,QAAcryD,MAAc;AAC5D,UAAMwuB,KAAK6jC,OAAMqhF,sBAAsB1zI,IAAI;AAC3CqyD,IAAAA,OAAM13D,KAAK;AAAA,MAAE6zB;AAAAA,MAAIgB,MAAM;AAAA,IAAM,CAAC;AAC9B,WAAOvtB,MAAC,MAACmoD,UAAU57B,EAAE;AAAA,EACvB;AAEe,WAAAllB,SACb;AAAA,IAAEoC;AAAAA,IAAeM;AAAAA,EAAsB,GACvC;AAAA,IAAEmvK;AAAAA,EAAe,GACjBrvK,UACAyf,WACc;AAAA,QAAAo3L,aAAAC;AAGP;AACL,UACE92M,aAAY,aACZA,aAAY,aACZA,aAAY,WACZ;AACAJ,sBAA+B,SAAU;AAAA,MAC3C,WAAWI,aAAY,WAAW;AAChCJ,sBAA+B,SAAU;AAAA,MAC3C,OAAO;AACLA,sBAA+B,SAAU;AAAA,MAC3C;AAAA,IACF;AAEA,UAAMm3M,UAAU,oBAAItoD,QAAmB;AACvC,UAAMk1C,iBAAakT,cAAG32M,WAAW,eAAe,MAAC,OAAA22M,cAAIxnC;AACrD,UAAMsiC,wBAAoBmF,eAAG52M,WAAW,sBAAsB,MAAC,OAAA42M,eAAIznC;AAEnE,UAAM2nC,yBACJT,+BACEK,qCACAK,UACF;AAEF,aAASA,WACP9wN,OACAC,QACAw+M,WACA;AAAA,UAAAsS,YAAAC;AACA,UAAIJ,QAAQ7hN,IAAI/O,KAAI,EAAG;AACvB,YAAM;AAAA,QAAEsB,MAAAA;AAAAA,MAAK,IAAItB;AACjB,OAAA+wN,aAAAtS,cAASsS,OAAAA,aAATtS,aAASuS,WAAK1vN,MAAKi7B,OAALy0L,OAAAA,SAAAA,SAASjjN;AACvB,YAAMu4M,UAAUiF,eACdvrN,OACAC,QACAu9M,eACAgO,sBACA/M,WACAoS,wBACAh3M,QACF;AACA,UAAIysM,SAAS;AACXsK,gBAAQ30M,IAAIqqM,OAAO;AACnB;AAAA,MACF;AACAsK,cAAQ30M,IAAIjc,KAAI;AAAA,IAClB;AAEA,WAAO;AAAA,MACL+N,MAAM;AAAA,MACNurB,UAAUA;AAAAA,MAEVU,SAAO3pB,OAAAyE,OAAA;AAAA,QACLi3B,yBAAyB/rC,OAAMC,QAAO;AACpC,gBAAM;AAAA,YAAE8+B;AAAAA,UAAa,IAAG/+B,MAAKsB;AAC7B,eACEy9B,eAAAA,OAAAA,SAAAA,YAAatsB,UAAS,sBAGtBg6M,YAAY1tL,WAAW,GACvB;AACA,kBAAMsxL,cAAc,CAACtxL,YAAYxC;AACgC;AAAA,kBAAA00L;AAE/D,eAAAA,wBAAAjxN,MAAK29I,2BAAsBszE,OAAAA,wBAA3BjxN,MAAK29I,yBAEHn0I,aAAAA,EAA2BikK,SAAS71G,UAAU+lF;AAAAA,YAClD;AACA,kBAAMuzE,4BACJlxN,MAAK29I,uBAAwD;AAC/D,gBAAI0yE,aAAa;AACfS,yBACEI,2BACAjxN,QACA+P,MAAC,MAAC83B,cAAc,SAAS,CAC3B;AAAA,YACF;AAAA,UACF;AAAA,QACD;AAAA,QACDmE,uBAAuBjsC,OAAM;AAC3B,gBAAM;AAAA,YAAE++B;AAAAA,UAAa,IAAG/+B,MAAKsB;AAC7B,eACEy9B,eAAAA,OAAAA,SAAAA,YAAatsB,UAAS,sBAGtBg6M,YAAY1tL,WAAW,GACvB;AACiE;AAAA,kBAAAoyL;AAE/D,eAAAA,yBAAAnxN,MAAK29I,2BAAsBwzE,OAAAA,yBAA3BnxN,MAAK29I,yBAEHn0I,aAAAA,EAA2BikK,SAAS71G,UAAU+lF;AAAAA,YAClD;AACA39I,YAAAA,MAAK29I,uBAAwB;AAAA,UAC/B;AAAA,QACD;AAAA,QAEDmiE,MAAM9/M,OAAMC,QAAO;AACjB6wN,qBAAW9wN,OAAMC,QAAO0T,MAAS;AAAA,QACnC;AAAA,MAAC,GAEEk9M,sBAAsB;AAAA,IAE5B;AAAA,EACH;;;;;;;;;;;;ACj9EA,MAAAnwL,QAAAl3B,aAAA;AAEA,MAAA20M,uBAAA30M,aAAA;AAIA,WAASutE,KAAKh2E,MAAaI,QAAsB;AAC/C,QAAI,CAACA,OAAO,QAAO;AACnB,WAAO6O,MAAC,MAACk5B,eAAel5B,MAAC,MAAC0qB,WAAW35B,IAAG,GAAGI,MAAK;AAAA,EAClD;AAEA,WAASkgC,OAAOtgC,MAAao6B,MAAqB;AAChD,WAAOnrB,MAAAA,MAAEg5B,aACP,UACAh5B,MAAAA,MAAE0qB,WAAW35B,IAAG,GAChB,CAAE,GACFiP,MAAAA,MAAE61B,eAAe1K,IAAI,CACvB;AAAA,EACF;AAEA,WAASi2L,eAAe9vN,OAAmB;AACzC,QAAI+4D;AACJ,QAAI/4D,MAAKs7B,cAAct7B,MAAKs7B,WAAWnvB,SAAS,GAAG;AACjD4sD,eAASrqD,MAAC,MAACi1B,gBACT3jC,MAAKs7B,WAAWxpB,IAAI6lC,eAAaA,UAAUje,UAAU,CACvD;AAAA,IACF;AACA15B,IAAAA,MAAKs7B,aAAajpB;AAClB,WAAO0mD;AAAAA,EACT;AAWA,WAASg3J,OAAO/vN,OAAwB;AACtC,QAAIA,MAAKy7B,UAAU;AACjB,aAAOz7B,MAAKP;AAAAA,eACHiP,MAAAA,MAAEiO,aAAa3c,MAAKP,GAAG,GAAG;AACnC,aAAOiP,MAAAA,MAAE83B,cAAcxmC,MAAKP,IAAIgN,IAAI;AAAA,IACtC,OAAO;AACL,aAAOiC,MAAC,MAAC83B,cACPn6B,OAEGrM,MAAKP,IACHI,KACL,CACF;AAAA,IACF;AAAA,EACF;AAEA,WAASmwN,yBACPnxN,OACAogN,UACAhD,UACAv9M,OACA;AACA,UAAMkuB,WAAWluB,MAAKghB,cAAe;AACrC,QAAIhhB,MAAK4uB,aAAa;AACpB,YAAM5uB,MAAKqqK,oBACT,WACEn8I,WAAW,YAAY,QAAQ,8CAEnC;AAAA,IACF;AACA,QAAIluB,MAAKsB,KAAKmR,SAAS,yBAAyB;AAC9C,YAAMzS,MAAKqqK,oBACT,wHACF;AAAA,IACF;AACA,QAAIrqK,MAAKsB,KAAKmR,SAAS,eAAe;AACpC,YAAMzS,MAAKqqK,oBACT,kHACF;AAAA,IACF;AAEA,UAAM;AAAA,MAAE/oK,MAAAA;AAAAA,MAAM8+D,OAAAA;AAAAA,IAAM,IAAIpgE;AAExB,QAAI,CAACA,MAAKuoB,qBAAqB;AAC7B,UAAI60L,6BAAc;AAAA,QAChBE,YAAYt9M;AAAAA,QAGZy8M,WAAW8D;AAAAA,QACXhD;AAAAA,QACAp9M,MAAAA;AAAAA,QACAu9M,eAAe6C;AAAAA,MAChB,CAAA,EAAEtpM,QAAS;AAAA,IACd;AAEA,UAAMqmB,aAA+C,CACnDy5C,KAAK,QAAQ/mE,MAAAA,MAAE83B,cAAc93B,MAAAA,MAAEgR,cAAc1f,KAAI,IAAIA,MAAKi8B,OAAO,OAAO,CAAC,GACzEw5C,KAAK,cAAcq6I,eAAe9vN,KAAmB,CAAC,GACtDy1E,KAAK,UAAUz1E,MAAKq+B,UAAU3vB,MAAAA,MAAEm4B,eAAe,IAAI,CAAC,GACpD4uC,KAAK,OAAOs6I,OAAO/vN,KAAI,CAAC,CAAC,EACzBk4B,OAAO6/B,OAAO;AAEhB,QAAInrC,UAAU;AACqD;AAAA,YAAAqjM;AAE/D,SAAAA,wBAAAvxN,MAAK8xK,uBAAkBy/C,OAAAA,wBAAvBvxN,MAAK8xK,qBAEHtoK,aAAAA,EAA2BikK,SAAS71G,UAAUk6G;AAAAA,MAClD;AAKA9xK,MAAAA,MAAK8xK,mBAAmB,KAAK;AAE7Bx0I,iBAAW50B,KAAKquE,KAAK,SAAS/mE,MAAAA,MAAE4qD,aAAa56D,MAAKsB,IAAI,CAAC,CAAC;AAAA,IAC1D,WAAW0O,MAAC,MAAC8R,gBAAgBxgB,KAAI,KAAKA,MAAKH,OAAO;AAChDm8B,iBAAW50B,KACT24B,OAAO,SAAS8wC,MAAQ,SAACi3D,WAAWlmE,aAAa5hE,MAAKH,KAAK,EAAE,CAC/D;AAAA,IACF,OAAO;AACLm8B,iBAAW50B,KAAKquE,KAAK,SAAS3W,OAAM5I,mBAAkB,CAAE,CAAC;AAAA,IAC3D;AAEAx3D,IAAAA,MAAK8lJ,OAAQ;AAEb,WAAO91I,MAAC,MAAC84B,iBAAiBxL,UAAU;AAAA,EACtC;AAEA,WAASk0L,kBAAkBrxN,OAAY;AACrC,WAAOA,MAAKkmJ,UAAU,UAAU;AAAA,EAClC;AAKO,WAASorE,oBACd34E,KACA94I,OACAw6B,UACAr6B,OACA;AACA,UAAM;AAAA,MAAEmB,MAAAA;AAAAA,MAAM8+D,OAAAA;AAAAA,IAAM,IAAIpgE;AACxB,UAAM0xN,eAAetxJ,OAAMqhF,sBAAsB,YAAY;AAC7D,UAAM9zH,gBAAgBrsB,MAAKi7B,MAAMv8B,MAAK2tB,cAAe;AACrD,UAAMgkM,WAAW3xN,MAAK63K,eAAgB;AACtC,UAAM;AAAA,MAAEt5I;AAAAA,IAAW,IAAIj9B;AAEvBA,IAAAA,MAAKmR,OAAO;AACZ,QAAI,CAACnR,MAAKi7B,GAAIj7B,CAAAA,MAAKi7B,KAAKvsB,MAAC,MAACmoD,UAAU2gF,GAAG;AAEvC,QAAI84E;AACJ,QAAIrzL,YAAY;AACdqzL,gBAAUxxJ,OAAM6hF,iCAAiC3gJ,MAAKi9B,YAAY,OAAO;AACzEj9B,MAAAA,MAAKi9B,aAAaqzL;AAAAA,IACpB;AAEA,UAAMhG,kBAAkBwF,eAAe9vN,KAAI;AAC3C,UAAMuwN,eAAc7hN,MAAC,MAACi1B,gBACpBzK,SACGhB,OACCskF,aAEE,CAACA,QAAQx8G,KAAKo9B,YAAYo/E,QAAQx8G,KAAKmR,SAAS,kBACpD,EACCW,IAAIpT,CAAAA,UACHsxN,yBACEnxN,OACAmB,MAAKi7B,IACLq1L,SAEA5xN,KACF,CACF,CACJ;AAEA,UAAM8xN,cAAc3/I,MAAAA,SAASn3C,WAAWkoC;AAAAA,MACpCsuJ,kBAAkBrxN,KAAI,CAAC;AAAA,QACrByrN,mBAAmB57M,MAAAA,MAAEk4B,YAAW,CAAE;AAAA,kBACxBwpL,YAAY,KAAKnzL,aAAavuB,MAAAA,MAAEmoD,UAAUy5J,OAAO,IAAI,IAAI;AAAA,UACjEtwN,KAAI;AAAA,sBACQ0O,MAAAA,MAAEmoD,UAAU72D,MAAKi7B,EAAE,CAAC,QAAQs1L,YAAW;AAAA;AAAA,QAErDtzL,UAAU;AAAA;AAAA;AAIhB,QAAI,CAACozL,UAAU;AACbG,kBAAYz2L,UAAU,CAAC,EAAEF,KAAKD,WAAWxyB,KACvCsH,MAAC,MAACy1B,UAAUz1B,MAAC,MAAC21B,iBAAiB,YAAY,CAAC,CAC9C;AAAA,IACF;AAEA,QAAIq+B,eAAsB8tJ;AAC1B,QAAIC,gBAAgB;AACpB,QAAIpkM,eAAe;AACjBq2C,MAAAA,eAAcmO,MAAQ,SAACg3D,UAAUjmE,UAAU41E,GAAG,MAAMg5E,WAAW;AAC/DC,sBAAgB,yBAAyBA;AAAAA,IAC3C;AAEA,WAAO;AAAA,MACLzO,eAAe,CACbnxI,MAAAA,SAASg3D,UAAUjmE;AAAAA,UACflzD,MAAC,MAACmoD,UAAUu5J,YAAY,CAAC;AAAA,OAC5B;AAAA,MAEHzN,UAAUjkN,OAAyB;AACjCA,QAAAA,MAAK6lJ,YAAY7hF,YAAW;AAC5B,eAAOhkE,MAAKkQ,IAAI6hN,aAAa;AAAA,MAC/B;AAAA,IACD;AAAA,EACH;;;;;;;;;;;;;;;ACxNA,MAAAC,cAAAxoN,kBAAA;AAEO,QAAMyoN,WAAQj+M,SAAAA,WAAG3D,OAAOm5H,OAAO;AAAA,IAEpC7vG,QAAQ,KAAK;AAAA,IACbqwL,gBAAgB,KAAK;AAAA,IACrBptL,YAAY,KAAK;AAAA,IACjBi4K,WAAW,KAAK;AAAA,IAChBqd,cAAc,KAAK;AAAA,EACrB,CAAC;AAED,QAAMC,oBAAoB,oBAAIx7J,IAAI,CAChC,CAACs7J,SAASt4L,QAAQ,0CAA0C,GAC5D,CAACs4L,SAASjI,gBAAgB,yCAAyC,GACnE,CAACiI,SAASpd,WAAW,oDAAoD,CAAC,CAC3E;AASD,QAAMud,cAAc;AACpB,QAAMC,WAAW;AAEkB;AAUjC,QAAIC,sBACF;AAAA,EACJ;AAEmC;AAEjC,QAAIC,iBAAiB,SAAUpyN,OAAYqyN,SAAiB;AAC1D,aAAO,CAAC,EAAEryN,MAAK+P,IAAIoiN,mBAAmB,IAAIE;AAAAA,IAC3C;AAAA,EACH;AAEO,WAASC,cAActyN,OAAYqyN,SAAiBtpC,OAAgB;AAYlE,QAAI,CAACwpC,WAAWvyN,OAAMqyN,OAAO,KAAKD,eAAepyN,OAAMqyN,OAAO,GAAG;AACtEryN,MAAAA,MAAKmN,IAAI8kN,aAAajyN,MAAK+P,IAAIkiN,WAAW,IAAII,OAAO;AACrD,UAEEtpC,UACA,uFACA;AACAypC,iBAASxyN,OAAMqyN,SAAS,IAAI;AAC5BryN,QAAAA,MAAKmN,IAAIglN,qBAAqBnyN,MAAK+P,IAAIoiN,mBAAmB,IAAIE,OAAO;AAAA,MACvE,WAEEtpC,UACA,uFACA;AACAypC,iBAASxyN,OAAMqyN,SAAS,KAAK;AAC7BryN,QAAAA,MAAKmN,IAAIglN,qBAAqBnyN,MAAK+P,IAAIoiN,mBAAmB,IAAIE,OAAO;AAAA,MACvE,OAAO;AACLG,iBAASxyN,OAAMqyN,SAAStpC,KAAK;AAAA,MAC/B;AAAA,IACF;AAEA,QAAI0pC;AACJ,eAAW,CAACC,MAAM9kN,IAAI,KAAKokN,mBAAmB;AAC5C,UAAI,CAACO,WAAWvyN,OAAM0yN,IAAI,EAAG;AACM;AACjC,YAAIN,eAAepyN,OAAM0yN,IAAI,EAAG;AAAA,MAClC;AAEA,YAAM3pC,SAAQu0B,QAAQt9M,OAAM0yN,IAAI;AAEhC,UAAID,kBAAkB,CAAC1pC,QAAO;AAC5B,cAAM,IAAIzxK,MACR,0NAIEq7M,0BAA0B3yN,KAAI,CAClC;AAAA,MACF,OAAO;AACLyyN,wBAAgB1pC;AAEmB;AAEjC,cAAI6pC,2BAA2BhlN;AAAAA,QACjC;AAAA,MACF;AAAA,IACF;AAEA,QAAqC6kN,kBAAkBj/M,QAAW;AAChE,iBAAW,CAACk/M,MAAM9kN,IAAI,KAAKokN,mBAAmB;AAC5C,YAAIO,WAAWvyN,OAAM0yN,IAAI,KAAKpV,QAAQt9M,OAAM0yN,IAAI,MAAMD,eAAe;AACnED,mBAASxyN,OAAM0yN,MAAMD,aAAa;AAClCl7M,kBAAQC,KACN,yCAAyC,CAACi7M,aAAa,+DAClB7kN,IAAI,8CACnC6kN,aAAa,SAASG,wBAAwB;AAAA;AAAA,KAI3ChlN,IAAI,iBAAiB6kN,aAAa;AAAA;AAAA;AAAA,IAGzCE,0BAA0B3yN,KAAI,CAClC;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,WAAS2yN,0BAA0B3yN,OAAY;AAC7C,QAAI;AAAA,MAAEikE;AAAAA,IAAU,IAAGjkE,MAAKsI;AACxB,QAAI,CAAC27D,YAAYA,aAAa,WAAW;AACvCA,iBAAW;AAAA,IACb;AACA,WAAO;AAAA;AAAA,uCAK+BA,QAAQ;AAAA;AAAA,EAEhD;AAEA,WAASsuJ,WAAWvyN,OAAYqyN,SAAiB;AAC/C,WAAO,CAAC,EAAEryN,MAAK+P,IAAIkiN,WAAW,IAAII;AAAAA,EACpC;AAEO,WAAS/U,QAAQt9M,OAAYqyN,SAAiB;AACnD,WAAO,CAAC,EAAEryN,MAAK+P,IAAImiN,QAAQ,IAAIG;AAAAA,EACjC;AAEA,WAASG,SAASxyN,OAAYqyN,SAAiBtpC,OAAgB;AAC7D,QAAIA,MAAO/oL,CAAAA,MAAKmN,IAAI+kN,UAAUlyN,MAAK+P,IAAImiN,QAAQ,IAAIG,OAAO;AAAA,QACrDryN,CAAAA,MAAKmN,IAAI+kN,UAAUlyN,MAAK+P,IAAImiN,QAAQ,IAAI,CAACG,OAAO;AAElB;AACjCryN,MAAAA,MAAKmN,IAAIglN,qBAAqBnyN,MAAK+P,IAAIoiN,mBAAmB,IAAI,CAACE,OAAO;AAAA,IACxE;AAAA,EACF;AAEO,WAASQ,gBAAgBhzN,OAAyBG,OAAqB;AAC5E,QAAI8yN,gBAA8C;AAClD,QAAIC,kBAAoD;AACxD,QAAIC,mBAA4D;AAChE,QAAIC,oBAA2D;AAC/D,QAAIC,kBAAkD;AAEtD,SAAI5N,GAAAA,YAAgB,kBAACzlN,MAAKsB,IAAI,GAAG;AAC/B2xN,sBAAgBjzN,MAAKkQ,IAAI,cAAc;AAAA,IACzC;AACA,eAAWqqK,MAAMv6K,MAAKkQ,IAAI,WAAW,GAAG;AACtC,UAAI,CAAC+iN,kBAAiBxN,GAAAA,YAAAA,kBAAiBlrC,GAAGj5K,IAAI,GAAG;AAC/C2xN,wBAAgB14C,GAAGrqK,IAAI,cAAc;AAAA,MACvC;AACA,UAAI,CAACgjN,mBAAmB34C,GAAGz4J,mBAAmB;AAC5CoxM,0BAAkB34C;AAAAA,MACpB;AACA,UAAI,CAAC44C,oBAAoB54C,GAAGv4J,0BAA0B;AACpDmxM,2BAAmB54C;AAAAA,MACrB;AAEA,UAAI,CAAC64C,qBAAqB74C,GAAGt4J,wBAAHs4J,QAAAA,GAAGt4J,wBAA0B;AACrDmxM,4BAAoB74C;AAAAA,MACtB;AACA,UAAI,CAAC84C,mBAAmB94C,GAAGp4J,iBAAHo4J,QAAAA,GAAGp4J,iBAAmB;AAC5CkxM,0BAAkB94C;AAAAA,MACpB;AAAA,IACF;AAEA,QAAI04C,iBAAiBE,kBAAkB;AACrC,YAAMA,iBAAiB9oD,oBACrB,4DACF;AAAA,IACF;AACA,QAAI4oD,iBAAiBG,mBAAmB;AACtC,YAAMA,kBAAkB/oD,oBACtB,6DACF;AAAA,IACF;AAEA,QAAI4oD,iBAAiB,CAACP,WAAWvyN,OAAM8xN,SAASr1L,UAAU,GAAG;AAC3D,YAAM58B,MAAKqqK,oBACT,yVAOF;AAAA,IACF;AAEA,QAAI+oD,qBAAqB,CAACV,WAAWvyN,OAAM8xN,SAASjI,cAAc,GAAG;AACnE,YAAMoJ,kBAAkB/oD,oBACtB,oHAEF;AAAA,IACF;AAEA,SACG6oD,mBAAmBC,qBACpB,CAACT,WAAWvyN,OAAM8xN,SAASt4L,MAAM,KAMjC,CAAC+4L,WAAWvyN,OAAM8xN,SAASjI,cAAc,GACzC;AACA,YAAMhqN,MAAKqqK,oBACT,4GAEF;AAAA,IACF;AAEA,QAAIgpD,mBAAmB,CAACX,WAAWvyN,OAAM8xN,SAASC,YAAY,GAAG;AAC/D,YAAMlyN,MAAKqqK,oBACT,qHAEF;AAAA,IACF;AAEA,QAAI4oD,iBAAiBG,qBAAqBC,iBAAiB;AAGzD,aAAO;AAAA,IACT;AACA,SACGH,mBAAmBC,qBACpBT,WAAWvyN,OAAM8xN,SAASt4L,MAAM,GAChC;AACA,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjQA,QAAA+G,QAAAl3B,aAAA;AAGA,QAAAkiL,UAAAliL,cAAA;AAEA,QAAA+7M,UAAA/7M,cAAA;AAQA,QAAAwoN,cAAAxoN,kBAAA;AAEA,QAAA8pN,eAAA9pN,wBAAA;AACA,QAAAg8M,QAAAh8M,YAAA;AACA,QAAA+pN,YAAA/pN,gBAAA;AAMA,QAAAuzJ,cAAAvzJ,kBAAA;AAIA,UAAMgqN,aAAa;AAYZ,aAASC,yBAAyB;AAAA,MACvC1lN;AAAAA,MACAykN;AAAAA,MACAtpC;AAAAA,MACApuK;AAAAA,MACApB;AAAAA,MACA4f,UAAAA;AAAAA,MACAo6L;AAAAA,IACO,GAAiB;AAAA,UAAAC;AACxB,UAAInB,UAAUP,UAAQ,SAACr1L,YAAY;AAG1B;AACL,cACE82L,qBAAqB,aACrBA,qBAAqB,aACrBA,qBAAqB,aACrBA,qBAAqB,aACrBA,qBAAqB,WACrB;AACA,oBAAOE,GAAAA,YAAAA,SACLl6M,KACA;AAAA,cAAEwvK;AAAAA,YAAM,GACRwqC,kBACAp6L,SACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AACmC;AAAA,YAAAu6L;AACjC,SAAAA,OAAAn6M,eAAGm6M,OAAHn6M,MAAQ;AAAA,UAAEK,YAAYA,MAAM;AAAA,QAAe;AAAA,MAC7C;AACA,YAAMmpM,uBAAuBxpM,IAAIK,WAAW,sBAAsB;AAClE,YAAMwlM,yBAAyB7lM,IAAIK,WAAW,wBAAwB;AACtE,YAAMulM,4BAA4B5lM,IAAIK,WAAW,2BAA2B;AAC5E,YAAM0mM,qCAAiCkT,kBACrCj6M,IAAIK,WAAW,mCAAmC,MAAC45M,OAAAA,kBAAI;AACzD,YAAMnW,gBAAgB9jM,IAAIK,WAAW,eAAe;AACpD,YAAMmgM,gBAAgBxgM,IAAIK,WAAW,eAAe;AAEpD,UAAIulM,6BAA6BC,wBAAwB;AACvD,cAAM,IAAI9nM,MACR,+GAEF;AAAA,MACF;AACA,YAAMinM,qCACJY,6BAA6BC;AAE/B,UAAIr2B,UAAU,MAAM;AAElB,cAAM4qC,WAAoC,CAAE;AAE5C,YAAI5Q,yBAAyBvvM,QAAW;AACtCmgN,mBAASprN,KAAK,wBAAwB;AAAA,QACxC;AACA,YAAI42M,8BAA8B3rM,QAAW;AAC3CmgN,mBAASprN,KAAK,6BAA6B;AAAA,QAC7C;AACA,YAAI62M,2BAA2B5rM,QAAW;AACxCmgN,mBAASprN,KAAK,0BAA0B;AAAA,QAC1C;AACA,YAAIorN,SAASrmN,WAAW,GAAG;AACzBiK,kBAAQC,KACN,IAAI5J,IAAI,4FACiC+lN,SAASxgN,KAAK,OAAO,CAAC,cAC/CwgN,SAASrmN,SAAS,IAAI,MAAM,EAAE;AAAA;AAAA;AAAA;AAAA,GAQhD;AAAA,QACF;AAAA,MACF;AAEA,aAAO;AAAA,QACLM;AAAAA,QACA+M;AAAAA,QACAwe,UAAAA;AAAAA,QAEAy3J,IAAI5wL,OAAM;AACR,WAAA,GAAAsyN,yBAActyN,OAAMqyN,SAAStpC,KAAK;AAEC;AAIjC,gBAAI,OAAO/oL,MAAK+P,IAAIsjN,UAAU,MAAM,UAAU;AAC5CrzN,cAAAA,MAAKmN,IAAIkmN,oBAAgC;AACzC;AAAA,YACF;AAAA,UACF;AACA,cACE,CAACrzN,MAAK+P,IAAIsjN,UAAU,KACpBvnC,QAAOluG,GAAG59E,MAAK+P,IAAIsjN,UAAU,GAAC,QAAsB,GACpD;AACArzN,YAAAA,MAAKmN,IAAIkmN,oBAAgC;AAAA,UAC3C;AAAA,QACD;AAAA,QAEDx5L,SAAS;AAAA,UACP8lL,MAAM9/M,OAAM;AAAA,YAAEG,MAAAA;AAAAA,UAAK,GAAG;AAAA,gBAAAsjE;AACpB,gBAAItjE,MAAK+P,IAAIsjN,UAAU,eAA4B;AAEnD,gBAAI,EAAC,GAAAR,UAAe,iBAAChzN,OAAMG,KAAI,EAAG;AAElC,kBAAM4zN,yBAAyB/zN,MAAKogB,mBAAoB;AAExD,gBAAI2zM,uBAAwB,EAAA,GAAA7V,YAAsB,wBAACl+M,KAAI;AAEvD,kBAAMkpL,UAAQu0B,GAAAA,UAAAA,SAAQt9M,OAAMqyN,OAAO;AAEnC,gBAAIr+M;AACJ,kBAAMs4M,eAAc/G,GAAAA,YAAAA,eAAc1lN,MAAKsB,IAAI;AAC3C,kBAAMs7D,QAAoB,CAAE;AAC5B,kBAAMpiC,WAAW,CAAE;AACnB,kBAAM4qL,gBAA6D,CAAE;AACrE,kBAAMr0H,eAAe,oBAAIviF,IAAa;AACtC,kBAAM2sB,OAAOn7B,MAAKkQ,IAAI,MAAM;AAE5B,uBAAWlQ,SAAQm7B,KAAKjrB,IAAI,MAAM,GAAG;AACnC,mBAEGlQ,MAAK8hB,qBAAqB9hB,MAAKghB,oBAChChhB,MAAKsB,KAAKy7B,UACV;AACAqoL,8BAAc18M,KAAK1I,KAAI;AAAA,cACzB;AAEA,kBAAIA,MAAK4uB,aAAa;AACpB,sBAAM;AAAA,kBAAE7gB,MAAAA;AAAAA,gBAAK,IAAI/N,MAAKsB,KAAKP,IAAIw7B;AAC/B,sBAAMy3L,UAAU,OAAOjmN,KAAI;AAC3B,sBAAMkmN,UAAU,OAAOlmN,KAAI;AAE3B,oBAAI/N,MAAKiiB,wBAAwB;AAC/B,sBAAIjiB,MAAKsB,KAAKi8B,SAAS,OAAO;AAC5B,wBACEwzD,aAAahiF,IAAIilN,OAAO,KACvBjjI,aAAahiF,IAAIhB,KAAI,KAAK,CAACgjF,aAAahiF,IAAIklN,OAAO,GACpD;AACA,4BAAMj0N,MAAKqqK,oBAAoB,yBAAyB;AAAA,oBAC1D;AACAt5E,iCAAa90E,IAAI+3M,OAAO,EAAE/3M,IAAIlO,KAAI;AAAA,kBACnC,WAAU/N,MAAKsB,KAAKi8B,SAAS,OAAO;AACnC,wBACEwzD,aAAahiF,IAAIklN,OAAO,KACvBljI,aAAahiF,IAAIhB,KAAI,KAAK,CAACgjF,aAAahiF,IAAIilN,OAAO,GACpD;AACA,4BAAMh0N,MAAKqqK,oBAAoB,yBAAyB;AAAA,oBAC1D;AACAt5E,iCAAa90E,IAAIg4M,OAAO,EAAEh4M,IAAIlO,KAAI;AAAA,kBACpC;AAAA,gBACF,OAAO;AACL,sBACGgjF,aAAahiF,IAAIhB,KAAI,KACpB,CAACgjF,aAAahiF,IAAIilN,OAAO,KACzB,CAACjjI,aAAahiF,IAAIklN,OAAO,KAC1BljI,aAAahiF,IAAIhB,KAAI,MACnBgjF,aAAahiF,IAAIilN,OAAO,KAAKjjI,aAAahiF,IAAIklN,OAAO,IACxD;AACA,0BAAMj0N,MAAKqqK,oBAAoB,yBAAyB;AAAA,kBAC1D;AAEAt5E,+BAAa90E,IAAIlO,KAAI;AAAA,gBACvB;AAAA,cACF;AAEA,kBAAI/N,MAAKghB,cAAc;AAAA,gBAAEuc,MAAM;AAAA,cAAc,CAAC,GAAG;AAC/CppB,8BAAcnU;AAAAA,cAChB,OAAO;AACLw6B,yBAAS9xB,KAAK1I,KAAI;AAClB,oBACEA,MAAKouB,gBACLpuB,MAAK4uB,UAAS,KACd5uB,MAAKmiB,iBAAa,QAAlBniB,MAAKmiB,cAAa,GAClB;AACAy6C,wBAAMl0D,KAAK1I,KAAgB;AAAA,gBAC7B;AAAA,cACF;AAAA,YACF;AAIO;AACL,kBAAI,CAAC48D,MAAMnvD,UAAU,CAACg/M,YAAa;AAAA,YACrC;AAEA,kBAAMvM,eAAelgN,MAAKsB,KAAKi7B;AAC/B,gBAAIu8G;AACJ,gBAAI,CAAConE,gBAAgB,CAAC6T,wBAAwB;AACqB;AAAA,oBAAAxC;AAE/D,iBAAAA,wBAAAvxN,MAAK8xK,uBAAkBy/C,OAAAA,wBAAvBvxN,MAAK8xK,qBAEHtoK,aAAAA,EAA2BikK,SAAS71G,UAAUk6G;AAAAA,cAClD;AACC9xK,cAAAA,MAAqC8xK,mBAAmB,KAAK;AAC9Dh5B,oBAAM94I,MAAKogE,MAAMqhF,uBAAsBy+D,gCAAAA,aAAcnyM,SAAQ,OAAO;AAAA,YACtE;AACA,kBAAMmmN,qBAAiBzwJ,OAAGq1E,QAAG,OAAAr1E,OAAIzzD,MAAC,MAACmoD,UAAU+nJ,YAAY;AAEzD,kBAAMvB,mBAAkB,GAAAH,8BACtB0V,kBAAkBnmN,MAClB2wM,sCAAkC,OAAlCA,qCAAsCx1B,QACtCtsH,OACAz8D,KACF;AACA,kBAAMg0N,qBAAoB9U,GAAAA,QAAAA,wBACxBV,iBACAW,6BAAAA,OAAAA,4BAA6Bp2B,QAC7Bq2B,0BAAAA,OAAAA,yBAA0B,OAC1Bp/M,KACF;AAEA,aAAA,GAAAkhN,oCACE6S,mBACAl0N,OACA2+M,iBACA;AAAA,cACEW,2BACEZ,sCAAAA,OAAAA,qCAAsCx1B;AAAAA,cACxCu3B;AAAAA,cACAvG;AAAAA,cACAgG;AAAAA,YACD,GACD//M,KACF;AAEA,gBAAIi0N,WACF/Q,aACAC,eACAC,6BACAC,iBACAC,kBACAQ;AAEiC;AACjC,kBAAIwI,aAAa;AACfpJ,8BAAcG,kBAAkB4Q,YAAY,CAAE;AAC9C,iBAAC;AAAA,kBAAE9Q;AAAAA,kBAAeW;AAAAA,qBAAc,GAAAwN,aAAAA,qBAC9ByC,mBACAl0N,OACAw6B,UACAr6B,KACF;AAAA,cACF,OAAO;AACLi0N,6BAAYjP,GAAAA,MAAmB,qBAACnlN,OAAMolN,eAAejlN,KAAI;AACzD,iBAAC;AAAA,kBACCkjN;AAAAA,kBACAG;AAAAA,kBACAF;AAAAA,kBACAC;AAAAA,kBACAE;AAAAA,kBACAQ;AAAAA,gBACD,QAAGhB,QAAAA,sBACFnqE,KACA94I,MAAKsB,KAAKi9B,YACVq+B,OACA+hJ,iBACAx+M,OACA+iN,wBAAAA,OAAAA,uBAAwBh6B,QACxBw1B,sCAAAA,OAAAA,qCAAsCx1B,QACtCu3B,mCACAjD,iBAAAA,OAAAA,gBAAiBt0B,QACjBg3B,YACF;AAAA,cACF;AAAA,YACF;AAuBA,gBAAIoD,cAAc71M,SAAS,GAAG;AAC5B,eAAA82M,GAAAA,MAAoB,sBAClBvkN,OACAmU,aACAmvM,eACA,CAAC/4C,kBAAkBtqK,WAAU;AACQ;AACjC,sBAAIwsN,YAAa;AAAA,gBACnB;AACA,2BAAW11I,QAAQna,OAAO;AAExB,sBAAI5sD,YAAEmS,yBAAFnS,MAAC,MAACmS,cAAgB40D,KAAKz1E,IAAI,KAAKy1E,KAAKz1E,KAAKq+B,OAAQ;AACtDo3C,uBAAK1Y,SAASksG,kBAAkBtqK,MAAK;AAAA,gBACvC;AAAA,cACD,GACDsjN,2BACF;AAAA,YACF;AAGA,kBAAM8Q,cAAcpQ,UAAUjkN,KAAI;AAClCq0N,wBAAYvoD,aAAa,CAAC,GAAGqoD,mBAAmB,GAAGC,SAAS,CAAC;AAC7D,gBAAI/Q,YAAY51M,SAAS,GAAG;AAC1B4mN,0BAAYjnD,YAAYi2C,WAAW;AAAA,YACrC;AACA,gBAAIG,gBAAgB/1M,SAAS,GAAG;AAC9B4mN,0BACGrvF,KAAKvoG,YAAUA,OAAO1P,YAAW,KAAM0P,OAAO9O,cAAe,CAAA,EAC7Dy/I,YAAYo2C,eAAe;AAAA,YAChC;AACA,gBAAIC,oBAAoB,QAAQsQ,wBAAwB;AACtDM,0BAAYjnD,YAAYq2C,gBAAgB;AAAA,YAC1C;AAAA,UACD;AAAA,UAED13K,yBAAyB/rC,OAAM;AAAA,YAAEG,MAAAA;AAAAA,UAAK,GAAG;AACJ;AACjC,kBAAIA,MAAK+P,IAAIsjN,UAAU,eAA4B;AAEnD,oBAAMn1L,OAAOr+B,MAAKkQ,IAAI,aAAa;AAEnC,kBAAImuB,KAAKje,yBAAwB,GAAAslM,YAAAA,eAAcrnL,KAAK/8B,IAAI,GAAG;AACzD,oBAAI+8B,KAAK/8B,KAAKi7B,IAAI;AAIiD;AAAA,wBAAA00L;AAE/D,qBAAAA,wBAAAjxN,MAAK29I,2BAAsBszE,OAAAA,wBAA3BjxN,MAAK29I,yBAEHn0I,aAAAA,EAA2BikK,SAAS71G,UAAU+lF;AAAAA,kBAClD;AACA39I,kBAAAA,MAAK29I,uBAAwB;AAAA,gBAC/B,OAAO;AAGLt/G,uBAAK/8B,KAAKmR,OAAO;AAAA,gBACnB;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAAA,IACH;AAAA;;;;;;;;;;;;ACzYA,MAAAiuB,QAAAl3B,aAAA;AAGA,QAAM8qN,sBAAsBniJ,MAAQ,SAACg3D,UAAU;AAAA;AAAA,CAE9C;AAMD,QAAMorF,0BAAsBpiJ,MAAAA,UAAS;AAAA;AAAA,CAEpC;AAED,QAAMqiJ,yBAAqBriJ,MAAAA,UAAS;AAAA;AAAA,CAEnC;AAKD,QAAMsiJ,gCAA4BtiJ,MAAAA,UAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAS1C;AAMD,QAAMuiJ,gBAAgB,oBAAIpsD,QAAS;AAanC,WAASqsD,oBACP30N,OACA;AAEA,UAAM48B,eACJ58B,MAAKuuB,QAAS,IACV,CACEvuB,OACA,GAAIA,MAAKkQ,IAAI,WAAW,CAAyC,IAEnElQ,MAAKkQ,IAAI,YAAY,GACzB4zD,OACA,CACEC,KACAgT,SAGGhT,IAAI5pC,OAAO48C,KAAKz1E,KAAKs7B,cAAc,CAAE,CAAA,GAC1C,CAAA,CACF;AAEA,UAAMg4L,kBAAkBh4L,YAAWpD,OACjCyf,eAAa,CAACjpC,MAAAA,MAAEiO,aAAag7B,UAAUje,UAAU,CACnD;AACA,QAAI45L,gBAAgBnnN,WAAW,EAAG;AAElC,WAAOuC,MAAAA,MAAEw5B,mBACPorL,gBACGxhN,IAAK6lC,eAA4B;AAChC,YAAMje,aAAaie,UAAUje;AAC7B,YAAMuB,KAAM0c,UAAUje,aACpBh7B,MAAKogE,MAAMohF,8BAA8B,KAAK;AAChD,aAAOxxI,MAAAA,MAAEm1B,qBAAqB,KAAK5I,IAAIvB,UAAU;AAAA,IAClD,CAAA,EACAb,OAAO,CAACn6B,MAAKsB,IAAI,CAAC,CACvB;AAAA,EACF;AAMA,WAASuzN,qBAAqBhP,WAAwC;AACpE,QAAI,CAACiP,mBAAmBjP,UAAUvkN,IAAI,EAAG;AAEzC,UAAMs7B,cAAaipL,UAAUvkN,KAAKs7B,cAAc,CAAE;AAClDipL,cAAUvkN,KAAKs7B,aAAa;AAE5B,UAAM7uB,OAAO83M,UAAUzlJ,MAAMohF,8BAA8B,OAAO;AAElE,WAAO5kH,YACJxpB,IAAIif,SAAOA,IAAI2I,UAAU,EACzB4sG,UACA9jE,OAAO,SAAUC,KAAK9qB,WAAW;AAChC,aAAOq7K,oBAAoB;AAAA,QACzBS,WAAW/kN,MAAC,MAACmoD,UAAUpqD,IAAI;AAAA,QAC3BinN,WAAWhlN,MAAC,MAACmoD,UAAUlf,SAAS;AAAA,QAChCg8K,OAAOlxJ;AAAAA,MACR,CAAA,EAAE/oC;AAAAA,IACL,GAAG6qL,UAAUvkN,IAAI;AAAA,EACrB;AAEA,WAASwzN,mBAAmBp0F,WAAoB;AAAA,QAAAE;AAC9C,WAAO,CAAC,GAAAA,wBAACF,UAAU9jG,eAAU,QAApBgkG,sBAAsBnzH;AAAAA,EACjC;AAMA,WAASynN,sBACPl1N,OACAC,QACA;AACA,QAAI,CAACk1N,oBAAoBn1N,MAAKsB,KAAK65B,KAAKA,IAAI,EAAG;AAE/C,WAAOi6L,sBACLp1N,OACAC,QAEAD,MAAKsB,KAAK65B,KAAKA,IACjB;AAAA,EACF;AAEA,WAASg6L,oBACPh6L,MACA;AACA,WAAOA,KAAK01D,KACVvvF,CAAAA,UAAI;AAAA,UAAAiiJ;AAAA,cAAAA,mBAEFjiJ,MAAKs7B,eAAL2mH,OAAAA,SAAAA,iBAAiB91I;AAAAA,IAAM,CAC3B;AAAA,EACF;AAMA,WAAS4nN,sBACPr1N,OACAC,QACA;AACA,QAAI,CAACk1N,oBAAoBn1N,MAAKsB,KAAKg8B,UAAU,EAAG;AAEhD,WAAO83L,sBACLp1N,OACAC,QACAD,MAAKsB,KAAKg8B,WAAW9D,OAClBu9C,UAAiCA,KAAKtkE,SAAS,eAClD,CACF;AAAA,EACF;AAKA,WAAS2iN,sBACPp1N,OACAC,QACAq1N,gBACA;AACA,UAAMvnN,OAAO/N,MAAKogE,MAAMohF,8BACtBxhJ,MAAKuuB,QAAO,IAAK,UAAU,KAC7B;AAEA,UAAMuxC,QAAQw1J,eAAexxJ,OAAO,SAAUC,KAAKziE,OAAM;AACvD,UAAIs7B,cAA4B,CAAE;AAClC,UAAIt7B,MAAKs7B,cAAc,MAAM;AAC3BA,QAAAA,cAAat7B,MAAKs7B;AAClBt7B,QAAAA,MAAKs7B,aAAa;AAAA,MACpB;AAEA,UAAIA,YAAWnvB,WAAW,EAAG,QAAOs2D;AAEpC,UAEEziE,MAAKy7B,UACL;AACA,cAAM/8B,MAAKqqK,oBACT,4DACF;AAAA,MACF;AAEA,YAAMh6I,WAAsBrgB,MAAAA,MAAE+d,UAAUzsB,MAAKP,GAAG,IAC5CO,MAAKP,MACLiP,MAAC,MAAC83B,cAEAxmC,MAAKP,IAAIgN,IACX;AAEJ,YAAMwgE,SACJvuE,MAAKuuB,QAAO,KAAM,CAAEjtB,MAAiCq+B,SACjD40L,oBAAoB;AAAA,QAClBQ,WAAWhnN;AAAAA,MACb,CAAC,EAAEitB,aACHjtB;AAEN,UAAIiC,MAAC,MAAC8R,gBAAgBxgB,OAAM;AAAA,QAAEq+B,QAAQ;AAAA,MAAM,CAAC,GAAG;AAC9C,cAAMy1J,aAAap1L,MAAKogE,MAAMohF,8BAA8B,YAAY;AAExE,cAAMr9G,cAAc7iC,MAAKH,QACrB6O,MAAAA,MAAEu3B,mBACA,MACA,IACAv3B,YAAE61B,eAAe,CAAC71B,YAAEs5B,gBAAgBhoC,MAAKH,KAAK,CAAC,CAAC,CAClD,IACA6O,MAAAA,MAAEk4B,YAAa;AAEnB5mC,QAAAA,MAAKH,QAAQ6O,MAAAA,MAAEi2B,eACbhmC,OAAMomJ,UAAU,0BAA0B,GAC1C,CAAC+uC,YAAYplL,MAAAA,MAAEg6B,eAAgB,CAAA,CACjC;AAEA0qL,sBAAcz4M,IAAI3a,MAAKH,KAAK;AAE5B4iE,YAAIr7D,KACFsH,MAAAA,MAAEm1B,qBACA,KACAn1B,MAAC,MAACmoD,UAAUi9H,UAAU,GACtBplL,MAAC,MAACi2B,eAAehmC,OAAMomJ,UAAU,0BAA0B,GAAG,CAC5Dr2I,MAAAA,MAAEmoD,UAAUoW,MAAM,GAClBv+D,MAAAA,MAAEmoD,UAAU9nC,QAAQ,GACpBrgB,MAAAA,MAAEi1B,gBACArI,YAAWxpB,IAAIif,SAAOriB,MAAC,MAACmoD,UAAU9lC,IAAI2I,UAAU,CAAC,CACnD,GACAhrB,YAAE84B,iBAAiB,CACjB94B,YAAEk5B,eACAl5B,MAAAA,MAAE0qB,WAAW,cAAc,GAC3B1qB,MAAAA,MAAEm4B,eAAe,IAAI,CACvB,GACAn4B,MAAC,MAACk5B,eACAl5B,MAAC,MAAC0qB,WAAW,YAAY,GACzB1qB,MAAC,MAACm4B,eAAe,IAAI,CACvB,GACAn4B,MAAC,MAACk5B,eACAl5B,MAAC,MAAC0qB,WAAW,UAAU,GACvB1qB,MAAC,MAACm4B,eAAe,IAAI,CACvB,GACAn4B,MAAAA,MAAEk5B,eAAel5B,MAAAA,MAAE0qB,WAAW,aAAa,GAAGyJ,WAAW,CAAC,CAC3D,CAAC,CACH,CACH,CACF;AAAA,MACF,OAAO;AACL4/B,YAAIr7D,KACFsH,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,0BAA0B,GAAG,CAC5Dr2I,MAAAA,MAAEmoD,UAAUoW,MAAM,GAClBv+D,MAAC,MAACmoD,UAAU9nC,QAAQ,GACpBrgB,MAAC,MAACi1B,gBAAgBrI,YAAWxpB,IAAIif,SAAOriB,MAAC,MAACmoD,UAAU9lC,IAAI2I,UAAU,CAAC,CAAC,GACpEhrB,MAAAA,MAAE+O,iBAAiBzd,KAAI,KAAK0O,MAAC,MAAC8R,gBAAgBxgB,OAAM;AAAA,UAAEq+B,QAAQ;AAAA,QAAM,CAAA,IAChE80L,0BAA0B;AAAA,UACxBc,MAAMv1N,MAAKogE,MAAMohF,8BAA8B,MAAM;AAAA,UACrDg0E,QAAQxlN,MAAC,MAACmoD,UAAUoW,MAAM;AAAA,UAC1BknJ,UAAUzlN,MAAAA,MAAEmoD,UAAU9nC,QAAQ;AAAA,QAChC,CAAC,EAAE2K,aACHw5L,mBAAmB;AAAA,UACjBgB,QAAQxlN,MAAC,MAACmoD,UAAUoW,MAAM;AAAA,UAC1BknJ,UAAUzlN,MAAAA,MAAEmoD,UAAU9nC,QAAQ;AAAA,QAChC,CAAC,EAAE2K,YACPhrB,MAAC,MAACmoD,UAAUoW,MAAM,CAAC,CACpB,CACH;AAAA,MACF;AAEA,aAAOxK;AAAAA,IACR,GAAE,EAAE;AAEL,WAAO/zD,YAAEw5B,mBAAmB,CAC1Bx5B,YAAEm1B,qBAAqB,KAAKn1B,MAAC,MAACmoD,UAAUpqD,IAAI,GAAG/N,MAAKsB,IAAI,GACxD0O,MAAC,MAACw5B,mBAAmBs2B,KAAK,GAC1B9vD,YAAEmoD,UAAUpqD,IAAI,CAAC,CAClB;AAAA,EACH;AAEA,WAAS2nN,2BAA2B;AAAA,IAAEp0N,MAAAA;AAAAA,IAAM8+D,OAAAA;AAAAA,EAAyB,GAAG;AACtE,QAAI,CAAC00J,mBAAmBxzN,KAAI,KAAK,CAAC6zN,oBAAoB7zN,MAAK65B,KAAKA,IAAI,GAAG;AACrE;AAAA,IACF;AAEA,UAAM29G,MAAMx3I,MAAKi7B,KACbvsB,MAAAA,MAAEmoD,UAAU72D,MAAKi7B,EAAE,IACnB6jC,OAAMqhF,sBAAsB,OAAO;AAEvC,WAAOzxI,MAAAA,MAAEw6B,oBAAoB,OAAO,CAClCx6B,YAAE06B,mBAAmBouG,KAAK9oI,YAAE4qD,aAAat5D,KAAI,CAAC,CAAC,CAChD;AAAA,EACH;AAEA,QAAM04B,UAA+B;AAAA,IACnC+R,yBAAyB/rC,OAAM;AAC7B,YAAMq+B,OAAOr+B,MAAKkQ,IAAI,aAAa;AACnC,UAAI,CAACmuB,KAAKje,qBAAsB;AAEhC,YAAM4jD,eAAc0xJ,2BAA2Br3L,IAAI;AACnD,UAAI2lC,cAAa;AACf,cAAM,CAAC2xJ,WAAW,IAAI31N,MAAK2tK,oBAAoB,CAC7C3pG,cACAh0D,MAAC,MAACg8B,uBAAuB,MAAM,CAC7Bh8B,MAAAA,MAAEk8B,gBAEAl8B,MAAAA,MAAEmoD,UAAU6L,aAAY7lC,aAAa,CAAC,EAAE5B,EAAE,GAC1CvsB,MAAC,MAAC0qB,WAAW,SAAS,CACxB,CAAC,CACF,CAAC,CACH;AAED,YAAI,CAAC2D,KAAK/8B,KAAKi7B,IAAI;AACjBv8B,UAAAA,MAAKogE,MAAMogF,oBAAoBm1E,WAAW;AAAA,QAC5C;AAAA,MACF;AAAA,IACD;AAAA,IACDhqL,iBAAiB3rC,OAAM;AACrB,YAAMgkE,eAAc0xJ,2BAA2B11N,KAAI;AACnD,UAAIgkE,cAAa;AACf,cAAM,CAACsiJ,OAAO,IAAItmN,MAAK6lJ,YAAY7hF,YAAW;AAE9C,cAAM3lC,OAAOioL,QAAQp2M,IAAI,gBAAgB;AACzC,cAAMqsB,KAAK8B,KAAK/8B,KAAKi7B;AAGrB,cAAM66C,WAAUp3E,MAAKogE,MAAMgjF,cAAc7mH,GAAGxuB,IAAI;AAChDqpE,QAAAA,SAAQ18C,aAAa6B;AACrB66C,QAAAA,SAAQp3E,OAAOq+B;AAAAA,MACjB;AAAA,IACD;AAAA,IACDoN,gBAAgBzrC,OAAMC,QAAO;AAG3B,YAAM21N,iBACJjB,oBAAoB30N,KAAI,KACxB60N,qBAAqB70N,KAAI,KACzBk1N,sBAAsBl1N,OAAMC,MAAK;AAEnC,UAAI21N,eAAgB51N,CAAAA,MAAK6lJ,YAAY+vE,cAAc;AAAA,IACpD;AAAA,IACD7sL,iBAAiB/oC,OAAMC,QAAO;AAC5B,YAAM41N,kBACJlB,oBAAoB30N,KAAI,KAAKq1N,sBAAsBr1N,OAAMC,MAAK;AAEhE,UAAI41N,gBAAiB71N,CAAAA,MAAK6lJ,YAAYgwE,eAAe;AAAA,IACtD;AAAA,IAEDzwL,qBAAqBplC,OAAMC,QAAO;AAChC,UAAI,CAACy0N,cAAc3lN,IAAI/O,MAAKsB,KAAKw5B,KAAK,EAAG;AAEzC96B,MAAAA,MAAK6lJ,YACH71I,YAAEi2B,eAAehmC,OAAMomJ,UAAU,2BAA2B,GAAG,CAE7Dr2I,YAAEmoD,UAAUn4D,MAAKkQ,IAAI,aAAa,EAAE5O,IAAI,GACxC0O,MAAAA,MAAE83B,cAEA9nC,MAAKkQ,IAAI,eAAe,EAAE5O,KAAKyM,QAE7B/N,MAAKkQ,IAAI,eAAe,EAAE5O,KAAKH,KACnC,GAEA6O,MAAAA,MAAEmoD,UAAUn4D,MAAKkQ,IAAI,iBAAiB,EAAE,CAAC,EAAE5O,IAAI,GAE/C0O,MAAC,MAACmoD,UAAUn4D,MAAKkQ,IAAI,iBAAiB,EAAE,CAAC,EAAE5O,IAAI,CAAC,CACjD,CACH;AAAA,IACD;AAAA,IAED6kC,eAAenmC,OAAMC,QAAO;AAC1B,UAAID,MAAKsB,KAAK+5B,UAAU5tB,WAAW,EAAG;AACtC,UAAI,CAACinN,cAAc3lN,IAAI/O,MAAKsB,KAAK+5B,UAAU,CAAC,CAAC,EAAG;AAKhD,UAAIr7B,MAAKsB,KAAKs3B,OAAO7qB,SAAS9N,OAAMomJ,UAAU,gBAAgB,EAAEt4I,MAAM;AACpE;AAAA,MACF;AAEA/N,MAAAA,MAAK6lJ,YACH71I,YAAEi2B,eAAehmC,OAAMomJ,UAAU,2BAA2B,GAAG,CAC7Dr2I,MAAC,MAACmoD,UAAUn4D,MAAKkQ,IAAI,WAAW,EAAE,CAAC,EAAE5O,IAAI,GACzC0O,MAAAA,MAAEmoD,UAAUn4D,MAAKkQ,IAAI,WAAW,EAAE,CAAC,EAAE5O,IAAI,GAEzC0O,MAAAA,MAAEmoD,UAAUn4D,MAAKkQ,IAAI,uBAAuB,EAAE,CAAC,EAAE5O,IAAI,GAErD0O,YAAEmoD,UAAUn4D,MAAKkQ,IAAI,uBAAuB,EAAE,CAAC,EAAE5O,IAAI,CAAC,CACvD,CACH;AAAA,IACF;AAAA,EACD;AAAC0S,oBAAA,UAEagmB;;;;;;;;;;;AC7Yf,MAAApf,qBAAApR,aAAA;AACA,MAAAssN,0BAAAtsN,aAAA;AACA,MAAAusN,mCAAAvsN,aAAA;AAIA,MAAAwsN,qBAAAxsN,yBAAA;AAAoDwK,QAAA,WAUrCiG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjZ,aAAqB;AAChDiZ,QAAID,cAA+B,CAAE;AAGF;AAEjC,UAAI;AAAA,QAAE6B;AAAAA,MAAO,IAAI7a;AAAAA,IACnB;AACA,UAAM;AAAA,MAAEoZ,SAAAA;AAAAA,IAAQ,IAAIpZ;AAEpB,QAGM6a,UAAUzB,aAAY,UAC1B;AACA,aAAO;AAAA,QACL9L,MAAM;AAAA,QACNurB,UAAU28L,wBAAgB;AAAA,QAC1Bj8L,SAASk8L,mBAAAA;AAAAA,MACV;AAAA,IACH,WACE,CAACr8M,YACDA,aAAY,aACZA,aAAY,aACZA,aAAY,aACZA,aAAY,aACZA,aAAY,aACZA,aAAY,WACZ;AACAH,UAAID,cAA+B,QAAS;AAC5C,cAAO,GAAAg6M,2DAAyB;AAAA,QAC9B1lN,MAAM;AAAA,QAEN2L;AAAAA,QACA84M,SAASP,iCAAQ,SAACr1L;AAAAA,QAClBtD,UAAU28L,wBAAgB;AAAA,QAE1BvC,kBAAkB75M;AAAAA,MAEpB,CAAC;AAAA,IACH,OAAO;AACL,YAAM,IAAIpC,MACR,0GACF;AAAA,IACF;AAAA,EACD,CAAA;;;;;;;;;;;;AC/DD,MAAAmD,qBAAApR,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AAA6DwK,QAAA,WAQ9C,GAAAiG,mBAAAA,SAAQP,SAAO;AAC5BA,QAAID,cAAa,qCAA4B;AAE7C,UAAM08M,kBAAkB,oBAAIx/J,IAAyB;AAErD,aAASy/J,mBAAmB90N,OAA6C;AACvE,UAAI,CAAC0O,YAAE2P,sBAAsBre,KAAI,EAAG,QAAO;AAC3C,aACEA,MAAKi8B,SAAS,WACdj8B,MAAKi8B,SAAS,iBACd44L,gBAAgBpnN,IAAIzN,KAAI;AAAA,IAE5B;AAEA,UAAM+0N,oCAAyD;AAAA,MAC7D/pL,eAAetsC,OAAkC;AAC/C,cAAM;AAAA,UAAE66B;AAAAA,QAAM,IAAG76B,MAAKsB;AACtB,YAAI,CAAC80N,mBAAmBv7L,IAAI,EAAG;AAE/B,cAAM;AAAA,UAAE0B;AAAAA,QAAG,IAAI1B,KAAKsD,aAAa,CAAC;AAClC,cAAMm4L,QAAQt2N,MAAKogE,MAAM6hF,iCAAiC1lH,EAAE;AAC5D1B,aAAKsD,aAAa,CAAC,EAAE5B,KAAK+5L;AAC1Bz7L,aAAK0C,OAAO;AAEZv9B,QAAAA,MAAKo6D,YAAa;AAClBp6D,QAAAA,MAAKsB,KAAK65B,KAAKA,KAAK1B,QAClBzpB,MAAAA,MAAEw6B,oBAAoB,SAAS,CAC7Bx6B,MAAAA,MAAE06B,mBAAmBnO,IAAIvsB,MAAC,MAACmoD,UAAUm+J,KAAK,CAAC,CAAC,CAC7C,CACH;AAAA,MACD;AAAA,MACD,6BACEt2N,OACAC,QACA;AACA,YAAoCA,OAAM8rL,gBAAgB,UAAU,GAAG;AACrE,cAAIsrB,MAA2B;AAC/B,cAAIkf,aAAa;AAEjB,qBAAWj1N,SAAQtB,MAAKsB,KAAK65B,MAAM;AAAA,gBAAAq7L;AACjC,gBAAI,CAACJ,mBAAmB90N,KAAI,EAAG;AAC/B,aAAAk1N,OAAAnf,QAAG,OAAAmf,OAAHnf,MAAQr3M,MAAKogE,MAAMqhF,sBAAsB,UAAU;AACnD,kBAAMg1E,eACJn1N,MAAKi8B,SAAS,iBACd44L,gBAAgBjmN,IAAI5O,KAAI,MAAsB;AAChDi1N,2BAAAA,aAAeE;AAEf,gBAAI,CAACN,gBAAgB/vI,OAAO9kF,KAAI,GAAG;AACjCA,cAAAA,MAAKi8B,OAAO;AAAA,YACd;AACA,uBAAWc,QAAQ/8B,MAAK68B,cAAc;AACpCE,mBAAKvC,OAAO9rB,YAAEi2B,eACZj2B,MAAC,MAACy4B,iBACAz4B,YAAEmoD,UAAUk/I,GAAG,GACfof,eAAezmN,MAAC,MAAC0qB,WAAW,GAAG,IAAI1qB,MAAAA,MAAE0qB,WAAW,GAAG,CACrD,GACA,CAAC2D,KAAKvC,IAAI,CACZ;AAAA,YACF;AAAA,UACF;AACA,cAAI,CAACu7K,IAAK;AAEV,gBAAMqf,cAAc1mN,MAAAA,MAAEi2B,eACpBj2B,MAAAA,MAAEy4B,iBAAiBz4B,MAAAA,MAAEmoD,UAAUk/I,GAAG,GAAGrnM,MAAAA,MAAE0qB,WAAW,GAAG,CAAC,GACtD,EACF;AAEA,gBAAMspC,eAAcmO,MAAAA,SAASg3D,UAAUjmE;AAAAA;AAAAA,gBAE/BlzD,MAAC,MAACmoD,UAAUk/I,GAAG,CAAC,MAAMp3M,OAAMomJ,UAAU,UAAU,CAAC;AAAA,YACrDrmJ,MAAKsB,KAAK65B,IAAI;AAAA;AAAA,YAEdnrB,MAAC,MAACmoD,UAAUk/I,GAAG,CAAC;AAAA;AAAA,YAEhBkf,aAAavmN,MAAC,MAACm+B,gBAAgBuoL,WAAW,IAAIA,WAAW;AAAA;AAAA;AAI7D1mN,gBAAC,MAACspB,SAAS0qC,cAAahkE,MAAKsB,IAAI;AAEjC,gBAAM;AAAA,YAAEu4I;AAAAA,UAAW,IAAI75I;AACvB,cACE65I,WAAWrsH,gBACXqsH,WAAWr6H,oBACXq6H,WAAWx8H,iBACX;AACArd,YAAAA,MAAK6lJ,YAAY71I,MAAC,MAAC61B,eAAe,CAACm+B,YAAW,CAAC,CAAC;AAAA,UAClD,WAAWhkE,MAAKmiB,iBAAiB;AAC/BniB,YAAAA,MAAKsB,KAAK65B,OAAO,CAAC6oC,YAAW;AAAA,UAC/B,OAAO;AACLhkE,YAAAA,MAAK6lJ,YAAY7hF,YAAW;AAAA,UAC9B;AAAA,QACF,OAAO;AACL,cAAI2yJ,UAA+B;AACnC,cAAIJ,aAAa;AAEjB,qBAAWj1N,SAAQtB,MAAKsB,KAAK65B,MAAM;AAAA,gBAAAy7L;AACjC,gBAAI,CAACR,mBAAmB90N,KAAI,EAAG;AAC/B,aAAAs1N,WAAAD,YAAO,OAAAC,WAAPD,UAAY32N,MAAKogE,MAAMqhF,sBAAsB,OAAO;AACpD,kBAAMg1E,eACJn1N,MAAKi8B,SAAS,iBACd44L,gBAAgBjmN,IAAI5O,KAAI,MAAsB;AAChDi1N,2BAAAA,aAAeE;AAEf,gBAAI,CAACN,gBAAgB/vI,OAAO9kF,KAAI,GAAG;AACjCA,cAAAA,MAAKi8B,OAAO;AAAA,YACd;AACAj8B,YAAAA,MAAK68B,aAAa/D,QAAQiE,UAAQ;AAChC,oBAAMvF,OAAO,CAAC9oB,MAAAA,MAAEmoD,UAAUw+J,OAAO,GAAGt4L,KAAKvC,IAAI;AAC7C,kBAAI26L,aAAc39L,MAAKpwB,KAAKsH,MAAC,MAACm4B,eAAe,IAAI,CAAC;AAClD9J,mBAAKvC,OAAO9rB,MAAAA,MAAEi2B,eAAehmC,OAAMomJ,UAAU,OAAO,GAAGvtH,IAAI;AAAA,YAC7D,CAAC;AAAA,UACH;AACA,cAAI,CAAC69L,QAAS;AAEd,gBAAME,UAAU72N,MAAKogE,MAAMqhF,sBAAsB,OAAO;AACxD,gBAAMq1E,aAAa92N,MAAKogE,MAAMqhF,sBAAsB,UAAU;AAE9D,cAAIi1E,cAA4B1mN,MAAC,MAACi2B,eAChChmC,OAAMomJ,UAAU,SAAS,GACzB,CAACr2I,YAAEmoD,UAAUw+J,OAAO,GAAG3mN,MAAAA,MAAEmoD,UAAU0+J,OAAO,GAAG7mN,MAAAA,MAAEmoD,UAAU2+J,UAAU,CAAC,CACtE;AACA,cAAIP,WAAYG,eAAc1mN,YAAEm+B,gBAAgBuoL,WAAW;AAE3D,gBAAM1yJ,eAAcmO,MAAAA,SAASg3D,UAAUjmE;AAAAA;AAAAA,gBAE/ByzJ,OAAO;AAAA,YACX32N,MAAKsB,KAAK65B,IAAI;AAAA;AAAA,gBAEV07L,OAAO;AAAA,gBACPC,UAAU;AAAA;AAAA,YAEdJ,WAAW;AAAA;AAAA;AAIf1mN,gBAAC,MAACspB,SAAS0qC,aAAYlmC,OAAO99B,MAAKsB,IAAI;AAEvC,gBAAM;AAAA,YAAEu4I;AAAAA,UAAW,IAAI75I;AACvB,cACE65I,WAAWrsH,gBACXqsH,WAAWr6H,oBACXq6H,WAAWx8H,iBACX;AACArd,YAAAA,MAAK6lJ,YAAY71I,MAAC,MAAC61B,eAAe,CAACm+B,YAAW,CAAC,CAAC;AAAA,UAClD,WAAWhkE,MAAKmiB,iBAAiB;AAC/BniB,YAAAA,MAAKsB,KAAK65B,OAAO,CAAC6oC,YAAW;AAAA,UAC/B,OAAO;AACLhkE,YAAAA,MAAK6lJ,YAAY7hF,YAAW;AAAA,UAC9B;AAAA,QACF;AAAA,MACD;AAAA,MACDj6B,gBAAgB/pC,OAAMC,QAAO;AAC3B,YAAIo3M,MAA2B;AAC/B,YAAIkf,aAAa;AAEjB,cAAM;AAAA,UAAE14L;AAAAA,QAAO,IAAG79B,MAAKsB;AACvB,mBAAWL,MAAK48B,OAAO;AACrB,qBAAWslC,QAAQliE,GAAEw6B,YAAY;AAC/B,gBAAI26L,mBAAmBjzJ,IAAI,GAAG;AAAA,kBAAA4zJ;AAC5B,kBAEE,CAAC92N,OAAM8rL,gBAAgB,UAAU,GACjC;AACA/rL,gBAAAA,MAAKq+D,SAAS;AAAA,kBACZ5zB,oBAAoBzqC,OAAM;AACxB,0BAAM;AAAA,sBAAEsB,MAAAA;AAAAA,oBAAK,IAAItB;AACjB,wBAAI,CAACo2N,mBAAmB90N,KAAI,EAAG;AAC/B,0BAAMtB,MAAKqqK,oBACT,6IACF;AAAA,kBACF;AAAA,gBACF,CAAC;AAAA,cACH;AAEA,eAAA0sD,QAAA1f,QAAG,OAAA0f,QAAH1f,MAAQr3M,MAAKogE,MAAMqhF,sBAAsB,UAAU;AAEnD,oBAAMg1E,eAAetzJ,KAAK5lC,SAAS;AACnCg5L,6BAAAA,aAAeE;AAEftzJ,mBAAK5lC,OAAO;AACZ,yBAAWc,QAAQ8kC,KAAKhlC,cAAc;AACpCE,qBAAKvC,OAAO9rB,YAAEi2B,eACZj2B,MAAC,MAACy4B,iBACAz4B,YAAEmoD,UAAUk/I,GAAG,GACfof,eAAezmN,MAAC,MAAC0qB,WAAW,GAAG,IAAI1qB,MAAAA,MAAE0qB,WAAW,GAAG,CACrD,GACA,CAAC2D,KAAKvC,IAAI,CACZ;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAAA,QACF;AACA,YAAI,CAACu7K,IAAK;AAEV,cAAMqf,cAAc1mN,MAAAA,MAAEi2B,eACpBj2B,MAAAA,MAAEy4B,iBAAiBz4B,MAAAA,MAAEmoD,UAAUk/I,GAAG,GAAGrnM,MAAAA,MAAE0qB,WAAW,GAAG,CAAC,GACtD,EACF;AAEA,cAAMspC,eAAcmO,MAAAA,SAASg3D,UAAUjmE;AAAAA;AAAAA,gBAE7BlzD,MAAC,MAACmoD,UAAUk/I,GAAG,CAAC,MAAMp3M,OAAMomJ,UAAU,UAAU,CAAC;AAAA,YACrDrmJ,MAAKsB,IAAI;AAAA;AAAA,YAET0O,MAAC,MAACmoD,UAAUk/I,GAAG,CAAC;AAAA;AAAA,YAEhBkf,aAAavmN,MAAC,MAACm+B,gBAAgBuoL,WAAW,IAAIA,WAAW;AAAA;AAAA;AAI/D1mN,cAAC,MAACspB,SAAS0qC,cAAahkE,MAAKsB,IAAI;AAEjCtB,QAAAA,MAAK6lJ,YAAY7hF,YAAW;AAAA,MAC9B;AAAA,IACD;AAED,UAAMgzJ,0CACJ34J,MAAAA,SAASu9E,SAASx4E,MAAM,CACtBizJ,mCACA;AAAA,MACE3+J,SAAS13D,OAAM;AACbA,QAAAA,MAAKqc,KAAM;AAAA,MACb;AAAA,IACF,CAAC,CACF;AAEH,WAAO;AAAA,MACLtO,MAAM;AAAA,MACN+M,mBAAmBA,CAAC+4D,GAAG+hD,MAAMA,EAAE9xH,QAAQ4E,KAAK,4BAA4B;AAAA,MAExEsxB,SAASqkC,eAASu9E,SAASx4E,MAAM,CAC/BizJ,mCACA;AAAA,QAIExtL,QAAQ7oC,OAAM;AACZm2N,0BAAgBtpI,MAAO;AAEvB,cAAI7sF,MAAKsB,KAAK87B,eAAe,SAAU;AACvC,cAAI,CAACp9B,MAAKsB,KAAK65B,KAAK01D,KAAKulI,kBAAkB,EAAG;AAE9C,gBAAMa,iBAAiB,CAAE;AACzB,qBAAW9zJ,QAAQnjE,MAAKkQ,IAAI,MAAM,GAAG;AACnC,gBAAIizD,KAAKplD,sBAAqB,KAAMolD,KAAKziD,oBAAmB,GAAI;AAC9D;AAAA,YACF;AAEA,gBAAIpf,QAAoC6hE,KAAK7hE;AAC7C,gBAAI41N,eAAe;AAEnB,gBAAI/zJ,KAAK7iD,8BAA8B;AAAA,kBAAA62M;AACrC,kBAAI;AAAA,gBAAEp4L;AAAAA,cAAa,IAAGokC,KAAK7hE;AAC3B,kBAAI4kN;AACJ,kBAAIl2M,YAAEoQ,mBAAmB2e,WAAW,GAAG;AACrCmnL,wBAAQnnL,YAAYxC;AACpBwC,4BAAYxC,KAAK;AACjBwC,8BAAc/uB,MAAC,MAAC4qD,aAAa77B,WAAW;AAAA,cACzC,WAAU,CAAC/uB,MAAAA,MAAE0c,aAAaqS,WAAW,GAAG;AACvC;AAAA,cACF;AAEA,eAAAo4L,SAAAjR,UAAK,OAAAiR,SAALjR,QAAUlmN,MAAKogE,MAAMqhF,sBAAsB,UAAU;AACrDw1E,6BAAevuN,KACbsH,MAAAA,MAAEw6B,oBAAoB,OAAO,CAC3Bx6B,YAAE06B,mBAAmBw7K,OAAOnnL,WAAW,CAAC,CACzC,CACH;AACAokC,mBAAK0iF,YACH71I,MAAAA,MAAEg8B,uBAAuB,MAAM,CAC7Bh8B,MAAC,MAACk8B,gBACAl8B,MAAAA,MAAEmoD,UAAU+tJ,KAAK,GACjBl2M,MAAC,MAAC0qB,WAAW,SAAS,CACxB,CAAC,CACF,CACH;AACA;AAAA,YACF;AAEA,gBAAIyoC,KAAK5iD,4BAA4B;AACnCjf,cAAAA,QAAO6hE,KAAK7hE,KAAKy9B;AACjB,kBAAI,CAACz9B,SAAQ0O,MAAAA,MAAEwd,WAAWlsB,KAAI,EAAG;AAEjC6hE,mBAAK0iF,YACH71I,MAAAA,MAAEg8B,uBACA,MACA37B,OAAOnK,KAAK8J,YAAEguD,2BAA2B18D,OAAM,KAAK,CAAC,EAAE8R,IACrDmpB,QAAMvsB,MAAC,MAACk8B,gBAAgBl8B,MAAAA,MAAE0qB,WAAW6B,EAAE,GAAGvsB,MAAAA,MAAE0qB,WAAW6B,EAAE,CAAC,CAC5D,CACF,CACF;AACA26L,6BAAe;AAAA,YACjB,WAAW/zJ,KAAK10C,uBAAuB;AACrC;AAAA,YACF;AAEA,gBAAIze,YAAEoQ,mBAAmB9e,KAAI,GAAG;AAC9B,oBAAM;AAAA,gBAAEi7B;AAAAA,cAAG,IAAIj7B;AACfA,cAAAA,MAAKi7B,KAAK;AACV06L,6BAAevuN,KACbsH,MAAC,MAACw6B,oBAAoB,OAAO,CAC3Bx6B,MAAC,MAAC06B,mBAAmBnO,IAAIvsB,MAAAA,MAAE4qD,aAAat5D,KAAI,CAAC,CAAC,CAC/C,CACH;AAAA,YACD,WAAU0O,MAAC,MAAC2P,sBAAsBre,KAAI,GAAG;AACxC,kBAAIA,MAAKi8B,SAAS,SAAS;AACzB44L,gCAAgB7oN,IAAI61D,KAAK7hE,OAAuB;AAAA,cAClD,WAAWA,MAAKi8B,SAAS,eAAe;AACtC44L,gCAAgB7oN,IAAI61D,KAAK7hE,OAAsB;AAAA,cACjD;AACAA,cAAAA,MAAKi8B,OAAO;AACZ05L,6BAAevuN,KAAKpH,KAAI;AAAA,YAC1B,OAAO;AACL21N,6BAAevuN,KAAKy6D,KAAK7hE,IAAI;AAAA,YAC/B;AAEA,gBAAI41N,aAAc/zJ,MAAK2iF,OAAQ;AAAA,UACjC;AAEA9lJ,UAAAA,MAAKokJ,cAAc,QAAQp0I,MAAC,MAAC61B,eAAeoxL,cAAc,CAAC;AAAA,QAC5D;AAAA,QAGDv/J,SAAS13D,OAAMC,QAAO;AACpB,cAAID,MAAKsB,KAAK66B,OAAO;AACnBn8B,YAAAA,MAAKq+D,SAAS24J,yCAAyC/2N,MAAK;AAAA,UAC9D;AAAA,QACF;AAAA,MACF,CAAC,CACF;AAAA,IACF;AAAA,EACF,CAAA;;;;;;;;;;;;ACnVD,MAAA2a,qBAAApR,aAAA;AACA,MAAAusN,mCAAAvsN,aAAA;AAGoDwK,QAAA,WAMrCiG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjZ,aAAqB;AAChDiZ,QAAID,cAA+B,CAAE;AAErC,YAAO,GAAAg6M,2DAAyB;AAAA,MAC9B1lN,MAAM;AAAA,MAEN2L;AAAAA,MACA84M,SAASP,iCAAQ,SAACt4L;AAAAA,MAClBuvJ,OAAOzoL,SAAQyoL;AAAAA,MAEfpuK,kBAAkBrS,MAAMsS,YAAY;AACC;AAEjCA,qBAAWjX,QAAQ4E,KAAK,mBAAmB,wBAAwB;AAAA,QACrE;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACF,CAAA;;;;;;;;;;;;AC7BD,MAAAkS,qBAAApR,aAAA;AAGA,MAAAusN,mCAAAvsN,aAAA;AAYA,WAASk4I,YAAYthF,QAAcg3J,UAAuB;AACxD,UAAMrpN,OAAO;AACb,QAAI+tD;AACJ,QAAItuD,IAAI;AACR,OAAG;AACDsuD,YAAM,IAAI/tD,IAAI;AACd,UAAIP,IAAI,EAAGsuD,QAAOtuD;AAClBA;AAAAA,IACF,SAAS4pN,SAASroN,IAAI+sD,GAAG;AACzB,WAAOA;AAAAA,EACT;AAAC9nD,QAAAA,cAEciG,mBAAO,SAAC,CAAC;AAAA,IAAE3Z,OAAO0P;AAAAA,IAAGmiE;AAAAA,IAAU14D;AAAAA,EAAc,MAAM;AAChEA,uDAAyC;AAEzC,WAAO;AAAA,MACL1L,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,kBAAkB;AAAA,MAEzDqoL,MAAM;AAGJ,YAAA0hC,iCAAAA,eAAc,KAAKtyN,MAAM8xN,iCAAAA,SAASC,cAA0B,KAAK;AAAA,MAClE;AAAA,MAEDl4L,SAAS;AAAA,QAIPuR,UAAUD,WAAW;AACnB,gBAAM;AAAA,YAAE80B,OAAAA;AAAAA,UAAM,IAAI90B;AAClB,gBAAMylD,eAAe,oBAAIviF,IAAa;AACtC,gBAAM2sB,OAAOmQ,UAAUp7B,IAAI,MAAM;AACjC,qBAAWlQ,SAAQm7B,MAAM;AACvB,gBAAIn7B,MAAK4uB,aAAa;AACpBmiE,2BAAa90E,IAAIjc,MAAKkQ,IAAI,QAAQ,EAAE5O,KAAKyM,IAAI;AAAA,YAC/C;AAAA,UACF;AACA,qBAAW/N,SAAQm7B,MAAM;AACvB,gBAAI,CAACn7B,MAAKmiB,gBAAiB;AAC3B,kBAAMk1M,uBAAuB31E,YAAYthF,QAAO2wB,YAAY;AAC5DA,yBAAa90E,IAAIo7M,oBAAoB;AACrC,kBAAMC,iBAAiBtnN,EAAEs/B,YACvBt/B,EAAE0qB,WAAW28L,oBAAoB,CACnC;AAEA,gBAAIrzJ;AACJ,kBAAMggJ,YAAYhkN,MAAKsB,KAAK65B;AAG5B,gBAAI6oL,UAAUv2M,WAAW,KAAKuC,EAAE2N,sBAAsBqmM,UAAU,CAAC,CAAC,GAAG;AACnEhgJ,cAAAA,eAAch0D,EAAE6pD,iBACdmqJ,UAAU,CAAC,EAAEhpL,YACbgpL,UAAU,CAAC,CACb;AAAA,YACF,OAAO;AACLhgJ,cAAAA,eAAcmO,SAASn3C,WAAWkoC,eAAe8gJ,SAAS;AAAA,YAC5D;AAEAhkN,YAAAA,MAAK6lJ,YACH71I,EAAEk/B,qBACAooL,gBACAtzJ,cACA,CAAA,GACa,IACf,CACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;ACxFD,MAAAppD,qBAAApR,aAAA;AASA,WAAS+tN,QAAQ;AAAA,IAAEj2N,MAAAA;AAAAA,EAAmD,GAAG;AAAA,QAAAk2N;AACvE,UAAM;AAAA,MAAE/+J;AAAAA,IAAM,IAAIn3D;AAElB,QAAIm3D,SAAK,SAAA++J,aAAL/+J,MAAOx4B,QAAPu3L,QAAAA,WAAY3/L,SAAS,GAAG,GAAG;AAE7B4gC,YAAMx4B,MAAMw4B,MAAMx4B,IAAIhpB,QAAQ,MAAM,EAAE;AAAA,IACxC;AAAA,EACF;AAACjD,QAAA,WAEc,GAAAiG,mBAAAA,SAAQP,SAAO;AAC5BA,QAAID,cAAa,sCAAoB;AAErC,WAAO;AAAA,MACL1L,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,kBAAkB;AAAA,MAEzDsxB,SAAS;AAAA,QACPiO,gBAAgBsvL;AAAAA,QAChBhpL,eAAegpL;AAAAA,MACjB;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;AChCD,MAAA38M,qBAAApR,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AAAyCwK,QAAA,WAE1B,GAAAiG,mBAAAA,SAAQP,SAAO;AAC5BA,QAAID,cAAa,sCAAoB;AAErC,WAAO;AAAA,MACL1L,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,mBAAmB;AAAA,MAE1DsxB,SAAS;AAAA,QACPoL,qBAAqBplC,OAAM;AACzB,gBAAM;AAAA,YAAEsB,MAAAA;AAAAA,YAAM8+D,OAAAA;AAAAA,UAAM,IAAIpgE;AACxB,gBAAM;AAAA,YAAEy6B;AAAAA,YAAUI;AAAAA,YAAMC;AAAAA,UAAM,IAAIx5B;AAClC,gBAAMo6M,gBAAgBjhL,SAAS/nB,MAAM,GAAG,EAAE;AAC1C,cAAI,CAAC1C,YAAEmlB,kBAAkB0C,SAAS6jL,aAAa,GAAG;AAChD;AAAA,UACF;AAEA,gBAAMv1F,MAAMn2G,MAAAA,MAAEmoD,UAAUt9B,IAAI;AAC5B,cAAI7qB,YAAE0O,mBAAmBmc,IAAI,GAAG;AAC9B,kBAAM;AAAA,cAAEv0B;AAAAA,cAAQ+pB;AAAAA,cAAU0M;AAAAA,YAAS,IAAIlC;AACvC,kBAAM0hL,OAAOn8I,OAAM8hF,sBAAsB57I,MAAM;AAC/C,gBAAIi2M,MAAM;AACR1hL,mBAAKv0B,SAASi2M;AACbp2F,kBAA2B7/G,SAAS0J,MAAC,MAACm1B,qBACrC,KACAn1B,MAAAA,MAAEmoD,UAAUokJ,IAAI,GAGhBj2M,MACF;AAAA,YACF;AAEA,gBAAIy2B,UAAU;AACZ,oBAAMw/K,QAAOn8I,OAAM8hF,sBAAsB7xH,QAAQ;AACjD,kBAAIksL,OAAM;AACR1hL,qBAAKxK,WAAWksL;AACfp2F,oBAA2B91F,WAAWrgB,MAAC,MAACm1B,qBACvC,KACAn1B,MAAAA,MAAEmoD,UAAUokJ,KAAI,GAEhBlsL,QACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEArwB,UAAAA,MAAK6lJ,YACH71I,MAAAA,MAAEu4B,kBAEAmzK,eACAv1F,KACAn2G,YAAEm1B,qBAAqB,KAAKtK,MAAMC,KAAK,CACzC,CACF;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;AC7DD,MAAAlgB,qBAAApR,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AAAmDwK,QAAA,WAMpC,GAAAiG,mBAAO,SAAC,CAACP,KAAK;AAAA,IAAEwvK,QAAQ;AAAA,EAAe,MAAM;AAAA,QAAAyqC,iBAAA8D;AAC1D/9M,QAAID,cAAa,sCAAoB;AACrC,UAAMygM,iBAAayZ,kBAAGj6M,IAAIK,WAAW,eAAe,MAAC45M,OAAAA,kBAAIzqC;AACzD,UAAMwuC,eAAWD,mBAAG/9M,IAAIK,WAAW,aAAa,MAAC09M,OAAAA,mBAAI;AAErD,WAAO;AAAA,MACL1pN,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,2BAA2B;AAAA,MAElEsxB,SAAS;AAAA,QACPwO,kBAAkBxoC,OAAM;AACtB,gBAAM;AAAA,YAAEsB,MAAAA;AAAAA,YAAM8+D,OAAAA;AAAAA,UAAM,IAAIpgE;AACxB,cAAIsB,MAAKm5B,aAAa,MAAM;AAC1B;AAAA,UACF;AAEA,cAAIq+G;AACJ,cAAIqrC;AAEJ,cACGuzC,eACCt3J,OAAMpgE,KAAKsuB,UAAW,KACtBte,MAAAA,MAAE0O,mBAAmBpd,MAAKu5B,IAAI,KAC9B,CAACv5B,MAAKu5B,KAAKkC,YACX/sB,MAAAA,MAAEiO,aAAa3c,MAAKu5B,KAAKv0B,MAAM,KAC/B0J,MAAC,MAACiO,aAAa3c,MAAKu5B,KAAKxK,QAAQ,KAClCrgB,MAAC,MAACiO,aAAa3c,MAAKu5B,IAAI,MACtB68L,eAECt3J,OAAMwhF,WAAWtgJ,MAAKu5B,KAAK9sB,IAAI,IACnC;AACA+qI,kBAAMx3I,MAAKu5B;AACXspJ,yBAAan0K,YAAEmoD,UAAU72D,MAAKu5B,IAAI;AAAA,UACnC,WAAUulC,OAAMpgE,KAAKsuB,aAAa;AAGjCtuB,YAAAA,MAAK6lJ,YAAY1zE,MAAAA,SAASg3D,UAAUjmE,aAAaljE,MAAKsB,IAAI,KAAK;AAE/D;AAAA,UACF,OAAO;AACLw3I,kBAAM14E,OAAM6hF,iCAAiC3gJ,MAAKu5B,IAAI;AACtDulC,YAAAA,OAAM13D,KAAK;AAAA,cAAE6zB,IAAIvsB,MAAAA,MAAEmoD,UAAU2gF,GAAG;AAAA,YAAE,CAAC;AACnCqrC,yBAAan0K,MAAAA,MAAEm1B,qBAAqB,KAAK2zG,KAAKx3I,MAAKu5B,IAAI;AAAA,UACzD;AAEA76B,UAAAA,MAAK6lJ,YACH71I,MAAC,MAACs2B,sBAGA4zK,gBACIlqM,MAAAA,MAAEq1B,iBAAiB,MAAM8+I,YAAYn0K,MAAAA,MAAEk4B,YAAW,CAAE,IACpDl4B,MAAAA,MAAEu4B,kBACA,MACAv4B,YAAEq1B,iBAAiB,OAAO8+I,YAAYn0K,MAAC,MAACk4B,YAAa,CAAA,GACrDl4B,YAAEq1B,iBACA,OACAr1B,MAAC,MAACmoD,UAAU2gF,GAAG,GACf14E,OAAM5I,oBACR,CACF,GACJxnD,MAAC,MAACmoD,UAAU2gF,GAAG,GACfx3I,MAAKw5B,KACP,CACF;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;AC3DM,WAAS4+K,sBAAsB15M,OAAyB;AAC7D,UAAM25M,eAAege,+BAA+B33N,KAAI;AACxD,UAAM;AAAA,MAAEsB,MAAAA;AAAAA,MAAMu4I;AAAAA,IAAW,IAAI8/D;AAC7B,QAAI9/D,WAAWp7H,uBAAuB;AACpC,YAAM;AAAA,QAAEgc;AAAAA,QAAUK;AAAAA,MAAO,IAAG++G,WAAWv4I;AACvC,UACEm5B,aAAa,QACbA,aAAa,QACZA,aAAa,QAAQn5B,UAASw5B,OAC/B;AACA,eAAO4+K,sBAAsB7/D,UAAU;AAAA,MACzC;AAAA,IACF;AACA,QAAIA,WAAW36H,wBAAwB;AACrC,YAAM;AAAA,QAAEye,aAAAA;AAAAA,MAAa,IAAGk8G,WAAWv4I;AACnC,UAAIq8B,aAAYA,aAAYlwB,SAAS,CAAC,MAAMnM,OAAM;AAChD,eAAOo4M,sBAAsB7/D,UAAU;AAAA,MACzC,OAAO;AAIL,eAAO;AAAA,MACT;AAAA,IACF;AACA,WACEA,WAAW3sH,cAAc;AAAA,MAAEntB,MAAMuB;AAAAA,IAAK,CAAC,KACvCu4I,WAAWp6H,kBAAkB;AAAA,MAAEgb,UAAU;AAAA,IAAI,CAAC,KAC9Co/G,WAAW1sH,OAAO;AAAA,MAAEptB,MAAMuB;AAAAA,IAAK,CAAC;AAAA,EAEpC;AAYO,WAASq2N,+BAA+B33N,OAA0B;AACvE,QAAI25M,eAAe35M;AACnBA,IAAAA,MAAKglK,WAAWpvC,OAAK;AACnB,UAAI,CAACmoF,wCAAwB,yBAACnoF,EAAEt0H,IAAI,EAAG,QAAO;AAC9Cq4M,qBAAe/jF;AAAAA,IACjB,CAAC;AACD,WAAO+jF;AAAAA,EACT;ACtDA,QAAMn8F,OAAWwvD,SAAaA,IAAIA,IAAIv/J,SAAS,CAAC;AAEhD,WAASmqN,yBACP58L,YAC2D;AAC3DA,iBAAaijL,wCAAAA,gCAAgCjjL,UAAU;AACvD,WACEhrB,MAAAA,MAAEiO,aAAa+c,UAAU,KACzBhrB,MAAAA,MAAEmR,QAAQ6Z,UAAU,KACnBhrB,MAAAA,MAAE0O,mBAAmBsc,UAAU,KAC9B,CAACA,WAAW+B,YACZ66L,yBAAyB58L,WAAW10B,MAAM;AAAA,EAEhD;AAOA,WAASuxN,aACP73N,OACA;AACA,QAAI83N,eAAyB93N;AAC7B,UAAM;AAAA,MAAEogE,OAAAA;AAAAA,IAAM,IAAIpgE;AAClB,WACE83N,aAAal2M,2BAA0B,KACvCk2M,aAAaj2M,yBAAwB,GACrC;AACA,YAAM;AAAA,QAAEvgB,MAAAA;AAAAA,MAAK,IAAIw2N;AACjB,YAAMC,YAAY/Z,wCAA2B,4BAC3C8Z,aAAal2M,2BAA4B,IACrCk2M,aAAa5nN,IAAI,QAAQ,IACzB4nN,aAAa5nN,IAAI,QAAQ,CAC/B;AACA,UAAI5O,MAAKu0B,UAAU;AACjB,eAAO,CAACuqC,OAAMk/B,SAASy4H,UAAUz2N,IAAI;AAAA,MACvC;AAEAw2N,qBAAeC;AAAAA,IACjB;AAAA,EACF;AAEA,QAAMC,gBAAgB7lJ,MAAQ,SAACn3C,WAC7B,0CACF;AACA,QAAMi9L,uBAAuB9lJ,MAAQ,SAACn3C,WAAW,mBAAmB;AACpE,QAAMk9L,oBAAoB/lJ,MAAQ,SAACn3C,WACjC,0CACF;AACA,QAAMm9L,2BAA2BhmJ,MAAQ,SAACn3C,WAAW,mBAAmB;AAOjE,WAASo9L,uBACdp4N,OACA;AAAA,IAAE03N;AAAAA,IAAaxd;AAAAA,EAAwC,GACvD/rC,iBACAkqD,WACAC,UACA;AACA,UAAM;AAAA,MAAEl4J,OAAAA;AAAAA,IAAM,IAAIpgE;AAIlB,QAAIogE,OAAMpgE,KAAKsuB,UAAW,KAAIupM,aAAa73N,KAAI,GAAG;AAChDmuK,sBAAgBtoB,YACd1zE,MAAAA,SAASn3C,WAAWkoC,aAAairG,gBAAgB7sK,IAAI,KACvD;AAEA;AAAA,IACF;AAEA,UAAMi3N,YAAY,CAAE;AAEpB,QAAIT,eAAe93N;AACnB,WACE83N,aAAal2M,2BAA0B,KACvCk2M,aAAaj2M,yBAAwB,GACrC;AACA,YAAM;AAAA,QAAEvgB,MAAAA;AAAAA,MAAK,IAAIw2N;AACjB,UAAIx2N,MAAKu0B,UAAU;AACjB0iM,kBAAU7vN,KAAKpH,KAAI;AAAA,MACrB;AACA,UAAIw2N,aAAal2M,8BAA8B;AAE7Ck2M,qBAAax2N,KAAKmR,OAAO;AAEzBqlN,uBAAe9Z,wCAA2B,4BAAC8Z,aAAa5nN,IAAI,QAAQ,CAAC;AAAA,MACvE,WAAW4nN,aAAaj2M,4BAA4B;AAElDi2M,qBAAax2N,KAAKmR,OAAO;AAEzBqlN,uBAAe9Z,wCAA2B,4BAAC8Z,aAAa5nN,IAAI,QAAQ,CAAC;AAAA,MACvE;AAAA,IACF;AAEA,QAAIqoN,UAAU9qN,WAAW,GAAG;AAG1B;AAAA,IACF;AAEA,UAAM+qN,SAAS,CAAE;AAEjB,QAAIC;AAEJ,aAASjrN,IAAI+qN,UAAU9qN,SAAS,GAAGD,KAAK,GAAGA,KAAK;AAC9C,YAAMlM,QAAOi3N,UAAU/qN,CAAC;AAIxB,YAAMmmK,SAAS3jK,MAAAA,MAAEoN,iBAAiB9b,KAAI;AAEtC,YAAMo3N,iBAAiB/kD,SAElBryK,MAAKs3B,SACNt3B,MAAKgF;AACT,YAAMywB,QAAQknL,wEAAgCya,cAAc;AAE5D,UAAI5/E;AACJ,UAAI6/E;AACJ,UAAIhlD,UAAU3jK,MAAAA,MAAEiO,aAAa8Y,OAAO;AAAA,QAAEhpB,MAAM;AAAA,MAAO,CAAC,GAAG;AACrD4qN,QAAAA,SAAQ7/E,MAAM/hH;AAEdz1B,QAAAA,MAAKs3B,SAAS5oB,MAAC,MAACw5B,mBAAmB,CAACx5B,YAAEg4B,eAAe,CAAC,GAAG8wG,GAAG,CAAC;AAAA,MAC9D,WAAU4+E,eAAe/jD,UAAUikD,yBAAyB7gM,KAAK,GAAG;AAInE4hM,QAAAA,SAAQ7/E,MAAMx3I,MAAKs3B;AAAAA,MACpB,WAAUwnC,OAAMk/B,SAASvoE,KAAK,GAAG;AAChC4hM,QAAAA,SAAQ7/E,MAAM4/E;AAAAA,MAChB,OAAO;AAGL,YAAI,CAACD,UAAU9kD,QAAQ;AACrB8kD,mBAASr4J,OAAM6hF,iCAAiClrH,KAAK;AACrDqpC,UAAAA,OAAM13D,KAAK;AAAA,YAAE6zB,IAAIvsB,MAAAA,MAAEmoD,UAAUsgK,MAAM;AAAA,UAAE,CAAC;AAAA,QACxC;AACA3/E,cAAM2/E;AACNE,QAAAA,SAAQ3oN,MAAAA,MAAEm1B,qBACR,KACAn1B,MAAC,MAACmoD,UAAUsgK,MAAM,GAKlBC,cACF;AAEA,YAAI/kD,QAAQ;AACVryK,UAAAA,MAAKs3B,SAASkgH;AAAAA,QAChB,OAAO;AACLx3I,UAAAA,MAAKgF,SAASwyI;AAAAA,QAChB;AAAA,MACF;AAIA,UAAI66B,UAAU3jK,MAAC,MAAC0O,mBAAmBqY,KAAK,GAAG;AACzC,YAAI2gM,eAAeE,yBAAyB7gM,KAAK,GAAG;AAGlDz1B,UAAAA,MAAKs3B,SAAS8/L;AAAAA,QAChB,OAAO;AAGL,gBAAM;AAAA,YAAEpyN;AAAAA,UAAO,IAAIywB;AACnB,cAAIzd;AACJ,cAAItJ,MAAC,MAACmR,QAAQ7a,MAAM,GAAG;AACrBgT,YAAAA,WAAUtJ,MAAAA,MAAEg6B,eAAgB;AAAA,UAC9B,OAAO;AACL,kBAAM4uL,WAAWx4J,OAAM8hF,sBAAsB57I,MAAM;AACnD,gBAAIsyN,UAAU;AACZt/M,cAAAA,WAAUs/M;AACV7hM,oBAAMzwB,SAAS0J,YAAEm1B,qBAAqB,KAAKyzL,UAAUtyN,MAAM;AAAA,YAC7D,OAAO;AACLgT,cAAAA,WAAUhT;AAAAA,YACZ;AAAA,UACF;AAEAhF,UAAAA,MAAK+5B,UAAU5B,QAAQzpB,MAAAA,MAAEmoD,UAAU7+C,QAAO,CAAC;AAE3ChY,UAAAA,MAAKs3B,SAAS5oB,MAAC,MAACy4B,iBAAiBnnC,MAAKs3B,QAAQ5oB,YAAE0qB,WAAW,MAAM,CAAC;AAAA,QACpE;AAAA,MACF;AAEA,YAAMumH,OAAO;AAAA,QAAE03E,OAAO3oN,MAAAA,MAAEmoD,UAAUwgK,MAAK;AAAA,QAAG7/E,KAAK9oI,MAAAA,MAAEmoD,UAAU2gF,GAAG;AAAA,MAAG;AAGjEzoI,aAAOC,eAAe2wI,MAAM,OAAO;AAAA,QAAE/+F,YAAY;AAAA,MAAM,CAAC;AACxDs2K,aAAO9vN,KAAKu4I,IAAI;AAAA,IAClB;AAEA,QAAI5mF,SAAS8zG,gBAAgB7sK;AAC7B,QAAIg3N,SAAUj+J,UAASi+J,SAASj+J,MAAM;AAEtC,UAAMw+J,mBAAmB7oN,MAAAA,MAAEuO,iBAAiB85M,SAAS;AACrD,UAAMS,iBAAiBD,oBAAoBR,UAAUl3N,UAAU;AAC/D,UAAM43N,gBACJ,CAACF,oBAAoB7oN,YAAEyP,kBAAkB44M,WAAW;AAAA,MAAE59L,UAAU;AAAA,IAAO,CAAC;AAE1E,UAAMu+L,2BACHhpN,MAAC,MAAC2N,sBAAsBwwJ,gBAAgB1xI,MAAM,KAC7C,CAAC0xI,gBAAgB6H,wBAClBhmK,MAAAA,MAAEkP,qBAAqBivJ,gBAAgB1xI,MAAM,KAC5C+gF,KAAK2wD,gBAAgB1xI,OAAOkB,WAAW,MAAMwwI,gBAAgB7sK;AAGjE,UAAM4mI,MAAM4wF,iBACP5e,gBAAgBie,2BAA2BD,oBAC3Che,gBAAgB+d,uBAAuBD;AAC5C,UAAMiB,YAAYH,iBAAiB,OAAO;AAE1C,UAAMH,QAAQH,OACXplN,IAAI80H,GAAG,EACPpkE,OAAO,CAACk+B,MAAM22H,WAAU3oN,MAAAA,MAAEu4B,kBAAkB0wL,WAAWj3H,MAAM22H,MAAK,CAAC;AAEtExqD,oBAAgBtoB,YACdgzE,oBAAqBE,iBAAiBC,2BAClChpN,MAAAA,MAAEu4B,kBAAkB0wL,WAAWN,OAAOt+J,MAAM,IAC5CrqD,MAAAA,MAAEs2B,sBAAsBqyL,OAAON,WAAWh+J,MAAM,CACtD;AAAA,EACF;AAEO,WAASviD,WACd9X,OACAolM,aACA;AACA,UAAM;AAAA,MAAEhlI,OAAAA;AAAAA,IAAM,IAAIpgE;AAIlB,UAAM25M,eAAege,+BAA+B33N,KAAI;AACxD,UAAM;AAAA,MAAE65I;AAAAA,IAAW,IAAI8/D;AAEvB,QAAI9/D,WAAWp6H,kBAAkB;AAAA,MAAEgb,UAAU;AAAA,IAAS,CAAC,GAAG;AACxD29L,6BACEp4N,OACAolM,aACAvrD,YACA7pI,MAAAA,MAAEm4B,eAAe,IAAI,CACvB;AAAA,IACF,OAAO;AACL,UAAImwL;AACJ,UACEz+E,WAAWz8H,iBAAiB;AAAA,QAAEwb,QAAQ+gL,aAAar4M;AAAAA,MAAK,CAAC,KAGzDtB,MAAK4hB,8BACL;AAEA02M,mBAAYt0J,CAAAA,iBAAoC;AAAA,cAAAk1J;AAI9C,gBAAM5yN,SAAS23M,wCAAAA,gCACbj6I,aAAY19D,MACd;AACA,cAAIo0M;AACJ,cAAI,CAACtV,YAAYsyB,eAAe,CAACE,yBAAyBtxN,MAAM,GAAG;AAIjEo0M,sBAAUt6I,OAAM8hF,sBAAsB57I,MAAM;AAC5C,gBAAIo0M,SAAS;AACX12I,cAAAA,aAAY19D,SAAS0J,YAAEm1B,qBAAqB,KAAKu1K,SAASp0M,MAAM;AAAA,YAClE;AAAA,UACF;AACA,iBAAO0J,MAAC,MAACi2B,eACPj2B,YAAEy4B,iBAAiBu7B,cAAah0D,MAAC,MAAC0qB,WAAW,MAAM,CAAC,GACpD,CAAC1qB,YAAEmoD,WAAS+gK,WAACxe,YAAO,OAAAwe,WAAI5yN,MAAM,CAAC,CACjC;AAAA,QACD;AAAA,MACH;AAEA8xN,6BACEp4N,OACAolM,aACAplM,OACA05M,sBAAsBC,YAAY,IAC9B3pM,MAAAA,MAAEm4B,eAAe,KAAK,IACtBi4B,OAAM5I,mBAAkB,GAC5B8gK,QACF;AAAA,IACF;AAAA,EACF;ACtSA,MAAA13N,SAAeqZ,0BAAQ,CAACP,KAAKjZ,aAAqB;AAAA,QAAAkzN,iBAAA8D;AAChD/9M,QAAID,cAAa,sCAAoB;AAErC,UAAM;AAAA,MAAEyvK,QAAQ;AAAA,IAAM,IAAIzoL;AAC1B,UAAMy5M,iBAAayZ,kBAAGj6M,IAAIK,WAAW,eAAe,MAAC45M,OAAAA,kBAAIzqC;AACzD,UAAMwuC,eAAWD,mBAAG/9M,IAAIK,WAAW,aAAa,MAAC09M,OAAAA,mBAAIvuC;AAErD,WAAO;AAAA,MACLn7K,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,kBAAkB;AAAA,MAEzDsxB,SAAS;AAAA,QACP,kDACEh6B,OACA;AACA8X,UAAAA,WAAU9X,OAAM;AAAA,YAAEk6M;AAAAA,YAAewd;AAAAA,UAAY,CAAC;AAAA,QAChD;AAAA,MACF;AAAA,IACD;AAAA,EACH,CAAC;;;;;;;;;;;;;;;AC1BD,MAAA98M,qBAAApR,aAAA;AACA,MAAAusN,mCAAAvsN,aAAA;AAGoDwK,QAAA,WAMrCiG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjZ,aAAqB;AAChDiZ,QAAID,cAAa,sCAAoB;AAErC,YAAO,GAAAg6M,2DAAyB;AAAA,MAC9B1lN,MAAM;AAAA,MAEN2L;AAAAA,MACA84M,SAASP,iCAAQ,SAACjI;AAAAA,MAClB9gC,OAAOzoL,SAAQyoL;AAAAA,MAEfpuK,kBAAkBrS,MAAMsS,YAAY;AACC;AAEjCA,qBAAWjX,QAAQ4E,KAAK,qBAAqB;AAAA,QAC/C;AAAA,MACF;AAAA,IACF,CAAC;AAAA,EACF,CAAA;;;;;;;;AC3BD,SAAO,eAAeywN,OAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AACcA,QAAA,UAAG;AAElB,MAAI,qBAAqBr4N,aAAqC;AAE9D,MAAI,YAAW,GAAI,mBAAmB,SAAS,SAAO;AACpD,QAAI,cAAc,CAAC;AACnB,WAAO;AAAA,MACL,MAAM;AAAA,MAEN,kBAAkB,MAAM,YAAY;AAClC,mBAAW,QAAQ,KAAK,aAAa;AAAA,MAC3C;AAAA,IAEG;AAAA,EACH,CAAC;AAEDq4N,QAAA,UAAkB;;;;;;;;ACnBlB,SAAO,eAAeA,OAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AACcA,QAAA,UAAG;AAElB,MAAI,qBAAqBr4N,aAAqC;AAE9D,MAAI,YAAW,GAAI,mBAAmB,SAAS,SAAO;AACpD,QAAI,cAAc,CAAC;AACnB,WAAO;AAAA,MACL,MAAM;AAAA,MAEN,kBAAkB,MAAM,YAAY;AAClC,mBAAW,QAAQ,KAAK,sBAAsB;AAAA,MACpD;AAAA,IAEG;AAAA,EACH,CAAC;AAEDq4N,QAAA,UAAkB;;;;;;;;ACnBlB,SAAO,eAAeA,OAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AACcA,QAAA,UAAG;AAElB,MAAI,qBAAqBr4N,aAAqC;AAE9D,MAAI,YAAW,GAAI,mBAAmB,SAAS,SAAO;AACpD,QAAI,cAAc,CAAC;AACnB,WAAO;AAAA,MACL,MAAM;AAAA,MAEN,kBAAkB,MAAM,YAAY;AAClC,mBAAW,QAAQ,KAAK,iBAAiB;AAAA,MAC/C;AAAA,IAEG;AAAA,EACH,CAAC;AAEDq4N,QAAA,UAAkB;;;;;;;;ACnBlB,SAAO,eAAeA,OAAS,cAAc;AAAA,IAC3C,OAAO;AAAA,EACT,CAAC;AACcA,QAAA,UAAG;AAElB,MAAI,qBAAqBr4N,aAAqC;AAE9D,MAAI,YAAW,GAAI,mBAAmB,SAAS,SAAO;AACpD,QAAI,cAAc,CAAC;AACnB,WAAO;AAAA,MACL,MAAM;AAAA,MAEN,kBAAkB,MAAM,YAAY;AAClC,mBAAW,QAAQ,KAAK,kBAAkB;AAAA,MAChD;AAAA,IAEG;AAAA,EACH,CAAC;AAEDq4N,QAAA,UAAkB;;;;;;;;;;;;ACrBlB,MAAAv+M,qBAAApR,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AAAyCwK,QAAA,WAE1B,GAAAiG,mBAAAA,SAAQP,SAAO;AAC5BA,QAAID,cAA+B,CAAE;AAErC,WAAO;AAAA,MACL1L,MAAM;AAAA,MACN+M,mBAEIA,CAAC+4D,GAAGrQ,YAAWA,QAAO1/D,QAAQ4E,KAAK,qBAAqB;AAAA,MAE5DsxB,SAAS;AAAA,QACPiS,uBAAuBjsC,OAAM;AAAA,cAAAo5N;AAC3B,gBAAM;AAAA,YAAE93N,MAAAA;AAAAA,YAAM8+D,OAAAA;AAAAA,UAAM,IAAIpgE;AACxB,gBAAM;AAAA,YAAEg/B;AAAAA,UAAW,IAAI19B;AAEvB,gBAAMV,SAAQoP,MAAC,MAAC4X,yBAAyBoX,WAAW,CAAC,CAAC,IAAI,IAAI;AAC9D,cAAI,CAAChvB,MAAC,MAAC2R,2BAA2Bqd,WAAWp+B,MAAK,CAAC,EAAG;AAEtD,gBAAMwvB,QAAQ,CAAE;AAEhB,cAAIxvB,WAAU,GAAG;AACfwvB,kBAAM1nB,KACJsH,MAAAA,MAAEg8B,uBAAuB,MAAM,CAAChN,WAAW6+B,MAAO,CAAA,GAAGv8D,MAAKiB,MAAM,CAClE;AAAA,UACF;AAEA,gBAAMg9D,YAAYvgC,WAAW6+B,MAAO;AACpC,gBAAM;AAAA,YAAEz+B;AAAAA,UAAS,IAAImgC;AACrB,gBAAMzD,MAAMsE,OAAMqhF,uBAAqB23E,iBAErCh6L,SAASrxB,SAAIqrN,OAAAA,iBAAIh6L,SAASj+B,KAC5B;AAEAivB,gBAAM1nB,KACJsH,MAAAA,MAAEu8B,kBACA,CAACv8B,MAAAA,MAAE28B,yBAAyBmvB,GAAG,CAAC,GAChC9rD,MAAAA,MAAEmoD,UAAU72D,MAAKiB,MAAM,CACzB,GACAyN,MAAAA,MAAEg8B,uBAAuB,MAAM,CAC7Bh8B,MAAC,MAACk8B,gBAAgBl8B,YAAEmoD,UAAU2D,GAAG,GAAG18B,QAAQ,CAAC,CAC9C,CACH;AAEA,cAAI99B,MAAK09B,WAAWvxB,UAAU,GAAG;AAC/B2iB,kBAAM1nB,KAAKpH,KAAI;AAAA,UACjB;AAEA,gBAAM,CAACirC,iBAAiB,IAAIvsC,MAAK2tK,oBAAoBv9I,KAAK;AAC1DpwB,UAAAA,MAAKogE,MAAMogF,oBAAoBj0G,iBAAiB;AAAA,QAClD;AAAA,MACF;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;;;ACtDD,MAAA3xB,qBAAApR,aAAA;AAAqDwK,QAAA,WAEtC,GAAAiG,mBAAAA,SAAQP,SAAO;AAC5BA,QAAID,cAA+B,CAAE;AAErC,WAAO;AAAA,MACL1L,MAAM;AAAA,MAEN+M,kBAAkBrS,MAAMsS,YAAY;AACC;AAGjC,cACEA,WAAWjX,QAAQ+sF,KACjB+kC,QAAM9+G,MAAMC,QAAQ6+G,CAAC,IAAIA,EAAE,CAAC,IAAIA,OAAO,YACzC,GACA;AACA;AAAA,UACF;AAAA,QACF;AAEA76G,mBAAWjX,QAAQ4E,KAAK,KAAK;AAAA,MAC/B;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;ACxBD,MAAA2wN,mBAAA7vN,aAAA;AACA,MAAAoR,qBAAApR,aAAA;AACA,MAAAk3B,QAAAl3B,aAAA;AAEA,MAAAg/K,uBAAAh/K,aAAA;AACA,MAAA40M,wBAAA50M,aAAA;AAgBA,QAAM8vN,UAAU;AAAA,IACdC,cAAc;AAAA,IAEdC,QAAQ;AAAA,IACRC,YAAY;AAAA,EACb;AAED,QAAMC,8BACJ;AACF,QAAMC,+BAA+B;AAErC,QAAMC,uBAAuB;AAC7B,QAAMC,4BAA4B;AAElC,QAAM3pN,MAAMA,CAAC/D,MAAkB4B,SAC7B5B,KAAK+D,IAAI,2BAA2BnC,IAAI,EAAE;AAC5C,QAAMT,MAAMA,CAACnB,MAAkB4B,MAAcmD,MAC3C/E,KAAKmB,IAAI,2BAA2BS,IAAI,IAAImD,CAAC;AAE/C,WAAS4oN,SAASx4N,OAA0B;AAC1C,WAAOA,MAAKg8B,WAAWuzD,KACrB1vF,CAAAA,WACE6O,MAAC,MAAC+O,iBAAiB5d,QAAO;AAAA,MAAE47B,UAAU;AAAA,MAAOS,WAAW;AAAA,IAAO,CAAA,MAC9DxtB,MAAC,MAACiO,aAAa9c,OAAMJ,KAAK;AAAA,MAAEgN,MAAM;AAAA,IAAa,CAAA,KAC9CiC,MAAC,MAACoO,gBAAgBjd,OAAMJ,KAAK;AAAA,MAAEI,OAAO;AAAA,IAAa,CAAA,EACzD;AAAA,EACF;AAae,WAAS44N,eAAa;AAAA,IACnChsN;AAAAA,IACAisN;AAAAA,EAIF,GAAG;AACD,YAAO//M,GAAAA,mBAAO,SAAC,CAAC45D,GAAGpzE,aAAqB;AACtC,YAAM;AAAA,QACJw5N,MAAMtc;AAAAA,QAENuc,mBAAmB;AAAA,QAEnB1gM;AAAAA,QAEA2gM,SAASC,kBAELJ,cACE,cACA;AAAA,QAENT,cAAcc,wBAAwBf,QAAQC;AAAAA,QAC9CC,QAAQc,iBAAiBhB,QAAQE;AAAAA,QACjCC,YAAYc,sBAAsBjB,QAAQG;AAAAA,MAC5C,IAAIh5N;AA6BG;AAEL,YAAI;AAAA,UAAE+5N,YAAY;AAAA,UAAOC,cAAc;AAAA,QAAM,IAAIh6N;AAEjD,YAAI25N,oBAAoB,WAAW;AACjC,cAAI,OAAOI,cAAc,WAAW;AAClC,kBAAM,IAAI/iN,MACR,+FAEF;AAAA,UACF;AAEA,cAAI,OAAOgjN,gBAAgB,WAAW;AACpC,kBAAM,IAAIhjN,MACR,iGAEF;AAAA,UACF;AAEA,cAAI+iN,aAAaC,aAAa;AAC5B,kBAAM,IAAIhjN,MACR,kFAEF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEA,YAAMijN,8BAAmD;AAAA,QACvD3iL,kBAAkB/3C,OAAMC,QAAO;AAC7B,gBAAM2+B,aAAa,CAAE;AACrB,cAAI+7L,cAAc36N,MAAKogE,KAAK,GAAG;AAC7BxhC,uBAAWl2B,KACTsH,MAAC,MAAC8mC,aACA9mC,MAAAA,MAAEwB,cAAc,QAAQ,GACxBxB,MAAAA,MAAEqnC,uBAAuBrnC,MAAAA,MAAEg6B,eAAgB,CAAA,CAC7C,CACF;AAAA,UACF;AACApL,qBAAWl2B,KACTsH,MAAC,MAAC8mC,aACA9mC,MAAC,MAACwB,cAAc,UAAU,GAC1BxB,MAAC,MAACqnC,uBAAuBujL,WAAW56N,OAAMC,MAAK,CAAC,CAClD,CACF;AACAD,UAAAA,MAAKokJ,cAAc,cAAcxlH,UAAU;AAAA,QAC7C;AAAA,MACD;AAED,aAAO;AAAA,QACL7wB;AAAAA,QACAurB,UAAUytE,iBAAG;AAAA,QACb/sE,SAAS;AAAA,UACP6d,kBAAkB73C,OAAM;AACtB,gBAAIk6N,kBAAkB;AACpB,oBAAMl6N,MAAKqqK,oBACT,0JAEF;AAAA,YACF;AAAA,UACD;AAAA,UAED7yH,eAAex3C,OAAM;AACnB,kBAAMA,MAAKqqK,oBACT,6CACF;AAAA,UACD;AAAA,UAEDxhI,SAAS;AAAA,YACPiyB,MAAM96D,OAAMC,QAAO;AACjB,oBAAM;AAAA,gBAAEE,MAAAA;AAAAA,cAAK,IAAIF;AACjB,kBAAIk6N,UAAkBC;AAEtB,kBAAI73N,UAAiB83N;AACrB,kBAAIb,SAAiBc;AACrB,kBAAIb,aAAqBc;AAEzB,kBAAIM,YAAY,CAAC,CAACp6N,SAAQ84N;AAC1B,kBAAIuB,YAAY,CAAC,CAACr6N,SAAQ+4N;AAC1B,kBAAIuB,gBAAgB,CAAC,CAACt6N,SAAQg5N;AAE9B,kBAAIt5N,MAAK+iE,IAAItnC,UAAU;AACrB,2BAAW/pB,WAAW1R,MAAK+iE,IAAItnC,UAAU;AACvC,wBAAMo/L,gBAAgBtB,4BAA4B7mN,KAChDhB,QAAQ1Q,KACV;AACA,sBAAI65N,eAAe;AACjBz4N,oBAAAA,UAASy4N,cAAc,CAAC;AACxBH,gCAAY;AAAA,kBACd;AAEA,wBAAMI,iBAAiBtB,6BAA6B9mN,KAClDhB,QAAQ1Q,KACV;AACA,sBAAI85N,gBAAgB;AAClBd,8BAAUc,eAAe,CAAC;AAAA,kBAC5B;AAEA,wBAAMC,aAAatB,qBAAqB/mN,KAAKhB,QAAQ1Q,KAAK;AAC1D,sBAAI+5N,YAAY;AACd1B,6BAAS0B,WAAW,CAAC;AACrBJ,gCAAY;AAAA,kBACd;AACA,wBAAMK,iBAAiBtB,0BAA0BhnN,KAC/ChB,QAAQ1Q,KACV;AACA,sBAAIg6N,gBAAgB;AAClB1B,iCAAa0B,eAAe,CAAC;AAC7BJ,oCAAgB;AAAA,kBAClB;AAAA,gBACF;AAAA,cACF;AAEAztN,kBAAIrN,QAAO,WAAWk6N,OAAO;AAC7B,kBAAIA,YAAY,WAAW;AACzB,oBAAIU,WAAW;AACb,wBAAM76N,MAAKqqK,oBACT,qDACF;AAAA,gBACF;AAEA,sBAAM+wD,gBAAgBC,mBAAmB7B,MAAM;AAC/C,sBAAM8B,WAAWD,mBAAmB5B,UAAU;AAE9CnsN,oBAAIrN,QAAO,oBAAoB,MAAM+P,MAAC,MAACmoD,UAAUijK,aAAa,CAAC;AAC/D9tN,oBAAIrN,QAAO,eAAe,MAAM+P,MAAC,MAACmoD,UAAUmjK,QAAQ,CAAC;AAErDhuN,oBAAIrN,QAAO,eAAeu5N,WAAWF,QAAQE,MAAM;AAAA,cACrD,WAAWW,YAAY,aAAa;AAClC,oBAAIW,aAAaC,eAAe;AAC9B,wBAAM/6N,MAAKqqK,oBACT,gEACF;AAAA,gBACF;AAEA,sBAAMmhB,SAASA,CAACz9K,OAAcwuB,OAC5BjvB,IAAIrN,QAAO8N,OAAMwtN,mBAAmBt7N,QAAOD,OAAMu8B,IAAIh6B,OAAM,CAAC;AAE9DipL,uBAAO,UAAUwuC,cAAc,WAAW,KAAK;AAC/CxuC,uBAAO,WAAWwuC,cAAc,WAAW,MAAM;AACjDxuC,uBAAO,oBAAoB,eAAe;AAC1CA,uBAAO,eAAe,UAAU;AAEhCl+K,oBAAIrN,QAAO,eAAesC,YAAW+2N,QAAQC,YAAY;AAAA,cAC3D,OAAO;AACL,sBAAMv5N,MAAKqqK,oBACT,kDACF;AAAA,cACF;AAEA,kBAAI2vD,aAAa;AACfh6N,gBAAAA,MAAKq+D,SAASq8J,6BAA6Bz6N,MAAK;AAAA,cAClD;AAAA,YACF;AAAA,UAkBD;AAAA,UAEDo4C,aAAa;AAAA,YACXkmB,KAAKv+D,OAAMG,OAAM;AACf,kBAAIq7N;AACJ,kBAAItrN,IAAI/P,OAAM,SAAS,MAAM,WAAW;AACtCq7N,2BAAWC,+BAA+Bz7N,OAAMG,KAAI;AAAA,cACtD,OAAO;AACLq7N,2BAAWE,qBAAqB17N,OAAMG,KAAI;AAAA,cAC5C;AAEAH,cAAAA,MAAK6lJ,YAAY71I,MAAAA,MAAEspB,SAASkiM,UAAUx7N,MAAKsB,IAAI,CAAC;AAAA,YAClD;AAAA,UACD;AAAA,UAED61C,YAAY;AAAA,YACVonB,KAAKv+D,OAAMG,OAAM;AACf,kBAAIq7N;AACJ,kBACEtrN,IAAI/P,OAAM,SAAS,MAAM,aACzBw7N,uBAAuB37N,KAAI,GAC3B;AACAw7N,2BAAWI,uBAAuB57N,OAAMG,KAAI;AAAA,cAC9C,OAAO;AACLq7N,2BAAWK,oBAAoB77N,OAAMG,KAAI;AAAA,cAC3C;AAEAH,cAAAA,MAAK6lJ,YAAY71I,MAAAA,MAAEspB,SAASkiM,UAAUx7N,MAAKsB,IAAI,CAAC;AAAA,YAClD;AAAA,UACD;AAAA,UAEDy1C,aAAa/2C,OAAM;AACjB,gBAAIgQ,MAAAA,MAAEuW,aAAavmB,MAAKsB,KAAKH,KAAK,GAAG;AACnCnB,cAAAA,MAAKsB,KAAKH,QAAQ6O,MAAC,MAACqnC,uBAAuBr3C,MAAKsB,KAAKH,KAAK;AAAA,YAC5D;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAGD,eAASunN,eAAe7C,WAA4B;AAClD,eAAOA,UAAUvkN,KAAKi9B,eAAe;AAAA,MACvC;AAGA,eAASo8L,cAAcv6J,QAAc;AAEnC,WAAG;AACD,gBAAM;AAAA,YAAEpgE,MAAAA;AAAAA,UAAK,IAAIogE;AACjB,cAAIpgE,MAAKytB,iBAAgB,KAAM,CAACztB,MAAKigB,0BAAyB,GAAI;AAChE,gBAAI,CAACjgB,MAAKkuB,YAAY;AAEpB,qBAAO;AAAA,YACT;AAEA,gBAAIluB,MAAKsB,KAAKi8B,SAAS,eAAe;AAEpC,qBAAO;AAAA,YACT;AAEA,mBAAO,CAACmrL,eAAe1oN,MAAK65I,WAAWA,UAA6B;AAAA,UACtE;AACA,cAAI75I,MAAK6rB,mBAAmB;AAE1B,mBAAO;AAAA,UACT;AAAA,QACF,SAAUu0C,SAAQA,OAAM3jC;AAExB,eAAO;AAAA,MACT;AAEA,eAAS/rB,KACPvE,MACA4B,OACA+qB,MACA;AACA,cAAMx3B,QAAO0O,MAAAA,MAAEi2B,eAAe/1B,IAAI/D,MAAM,MAAM4B,KAAI,EAAE,EAAC,GAAI+qB,IAAI;AAC7D,YAAI6kL,mBAAe,OAAfA,kBAAmBztM,IAAI/D,MAAM,aAAa,EAAG,EAAA0xM,GAAAA,sBAAc,SAACv8M,KAAI;AACpE,eAAOA;AAAAA,MACT;AAOA,eAASq6N,uBAAuB37N,OAA4B;AAC1D,cAAM87N,cAAc97N,MAAKkQ,IAAI,gBAAgB;AAC7C,cAAM0uB,aAAak9L,YAAYx6N,KAAKs9B;AAEpC,YAAIm9L,kBAAkB;AACtB,iBAASvuN,IAAI,GAAGA,IAAIoxB,WAAWnxB,QAAQD,KAAK;AAC1C,gBAAMwuN,OAAOp9L,WAAWpxB,CAAC;AACzB,cACEuuN,mBACA/rN,MAAAA,MAAEqW,eAAe21M,IAAI,KACrBA,KAAKjuN,KAAKA,SAAS,OACnB;AACA,mBAAO;AAAA,UACR,WAAUiC,MAAC,MAAC+W,qBAAqBi1M,IAAI,GAAG;AACvCD,8BAAkB;AAAA,UACpB;AAAA,QACF;AACA,eAAO;AAAA,MACT;AAEA,eAASE,qBACP36N,OACAm7B,QACwE;AACxE,YAAIzsB,YAAE2W,gBAAgBrlB,KAAI,GAAG;AAC3B,cAAIA,MAAKyM,SAAS,UAAUiC,MAAAA,MAAEovD,aAAa99D,OAAMm7B,MAAM,GAAG;AACxD,mBAAOzsB,MAAC,MAACg6B,eAAgB;AAAA,UAC3B,WAAWh6B,MAAC,MAAC2hB,kBAAkBrwB,MAAKyM,MAAM,KAAK,GAAG;AAEhDzM,YAAAA,MAAKmR,OAAO;AACZ,mBAAOnR;AAAAA,UACT,OAAO;AACL,mBAAO0O,YAAE83B,cAAcxmC,MAAKyM,IAAI;AAAA,UAClC;AAAA,QACD,WAAUiC,MAAC,MAAC4W,sBAAsBtlB,KAAI,GAAG;AACxC,iBAAO0O,MAAAA,MAAEy4B,iBACPwzL,qBAAqB36N,MAAKgF,QAAQhF,KAAI,GACtC26N,qBAAqB36N,MAAK+uB,UAAU/uB,KAAI,CAC1C;AAAA,QACD,WAAU0O,MAAC,MAAC6W,oBAAoBvlB,KAAI,GAAG;AAKtC,iBAAO0O,YAAE83B,cAAc,GAAGxmC,MAAK2gC,UAAUl0B,IAAI,IAAIzM,MAAKyM,KAAKA,IAAI,EAAE;AAAA,QACnE;AAGA,eAAOzM;AAAAA,MACT;AAEA,eAAS46N,sBACP56N,OACA;AACA,YAAI0O,YAAEyW,yBAAyBnlB,KAAI,GAAG;AACpC,iBAAOA,MAAK05B;AAAAA,QACd,OAAO;AACL,iBAAO15B;AAAAA,QACT;AAAA,MACF;AAEA,eAAS66N,oBACP92N,QACA+2N,WACA;AACA,YAAIpsN,MAAAA,MAAE+W,qBAAqBq1M,UAAU96N,IAAI,GAAG;AAC1C,gBAAMo8G,MAAM0+G,UAAU96N,KAAKm8B;AAE3B,cAAIztB,MAAC,MAAC6O,mBAAmB6+F,GAAG,KAAK,CAACo8G,SAASp8G,GAAG,GAAG;AAC/Cr4G,YAAAA,OAAMqD,KAAK,GAAGg1G,IAAIpgF,UAAU;AAAA,UAC9B,OAAO;AACLj4B,YAAAA,OAAMqD,KAAKsH,MAAAA,MAAEw9B,cAAckwE,GAAG,CAAC;AAAA,UACjC;AACA,iBAAOr4G;AAAAA,QACT;AAEA,cAAMlE,SAAQ+6N,sBACZE,UAAU96N,KAAKyM,KAAKA,SAAS,QACzBquN,UAAU96N,KAAKH,SAAS6O,MAAC,MAACm4B,eAAe,IAAI,IAC7Ci0L,UAAU96N,KAAKH,KACrB;AAEA,YAAIi7N,UAAU96N,KAAKyM,KAAKA,SAAS,SAAS5M,WAAU,MAAM;AACxD,gBAAMi7N,UAAU/xD,oBACd,mGACF;AAAA,QACF;AAEA,YACEr6J,YAAEoO,gBAAgBjd,MAAK,KACvB,CAAC6O,MAAAA,MAAEyW,yBAAyB21M,UAAU96N,KAAKH,KAAK,GAChD;AAAA,cAAAk7N;AACAl7N,UAAAA,OAAMA,QAAQA,OAAMA,MAAM8V,QAAQ,UAAU,GAAG;AAG/C,WAAAolN,eAAOl7N,OAAMs3D,UAAb,QAAA,OAAO4jK,aAAap8L;AAAAA,QACtB;AAEA,YAAIjwB,MAAAA,MAAE6W,oBAAoBu1M,UAAU96N,KAAKyM,IAAI,GAAG;AAE9CquN,oBAAU96N,KAAKyM,OAAOiC,MAAAA,MAAE83B,cACtBs0L,UAAU96N,KAAKyM,KAAKk0B,UAAUl0B,OAC5B,MACAquN,UAAU96N,KAAKyM,KAAKA,KAAKA,IAC7B;AAAA,QACF,WAAWiC,MAAAA,MAAE2hB,kBAAkByqM,UAAU96N,KAAKyM,KAAKA,MAAM,KAAK,GAAG;AAE/DquN,oBAAU96N,KAAKyM,KAAK0E,OAAO;AAAA,QAC7B,OAAO;AAEL2pN,oBAAU96N,KAAKyM,OAAOiC,YAAE83B,cAAcs0L,UAAU96N,KAAKyM,KAAKA,IAAI;AAAA,QAChE;AAEA1I,QAAAA,OAAMqD,KACJsH,MAAC,MAACspB,SACAtpB,MAAAA,MAAEk5B,eAEAkzL,UAAU96N,KAAKyM,MACf5M,MACF,GACAi7N,UAAU96N,IACZ,CACF;AACA,eAAO+D;AAAAA,MACT;AAEA,eAASi3N,sBAAsBv6L,UAAwB;AACrD,YAAIw6L;AACJ,YAAIx6L,SAASt0B,WAAW,GAAG;AACzB8uN,yBAAex6L,SAAS,CAAC;AAAA,QAC3B,WAAWA,SAASt0B,SAAS,GAAG;AAC9B8uN,yBAAevsN,MAAC,MAACi1B,gBAAgBlD,QAAQ;AAAA,QAC3C,OAAO;AACL,iBAAOpuB;AAAAA,QACT;AAEA,eAAO3D,MAAC,MAACk5B,eAAel5B,MAAC,MAAC0qB,WAAW,UAAU,GAAG6hM,YAAY;AAAA,MAChE;AAKA,eAASV,oBAAoB77N,OAA4BG,OAAkB;AACzE,cAAM27N,cAAc97N,MAAKkQ,IAAI,gBAAgB;AAC7C,cAAM4oB,OAAuB,CAAC0jM,OAAOV,WAAW,CAAC;AAEjD,cAAMW,eAAe,CAAE;AACvB,cAAMC,YAAYrsN,uBAAOktD,OAAO,IAAI;AAMpC,mBAAWy+J,QAAQF,YAAY5rN,IAAI,YAAY,GAAG;AAChD,cAAI8rN,KAAK31M,eAAgB,KAAIrW,MAAC,MAAC2W,gBAAgBq1M,KAAK16N,KAAKyM,IAAI,GAAG;AAC9D,kBAAM;AAAA,cAAEA,MAAAA;AAAAA,YAAK,IAAIiuN,KAAK16N,KAAKyM;AAC3B,oBAAQA,OAAI;AAAA,cACV,KAAK;AAAA,cACL,KAAK;AACH,oBAAI2uN,UAAU3uN,KAAI,EAAG,OAAM4uN,gBAAgB38N,OAAM+N,KAAI;AAAA,cAEvD,KAAK,OAAO;AACV,sBAAMyiN,WAAW0L,sBAAsBF,KAAK16N,KAAKH,KAAK;AACtD,oBAAIqvN,aAAa,MAAM;AACrB,wBAAMwL,KAAK3xD,oBACT,mGACF;AAAA,gBACF;AAEAqyD,0BAAU3uN,KAAI,IAAIyiN;AAClB;AAAA,cACF;AAAA,cACA;AACEiM,6BAAa/zN,KAAKszN,IAAI;AAAA,YAC1B;AAAA,UACF,OAAO;AACLS,yBAAa/zN,KAAKszN,IAAI;AAAA,UACxB;AAAA,QACF;AAEA,cAAMj6L,WAAW/xB,MAAAA,MAAE2pI,MAAM92F,cAAc7iD,MAAKsB,IAAI;AAEhD,YAAIs7N;AAEJ,YAAIH,aAAahvN,UAAUs0B,SAASt0B,QAAQ;AAC1CmvN,oBAAUC,iCACRJ,cAGA16L,QACF;AAAA,QACF,OAAO;AAEL66L,oBAAU5sN,MAAC,MAAC84B,iBAAiB,CAAA,CAAE;AAAA,QACjC;AAEAhQ,aAAKpwB,KAAKk0N,OAAO;AAEjB,YAAI5C,aAAa;AAAA,cAAA8C;AAIfhkM,eAAKpwB,MAAIo0N,iBACPJ,UAAU37N,QAAG+7N,OAAAA,iBAAI98N,MAAKogE,MAAM5I,mBAAkB,GAC9CxnD,MAAAA,MAAEm4B,eAAepG,SAASt0B,SAAS,CAAC,CACtC;AACA,cAAIivN,UAAUK,UAAU;AACtBjkM,iBAAKpwB,KAAKg0N,UAAUK,QAAQ;AAC5B,gBAAIL,UAAUM,OAAQlkM,MAAKpwB,KAAKg0N,UAAUM,MAAM;AAAA,UAClD,WAAWN,UAAUM,QAAQ;AAC3BlkM,iBAAKpwB,KAAK1I,MAAKogE,MAAM5I,mBAAoB,GAAEklK,UAAUM,MAAM;AAAA,UAC7D;AAAA,QACF,WAAWN,UAAU37N,QAAQ4S,QAAW;AACtCmlB,eAAKpwB,KAAKg0N,UAAU37N,GAAG;AAAA,QACzB;AAEA,eAAO2P,KAAKvQ,OAAM4hC,SAASt0B,SAAS,IAAI,SAAS,OAAOqrB,IAAI;AAAA,MAC9D;AAIA,eAAS+jM,iCACPD,SACA76L,UACA;AACA,cAAM66B,QAAQggK,QAAQ94J,OAAOq4J,qBAAqB,CAAA,CAAE;AAIpD,aAAIp6L,YAAAA,OAAAA,SAAAA,SAAUt0B,UAAS,GAAG;AACxBmvD,gBAAMl0D,KAAK4zN,sBAAsBv6L,QAAQ,CAAC;AAAA,QAC5C;AAEA,eAAO/xB,MAAC,MAAC84B,iBAAiB8zB,KAAK;AAAA,MACjC;AAKA,eAAS8+J,qBACP17N,OACAG,OACA;AACA,cAAM24B,OAAO,CAAC5oB,IAAI/P,OAAM,aAAa,EAAC,CAAE;AAExC,cAAM4hC,WAAW/xB,MAAAA,MAAE2pI,MAAM92F,cAAc7iD,MAAKsB,IAAI;AAEhDw3B,aAAKpwB,KACHsH,MAAAA,MAAE84B,iBACA/G,SAASt0B,SAAS,IACd,CACE6uN,sBAGEv6L,QACF,CAAC,IAEH,CACN,CAAA,CACF;AAEA,YAAIi4L,aAAa;AACflhM,eAAKpwB,KACH1I,MAAKogE,MAAM5I,mBAAoB,GAC/BxnD,MAAC,MAACm4B,eAAepG,SAASt0B,SAAS,CAAC,CACtC;AAAA,QACF;AAEA,eAAOiD,KAAKvQ,OAAM4hC,SAASt0B,SAAS,IAAI,SAAS,OAAOqrB,IAAI;AAAA,MAC9D;AAIA,eAAS2iM,+BACPz7N,OACAG,OACA;AACA,YAAIq5B,UAAU,CAACA,OAAOx5B,MAAKsB,MAAMnB,KAAI,EAAG;AAExC,eAAOuQ,KAAKvQ,OAAM,iBAAiB,CACjC+P,IAAI/P,OAAM,aAAa,EAAC,GACxB6P,MAAAA,MAAEk4B,YAAa,GACf,GAAGl4B,YAAE2pI,MAAM92F,cAAc7iD,MAAKsB,IAAI,CAAC,CACpC;AAAA,MACH;AAKA,eAASs6N,uBACP57N,OACAG,OACA;AACA,cAAM27N,cAAc97N,MAAKkQ,IAAI,gBAAgB;AAE7C,eAAOQ,KAAKvQ,OAAM,iBAAiB,CACjCq8N,OAAOV,WAAW,GAClBmB,2CACE98N,OACAH,OACA87N,YAAY5rN,IAAI,YAAY,CAC9B,GAEA,GAAGF,MAAC,MAAC2pI,MAAM92F,cAAc7iD,MAAKsB,IAAI,CAAC,CACpC;AAAA,MACH;AAEA,eAASk7N,OAAOV,aAA0C;AACxD,cAAMoB,UAAUjB,qBACdH,YAAYx6N,KAAKyM,MACjB+tN,YAAYx6N,IACd;AAEA,YAAIsvB;AACJ,YAAI5gB,YAAEiO,aAAai/M,OAAO,GAAG;AAC3BtsM,oBAAUssM,QAAQnvN;AAAAA,QACnB,WAAUiC,MAAC,MAACoO,gBAAgB8+M,OAAO,GAAG;AACrCtsM,oBAAUssM,QAAQ/7N;AAAAA,QACpB;AAEA,YAAI6O,MAAAA,MAAE2pI,MAAMhpH,YAAYC,OAAO,GAAG;AAChC,iBAAO5gB,MAAC,MAAC83B,cAAclX,OAAO;AAAA,QAChC,OAAO;AACL,iBAAOssM;AAAAA,QACT;AAAA,MACF;AAQA,eAASD,2CACP98N,OACAH,OACA48N,SACA;AACA,cAAMzC,UAAUjqN,IAAI/P,OAAM,SAAS;AACA;AACjC,cAAIg6N,YAAY,aAAa;AAC3B,kBAAMgD,OAAO,CAAE;AACf,kBAAMvgK,SAAQggK,QAAQ94J,OAAOq4J,qBAAqB,CAAA,CAAE;AAEpD,gBAAI,CAAC3B,WAAW;AAEd,kBAAIxlN,QAAQ;AACZ4nD,cAAAA,OAAMxiC,QAAQ,CAAC28C,MAAMvpE,MAAM;AACzB,oBAAIwC,YAAEkR,gBAAgB61D,IAAI,GAAG;AAC3B,sBAAIvpE,IAAIwH,OAAO;AACbmoN,yBAAKz0N,KAAKsH,MAAC,MAAC84B,iBAAiB8zB,OAAMlqD,MAAMsC,OAAOxH,CAAC,CAAC,CAAC;AAAA,kBACrD;AACA2vN,uBAAKz0N,KAAKquE,KAAKt5C,QAAQ;AACvBzoB,0BAAQxH,IAAI;AAAA,gBACd;AAAA,cACF,CAAC;AACD,kBAAIovD,OAAMnvD,SAASuH,OAAO;AACxBmoN,qBAAKz0N,KAAKsH,MAAAA,MAAE84B,iBAAiB8zB,OAAMlqD,MAAMsC,KAAK,CAAC,CAAC;AAAA,cAClD;AAAA,YACF,WAAW4nD,OAAMnvD,QAAQ;AACvB0vN,mBAAKz0N,KAAKsH,MAAAA,MAAE84B,iBAAiB8zB,MAAK,CAAC;AAAA,YACrC;AAEA,gBAAI,CAACugK,KAAK1vN,QAAQ;AAChB,qBAAOuC,MAAC,MAACk4B,YAAa;AAAA,YACxB;AAEA,gBAAIi1L,KAAK1vN,WAAW,GAAG;AACrB,kBACE,EACEuC,YAAEkR,gBAAgB07C,OAAM,CAAC,CAAC,KAI1B5sD,YAAE6O,mBAAmB+9C,OAAM,CAAC,EAAEn/B,QAAQ,IAExC;AACA,uBAAO0/L,KAAK,CAAC;AAAA,cACf;AAAA,YACF;AAGA,gBAAI,CAACntN,MAAC,MAAC6O,mBAAmBs+M,KAAK,CAAC,CAAC,GAAG;AAClCA,mBAAK1jM,QAAQzpB,MAAAA,MAAE84B,iBAAiB,CAAE,CAAA,CAAC;AAAA,YACrC;AAEA,kBAAMwgG,SAASmxF,cACXzqN,MAAC,MAACy4B,iBAAiBz4B,MAAC,MAAC0qB,WAAW,QAAQ,GAAG1qB,MAAAA,MAAE0qB,WAAW,QAAQ,CAAC,IACjEv6B,MAAKkmJ,UAAU,SAAS;AAG5B,mBAAOr2I,YAAEi2B,eAAeqjG,QAAQ6zF,IAAI;AAAA,UACtC;AAAA,QACF;AAEA,cAAMvgK,QAAwC,CAAE;AAChD,cAAMs6I,QAAQ7mM,uBAAOktD,OAAO,IAAI;AAEhC,mBAAWy+J,QAAQY,SAAS;AAC1B,gBAAM;AAAA,YAAEt7N,MAAAA;AAAAA,UAAK,IAAI06N;AACjB,gBAAMjuN,QACJiC,MAAC,MAACqW,eAAe/kB,KAAI,KACrB0O,MAAC,MAAC2W,gBAAgBrlB,MAAKyM,IAAI,KAC3BzM,MAAKyM,KAAKA;AAEZ,cACEosN,YAAY,gBACXpsN,UAAS,cAAcA,UAAS,WACjC;AACA,gBAAImpM,MAAMnpM,KAAI,EAAG,OAAM4uN,gBAAgB38N,OAAM+N,KAAI;AACjDmpM,kBAAMnpM,KAAI,IAAI;AAAA,UAChB;AAEAouN,8BAAoBv/J,OAAOo/J,IAAI;AAAA,QACjC;AAEA,eAAOp/J,MAAMnvD,WAAW,KACtBuC,MAAC,MAACkR,gBAAgB07C,MAAM,CAAC,CAAC,KAI1B,CAAC5sD,MAAC,MAAC6O,mBAAmB+9C,MAAM,CAAC,EAAEn/B,QAAQ,IACrCm/B,MAAM,CAAC,EAAEn/B,WACTm/B,MAAMnvD,SAAS,IACbuC,MAAAA,MAAE84B,iBAAiB8zB,KAAK,IACxB5sD,MAAC,MAACk4B,YAAa;AAAA,MACvB;AAAA,IACF,CAAC;AAED,aAASkuI,UAAU7zK,SAAgB6lE,YAAoB;AACrD,cAAQA,YAAU;AAAA,QAChB,KAAK;AACH,iBAAO,GAAG7lE,OAAM,IAAIy3N,cAAc,oBAAoB,aAAa;AAAA,QACrE,KAAK;AACH,iBAAO,GAAGz3N,OAAM;AAAA,QAClB,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,GAAGA,OAAM;AAAA,QAClB,KAAK;AACH,iBAAOA;AAAAA,MACX;AAAA,IACF;AAEA,aAASg5N,mBACPpvN,MACAnM,OACAooE,YACA7lE,SACqC;AACrC,aAAO,MAAM;AACX,cAAM66N,eAAehnD,UAAU7zK,SAAQ6lE,UAAU;AACjD,gBAAIs3G,qBAAAA,UAAS1/K,KAAI,GAAG;AAClB,cAAIk/I,YAAYhvI,IAAI/D,MAAM,WAAWi8D,UAAU,EAAE;AACjD,cAAI82E,UAAW,QAAOlvI,MAAAA,MAAEmoD,UAAU+mF,SAAS;AAE3CA,uBAAYyhC,GAAAA,qBAAQ,UAAC3gL,OAAMooE,YAAYg1J,cAAc;AAAA,YACnDp9C,iBAAiB;AAAA,YACjBI,gBAAgB;AAAA,UAClB,CAAC;AACD9yK,cAAInB,MAAM,WAAWi8D,UAAU,IAAI82E,SAAS;AAE5C,iBAAOA;AAAAA,QACT,OAAO;AACL,cAAIA,YAAYhvI,IAAI/D,MAAM,YAAYixN,YAAY,EAAE;AACpD,cAAIl+E,WAAW;AACbA,wBAAYlvI,MAAC,MAACmoD,UAAU+mF,SAAS;AAAA,UACnC,OAAO;AACLA,yBAAY,GAAA2hC,qBAAAA,cAAa7gL,OAAMo9N,cAAc;AAAA,cAC3Cp9C,iBAAiB;AAAA,YACnB,CAAC;AACD1yK,gBAAInB,MAAM,YAAYixN,YAAY,IAAIl+E,SAAS;AAAA,UACjD;AAEA,iBAAOlvI,MAAC,MAACy4B,iBAAiBy2G,WAAWlvI,MAAC,MAAC0qB,WAAW0tC,UAAU,CAAC;AAAA,QAC/D;AAAA,MACD;AAAA,IACH;AAAA,EACF;AAEA,WAASizJ,mBAAmB9+L,IAA2C;AACrE,WACEA,GACGppB,MAAM,GAAG,EACTC,IAAIrF,UAAQiC,MAAAA,MAAE0qB,WAAW3sB,IAAI,CAAC,EAG9B+1D,OAAO,CAACx9D,QAAQ+pB,aAAargB,MAAC,MAACy4B,iBAAiBniC,QAAQ+pB,QAAQ,CAAC;AAAA,EAExE;AAEA,WAASuqM,WAAW56N,OAAgBC,QAAmB;AACrD,UAAM2X,WAAW5X,MAAKsB,KAAKsT;AAC3B,QAAI,CAACgD,UAAU;AAEb,aAAO5X,MAAKogE,MAAM5I,mBAAoB;AAAA,IACxC;AAGA,QAAI,CAACv3D,OAAMo9N,oBAAoB;AAC7B,YAAM;AAAA,QAAEj5J,WAAW;AAAA,MAAG,IAAInkE;AAE1B,YAAMo9N,qBAAqBr9N,MAAKogE,MAAMqhF,sBAAsB,cAAc;AAC1EzhJ,MAAAA,MAAKogE,MAAMkgF,iBAAkB,EAAC53I,KAAK;AAAA,QACjC6zB,IAAI8gM;AAAAA,QACJvhM,MAAM9rB,MAAAA,MAAE83B,cAAcs8B,QAAQ;AAAA,MAChC,CAAC;AAEDnkE,MAAAA,OAAMo9N,qBAAqBA;AAAAA,IAC7B;AAEA,WAAOC,UACLttN,MAAC,MAACmoD,UAEAl4D,OAAMo9N,kBACR,GACAzlN,SAAS5C,MAAM9U,MACf0X,SAAS5C,MAAMD,MACjB;AAAA,EACF;AAEA,WAASuoN,UACPD,oBACAvnN,YACAynN,cACA;AACA,UAAMC,kBACJ1nN,cAAc,OAAO9F,MAAC,MAACg4B,eAAelyB,UAAU,IAAI9F,YAAEk4B,YAAa;AAErE,UAAMu1L,oBACJF,gBAAgB,OAAOvtN,YAAEg4B,eAAeu1L,eAAe,CAAC,IAAIvtN,YAAEk4B,YAAa;AAE7E,WAAOiqC,MAAQ,SAACn3C,WAAWkoC;AAAAA,gBACbm6J,kBAAkB;AAAA,kBAChBG,eAAe;AAAA,oBACbC,iBAAiB;AAAA;AAAA,EAErC;AAEA,WAASd,gBAAgB38N,OAAgB+N,MAAc;AACrD,UAAMq5E,aAAa,uBAAuBr5E,KAAK2E,MAAM,CAAC,CAAC;AAEvD,WAAO1S,MAAKqqK,oBACV,aAAat8J,IAAI,yDAAyDq5E,UAAU,+LACtF;AAAA,EACF;;;;;;;;;;;ACh5BA,MAAAs2I,gBAAAl0N,oBAAA;AAA8CwK,QAAAA,cAE/B+lN,uBAAa;AAAA,IAC1BhsN,MAAM;AAAA,IACNisN,aAAa;AAAA,EACd,CAAA;;;;;;;;;;;;;ACHD,MAAAt5L,QAAAl3B,aAAA;AACA,MAAAm0N,0BAAAn0N,aAAA;AAEA,QAAMo0N,mBAAoBr7N,CAAAA,YACxB4vE,MAAAA,SAASn3C,WAAWkoC,cAAc3gE,OAAM;AAE1C,QAAMs7N,iBAAiBA,CAACt7N,SAAsBpC,UAC5C6P,MAAAA,MAAEi2B,eAAe9lC,MAAKkmJ,UAAU,wBAAwB,GAAG,CACzDu3E,iBAAiBr7N,OAAM,CAAC,CACzB;AAEI,WAASu7N,uBACd99N,OACAgpL,WACA7oL,OACA;AACA,UAAM49N,eAAe/0C,YAAY40C,mBAAmBC;AAEpD79N,IAAAA,MAAK6lJ,aACH,GAAAwhC,4CAAmBrnL,MAAKsB,MAAM,MAAM,OAAOi+D,eACzCw+J,aAAax+J,WAAWp/D,KAAI,CAC9B,CACF;AAAA,EACF;;;;;;;;;;;;AC3BA,MAAAugC,QAAAl3B,aAAA;AACA,MAAAm0N,0BAAAn0N,aAAA;AAKO,QAAMw0N,kBAAmBx3C,CAAAA,WAA8B;AAAA,IAC5Dz4K,MAAM,GAA2B,0CAAA;AAAA,IACjC8L,SAA6B;AAAA,IAC7ByrK,kBAAkB/iL,SAAQmlI,UAAU;AAClC,WAAI,GAAAm9C,4CAAmBn9C,QAAQ,KAAKA,SAASs9C,aAAa;AACxD,eAAO;AAAA,MACT;AACA,UAAIwB,UAAS,MAAM;AAGjB,eAAOjkL,QAAOs1B,SAAS,GAAG,IAAI,OAAO;AAAA,MACvC;AACA,UAAI/gB,MAAMC,QAAQyvK,KAAI,GAAG;AACvB,eAAO,CAACA,MAAK3uJ,SAASt1B,OAAM,IAAI,OAAO;AAAA,MACzC;AACA,UAAI,OAAOikL,UAAS,YAAY;AAC9B,eAAOA,MAAKjkL,OAAM,IAAI,kBAAkB;AAAA,MAC1C;AAAA,IACD;AAAA,IACD07N,oBAAoBlwN,MAAM+tB,MAAM1iB,SAASqlI,YAAY;AACnD,UAAIrlI,YAAY,iBAAiB;AAC/B,YAAI,CAACqlI,WAAY,QAAO;AACxB,eAAOtsE,MAAQ,SAACg3D,UAAUjmE;AAAAA,mBACbn1D,IAAI;AAAA,yBACE+tB,IAAI;AAAA,YACjB/tB,IAAI;AAAA;AAAA;AAAA;AAAA,MAIZ;AAAA,IACD;AAAA,IACD40K,cAAc7pC,KAAK1/H,SAAS;AAC1B,UAAIA,YAAY,gBAAiB,QAAOpJ,MAAAA,MAAEi2B,eAAe6yG,KAAK,EAAE;AAAA,IAClE;AAAA,EACF;AAAG9kI,OAAAA,kBAAAgqN;;;;;;;;;;;;;ACrCH,QAAME,mBACJ;AA0BK,WAASC,mBAAmBh+N,OAAYi+N,MAAoB;AACjE,QAAIt0D,SAAQ3pK,MAAK+P,IAAIguN,gBAAgB;AACrC,QAAI,CAACp0D,OAAO3pK,CAAAA,MAAKmN,IAAI4wN,kBAAmBp0D,SAAQ,EAAG;AACnDA,IAAAA,OAAMphK,KAAK01N,IAAI;AAAA,EACjB;AAEA,WAASC,QAAcrxD,KAAiBruE,IAA4B;AAClE,QAAIquE,KAAK;AACP,iBAAWuN,MAAMvN,KAAK;AACpB,cAAM95I,MAAMyrE,GAAG47E,EAAE;AACjB,YAAIrnJ,OAAO,KAAM,QAAOA;AAAAA,MAC1B;AAAA,IACF;AAAA,EACF;AAEO,WAASorM,aACdn+N,OAIA;AACA,UAAM2pK,SAA+B3pK,MAAK+P,IAAIguN,gBAAgB;AAE9D,WAAO;AAAA,MACL54C,qBAAqBxsJ,MAAM;AACzB,eAAOulM,QAAQv0D,QAAOs0D,UAAQA,KAAK94C,qBAAiB,OAAA,SAAtB84C,KAAK94C,kBAAoB,GAAGxsJ,IAAI,CAAC;AAAA,MAChE;AAAA,MACD6pJ,iBAAiB7pJ,MAAM;AACrB,eAAOulM,QAAQv0D,QAAOs0D,UAAQA,KAAKz7C,iBAAa,OAAA,SAAlBy7C,KAAKz7C,cAAgB,GAAG7pJ,IAAI,CAAC;AAAA,MAC5D;AAAA,MACDmlM,uBAAuBnlM,MAAM;AAC3B,eAAOulM,QAAQv0D,QAAOs0D,UAAQA,KAAKH,uBAAmB,OAAA,SAAxBG,KAAKH,oBAAsB,GAAGnlM,IAAI,CAAC;AAAA,MACnE;AAAA,IACD;AAAA,EACH;;;;;;;;;;;;;;;;;;AChEA,QAAAle,qBAAApR,aAAA;AACA,QAAAm0N,0BAAAn0N,aAAA;AAUA,QAAAk3B,QAAAl3B,aAAA;AAIA,QAAAo/K,iBAAAp/K,qBAAA;AACA,QAAA+0N,QAAA/0N,YAAA;AAEA,QAAAg1N,SAAAh1N,aAAA;AAA8DwK,YAgB/C,WAAAiG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjZ,aAAqB;AAAA,UAAAkzN,iBAAA8D,kBAAAgH;AAChD/kN,UAAID,cAA+B,CAAE;AAErC,YAAM;AAAA,QAMJilN,kBAAkB;AAAA,QAClBC,qBAAqBD;AAAAA,QAErB31C;AAAAA,QACA16K;AAAAA,QACA0kE;AAAAA,QACAi2G;AAAAA,QACA9D;AAAAA,QACAsB,MAAAA,QAAO;AAAA,QAEPo4C,uBAAuB;AAAA,QACvB11C,QAAQ;AAAA,MACV,IAAIzoL;AAEJ,YAAMwoL,qBAAiB0qC,kBAAGj6M,IAAIK,WAAW,mBAAmB,MAAC45M,OAAAA,kBAAIzqC;AACjE,YAAMC,wBAAoBsuC,mBAAG/9M,IAAIK,WAAW,sBAAsB,MAAC09M,OAAAA,mBAAIvuC;AACvE,YAAME,iCAA6Bq1C,mBACjC/kN,IAAIK,WAAW,+BAA+B,MAAC0kN,OAAAA,mBAAI;AAErD,UACE,OAAOj4C,UAAS,aAChB,OAAOA,UAAS,eACf,CAAC1vK,MAAMC,QAAQyvK,KAAI,KAAK,CAACA,MAAK1jF,MAAMt/F,CAAAA,UAAQ,OAAOA,UAAS,QAAQ,IACrE;AACA,cAAM,IAAIiU,MAAM,0DAA0D;AAAA,MAC5E;AAEA,UAAI,OAAOinN,oBAAoB,WAAW;AACxC,cAAM,IAAIjnN,MAAM,kDAAkD;AAAA,MACpE;AACA,UAAI,OAAOknN,uBAAuB,WAAW;AAC3C,cAAM,IAAIlnN,MAAM,qDAAqD;AAAA,MACvE;AAEA,YAAMonN,eAAgBr3J,eAAsB2K,eAASn3C,WAAWkoC;AAAAA;AAAAA;AAAAA,8BAGpCsE,SAAS;AAAA;AAAA;AAAA;AAAA;AAMrC,YAAMs3J,uBAAkD;AAAA,QACtD1hF,qBAAqBp9I,OAAM;AACzB,gBAAMwnE,YAAYxnE,MAAKsB,KAAKyM;AAC5B,cAAIy5D,cAAc,YAAYA,cAAc,UAAW;AAEvD,gBAAMw8G,eAAehkL,MAAKogE,MAAMwgF,WAAWp5E,SAAS;AACpD,gBAAMy8G,cAAc,KAAK7jH,MAAMwgF,WAAWp5E,SAAS;AAEnD,cAEEy8G,gBAAgBD,gBACfhkL,MAAK65I,WAAW96H,iBAAiB;AAAA,YAAE5d,OAAOnB,MAAKsB;AAAAA,UAAK,CAAC,KACpDtB,MAAK65I,WAAWA,WAAW54H,gBAAe,KAC5CjhB,MAAK65I,WAAWh9H,uBAAuB;AAAA,YAAEge,MAAM76B,MAAKsB;AAAAA,UAAK,CAAC,KAC1DtB,MAAK6c,uBAAuB;AAAA,YAAEge,MAAM76B,MAAKsB;AAAAA,UAAK,CAAC,GAC/C;AACA;AAAA,UACF;AAEAtB,UAAAA,MAAK6lJ,YAAYg5E,aAAar3J,SAAS,CAAC;AAAA,QACzC;AAAA,QAEDj9B,iBAAiBvqC,OAAM;AACrB,gBAAM09G,MAAM19G,MAAKkQ,IAAI,UAAU;AAC/B,cAAI,CAACwtG,IAAIz/F,eAAgB;AACzB,gBAAMupD,YAAYk2C,IAAIp8G,KAAKyM;AAC3B,cAAIy5D,cAAc,YAAYA,cAAc,UAAW;AAEvD,gBAAMw8G,eAAehkL,MAAKogE,MAAMwgF,WAAWp5E,SAAS;AACpD,gBAAMy8G,cAAc,KAAK7jH,MAAMwgF,WAAWp5E,SAAS;AAGnD,cAAIy8G,gBAAgBD,aAAc;AAElChkL,UAAAA,MAAK6lJ,YACH71I,MAAC,MAACm1B,qBAECnlC,MAAKsB,KAAKm5B,SAAS,CAAC,IAAI,KACzBijF,IAAIp8G,MACJu9N,aAAar3J,SAAS,CACxB,CACF;AAAA,QACD;AAAA,QAEDpiC,qBAAqBplC,OAAM;AACzB,gBAAM66B,OAAO76B,MAAKkQ,IAAI,MAAM;AAC5B,cAAI2qB,KAAK5c,gBAAgB;AACvB,kBAAMupD,YAAY3sC,KAAKv5B,KAAKyM;AAC5B,gBAAIy5D,cAAc,YAAYA,cAAc,UAAW;AAEvD,kBAAMw8G,eAAehkL,MAAKogE,MAAMwgF,WAAWp5E,SAAS;AACpD,kBAAMy8G,cAAc,KAAK7jH,MAAMwgF,WAAWp5E,SAAS;AAGnD,gBAAIy8G,gBAAgBD,aAAc;AAElC,kBAAMlpJ,QAAQ96B,MAAKkQ,IAAI,OAAO;AAC9B4qB,kBAAM+qH,YACJ71I,YAAEw5B,mBAAmB,CAAC1O,MAAMx5B,MAAMu9N,aAAar3J,SAAS,CAAC,CAAC,CAC5D;AAAA,UACF,WAAW3sC,KAAKvM,aAAa;AAC3B,kBAAMgvC,MAAMziC,KAAKmjC,2BAA4B;AAC7C,kBAAMwJ,YAAYn3D,OAAOnK,KAAKo3D,GAAG,EAAE0nE,KAAKx9D,CAAAA,eAAa;AACnD,kBAAIA,eAAc,YAAYA,eAAc,UAAW,QAAO;AAE9D,qBACE,KAAKpH,MAAMwgF,WAAWp5E,UAAS,MAC/BxnE,MAAKogE,MAAMwgF,WAAWp5E,UAAS;AAAA,YAEnC,CAAC;AAED,gBAAIA,WAAW;AACb,oBAAM1sC,QAAQ96B,MAAKkQ,IAAI,OAAO;AAC9B4qB,oBAAM+qH,YACJ71I,YAAEw5B,mBAAmB,CAAC1O,MAAMx5B,MAAMu9N,aAAar3J,SAAS,CAAC,CAAC,CAC5D;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAED,aAAO;AAAA,QACLz5D,MAAM;AAAA,QAENgjL,MAAM;AACJ,eAAK5wL,KAAKmN,IAAI,qCAAqC,UAAU;AAE7D,cAAIk5K,MAAM,KAAA23C,OAAAA,oBAAmB,KAAKh+N,UAAM69N,MAAAA,iBAAgBx3C,KAAI,CAAC;AAAA,QAC9D;AAAA,QAEDxsJ,SAAS;AAAA,UACP,CAAC,oBACEtgB,IAAIpZ,MAAMysC,mBAAmB,sBAAsB,GAAG,EAEvD/sC,OACA;AACA,gBAAI,CAAC,KAAKG,KAAK4O,IAAI,uCAAuC,EAAG;AAC7D,gBAAI/O,MAAKod,iBAAkB,KAAI,CAACpN,MAAAA,MAAEyR,SAASzhB,MAAKsB,KAAKs3B,MAAM,EAAG;AAE9D,gBAAI;AAAA,cAAEwnC,OAAAA;AAAAA,YAAM,IAAIpgE;AAChB,eAAG;AACDogE,cAAAA,OAAM09E,OAAO,SAAS;AAAA,YACxB,SAAU19E,SAAQA,OAAM3jC;AAExB,aAAAqhM,GAAAA,eAAAA,wBAAuB99N,OAAMgpL,WAAW,KAAK7oL,IAAI;AAAA,UAClD;AAAA,UAED0oC,SAAS;AAAA,YACP01B,KAAKv+D,OAAMC,QAAO;AAChB,kBAAI,EAACy/K,GAAAA,wBAAAA,UAAS1/K,KAAI,EAAG;AAIrBA,cAAAA,MAAKogE,MAAM09E,OAAO,SAAS;AAC3B99I,cAAAA,MAAKogE,MAAM09E,OAAO,QAAQ;AAC1B99I,cAAAA,MAAKogE,MAAM09E,OAAO,SAAS;AAC3B99I,cAAAA,MAAKogE,MAAM09E,OAAO,YAAY;AAC9B99I,cAAAA,MAAKogE,MAAM09E,OAAO,WAAW;AAK7B,kBAAI,CAAC8gF,sBAAsB;AACzB5+N,gBAAAA,MAAKq+D,SAASygK,sBAAsB;AAAA,kBAClC1+J,OAAOpgE,MAAKogE;AAAAA,gBACd,CAAC;AAAA,cACH;AAEA,kBAAIkoH,cAAa,GAAAZ,wBAAAA,eAAc,KAAKvnL,KAAKsI,MAAMhI,QAAO;AAEtD,kBAAI6nL,WAAYA,cAAat4K,YAAE83B,cAAcwgJ,UAAU;AAEvD,oBAAMxe,UAAQw0D,GAAAA,OAAAA,cAAa,KAAKn+N,IAAI;AAEpC,oBAAM;AAAA,gBAAE88B;AAAAA,gBAAMqsJ;AAAAA,mBAAYR,GAAAA,wBAAuC,yCAC/D9oL,OACA;AAAA,gBACEinE,YAAY;AAAA,gBACZgiH;AAAAA,gBACAE;AAAAA,gBACA96K;AAAAA,gBACA0kE;AAAAA,gBACAg2G;AAAAA,gBACAC;AAAAA,gBACA9D;AAAAA,gBACAvC,eAAe7Y,OAAM6Y;AAAAA,gBACrB2C,mBAAmBxb,OAAMwb;AAAAA,gBACzBC,iBACE,OAAOtlL,OAAMmkE,aAAa,YAC1B,SAASrkE,KAAKE,OAAMmkE,QAAQ,IACxBu6J,qBACAD;AAAAA,gBACNt1C;AAAAA,gBACAhlH,UAAU,KAAKjkE,KAAKsI,KAAK27D;AAAAA,cAC3B,CACF;AAEA,yBAAW,CAAC7hE,SAAQmlI,QAAQ,KAAKzqG,KAAK16B,QAAQ;AAC5C,sBAAMw8N,WAAW/uN,MAAC,MAACi2B,eAAej2B,MAAAA,MAAE0qB,WAAW,SAAS,GAAG,CACzD1qB,MAAC,MAAC83B,cAAcvlC,OAAM,CAAC,CACxB;AAED,oBAAIqnL;AACJ,wBAAI/E,wBAAAA,oBAAmBn9C,QAAQ,GAAG;AAChC,sBAAI8+C,SAAQ9+C,SAAS68B,SAAS,YAAY;AACxC,0BAAM,IAAI9sJ,MAAM,mBAAmB;AAAA,kBACrC;AAEAmyK,2BAAS55K,MAAC,MAAC82B,oBAAoBi4L,QAAQ;AAAA,gBACzC,OAAO;AAAA,sBAAAC;AACL,wBAAMljM,QACJ+tJ,GAAAA,wBAAAA,aAAY7pL,OAAM++N,UAAUr3F,SAAS67C,OAAO,KAAKw7C;AAEnD,sBAAIr3F,SAAS68B,MAAM;AACjB,0BAAMrxI,MAAM42I,OAAMm0D,oBAChBv2F,SAAS35H,MACT+tB,MACA4rG,SAAS68B,MACT78B,SAAS+W,UACX;AACA,wBAAIvrH,QAAQ,MAAO;AAAA,wBACd02J,UAAS12J;AAAAA,kBAChB;AACA,mBAAA8rM,UAAAp1C,WAAM,OAAAo1C,UAANp1C,SAAWz3G,MAAQ,SAACg3D,UAAUjmE;AAAAA,sBACtBwkE,SAAS35H,IAAI,MAAM+tB,IAAI;AAAA;AAAA,gBAEjC;AACA8tJ,uBAAOh1K,MAAM8yH,SAAS9yH;AAEtB00K,wBAAQ5gL,KAAKkhL,MAAM;AACnBN,wBAAQ5gL,KACN,IAAGohL,GAAAA,sDACD7sJ,MACAyqG,UACAuhD,mBACAnf,OAAM6Y,aACR,CACF;AAAA,cACF;AAEA,kBAAAgH,wBAAAA,yBAAwBL,OAAO;AAC/BtpL,cAAAA,MAAKykJ,iBAAiB,QAAQ6kC,OAAO;AACrCtpL,cAAAA,MAAKkQ,IAAI,MAAM,EAAEkqB,QAAQp6B,CAAAA,UAAQ;AAC/B,oBAAI,CAACspL,QAAQzxJ,SAAS73B,MAAKsB,IAAI,EAAG;AAClC,oBAAItB,MAAK2f,yBAAyB;AAChC3f,kBAAAA,MAAKogE,MAAMogF,oBAAoBxgJ,KAAI;AAAA,gBACrC;AAAA,cACF,CAAC;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAAA,MACD;AAAA,IACF,CAAA;AAAA;;;;;;;;;;;;;;AC1SD,MAAA4a,qBAAApR,aAAA;AAEmC;AAEjC,QAAIy1N,eAAe,SAAUn7N,UAAgBiK,MAAc;AACzD,YAAMmxN,UAAoB,CAAE;AAC5Bp7N,MAAAA,SAAQs2B,QAAQ,CAACp3B,SAAQwK,MAAM;AAC7B,cAAM2C,IAAI2G,MAAMC,QAAQ/T,OAAM,IAAIA,QAAO,CAAC,IAAIA;AAE9C,YAAImN,MAAMpC,MAAM;AACdmxN,kBAAQzlM,QAAQjsB,CAAC;AAAA,QACnB;AAAA,MACF,CAAC;AAED,iBAAWA,KAAK0xN,SAAS;AACvBp7N,QAAAA,SAAQuX,OAAO7N,GAAG,CAAC;AAAA,MACrB;AAAA,IACD;AAAA,EACH;AAACwG,QAAA,WAQciG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjR,SAAkB;AAC7CiR,QAAID,cAA+B,CAAE;AAErC,UAAM;AAAA,MAAE0lN;AAAAA,MAA0BC;AAAAA,IAAI,IAAI32N;AAEP;AAEjC,UAAI;AAAA,QAAE42N;AAAAA,MAAM,IAAI52N;AAAAA,IAClB;AAEA,WAAO;AAAA,MACLsF,MAAM;AAAA,MAEN+M,kBAAkBrS,OAAMsS,YAAY;AACC;AACjC,gBAAM;AAAA,YAAEjX,SAAAA;AAAAA,UAAQ,IAAIiX;AAGpBkkN,uBAAan7N,UAAS,MAAM;AAI5Bm7N,uBAAan7N,UAAS,KAAK;AAEQ;AAIjCA,YAAAA,SAAQ4E,KAAK,oBAAoB,iBAAiB;AAAA,UACpD;AAEA,cAAI22N,OAAO;AACTv7N,YAAAA,SAAQ4E,KAAK,KAAK;AAAA,UACpB;AAAA,QACF;AAEAqS,mBAAWjX,QAAQ4E,KAAK,CACtB,cACA;AAAA,UAAEy2N;AAAAA,UAA0BC;AAAAA,QAAI,CAAC,CAClC;AAAA,MACH;AAAA,IACD;AAAA,EACF,CAAA;;;;;;;;;;;;;;;ACpED,MAAA1+L,QAAAl3B,aAAA;AACA,MAAAk3E,UAAAl3E,cAAA;AACA,MAAA40M,wBAAA50M,aAAA;AACA,MAAA60M,2CAAA70M,aAAA;AAIA,QAAM81N,QAAQ,oBAAIxvN,QAA4C;AAE9D,QAAMyvN,mBAAmBptJ,MAAQ,SAACn3C,WAChC;AAAA;AAAA;AAAA;AAAA;AAAA,GAMF;AAEe,WAASwkM,cACtBx/N,OACAgQ,GACA;AACA,UAAM;AAAA,MAAE1O,MAAAA;AAAAA,MAAMu4I;AAAAA,IAAW,IAAI75I;AAE7B,QAAIsB,MAAK2Y,SAAS;AAChBja,MAAAA,MAAK8lJ,OAAQ;AACb;AAAA,IACF;AAEA,UAAM/3I,OAAOzM,MAAKi7B,GAAGxuB;AACrB,UAAM;AAAA,MAAE0xN;AAAAA,MAAMx+E;AAAAA,MAAM/G;AAAAA,IAAQ,IAAGwlF,SAAS1/N,OAAMgQ,GAAG1O,MAAKi7B,EAAE;AAExD,YAAQs9G,WAAWpnI,MAAI;AAAA,MACrB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,WAAW;AAGd,cAAMktN,WAAW3vN,EAAE4O,UAAU5e,MAAKy8B,MAAM;AACxC,cAAMmjM,SAASj6E,KAAK9L,UAAU;AAE9B,YAAI/9G,OAAqB9rB,EAAE84B,iBAAiB,EAAE;AAC9C,YAAI82L,UAAUD,UAAU;AACtB7jM,iBAAO9rB,EAAEu4B,kBAAkB,MAAMv4B,EAAEmoD,UAAUsnK,KAAKI,EAAE,GAAG/jM,IAAI;AAAA,QAC7D;AACA,cAAMgkM,WAAWP,iBAAgBlvN,OAAAyE,WAAM2qN,MAAI;AAAA,UAAEM,MAAMjkM;AAAAA,QAAI,CAAA,CAAE;AACzD,YAAIo+G,OAAQ,EAAA,GAAA2jE,sBAAc,SAACiiB,QAAQ;AAEnC,YAAIF,QAAQ;AACV,gBAAMI,YAAYnmF,WAAWprH,oBAAqB,IAAGorH,aAAa75I;AAClEggO,oBAAUn6E,YACR71I,EAAE82B,oBACA92B,EAAEm1B,qBAAqB,KAAKn1B,EAAEmoD,UAAU72D,MAAKi7B,EAAE,GAAGujM,QAAQ,CAC5D,CACF;AAAA,QACF,OAAO;AACL9/N,UAAAA,MAAKogE,MAAMogF,oBACTxgJ,MAAK6lJ,YACH71I,EAAEw6B,oBAAoBm1L,WAAW,QAAQ,OAAO,CAC9C3vN,EAAE06B,mBAAmBppC,MAAKi7B,IAAIujM,QAAQ,CAAC,CACxC,CACH,EAAE,CAAC,CACL;AAAA,QACF;AACAR,cAAMhyN,IAAItN,MAAKogE,MAAMk9E,qBAAqBvvI,IAAI,GAAGkzI,IAAI;AACrD;AAAA,MACF;AAAA,MAEA;AACE,cAAM,IAAIxpI,MAAM,2BAA2BzX,MAAKy8B,OAAOhqB,IAAI,EAAE;AAAA,IACjE;AAEA,aAASkzI,KAAK9L,aAAuC;AACnD,UAAIA,YAAWprH,uBAAuB;AACpC,eAAOk3H,KAAK9L,YAAWA,UAAU;AAAA,MACnC;AAEA,UAAIA,YAAW+J,QAAQ71I,IAAI,GAAG;AAC5B,eAAO;AAAA,MACT,OAAO;AACL8rI,QAAAA,YAAW8J,QAAQ51I,MAAM,IAAI;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAAA,EACF;AAEA,QAAMkyN,wBAAwB9tJ,MAAQ,SAACg3D,UAAU;AAAA;AAAA,CAEhD;AAED,QAAM+2F,yBAAyB/tJ,MAAQ,SAACg3D,UAAU;AAAA;AAAA,CAEjD;AAED,QAAMg3F,kBAAkBA,CAAC7tG,WAAmB7xH,cACzC6xH,YAAW2tG,wBAAwBC,wBAAwBz/N,QAAO;AAMrE,WAASi/N,SAAS1/N,OAAqCgQ,GAAMusB,IAAkB;AAC7E,UAAM;AAAA,MAAE6jM;AAAAA,MAAYn/E;AAAAA,MAAM/G;AAAAA,IAAO,IAAImmF,oBAAoBrgO,OAAMgQ,CAAC;AAChE,UAAMswN,cAGFtgO,MAAKkQ,IAAI,SAAS;AACtB,UAAM2wI,cAAc,CAAE;AACtB,aAASrzI,IAAI,GAAGA,IAAI8yN,YAAY7yN,QAAQD,KAAK;AAC3C,YAAM,CAAC+pF,YAAYgpI,WAAW,IAAIH,WAAW5yN,CAAC;AAC9CqzI,kBAAYn4I,KACVsH,EAAE6pD,iBACAsmK,gBAAgBK,sBAAsBD,WAAW,GAAG;AAAA,QAClDE,MAAMzwN,EAAEmoD,UAAU57B,EAAE;AAAA,QACpB0tJ,MAAM1yF;AAAAA,QACNmpI,OAAOH;AAAAA,MACR,CAAA,GACDD,YAAY9yN,CAAC,EAAElM,IACjB,CACF;AAAA,IACF;AAEA,WAAO;AAAA,MACLm+N,MAAM;AAAA,QACJI,IAAI7vN,EAAEmoD,UAAU57B,EAAE;AAAA,QAClBokM,aAAa9/E;AAAAA,MACd;AAAA,MACDI;AAAAA,MACA/G;AAAAA,IACD;AAAA,EACH;AAEO,WAASsmF,sBAAsBx+H,MAA6B;AAEjEA,YAAOi8G,GAAAA,yCAA+B,iCAACj8G,IAAI;AAC3C,YAAQA,KAAKvvF,MAAI;AAAA,MACf,KAAK,oBAAoB;AACvB,cAAMooB,OAAOmnE,KAAKnnE;AAClB,cAAMC,QAAQknE,KAAKlnE;AACnB,eACEknE,KAAKvnE,aAAa,QACjB+lM,sBAAsB3lM,IAAoB,KACzC2lM,sBAAsB1lM,KAAK;AAAA,MAEjC;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,IACX;AACA,WAAO;AAAA,EACT;AAmBA,WAASsiH,qBACPp7C,MACA/hG,QACA;AACA,UAAM;AAAA,MAAE0lJ;AAAAA,MAAM3lJ,MAAAA;AAAAA,MAAMgQ;AAAAA,IAAE,IAAI/P;AAC1B,UAAM8N,OAAOi0F,KAAK1gG,KAAKyM;AAEvB,QAAI43I,KAAK52I,IAAIhB,IAAI,GAAG;AAClB,eACM6yN,WAAW5+H,KAAK5hC,OACpBwgK,aAAa5gO,MAAKogE,OAClBwgK,WAAWA,SAASnkM,QACpB;AACA,YAAImkM,SAAS57E,cAAcj3I,IAAI,GAAG;AAShC;AAAA,QACF;AAAA,MACF;AAEAi0F,WAAK6jD,YACH71I,EAAEy4B,iBAAiBz4B,EAAEmoD,UAAUn4D,MAAKsB,KAAKi7B,EAAE,GAAGvsB,EAAEmoD,UAAU6pC,KAAK1gG,IAAI,CAAC,CACtE;AACA0gG,WAAK3lF,KAAM;AAAA,IACb;AAAA,EACF;AAEA,QAAMwkN,2BAA2B;AAAA,IAC/BzjF;AAAAA,EACD;AAEM,WAASijF,oBAAoBrgO,OAAqCgQ,GAAM;AAAA,QAAA8wN;AAC7E,UAAMC,oBAAoB/gO,MAAKogE,MAAMk9E,qBAAqBt9I,MAAKsB,KAAKi7B,GAAGxuB,IAAI;AAC3E,UAAM43I,QAAyBm7E,aAAGxB,MAAMpvN,IAAI6wN,iBAAiB,aAACD,aAAI,oBAAInqK,IAAK;AAG3E,QAAIqqK,aAA0C;AAC9C,QAAIC;AACJ,QAAI/mF,SAAS;AAEb,UAAMomF,cAGFtgO,MAAKkQ,IAAI,SAAS;AAEtB,UAAMkwN,aACJE,YAAYltN,IAAI8tN,gBAAc;AAC5B,YAAMjxM,SAASixM,WAAW5/N;AAC1B,YAAMyM,OAAOiC,EAAEiO,aAAagS,OAAOsM,EAAE,IAAItM,OAAOsM,GAAGxuB,OAAOkiB,OAAOsM,GAAGp7B;AACpE,YAAMggO,kBAAkBD,WAAWhxN,IAAI,aAAa;AACpD,YAAMi0B,cAAclU,OAAOkU;AAC3B,UAAIhjC;AACJ,UAAIgjC,aAAa;AACf68L,qBAAaI,qBAAqBD,iBAAiBx7E,IAAI;AACvD,YAAIq7E,eAAertN,QAAW;AAC5BgyI,eAAKr4I,IAAIS,MAAMizN,UAAU;AACzB99K,kBACE,OAAO89K,eAAe,YAAY,OAAOA,eAAe,QAC1D;AAMA,cAAIA,eAAetsM,YAAYla,OAAOsa,MAAMksM,UAAU,GAAG;AACvD7/N,YAAAA,SAAQ6O,EAAE0qB,WAAW/sB,OAAOqzN,UAAU,CAAC;AAAA,UACzC,WAAWA,eAAe,WAAW;AACnC7/N,YAAAA,SAAQ6O,EAAE+zB,gBAAgB,KAAK/zB,EAAE0qB,WAAW,UAAU,CAAC;AAAA,UACzD,OAAO;AACLv5B,YAAAA,SAAQ6O,EAAEosD,YAAY4kK,UAAU;AAAA,UAClC;AAAA,QACF,OAAO;AACL9mF,qBAAAA,SAAWinF,gBAAgBjnF;AAE3B,cAAIinF,gBAAgBvnF,0BAA0B;AAC5CwD,iCAAqB+jF,iBAAiB;AAAA,cACpCnxN;AAAAA,cACA21I;AAAAA,cACA3lJ,MAAAA;AAAAA,YACF,CAAC;AAAA,UACH,OAAO;AACLmhO,4BAAgB9iK,SAASwiK,0BAA0B;AAAA,cACjD7wN;AAAAA,cACA21I;AAAAA,cACA3lJ,MAAAA;AAAAA,YACF,CAAC;AAAA,UACH;AAEAmB,UAAAA,SAAQggO,gBAAgB7/N;AACxBqkJ,eAAKr4I,IAAIS,MAAM4F,MAAS;AAAA,QAC1B;AAAA,MACF,WAAW,OAAOqtN,eAAe,UAAU;AACzCA,sBAAc;AACd7/N,QAAAA,SAAQ6O,EAAEg4B,eAAeg5L,UAAU;AACnCr7E,aAAKr4I,IAAIS,MAAMizN,UAAU;AAAA,MAC3B,WAAW,OAAOA,eAAe,UAAU;AACzC,cAAMhhO,MAAKqqK,oBAAoB,oCAAoC;AAAA,MACrE,OAAO;AAEL,cAAMg3D,UAAUrxN,EAAEy4B,iBAChBz4B,EAAEmoD,UAAUn4D,MAAKsB,KAAKi7B,EAAE,GACxBvsB,EAAE83B,cAAcm5L,QAAQ,GACxB,IACF;AACA9/N,QAAAA,SAAQ6O,EAAEq1B,iBAAiB,KAAKr1B,EAAEg4B,eAAe,CAAC,GAAGq5L,OAAO;AAC5D17E,aAAKr4I,IAAIS,MAAM4F,MAAS;AAAA,MAC1B;AAEAstN,iBAAWlzN;AACX,aAAO,CAACA,MAAM5M,MAAK;AAAA,IACrB,CAAC;AAEH,WAAO;AAAA,MACL+4I;AAAAA,MACA+G,MAAM0E;AAAAA,MACNy6E;AAAAA,IACD;AAAA,EACH;AAGA,WAASgB,qBACPphO,OACAshO,aACA37E,OAA0B,oBAAIn3I,IAAG,GACJ;AAC7B,WAAOqhK,SAAS7vK,KAAI;AAEpB,aAAS6vK,SAAS7vK,OAA6C;AAC7D,YAAMgiG,OAAOhiG,MAAKsB;AAClB,cAAQ0gG,KAAKvvF,MAAI;AAAA,QACf,KAAK;AACH,iBAAO8uN,YAAYvhO,OAAMshO,aAAa37E,IAAI;AAAA,QAC5C,KAAK;AACH,iBAAO3jD,KAAK7gG;AAAAA,QACd,KAAK;AACH,iBAAOqgO,oBAAoBxhO,KAAmC;AAAA,QAChE,KAAK;AACH,iBAAOyhO,qBAAqBzhO,KAAoC;AAAA,QAClE,KAAK;AACH,iBAAOgiG,KAAK7gG;AAAAA,QACd,KAAK;AACH,iBAAO0uK,SAAS7vK,MAAKkQ,IAAI,YAAY,CAAC;AAAA,QACxC,KAAK;AACH,iBAAOqxN,YAAYvhO,OAAMshO,aAAa37E,IAAI;AAAA,QAC5C,KAAK,mBAAmB;AACtB,cAAI3jD,KAAK1hE,OAAO7yB,WAAW,GAAG;AAC5B,mBAAOu0F,KAAK1hE,OAAO,CAAC,EAAEn/B,MAAM++B;AAAAA,UAC9B;AAEA,gBAAMy4G,QAAS34I,MAAqCkQ,IAAI,aAAa;AACrE,gBAAMowB,SAAS0hE,KAAK1hE;AACpB,cAAIjtB,MAAM;AAEV,mBAAS7F,IAAI,GAAGA,IAAI8yB,OAAO7yB,QAAQD,KAAK;AACtC6F,mBAAOitB,OAAO9yB,CAAC,EAAErM,MAAM++B;AAEvB,gBAAI1yB,IAAI,IAAI8yB,OAAO7yB,QAAQ;AACzB,oBAAMtM,SAAQogO,YAAY5oF,MAAMnrI,CAAC,GAAG8zN,aAAa37E,IAAI;AACrD,kBAAIxkJ,WAAUwS,OAAW,QAAOA;AAChCN,qBAAOlS;AAAAA,YACT;AAAA,UACF;AACA,iBAAOkS;AAAAA,QACT;AAAA,QACA;AACE,iBAAOM;AAAAA,MACX;AAAA,IACF;AAEA,aAAS4tN,YACPvhO,OACAshO,cACA37E,OAC6B;AAC7B,UAAI3lJ,MAAK0e,sBAAsB;AAC7B,cAAMsjF,OAAOhiG,MAAKsB;AAElB,cAAMyW,MAAMiqF,KAAK17F;AACjB,cAAMywE,OAAOirB,KAAK3xE;AAClB,YACE,CAACrgB,MAAAA,MAAEiO,aAAalG,GAAG,MAClBiqF,KAAKjlE,WAAW,CAAC/sB,MAAAA,MAAEoO,gBAAgB24D,IAAI,IAAI,CAAC/mE,MAAAA,MAAEiO,aAAa84D,IAAI,IAChE;AACA;AAAA,QACF;AACA,cAAMgqJ,oBAAoB/gO,MAAKogE,MAAMk9E,qBAAqBvlI,IAAIhK,IAAI;AAClE,cAAMkzI,OAAOq+E,MAAMpvN,IAAI6wN,iBAAiB;AACxC,YAAI,CAAC9/E,KAAM;AAEX,eAAOA,KAAK/wI,IAAI6mE,KAAKh6C,WAAWg6C,KAAK51E,QAAQ41E,KAAKhpE,IAAI;AAAA,MACxD,WAAW/N,MAAKie,gBAAgB;AAC9B,cAAMlQ,OAAO/N,MAAKsB,KAAKyM;AAEvB,YAAI,CAAC,YAAY,KAAK,EAAE8pB,SAAS9pB,IAAI,GAAG;AACtC,iBAAOyM,OAAOzM,IAAI;AAAA,QACpB;AAEA,YAAI5M,SAAQmgO,gBAAW,OAAA,SAAXA,aAAapxN,IAAInC,IAAI;AACjC,YAAI5M,WAAUwS,QAAW;AACvB,iBAAOxS;AAAAA,QACT;AACA,YAAImgO,wBAAAA,aAAavyN,IAAIhB,IAAI,GAAG;AAE1B,iBAAO4F;AAAAA,QACT;AAEA,YAAIgyI,MAAK52I,IAAI/O,MAAKsB,IAAI,EAAG;AACzBqkJ,QAAAA,MAAK1pI,IAAIjc,MAAKsB,IAAI;AAElBH,QAAAA,SAAQigO,qBAAqBphO,MAAKsnI,QAAO,GAAIg6F,cAAa37E,KAAI;AAC9D,eAAOxkJ;AAAAA,MACT;AAAA,IACF;AAEA,aAASqgO,oBACPxhO,OAC6B;AAC7B,YAAMmB,SAAQ0uK,SAAS7vK,MAAKkQ,IAAI,UAAU,CAAC;AAC3C,UAAI/O,WAAUwS,QAAW;AACvB,eAAOA;AAAAA,MACT;AAEA,cAAQ3T,MAAKsB,KAAKm5B,UAAQ;AAAA,QACxB,KAAK;AACH,iBAAOt5B;AAAAA,QACT,KAAK;AAEH,iBAAO,CAACA;AAAAA,QACV,KAAK;AACH,iBAAO,CAACA;AAAAA,QACV;AACE,iBAAOwS;AAAAA,MACX;AAAA,IACF;AAEA,aAAS8tN,qBACPzhO,OAC6B;AAC7B,YAAM66B,OAAOg1I,SAAS7vK,MAAKkQ,IAAI,MAAM,CAAC;AACtC,UAAI2qB,SAASlnB,QAAW;AACtB,eAAOA;AAAAA,MACT;AACA,YAAMmnB,QAAQ+0I,SAAS7vK,MAAKkQ,IAAI,OAAO,CAAC;AACxC,UAAI4qB,UAAUnnB,QAAW;AACvB,eAAOA;AAAAA,MACT;AAEA,cAAQ3T,MAAKsB,KAAKm5B,UAAQ;AAAA,QACxB,KAAK;AACH,iBAAOI,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,SAASC;AAAAA,QAClB,KAAK;AACH,iBAAOD,QAAQC;AAAAA,QACjB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAOD,OAAOC;AAAAA,QAChB,KAAK;AACH,iBAAArlB,KAAAw7J,IAAOp2I,MAAQC,KAAK;AAAA,QACtB;AACE,iBAAOnnB;AAAAA,MACX;AAAA,IACF;AAAA,EACF;;;;;;;;;;;;ACjcA,MAAA4uE,SAAA/4E,aAAA;AAEO,QAAMk4N,oCAAiC1tN,UAAAA,oCAC5C,oBAAIs0J,QAA8B;AAGrB,WAASq5D,mBACtB3hO,OACAgQ,GACA;AACA,UAAM;AAAA,MAAEjC;AAAAA,IAAK,IAAI/N,MAAKsB,KAAKi7B;AAE3B,UAAMqlM,iBAAiB5hO,MAAK65I,WAAWt5H,yBAA0B;AACjE,QAAIshN,aAAaD;AACjB,QAAI,CAACC,cAAc7xN,EAAE4O,UAAU5e,MAAKy8B,MAAM,GAAG;AAC3ColM,mBAAa7hO,MAAKy8B,OAAOtB,KAAK01D,KAC5B1tB,UACEnzD,EAAEuQ,yBAAyB4iD,IAAI,KAC/BA,KAAKrkC,eAAe,UACpB,CAACqkC,KAAK5gE,UACN4gE,KAAKnkC,WAAW6xD,KACd41F,UACEz2K,EAAEwQ,kBAAkBimK,IAAI,KACxBA,KAAK3nJ,eAAe,UACpB2nJ,KAAKtnJ,MAAMpxB,SAASA,IACxB,CACJ;AAAA,IACF;AAEA,UAAM;AAAA,MAAEqyN,YAAYxnF;AAAAA,IAAS,QAAGynF,OAAAA,qBAAoBrgO,OAAMgQ,CAAC;AAE3D,QAAI6xN,cAAcH,kCAAkC3yN,IAAI/O,MAAKsB,IAAI,GAAG;AAClE,YAAMyW,MAAM/H,EAAE84B,iBACZ8vG,QAAQxlI,IAAI,CAAC,CAACrF,OAAM5M,MAAK,MACvB6O,EAAEk5B,eACAl5B,EAAE2hB,kBAAkB5jB,KAAI,IACpBiC,EAAE0qB,WAAW3sB,KAAI,IACjBiC,EAAE83B,cAAc/5B,KAAI,GACxB5M,MACF,CACF,CACF;AAEA,UAAInB,MAAKogE,MAAM4kF,cAAcj3I,IAAI,GAAG;AAClC,SAAC6zN,iBAAiB5hO,MAAK65I,aAAa75I,OAAM6lJ,YACxC71I,EAAE82B,oBACA92B,EAAEi2B,eACAj2B,EAAEy4B,iBAAiBz4B,EAAE0qB,WAAW,QAAQ,GAAG1qB,EAAE0qB,WAAW,QAAQ,CAAC,GACjE,CAAC16B,MAAKsB,KAAKi7B,IAAIxkB,GAAG,CACpB,CACF,CACF;AAAA,MACF,OAAO;AACL/X,QAAAA,MAAK6lJ,YACH71I,EAAEw6B,oBAA6D,OAAO,CACpEx6B,EAAE06B,mBAAmB1qC,MAAKsB,KAAKi7B,IAAIxkB,GAAG,CAAC,CACxC,CACH;AACA/X,QAAAA,MAAKogE,MAAMogF,oBAAoBxgJ,KAAI;AAAA,MACrC;AAEA;AAAA,IACF;AAEA,UAAM8hO,aAAa,IAAInrK,IAAIiiF,OAAO;AAKlC54I,IAAAA,MAAKogE,MAAMpgE,KAAKq+D,SAAS;AAAA,MACvBumB,MAAM5kF,OAAM;AACV,YAAIA,MAAKogE,MAAM4kF,cAAcj3I,IAAI,EAAG/N,CAAAA,MAAKqc,KAAM;AAAA,MAChD;AAAA,MACDqsB,iBAAiB1oC,OAAM;AACrB,YAAI,CAACgQ,EAAEiO,aAAaje,MAAKsB,KAAKgF,QAAQ;AAAA,UAAEyH;AAAAA,QAAK,CAAC,EAAG;AAEjD,YAAIhN;AACJ,YAAIf,MAAKsB,KAAKy7B,UAAU;AACtB,cAAI/sB,EAAEoO,gBAAgBpe,MAAKsB,KAAK+uB,QAAQ,GAAG;AACzCtvB,YAAAA,OAAMf,MAAKsB,KAAK+uB,SAASlvB;AAAAA,UAC3B,OAAO;AACL;AAAA,UACF;AAAA,QACF,WAAW6O,EAAEiO,aAAaje,MAAKsB,KAAK+uB,QAAQ,GAAG;AAC7CtvB,UAAAA,OAAMf,MAAKsB,KAAK+uB,SAAStiB;AAAAA,QAC3B,OAAO;AACL;AAAA,QACF;AACA,YAAI,CAAC+zN,WAAW/yN,IAAIhO,IAAG,EAAG;AAE1Bf,QAAAA,MAAK6lJ,YAAY71I,EAAEmoD,UAAU2pK,WAAW5xN,IAAInP,IAAG,CAAC,CAAC;AAAA,MACnD;AAAA,IACF,CAAC;AAEDf,IAAAA,MAAK8lJ,OAAQ;AAAA,EACf;;;;;;;;;;;;;;AC/FO,QAAMi8E,eAAY/tN,YAAAA,eAAG,oBAAIlE,QAA6B;AAEtD,WAASkyN,aAAa;AAAA,IAAE5hK,OAAAA;AAAAA,EAAiB,GAAEryD,MAAc;AAC9D,QAAIqyD,OAAMwhF,WAAW7zI,IAAI,EAAG,QAAO;AACnC,QAAIg0N,aAAa7xN,IAAIkwD,MAAK,EAAErxD,IAAIhB,IAAI,EAAG,QAAO;AAE9C2J,YAAQC,KACN,4BAA4B5J,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAK1BA,IAAI;AAAA,0EAEZ;AAEA,WAAO;AAAA,EACT;AAEO,WAASk0N,mBAAmB39C,cAAqBv2K,MAAc;AACpEg0N,iBAAa7xN,IAAIo0K,YAAY,EAAEroK,IAAIlO,IAAI;AAAA,EACzC;;;;;;;;;;;;;ACvBA,MAAA2yB,QAAAl3B,aAAA;AAEA,MAAA04N,eAAA14N,mBAAA;AACA,MAAA24N,aAAA34N,iBAAA;AAEO,WAAS44N,mBAAmB9gO,OAAoC;AACrE,QAAI0O,YAAEiO,aAAa3c,KAAI,GAAG;AACxB,aAAOA;AAAAA,IACT;AAIA,WAAO8gO,mBAAoB9gO,MAA2Bu5B,IAAI;AAAA,EAC5D;AAEe,WAASwnM,mBACtBriO,OACAsiO,iBACA;AACA,QAAItiO,MAAKsB,KAAK2Y,WAAWja,MAAKsB,KAAKi7B,GAAG9pB,SAAS,iBAAiB;AAC9DzS,MAAAA,MAAK8lJ,OAAQ;AACb;AAAA,IACF;AAEA,QAAI,CAACw8E,iBAAiB;AACpB,YAAMtiO,MACHkQ,IAAI,IAAI,EACRm6J,oBACC,+MAIF;AAAA,IACJ;AAEA,UAAMt8J,OAAOq0N,mBAAmBpiO,MAAKsB,KAAKi7B,EAAE,EAAExuB;AAC9C,UAAM5M,SAAQohO,aAAaviO,OAAMA,MAAKsB,IAAI;AAC1C,QAAIH,WAAU,MAAM;AAGlB,YAAMw6B,UAAU37B,MAAKglK,WAAWpvC,OAAKA,EAAEh3G,WAAW;AAClD,OAAA,GAAAqjN,iCAAmBtmM,QAAQykC,OAAOryD,IAAI;AAEtC/N,MAAAA,MAAK8lJ,OAAQ;AAAA,IACd,WAAU9lJ,MAAKogE,MAAM4kF,cAAcj3I,IAAI,GAAG;AACzC/N,MAAAA,MAAK6lJ,YAAY1kJ,MAAK;AAAA,IACxB,OAAO;AACLnB,MAAAA,MAAKogE,MAAMogF,oBACTxgJ,MAAK2tK,oBAAoB,CAAC60D,eAAez0N,IAAI,GAAG5M,MAAK,CAAC,EAAE,CAAC,CAC3D;AAAA,IACF;AAAA,EACF;AAEA,WAASqhO,eAAez0N,MAAc;AACpC,WAAOiC,YAAEw6B,oBAAoB,OAAO,CAClCx6B,MAAC,MAAC06B,mBAAmB16B,MAAAA,MAAE0qB,WAAW3sB,IAAI,CAAC,CAAC,CACzC;AAAA,EACH;AAEA,WAAS00N,oBAAoB10N,MAAc20N,UAAkB;AAC3D,WAAO1yN,YAAEy4B,iBAAiBz4B,MAAAA,MAAE0qB,WAAW3sB,IAAI,GAAGiC,MAAC,MAAC0qB,WAAWgoM,QAAQ,CAAC;AAAA,EACtE;AASA,WAASC,0BACPrhO,OACAyM,MACA0xI,MACe;AACf,QAAIn+I,MAAKi8B,SAAS,SAAS;AACzB,YAAMkiH,KAAIt/I,KAAKkqK,oBACb/oK,OACA,iJAGF;AAAA,IACF;AACA,UAAM;AAAA,MAAE68B;AAAAA,IAAa,IAAI78B;AACzB,QACE68B,aAAa2kE,MACV4hD,gBACC10I,MAAAA,MAAEiO,aAAaymI,WAAWnoH,EAAE,CAChC,GACA;AAGA,iBAAWmoH,cAAcvmH,cAAc;AACrCumH,mBAAW5oH,OAAO9rB,MAAAA,MAAEm1B,qBAClB,KACAs9L,oBAAoB10N,MAAM22I,WAAWnoH,GAAGxuB,IAAI,GAC5C22I,WAAW5oH,IACb;AAAA,MACF;AACA,aAAO,CAACx6B,KAAI;AAAA,IACd;AAGA,UAAMg0K,qBAAqBtlK,MAAAA,MAAEytD,sBAAsBn8D,KAAI;AACvD,UAAMu/I,cAAc,CAAE;AAGtB,eAAW+hF,UAAUttD,oBAAoB;AACvCz0B,kBAAYn4I,KACVsH,MAAC,MAACm1B,qBACA,KACAs9L,oBAAoB10N,MAAM60N,MAAM,GAChC5yN,MAAC,MAACmoD,UAAUm9G,mBAAmBstD,MAAM,CAAC,CACxC,CACF;AAAA,IACF;AACA,WAAO,CAACthO,OAAM0O,MAAAA,MAAE82B,oBAAoB92B,MAAC,MAACw5B,mBAAmBq3G,WAAW,CAAC,CAAC;AAAA,EACxE;AAEA,WAASgiF,8BAA8B7iO,OAAgBsB,OAAc;AACnE,WAAOtB,MAAKy/I,IAAI6C,WACdhhJ,OACA,oEACAmW,KACF;AAAA,EACF;AAEA,WAAS8qN,aACPviO,OACAsB,OACAwhO,cACoB;AACpB,UAAMj+I,QAAQ,oBAAIr2E,IAAK;AACvB,UAAMu0N,WAECzhO,MAAKi7B;AAGZ,UAAMxuB,OAAO/N,MAAKogE,MAAMshF,YAAYqhF,SAASh1N,IAAI;AAEjD,UAAMotB,OAAO75B,MAAK65B;AACT75B,IAAAA,MAAKi7B;AACd,QAAIymM;AAuBG;AACLA,0BAAoBhzN,MAAC,MAAC6b,gBAAgBsP,IAAI,IACtCA,KAAKA,OAKL,CAACnrB,MAAC,MAACg8B,uBAAuB7Q,IAAI,CAAC;AAAA,IACrC;AAEA,QAAI8nM,UAAU;AAEd,aAASz1N,IAAI,GAAGA,IAAIw1N,kBAAkBv1N,QAAQD,KAAK;AACjD,YAAMutD,UAAUioK,kBAAkBx1N,CAAC;AAInC,cAAQutD,QAAQtoD,MAAI;AAAA,QAClB,KAAK,uBAAuB;AAC1B,cAAI,CAACzC,YAAEiO,aAAa88C,QAAQx+B,EAAE,GAAG;AAC/B,kBAAMsmM,8BAA8B7iO,OAAM+6D,OAAO;AAAA,UACnD;AAEA,gBAAMmoK,cAAcX,aAAaviO,OAAM+6D,OAAO;AAC9C,cAAImoK,gBAAgB,MAAM;AACxBD,sBAAU;AACV,kBAAM36C,aAAavtH,QAAQx+B,GAAGxuB;AAC9B,gBAAI82E,MAAM91E,IAAIu5K,UAAU,GAAG;AACzB06C,gCAAkBx1N,CAAC,IAAI01N;AAAAA,YACzB,OAAO;AACLr+I,oBAAM5oE,IAAIqsK,UAAU;AACpB06C,gCAAkB3nN,OAChB7N,KACA,GACAg1N,eAAel6C,UAAU,GACzB46C,WACF;AAAA,YACF;AAAA,UACF;AACA;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACHD,oBAAU;AACVp+I,gBAAM5oE,IAAI8+C,QAAQx+B,GAAGxuB,IAAI;AACzB;AAAA,QACF,KAAK,uBAAuB;AAC1Bk1N,oBAAU;AAGV,qBAAWl1N,SAAQiC,MAAAA,MAAEytD,sBAAsB1C,OAAO,GAAG;AACnD8pB,kBAAM5oE,IAAIlO,KAAI;AAAA,UAChB;AACA;AAAA,QACF;AAAA,QACA;AACEk1N,sBAAAA,UAAYjzN,MAAAA,MAAEsf,aAAayrC,OAAO;AAElC;AAAA,QACF,KAAK;AAAA,MAEP;AAEA,UAAI,aAAaA,QAAQh8B,eAAeg8B,QAAQh8B,YAAY9kB,SAAS;AACnE;AAAA,MACF;AAGA,cAAQ8gD,QAAQh8B,YAAYtsB,MAAI;AAAA,QAC9B,KAAK;AACHivN,qBAAAA,kCAAkCzlN,IAAI8+C,QAAQh8B,WAAW;AAAA,QAE3D,KAAK;AAAA,QACL,KAAK,oBAAoB;AACvBkkM,oBAAU;AACV,gBAAMP,WAAW3nK,QAAQh8B,YAAYxC,GAAGxuB;AACxC82E,gBAAM5oE,IAAIymN,QAAQ;AAClBM,4BAAkB3nN,OAChB7N,KACA,GACAutD,QAAQh8B,aACR/uB,MAAAA,MAAE82B,oBACA92B,MAAC,MAACm1B,qBACA,KACAs9L,oBAAoB10N,MAAM20N,QAAQ,GAClC1yN,MAAAA,MAAE0qB,WAAWgoM,QAAQ,CACvB,CACF,CACF;AACA;AAAA,QACF;AAAA,QACA,KAAK,uBAAuB;AAC1BO,oBAAU;AACV,gBAAM7yM,QAAQuyM,0BACZ5nK,QAAQh8B,aACRhxB,MACA/N,MAAKy/I,GACP;AACAujF,4BAAkB3nN,OAAO7N,GAAG4iB,MAAM3iB,QAAQ,GAAG2iB,KAAK;AAClD5iB,eAAK4iB,MAAM3iB,SAAS;AACpB;AAAA,QACF;AAAA,QACA,KAAK,uBAAuB;AAC1B,cAAI,CAACuC,MAAC,MAACiO,aAAa88C,QAAQh8B,YAAYxC,EAAE,GAAG;AAC3C,kBAAMsmM,8BAA8B7iO,OAAM+6D,QAAQh8B,WAAW;AAAA,UAC/D;AAEA,gBAAMmkM,cAAcX,aAClBviO,OACA+6D,QAAQh8B,aACR/uB,YAAE0qB,WAAW3sB,IAAI,CACnB;AACA,cAAIm1N,gBAAgB,MAAM;AACxBD,sBAAU;AACV,kBAAM36C,aAAavtH,QAAQh8B,YAAYxC,GAAGxuB;AAC1C,gBAAI82E,MAAM91E,IAAIu5K,UAAU,GAAG;AACzB06C,gCAAkBx1N,CAAC,IAAI01N;AAAAA,YACzB,OAAO;AACLr+I,oBAAM5oE,IAAIqsK,UAAU;AACpB06C,gCAAkB3nN,OAChB7N,KACA,GACAg1N,eAAel6C,UAAU,GACzB46C,WACF;AAAA,YACF;AAAA,UACF,OAAO;AACLF,8BAAkB3nN,OAAO7N,GAAG,CAAC;AAC7BA;AAAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,QAAIy1N,QAAS,QAAO;AAGpB,QAAIE,mBAAiCnzN,MAAAA,MAAE84B,iBAAiB,CAAA,CAAE;AAE1D,QAAIg6L,cAAc;AAChB,YAAMM,aAAapzN,MAAC,MAACy4B,iBAAiBq6L,cAAcC,QAAQ;AAC5DI,yBAAmBhxJ,MAAAA,SAASn3C,WAAWkoC;AAAAA,QACnClzD,MAAC,MAACmoD,UAAUirK,UAAU,CAAC;AAAA,WACpBpzN,YAAEmoD,UAAUirK,UAAU,CAAC,MAAMD,gBAAgB;AAAA;AAAA,IAEtD;AAEA,WAAOhxJ,MAAQ,SAACg3D,UAAUjmE;AAAAA,iBACXlzD,MAAC,MAAC0qB,WAAW3sB,IAAI,CAAC;AAAA,QAC3Bi1N,iBAAiB;AAAA,SAChBD,QAAQ,QAAQ/yN,MAAC,MAACmoD,UAAU4qK,QAAQ,CAAC,MAAMI,gBAAgB;AAAA;AAAA,EAEpE;;;;;;;;;;;AC9TA,MAAAvoN,qBAAApR,aAAA;AACA,MAAA65N,0BAAA75N,aAAA;AAEA,MAAAusN,mCAAAvsN,aAAA;AAGA,MAAA24N,aAAA34N,iBAAA;AAEA,MAAA+4E,SAAA/4E,aAAA;AACA,MAAA04N,eAAA14N,mBAAA;AAKA,MAAAi5E,aAAAj5E,iBAAA;AAEA,WAASi5K,SAASziL,OAAgB;AAChC,YAAQA,MAAKy8B,OAAOhqB,MAAI;AAAA,MACtB,KAAK;AAAA,MACL,KAEI;AAAA,MACJ,KAEI;AAAA,MACJ,KAAK;AACH,eAAO;AAAA,MACT,KAAK;AACH,eAEEzS,MAAK65I,WAAWmrB,WAAWhlK,CAAAA,UAAQA,MAAKyS,SAAS,iBAAiB,EAC/DA,SAAS;AAAA,MAEhB,KAAK;AACH,eAEEzS,MAAKy8B,OAAOqC,eAAe,UAG1B9+B,MAAK65I,WAA2Cp9G,OAAOqC,eACtD;AAAA,MAEN;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAKA,QAAMwkM,qBAAqB,oBAAIxzN,QAAS;AACxC,QAAMyzN,gBAAgB,oBAAIj7D,QAAS;AAGnC,WAASk7D,WAAWxjO,OAAgB;AAClC,UAAMs9D,MAAMt9D,MAAKy9D,sBAAuB;AACxC,eAAW1vD,QAAQsC,OAAOnK,KAAKo3D,GAAG,GAAG;AACnC,YAAM8Z,WAAUp3E,MAAKogE,MAAMwgF,WAAW7yI,IAAI;AAC1C,UAAIqpE,YAAWA,SAAQ18C,eAAe4iC,IAAIvvD,IAAI,GAAG;AAC/CqpE,QAAAA,SAAQhX,MAAMmlF,cAAcx3I,IAAI;AAAA,MAClC;AAAA,IACF;AACA/N,IAAAA,MAAKyI,KAAKihK,UAAU;AACpB1pK,IAAAA,MAAK8lJ,OAAQ;AACb9lJ,IAAAA,MAAKyI,KAAKihK,UAAU;AAAA,EACtB;AAEA,WAAS+5D,0BACPzjO,OACAmM,MACAu3N,OACAxrI,YACAz/B,QAAgB,IACV;AACN,QAAItsD,KAAKhM,KAAK+P,IAAI,mCAAmC,MAAM,YAAY;AACrE,YAAMlQ,MAAKqqK,oBACT,KAAKq5D,KAAK;AAAA,0BACmBxrI,UAAU,KAAKz/B,KAAK,yEAEnD;AAAA,IACF;AAAA,EACF;AAACzkD,QAAA,WAsBciG,GAAAA,mBAAAA,SAAQ,CAACP,KAAKjR,SAAkB;AAG7C,UAAM;AAAA,MAAEnI,OAAO0P;AAAAA,MAAGmiE;AAAAA,IAAS,IAAIz4D;AAE/BA,QAAID,cAA+B,CAAE;AAErC,UAAMkqN,mBAAmB;AAEzB,UAAM;AAAA,MACJrB,kBAAkB;AAAA,MAClBjiC,YAAY;AAAA,MACZujC,gBAAgB;AAAA,MAChBC,wBAAwB;AAAA,MACxBC,qBAAqB;AAAA,IACvB,IAAIr7N;AAE+B;AAEjC,UAAI;AAAA,QAAEs7N,qBAAqB;AAAA,MAAM,IAAIt7N;AAAAA,IACvC;AAEA,UAAMu7N,sBAAsB;AAAA,MAC1BnqM,MACE75B,OAIA;AACA,cAAM;AAAA,UAAEsB,MAAAA;AAAAA,QAAK,IAAItB;AAEkB;AACjC,cAAI,CAAC+jO,sBAAsBziO,MAAK2Y,SAAS;AACvC,kBAAMja,MAAKqqK,oBACT,2JAEF;AAAA,UACF;AAAA,QACF;AACA,YAAI/oK,MAAK2Y,SAAS;AAChB,cAAI3Y,MAAKH,OAAO;AACd,kBAAMnB,MAAKqqK,oBACT,4FACF;AAAA,UACF;AACA,cAAI,CAAC/oK,MAAKs7B,YAAY;AACpB58B,YAAAA,MAAK8lJ,OAAQ;AAAA,UACf;AAAA,QACF,WAAWxkJ,MAAKg9B,UAAU;AACxB,cAAIh9B,MAAKH,OAAO;AACd,kBAAMnB,MAAKqqK,oBACT,oFACF;AAAA,UACF;AACmC;AAGjC,gBACE,CAAC05D,sBACD,CAACziO,MAAKs7B,cACN,CAAC5sB,EAAEgS,uBAAuB1gB,KAAI,GAC9B;AACAtB,cAAAA,MAAK8lJ,OAAQ;AAAA,YACf;AAAA,UACF;AAAA,QACF,WAAWxkJ,MAAKo9B,UAAU;AACxB1+B,UAAAA,MAAK8lJ,OAAQ;AAAA,QACf,OAA0C;AACxC,cACE,CAACi+E,sBACD,CAACziO,MAAKH,SACN,CAACG,MAAKs7B,cACN,CAAC5sB,EAAEgS,uBAAuB1gB,KAAI,GAC9B;AACAtB,YAAAA,MAAK8lJ,OAAQ;AAAA,UACf;AAAA,QACF;AAEA,YAAIxkJ,MAAKo+B,cAAep+B,CAAAA,MAAKo+B,gBAAgB;AAC7C,YAAIp+B,MAAKo9B,SAAUp9B,CAAAA,MAAKo9B,WAAW;AACnC,YAAIp9B,MAAKk/B,SAAUl/B,CAAAA,MAAKk/B,WAAW;AACnC,YAAIl/B,MAAKu0B,SAAUv0B,CAAAA,MAAKu0B,WAAW;AACnC,YAAIv0B,MAAKq7B,eAAgBr7B,CAAAA,MAAKq7B,iBAAiB;AAC/C,YAAIr7B,MAAKg9B,SAAUh9B,CAAAA,MAAKg9B,WAAW;AACnC,YAAIh9B,MAAK2Y,QAAS3Y,CAAAA,MAAK2Y,UAAU;AACjC,YAAI3Y,MAAKs+B,SAAUt+B,CAAAA,MAAKs+B,WAAW;AAAA,MACpC;AAAA,MACDyB,OAAO;AAAA,QAAE//B,MAAAA;AAAAA,MAAqD,GAAG;AAC/D,YAAIA,MAAKo+B,cAAep+B,CAAAA,MAAKo+B,gBAAgB;AAC7C,YAAIp+B,MAAKo9B,SAAUp9B,CAAAA,MAAKo9B,WAAW;AACnC,YAAIp9B,MAAKu0B,SAAUv0B,CAAAA,MAAKu0B,WAAW;AACnC,YAAIv0B,MAAKs+B,SAAUt+B,CAAAA,MAAKs+B,WAAW;AAAA,MAGpC;AAAA,MACDzrB,YAAYnU,OAA+B6lN,WAA8B;AACvE,YAAI7lN,MAAKsB,KAAKo+B,cAAe1/B,CAAAA,MAAKsB,KAAKo+B,gBAAgB;AAQvD,cAAMukM,UAAmC,CAAE;AAC3C,cAAM;AAAA,UAAE7jK,OAAAA;AAAAA,QAAM,IAAIpgE;AAClB,mBAAWkkO,aAAalkO,MAAKkQ,IAAI,QAAQ,GAAG;AAC1C,gBAAMsrB,QAAQ0oM,UAAU5iO;AACxB,cAAIk6B,MAAM/oB,SAAS,uBAAuB;AACxC,kBAAMkwB,YAAYnH,MAAMmH;AACxB,gBAAI4gM,cAAcx0N,IAAI4zB,SAAS,EAAG;AAClC4gM,0BAActnN,IAAI0mB,SAAS;AAC3B,gBAAIpG;AACJ,gBAAIvsB,EAAEiO,aAAa0kB,SAAS,GAAG;AAC7BpG,mBAAKoG;AAAAA,YACP,WACE3yB,EAAE+P,oBAAoB4iB,SAAS,KAC/B3yB,EAAEiO,aAAa0kB,UAAU9H,IAAI,GAC7B;AACA0B,mBAAKoG,UAAU9H;AAAAA,YACjB,OAAO;AACL,oBAAMqpM,UAAU75D,oBACd,yDACF;AAAA,YACF;AACA45D,oBAAQv7N,KACNypE,SAASg3D,UAAUjmE;AAAAA,qBACVlzD,EAAEmoD,UAAU57B,EAAE,CAAC,MAAMvsB,EAAEmoD,UAAU57B,EAAE,CAAC;AAAA,aAE/C;AAEA2nM,sBAAUr+E,YAAYq+E,UAAUh0N,IAAI,WAAW,CAAC;AAChDkwD,YAAAA,OAAMmgF,gBAAgB,SAAS2jF,SAAS;AAAA,UAC1C;AAAA,QACF;AACA,SAAA,GAAA3f,uDAAqBsB,WAAW7lN,OAAMikO,OAAO;AAAA,MAC/C;AAAA,IACD;AAED,WAAO;AAAA,MACLl2N,MAAM;AAAA,MACNurB,UAAU6qM,wBAAgB;AAAA,MAE1BnqM,SAAS;AAAA,QAEPsI,SAAS8hM;AAAAA,QACT38L,YAAY28L;AAAAA,QACZ/6L,aAAa+6L;AAAAA,QAEbv7L,SAAS;AAAA,UACPiyB,MAAM96D,OAAMC,QAAO;AACjB,kBAAM;AAAA,cAAEE,MAAAA;AAAAA,YAAK,IAAIF;AACjB,gBAAIokO,gBAAgB;AACpB,gBAAIC,oBAAoB;AACxB,kBAAMhgD,eAAetkL,MAAKogE;AAE1B,gBAAI,CAAC2hK,aAAY,aAAChzN,IAAIu1K,YAAY,GAAG;AACnCy9C,2BAAY,aAACz0N,IAAIg3K,cAAc,oBAAI91K,IAAG,CAAE;AAAA,YAC1C;AAEA,gBAAIrO,MAAK+iE,IAAItnC,UAAU;AACrB,yBAAW/pB,WAAW1R,MAAK+iE,IAAItnC,UAAU;AACvC,sBAAMs/L,aAAayI,iBAAiB9wN,KAAKhB,QAAQ1Q,KAAK;AACtD,oBAAI+5N,YAAY;AACd,sBAAIA,WAAW,CAAC,GAAG;AAEjBoJ,wCAAoBpJ,WAAW,CAAC;AAAA,kBAClC,OAAO;AACLmJ,oCAAgBnJ,WAAW,CAAC;AAAA,kBAC9B;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAEA,gBAAIqJ,mBAAmBF,iBAAiBhkC;AACxC,gBAAIkkC,kBAAkB;AACpB,eAACA,gBAAgB,IAAIA,iBAAiBpxN,MAAM,GAAG;AAAA,YACjD;AAEA,gBAAIqxN,uBAAuBF,qBAAqBV;AAChD,gBAAIY,sBAAsB;AACxB,eAACA,oBAAoB,IAAIA,qBAAqBrxN,MAAM,GAAG;AAAA,YACzD;AAGA,qBAASgwD,QAAQnjE,MAAKkQ,IAAI,MAAM,GAE7B;AACD,kBAAIizD,KAAKziD,uBAAuB;AAC9B,oBAAI,CAAC4iN,mBAAmBv0N,IAAI9O,OAAME,KAAK+iE,IAAIvnC,OAAO,GAAG;AACnD2nM,qCAAmBh2N,IAAIrN,OAAME,KAAK+iE,IAAIvnC,SAAS,IAAI;AAAA,gBACrD;AAEA,oBAAIwnC,KAAK7hE,KAAKk+B,eAAe,QAAQ;AACnC,6BAAW+/B,aAAa4D,KAAK7hE,KAAK09B,YAAY;AAC5C,qBAAAijM,GAAAA,aAAAA,oBAAmB39C,cAAc/kH,UAAUpgC,MAAMpxB,IAAI;AAAA,kBACvD;AACAo1D,uBAAK2iF,OAAQ;AACb;AAAA,gBACF;AAEA,sBAAM2+E,kBAAyC,oBAAIj2N,IAAK;AACxD,sBAAMk2N,mBAAmBvhK,KAAK7hE,KAAK09B,WAAWvxB;AAC9C,sBAAMk3N,wBAAwBA,MAC5BD,mBAAmB,KACnBA,qBAAqBD,gBAAgB51I;AAEvC,2BAAWtvB,aAAa4D,KAAK7hE,KAAK09B,YAAY;AAC5C,sBACEugC,UAAU9sD,SAAS,qBACnB8sD,UAAU//B,eAAe,QACzB;AACA,qBAAAyiM,GAAAA,aAAAA,oBAAmB39C,cAAc/kH,UAAUpgC,MAAMpxB,IAAI;AACrD,0BAAMqpE,WAAUjU,KAAK/C,MAAMwgF,WAAWrhF,UAAUpgC,MAAMpxB,IAAI;AAC1D,wBAAIqpE,UAAS;AACXqtJ,sCAAgBxoN,IAAIm7D,SAAQp3E,IAAI;AAAA,oBAClC;AAAA,kBACF;AAAA,gBACF;AAIA,oBAAI6jO,uBAAuB;AACzBP,qCAAmBh2N,IAAItN,MAAKsB,MAAM,KAAK;AAAA,gBACzC,OAAO;AAGL,sBAAI6hE,KAAK7hE,KAAK09B,WAAWvxB,WAAW,GAAG;AACrC61N,uCAAmBh2N,IAAItN,MAAKsB,MAAM,KAAK;AACvC;AAAA,kBACF;AAEA,6BAAWi+D,aAAa4D,KAAK7hE,KAAK09B,YAAY;AAC5C,0BAAMo4C,WAAUjU,KAAK/C,MAAMwgF,WAAWrhF,UAAUpgC,MAAMpxB,IAAI;AAQ1D,wBAAIqpE,YAAW,CAACqtJ,gBAAgB11N,IAAIqoE,SAAQp3E,IAAI,GAAG;AACjD,0BACE4kO,iBAAiB;AAAA,wBACfxtJ,SAAAA;AAAAA,wBACAipG,aAAargL;AAAAA,wBACbukO;AAAAA,wBACAC;AAAAA,sBACF,CAAC,GACD;AACAC,wCAAgBxoN,IAAIm7D,SAAQp3E,IAAI;AAAA,sBAClC,OAAO;AACLsjO,2CAAmBh2N,IAAItN,MAAKsB,MAAM,KAAK;AAAA,sBACzC;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAEA,oBAAIqjO,sBAAqB,KAAM,CAACd,uBAAuB;AACrD1gK,uBAAK2iF,OAAQ;AAAA,gBACf,OAAO;AACL,6BAAW++E,cAAcJ,iBAAiB;AACxCI,+BAAW/+E,OAAQ;AAAA,kBACrB;AAAA,gBACF;AAEA;AAAA,cACF;AAEA,kBAAI,CAAC+9E,yBAAyB1gK,KAAKp3C,+BAA+B;AAChE,sBAAM;AAAA,kBAAEwQ;AAAAA,gBAAI,IAAG4mC,KAAK7hE;AACpB,sBAAM81E,WAAUjU,KAAK/C,MAAMwgF,WAAWrkH,GAAGxuB,IAAI;AAC7C,oBACEqpE,YAGE,CAACjU,KAAK7hE,KAAKgjC,YACbsgM,iBAAiB;AAAA,kBACfxtJ,SAAAA;AAAAA,kBACAipG,aAAargL;AAAAA,kBACbukO;AAAAA,kBACAC;AAAAA,gBACF,CAAC,GACD;AACArhK,uBAAK2iF,OAAQ;AACb;AAAA,gBACF;AAAA,cACF;AAEA,kBAAI3iF,KAAK10C,uBAAuB;AAC9B00C,uBAAOA,KAAKjzD,IAAI,aAAa;AAAA,cAC/B;AAEA,kBAAIizD,KAAKxjD,sBAAsB;AAAA,gBAAE1F,SAAS;AAAA,cAAK,CAAC,GAAG;AACjD,2BAAWlM,QAAQsC,OAAOnK,KAAKi9D,KAAK1F,sBAAqB,CAAE,GAAG;AAC5D,mBAAA,GAAAwkK,aAAkB,oBAAC39C,cAAcv2K,IAAI;AAAA,gBACvC;AAAA,cACF,WACEo1D,KAAK/3C,yBAAwB,KAC5B+3C,KAAK76C,oBAAqB,KAAI66C,KAAKjzD,IAAI,IAAI,EAAE+N,aAAY,KAC1DklD,KAAKj4C,yBAA0B,KAC/Bi4C,KAAK/iD,mBAAmB;AAAA,gBAAEnG,SAAS;AAAA,cAAK,CAAC,KACzCkpD,KAAKz3C,oBAAoB;AAAA,gBAAEzR,SAAS;AAAA,cAAK,CAAC,KACzCkpD,KAAKv3C,sBAAsB;AAAA,gBAAE3R,SAAS;AAAA,cAAM,CAAA,KAC3CkpD,KAAKjzD,IAAI,IAAI,EAAE+N,aAAY,GAC7B;AACA,iBAAAgkN,GAAAA,aAAAA,oBACE39C,cACCnhH,KAAK7hE,KAAKi7B,GAAoBxuB,IACjC;AAAA,cACF;AAAA,YACF;AAAA,UACD;AAAA,UACDwwD,KAAKv+D,OAAM;AACT,gBACEA,MAAKsB,KAAK87B,eAAe,YACzBkmM,mBAAmBpzN,IAAIlQ,MAAKsB,IAAI,GAChC;AAIAtB,cAAAA,MAAKokJ,cAAc,QAAQp0I,EAAEg8B,uBAAsB,CAAE;AAAA,YACvD;AAAA,UACF;AAAA,QACD;AAAA,QAEDC,uBAAuBjsC,OAAMC,QAAO;AAClC,cAAI,CAACqjO,mBAAmBv0N,IAAI9O,OAAME,KAAK+iE,IAAIvnC,OAAO,GAAG;AACnD2nM,+BAAmBh2N,IAAIrN,OAAME,KAAK+iE,IAAIvnC,SAAS,IAAI;AAAA,UACrD;AAEA,cAAI37B,MAAKsB,KAAKw9B,eAAe,QAAQ;AACnC9+B,YAAAA,MAAK8lJ,OAAQ;AACb;AAAA,UACF;AAWA,cACE9lJ,MAAKsB,KAAKiB,UACVvC,MAAKsB,KAAK09B,WAAWvxB,SAAS,KAC9BzN,MAAKsB,KAAK09B,WAAW8jE,MACnBvjC,eACEA,UAAU9sD,SAAS,qBACnB8sD,UAAUzgC,eAAe,MAC7B,GACA;AACA9+B,YAAAA,MAAK8lJ,OAAQ;AACb;AAAA,UACF;AASA,cACE,CAAC9lJ,MAAKsB,KAAKiB,UACXvC,MAAKsB,KAAK09B,WAAWvxB,SAAS,KAC9BzN,MAAKsB,KAAK09B,WAAW8jE,MACnBvjC,eACEvvD,EAAEwQ,kBAAkB++C,SAAS,MAC7ByiK,GAAAA,2BAAahiO,OAAMu/D,UAAUpgC,MAAMpxB,IAAI,CAC3C,GACA;AACA/N,YAAAA,MAAK8lJ,OAAQ;AACb;AAAA,UACF;AAKA,cAAI91I,EAAE4b,sBAAsB5rB,MAAKsB,KAAKy9B,WAAW,GAAG;AAClD,kBAAMkD,aAAYjiC,MAAKsB,KAAKy9B;AAC5B,gBAAI,CAAC/uB,EAAEoO,gBAAgB6jB,WAAU1F,EAAE,GAAG;AACpC,oBAAMA,MAAK6lM,GAAAA,WAAAA,oBAAmBngM,WAAU1F,EAAE;AAC1C,kBAAIv8B,MAAKogE,MAAM4kF,cAAczoH,GAAGxuB,IAAI,GAAG;AACrC/N,gBAAAA,MAAK6lJ,YAAY5jH,UAAS;AAAA,cAC5B,OAAO;AACL,sBAAM,CAAC6iM,SAAS,IAAI9kO,MAAK2tK,oBAAoB,CAC3C39J,EAAEg8B,uBACAh8B,EAAEw6B,oBAAoB,OAAO,CAC3Bx6B,EAAE06B,mBAAmB16B,EAAEmoD,UAAU57B,EAAE,CAAC,CAAC,CACtC,CACH,GACA0F,UAAS,CACV;AACDjiC,gBAAAA,MAAKogE,MAAMogF,oBAAoBskF,SAAS;AAAA,cAC1C;AAAA,YACF;AAAA,UACF;AAEAxB,6BAAmBh2N,IAAIrN,OAAME,KAAK+iE,IAAIvnC,SAAS,KAAK;AAAA,QACrD;AAAA,QAEDkQ,qBAAqB7rC,OAAM;AACzB,cAAIA,MAAKsB,KAAKw9B,eAAe,OAAQ9+B,CAAAA,MAAK8lJ,OAAQ;AAAA,QACnD;AAAA,QAED35G,gBAAgBnsC,OAAM;AAGpB,gBAAMy8B,SAASz8B,MAAKy8B;AACpB,cACG,CAACA,OAAOl6B,WAAUy/N,GAAAA,aAAAA,cAAahiO,OAAMA,MAAKsB,KAAK69B,MAAMpxB,IAAI,KAC1D/N,MAAKsB,KAAKw9B,eAAe,QACzB;AACA9+B,YAAAA,MAAK8lJ,OAAQ;AAAA,UACf;AAAA,QACD;AAAA,QAED/5G,yBAAyB/rC,OAAMC,QAAO;AACpC,cAAI,CAACqjO,mBAAmBv0N,IAAI9O,OAAME,KAAK+iE,IAAIvnC,OAAO,GAAG;AACnD2nM,+BAAmBh2N,IAAIrN,OAAME,KAAK+iE,IAAIvnC,SAAS,IAAI;AAAA,UACrD;AAGA,cACE3rB,EAAEiO,aAAaje,MAAKsB,KAAKy9B,WAAW,MACpC,GAAAijM,2BAAahiO,OAAMA,MAAKsB,KAAKy9B,YAAYhxB,IAAI,GAC7C;AACA/N,YAAAA,MAAK8lJ,OAAQ;AAEb;AAAA,UACF;AAEAw9E,6BAAmBh2N,IAAIrN,OAAME,KAAK+iE,IAAIvnC,SAAS,KAAK;AAAA,QACrD;AAAA,QAED6e,kBAAkBx6C,OAAM;AACtBwjO,qBAAWxjO,KAAI;AAAA,QAChB;AAAA,QAED06C,gBAAgB16C,OAAM;AACpBwjO,qBAAWxjO,KAAI;AAAA,QAChB;AAAA,QAEDyqC,oBAAoBzqC,OAAM;AACxB,cAAIA,MAAKsB,KAAK2Y,SAAS;AACrBupN,uBAAWxjO,KAAI;AAAA,UACjB;AAAA,QACD;AAAA,QAED2qC,mBAAmB;AAAA,UAAErpC,MAAAA;AAAAA,QAAK,GAAG;AAC3B,cAAIA,MAAKg9B,SAAUh9B,CAAAA,MAAKg9B,WAAW;AAAA,QACpC;AAAA,QAEDgd,iBAAiBt7C,OAAM;AACrBA,UAAAA,MAAK8lJ,OAAQ;AAAA,QACd;AAAA,QAEDn6G,iBAAiB3rC,OAAM;AACrB,gBAAM;AAAA,YAAEsB,MAAAA;AAAAA,UAAK,IAAItB;AACjB,cAAIsB,MAAK2Y,SAAS;AAChBupN,uBAAWxjO,KAAI;AAAA,UACjB;AAAA,QACD;AAAA,QAED8/M,MAAM9/M,OAAM;AACV,gBAAM;AAAA,YAAEsB,MAAAA;AAAAA,UAAkD,IAAItB;AAE9D,cAAIsB,MAAKi6B,eAAgBj6B,CAAAA,MAAKi6B,iBAAiB;AAIxC;AAEL,gBAAIj6B,MAAK6jG,oBAAqB7jG,CAAAA,MAAK6jG,sBAAsB;AAAA,UAC3D;AACA,cAAI7jG,MAAKk9B,WAAYl9B,CAAAA,MAAKk9B,aAAa;AACvC,cAAIl9B,MAAKo9B,SAAUp9B,CAAAA,MAAKo9B,WAAW;AAMnC1+B,UAAAA,MAAKkQ,IAAI,WAAW,EAAEkqB,QAAQkoB,WAAS;AACrC,gBAAIA,MAAMthC,cAAa,KAAMshC,MAAMrgC,qBAAoB,GAAI;AACzD,kBAAIqgC,MAAMhhD,KAAKi8B,SAAS,eAAe;AACrCymM,oCAAoB7vN,YAElBmuC,OACAtiD,KACF;AAAA,cACF,OAAO;AACLgkO,oCAAoB3iM,OAAOihB,KAAK;AAAA,cAClC;AAAA,YACF,WACEA,MAAMxgC,qBACNwgC,MAAMtgC,4BACNsgC,MAAMvgC,2BACN;AACAiiN,kCAAoBnqM,MAAMyoB,KAAK;AAAA,YACjC;AAAA,UACF,CAAC;AAAA,QACF;AAAA,QAEDoV,SAAS13D,OAAM;AACb,gBAAM;AAAA,YAAEsB,MAAAA;AAAAA,UAAK,IAAItB;AACjB,cAAIsB,MAAKi6B,eAAgBj6B,CAAAA,MAAKi6B,iBAAiB;AAC/C,cAAIj6B,MAAK+6B,WAAY/6B,CAAAA,MAAK+6B,aAAa;AAEvC,gBAAMJ,SAAS36B,MAAK26B;AACpB,cAAIA,OAAOxuB,SAAS,KAAKuC,EAAEiO,aAAage,OAAO,CAAC,GAAG;AAAA,YAAEluB,MAAM;AAAA,UAAO,CAAC,GAAG;AACpEkuB,mBAAO4hC,MAAO;AAAA,UAChB;AAAA,QACD;AAAA,QAEDvd,oBAAoBtgD,OAAM;AACxB,WAAA,GAAAqiO,WAAkB,SAACriO,OAAMsiO,eAAe;AAAA,QACzC;AAAA,QAEDpjL,uBAAuBl/C,OAAM;AAC3BA,UAAAA,MAAK8lJ,OAAQ;AAAA,QACd;AAAA,QAEDxmG,uBAAuBt/C,OAAM;AAC3BA,UAAAA,MAAK8lJ,OAAQ;AAAA,QACd;AAAA,QAED5lG,kBAAkBlgD,OAAM;AACtB,cAAI8jO,sBAAsB9jO,MAAKsB,KAAK4iC,OAAO;AACzC,aAAA,GAAAy9L,WAAkB,SAAC3hO,OAA2BgQ,CAAC;AAAA,UACjD,OAAO;AACL,aAAA,GAAAwvN,OAAa,SAACx/N,OAAMgQ,CAAC;AAAA,UACvB;AAAA,QACD;AAAA,QAED4wC,0BACE5gD,OACAmM,MACA;AACA,gBAAM;AAAA,YAAEowB;AAAAA,YAAIgI;AAAAA,UAAiB,IAAGvkC,MAAKsB;AAErC,cAAIw6B;AACJ,cAAIipM;AACJ,cAAI/0N,EAAEgc,4BAA4BuY,eAAe,GAAG;AAElDk/L,sCACEzjO,OACAmM,MACA,UAAUowB,GAAGxuB,IAAI,oBACjB,UAAUwuB,GAAGxuB,IAAI,gBACjB,+DACF;AACA+tB,mBAAO9rB,EAAEi2B,eAAej2B,EAAE0qB,WAAW,SAAS,GAAG,CAC/C6J,gBAAgBvJ,UAAU,CAC3B;AACD+pM,sBAAU;AAAA,UACZ,OAAO;AAELjpM,mBAAOkpM,iBAAiBzgM,eAAe;AACvCwgM,sBAAU;AAAA,UACZ;AACA,gBAAM3sK,UAAUpoD,EAAEw6B,oBAAoBu6L,SAAS,CAC7C/0N,EAAE06B,mBAAmBnO,IAAIT,IAAI,CAAC,CAC/B;AAIM;AACL97B,YAAAA,MAAK6lJ,YAEH7lJ,MAAKsB,KAAKgjC,WAAWt0B,EAAEg8B,uBAAuBosB,OAAO,IAAIA,OAC3D;AAAA,UACF;AACAp4D,UAAAA,MAAKogE,MAAMogF,oBAAoBxgJ,KAAI;AAAA,QACpC;AAAA,QAEDkhD,mBAAmBlhD,OAAMmM,MAAM;AAC7Bs3N,oCACEzjO,OACAmM,MACA,qBACA,yBACF;AACAnM,UAAAA,MAAK6lJ,YACH1zE,SAASg3D,UAAUjmE,uBAAuBljE,MAAKsB,KAAK05B,UAAU,EAChE;AAAA,QACD;AAAA,QAED8kB,gBAAgB9/C,OAAM;AACpBA,UAAAA,MAAK6lJ,YAAY7lJ,MAAKsB,KAAK05B,UAAU;AAAA,QACtC;AAAA,QAED,CAAC,iBAEChrB,EAAE2vC,wBAAwB,2BAA2B,EAAE,EACvD,EAAE3/C,OAA4D;AAC9D,cAAI;AAAA,YAAEsB,MAAAA;AAAAA,UAA6B,IAAItB;AACvC,aAAG;AACDsB,YAAAA,QAAOA,MAAK05B;AAAAA,UACd,SAAShrB,EAAEsb,iBAAiBhqB,KAAI,KAAK0O,EAAEub,2BAAFvb,QAAAA,EAAEub,wBAA0BjqB,KAAI;AACrEtB,UAAAA,MAAK6lJ,YAAYvkJ,KAAI;AAAA,QACtB;AAAA,QAED,CAWIoY,IAAIpZ,MAAMi/C,4BACR,kDACA,qBAAqB,EACzBv/C,OACA;AACAA,UAAAA,MAAK6lJ,YAAY7lJ,MAAKsB,KAAK05B,UAAU;AAAA,QACtC;AAAA,QAEDmL,eAAenmC,OAAM;AAGZ;AAELA,YAAAA,MAAKsB,KAAKi6B,iBAAiB;AAAA,UAC7B;AAAA,QACD;AAAA,QAEDsT,uBAAuB7uC,OAAM;AAGpB;AAELA,YAAAA,MAAKsB,KAAKi6B,iBAAiB;AAAA,UAC7B;AAAA,QACD;AAAA,QAEDqN,cAAc5oC,OAAM;AAGX;AAELA,YAAAA,MAAKsB,KAAKi6B,iBAAiB;AAAA,UAC7B;AAAA,QACD;AAAA,QAEDwc,kBAAkB/3C,OAAM;AAIf;AAELA,YAAAA,MAAKsB,KAAKi6B,iBAAiB;AAAA,UAC7B;AAAA,QACD;AAAA,QAEDqS,yBAAyB5tC,OAAM;AAItB;AAELA,YAAAA,MAAKsB,KAAKi6B,iBAAiB;AAAA,UAC7B;AAAA,QACF;AAAA,MACF;AAAA,IACD;AAED,aAASypM,iBAAiB1jO,OAAoC;AAC5D,UAAI0O,EAAEwY,kBAAkBlnB,KAAI,GAAG;AAC7B,eAAO0O,EAAEy4B,iBAAiBu8L,iBAAiB1jO,MAAKu5B,IAAI,GAAGv5B,MAAKw5B,KAAK;AAAA,MACnE;AAEA,aAAOx5B;AAAAA,IACT;AAEA,aAAS8iO,aAAa;AAAA,MACpB9iO,MAAAA;AAAAA,IACkD,GAAG;AACrD,UAAIA,MAAKq7B,eAAgBr7B,CAAAA,MAAKq7B,iBAAiB;AAC/C,UAAI3sB,EAAEiO,aAAa3c,KAAI,KAAKA,MAAKu0B,SAAUv0B,CAAAA,MAAKu0B,WAAW;AAAA,IAE7D;AAEA,aAAS+uM,iBAAiB;AAAA,MACxBxtJ,SAAAA;AAAAA,MACAipG;AAAAA,MACAkkD;AAAAA,MACAC;AAAAA,IAMF,GAAG;AACD,iBAAWxkO,SAAQo3E,SAAQonE,gBAAgB;AACzC,YAAI,CAACikC,SAASziL,KAAI,GAAG;AACnB,iBAAO;AAAA,QACT;AAAA,MACF;AAEA,UACEo3E,SAAQ18C,WAAW3sB,SAASw2N,oBAC5BntJ,SAAQ18C,WAAW3sB,SAASy2N,sBAC5B;AACA,eAAO;AAAA,MACT;AAGA,UAAIS,mBAAmB;AACvB5kD,kBAAYhiH,SAAS;AAAA,QACnB,yBAAyBr+D,OAAM;AAC7BilO,6BAAmB;AACnBjlO,UAAAA,MAAK04E,KAAM;AAAA,QACb;AAAA,MACF,CAAC;AACD,aAAO,CAACusJ;AAAAA,IACV;AAAA,EACD,CAAA;;;;;;;;;;;;;;;;;;ACzzBD,QAAM/zN,IAAI,IAAIikL,sCAAgB,0BAA0B;AAkBzC,WAAS/wB,iBAAiB3jK,WAAmB,IAAI;AAC9D,QAAI;AAAA,MAAE6hO,kBAAkB;AAAA,MAAMjiC;AAAAA,MAAWwjC;AAAAA,IAAsB,IAAIpjO;AAEnE,UAAMykO,kBAEF;AAAA,MACFC,kBAAkB;AAAA,MAElBhG,0BAA0B;AAAA,MAE1ByE,eAAe;AAAA,MAEfE,oBAAoB;AAAA,MACpBsB,yBAAyB;AAAA,MAGzBC,eAAe;AAAA,MACfhG,OAAO;AAAA,IACR;AAkCD,UAAMuE,gBAAgB1yN,EAAEykL,qBACtBuvC,gBAAgBtB,eAChBnjO,SAAQmjO,eACR,gBACF;AAEmC;AAEjC,UAAIyB,gBAAgBn0N,EAAEwkL,sBACpBwvC,gBAAgBG,eAChB5kO,SAAQ4kO,eACR,KACF;AAGA,UAAIhG,QAAQnuN,EAAEwkL,sBACZwvC,gBAAgB7F,OAChB5+N,SAAQ4+N,OACR,KACF;AACA,UAAIA,OAAO;AACTnuN,UAAExH,UAAU27N,eAAe,wCAAwC;AAAA,MACrE;AAAA,IACF;AAEA,UAAMF,mBAAmBj0N,EAAEwkL,sBACzBwvC,gBAAgBC,kBAChB1kO,SAAQ0kO,kBACR,KACF;AAEA,UAAMhG,2BAA2BjuN,EAAEwkL,sBACjCwvC,gBAAgB/F,0BAChB1+N,SAAQ0+N,0BACR,KACF;AACA,QAAIA,0BAA0B;AAMrB;AACLjuN,UAAExH,UACA27N,eACA,2DACF;AAAA,MACF;AAAA,IACF;AAEA,UAAMvB,qBAAqB5yN,EAAEwkL,sBAC3BwvC,gBAAgBpB,oBAChBrjO,SAAQqjO,oBACR,KACF;AAEA,UAAMsB,0BAA0Bl0N,EAAEwkL,sBAChCwvC,gBAAgBE,yBAChB3kO,SAAQ2kO,yBACR,KACF;AAEA,UAAME,aAAsB;AAAA,MAC1BH;AAAAA,MACA7C;AAAAA,MACAnD;AAAAA,MACA9+B;AAAAA,MACAujC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAsB;AAAAA,IACD;AACkC;AACjCE,iBAAWD,gBAAgBA;AAC3BC,iBAAWjG,QAAQA;AAAAA,IACrB;AACA,WAAOiG;AAAAA,EACT;ACjJA,MAAerrN,yBAAAA,kBAAAA,QAAQ,SAAU;AAAA,IAAE3Z,OAAO0P;AAAAA,IAAGmiE;AAAAA,EAAS,GAAG;AACvD,aAASozJ,aACPhjO,SACAvC,OACA;AACA,UAAI,CAACuC,QAAQ;AACb,UAAIyN,EAAEoO,gBAAgB7b,OAAM,GAAG;AAC7B,YAAI,QAAQxC,KAAKwC,QAAOpB,KAAK,GAAG;AAC9BoB,UAAAA,QAAOpB,QAAQoB,QAAOpB,MACnB8V,QAAQ,gBAAgB,MAAM,EAC9BA,QAAQ,UAAU,KAAK;AAAA,QAC5B;AACA;AAAA,MACF;AAEAjX,MAAAA,MAAK6lJ,YACH1zE,SAASn3C,WACNkoC,OAAO3gE,OAAM,iDAClB;AAAA,IACF;AAEA,WAAO;AAAA,MACLwL,MAAM;AAAA,MACNisB,SAAS;AAAA,QACP,gEACEh6B,OAKA;AACA,gBAAMsB,QAAOtB,MAAKsB;AAClB,gBAAMi8B,OAAOvtB,EAAE0Q,oBAAoBpf,KAAI,IACnCA,MAAKk+B,aACLl+B,MAAKw9B;AACT,cAAIvB,SAAS,SAAS;AACpBgoM,yBAAajkO,MAAKiB,QAAQvC,MAAKkQ,IAAI,QAAQ,CAAC;AAAA,UAC9C;AAAA,QACD;AAAA,QACDi2B,eAAenmC,OAAM;AACnB,cAAIgQ,EAAEyR,SAASzhB,MAAKsB,KAAKs3B,MAAM,GAAG;AAChC2sM,yBAAavlO,MAAKsB,KAAK+5B,UAAU,CAAC,GAAGr7B,MAAKkQ,IAAI,aAAa,CAAC;AAAA,UAC9D;AAAA,QACD;AAAA,QACD88B,iBAAiBhtC,OAAM;AACrBulO,uBAAavlO,MAAKsB,KAAKiB,QAAQvC,MAAKkQ,IAAI,QAAQ,CAAC;AAAA,QACnD;AAAA,MACF;AAAA,IACD;AAAA,EACH,CAAC;AC5CD,MAAAtP,SAAe4kO,gCAAc,CAAC9rN,KAAKjR,SAAkB;AACnDiR,QAAID,cAA+B,CAAE;AAErC,UAAM;AAAA,MACJ4rN;AAAAA,MACAF;AAAAA,MACA7C;AAAAA,MACAnD;AAAAA,MACAE;AAAAA,MACAh/B;AAAAA,MACAujC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,MACAsB;AAAAA,IACF,IAAIhhE,iBAAiB37J,IAAI;AAEzB,UAAM4+E,gBASD83I,CAAAA,+BAAuC;AAAA,MACtC4E,oBAAoBt7N,KAAKs7N;AAAAA,MACzBzB;AAAAA,MACAnD,0BAAAA;AAAAA,MACA9+B;AAAAA,MACAujC;AAAAA,MACAC;AAAAA,MACAC;AAAAA,IACF;AAEJ,UAAM2B,aAAaA,CAACpG,QAAgBF,8BAAsC;AAOjE;AACL,eAAO,CACL,CACEuG,6BAAAA,SAAmBr1N,OAAAyE,OAAA;AAAA,UACjBuqN,OAAAA;AAAAA,QAAK,GAAKh4I,cAAc83I,yBAAwB,CAAC,CAAA,CACpD;AAAA,MAEL;AAAA,IACD;AAED,UAAMwG,yBAAyBN,iBAAiBF;AAEhD,WAAO;AAAA,MACLrhO,SAASshO,0BAA0B,CAACQ,sBAAsB,IAAI,CAAE;AAAA,MAChE/zJ,WAAW8zJ,yBACP,CAAC;AAAA,QAAE7hO,SAAS2hO,WAAWpG,OAAOF,wBAAwB;AAAA,MAAG,CAAA,IAGzD,CACE;AAAA,QACEp/N,MACI;AAAA,QAEJ+D,SAAS2hO,WAAW,OAAO,KAAK;AAAA,MAClC,GACA;AAAA,QACE1lO,MACI;AAAA,QAEJq9B,YAAY;AAAA,QACZt5B,SAAS2hO,WAAW,OAAO,IAAI;AAAA,MACjC,GACA;AAAA,QACE1lO,MACI;AAAA,QAEJq9B,YAAY;AAAA,QACZt5B,SAAS,CACP,CAAC+hO,2CAA0B;AAAA,UAAE98C,mBAAmB;AAAA,QAAM,CAAA,GACtD,CAAC28C,6BAAmB,SAAEr+I,cAAc,IAAI,CAAC,CAAC;AAAA,MAE9C,GACA;AAAA,QACEtnF,MACI;AAAA,QAIJ+D,SAAS2hO,WAAW,MAAM,KAAK;AAAA,MAChC,CAAA;AAAA,IAER;AAAA,EACH,CAAC;;;;;;;;;AC1EM,MAAM,WAAW;AAExB,SAAS,sBAAsBn2M,eAAuBowJ,WAAmB,iBAAmC,iBAAqD;AAC/J,QAAM57K,WAAU;AAAA,IACd,CAAChD,gBAAmD,EAAE,wBAAwB,KAAM,CAAA;AAAA,EACtF;AAEA,MAAIwuB,eAAc;AACR,IAAAxrB,SAAA;AAAA,MACJ,CAACrC,gBAA8C,EAAE,SAAS,WAAW;AAAA,MACrE,CAACW,cAA8D;AAAA,MAC/D,CAACE,cAAmD;AAAA,MACpD,CAACmB,cAAqD;AAAA,MACtD,CAACC,cAAoD;AAAA,MACrD,CAACC,cAA+D;AAAA,MAChE,CAACC,cAA8D;AAAA,MAC/D,CAACmG,cAAoD;AAAA,MACrD,CAACC,cAAkD;AAAA,MACnD,CAACC,cAA4C;AAAA,MAC7C,CAACC,cAAsD;AAAA,MACvD,CAACC,cAAgD;AAAA,MACjD,CAACC,cAAkD;AAAA,MACnD,CAACC,cAAwD;AAAA,MACzD;AAAA;AAAA,QAEE,CACE,EAAE,SAAA,OACa;AAAA,UACf,MAAM;AAAA,UACN,SAAS;AAAA,YACP,mBAAmBrK,OAAoC;AAChD,oBAAA,YAAY,SAAS,8BAA8B,EAAE;AAAA,gBACxD,YAAYA,MAAK,KAAK;AAAA,cAAA,CACvB,CAAC;AAAA,YAAA;AAAA,UACJ;AAAA,QAEJ;AAAA,MAAA;AAAA,IAEN;AAAA,EAAA;AAIF,EAAA8D,SAAQ,KAAK,CAACwG,gBAA8C;AAAA,IAC1D,kBAAkB;AAAA,IAClB,SAAS;AAAA,IACT,cAActK,OAAK,QAAQ,QAAgB,YAAY,CAAC;AAAA,EAAA,CACzD,CAAC;AAEF,MAAI,CAAC0/K,WAAU;AACb,IAAA57K,SAAQ,KAAK,CAACyG,aAAA,CAAmD,CAAC;AAIlE,IAAAzG,SAAQ,KAAK;AAAA,MACX,OAAkB;AAAA,QAChB,MAAM;AAAA,QACN,SAAS;AAAA,UACP,kBAAkB9D,OAAmC;AACnD,gBAAIA,MAAK,KAAK,OAAO,MAAM,MAAM,oBAAoB;AACnDA,oBAAK,OAAO;AAAA,UAAA;AAAA,QAChB;AAAA,MAEJ;AAAA,IAAA,CACD;AAAA,EAAA;AAGI,SAAA;AAAA,IACL,wBAAwB;AAAA,IACxB,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,aAAa;AAAA;AAAA;AAAA,MAGX,sBAAsB;AAAA,IACxB;AAAA,IACA,SAASsvB,gBAAe;AAAA,MACtB,CAAC9kB,cAAqC,EAAE,uBAAuB,MAAO,CAAA;AAAA,IAAA,IACpE,CAAC;AAAA,IACL,SAAS;AAAA,MACP,GAAG,gBAAgB,IAAI,CAAC,CAAC,MAAM/J,QAAO,MAAM,CAAC+I,gBAAQ,IAAI,GAAG/I,QAAO,CAAC;AAAA,MACpE,GAAGqD;AAAA,MACH,GAAG,gBAAgB,IAAI,CAAC,CAAC,MAAMrD,QAAO,MAAM,CAAC+I,gBAAQ,IAAI,GAAG/I,QAAO,CAAC;AAAA,IACtE;AAAA,IACA,SAAS;AAAA,IACT,YAAY;AAAA,EACd;AACF;AAEA,IAAI,iBAAiB;AAErB,SAAS,aAAa,UAAkB;AACtC,SAAO,SAAS,SAAS,KAAK,KAAK,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,MAAM,KAAK,SAAS,SAAS,MAAM;AACvH;AAEO,SAAS,eAAe,MAAc,UAAkBi/K,WAAmB,iBAAmC,iBAA2D;AAC1K,MAAA;AACK,WAAA;AAGQ,mBAAA;AACb,MAAA;AACF,UAAMj/K,WAAU,sBAAsB,aAAa,QAAQ,GAAGi/K,WAAU,iBAAiB,eAAe;AACxG,WAAOomD,aAAgB,UAAA,MAAM,EAAE,UAAU,GAAGrlO,UAAS;AAAA,EAAA,UACrD;AACiB,qBAAA;AAAA,EAAA;AAErB;AAEgB,SAAA,WAAW,MAAc,UAAkBi/K,WAAsC;AACzF,QAAAj/K,WAAU,sBAAsB,aAAa,QAAQ,GAAGi/K,WAAU,CAAI,GAAA,EAAE;AAC9E,SAAOqmD,aAAY,MAAA,MAAM,EAAE,UAAU,GAAGtlO,UAAS;AACnD;;;;;;;;;;;AC1H6HK,aAA6B;AACtCA,aAA6B;AAChDA,aAA6B;AACpBA,aAA6B;AAGjFA,aAA6B;AAErCA,aAA6B;ACxB3E,IAAI,kBAAkB;AACtB,IAAI,WAAW;AACf,IAAI,cAAc;AAElB,IAAI,UAAU;AAAA,EACb;AAAA,EACA;AAAA,EACA;AACD;AAEA,IAAIT,SAAO;AAAA,EACP,iBAAkBY,IAAG;AACjB,WAAO,OAAOA,OAAM,YAAY,QAAQ,gBAAgB,KAAKA,EAAC;AAAA,EACjE;AAAA,EAED,cAAeA,IAAG;AACd,WAAO,OAAOA,OAAM,aACfA,MAAK,OAAOA,MAAK,OACrBA,MAAK,OAAOA,MAAK,OACjBA,OAAM,OAASA,OAAM,OACtB,QAAQ,SAAS,KAAKA,EAAC;AAAA,EAE1B;AAAA,EAED,iBAAkBA,IAAG;AACjB,WAAO,OAAOA,OAAM,aACfA,MAAK,OAAOA,MAAK,OACrBA,MAAK,OAAOA,MAAK,OACjBA,MAAK,OAAOA,MAAK,OACjBA,OAAM,OAASA,OAAM,OACrBA,OAAM,OAAcA,OAAM,OAC3B,QAAQ,YAAY,KAAKA,EAAC;AAAA,EAE7B;AAAA,EAED,QAASA,IAAG;AACR,WAAO,OAAOA,OAAM,YAAY,QAAQ,KAAKA,EAAC;AAAA,EACjD;AAAA,EAED,WAAYA,IAAG;AACX,WAAO,OAAOA,OAAM,YAAY,cAAc,KAAKA,EAAC;AAAA,EACvD;AACL;AAEA,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,IAAI,QAAQ,SAASuH,OAAOpF,OAAM,SAAS;AACvC,WAAS,OAAOA,KAAI;AACpB,eAAa;AACb,UAAQ,CAAE;AACV,QAAM;AACN,SAAO;AACP,WAAS;AACT,UAAQ;AACR,QAAM;AACN,SAAO;AAEP,KAAG;AACC,YAAQ,IAAK;AAOb,gBAAY,UAAU,EAAG;AAAA,EACjC,SAAa,MAAM,SAAS;AAExB,MAAI,OAAO,YAAY,YAAY;AAC/B,WAAO,YAAY,EAAC,IAAI,KAAI,GAAG,IAAI,OAAO;AAAA,EAClD;AAEI,SAAO;AACX;AAEA,SAAS,YAAa,QAAQ,MAAM,SAAS;AACzC,QAAMjC,SAAQ,OAAO,IAAI;AACzB,MAAIA,UAAS,QAAQ,OAAOA,WAAU,UAAU;AAC5C,QAAI,MAAM,QAAQA,MAAK,GAAG;AACtB,eAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,cAAMJ,OAAM,OAAO,CAAC;AACpB,cAAMijE,eAAc,YAAY7iE,QAAOJ,MAAK,OAAO;AACnD,YAAIijE,iBAAgB,QAAW;AAC3B,iBAAO7iE,OAAMJ,IAAG;AAAA,QACpC,OAAuB;AACH,iBAAO,eAAeI,QAAOJ,MAAK;AAAA,YAC9B,OAAOijE;AAAA,YACP,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,cAAc;AAAA,UACtC,CAAqB;AAAA,QACrB;AAAA,MACA;AAAA,IACA,OAAe;AACH,iBAAWjjE,QAAOI,QAAO;AACrB,cAAM6iE,eAAc,YAAY7iE,QAAOJ,MAAK,OAAO;AACnD,YAAIijE,iBAAgB,QAAW;AAC3B,iBAAO7iE,OAAMJ,IAAG;AAAA,QACpC,OAAuB;AACH,iBAAO,eAAeI,QAAOJ,MAAK;AAAA,YAC9B,OAAOijE;AAAA,YACP,UAAU;AAAA,YACV,YAAY;AAAA,YACZ,cAAc;AAAA,UACtC,CAAqB;AAAA,QACrB;AAAA,MACA;AAAA,IACA;AAAA,EACA;AAEI,SAAO,QAAQ,KAAK,QAAQ,MAAM7iE,MAAK;AAC3C;AAEA,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AACJ,IAAI;AAEJ,SAAS,MAAO;AACZ,aAAW;AACX,WAAS;AACT,gBAAc;AACd,SAAO;AAEP,aAAS;AACL,QAAI,KAAM;AAOV,UAAMkH,SAAQ,UAAU,QAAQ,EAAG;AACnC,QAAIA,QAAO;AACP,aAAOA;AAAA,IACnB;AAAA,EACA;AACA;AAEA,SAAS,OAAQ;AACb,MAAI,OAAO,GAAG,GAAG;AACb,WAAO,OAAO,cAAc,OAAO,YAAY,GAAG,CAAC;AAAA,EAC3D;AACA;AAEA,SAAS,OAAQ;AACb,QAAMpH,KAAI,KAAM;AAEhB,MAAIA,OAAM,MAAM;AACZ;AACA,aAAS;AAAA,EACZ,WAAUA,IAAG;AACV,cAAUA,GAAE;AAAA,EACpB,OAAW;AACH;AAAA,EACR;AAEI,MAAIA,IAAG;AACH,WAAOA,GAAE;AAAA,EACjB;AAEI,SAAOA;AACX;AAEA,MAAM,YAAY;AAAA,EACd,UAAW;AACP,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,aAAM;AACN;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,eAAO,SAAS,KAAK;AAAA,IACjC;AAEQ,QAAIZ,OAAK,iBAAiB,CAAC,GAAG;AAC1B,WAAM;AACN;AAAA,IACZ;AAOQ,WAAO,UAAU,UAAU,EAAC;AAAA,EAC/B;AAAA,EAED,UAAW;AACP,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,mBAAoB;AAChB,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,cAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,SAAM;AAAA,EACT;AAAA,EAED,2BAA4B;AACxB,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,aAAM;AACN;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,cAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,SAAM;AACN,eAAW;AAAA,EACd;AAAA,EAED,oBAAqB;AACjB,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,eAAO,SAAS,KAAK;AAAA,IACjC;AAEQ,SAAM;AAAA,EACT;AAAA,EAED,QAAS;AACL,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,eAAO,SAAS,cAAc,KAAM,CAAA;AAAA,MAExC,KAAK;AACD,aAAM;AACN,gBAAQ,KAAK;AACb,eAAO,SAAS,QAAQ,IAAI;AAAA,MAEhC,KAAK;AACD,aAAM;AACN,gBAAQ,KAAK;AACb,eAAO,SAAS,WAAW,IAAI;AAAA,MAEnC,KAAK;AACD,aAAM;AACN,gBAAQ,MAAM;AACd,eAAO,SAAS,WAAW,KAAK;AAAA,MAEpC,KAAK;AAAA,MACL,KAAK;AACD,YAAI,KAAM,MAAK,KAAK;AAChB,iBAAO;AAAA,QACvB;AAEY,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,gBAAQ,SAAS;AACjB,eAAO,SAAS,WAAW,QAAQ;AAAA,MAEvC,KAAK;AACD,aAAM;AACN,gBAAQ,IAAI;AACZ,eAAO,SAAS,WAAW,GAAG;AAAA,MAElC,KAAK;AAAA,MACL,KAAK;AACD,sBAAe,KAAM,MAAK;AAC1B,iBAAS;AACT,mBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,4BAA6B;AACzB,QAAI,MAAM,KAAK;AACX,YAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,SAAM;AACN,UAAM,IAAI,cAAe;AACzB,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD;AAAA,MAEJ;AACI,YAAI,CAACA,OAAK,cAAc,CAAC,GAAG;AACxB,gBAAM,kBAAiB;AAAA,QACvC;AAEY;AAAA,IACZ;AAEQ,cAAU;AACV,eAAW;AAAA,EACd;AAAA,EAED,iBAAkB;AACd,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAIA,OAAK,iBAAiB,CAAC,GAAG;AAC1B,gBAAU,KAAM;AAChB;AAAA,IACZ;AAEQ,WAAO,SAAS,cAAc,MAAM;AAAA,EACvC;AAAA,EAED,uBAAwB;AACpB,QAAI,MAAM,KAAK;AACX,YAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,SAAM;AACN,UAAM,IAAI,cAAe;AACzB,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD;AAAA,MAEJ;AACI,YAAI,CAACA,OAAK,iBAAiB,CAAC,GAAG;AAC3B,gBAAM,kBAAiB;AAAA,QACvC;AAEY;AAAA,IACZ;AAEQ,cAAU;AACV,eAAW;AAAA,EACd;AAAA,EAED,OAAQ;AACJ,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,gBAAQ,SAAS;AACjB,eAAO,SAAS,WAAW,OAAO,QAAQ;AAAA,MAE9C,KAAK;AACD,aAAM;AACN,gBAAQ,IAAI;AACZ,eAAO,SAAS,WAAW,GAAG;AAAA,IAC1C;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,OAAQ;AACJ,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,CAAC;AAAA,EACtC;AAAA,EAED,iBAAkB;AACd,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EACnD;AAAA,EAED,sBAAuB;AACnB,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,eAAgB;AACZ,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EACnD;AAAA,EAED,kBAAmB;AACf,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EACnD;AAAA,EAED,kBAAmB;AACf,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,kBAAU,KAAM;AAChB,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,sBAAuB;AACnB,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,yBAA0B;AACtB,QAAIA,OAAK,QAAQ,CAAC,GAAG;AACjB,gBAAU,KAAM;AAChB;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EACnD;AAAA,EAED,cAAe;AACX,QAAIA,OAAK,WAAW,CAAC,GAAG;AACpB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,qBAAsB;AAClB,QAAIA,OAAK,WAAW,CAAC,GAAG;AACpB,gBAAU,KAAM;AAChB;AAAA,IACZ;AAEQ,WAAO,SAAS,WAAW,OAAO,OAAO,MAAM,CAAC;AAAA,EACnD;AAAA,EAED,SAAU;AACN,YAAQ,GAAC;AAAA,MACT,KAAK;AACD,aAAM;AACN,kBAAU0B,SAAQ;AAClB;AAAA,MAEJ,KAAK;AACD,YAAI,aAAa;AACb,eAAM;AACN,iBAAO,SAAS,UAAU,MAAM;AAAA,QAChD;AAEY,kBAAU,KAAM;AAChB;AAAA,MAEJ,KAAK;AACD,YAAI,CAAC,aAAa;AACd,eAAM;AACN,iBAAO,SAAS,UAAU,MAAM;AAAA,QAChD;AAEY,kBAAU,KAAM;AAChB;AAAA,MAEJ,KAAK;AAAA,MACL,KAAK;AACD,cAAM,YAAY,KAAM,CAAA;AAAA,MAE5B,KAAK;AAAA,MACL,KAAK;AACD,sBAAc,CAAC;AACf;AAAA,MAEJ,KAAK;AACD,cAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,cAAU,KAAM;AAAA,EACnB;AAAA,EAED,QAAS;AACL,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,eAAO,SAAS,cAAc,KAAM,CAAA;AAAA,IAKhD;AAEQ,eAAW;AAAA,EACd;AAAA,EAED,qBAAsB;AAClB,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,iBAAS,KAAM;AACf,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,aAAM;AACN,mBAAW;AACX;AAAA,MAEJ,KAAK;AACD,eAAO,SAAS,cAAc,KAAM,CAAA;AAAA,MAExC,KAAK;AAAA,MACL,KAAK;AACD,sBAAe,KAAM,MAAK;AAC1B,mBAAW;AACX;AAAA,IACZ;AAEQ,QAAI1B,OAAK,cAAc,CAAC,GAAG;AACvB,gBAAU,KAAM;AAChB,iBAAW;AACX;AAAA,IACZ;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,oBAAqB;AACjB,QAAI,MAAM,KAAK;AACX,aAAO,SAAS,cAAc,KAAM,CAAA;AAAA,IAChD;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,sBAAuB;AACnB,eAAW;AAAA,EACd;AAAA,EAED,qBAAsB;AAClB,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,eAAO,SAAS,cAAc,KAAM,CAAA;AAAA,IAChD;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,mBAAoB;AAChB,QAAI,MAAM,KAAK;AACX,aAAO,SAAS,cAAc,KAAM,CAAA;AAAA,IAChD;AAEQ,eAAW;AAAA,EACd;AAAA,EAED,kBAAmB;AACf,YAAQ,GAAC;AAAA,MACT,KAAK;AAAA,MACL,KAAK;AACD,eAAO,SAAS,cAAc,KAAM,CAAA;AAAA,IAChD;AAEQ,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AAAA,EAED,MAAO;AAOH,UAAM,YAAY,KAAM,CAAA;AAAA,EAC3B;AACL;AAEA,SAAS,SAAU,MAAMc,QAAO;AAC5B,SAAO;AAAA,IACH;AAAA,IACA,OAAAA;AAAA,IACA;AAAA,IACA;AAAA,EACR;AACA;AAEA,SAAS,QAAS,GAAG;AACjB,aAAWF,MAAK,GAAG;AACf,UAAM,IAAI,KAAM;AAEhB,QAAI,MAAMA,IAAG;AACT,YAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,SAAM;AAAA,EACd;AACA;AAEA,SAASc,WAAU;AACf,QAAMd,KAAI,KAAM;AAChB,UAAQA,IAAC;AAAA,IACT,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,UAAIZ,OAAK,QAAQ,KAAI,CAAE,GAAG;AACtB,cAAM,YAAY,KAAM,CAAA;AAAA,MACpC;AAEQ,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,aAAO,UAAS;AAAA,IAEpB,KAAK;AACD,WAAM;AACN,aAAO,cAAa;AAAA,IAExB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,WAAM;AACN,aAAO;AAAA,IAEX,KAAK;AACD,WAAM;AACN,UAAI,KAAM,MAAK,MAAM;AACjB,aAAM;AAAA,MAClB;AAEQ,aAAO;AAAA,IAEX,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,YAAM,YAAY,KAAM,CAAA;AAAA,IAE5B,KAAK;AACD,YAAM,YAAY,KAAM,CAAA;AAAA,EAChC;AAEI,SAAO,KAAI;AACf;AAEA,SAAS,YAAa;AAClB,MAAI2lO,UAAS;AACb,MAAI/kO,KAAI,KAAM;AAEd,MAAI,CAACZ,OAAK,WAAWY,EAAC,GAAG;AACrB,UAAM,YAAY,KAAM,CAAA;AAAA,EAChC;AAEI,EAAA+kO,WAAU,KAAM;AAEhB,EAAA/kO,KAAI,KAAM;AACV,MAAI,CAACZ,OAAK,WAAWY,EAAC,GAAG;AACrB,UAAM,YAAY,KAAM,CAAA;AAAA,EAChC;AAEI,EAAA+kO,WAAU,KAAM;AAEhB,SAAO,OAAO,cAAc,SAASA,SAAQ,EAAE,CAAC;AACpD;AAEA,SAAS,gBAAiB;AACtB,MAAIA,UAAS;AACb,MAAI,QAAQ;AAEZ,SAAO,UAAU,GAAG;AAChB,UAAM/kO,KAAI,KAAM;AAChB,QAAI,CAACZ,OAAK,WAAWY,EAAC,GAAG;AACrB,YAAM,YAAY,KAAM,CAAA;AAAA,IACpC;AAEQ,IAAA+kO,WAAU,KAAM;AAAA,EACxB;AAEI,SAAO,OAAO,cAAc,SAASA,SAAQ,EAAE,CAAC;AACpD;AAEA,MAAM,cAAc;AAAA,EAChB,QAAS;AACL,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,SAAM;AAAA,EACT;AAAA,EAED,qBAAsB;AAClB,YAAQ,MAAM,MAAI;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AACD,cAAM,MAAM;AACZ,qBAAa;AACb;AAAA,MAEJ,KAAK;AAMD,YAAK;AACL;AAAA,MAEJ,KAAK;AACD,cAAM,WAAU;AAAA,IAC5B;AAAA,EAIK;AAAA,EAED,oBAAqB;AAMjB,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,iBAAa;AAAA,EAChB;AAAA,EAED,sBAAuB;AACnB,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,SAAM;AAAA,EACT;AAAA,EAED,mBAAoB;AAChB,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,QAAI,MAAM,SAAS,gBAAgB,MAAM,UAAU,KAAK;AACpD,UAAK;AACL;AAAA,IACZ;AAEQ,SAAM;AAAA,EACT;AAAA,EAED,qBAAsB;AAMlB,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,YAAQ,MAAM,OAAK;AAAA,MACnB,KAAK;AACD,qBAAa;AACb;AAAA,MAEJ,KAAK;AACD,YAAK;AAAA,IACjB;AAAA,EAIK;AAAA,EAED,kBAAmB;AAMf,QAAI,MAAM,SAAS,OAAO;AACtB,YAAM,WAAU;AAAA,IAC5B;AAEQ,YAAQ,MAAM,OAAK;AAAA,MACnB,KAAK;AACD,qBAAa;AACb;AAAA,MAEJ,KAAK;AACD,YAAK;AAAA,IACjB;AAAA,EAIK;AAAA,EAED,MAAO;AAAA,EAKN;AACL;AAEA,SAAS,OAAQ;AACb,MAAI7kO;AAEJ,UAAQ,MAAM,MAAI;AAAA,IAClB,KAAK;AACD,cAAQ,MAAM,OAAK;AAAA,QACnB,KAAK;AACD,UAAAA,SAAQ,CAAE;AACV;AAAA,QAEJ,KAAK;AACD,UAAAA,SAAQ,CAAE;AACV;AAAA,MACZ;AAEQ;AAAA,IAEJ,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACD,MAAAA,SAAQ,MAAM;AACd;AAAA,EAKR;AAEI,MAAI,SAAS,QAAW;AACpB,WAAOA;AAAA,EACf,OAAW;AACH,UAAM,SAAS,MAAM,MAAM,SAAS,CAAC;AACrC,QAAI,MAAM,QAAQ,MAAM,GAAG;AACvB,aAAO,KAAKA,MAAK;AAAA,IAC7B,OAAe;AACH,aAAO,eAAe,QAAQ,KAAK;AAAA,QAC/B,OAAAA;AAAA,QACA,UAAU;AAAA,QACV,YAAY;AAAA,QACZ,cAAc;AAAA,MAC9B,CAAa;AAAA,IACb;AAAA,EACA;AAEI,MAAIA,WAAU,QAAQ,OAAOA,WAAU,UAAU;AAC7C,UAAM,KAAKA,MAAK;AAEhB,QAAI,MAAM,QAAQA,MAAK,GAAG;AACtB,mBAAa;AAAA,IACzB,OAAe;AACH,mBAAa;AAAA,IACzB;AAAA,EACA,OAAW;AACH,UAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AACtC,QAAI,WAAW,MAAM;AACjB,mBAAa;AAAA,IAChB,WAAU,MAAM,QAAQ,OAAO,GAAG;AAC/B,mBAAa;AAAA,IACzB,OAAe;AACH,mBAAa;AAAA,IACzB;AAAA,EACA;AACA;AAEA,SAAS,MAAO;AACZ,QAAM,IAAK;AAEX,QAAM,UAAU,MAAM,MAAM,SAAS,CAAC;AACtC,MAAI,WAAW,MAAM;AACjB,iBAAa;AAAA,EAChB,WAAU,MAAM,QAAQ,OAAO,GAAG;AAC/B,iBAAa;AAAA,EACrB,OAAW;AACH,iBAAa;AAAA,EACrB;AACA;AAYA,SAAS,YAAaF,IAAG;AACrB,MAAIA,OAAM,QAAW;AACjB,WAAO,YAAY,kCAAkC,IAAI,IAAI,MAAM,EAAE;AAAA,EAC7E;AAEI,SAAO,YAAY,6BAA6B,WAAWA,EAAC,CAAC,QAAQ,IAAI,IAAI,MAAM,EAAE;AACzF;AAEA,SAAS,aAAc;AACnB,SAAO,YAAY,kCAAkC,IAAI,IAAI,MAAM,EAAE;AACzE;AAYA,SAAS,oBAAqB;AAC1B,YAAU;AACV,SAAO,YAAY,0CAA0C,IAAI,IAAI,MAAM,EAAE;AACjF;AAEA,SAAS,cAAeA,IAAG;AACvB,UAAQ,KAAK,WAAW,WAAWA,EAAC,CAAC,yDAAyD;AAClG;AAEA,SAAS,WAAYA,IAAG;AACpB,QAAM,eAAe;AAAA,IACjB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,KAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,IACV,UAAU;AAAA,EACb;AAED,MAAI,aAAaA,EAAC,GAAG;AACjB,WAAO,aAAaA,EAAC;AAAA,EAC7B;AAEI,MAAIA,KAAI,KAAK;AACT,UAAM,YAAYA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE;AAC7C,WAAO,SAAS,OAAO,WAAW,UAAU,UAAU,MAAM;AAAA,EACpE;AAEI,SAAOA;AACX;AAEA,SAAS,YAAa,SAAS;AAC3B,QAAM,MAAM,IAAI,YAAY,OAAO;AACnC,MAAI,aAAa;AACjB,MAAI,eAAe;AACnB,SAAO;AACX;AAEA,IAAI,YAAY,SAASwE,WAAWtE,QAAO,UAAU,OAAO;AACxD,QAAM0C,SAAQ,CAAE;AAChB,MAAI,SAAS;AACb,MAAI;AACJ,MAAI;AACJ,MAAI,MAAM;AACV,MAAI;AAEJ,MACI,YAAY,QACZ,OAAO,aAAa,YACpB,CAAC,MAAM,QAAQ,QAAQ,GACzB;AACE,YAAQ,SAAS;AACjB,YAAQ,SAAS;AACjB,eAAW,SAAS;AAAA,EAC5B;AAEI,MAAI,OAAO,aAAa,YAAY;AAChC,mBAAe;AAAA,EAClB,WAAU,MAAM,QAAQ,QAAQ,GAAG;AAChC,mBAAe,CAAE;AACjB,eAAW,KAAK,UAAU;AACtB,UAAIL;AAEJ,UAAI,OAAO,MAAM,UAAU;AACvB,QAAAA,QAAO;AAAA,MACvB,WACgB,OAAO,MAAM,YACb,aAAa,UACb,aAAa,QACf;AACE,QAAAA,QAAO,OAAO,CAAC;AAAA,MAC/B;AAEY,UAAIA,UAAS,UAAa,aAAa,QAAQA,KAAI,IAAI,GAAG;AACtD,qBAAa,KAAKA,KAAI;AAAA,MACtC;AAAA,IACA;AAAA,EACA;AAEI,MAAI,iBAAiB,QAAQ;AACzB,YAAQ,OAAO,KAAK;AAAA,EAC5B,WAAe,iBAAiB,QAAQ;AAChC,YAAQ,OAAO,KAAK;AAAA,EAC5B;AAEI,MAAI,OAAO,UAAU,UAAU;AAC3B,QAAI,QAAQ,GAAG;AACX,cAAQ,KAAK,IAAI,IAAI,KAAK,MAAM,KAAK,CAAC;AACtC,YAAM,aAAa,OAAO,GAAG,KAAK;AAAA,IAC9C;AAAA,EACA,WAAe,OAAO,UAAU,UAAU;AAClC,UAAM,MAAM,OAAO,GAAG,EAAE;AAAA,EAChC;AAEI,SAAO,kBAAkB,IAAI,EAAC,IAAIrC,OAAK,CAAC;AAExC,WAAS,kBAAmBJ,MAAK,QAAQ;AACrC,QAAII,SAAQ,OAAOJ,IAAG;AACtB,QAAII,UAAS,MAAM;AACf,UAAI,OAAOA,OAAM,YAAY,YAAY;AACrC,QAAAA,SAAQA,OAAM,QAAQJ,IAAG;AAAA,MAC5B,WAAU,OAAOI,OAAM,WAAW,YAAY;AAC3C,QAAAA,SAAQA,OAAM,OAAOJ,IAAG;AAAA,MACxC;AAAA,IACA;AAEQ,QAAI,cAAc;AACd,MAAAI,SAAQ,aAAa,KAAK,QAAQJ,MAAKI,MAAK;AAAA,IACxD;AAEQ,QAAIA,kBAAiB,QAAQ;AACzB,MAAAA,SAAQ,OAAOA,MAAK;AAAA,IAChC,WAAmBA,kBAAiB,QAAQ;AAChC,MAAAA,SAAQ,OAAOA,MAAK;AAAA,IAChC,WAAmBA,kBAAiB,SAAS;AACjC,MAAAA,SAAQA,OAAM,QAAS;AAAA,IACnC;AAEQ,YAAQA,QAAK;AAAA,MACb,KAAK;AAAM,eAAO;AAAA,MAClB,KAAK;AAAM,eAAO;AAAA,MAClB,KAAK;AAAO,eAAO;AAAA,IAC3B;AAEQ,QAAI,OAAOA,WAAU,UAAU;AAC3B,aAAO,YAAYA,MAAY;AAAA,IAC3C;AAEQ,QAAI,OAAOA,WAAU,UAAU;AAC3B,aAAO,OAAOA,MAAK;AAAA,IAC/B;AAEQ,QAAI,OAAOA,WAAU,UAAU;AAC3B,aAAO,MAAM,QAAQA,MAAK,IAAI,eAAeA,MAAK,IAAI,gBAAgBA,MAAK;AAAA,IACvF;AAEQ,WAAO;AAAA,EACf;AAEI,WAAS,YAAaA,QAAO;AACzB,UAAM,SAAS;AAAA,MACX,KAAK;AAAA,MACL,KAAK;AAAA,IACR;AAED,UAAM,eAAe;AAAA,MACjB,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,KAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,UAAU;AAAA,IACb;AAED,QAAI,UAAU;AAEd,aAAS,IAAI,GAAG,IAAIA,OAAM,QAAQ,KAAK;AACnC,YAAMF,KAAIE,OAAM,CAAC;AACjB,cAAQF,IAAC;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AACD,iBAAOA,EAAC;AACR,qBAAWA;AACX;AAAA,QAEJ,KAAK;AACD,cAAIZ,OAAK,QAAQc,OAAM,IAAI,CAAC,CAAC,GAAG;AAC5B,uBAAW;AACX;AAAA,UACpB;AAAA,MACA;AAEY,UAAI,aAAaF,EAAC,GAAG;AACjB,mBAAW,aAAaA,EAAC;AACzB;AAAA,MAChB;AAEY,UAAIA,KAAI,KAAK;AACT,YAAI,YAAYA,GAAE,WAAW,CAAC,EAAE,SAAS,EAAE;AAC3C,mBAAW,SAAS,OAAO,WAAW,UAAU,UAAU,MAAM;AAChE;AAAA,MAChB;AAEY,iBAAWA;AAAA,IACvB;AAEQ,UAAM,YAAY,SAAS,OAAO,KAAK,MAAM,EAAE,OAAO,CAAC,GAAG,MAAO,OAAO,CAAC,IAAI,OAAO,CAAC,IAAK,IAAI,CAAC;AAE/F,cAAU,QAAQ,QAAQ,IAAI,OAAO,WAAW,GAAG,GAAG,aAAa,SAAS,CAAC;AAE7E,WAAO,YAAY,UAAU;AAAA,EACrC;AAEI,WAAS,gBAAiBE,QAAO;AAC7B,QAAI0C,OAAM,QAAQ1C,MAAK,KAAK,GAAG;AAC3B,YAAM,UAAU,wCAAwC;AAAA,IACpE;AAEQ,IAAA0C,OAAM,KAAK1C,MAAK;AAEhB,QAAI,WAAW;AACf,aAAS,SAAS;AAElB,QAAI,OAAO,gBAAgB,OAAO,KAAKA,MAAK;AAC5C,QAAI8kO,WAAU,CAAE;AAChB,eAAWllO,QAAO,MAAM;AACpB,YAAM,iBAAiB,kBAAkBA,MAAKI,MAAK;AACnD,UAAI,mBAAmB,QAAW;AAC9B,YAAI,SAAS,aAAaJ,IAAG,IAAI;AACjC,YAAI,QAAQ,IAAI;AACZ,oBAAU;AAAA,QAC9B;AACgB,kBAAU;AACV,QAAAklO,SAAQ,KAAK,MAAM;AAAA,MACnC;AAAA,IACA;AAEQ,QAAI;AACJ,QAAIA,SAAQ,WAAW,GAAG;AACtB,cAAQ;AAAA,IACpB,OAAe;AACH,UAAI;AACJ,UAAI,QAAQ,IAAI;AACZ,qBAAaA,SAAQ,KAAK,GAAG;AAC7B,gBAAQ,MAAM,aAAa;AAAA,MAC3C,OAAmB;AACH,YAAI,YAAY,QAAQ;AACxB,qBAAaA,SAAQ,KAAK,SAAS;AACnC,gBAAQ,QAAQ,SAAS,aAAa,QAAQ,WAAW;AAAA,MACzE;AAAA,IACA;AAEQ,IAAApiO,OAAM,IAAK;AACX,aAAS;AACT,WAAO;AAAA,EACf;AAEI,WAAS,aAAc9C,MAAK;AACxB,QAAIA,KAAI,WAAW,GAAG;AAClB,aAAO,YAAYA,IAAS;AAAA,IACxC;AAEQ,UAAM,YAAY,OAAO,cAAcA,KAAI,YAAY,CAAC,CAAC;AACzD,QAAI,CAACV,OAAK,cAAc,SAAS,GAAG;AAChC,aAAO,YAAYU,IAAS;AAAA,IACxC;AAEQ,aAAS,IAAI,UAAU,QAAQ,IAAIA,KAAI,QAAQ,KAAK;AAChD,UAAI,CAACV,OAAK,iBAAiB,OAAO,cAAcU,KAAI,YAAY,CAAC,CAAC,CAAC,GAAG;AAClE,eAAO,YAAYA,IAAS;AAAA,MAC5C;AAAA,IACA;AAEQ,WAAOA;AAAA,EACf;AAEI,WAAS,eAAgBI,QAAO;AAC5B,QAAI0C,OAAM,QAAQ1C,MAAK,KAAK,GAAG;AAC3B,YAAM,UAAU,wCAAwC;AAAA,IACpE;AAEQ,IAAA0C,OAAM,KAAK1C,MAAK;AAEhB,QAAI,WAAW;AACf,aAAS,SAAS;AAElB,QAAI8kO,WAAU,CAAE;AAChB,aAAS,IAAI,GAAG,IAAI9kO,OAAM,QAAQ,KAAK;AACnC,YAAM,iBAAiB,kBAAkB,OAAO,CAAC,GAAGA,MAAK;AACzD,MAAA8kO,SAAQ,KAAM,mBAAmB,SAAa,iBAAiB,MAAM;AAAA,IACjF;AAEQ,QAAI;AACJ,QAAIA,SAAQ,WAAW,GAAG;AACtB,cAAQ;AAAA,IACpB,OAAe;AACH,UAAI,QAAQ,IAAI;AACZ,YAAI,aAAaA,SAAQ,KAAK,GAAG;AACjC,gBAAQ,MAAM,aAAa;AAAA,MAC3C,OAAmB;AACH,YAAI,YAAY,QAAQ;AACxB,YAAI,aAAaA,SAAQ,KAAK,SAAS;AACvC,gBAAQ,QAAQ,SAAS,aAAa,QAAQ,WAAW;AAAA,MACzE;AAAA,IACA;AAEQ,IAAApiO,OAAM,IAAK;AACX,aAAS;AACT,WAAO;AAAA,EACf;AACA;AAEA,MAAM,QAAQ;AAAA,EACV;AAAA,EACA;AACJ;AAEA,IAAI,MAAM;;;;;;;;;;ACx4CV,MAAI,eAAe,mEAAmE,MAAM,EAAE;AAKhF,SAAA,SAAG,SAAU/B,SAAQ;AACjC,QAAI,KAAKA,WAAUA,UAAS,aAAa,QAAQ;AAC/C,aAAO,aAAaA,OAAM;AAAA,IAC9B;AACE,UAAM,IAAI,UAAU,+BAA+BA,OAAM;AAAA,EAC1D;AAMa,SAAA,SAAG,SAAU,UAAU;AACnC,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAI,UAAU;AACd,QAAI,UAAU;AAEd,QAAI,OAAO;AACX,QAAI,OAAO;AAEX,QAAI,OAAO;AACX,QAAI08E,SAAQ;AAEZ,QAAI,eAAe;AACnB,QAAI,eAAe;AAGnB,QAAI,QAAQ,YAAY,YAAY,MAAM;AACxC,aAAQ,WAAW;AAAA,IACvB;AAGE,QAAI,WAAW,YAAY,YAAY,SAAS;AAC9C,aAAQ,WAAW,UAAU;AAAA,IACjC;AAGE,QAAI,QAAQ,YAAY,YAAY,MAAM;AACxC,aAAQ,WAAW,OAAO;AAAA,IAC9B;AAGE,QAAI,YAAY,MAAM;AACpB,aAAO;AAAA,IACX;AAGE,QAAI,YAAYA,QAAO;AACrB,aAAO;AAAA,IACX;AAGE,WAAO;AAAA,EACR;;;;;;;AC7BD,MAAI00H,UAASpyM,cAAmB;AAchC,MAAI,iBAAiB;AAGrB,MAAI,WAAW,KAAK;AAGpB,MAAI,gBAAgB,WAAW;AAG/B,MAAI,uBAAuB;AAQ3B,WAAS,YAAY,QAAQ;AAC3B,WAAO,SAAS,KACV,CAAC,UAAW,KAAK,KAClB,UAAU,KAAK;AAAA,EACtB;AAQA,WAAS,cAAc,QAAQ;AAC7B,QAAI,cAAc,SAAS,OAAO;AAClC,QAAI,UAAU,UAAU;AACxB,WAAO,aACH,CAAC,UACD;AAAA,EACN;AAKA,YAAA,SAAiB,SAAS,iBAAiB,QAAQ;AACjD,QAAI,UAAU;AACd,QAAI;AAEJ,QAAI,MAAM,YAAY,MAAM;AAE5B,OAAG;AACD,cAAQ,MAAM;AACd,eAAS;AACT,UAAI,MAAM,GAAG;AAGX,iBAAS;AAAA,MACf;AACI,iBAAWoyM,QAAO,OAAO,KAAK;AAAA,IAC/B,SAAQ,MAAM;AAEf,WAAO;AAAA,EACR;AAMa,YAAA,SAAG,SAAS,iBAAiB,MAAM,QAAQ,WAAW;AAClE,QAAI,SAAS,KAAK;AAClB,QAAI,SAAS;AACb,QAAI,QAAQ;AACZ,QAAI,cAAc;AAElB,OAAG;AACD,UAAI,UAAU,QAAQ;AACpB,cAAM,IAAI,MAAM,4CAA4C;AAAA,MAClE;AAEI,cAAQA,QAAO,OAAO,KAAK,WAAW,QAAQ,CAAC;AAC/C,UAAI,UAAU,IAAI;AAChB,cAAM,IAAI,MAAM,2BAA2B,KAAK,OAAO,SAAS,CAAC,CAAC;AAAA,MACxE;AAEI,qBAAe,CAAC,EAAE,QAAQ;AAC1B,eAAS;AACT,eAAS,UAAU,SAAS;AAC5B,eAAS;AAAA,IACb,SAAW;AAET,cAAU,QAAQ,cAAc,MAAM;AACtC,cAAU,OAAO;AAAA,EAClB;;;;;;;;;AC1HD,aAAS,OAAO,OAAO,OAAO,eAAe;AAC3C,UAAI,SAAS,OAAO;AAClB,eAAO,MAAM,KAAK;AAAA,MACtB,WAAa,UAAU,WAAW,GAAG;AACjC,eAAO;AAAA,MACX,OAAS;AACL,cAAM,IAAI,MAAM,MAAM,QAAQ,2BAA2B;AAAA,MAC7D;AAAA,IACA;AACA,YAAA,SAAiB;AAEjB,QAAI,YAAY;AAChB,QAAI,gBAAgB;AAEpB,aAAS,SAAS,MAAM;AACtB,UAAI,QAAQ,KAAK,MAAM,SAAS;AAChC,UAAI,CAAC,OAAO;AACV,eAAO;AAAA,MACX;AACE,aAAO;AAAA,QACL,QAAQ,MAAM,CAAC;AAAA,QACf,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,QACb,MAAM,MAAM,CAAC;AAAA,MACd;AAAA,IACH;AACA,YAAA,WAAmB;AAEnB,aAAS,YAAY,YAAY;AAC/B,UAAIh6L,OAAM;AACV,UAAI,WAAW,QAAQ;AACrB,QAAAA,QAAO,WAAW,SAAS;AAAA,MAC/B;AACE,MAAAA,QAAO;AACP,UAAI,WAAW,MAAM;AACnB,QAAAA,QAAO,WAAW,OAAO;AAAA,MAC7B;AACE,UAAI,WAAW,MAAM;AACnB,QAAAA,QAAO,WAAW;AAAA,MACtB;AACE,UAAI,WAAW,MAAM;AACnB,QAAAA,QAAO,MAAM,WAAW;AAAA,MAC5B;AACE,UAAI,WAAW,MAAM;AACnB,QAAAA,QAAO,WAAW;AAAA,MACtB;AACE,aAAOA;AAAA,IACT;AACA,YAAA,cAAsB;AAatB,aAAS,UAAU,OAAO;AACxB,UAAIlZ,QAAO;AACX,UAAIkZ,OAAM,SAAS,KAAK;AACxB,UAAIA,MAAK;AACP,YAAI,CAACA,KAAI,MAAM;AACb,iBAAO;AAAA,QACb;AACI,QAAAlZ,QAAOkZ,KAAI;AAAA,MACf;AACE,UAAI,aAAa,QAAQ,WAAWlZ,KAAI;AAExC,UAAI,QAAQA,MAAK,MAAM,KAAK;AAC5B,eAAS,MAAM,KAAK,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AACxD,eAAO,MAAM,CAAC;AACd,YAAI,SAAS,KAAK;AAChB,gBAAM,OAAO,GAAG,CAAC;AAAA,QACvB,WAAe,SAAS,MAAM;AACxB;AAAA,QACN,WAAe,KAAK,GAAG;AACjB,cAAI,SAAS,IAAI;AAIf,kBAAM,OAAO,IAAI,GAAG,EAAE;AACtB,iBAAK;AAAA,UACb,OAAa;AACL,kBAAM,OAAO,GAAG,CAAC;AACjB;AAAA,UACR;AAAA,QACA;AAAA,MACA;AACE,MAAAA,QAAO,MAAM,KAAK,GAAG;AAErB,UAAIA,UAAS,IAAI;AACf,QAAAA,QAAO,aAAa,MAAM;AAAA,MAC9B;AAEE,UAAIkZ,MAAK;AACP,QAAAA,KAAI,OAAOlZ;AACX,eAAO,YAAYkZ,IAAG;AAAA,MAC1B;AACE,aAAOlZ;AAAA,IACT;AACA,YAAA,YAAoB;AAkBpB,aAAS,KAAK,OAAO,OAAO;AAC1B,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACZ;AACE,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACZ;AACE,UAAI,WAAW,SAAS,KAAK;AAC7B,UAAI,WAAW,SAAS,KAAK;AAC7B,UAAI,UAAU;AACZ,gBAAQ,SAAS,QAAQ;AAAA,MAC7B;AAGE,UAAI,YAAY,CAAC,SAAS,QAAQ;AAChC,YAAI,UAAU;AACZ,mBAAS,SAAS,SAAS;AAAA,QACjC;AACI,eAAO,YAAY,QAAQ;AAAA,MAC/B;AAEE,UAAI,YAAY,MAAM,MAAM,aAAa,GAAG;AAC1C,eAAO;AAAA,MACX;AAGE,UAAI,YAAY,CAAC,SAAS,QAAQ,CAAC,SAAS,MAAM;AAChD,iBAAS,OAAO;AAChB,eAAO,YAAY,QAAQ;AAAA,MAC/B;AAEE,UAAI,SAAS,MAAM,OAAO,CAAC,MAAM,MAC7B,QACA,UAAU,MAAM,QAAQ,QAAQ,EAAE,IAAI,MAAM,KAAK;AAErD,UAAI,UAAU;AACZ,iBAAS,OAAO;AAChB,eAAO,YAAY,QAAQ;AAAA,MAC/B;AACE,aAAO;AAAA,IACT;AACA,YAAA,OAAe;AAEf,YAAqB,aAAA,SAAU,OAAO;AACpC,aAAO,MAAM,OAAO,CAAC,MAAM,OAAO,UAAU,KAAK,KAAK;AAAA,IACvD;AAQD,aAAS,SAAS,OAAO,OAAO;AAC9B,UAAI,UAAU,IAAI;AAChB,gBAAQ;AAAA,MACZ;AAEE,cAAQ,MAAM,QAAQ,OAAO,EAAE;AAM/B,UAAI,QAAQ;AACZ,aAAO,MAAM,QAAQ,QAAQ,GAAG,MAAM,GAAG;AACvC,YAAIY,SAAQ,MAAM,YAAY,GAAG;AACjC,YAAIA,SAAQ,GAAG;AACb,iBAAO;AAAA,QACb;AAKI,gBAAQ,MAAM,MAAM,GAAGA,MAAK;AAC5B,YAAI,MAAM,MAAM,mBAAmB,GAAG;AACpC,iBAAO;AAAA,QACb;AAEI,UAAE;AAAA,MACN;AAGE,aAAO,MAAM,QAAQ,CAAC,EAAE,KAAK,KAAK,IAAI,MAAM,OAAO,MAAM,SAAS,CAAC;AAAA,IACrE;AACA,YAAA,WAAmB;AAEnB,QAAI,oBAAqB,WAAY;AACnC,UAAI,MAAM,uBAAO,OAAO,IAAI;AAC5B,aAAO,EAAE,eAAe;AAAA,IAC1B;AAEA,aAAS,SAAU,GAAG;AACpB,aAAO;AAAA,IACT;AAWA,aAAS,YAAY,MAAM;AACzB,UAAI,cAAc,IAAI,GAAG;AACvB,eAAO,MAAM;AAAA,MACjB;AAEE,aAAO;AAAA,IACT;AACA,YAAA,cAAsB,oBAAoB,WAAW;AAErD,aAAS,cAAc,MAAM;AAC3B,UAAI,cAAc,IAAI,GAAG;AACvB,eAAO,KAAK,MAAM,CAAC;AAAA,MACvB;AAEE,aAAO;AAAA,IACT;AACA,YAAA,gBAAwB,oBAAoB,WAAW;AAEvD,aAAS,cAAc,GAAG;AACxB,UAAI,CAAC,GAAG;AACN,eAAO;AAAA,MACX;AAEE,UAAI,SAAS,EAAE;AAEf,UAAI,SAAS,GAA4B;AACvC,eAAO;AAAA,MACX;AAEE,UAAI,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,OAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,MAC7B,EAAE,WAAW,SAAS,CAAC,MAAM,IAAe;AAC9C,eAAO;AAAA,MACX;AAEE,eAAS,IAAI,SAAS,IAAI,KAAK,GAAG,KAAK;AACrC,YAAI,EAAE,WAAW,CAAC,MAAM,IAAc;AACpC,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,aAAO;AAAA,IACT;AAUA,aAAS,2BAA2B,UAAU,UAAU,qBAAqB;AAC3E,UAAI,MAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AACjD,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,KAAK,qBAAqB;AACpC,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,gBAAgB,SAAS;AACxC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAA,6BAAqC;AAWrC,aAAS,oCAAoC,UAAU,UAAU,sBAAsB;AACrF,UAAI,MAAM,SAAS,gBAAgB,SAAS;AAC5C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,KAAK,sBAAsB;AACrC,eAAO;AAAA,MACX;AAEE,YAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AAC7C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAA,sCAA8C;AAE9C,aAAS,OAAO,OAAO,OAAO;AAC5B,UAAI,UAAU,OAAO;AACnB,eAAO;AAAA,MACX;AAEE,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACX;AAEE,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACX;AAEE,UAAI,QAAQ,OAAO;AACjB,eAAO;AAAA,MACX;AAEE,aAAO;AAAA,IACT;AAMA,aAAS,oCAAoC,UAAU,UAAU;AAC/D,UAAI,MAAM,SAAS,gBAAgB,SAAS;AAC5C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,kBAAkB,SAAS;AAC1C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,OAAO,SAAS,QAAQ,SAAS,MAAM;AAC7C,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,eAAe,SAAS;AACvC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,YAAM,SAAS,iBAAiB,SAAS;AACzC,UAAI,QAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAEE,aAAO,OAAO,SAAS,MAAM,SAAS,IAAI;AAAA,IAC5C;AACA,YAAA,sCAA8C;AAO9C,aAAS,oBAAoB,KAAK;AAChC,aAAO,KAAK,MAAM,IAAI,QAAQ,kBAAkB,EAAE,CAAC;AAAA,IACrD;AACA,YAAA,sBAA8B;AAM9B,aAAS,iBAAiB,YAAY,WAAW,cAAc;AAC7D,kBAAY,aAAa;AAEzB,UAAI,YAAY;AAEd,YAAI,WAAW,WAAW,SAAS,CAAC,MAAM,OAAO,UAAU,CAAC,MAAM,KAAK;AACrE,wBAAc;AAAA,QACpB;AAMI,oBAAY,aAAa;AAAA,MAC7B;AAgBE,UAAI,cAAc;AAChB,YAAI,SAAS,SAAS,YAAY;AAClC,YAAI,CAAC,QAAQ;AACX,gBAAM,IAAI,MAAM,kCAAkC;AAAA,QACxD;AACI,YAAI,OAAO,MAAM;AAEf,cAAIA,SAAQ,OAAO,KAAK,YAAY,GAAG;AACvC,cAAIA,UAAS,GAAG;AACd,mBAAO,OAAO,OAAO,KAAK,UAAU,GAAGA,SAAQ,CAAC;AAAA,UACxD;AAAA,QACA;AACI,oBAAY,KAAK,YAAY,MAAM,GAAG,SAAS;AAAA,MACnD;AAEE,aAAO,UAAU,SAAS;AAAA,IAC5B;AACA,YAAA,mBAA2B;AAAA;;;;;;;;AChe3B,MAAIP,QAAOS,YAAiB;AAC5B,MAAI,MAAM,OAAO,UAAU;AAC3B,MAAI,eAAe,OAAO,QAAQ;AAQlC,WAAS,WAAW;AAClB,SAAK,SAAS,CAAE;AAChB,SAAK,OAAO,eAAe,oBAAI,IAAG,IAAK,uBAAO,OAAO,IAAI;AAAA,EAC3D;AAKA,WAAS,YAAY,SAAS,mBAAmB,QAAQ,kBAAkB;AACzE,QAAI,MAAM,IAAI,SAAU;AACxB,aAAS,IAAI,GAAG,MAAM,OAAO,QAAQ,IAAI,KAAK,KAAK;AACjD,UAAI,IAAI,OAAO,CAAC,GAAG,gBAAgB;AAAA,IACvC;AACE,WAAO;AAAA,EACR;AAQD,WAAS,UAAU,OAAO,SAAS,gBAAgB;AACjD,WAAO,eAAe,KAAK,KAAK,OAAO,OAAO,oBAAoB,KAAK,IAAI,EAAE;AAAA,EAC9E;AAOD,WAAS,UAAU,MAAM,SAAS,aAAa,MAAM,kBAAkB;AACrE,QAAI,OAAO,eAAe,OAAOT,MAAK,YAAY,IAAI;AACtD,QAAI,cAAc,eAAe,KAAK,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI;AAC1E,QAAI,MAAM,KAAK,OAAO;AACtB,QAAI,CAAC,eAAe,kBAAkB;AACpC,WAAK,OAAO,KAAK,IAAI;AAAA,IACzB;AACE,QAAI,CAAC,aAAa;AAChB,UAAI,cAAc;AAChB,aAAK,KAAK,IAAI,MAAM,GAAG;AAAA,MAC7B,OAAW;AACL,aAAK,KAAK,IAAI,IAAI;AAAA,MACxB;AAAA,IACA;AAAA,EACC;AAOD,WAAS,UAAU,MAAM,SAAS,aAAa,MAAM;AACnD,QAAI,cAAc;AAChB,aAAO,KAAK,KAAK,IAAI,IAAI;AAAA,IAC7B,OAAS;AACL,UAAI,OAAOA,MAAK,YAAY,IAAI;AAChC,aAAO,IAAI,KAAK,KAAK,MAAM,IAAI;AAAA,IACnC;AAAA,EACC;AAOD,WAAS,UAAU,UAAU,SAAS,iBAAiB,MAAM;AAC3D,QAAI,cAAc;AAChB,UAAI,MAAM,KAAK,KAAK,IAAI,IAAI;AAC5B,UAAI,OAAO,GAAG;AACV,eAAO;AAAA,MACf;AAAA,IACA,OAAS;AACL,UAAI,OAAOA,MAAK,YAAY,IAAI;AAChC,UAAI,IAAI,KAAK,KAAK,MAAM,IAAI,GAAG;AAC7B,eAAO,KAAK,KAAK,IAAI;AAAA,MAC3B;AAAA,IACA;AAEE,UAAM,IAAI,MAAM,MAAM,OAAO,sBAAsB;AAAA,EACpD;AAOD,WAAS,UAAU,KAAK,SAAS,YAAY,MAAM;AACjD,QAAI,QAAQ,KAAK,OAAO,KAAK,OAAO,QAAQ;AAC1C,aAAO,KAAK,OAAO,IAAI;AAAA,IAC3B;AACE,UAAM,IAAI,MAAM,2BAA2B,IAAI;AAAA,EAChD;AAOD,WAAS,UAAU,UAAU,SAAS,mBAAmB;AACvD,WAAO,KAAK,OAAO,MAAO;AAAA,EAC3B;AAED,WAAA,WAAmB;;;;;;;;ACjHnB,MAAIA,QAAOS,YAAiB;AAM5B,WAAS,uBAAuB,UAAU,UAAU;AAElD,QAAI,QAAQ,SAAS;AACrB,QAAI,QAAQ,SAAS;AACrB,QAAI,UAAU,SAAS;AACvB,QAAI,UAAU,SAAS;AACvB,WAAO,QAAQ,SAAS,SAAS,SAAS,WAAW,WAC9CT,MAAK,oCAAoC,UAAU,QAAQ,KAAK;AAAA,EACzE;AAOA,WAAS,cAAc;AACrB,SAAK,SAAS,CAAE;AAChB,SAAK,UAAU;AAEf,SAAK,QAAQ,EAAC,eAAe,IAAI,iBAAiB,EAAC;AAAA,EACrD;AAQA,cAAY,UAAU,kBACpB,SAAS,oBAAoB,WAAW,UAAU;AAChD,SAAK,OAAO,QAAQ,WAAW,QAAQ;AAAA,EACxC;AAOH,cAAY,UAAU,MAAM,SAAS,gBAAgB,UAAU;AAC7D,QAAI,uBAAuB,KAAK,OAAO,QAAQ,GAAG;AAChD,WAAK,QAAQ;AACb,WAAK,OAAO,KAAK,QAAQ;AAAA,IAC7B,OAAS;AACL,WAAK,UAAU;AACf,WAAK,OAAO,KAAK,QAAQ;AAAA,IAC7B;AAAA,EACC;AAWD,cAAY,UAAU,UAAU,SAAS,sBAAsB;AAC7D,QAAI,CAAC,KAAK,SAAS;AACjB,WAAK,OAAO,KAAKA,MAAK,mCAAmC;AACzD,WAAK,UAAU;AAAA,IACnB;AACE,WAAO,KAAK;AAAA,EACb;AAED,cAAA,cAAsB;;;;;;;ACvEtB,MAAI,YAAYS,iBAAuB;AACvC,MAAIT,QAAOoB,YAAiB;AAC5B,MAAI,WAAWW,gBAAsB,EAAC;AACtC,MAAI,cAAcE,mBAAyB,EAAC;AAU5C,WAAS,mBAAmB,OAAO;AACjC,QAAI,CAAC,OAAO;AACV,cAAQ,CAAE;AAAA,IACd;AACE,SAAK,QAAQjC,MAAK,OAAO,OAAO,QAAQ,IAAI;AAC5C,SAAK,cAAcA,MAAK,OAAO,OAAO,cAAc,IAAI;AACxD,SAAK,kBAAkBA,MAAK,OAAO,OAAO,kBAAkB,KAAK;AACjE,SAAK,WAAW,IAAI,SAAU;AAC9B,SAAK,SAAS,IAAI,SAAU;AAC5B,SAAK,YAAY,IAAI,YAAa;AAClC,SAAK,mBAAmB;AAAA,EAC1B;AAEA,qBAAmB,UAAU,WAAW;AAOxC,qBAAmB,gBACjB,SAAS,iCAAiC,oBAAoB;AAC5D,QAAI,aAAa,mBAAmB;AACpC,QAAI,YAAY,IAAI,mBAAmB;AAAA,MACrC,MAAM,mBAAmB;AAAA,MACzB;AAAA,IACN,CAAK;AACD,uBAAmB,YAAY,SAAU,SAAS;AAChD,UAAI,aAAa;AAAA,QACf,WAAW;AAAA,UACT,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,QAC1B;AAAA,MACO;AAED,UAAI,QAAQ,UAAU,MAAM;AAC1B,mBAAW,SAAS,QAAQ;AAC5B,YAAI,cAAc,MAAM;AACtB,qBAAW,SAASA,MAAK,SAAS,YAAY,WAAW,MAAM;AAAA,QACzE;AAEQ,mBAAW,WAAW;AAAA,UACpB,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,QACjB;AAED,YAAI,QAAQ,QAAQ,MAAM;AACxB,qBAAW,OAAO,QAAQ;AAAA,QACpC;AAAA,MACA;AAEM,gBAAU,WAAW,UAAU;AAAA,IACrC,CAAK;AACD,uBAAmB,QAAQ,QAAQ,SAAU,YAAY;AACvD,UAAI,iBAAiB;AACrB,UAAI,eAAe,MAAM;AACvB,yBAAiBA,MAAK,SAAS,YAAY,UAAU;AAAA,MAC7D;AAEM,UAAI,CAAC,UAAU,SAAS,IAAI,cAAc,GAAG;AAC3C,kBAAU,SAAS,IAAI,cAAc;AAAA,MAC7C;AAEM,UAAI,UAAU,mBAAmB,iBAAiB,UAAU;AAC5D,UAAI,WAAW,MAAM;AACnB,kBAAU,iBAAiB,YAAY,OAAO;AAAA,MACtD;AAAA,IACA,CAAK;AACD,WAAO;AAAA,EACR;AAYH,qBAAmB,UAAU,aAC3B,SAAS,8BAA8B,OAAO;AAC5C,QAAIymJ,aAAYzmJ,MAAK,OAAO,OAAO,WAAW;AAC9C,QAAI,WAAWA,MAAK,OAAO,OAAO,YAAY,IAAI;AAClD,QAAIkC,UAASlC,MAAK,OAAO,OAAO,UAAU,IAAI;AAC9C,QAAI,OAAOA,MAAK,OAAO,OAAO,QAAQ,IAAI;AAE1C,QAAI,CAAC,KAAK,iBAAiB;AACzB,WAAK,iBAAiBymJ,YAAW,UAAUvkJ,SAAQ,IAAI;AAAA,IAC7D;AAEI,QAAIA,WAAU,MAAM;AAClB,MAAAA,UAAS,OAAOA,OAAM;AACtB,UAAI,CAAC,KAAK,SAAS,IAAIA,OAAM,GAAG;AAC9B,aAAK,SAAS,IAAIA,OAAM;AAAA,MAChC;AAAA,IACA;AAEI,QAAI,QAAQ,MAAM;AAChB,aAAO,OAAO,IAAI;AAClB,UAAI,CAAC,KAAK,OAAO,IAAI,IAAI,GAAG;AAC1B,aAAK,OAAO,IAAI,IAAI;AAAA,MAC5B;AAAA,IACA;AAEI,SAAK,UAAU,IAAI;AAAA,MACjB,eAAeukJ,WAAU;AAAA,MACzB,iBAAiBA,WAAU;AAAA,MAC3B,cAAc,YAAY,QAAQ,SAAS;AAAA,MAC3C,gBAAgB,YAAY,QAAQ,SAAS;AAAA,MAC7C,QAAQvkJ;AAAA,MACR;AAAA,IACN,CAAK;AAAA,EACF;AAKH,qBAAmB,UAAU,mBAC3B,SAAS,oCAAoC,aAAa,gBAAgB;AACxE,QAAIA,UAAS;AACb,QAAI,KAAK,eAAe,MAAM;AAC5B,MAAAA,UAASlC,MAAK,SAAS,KAAK,aAAakC,OAAM;AAAA,IACrD;AAEI,QAAI,kBAAkB,MAAM;AAG1B,UAAI,CAAC,KAAK,kBAAkB;AAC1B,aAAK,mBAAmB,uBAAO,OAAO,IAAI;AAAA,MAClD;AACM,WAAK,iBAAiBlC,MAAK,YAAYkC,OAAM,CAAC,IAAI;AAAA,IACxD,WAAe,KAAK,kBAAkB;AAGhC,aAAO,KAAK,iBAAiBlC,MAAK,YAAYkC,OAAM,CAAC;AACrD,UAAI,OAAO,KAAK,KAAK,gBAAgB,EAAE,WAAW,GAAG;AACnD,aAAK,mBAAmB;AAAA,MAChC;AAAA,IACA;AAAA,EACG;AAkBH,qBAAmB,UAAU,iBAC3B,SAAS,kCAAkC,oBAAoB,aAAa,gBAAgB;AAC1F,QAAI,aAAa;AAEjB,QAAI,eAAe,MAAM;AACvB,UAAI,mBAAmB,QAAQ,MAAM;AACnC,cAAM,IAAI;AAAA,UACR;AAAA,QAED;AAAA,MACT;AACM,mBAAa,mBAAmB;AAAA,IACtC;AACI,QAAI,aAAa,KAAK;AAEtB,QAAI,cAAc,MAAM;AACtB,mBAAalC,MAAK,SAAS,YAAY,UAAU;AAAA,IACvD;AAGI,QAAI,aAAa,IAAI,SAAU;AAC/B,QAAI,WAAW,IAAI,SAAU;AAG7B,SAAK,UAAU,gBAAgB,SAAU,SAAS;AAChD,UAAI,QAAQ,WAAW,cAAc,QAAQ,gBAAgB,MAAM;AAEjE,YAAI,WAAW,mBAAmB,oBAAoB;AAAA,UACpD,MAAM,QAAQ;AAAA,UACd,QAAQ,QAAQ;AAAA,QAC1B,CAAS;AACD,YAAI,SAAS,UAAU,MAAM;AAE3B,kBAAQ,SAAS,SAAS;AAC1B,cAAI,kBAAkB,MAAM;AAC1B,oBAAQ,SAASA,MAAK,KAAK,gBAAgB,QAAQ,MAAM;AAAA,UACrE;AACU,cAAI,cAAc,MAAM;AACtB,oBAAQ,SAASA,MAAK,SAAS,YAAY,QAAQ,MAAM;AAAA,UACrE;AACU,kBAAQ,eAAe,SAAS;AAChC,kBAAQ,iBAAiB,SAAS;AAClC,cAAI,SAAS,QAAQ,MAAM;AACzB,oBAAQ,OAAO,SAAS;AAAA,UACpC;AAAA,QACA;AAAA,MACA;AAEM,UAAIkC,UAAS,QAAQ;AACrB,UAAIA,WAAU,QAAQ,CAAC,WAAW,IAAIA,OAAM,GAAG;AAC7C,mBAAW,IAAIA,OAAM;AAAA,MAC7B;AAEM,UAAI,OAAO,QAAQ;AACnB,UAAI,QAAQ,QAAQ,CAAC,SAAS,IAAI,IAAI,GAAG;AACvC,iBAAS,IAAI,IAAI;AAAA,MACzB;AAAA,IAEK,GAAE,IAAI;AACP,SAAK,WAAW;AAChB,SAAK,SAAS;AAGd,uBAAmB,QAAQ,QAAQ,SAAU2jO,aAAY;AACvD,UAAI,UAAU,mBAAmB,iBAAiBA,WAAU;AAC5D,UAAI,WAAW,MAAM;AACnB,YAAI,kBAAkB,MAAM;AAC1B,UAAAA,cAAa7lO,MAAK,KAAK,gBAAgB6lO,WAAU;AAAA,QAC3D;AACQ,YAAI,cAAc,MAAM;AACtB,UAAAA,cAAa7lO,MAAK,SAAS,YAAY6lO,WAAU;AAAA,QAC3D;AACQ,aAAK,iBAAiBA,aAAY,OAAO;AAAA,MACjD;AAAA,IACK,GAAE,IAAI;AAAA,EACR;AAaH,qBAAmB,UAAU,mBAC3B,SAAS,mCAAmC,YAAY,WAAW,SACvB,OAAO;AAKjD,QAAI,aAAa,OAAO,UAAU,SAAS,YAAY,OAAO,UAAU,WAAW,UAAU;AACzF,YAAM,IAAI;AAAA,QACN;AAAA,MAGH;AAAA,IACT;AAEI,QAAI,cAAc,UAAU,cAAc,YAAY,cAC/C,WAAW,OAAO,KAAK,WAAW,UAAU,KAC5C,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO;AAEvC;AAAA,IACN,WACa,cAAc,UAAU,cAAc,YAAY,cAC/C,aAAa,UAAU,aAAa,YAAY,aAChD,WAAW,OAAO,KAAK,WAAW,UAAU,KAC5C,UAAU,OAAO,KAAK,UAAU,UAAU,KAC1C,SAAS;AAEnB;AAAA,IACN,OACS;AACH,YAAM,IAAI,MAAM,sBAAsB,KAAK,UAAU;AAAA,QACnD,WAAW;AAAA,QACX,QAAQ;AAAA,QACR,UAAU;AAAA,QACV,MAAM;AAAA,MACd,CAAO,CAAC;AAAA,IACR;AAAA,EACG;AAMH,qBAAmB,UAAU,qBAC3B,SAAS,uCAAuC;AAC9C,QAAI,0BAA0B;AAC9B,QAAI,wBAAwB;AAC5B,QAAI,yBAAyB;AAC7B,QAAI,uBAAuB;AAC3B,QAAI,eAAe;AACnB,QAAI,iBAAiB;AACrB,QAAI,SAAS;AACb,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,QAAI;AAEJ,QAAI,WAAW,KAAK,UAAU,QAAS;AACvC,aAAS,IAAI,GAAG,MAAM,SAAS,QAAQ,IAAI,KAAK,KAAK;AACnD,gBAAU,SAAS,CAAC;AACpB,aAAO;AAEP,UAAI,QAAQ,kBAAkB,uBAAuB;AACnD,kCAA0B;AAC1B,eAAO,QAAQ,kBAAkB,uBAAuB;AACtD,kBAAQ;AACR;AAAA,QACV;AAAA,MACA,OACW;AACH,YAAI,IAAI,GAAG;AACT,cAAI,CAAC7lO,MAAK,oCAAoC,SAAS,SAAS,IAAI,CAAC,CAAC,GAAG;AACvE;AAAA,UACZ;AACU,kBAAQ;AAAA,QAClB;AAAA,MACA;AAEM,cAAQ,UAAU,OAAO,QAAQ,kBACJ,uBAAuB;AACpD,gCAA0B,QAAQ;AAElC,UAAI,QAAQ,UAAU,MAAM;AAC1B,oBAAY,KAAK,SAAS,QAAQ,QAAQ,MAAM;AAChD,gBAAQ,UAAU,OAAO,YAAY,cAAc;AACnD,yBAAiB;AAGjB,gBAAQ,UAAU,OAAO,QAAQ,eAAe,IACnB,oBAAoB;AACjD,+BAAuB,QAAQ,eAAe;AAE9C,gBAAQ,UAAU,OAAO,QAAQ,iBACJ,sBAAsB;AACnD,iCAAyB,QAAQ;AAEjC,YAAI,QAAQ,QAAQ,MAAM;AACxB,oBAAU,KAAK,OAAO,QAAQ,QAAQ,IAAI;AAC1C,kBAAQ,UAAU,OAAO,UAAU,YAAY;AAC/C,yBAAe;AAAA,QACzB;AAAA,MACA;AAEM,gBAAU;AAAA,IAChB;AAEI,WAAO;AAAA,EACR;AAEH,qBAAmB,UAAU,0BAC3B,SAAS,0CAA0C,UAAU,aAAa;AACxE,WAAO,SAAS,IAAI,SAAUkC,SAAQ;AACpC,UAAI,CAAC,KAAK,kBAAkB;AAC1B,eAAO;AAAA,MACf;AACM,UAAI,eAAe,MAAM;AACvB,QAAAA,UAASlC,MAAK,SAAS,aAAakC,OAAM;AAAA,MAClD;AACM,UAAIxB,OAAMV,MAAK,YAAYkC,OAAM;AACjC,aAAO,OAAO,UAAU,eAAe,KAAK,KAAK,kBAAkBxB,IAAG,IAClE,KAAK,iBAAiBA,IAAG,IACzB;AAAA,IACL,GAAE,IAAI;AAAA,EACR;AAKH,qBAAmB,UAAU,SAC3B,SAAS,4BAA4B;AACnC,QAAI,MAAM;AAAA,MACR,SAAS,KAAK;AAAA,MACd,SAAS,KAAK,SAAS,QAAS;AAAA,MAChC,OAAO,KAAK,OAAO,QAAS;AAAA,MAC5B,UAAU,KAAK,mBAAkB;AAAA,IAClC;AACD,QAAI,KAAK,SAAS,MAAM;AACtB,UAAI,OAAO,KAAK;AAAA,IACtB;AACI,QAAI,KAAK,eAAe,MAAM;AAC5B,UAAI,aAAa,KAAK;AAAA,IAC5B;AACI,QAAI,KAAK,kBAAkB;AACzB,UAAI,iBAAiB,KAAK,wBAAwB,IAAI,SAAS,IAAI,UAAU;AAAA,IACnF;AAEI,WAAO;AAAA,EACR;AAKH,qBAAmB,UAAU,WAC3B,SAAS,8BAA8B;AACrC,WAAO,KAAK,UAAU,KAAK,OAAM,CAAE;AAAA,EACpC;AAEH,qBAAA,qBAA6B;;;;;;;;;;ACja7B,YAAA,uBAA+B;AAC/B,YAAA,oBAA4B;AAe5B,aAAS,gBAAgB,MAAM,OAAO,SAAS,WAAW,UAAU,OAAO;AAUzE,UAAI,MAAM,KAAK,OAAO,QAAQ,QAAQ,CAAC,IAAI;AAC3C,UAAI,MAAM,SAAS,SAAS,UAAU,GAAG,GAAG,IAAI;AAChD,UAAI,QAAQ,GAAG;AAEb,eAAO;AAAA,MACX,WACW,MAAM,GAAG;AAEhB,YAAI,QAAQ,MAAM,GAAG;AAEnB,iBAAO,gBAAgB,KAAK,OAAO,SAAS,WAAW,UAAU,KAAK;AAAA,QAC5E;AAII,YAAI,SAAS,QAAQ,mBAAmB;AACtC,iBAAO,QAAQ,UAAU,SAAS,QAAQ;AAAA,QAChD,OAAW;AACL,iBAAO;AAAA,QACb;AAAA,MACA,OACO;AAEH,YAAI,MAAM,OAAO,GAAG;AAElB,iBAAO,gBAAgB,MAAM,KAAK,SAAS,WAAW,UAAU,KAAK;AAAA,QAC3E;AAGI,YAAI,SAAS,QAAQ,mBAAmB;AACtC,iBAAO;AAAA,QACb,OAAW;AACL,iBAAO,OAAO,IAAI,KAAK;AAAA,QAC7B;AAAA,MACA;AAAA,IACA;AAoBA,YAAiB,SAAA,SAAS,OAAO,SAAS,WAAW,UAAU,OAAO;AACpE,UAAI,UAAU,WAAW,GAAG;AAC1B,eAAO;AAAA,MACX;AAEE,UAAIH,SAAQ;AAAA,QAAgB;AAAA,QAAI,UAAU;AAAA,QAAQ;AAAA,QAAS;AAAA,QAC/B;AAAA,QAAU,SAAS,QAAQ;AAAA,MAAoB;AAC3E,UAAIA,SAAQ,GAAG;AACb,eAAO;AAAA,MACX;AAKE,aAAOA,SAAQ,KAAK,GAAG;AACrB,YAAI,SAAS,UAAUA,MAAK,GAAG,UAAUA,SAAQ,CAAC,GAAG,IAAI,MAAM,GAAG;AAChE;AAAA,QACN;AACI,UAAEA;AAAA,MACN;AAEE,aAAOA;AAAA;;;;;;;;;AClFT,WAAS,KAAK,KAAK,GAAG,GAAG;AACvB,QAAI,OAAO,IAAI,CAAC;AAChB,QAAI,CAAC,IAAI,IAAI,CAAC;AACd,QAAI,CAAC,IAAI;AAAA,EACX;AAUA,WAAS,iBAAiB,KAAK,MAAM;AACnC,WAAO,KAAK,MAAM,MAAO,KAAK,YAAY,OAAO,IAAK;AAAA,EACxD;AAcA,WAAS,YAAY,KAAK,YAAY,GAAG,GAAG;AAK1C,QAAI,IAAI,GAAG;AAYT,UAAI,aAAa,iBAAiB,GAAG,CAAC;AACtC,UAAI,IAAI,IAAI;AAEZ,WAAK,KAAK,YAAY,CAAC;AACvB,UAAI,QAAQ,IAAI,CAAC;AAQjB,eAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,YAAI,WAAW,IAAI,CAAC,GAAG,KAAK,KAAK,GAAG;AAClC,eAAK;AACL,eAAK,KAAK,GAAG,CAAC;AAAA,QACtB;AAAA,MACA;AAEI,WAAK,KAAK,IAAI,GAAG,CAAC;AAClB,UAAI,IAAI,IAAI;AAIZ,kBAAY,KAAK,YAAY,GAAG,IAAI,CAAC;AACrC,kBAAY,KAAK,YAAY,IAAI,GAAG,CAAC;AAAA,IACzC;AAAA,EACA;AAUA,YAAA,YAAoB,SAAU,KAAK,YAAY;AAC7C,gBAAY,KAAK,YAAY,GAAG,IAAI,SAAS,CAAC;AAAA,EAC/C;;;;;;;AC1GD,MAAIP,QAAOS,YAAiB;AAC5B,MAAI8lJ,gBAAenlJ,oBAA0B;AAC7C,MAAI,WAAWW,gBAAsB,EAAC;AACtC,MAAI,YAAYE,iBAAuB;AACvC,MAAI6jO,aAAY1iO,iBAAuB,EAAC;AAExC,WAAS,kBAAkB,YAAY,eAAe;AACpD,QAAIiiM,aAAY;AAChB,QAAI,OAAO,eAAe,UAAU;AAClC,MAAAA,aAAYrlM,MAAK,oBAAoB,UAAU;AAAA,IACnD;AAEE,WAAOqlM,WAAU,YAAY,OACzB,IAAI,yBAAyBA,YAAW,aAAa,IACrD,IAAI,uBAAuBA,YAAW,aAAa;AAAA,EACzD;AAEA,oBAAkB,gBAAgB,SAAS,YAAY,eAAe;AACpE,WAAO,uBAAuB,cAAc,YAAY,aAAa;AAAA,EACvE;AAKA,oBAAkB,UAAU,WAAW;AAgCvC,oBAAkB,UAAU,sBAAsB;AAClD,SAAO,eAAe,kBAAkB,WAAW,sBAAsB;AAAA,IACvE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,UAAI,CAAC,KAAK,qBAAqB;AAC7B,aAAK,eAAe,KAAK,WAAW,KAAK,UAAU;AAAA,MACzD;AAEI,aAAO,KAAK;AAAA,IAChB;AAAA,EACA,CAAC;AAED,oBAAkB,UAAU,qBAAqB;AACjD,SAAO,eAAe,kBAAkB,WAAW,qBAAqB;AAAA,IACtE,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,UAAI,CAAC,KAAK,oBAAoB;AAC5B,aAAK,eAAe,KAAK,WAAW,KAAK,UAAU;AAAA,MACzD;AAEI,aAAO,KAAK;AAAA,IAChB;AAAA,EACA,CAAC;AAED,oBAAkB,UAAU,0BAC1B,SAAS,yCAAyC,MAAM9kM,QAAO;AAC7D,QAAIK,KAAI,KAAK,OAAOL,MAAK;AACzB,WAAOK,OAAM,OAAOA,OAAM;AAAA,EAC3B;AAOH,oBAAkB,UAAU,iBAC1B,SAAS,gCAAgC,MAAM,aAAa;AAC1D,UAAM,IAAI,MAAM,0CAA0C;AAAA,EAC3D;AAEH,oBAAkB,kBAAkB;AACpC,oBAAkB,iBAAiB;AAEnC,oBAAkB,uBAAuB;AACzC,oBAAkB,oBAAoB;AAkBtC,oBAAkB,UAAU,cAC1B,SAAS,8BAA8B,WAAW,UAAU,QAAQ;AAClE,QAAIqY,WAAU,YAAY;AAC1B,QAAI,QAAQ,UAAU,kBAAkB;AAExC,QAAI;AACJ,YAAQ,OAAK;AAAA,MACb,KAAK,kBAAkB;AACrB,mBAAW,KAAK;AAChB;AAAA,MACF,KAAK,kBAAkB;AACrB,mBAAW,KAAK;AAChB;AAAA,MACF;AACE,cAAM,IAAI,MAAM,6BAA6B;AAAA,IACnD;AAEI,QAAI,aAAa,KAAK;AACtB,aAAS,IAAI,SAAU,SAAS;AAC9B,UAAI/W,UAAS,QAAQ,WAAW,OAAO,OAAO,KAAK,SAAS,GAAG,QAAQ,MAAM;AAC7E,MAAAA,UAASlC,MAAK,iBAAiB,YAAYkC,SAAQ,KAAK,aAAa;AACrE,aAAO;AAAA,QACL,QAAQA;AAAA,QACR,eAAe,QAAQ;AAAA,QACvB,iBAAiB,QAAQ;AAAA,QACzB,cAAc,QAAQ;AAAA,QACtB,gBAAgB,QAAQ;AAAA,QACxB,MAAM,QAAQ,SAAS,OAAO,OAAO,KAAK,OAAO,GAAG,QAAQ,IAAI;AAAA,MACjE;AAAA,IACF,GAAE,IAAI,EAAE,QAAQ,WAAW+W,QAAO;AAAA,EACpC;AAwBH,oBAAkB,UAAU,2BAC1B,SAAS,2CAA2C,OAAO;AACzD,QAAIpZ,QAAOG,MAAK,OAAO,OAAO,MAAM;AAMpC,QAAI,SAAS;AAAA,MACX,QAAQA,MAAK,OAAO,OAAO,QAAQ;AAAA,MACnC,cAAcH;AAAA,MACd,gBAAgBG,MAAK,OAAO,OAAO,UAAU,CAAC;AAAA,IAC/C;AAED,WAAO,SAAS,KAAK,iBAAiB,OAAO,MAAM;AACnD,QAAI,OAAO,SAAS,GAAG;AACrB,aAAO,CAAE;AAAA,IACf;AAEI,QAAI,WAAW,CAAE;AAEjB,QAAIO,SAAQ,KAAK;AAAA,MAAa;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAP,MAAK;AAAA,MACLumJ,cAAa;AAAA,IAAiB;AAC5D,QAAIhmJ,UAAS,GAAG;AACd,UAAI,UAAU,KAAK,kBAAkBA,MAAK;AAE1C,UAAI,MAAM,WAAW,QAAW;AAC9B,YAAI,eAAe,QAAQ;AAM3B,eAAO,WAAW,QAAQ,iBAAiB,cAAc;AACvD,mBAAS,KAAK;AAAA,YACZ,MAAMP,MAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,YAChD,QAAQA,MAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,YACpD,YAAYA,MAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,UACxE,CAAW;AAED,oBAAU,KAAK,kBAAkB,EAAEO,MAAK;AAAA,QAClD;AAAA,MACA,OAAa;AACL,YAAI,iBAAiB,QAAQ;AAM7B,eAAO,WACA,QAAQ,iBAAiBV,SACzB,QAAQ,kBAAkB,gBAAgB;AAC/C,mBAAS,KAAK;AAAA,YACZ,MAAMG,MAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,YAChD,QAAQA,MAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,YACpD,YAAYA,MAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,UACxE,CAAW;AAED,oBAAU,KAAK,kBAAkB,EAAEO,MAAK;AAAA,QAClD;AAAA,MACA;AAAA,IACA;AAEI,WAAO;AAAA,EACR;AAEH,oBAAA,oBAA4B;AAoC5B,WAAS,uBAAuB,YAAY,eAAe;AACzD,QAAI8kM,aAAY;AAChB,QAAI,OAAO,eAAe,UAAU;AAClC,MAAAA,aAAYrlM,MAAK,oBAAoB,UAAU;AAAA,IACnD;AAEE,QAAIwZ,WAAUxZ,MAAK,OAAOqlM,YAAW,SAAS;AAC9C,QAAI,UAAUrlM,MAAK,OAAOqlM,YAAW,SAAS;AAG9C,QAAI,QAAQrlM,MAAK,OAAOqlM,YAAW,SAAS,CAAA,CAAE;AAC9C,QAAI,aAAarlM,MAAK,OAAOqlM,YAAW,cAAc,IAAI;AAC1D,QAAI,iBAAiBrlM,MAAK,OAAOqlM,YAAW,kBAAkB,IAAI;AAClE,QAAI,WAAWrlM,MAAK,OAAOqlM,YAAW,UAAU;AAChD,QAAIvlM,QAAOE,MAAK,OAAOqlM,YAAW,QAAQ,IAAI;AAI9C,QAAI7rL,YAAW,KAAK,UAAU;AAC5B,YAAM,IAAI,MAAM,0BAA0BA,QAAO;AAAA,IACrD;AAEE,QAAI,YAAY;AACd,mBAAaxZ,MAAK,UAAU,UAAU;AAAA,IAC1C;AAEE,cAAU,QACP,IAAI,MAAM,EAIV,IAAIA,MAAK,SAAS,EAKlB,IAAI,SAAUkC,SAAQ;AACrB,aAAO,cAAclC,MAAK,WAAW,UAAU,KAAKA,MAAK,WAAWkC,OAAM,IACtElC,MAAK,SAAS,YAAYkC,OAAM,IAChCA;AAAA,IACV,CAAK;AAMH,SAAK,SAAS,SAAS,UAAU,MAAM,IAAI,MAAM,GAAG,IAAI;AACxD,SAAK,WAAW,SAAS,UAAU,SAAS,IAAI;AAEhD,SAAK,mBAAmB,KAAK,SAAS,UAAU,IAAI,SAAU,GAAG;AAC/D,aAAOlC,MAAK,iBAAiB,YAAY,GAAG,aAAa;AAAA,IAC7D,CAAG;AAED,SAAK,aAAa;AAClB,SAAK,iBAAiB;AACtB,SAAK,YAAY;AACjB,SAAK,gBAAgB;AACrB,SAAK,OAAOF;AAAA,EACd;AAEA,yBAAuB,YAAY,OAAO,OAAO,kBAAkB,SAAS;AAC5E,yBAAuB,UAAU,WAAW;AAM5C,yBAAuB,UAAU,mBAAmB,SAAS,SAAS;AACpE,QAAI,iBAAiB;AACrB,QAAI,KAAK,cAAc,MAAM;AAC3B,uBAAiBE,MAAK,SAAS,KAAK,YAAY,cAAc;AAAA,IAClE;AAEE,QAAI,KAAK,SAAS,IAAI,cAAc,GAAG;AACrC,aAAO,KAAK,SAAS,QAAQ,cAAc;AAAA,IAC/C;AAIE,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,KAAK,iBAAiB,QAAQ,EAAE,GAAG;AACjD,UAAI,KAAK,iBAAiB,CAAC,KAAK,SAAS;AACvC,eAAO;AAAA,MACb;AAAA,IACA;AAEE,WAAO;AAAA,EACR;AAWD,yBAAuB,gBACrB,SAAS,gCAAgC,YAAY,eAAe;AAClE,QAAI,MAAM,OAAO,OAAO,uBAAuB,SAAS;AAExD,QAAI,QAAQ,IAAI,SAAS,SAAS,UAAU,WAAW,OAAO,QAAS,GAAE,IAAI;AAC7E,QAAI,UAAU,IAAI,WAAW,SAAS,UAAU,WAAW,SAAS,QAAS,GAAE,IAAI;AACnF,QAAI,aAAa,WAAW;AAC5B,QAAI,iBAAiB,WAAW;AAAA,MAAwB,IAAI,SAAS,QAAS;AAAA,MACtB,IAAI;AAAA,IAAU;AACtE,QAAI,OAAO,WAAW;AACtB,QAAI,gBAAgB;AACpB,QAAI,mBAAmB,IAAI,SAAS,UAAU,IAAI,SAAU,GAAG;AAC7D,aAAOA,MAAK,iBAAiB,IAAI,YAAY,GAAG,aAAa;AAAA,IACnE,CAAK;AAOD,QAAI,oBAAoB,WAAW,UAAU,QAAO,EAAG,MAAO;AAC9D,QAAI,wBAAwB,IAAI,sBAAsB,CAAE;AACxD,QAAI,uBAAuB,IAAI,qBAAqB,CAAE;AAEtD,aAAS,IAAI,GAAG,SAAS,kBAAkB,QAAQ,IAAI,QAAQ,KAAK;AAClE,UAAI,aAAa,kBAAkB,CAAC;AACpC,UAAI,cAAc,IAAI;AACtB,kBAAY,gBAAgB,WAAW;AACvC,kBAAY,kBAAkB,WAAW;AAEzC,UAAI,WAAW,QAAQ;AACrB,oBAAY,SAAS,QAAQ,QAAQ,WAAW,MAAM;AACtD,oBAAY,eAAe,WAAW;AACtC,oBAAY,iBAAiB,WAAW;AAExC,YAAI,WAAW,MAAM;AACnB,sBAAY,OAAO,MAAM,QAAQ,WAAW,IAAI;AAAA,QAC1D;AAEQ,6BAAqB,KAAK,WAAW;AAAA,MAC7C;AAEM,4BAAsB,KAAK,WAAW;AAAA,IAC5C;AAEI,IAAA8lO,WAAU,IAAI,oBAAoB9lO,MAAK,0BAA0B;AAEjE,WAAO;AAAA,EACR;AAKH,yBAAuB,UAAU,WAAW;AAK5C,SAAO,eAAe,uBAAuB,WAAW,WAAW;AAAA,IACjE,KAAK,WAAY;AACf,aAAO,KAAK,iBAAiB,MAAO;AAAA,IACxC;AAAA,EACA,CAAC;AAKD,WAAS,UAAU;AACjB,SAAK,gBAAgB;AACrB,SAAK,kBAAkB;AACvB,SAAK,SAAS;AACd,SAAK,eAAe;AACpB,SAAK,iBAAiB;AACtB,SAAK,OAAO;AAAA,EACd;AAOA,yBAAuB,UAAU,iBAC/B,SAAS,gCAAgC,MAAM,aAAa;AAC1D,QAAI,gBAAgB;AACpB,QAAI,0BAA0B;AAC9B,QAAI,uBAAuB;AAC3B,QAAI,yBAAyB;AAC7B,QAAI,iBAAiB;AACrB,QAAI,eAAe;AACnB,QAAI,SAAS,KAAK;AAClB,QAAIO,SAAQ;AACZ,QAAI,iBAAiB,CAAE;AACvB,QAAI,OAAO,CAAE;AACb,QAAI,mBAAmB,CAAE;AACzB,QAAI,oBAAoB,CAAE;AAC1B,QAAI,SAAS,KAAK,SAAS,KAAKO;AAEhC,WAAOP,SAAQ,QAAQ;AACrB,UAAI,KAAK,OAAOA,MAAK,MAAM,KAAK;AAC9B;AACA,QAAAA;AACA,kCAA0B;AAAA,MAClC,WACe,KAAK,OAAOA,MAAK,MAAM,KAAK;AACnC,QAAAA;AAAA,MACR,OACW;AACH,kBAAU,IAAI,QAAS;AACvB,gBAAQ,gBAAgB;AAOxB,aAAK,MAAMA,QAAO,MAAM,QAAQ,OAAO;AACrC,cAAI,KAAK,wBAAwB,MAAM,GAAG,GAAG;AAC3C;AAAA,UACZ;AAAA,QACA;AACQ,cAAM,KAAK,MAAMA,QAAO,GAAG;AAE3B,kBAAU,eAAe,GAAG;AAC5B,YAAI,SAAS;AACX,UAAAA,UAAS,IAAI;AAAA,QACvB,OAAe;AACL,oBAAU,CAAE;AACZ,iBAAOA,SAAQ,KAAK;AAClB,sBAAU,OAAO,MAAMA,QAAO,IAAI;AAClC,YAAAO,SAAQ,KAAK;AACb,YAAAP,SAAQ,KAAK;AACb,oBAAQ,KAAKO,MAAK;AAAA,UAC9B;AAEU,cAAI,QAAQ,WAAW,GAAG;AACxB,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UACpE;AAEU,cAAI,QAAQ,WAAW,GAAG;AACxB,kBAAM,IAAI,MAAM,wCAAwC;AAAA,UACpE;AAEU,yBAAe,GAAG,IAAI;AAAA,QAChC;AAGQ,gBAAQ,kBAAkB,0BAA0B,QAAQ,CAAC;AAC7D,kCAA0B,QAAQ;AAElC,YAAI,QAAQ,SAAS,GAAG;AAEtB,kBAAQ,SAAS,iBAAiB,QAAQ,CAAC;AAC3C,4BAAkB,QAAQ,CAAC;AAG3B,kBAAQ,eAAe,uBAAuB,QAAQ,CAAC;AACvD,iCAAuB,QAAQ;AAE/B,kBAAQ,gBAAgB;AAGxB,kBAAQ,iBAAiB,yBAAyB,QAAQ,CAAC;AAC3D,mCAAyB,QAAQ;AAEjC,cAAI,QAAQ,SAAS,GAAG;AAEtB,oBAAQ,OAAO,eAAe,QAAQ,CAAC;AACvC,4BAAgB,QAAQ,CAAC;AAAA,UACrC;AAAA,QACA;AAEQ,0BAAkB,KAAK,OAAO;AAC9B,YAAI,OAAO,QAAQ,iBAAiB,UAAU;AAC5C,2BAAiB,KAAK,OAAO;AAAA,QACvC;AAAA,MACA;AAAA,IACA;AAEI,IAAAglO,WAAU,mBAAmB9lO,MAAK,mCAAmC;AACrE,SAAK,sBAAsB;AAE3B,IAAA8lO,WAAU,kBAAkB9lO,MAAK,0BAA0B;AAC3D,SAAK,qBAAqB;AAAA,EAC3B;AAMH,yBAAuB,UAAU,eAC/B,SAAS,8BAA8B,SAAS,WAAW,WACpB,aAAa,aAAa,OAAO;AAMtE,QAAI,QAAQ,SAAS,KAAK,GAAG;AAC3B,YAAM,IAAI,UAAU,kDACE,QAAQ,SAAS,CAAC;AAAA,IAC9C;AACI,QAAI,QAAQ,WAAW,IAAI,GAAG;AAC5B,YAAM,IAAI,UAAU,oDACE,QAAQ,WAAW,CAAC;AAAA,IAChD;AAEI,WAAOumJ,cAAa,OAAO,SAAS,WAAW,aAAa,KAAK;AAAA,EAClE;AAMH,yBAAuB,UAAU,qBAC/B,SAAS,uCAAuC;AAC9C,aAAShmJ,SAAQ,GAAGA,SAAQ,KAAK,mBAAmB,QAAQ,EAAEA,QAAO;AACnE,UAAI,UAAU,KAAK,mBAAmBA,MAAK;AAM3C,UAAIA,SAAQ,IAAI,KAAK,mBAAmB,QAAQ;AAC9C,YAAI,cAAc,KAAK,mBAAmBA,SAAQ,CAAC;AAEnD,YAAI,QAAQ,kBAAkB,YAAY,eAAe;AACvD,kBAAQ,sBAAsB,YAAY,kBAAkB;AAC5D;AAAA,QACV;AAAA,MACA;AAGM,cAAQ,sBAAsB;AAAA,IACpC;AAAA,EACG;AA0BH,yBAAuB,UAAU,sBAC/B,SAAS,sCAAsC,OAAO;AACpD,QAAI,SAAS;AAAA,MACX,eAAeP,MAAK,OAAO,OAAO,MAAM;AAAA,MACxC,iBAAiBA,MAAK,OAAO,OAAO,QAAQ;AAAA,IAC7C;AAED,QAAIO,SAAQ,KAAK;AAAA,MACf;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAP,MAAK;AAAA,MACLA,MAAK,OAAO,OAAO,QAAQ,kBAAkB,oBAAoB;AAAA,IAClE;AAED,QAAIO,UAAS,GAAG;AACd,UAAI,UAAU,KAAK,mBAAmBA,MAAK;AAE3C,UAAI,QAAQ,kBAAkB,OAAO,eAAe;AAClD,YAAI2B,UAASlC,MAAK,OAAO,SAAS,UAAU,IAAI;AAChD,YAAIkC,YAAW,MAAM;AACnB,UAAAA,UAAS,KAAK,SAAS,GAAGA,OAAM;AAChC,UAAAA,UAASlC,MAAK,iBAAiB,KAAK,YAAYkC,SAAQ,KAAK,aAAa;AAAA,QACpF;AACQ,YAAI,OAAOlC,MAAK,OAAO,SAAS,QAAQ,IAAI;AAC5C,YAAI,SAAS,MAAM;AACjB,iBAAO,KAAK,OAAO,GAAG,IAAI;AAAA,QACpC;AACQ,eAAO;AAAA,UACL,QAAQkC;AAAA,UACR,MAAMlC,MAAK,OAAO,SAAS,gBAAgB,IAAI;AAAA,UAC/C,QAAQA,MAAK,OAAO,SAAS,kBAAkB,IAAI;AAAA,UACnD;AAAA,QACD;AAAA,MACT;AAAA,IACA;AAEI,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,IACP;AAAA,EACF;AAMH,yBAAuB,UAAU,0BAC/B,SAAS,iDAAiD;AACxD,QAAI,CAAC,KAAK,gBAAgB;AACxB,aAAO;AAAA,IACb;AACI,WAAO,KAAK,eAAe,UAAU,KAAK,SAAS,KAAM,KACvD,CAAC,KAAK,eAAe,KAAK,SAAU,IAAI;AAAE,aAAO,MAAM;AAAA,KAAO;AAAA,EACjE;AAOH,yBAAuB,UAAU,mBAC/B,SAAS,mCAAmC,SAAS,eAAe;AAClE,QAAI,CAAC,KAAK,gBAAgB;AACxB,aAAO;AAAA,IACb;AAEI,QAAIO,SAAQ,KAAK,iBAAiB,OAAO;AACzC,QAAIA,UAAS,GAAG;AACd,aAAO,KAAK,eAAeA,MAAK;AAAA,IACtC;AAEI,QAAI,iBAAiB;AACrB,QAAI,KAAK,cAAc,MAAM;AAC3B,uBAAiBP,MAAK,SAAS,KAAK,YAAY,cAAc;AAAA,IACpE;AAEI,QAAI6Y;AACJ,QAAI,KAAK,cAAc,SACfA,OAAM7Y,MAAK,SAAS,KAAK,UAAU,IAAI;AAK7C,UAAI,iBAAiB,eAAe,QAAQ,cAAc,EAAE;AAC5D,UAAI6Y,KAAI,UAAU,UACX,KAAK,SAAS,IAAI,cAAc,GAAG;AACxC,eAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,cAAc,CAAC;AAAA,MACxE;AAEM,WAAK,CAACA,KAAI,QAAQA,KAAI,QAAQ,QACvB,KAAK,SAAS,IAAI,MAAM,cAAc,GAAG;AAC9C,eAAO,KAAK,eAAe,KAAK,SAAS,QAAQ,MAAM,cAAc,CAAC;AAAA,MAC9E;AAAA,IACA;AAMI,QAAI,eAAe;AACjB,aAAO;AAAA,IACb,OACS;AACH,YAAM,IAAI,MAAM,MAAM,iBAAiB,4BAA4B;AAAA,IACzE;AAAA,EACG;AAyBH,yBAAuB,UAAU,uBAC/B,SAAS,uCAAuC,OAAO;AACrD,QAAI3W,UAASlC,MAAK,OAAO,OAAO,QAAQ;AACxC,IAAAkC,UAAS,KAAK,iBAAiBA,OAAM;AACrC,QAAIA,UAAS,GAAG;AACd,aAAO;AAAA,QACL,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,YAAY;AAAA,MACb;AAAA,IACP;AAEI,QAAI,SAAS;AAAA,MACX,QAAQA;AAAA,MACR,cAAclC,MAAK,OAAO,OAAO,MAAM;AAAA,MACvC,gBAAgBA,MAAK,OAAO,OAAO,QAAQ;AAAA,IAC5C;AAED,QAAIO,SAAQ,KAAK;AAAA,MACf;AAAA,MACA,KAAK;AAAA,MACL;AAAA,MACA;AAAA,MACAP,MAAK;AAAA,MACLA,MAAK,OAAO,OAAO,QAAQ,kBAAkB,oBAAoB;AAAA,IAClE;AAED,QAAIO,UAAS,GAAG;AACd,UAAI,UAAU,KAAK,kBAAkBA,MAAK;AAE1C,UAAI,QAAQ,WAAW,OAAO,QAAQ;AACpC,eAAO;AAAA,UACL,MAAMP,MAAK,OAAO,SAAS,iBAAiB,IAAI;AAAA,UAChD,QAAQA,MAAK,OAAO,SAAS,mBAAmB,IAAI;AAAA,UACpD,YAAYA,MAAK,OAAO,SAAS,uBAAuB,IAAI;AAAA,QAC7D;AAAA,MACT;AAAA,IACA;AAEI,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,YAAY;AAAA,IACb;AAAA,EACF;AAEH,oBAAA,yBAAiC;AAmDjC,WAAS,yBAAyB,YAAY,eAAe;AAC3D,QAAIqlM,aAAY;AAChB,QAAI,OAAO,eAAe,UAAU;AAClC,MAAAA,aAAYrlM,MAAK,oBAAoB,UAAU;AAAA,IACnD;AAEE,QAAIwZ,WAAUxZ,MAAK,OAAOqlM,YAAW,SAAS;AAC9C,QAAI,WAAWrlM,MAAK,OAAOqlM,YAAW,UAAU;AAEhD,QAAI7rL,YAAW,KAAK,UAAU;AAC5B,YAAM,IAAI,MAAM,0BAA0BA,QAAO;AAAA,IACrD;AAEE,SAAK,WAAW,IAAI,SAAU;AAC9B,SAAK,SAAS,IAAI,SAAU;AAE5B,QAAI,aAAa;AAAA,MACf,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACD,SAAK,YAAY,SAAS,IAAI,SAAU,GAAG;AACzC,UAAI,EAAE,KAAK;AAGT,cAAM,IAAI,MAAM,oDAAoD;AAAA,MAC1E;AACI,UAAI,SAASxZ,MAAK,OAAO,GAAG,QAAQ;AACpC,UAAI,aAAaA,MAAK,OAAO,QAAQ,MAAM;AAC3C,UAAI,eAAeA,MAAK,OAAO,QAAQ,QAAQ;AAE/C,UAAI,aAAa,WAAW,QACvB,eAAe,WAAW,QAAQ,eAAe,WAAW,QAAS;AACxE,cAAM,IAAI,MAAM,sDAAsD;AAAA,MAC5E;AACI,mBAAa;AAEb,aAAO;AAAA,QACL,iBAAiB;AAAA;AAAA;AAAA,UAGf,eAAe,aAAa;AAAA,UAC5B,iBAAiB,eAAe;AAAA,QACjC;AAAA,QACD,UAAU,IAAI,kBAAkBA,MAAK,OAAO,GAAG,KAAK,GAAG,aAAa;AAAA,MAC1E;AAAA,IACA,CAAG;AAAA,EACH;AAEA,2BAAyB,YAAY,OAAO,OAAO,kBAAkB,SAAS;AAC9E,2BAAyB,UAAU,cAAc;AAKjD,2BAAyB,UAAU,WAAW;AAK9C,SAAO,eAAe,yBAAyB,WAAW,WAAW;AAAA,IACnE,KAAK,WAAY;AACf,UAAI,UAAU,CAAE;AAChB,eAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,iBAAS,IAAI,GAAG,IAAI,KAAK,UAAU,CAAC,EAAE,SAAS,QAAQ,QAAQ,KAAK;AAClE,kBAAQ,KAAK,KAAK,UAAU,CAAC,EAAE,SAAS,QAAQ,CAAC,CAAC;AAAA,QAC1D;AAAA,MACA;AACI,aAAO;AAAA,IACX;AAAA,EACA,CAAC;AAqBD,2BAAyB,UAAU,sBACjC,SAAS,6CAA6C,OAAO;AAC3D,QAAI,SAAS;AAAA,MACX,eAAeA,MAAK,OAAO,OAAO,MAAM;AAAA,MACxC,iBAAiBA,MAAK,OAAO,OAAO,QAAQ;AAAA,IAC7C;AAID,QAAI,eAAeumJ,cAAa;AAAA,MAAO;AAAA,MAAQ,KAAK;AAAA,MAClD,SAASw/E,SAAQC,UAAS;AACxB,YAAI,MAAMD,QAAO,gBAAgBC,SAAQ,gBAAgB;AACzD,YAAI,KAAK;AACP,iBAAO;AAAA,QACjB;AAEQ,eAAQD,QAAO,kBACPC,SAAQ,gBAAgB;AAAA,MACxC;AAAA,IAAO;AACH,QAAI,UAAU,KAAK,UAAU,YAAY;AAEzC,QAAI,CAAC,SAAS;AACZ,aAAO;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,MAAM;AAAA,MACP;AAAA,IACP;AAEI,WAAO,QAAQ,SAAS,oBAAoB;AAAA,MAC1C,MAAM,OAAO,iBACV,QAAQ,gBAAgB,gBAAgB;AAAA,MAC3C,QAAQ,OAAO,mBACZ,QAAQ,gBAAgB,kBAAkB,OAAO,gBAC/C,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,MACL,MAAM,MAAM;AAAA,IAClB,CAAK;AAAA,EACF;AAMH,2BAAyB,UAAU,0BACjC,SAAS,mDAAmD;AAC1D,WAAO,KAAK,UAAU,MAAM,SAAU,GAAG;AACvC,aAAO,EAAE,SAAS,wBAAyB;AAAA,IACjD,CAAK;AAAA,EACF;AAOH,2BAAyB,UAAU,mBACjC,SAAS,0CAA0C,SAAS,eAAe;AACzE,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,UAAI,UAAU,KAAK,UAAU,CAAC;AAE9B,UAAI,UAAU,QAAQ,SAAS,iBAAiB,SAAS,IAAI;AAC7D,UAAI,SAAS;AACX,eAAO;AAAA,MACf;AAAA,IACA;AACI,QAAI,eAAe;AACjB,aAAO;AAAA,IACb,OACS;AACH,YAAM,IAAI,MAAM,MAAM,UAAU,4BAA4B;AAAA,IAClE;AAAA,EACG;AAoBH,2BAAyB,UAAU,uBACjC,SAAS,8CAA8C,OAAO;AAC5D,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,UAAI,UAAU,KAAK,UAAU,CAAC;AAI9B,UAAI,QAAQ,SAAS,iBAAiBhmO,MAAK,OAAO,OAAO,QAAQ,CAAC,MAAM,IAAI;AAC1E;AAAA,MACR;AACM,UAAI,oBAAoB,QAAQ,SAAS,qBAAqB,KAAK;AACnE,UAAI,mBAAmB;AACrB,YAAI,MAAM;AAAA,UACR,MAAM,kBAAkB,QACrB,QAAQ,gBAAgB,gBAAgB;AAAA,UAC3C,QAAQ,kBAAkB,UACvB,QAAQ,gBAAgB,kBAAkB,kBAAkB,OAC1D,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,QACN;AACD,eAAO;AAAA,MACf;AAAA,IACA;AAEI,WAAO;AAAA,MACL,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AAAA,EACF;AAOH,2BAAyB,UAAU,iBACjC,SAAS,uCAAuC,MAAM,aAAa;AACjE,SAAK,sBAAsB,CAAE;AAC7B,SAAK,qBAAqB,CAAE;AAC5B,aAAS,IAAI,GAAG,IAAI,KAAK,UAAU,QAAQ,KAAK;AAC9C,UAAI,UAAU,KAAK,UAAU,CAAC;AAC9B,UAAI,kBAAkB,QAAQ,SAAS;AACvC,eAAS,IAAI,GAAG,IAAI,gBAAgB,QAAQ,KAAK;AAC/C,YAAI,UAAU,gBAAgB,CAAC;AAE/B,YAAIkC,UAAS,QAAQ,SAAS,SAAS,GAAG,QAAQ,MAAM;AACxD,QAAAA,UAASlC,MAAK,iBAAiB,QAAQ,SAAS,YAAYkC,SAAQ,KAAK,aAAa;AACtF,aAAK,SAAS,IAAIA,OAAM;AACxB,QAAAA,UAAS,KAAK,SAAS,QAAQA,OAAM;AAErC,YAAI,OAAO;AACX,YAAI,QAAQ,MAAM;AAChB,iBAAO,QAAQ,SAAS,OAAO,GAAG,QAAQ,IAAI;AAC9C,eAAK,OAAO,IAAI,IAAI;AACpB,iBAAO,KAAK,OAAO,QAAQ,IAAI;AAAA,QACzC;AAMQ,YAAI,kBAAkB;AAAA,UACpB,QAAQA;AAAA,UACR,eAAe,QAAQ,iBACpB,QAAQ,gBAAgB,gBAAgB;AAAA,UAC3C,iBAAiB,QAAQ,mBACtB,QAAQ,gBAAgB,kBAAkB,QAAQ,gBACjD,QAAQ,gBAAgB,kBAAkB,IAC1C;AAAA,UACJ,cAAc,QAAQ;AAAA,UACtB,gBAAgB,QAAQ;AAAA,UACxB;AAAA,QACD;AAED,aAAK,oBAAoB,KAAK,eAAe;AAC7C,YAAI,OAAO,gBAAgB,iBAAiB,UAAU;AACpD,eAAK,mBAAmB,KAAK,eAAe;AAAA,QACtD;AAAA,MACA;AAAA,IACA;AAEI,IAAA4jO,WAAU,KAAK,qBAAqB9lO,MAAK,mCAAmC;AAC5E,IAAA8lO,WAAU,KAAK,oBAAoB9lO,MAAK,0BAA0B;AAAA,EACnE;AAEH,oBAAA,2BAAmC;;;;;;;;ACjnCnC,MAAI,qBAAqBS,0BAAiC,EAAC;AAC3D,MAAIT,QAAOoB,YAAiB;AAI5B,MAAI,gBAAgB;AAGpB,MAAI,eAAe;AAKnB,MAAI,eAAe;AAcnB,WAAS,WAAW,OAAO,SAAS,SAAS,SAAS,OAAO;AAC3D,SAAK,WAAW,CAAE;AAClB,SAAK,iBAAiB,CAAE;AACxB,SAAK,OAAO,SAAS,OAAO,OAAO;AACnC,SAAK,SAAS,WAAW,OAAO,OAAO;AACvC,SAAK,SAAS,WAAW,OAAO,OAAO;AACvC,SAAK,OAAO,SAAS,OAAO,OAAO;AACnC,SAAK,YAAY,IAAI;AACrB,QAAI,WAAW,KAAM,MAAK,IAAI,OAAO;AAAA,EACvC;AAUA,aAAW,0BACT,SAAS,mCAAmC,gBAAgB,oBAAoB,eAAe;AAG7F,QAAIH,QAAO,IAAI,WAAY;AAM3B,QAAI,iBAAiB,eAAe,MAAM,aAAa;AACvD,QAAI,sBAAsB;AAC1B,QAAI,gBAAgB,WAAW;AAC7B,UAAI,eAAe,YAAa;AAEhC,UAAI,UAAU,YAAW,KAAM;AAC/B,aAAO,eAAe;AAEtB,eAAS,cAAc;AACrB,eAAO,sBAAsB,eAAe,SACxC,eAAe,qBAAqB,IAAI;AAAA,MACpD;AAAA,IACK;AAGD,QAAI,oBAAoB,GAAG,sBAAsB;AAKjD,QAAI,cAAc;AAElB,uBAAmB,YAAY,SAAU,SAAS;AAChD,UAAI,gBAAgB,MAAM;AAGxB,YAAI,oBAAoB,QAAQ,eAAe;AAE7C,6BAAmB,aAAa,eAAe;AAC/C;AACA,gCAAsB;AAAA,QAEhC,OAAe;AAIL,cAAI,WAAW,eAAe,mBAAmB,KAAK;AACtD,cAAI,OAAO,SAAS,OAAO,GAAG,QAAQ,kBACR,mBAAmB;AACjD,yBAAe,mBAAmB,IAAI,SAAS,OAAO,QAAQ,kBAC1B,mBAAmB;AACvD,gCAAsB,QAAQ;AAC9B,6BAAmB,aAAa,IAAI;AAEpC,wBAAc;AACd;AAAA,QACV;AAAA,MACA;AAIM,aAAO,oBAAoB,QAAQ,eAAe;AAChD,QAAAA,MAAK,IAAI,eAAe;AACxB;AAAA,MACR;AACM,UAAI,sBAAsB,QAAQ,iBAAiB;AACjD,YAAI,WAAW,eAAe,mBAAmB,KAAK;AACtD,QAAAA,MAAK,IAAI,SAAS,OAAO,GAAG,QAAQ,eAAe,CAAC;AACpD,uBAAe,mBAAmB,IAAI,SAAS,OAAO,QAAQ,eAAe;AAC7E,8BAAsB,QAAQ;AAAA,MACtC;AACM,oBAAc;AAAA,IACf,GAAE,IAAI;AAEP,QAAI,sBAAsB,eAAe,QAAQ;AAC/C,UAAI,aAAa;AAEf,2BAAmB,aAAa,eAAe;AAAA,MACvD;AAEM,MAAAA,MAAK,IAAI,eAAe,OAAO,mBAAmB,EAAE,KAAK,EAAE,CAAC;AAAA,IAClE;AAGI,uBAAmB,QAAQ,QAAQ,SAAU,YAAY;AACvD,UAAI,UAAU,mBAAmB,iBAAiB,UAAU;AAC5D,UAAI,WAAW,MAAM;AACnB,YAAI,iBAAiB,MAAM;AACzB,uBAAajB,MAAK,KAAK,eAAe,UAAU;AAAA,QAC1D;AACQ,QAAAiB,MAAK,iBAAiB,YAAY,OAAO;AAAA,MACjD;AAAA,IACA,CAAK;AAED,WAAOA;AAEP,aAAS,mBAAmB,SAAS,MAAM;AACzC,UAAI,YAAY,QAAQ,QAAQ,WAAW,QAAW;AACpD,QAAAA,MAAK,IAAI,IAAI;AAAA,MACrB,OAAa;AACL,YAAIiB,UAAS,gBACTlC,MAAK,KAAK,eAAe,QAAQ,MAAM,IACvC,QAAQ;AACZ,QAAAiB,MAAK,IAAI,IAAI;AAAA,UAAW,QAAQ;AAAA,UACR,QAAQ;AAAA,UACRiB;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QAAI,CAAC;AAAA,MAC7C;AAAA,IACA;AAAA,EACG;AAQH,aAAW,UAAU,MAAM,SAAS,eAAe,QAAQ;AACzD,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,aAAO,QAAQ,SAAU,OAAO;AAC9B,aAAK,IAAI,KAAK;AAAA,MACf,GAAE,IAAI;AAAA,IACX,WACW,OAAO,YAAY,KAAK,OAAO,WAAW,UAAU;AAC3D,UAAI,QAAQ;AACV,aAAK,SAAS,KAAK,MAAM;AAAA,MAC/B;AAAA,IACA,OACO;AACH,YAAM,IAAI;AAAA,QACR,gFAAgF;AAAA,MACjF;AAAA,IACL;AACE,WAAO;AAAA,EACR;AAQD,aAAW,UAAU,UAAU,SAAS,mBAAmB,QAAQ;AACjE,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,eAAS,IAAI,OAAO,SAAO,GAAG,KAAK,GAAG,KAAK;AACzC,aAAK,QAAQ,OAAO,CAAC,CAAC;AAAA,MAC5B;AAAA,IACA,WACW,OAAO,YAAY,KAAK,OAAO,WAAW,UAAU;AAC3D,WAAK,SAAS,QAAQ,MAAM;AAAA,IAChC,OACO;AACH,YAAM,IAAI;AAAA,QACR,gFAAgF;AAAA,MACjF;AAAA,IACL;AACE,WAAO;AAAA,EACR;AASD,aAAW,UAAU,OAAO,SAAS,gBAAgB,KAAK;AACxD,QAAI;AACJ,aAAS,IAAI,GAAG,MAAM,KAAK,SAAS,QAAQ,IAAI,KAAK,KAAK;AACxD,cAAQ,KAAK,SAAS,CAAC;AACvB,UAAI,MAAM,YAAY,GAAG;AACvB,cAAM,KAAK,GAAG;AAAA,MACpB,OACS;AACH,YAAI,UAAU,IAAI;AAChB,cAAI,OAAO;AAAA,YAAE,QAAQ,KAAK;AAAA,YACb,MAAM,KAAK;AAAA,YACX,QAAQ,KAAK;AAAA,YACb,MAAM,KAAK;AAAA,WAAM;AAAA,QACtC;AAAA,MACA;AAAA,IACA;AAAA,EACC;AAQD,aAAW,UAAU,OAAO,SAAS,gBAAgB,MAAM;AACzD,QAAI;AACJ,QAAI;AACJ,QAAI,MAAM,KAAK,SAAS;AACxB,QAAI,MAAM,GAAG;AACX,oBAAc,CAAE;AAChB,WAAK,IAAI,GAAG,IAAI,MAAI,GAAG,KAAK;AAC1B,oBAAY,KAAK,KAAK,SAAS,CAAC,CAAC;AACjC,oBAAY,KAAK,IAAI;AAAA,MAC3B;AACI,kBAAY,KAAK,KAAK,SAAS,CAAC,CAAC;AACjC,WAAK,WAAW;AAAA,IACpB;AACE,WAAO;AAAA,EACR;AASD,aAAW,UAAU,eAAe,SAAS,wBAAwB,UAAU,cAAc;AAC3F,QAAI,YAAY,KAAK,SAAS,KAAK,SAAS,SAAS,CAAC;AACtD,QAAI,UAAU,YAAY,GAAG;AAC3B,gBAAU,aAAa,UAAU,YAAY;AAAA,IACjD,WACW,OAAO,cAAc,UAAU;AACtC,WAAK,SAAS,KAAK,SAAS,SAAS,CAAC,IAAI,UAAU,QAAQ,UAAU,YAAY;AAAA,IACtF,OACO;AACH,WAAK,SAAS,KAAK,GAAG,QAAQ,UAAU,YAAY,CAAC;AAAA,IACzD;AACE,WAAO;AAAA,EACR;AASD,aAAW,UAAU,mBACnB,SAAS,4BAA4B,aAAa,gBAAgB;AAChE,SAAK,eAAelC,MAAK,YAAY,WAAW,CAAC,IAAI;AAAA,EACtD;AAQH,aAAW,UAAU,qBACnB,SAAS,8BAA8B,KAAK;AAC1C,aAAS,IAAI,GAAG,MAAM,KAAK,SAAS,QAAQ,IAAI,KAAK,KAAK;AACxD,UAAI,KAAK,SAAS,CAAC,EAAE,YAAY,GAAG;AAClC,aAAK,SAAS,CAAC,EAAE,mBAAmB,GAAG;AAAA,MAC/C;AAAA,IACA;AAEI,QAAI,UAAU,OAAO,KAAK,KAAK,cAAc;AAC7C,aAAS,IAAI,GAAG,MAAM,QAAQ,QAAQ,IAAI,KAAK,KAAK;AAClD,UAAIA,MAAK,cAAc,QAAQ,CAAC,CAAC,GAAG,KAAK,eAAe,QAAQ,CAAC,CAAC,CAAC;AAAA,IACzE;AAAA,EACG;AAMH,aAAW,UAAU,WAAW,SAAS,sBAAsB;AAC7D,QAAI,MAAM;AACV,SAAK,KAAK,SAAU,OAAO;AACzB,aAAO;AAAA,IACX,CAAG;AACD,WAAO;AAAA,EACR;AAMD,aAAW,UAAU,wBAAwB,SAAS,iCAAiC,OAAO;AAC5F,QAAIymJ,aAAY;AAAA,MACd,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,IACT;AACD,QAAI,MAAM,IAAI,mBAAmB,KAAK;AACtC,QAAI,sBAAsB;AAC1B,QAAI,qBAAqB;AACzB,QAAI,mBAAmB;AACvB,QAAI,qBAAqB;AACzB,QAAI,mBAAmB;AACvB,SAAK,KAAK,SAAU,OAAO,UAAU;AACnC,MAAAA,WAAU,QAAQ;AAClB,UAAI,SAAS,WAAW,QACjB,SAAS,SAAS,QAClB,SAAS,WAAW,MAAM;AAC/B,YAAG,uBAAuB,SAAS,UAC7B,qBAAqB,SAAS,QAC9B,uBAAuB,SAAS,UAChC,qBAAqB,SAAS,MAAM;AACxC,cAAI,WAAW;AAAA,YACb,QAAQ,SAAS;AAAA,YACjB,UAAU;AAAA,cACR,MAAM,SAAS;AAAA,cACf,QAAQ,SAAS;AAAA,YAClB;AAAA,YACD,WAAW;AAAA,cACT,MAAMA,WAAU;AAAA,cAChB,QAAQA,WAAU;AAAA,YACnB;AAAA,YACD,MAAM,SAAS;AAAA,UACzB,CAAS;AAAA,QACT;AACM,6BAAqB,SAAS;AAC9B,2BAAmB,SAAS;AAC5B,6BAAqB,SAAS;AAC9B,2BAAmB,SAAS;AAC5B,8BAAsB;AAAA,MACvB,WAAU,qBAAqB;AAC9B,YAAI,WAAW;AAAA,UACb,WAAW;AAAA,YACT,MAAMA,WAAU;AAAA,YAChB,QAAQA,WAAU;AAAA,UAC5B;AAAA,QACA,CAAO;AACD,6BAAqB;AACrB,8BAAsB;AAAA,MAC5B;AACI,eAAS,MAAM,GAAG,SAAS,MAAM,QAAQ,MAAM,QAAQ,OAAO;AAC5D,YAAI,MAAM,WAAW,GAAG,MAAM,cAAc;AAC1C,UAAAA,WAAU;AACV,UAAAA,WAAU,SAAS;AAEnB,cAAI,MAAM,MAAM,QAAQ;AACtB,iCAAqB;AACrB,kCAAsB;AAAA,UACvB,WAAU,qBAAqB;AAC9B,gBAAI,WAAW;AAAA,cACb,QAAQ,SAAS;AAAA,cACjB,UAAU;AAAA,gBACR,MAAM,SAAS;AAAA,gBACf,QAAQ,SAAS;AAAA,cAClB;AAAA,cACD,WAAW;AAAA,gBACT,MAAMA,WAAU;AAAA,gBAChB,QAAQA,WAAU;AAAA,cACnB;AAAA,cACD,MAAM,SAAS;AAAA,YAC3B,CAAW;AAAA,UACX;AAAA,QACA,OAAa;AACL,UAAAA,WAAU;AAAA,QAClB;AAAA,MACA;AAAA,IACA,CAAG;AACD,SAAK,mBAAmB,SAAU,YAAY,eAAe;AAC3D,UAAI,iBAAiB,YAAY,aAAa;AAAA,IAClD,CAAG;AAED,WAAO,EAAE,MAAMA,WAAU,MAAM,IAAU;AAAA,EAC1C;AAED,aAAA,aAAqB;;;;;;;ACvZK,YAAA,qBAAGhmJ,0BAAqC,EAAC;AAC1C,YAAA,oBAAGW,yBAAoC,EAAC;AAC/C,YAAA,aAAGW,kBAA4B,EAAC;;;;;;;;ACLlD,MAAI,WAAW,OAAO,UAAU;AAEhC,MAAI,WACF,OAAO,WAAW,eAClB,OAAO,OAAO,UAAU,cACxB,OAAO,OAAO,gBAAgB,cAC9B,OAAO,OAAO,SAAS;AAGzB,WAAS,cAAegG,QAAO;AAC7B,WAAO,SAAS,KAAKA,MAAK,EAAE,MAAM,GAAG,EAAE,MAAM;AAAA,EAC/C;AAEA,WAAS,gBAAiB,KAAK,YAAY,QAAQ;AACjD,oBAAgB;AAEhB,QAAI,YAAY,IAAI,aAAa;AAEjC,QAAI,YAAY,GAAG;AACjB,YAAM,IAAI,WAAW,2BAA2B;AAAA,IACpD;AAEE,QAAI,WAAW,QAAW;AACxB,eAAS;AAAA,IACb,OAAS;AACL,kBAAY;AAEZ,UAAI,SAAS,WAAW;AACtB,cAAM,IAAI,WAAW,2BAA2B;AAAA,MACtD;AAAA,IACA;AAEE,WAAO,WACH,OAAO,KAAK,IAAI,MAAM,YAAY,aAAa,MAAM,CAAC,IACtD,IAAI,OAAO,IAAI,WAAW,IAAI,MAAM,YAAY,aAAa,MAAM,CAAC,CAAC;AAAA,EAC3E;AAEA,WAAS,WAAY/G,SAAQ,UAAU;AACrC,QAAI,OAAO,aAAa,YAAY,aAAa,IAAI;AACnD,iBAAW;AAAA,IACf;AAEE,QAAI,CAAC,OAAO,WAAW,QAAQ,GAAG;AAChC,YAAM,IAAI,UAAU,4CAA4C;AAAA,IACpE;AAEE,WAAO,WACH,OAAO,KAAKA,SAAQ,QAAQ,IAC5B,IAAI,OAAOA,SAAQ,QAAQ;AAAA,EACjC;AAEA,WAAS,WAAYF,QAAO,kBAAkB,QAAQ;AACpD,QAAI,OAAOA,WAAU,UAAU;AAC7B,YAAM,IAAI,UAAU,uCAAuC;AAAA,IAC/D;AAEE,QAAI,cAAcA,MAAK,GAAG;AACxB,aAAO,gBAAgBA,QAAO,kBAAkB,MAAM;AAAA,IAC1D;AAEE,QAAI,OAAOA,WAAU,UAAU;AAC7B,aAAO,WAAWA,QAAO,gBAAgB;AAAA,IAC7C;AAEE,WAAO,WACH,OAAO,KAAKA,MAAK,IACjB,IAAI,OAAOA,MAAK;AAAA,EACtB;AAEA,iBAAiB;;;;;;;;;ACvEjB,QAAI,oBAAoBL,iBAAqB,EAAC;AAC9C,QAAId,QAAOyB,cAAe;AAE1B,QAAImF;AACJ,QAAI;AACF,MAAAA,MAAK;AACL,UAAI,CAACA,IAAG,cAAc,CAACA,IAAG,cAAc;AAEtC,QAAAA,MAAK;AAAA,MACT;AAAA,IACC,SAAQ,KAAK;AAAA,IAEd;AAEA,QAAI,aAAatE,kBAAsB;AAQvC,aAAS,eAAe,KAAK,SAAS;AACpC,aAAO,IAAI,QAAQ,OAAO;AAAA,IAC5B;AAGA,QAAI,0BAA0B;AAC9B,QAAI,wBAAwB;AAG5B,QAAI,8BAA8B;AAGlC,QAAIi1L,eAAc;AAGlB,QAAI,oBAAoB,CAAE;AAG1B,QAAI,iBAAiB,CAAE;AAGvB,QAAI,cAAc;AAGlB,QAAI,uBAAuB,CAAE;AAC7B,QAAI,sBAAsB,CAAE;AAE5B,aAAS,cAAc;AACrB,UAAIA,iBAAgB;AAClB,eAAO;AACT,UAAIA,iBAAgB;AAClB,eAAO;AACT,aAAS,OAAO,WAAW,eAAiB,OAAO,mBAAmB,cAAe,EAAE,OAAO,WAAW,OAAO,UAAU,OAAO,WAAW,OAAO,QAAQ,SAAS;AAAA,IACtK;AAEA,aAAS,+BAA+B;AACtC,aAAS,OAAO,YAAY,YAAc,YAAY,QAAU,OAAO,QAAQ,OAAO;AAAA,IACxF;AAEA,aAAS,uBAAuB;AAC9B,UAAK,OAAO,YAAY,YAAc,YAAY,MAAO;AACvD,eAAO,QAAQ;AAAA,MACnB,OAAS;AACL,eAAO;AAAA,MACX;AAAA,IACA;AAEA,aAAS,sBAAsB;AAC7B,UAAK,OAAO,YAAY,YAAc,YAAY,MAAO;AACvD,eAAO,QAAQ;AAAA,MACnB;AAAA,IACA;AAEA,aAAS,kBAAkB,MAAM;AAC/B,UAAK,OAAO,YAAY,YAAc,YAAY,QAAU,OAAO,QAAQ,SAAS,YAAa;AAC/F,eAAO,QAAQ,KAAK,IAAI;AAAA,MAC5B;AAAA,IACA;AAEA,aAAS,YAAY10L,OAAM;AACzB,aAAO,SAAS,KAAK;AACnB,iBAAS,IAAI,GAAG,IAAIA,MAAK,QAAQ,KAAK;AACpC,cAAI,MAAMA,MAAK,CAAC,EAAE,GAAG;AACrB,cAAI,KAAK;AACP,mBAAO;AAAA,UACf;AAAA,QACA;AACI,eAAO;AAAA,MACR;AAAA,IACH;AAEA,QAAI,eAAe,YAAY,oBAAoB;AAEnD,yBAAqB,KAAK,SAAS7C,OAAM;AAEvC,MAAAA,QAAOA,MAAK,KAAM;AAClB,UAAI,SAAS,KAAKA,KAAI,GAAG;AAEvB,QAAAA,QAAOA,MAAK,QAAQ,qBAAqB,SAAS,UAAU,OAAO;AACjE,iBAAO,QACL;AAAA;AAAA,YACA;AAAA;AAAA,QACR,CAAK;AAAA,MACL;AACE,UAAIA,SAAQ,mBAAmB;AAC7B,eAAO,kBAAkBA,KAAI;AAAA,MACjC;AAEE,UAAI,WAAW;AACf,UAAI;AACF,YAAI,CAAC4G,KAAI;AAEP,cAAI,MAAM,IAAI,eAAgB;AAC9B,cAAI;AAAA,YAAK;AAAA,YAAO5G;AAAA;AAAA,YAAmB;AAAA,UAAK;AACxC,cAAI,KAAK,IAAI;AACb,cAAI,IAAI,eAAe,KAAK,IAAI,WAAW,KAAK;AAC9C,uBAAW,IAAI;AAAA,UACvB;AAAA,QACK,WAAU4G,IAAG,WAAW5G,KAAI,GAAG;AAE9B,qBAAW4G,IAAG,aAAa5G,OAAM,MAAM;AAAA,QAC7C;AAAA,MACG,SAAQ,IAAI;AAAA,MAEf;AAEE,aAAO,kBAAkBA,KAAI,IAAI;AAAA,IACnC,CAAC;AAID,aAAS,mBAAmBG,OAAM+Y,MAAK;AACrC,UAAI,CAAC/Y,MAAM,QAAO+Y;AAClB,UAAI,MAAMlZ,MAAK,QAAQG,KAAI;AAC3B,UAAI,QAAQ,kBAAkB,KAAK,GAAG;AACtC,UAAI,WAAW,QAAQ,MAAM,CAAC,IAAI;AAClC,UAAI,YAAY,IAAI,MAAM,SAAS,MAAM;AACzC,UAAI,YAAY,UAAU,KAAK,SAAS,GAAG;AAEzC,oBAAY;AACZ,eAAO,WAAWH,MAAK,QAAQ,IAAI,MAAM,SAAS,MAAM,GAAGkZ,IAAG,EAAE,QAAQ,OAAO,GAAG;AAAA,MACtF;AACE,aAAO,WAAWlZ,MAAK,QAAQ,IAAI,MAAM,SAAS,MAAM,GAAGkZ,IAAG;AAAA,IAChE;AAEA,aAAS,qBAAqB3W,SAAQ;AACpC,UAAI;AAEJ,UAAI,YAAW,GAAI;AAChB,YAAI;AACF,cAAI,MAAM,IAAI,eAAgB;AAC9B,cAAI,KAAK,OAAOA,SAAQ,KAAK;AAC7B,cAAI,KAAK,IAAI;AACb,qBAAW,IAAI,eAAe,IAAI,IAAI,eAAe;AAGrD,cAAI,kBAAkB,IAAI,kBAAkB,WAAW,KACjC,IAAI,kBAAkB,aAAa;AACzD,cAAI,iBAAiB;AACnB,mBAAO;AAAA,UAChB;AAAA,QACM,SAAQ,GAAG;AAAA,QACjB;AAAA,MACA;AAGE,iBAAW,aAAaA,OAAM;AAC9B,UAAI,KAAK;AAGT,UAAI,WAAW;AACf,aAAO,QAAQ,GAAG,KAAK,QAAQ,EAAG,aAAY;AAC9C,UAAI,CAAC,UAAW,QAAO;AACvB,aAAO,UAAU,CAAC;AAAA;AAQpB,QAAI,oBAAoB,YAAY,mBAAmB;AACvD,wBAAoB,KAAK,SAASA,SAAQ;AACxC,UAAI,mBAAmB,qBAAqBA,OAAM;AAClD,UAAI,CAAC,iBAAkB,QAAO;AAG9B,UAAI;AACJ,UAAI,YAAY,KAAK,gBAAgB,GAAG;AAEtC,YAAI,UAAU,iBAAiB,MAAM,iBAAiB,QAAQ,GAAG,IAAI,CAAC;AACtE,wBAAgB,WAAW,SAAS,QAAQ,EAAE,SAAU;AACxD,2BAAmBA;AAAA,MACvB,OAAS;AAEL,2BAAmB,mBAAmBA,SAAQ,gBAAgB;AAC9D,wBAAgB,aAAa,gBAAgB;AAAA,MACjD;AAEE,UAAI,CAAC,eAAe;AAClB,eAAO;AAAA,MACX;AAEE,aAAO;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,MACN;AAAA,IACH,CAAC;AAED,aAAS,kBAAkB,UAAU;AACnC,UAAImjM,aAAY,eAAe,SAAS,MAAM;AAC9C,UAAI,CAACA,YAAW;AAEd,YAAI,YAAY,kBAAkB,SAAS,MAAM;AACjD,YAAI,WAAW;AACb,UAAAA,aAAY,eAAe,SAAS,MAAM,IAAI;AAAA,YAC5C,KAAK,UAAU;AAAA,YACf,KAAK,IAAI,kBAAkB,UAAU,GAAG;AAAA,UACzC;AAID,cAAIA,WAAU,IAAI,gBAAgB;AAChC,YAAAA,WAAU,IAAI,QAAQ,QAAQ,SAASnjM,SAAQ,GAAG;AAChD,kBAAI,WAAWmjM,WAAU,IAAI,eAAe,CAAC;AAC7C,kBAAI,UAAU;AACZ,oBAAIxsL,OAAM,mBAAmBwsL,WAAU,KAAKnjM,OAAM;AAClD,kCAAkB2W,IAAG,IAAI;AAAA,cACrC;AAAA,YACA,CAAS;AAAA,UACT;AAAA,QACA,OAAW;AACL,UAAAwsL,aAAY,eAAe,SAAS,MAAM,IAAI;AAAA,YAC5C,KAAK;AAAA,YACL,KAAK;AAAA,UACN;AAAA,QACP;AAAA,MACA;AAGE,UAAIA,cAAaA,WAAU,OAAO,OAAOA,WAAU,IAAI,wBAAwB,YAAY;AACzF,YAAI,mBAAmBA,WAAU,IAAI,oBAAoB,QAAQ;AAOjE,YAAI,iBAAiB,WAAW,MAAM;AACpC,2BAAiB,SAAS;AAAA,YACxBA,WAAU;AAAA,YAAK,iBAAiB;AAAA,UAAM;AACxC,iBAAO;AAAA,QACb;AAAA,MACA;AAEE,aAAO;AAAA,IACT;AAIA,aAAS,cAAc,QAAQ;AAE7B,UAAI,QAAQ,yCAAyC,KAAK,MAAM;AAChE,UAAI,OAAO;AACT,YAAI,WAAW,kBAAkB;AAAA,UAC/B,QAAQ,MAAM,CAAC;AAAA,UACf,MAAM,CAAC,MAAM,CAAC;AAAA,UACd,QAAQ,MAAM,CAAC,IAAI;AAAA,QACzB,CAAK;AACD,eAAO,aAAa,MAAM,CAAC,IAAI,OAAO,SAAS,SAAS,MACtD,SAAS,OAAO,OAAO,SAAS,SAAS,KAAK;AAAA,MACpD;AAGE,cAAQ,6BAA6B,KAAK,MAAM;AAChD,UAAI,OAAO;AACT,eAAO,aAAa,MAAM,CAAC,IAAI,OAAO,cAAc,MAAM,CAAC,CAAC,IAAI;AAAA,MACpE;AAGE,aAAO;AAAA,IACT;AAQA,aAAS,mBAAmB;AAC1B,UAAI;AACJ,UAAI,eAAe;AACnB,UAAI,KAAK,YAAY;AACnB,uBAAe;AAAA,MACnB,OAAS;AACL,mBAAW,KAAK,yBAA0B;AAC1C,YAAI,CAAC,YAAY,KAAK,UAAU;AAC9B,yBAAe,KAAK,cAAe;AACnC,0BAAgB;AAAA,QACtB;AAEI,YAAI,UAAU;AACZ,0BAAgB;AAAA,QACtB,OAAW;AAIL,0BAAgB;AAAA,QACtB;AACI,YAAI,aAAa,KAAK,cAAe;AACrC,YAAI,cAAc,MAAM;AACtB,0BAAgB,MAAM;AACtB,cAAI,eAAe,KAAK,gBAAiB;AACzC,cAAI,cAAc;AAChB,4BAAgB,MAAM;AAAA,UAC9B;AAAA,QACA;AAAA,MACA;AAEE,UAAIxlM,QAAO;AACX,UAAI,eAAe,KAAK,gBAAiB;AACzC,UAAI,YAAY;AAChB,UAAI,gBAAgB,KAAK,cAAe;AACxC,UAAI,eAAe,EAAE,KAAK,WAAU,KAAM;AAC1C,UAAI,cAAc;AAChB,YAAI,WAAW,KAAK,YAAa;AAEjC,YAAI,aAAa,mBAAmB;AAClC,qBAAW;AAAA,QACjB;AACI,YAAI,aAAa,KAAK,cAAe;AACrC,YAAI,cAAc;AAChB,cAAI,YAAY,aAAa,QAAQ,QAAQ,KAAK,GAAG;AACnD,YAAAA,SAAQ,WAAW;AAAA,UAC3B;AACM,UAAAA,SAAQ;AACR,cAAI,cAAc,aAAa,QAAQ,MAAM,UAAU,KAAK,aAAa,SAAS,WAAW,SAAS,GAAG;AACvG,YAAAA,SAAQ,UAAU,aAAa;AAAA,UACvC;AAAA,QACA,OAAW;AACL,UAAAA,SAAQ,WAAW,OAAO,cAAc;AAAA,QAC9C;AAAA,MACG,WAAU,eAAe;AACxB,QAAAA,SAAQ,UAAU,gBAAgB;AAAA,MACnC,WAAU,cAAc;AACvB,QAAAA,SAAQ;AAAA,MACZ,OAAS;AACL,QAAAA,SAAQ;AACR,oBAAY;AAAA,MAChB;AACE,UAAI,WAAW;AACb,QAAAA,SAAQ,OAAO,eAAe;AAAA,MAClC;AACE,aAAOA;AAAA,IACT;AAEA,aAAS,cAAc,OAAO;AAC5B,UAAI,SAAS,CAAE;AACf,aAAO,oBAAoB,OAAO,eAAe,KAAK,CAAC,EAAE,QAAQ,SAAS,MAAM;AAC9E,eAAO,IAAI,IAAI,cAAc,KAAK,IAAI,IAAI,WAAW;AAAE,iBAAO,MAAM,IAAI,EAAE,KAAK,KAAK;AAAA,QAAI,IAAG,MAAM,IAAI;AAAA,MACzG,CAAG;AACD,aAAO,WAAW;AAClB,aAAO;AAAA,IACT;AAEA,aAAS,aAAa,OAAOD,QAAO;AAElC,UAAIA,WAAU,QAAW;AACvB,QAAAA,SAAQ,EAAE,cAAc,MAAM,aAAa,KAAI;AAAA,MACnD;AACE,UAAG,MAAM,YAAY;AACnB,QAAAA,OAAM,cAAc;AACpB,eAAO;AAAA,MACX;AAKE,UAAIsC,UAAS,MAAM,YAAW,KAAM,MAAM,yBAA0B;AACpE,UAAIA,SAAQ;AACV,YAAIrC,QAAO,MAAM,cAAe;AAChC,YAAI6U,UAAS,MAAM,gBAAe,IAAK;AAOvC,YAAI,WAAW;AACf,YAAI,eAAe,SAAS,KAAK,qBAAsB,CAAA,IAAI,IAAI;AAC/D,YAAI7U,UAAS,KAAK6U,UAAS,gBAAgB,CAAC,iBAAiB,CAAC,MAAM,UAAU;AAC5E,UAAAA,WAAU;AAAA,QAChB;AAEI,YAAI,WAAW,kBAAkB;AAAA,UAC/B,QAAQxS;AAAA,UACR,MAAMrC;AAAA,UACN,QAAQ6U;AAAA,QACd,CAAK;AACD,QAAA9U,OAAM,cAAc;AACpB,gBAAQ,cAAc,KAAK;AAC3B,YAAI,uBAAuB,MAAM;AACjC,cAAM,kBAAkB,WAAW;AACjC,cAAIA,OAAM,gBAAgB,MAAM;AAC9B,mBAAO,qBAAsB;AAAA,UACrC;AACM,iBAAOA,OAAM,aAAa,QAAQ,qBAAsB;AAAA,QACzD;AACD,cAAM,cAAc,WAAW;AAAE,iBAAO,SAAS;AAAA,QAAS;AAC1D,cAAM,gBAAgB,WAAW;AAAE,iBAAO,SAAS;AAAA,QAAO;AAC1D,cAAM,kBAAkB,WAAW;AAAE,iBAAO,SAAS,SAAS;AAAA,QAAI;AAClE,cAAM,2BAA2B,WAAW;AAAE,iBAAO,SAAS;AAAA,QAAS;AACvE,eAAO;AAAA,MACX;AAGE,UAAI,SAAS,MAAM,OAAM,KAAM,MAAM,cAAe;AACpD,UAAI,QAAQ;AACV,iBAAS,cAAc,MAAM;AAC7B,gBAAQ,cAAc,KAAK;AAC3B,cAAM,gBAAgB,WAAW;AAAE,iBAAO;AAAA,QAAS;AACnD,eAAO;AAAA,MACX;AAGE,aAAO;AAAA,IACT;AAIA,aAAS,kBAAkBG,QAAOyD,QAAO;AACvC,UAAI,6BAA6B;AAC/B,4BAAoB,CAAE;AACtB,yBAAiB,CAAE;AAAA,MACvB;AAEE,UAAI,OAAOzD,OAAM,QAAQ;AACzB,UAAI,UAAUA,OAAM,WAAW;AAC/B,UAAI,cAAc,OAAO,OAAO;AAEhC,UAAIH,SAAQ,EAAE,cAAc,MAAM,aAAa,KAAM;AACrD,UAAI,iBAAiB,CAAE;AACvB,eAAS,IAAI4D,OAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,uBAAe,KAAK,cAAc,aAAaA,OAAM,CAAC,GAAG5D,MAAK,CAAC;AAC/D,QAAAA,OAAM,eAAeA,OAAM;AAAA,MAC/B;AACE,MAAAA,OAAM,cAAcA,OAAM,eAAe;AACzC,aAAO,cAAc,eAAe,QAAO,EAAG,KAAK,EAAE;AAAA,IACvD;AAGA,aAAS,eAAeG,QAAO;AAC7B,UAAI,QAAQ,sCAAsC,KAAKA,OAAM,KAAK;AAClE,UAAI,OAAO;AACT,YAAImC,UAAS,MAAM,CAAC;AACpB,YAAIrC,QAAO,CAAC,MAAM,CAAC;AACnB,YAAI6U,UAAS,CAAC,MAAM,CAAC;AAGrB,YAAI,WAAW,kBAAkBxS,OAAM;AAGvC,YAAI,CAAC,YAAYqE,OAAMA,IAAG,WAAWrE,OAAM,GAAG;AAC5C,cAAI;AACF,uBAAWqE,IAAG,aAAarE,SAAQ,MAAM;AAAA,UAC1C,SAAQ,IAAI;AACX,uBAAW;AAAA,UACnB;AAAA,QACA;AAGI,YAAI,UAAU;AACZ,cAAI,OAAO,SAAS,MAAM,gBAAgB,EAAErC,QAAO,CAAC;AACpD,cAAI,MAAM;AACR,mBAAOqC,UAAS,MAAMrC,QAAO,OAAO,OAAO,OACzC,IAAI,MAAM6U,OAAM,EAAE,KAAK,GAAG,IAAI;AAAA,UACxC;AAAA,QACA;AAAA,MACA;AACE,aAAO;AAAA,IACT;AAEA,aAAS,kBAAmB3U,QAAO;AACjC,UAAImC,UAAS,eAAenC,MAAK;AAGjC,UAAI,SAAS,oBAAqB;AAClC,UAAI,UAAU,OAAO,WAAW,OAAO,QAAQ,aAAa;AAC1D,eAAO,QAAQ,YAAY,IAAI;AAAA,MACnC;AAEE,UAAImC,SAAQ;AACV,gBAAQ,MAAO;AACf,gBAAQ,MAAMA,OAAM;AAAA,MACxB;AAEE,cAAQ,MAAMnC,OAAM,KAAK;AACzB,wBAAkB,CAAC;AAAA,IACrB;AAEA,aAAS,4BAA6B;AACpC,UAAI,WAAW,QAAQ;AAEvB,cAAQ,OAAO,SAAU,MAAM;AAC7B,YAAI,SAAS,qBAAqB;AAChC,cAAI,WAAY,UAAU,CAAC,KAAK,UAAU,CAAC,EAAE;AAC7C,cAAI,eAAgB,KAAK,UAAU,IAAI,EAAE,SAAS;AAElD,cAAI,YAAY,CAAC,cAAc;AAC7B,mBAAO,kBAAkB,UAAU,CAAC,CAAC;AAAA,UAC7C;AAAA,QACA;AAEI,eAAO,SAAS,MAAM,MAAM,SAAS;AAAA,MACtC;AAAA,IACH;AAEA,QAAI,+BAA+B,qBAAqB,MAAM,CAAC;AAC/D,QAAI,8BAA8B,oBAAoB,MAAM,CAAC;AAE7D,YAAA,eAAuB;AACvB,YAAA,iBAAyB;AACzB,YAAA,oBAA4B;AAC5B,YAAA,oBAA4B;AAE5B,YAAkB,UAAA,SAASK,UAAS;AAClC,MAAAA,WAAUA,YAAW,CAAE;AAEvB,UAAIA,SAAQ,aAAa;AACvB,QAAA82L,eAAc92L,SAAQ;AACtB,YAAI,CAAC,QAAQ,WAAW,MAAM,EAAE,QAAQ82L,YAAW,MAAM,IAAI;AAC3D,gBAAM,IAAI,MAAM,iBAAiBA,eAAc,2DAA2D;AAAA,QAChH;AAAA,MACA;AAIE,UAAI92L,SAAQ,cAAc;AACxB,YAAIA,SAAQ,sBAAsB;AAChC,+BAAqB,SAAS;AAAA,QACpC;AAEI,6BAAqB,QAAQA,SAAQ,YAAY;AAAA,MACrD;AAIE,UAAIA,SAAQ,mBAAmB;AAC7B,YAAIA,SAAQ,2BAA2B;AACrC,8BAAoB,SAAS;AAAA,QACnC;AAEI,4BAAoB,QAAQA,SAAQ,iBAAiB;AAAA,MACzD;AAGE,UAAIA,SAAQ,eAAe,CAAC,eAAe;AAEzC,YAAI6lO,UAAS,eAAe3kO,SAAQ,QAAQ;AAC5C,YAAI,WAAW2kO,QAAO,UAAU;AAEhC,YAAI,CAAC,SAAS,oBAAoB;AAChC,UAAAA,QAAO,UAAU,WAAW,SAAS,SAAS,UAAU;AACtD,8BAAkB,QAAQ,IAAI;AAC9B,2BAAe,QAAQ,IAAI;AAC3B,mBAAO,SAAS,KAAK,MAAM,SAAS,QAAQ;AAAA,UAC7C;AAED,UAAAA,QAAO,UAAU,SAAS,qBAAqB;AAAA,QACrD;AAAA,MACA;AAGE,UAAI,CAAC,6BAA6B;AAChC,sCAA8B,iCAAiC7lO,WAC7DA,SAAQ,8BAA8B;AAAA,MAC5C;AAGE,UAAI,CAAC,yBAAyB;AAC5B,kCAA0B;AAC1B,cAAM,oBAAoB;AAAA,MAC9B;AAEE,UAAI,CAAC,uBAAuB;AAC1B,YAAI,iBAAiB,8BAA8BA,WACjDA,SAAQ,2BAA2B;AAKrC,YAAI;AAEF,cAAI,iBAAiB,eAAekB,SAAQ,gBAAgB;AAC5D,cAAI,eAAe,iBAAiB,OAAO;AACzC,6BAAiB;AAAA,UACzB;AAAA,QACK,SAAO,GAAG;AAAA,QAAA;AASX,YAAI,kBAAkB,gCAAgC;AACpD,kCAAwB;AACxB,oCAA2B;AAAA,QACjC;AAAA,MACA;AAAA,IACC;AAED,YAAA,wBAAgC,WAAW;AACzC,2BAAqB,SAAS;AAC9B,0BAAoB,SAAS;AAE7B,6BAAuB,6BAA6B,MAAM,CAAC;AAC3D,4BAAsB,4BAA4B,MAAM,CAAC;AAEzD,0BAAoB,YAAY,mBAAmB;AACnD,qBAAe,YAAY,oBAAoB;AAAA,IACjD;AAAA;;;;;;;;;;AC9mBA,QAAM,QAAQb,uBAAA;AAEdylO,gBAAiB,CAAC,QAAQ,UAAU;AAClC,YAAQ,OAAO,UAAU,cAAc,WAAW;AAClD,UAAM,gBAAgB,oBAAI,IAAG;AAC7B,QAAI,UAAU;AACd,QAAI,aAAa;AAEjB,QAAI,kBAAkB,MAAM,QAAQ;AAClC,aAAO,GAAG,oBAAoB,YAAY;AAAA,IAC9C,OAAS;AACL,aAAO,GAAG,cAAc,YAAY;AAAA,IACxC;AAEE,WAAO,GAAG,WAAW,SAAS;AAC9B,WAAO,OAAO;AACd,WAAO,kBAAkB;AACzB,WAAO;AAEP,aAAS,aAAc,QAAQ;AAC7B,oBAAc,IAAI,QAAQ,CAAC;AAC3B,aAAO,KAAK,SAAS,MAAM,cAAc,OAAO,MAAM,CAAC;AAAA,IAC3D;AAEE,aAAS,UAAW,KAAK,KAAK;AAC5B,oBAAc,IAAI,IAAI,QAAQ,cAAc,IAAI,IAAI,MAAM,IAAI,CAAC;AAC/D,UAAI,KAAK,UAAU,MAAM;AACvB,cAAM,UAAU,cAAc,IAAI,IAAI,MAAM,IAAI;AAChD,sBAAc,IAAI,IAAI,QAAQ,OAAO;AACrC,YAAI,WAAW,YAAY,GAAG;AAC5B,cAAI,OAAO,IAAG;AAAA,QACtB;AAAA,MACK,CAAA;AAAA,IACL;AAEE,aAAS,KAAM,UAAU;AAEvB,mBAAa,MAAM;AACjB,kBAAU;AACV,YAAI,QAAQ,UAAU;AACpB,qBAAW,YAAY,KAAK,EAAE,MAAK;AAAA,QAC3C;AACM,eAAO,MAAM,OAAK;AAChB,cAAI,UAAU;AACZ,qBAAS,GAAG,UAAU;AAAA,UAChC;AAAA,QACO,CAAA;AACD,sBAAc,QAAQ,SAAS;AAAA,MAChC,CAAA;AAAA,IACL;AAEE,aAAS,UAAW,UAAU,QAAQ;AACpC,UAAI,aAAa,EAAG,QAAO,IAAG;AAAA,IAClC;AAEE,aAAS,aAAc;AACrB,mBAAa;AACb,oBAAc,QAAQ,CAAC,MAAM,WAAW,OAAO,IAAK,CAAA;AACpD,mBAAa,MAAM;AACjB,sBAAc,QAAQ,CAAC,MAAM,WAAW,OAAO,QAAS,CAAA;AAAA,MACzD,CAAA;AAAA,IACL;AAAA,EACA;;;;;;;;;;;;;AC9DA,UAAM,UAAU,OAAO,YAAY,eAAe,QAAQ,IAAI,iBAAiB;AAC/E,UAAM,YAAY,OAAO,YAAY,eAAe,QAAQ,aAAa;AACzE,UAAM,UAAU,OAAO,YAAY,eAAe,QAAQ,aAAa;AAEvE,UAAM,SAAS;AAAA,MACb,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,aAAa;AAAA,MACb,WAAW;AAAA,MACX,OAAO;AAAA,MACP,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,iBAAiB;AAAA,MACjB,aAAa;AAAA,MACb,eAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,UAAU;AAAA,MACV,SAAS;AAAA,MACT,UAAU;AAAA,MACV,SAAS;AAAA,MACT,aAAa;AAAA,IACd;AAED,UAAM,UAAU,OAAO,OAAO,CAAA,GAAI,QAAQ;AAAA,MACxC,OAAO;AAAA,MACP,OAAO;AAAA,MACP,eAAe;AAAA,MACf,UAAU;AAAA,MACV,MAAM;AAAA,MACN,eAAe;AAAA,MACf,SAAS;AAAA,MACT,cAAc;AAAA,MACd,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAED,UAAM,QAAQ,OAAO,OAAO,CAAA,GAAI,QAAQ;AAAA,MACtC,aAAa;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,eAAe;AAAA,MACf,UAAU;AAAA,MACV,MAAM;AAAA,MACN,cAAc;AAAA,MACd,eAAe;AAAA,MACf,SAAS,UAAU,MAAM;AAAA,MACzB,cAAc,UAAU,MAAM;AAAA,MAC9B,UAAU;AAAA,MACV,SAAS;AAAA,MACT,SAAS;AAAA,IACX,CAAC;AAED,IAAA5kO,QAAiB,UAAC,aAAa,CAAC,UAAW,UAAU;AACrD,YAAQ,eAAeA,QAAO,SAAS,UAAU,EAAE,YAAY,OAAO,OAAO,QAAQ;AACrF,YAAQ,eAAeA,QAAO,SAAS,WAAW,EAAE,YAAY,OAAO,OAAO,SAAS;AACvF,YAAQ,eAAeA,QAAO,SAAS,SAAS,EAAE,YAAY,OAAO,OAAO,MAAK,CAAE;AAAA;;;;;;;AClEnF,QAAM,WAAW,SAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAIrF,QAAM,aAAa;AAEnB,QAAM,WAAW,MAAM;AACrB,QAAI,OAAO,YAAY,aAAa;AAClC,aAAO,QAAQ,IAAI,gBAAgB;AAAA,IACvC;AACE,WAAO;AAAA,EACR;AAED,QAAM,SAAS,MAAM;AACnB,UAAMwB,UAAS;AAAA,MACb,SAAS,SAAU;AAAA,MACnB,SAAS;AAAA,MACT,QAAQ,CAAE;AAAA,MACV,MAAM,CAAA;AAAA,IACP;AAED,UAAM/B,QAAO,CAAAy9J,WAAS;AACpB,UAAI,OAAOA,OAAM,OAAO,QAAUA,OAAM,MAAM,CAAC,CAAC;AAChD,UAAI,QAAQA,OAAM,QAAQ,QAAUA,OAAM,MAAM,CAAC,CAAC;AAClD,UAAI,QAAQA,OAAM,QAAQ,IAAI,OAAO,aAAaA,OAAM,MAAM,CAAC,CAAC,KAAK,GAAG;AACxE,MAAAA,OAAM,OAAO,CAACz2J,QAAO,YAAY;AAC/B,YAAIA,OAAM,SAAS,KAAK,EAAG,CAAAA,SAAQA,OAAM,QAAQ,OAAO,QAAQ,IAAI;AACpE,YAAI,SAAS,OAAOA,SAAQ;AAI5B,eAAO,UAAU,OAAO,QAAQ,UAAU,GAAG,KAAK,KAAK,IAAI,EAAE,IAAI;AAAA,MAClE;AACD,aAAOy2J;AAAA,IACR;AAED,UAAM,OAAO,CAACA,QAAOz2J,QAAO,YAAY;AACtC,aAAO,OAAOy2J,WAAU,aAAaA,OAAMz2J,MAAK,IAAIy2J,OAAM,KAAKz2J,QAAO,OAAO;AAAA,IAC9E;AAED,UAAM,QAAQ,CAACA,QAAOvE,WAAU;AAC9B,UAAIuE,WAAU,MAAMA,UAAS,KAAM,QAAO;AAC1C,UAAIjF,QAAO,YAAY,MAAO,QAAOiF;AACrC,UAAIjF,QAAO,YAAY,MAAO,QAAO;AACrC,UAAI,MAAM,KAAKiF;AACf,UAAI,KAAK,IAAI,SAAS,IAAI;AAC1B,UAAI,IAAIvE,OAAM;AACd,UAAI,IAAI,KAAKA,OAAM,SAAS,SAAS,GAAG;AACtC,QAAAA,SAAQ,CAAC,GAAG,oBAAI,IAAI,CAAC,WAAW,GAAGA,MAAK,CAAC,CAAC,EAAE,QAAS;AAAA,MAC3D;AACI,aAAO,MAAM,EAAG,OAAM,KAAKV,QAAO,OAAOU,OAAM,CAAC,CAAC,GAAG,KAAK,EAAE;AAC3D,aAAO;AAAA,IACR;AAED,UAAM,SAAS,CAAC,MAAM,OAAO,SAAS;AACpC,MAAAV,QAAO,OAAO,IAAI,IAAI/B,MAAK,EAAE,MAAM,OAAO;AAC1C,UAAI,OAAO+B,QAAO,KAAK,IAAI,MAAMA,QAAO,KAAK,IAAI,IAAI;AACrD,WAAK,KAAK,IAAI;AAEd,cAAQ,eAAeA,SAAQ,MAAM;AAAA,QACnC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,IAAIhC,QAAO;AACT,UAAAgC,QAAO,MAAM,MAAMhC,MAAK;AAAA,QACzB;AAAA,QACD,MAAM;AACJ,cAAI,QAAQ,CAAAiH,WAAS,MAAMA,QAAO,MAAM,KAAK;AAC7C,kBAAQ,eAAe,OAAOjF,OAAM;AACpC,gBAAM,QAAQ,KAAK,QAAQ,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,IAAI;AAC1D,iBAAO;AAAA,QACf;AAAA,MACA,CAAK;AAAA,IACF;AAED,WAAO,SAAS,CAAC,GAAG,CAAC,GAAG,UAAU;AAClC,WAAO,QAAQ,CAAC,GAAG,EAAE,GAAG,UAAU;AAClC,WAAO,OAAO,CAAC,GAAG,EAAE,GAAG,UAAU;AACjC,WAAO,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU;AACpC,WAAO,aAAa,CAAC,GAAG,EAAE,GAAG,UAAU;AACvC,WAAO,WAAW,CAAC,GAAG,EAAE,GAAG,UAAU;AACrC,WAAO,UAAU,CAAC,GAAG,EAAE,GAAG,UAAU;AACpC,WAAO,iBAAiB,CAAC,GAAG,EAAE,GAAG,UAAU;AAE3C,WAAO,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO;AACjC,WAAO,OAAO,CAAC,IAAI,EAAE,GAAG,OAAO;AAC/B,WAAO,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO;AACjC,WAAO,UAAU,CAAC,IAAI,EAAE,GAAG,OAAO;AAClC,WAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO;AAChC,WAAO,WAAW,CAAC,IAAI,EAAE,GAAG,OAAO;AACnC,WAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO;AAChC,WAAO,SAAS,CAAC,IAAI,EAAE,GAAG,OAAO;AACjC,WAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO;AAChC,WAAO,QAAQ,CAAC,IAAI,EAAE,GAAG,OAAO;AAEhC,WAAO,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI;AAChC,WAAO,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI;AAC9B,WAAO,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI;AAChC,WAAO,YAAY,CAAC,IAAI,EAAE,GAAG,IAAI;AACjC,WAAO,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI;AAC/B,WAAO,aAAa,CAAC,IAAI,EAAE,GAAG,IAAI;AAClC,WAAO,UAAU,CAAC,IAAI,EAAE,GAAG,IAAI;AAC/B,WAAO,WAAW,CAAC,IAAI,EAAE,GAAG,IAAI;AAEhC,WAAO,eAAe,CAAC,IAAI,EAAE,GAAG,QAAQ;AACxC,WAAO,aAAa,CAAC,IAAI,EAAE,GAAG,QAAQ;AACtC,WAAO,eAAe,CAAC,IAAI,EAAE,GAAG,QAAQ;AACxC,WAAO,gBAAgB,CAAC,IAAI,EAAE,GAAG,QAAQ;AACzC,WAAO,cAAc,CAAC,IAAI,EAAE,GAAG,QAAQ;AACvC,WAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,QAAQ;AAC1C,WAAO,cAAc,CAAC,IAAI,EAAE,GAAG,QAAQ;AACvC,WAAO,eAAe,CAAC,IAAI,EAAE,GAAG,QAAQ;AAExC,WAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC7C,WAAO,eAAe,CAAC,KAAK,EAAE,GAAG,UAAU;AAC3C,WAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC7C,WAAO,kBAAkB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC9C,WAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC5C,WAAO,mBAAmB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC/C,WAAO,gBAAgB,CAAC,KAAK,EAAE,GAAG,UAAU;AAC5C,WAAO,iBAAiB,CAAC,KAAK,EAAE,GAAG,UAAU;AAE7C,IAAAA,QAAO,YAAY;AACnB,IAAAA,QAAO,WAAWA,QAAO,UAAU,SAAO;AACxC,MAAAA,QAAO,UAAU,YAAY;AAC7B,aAAO,OAAO,QAAQ,YAAY,QAAQ,MAAMA,QAAO,UAAU,KAAK,GAAG;AAAA,IAC1E;AAED,IAAAA,QAAO,QAAQ,CAAC,MAAM,UAAU;AAC9B,UAAI,KAAK,OAAO,UAAU,WAAWA,QAAO,KAAK,IAAI;AAErD,UAAI,OAAO,OAAO,YAAY;AAC5B,cAAM,IAAI,UAAU,2EAA2E;AAAA,MACrG;AAEI,UAAI,CAAC,GAAG,OAAO;AACb,gBAAQ,eAAe,IAAI,QAAQ,EAAE,OAAO,MAAM;AAClD,QAAAA,QAAO,OAAO,IAAI,IAAI;AACtB,WAAG,QAAQ,CAAC,IAAI;AAAA,MACtB;AAEI,cAAQ,eAAeA,SAAQ,MAAM;AAAA,QACnC,cAAc;AAAA,QACd,YAAY;AAAA,QACZ,IAAIhC,QAAO;AACT,UAAAgC,QAAO,MAAM,MAAMhC,MAAK;AAAA,QACzB;AAAA,QACD,MAAM;AACJ,cAAIqlO,SAAQ,CAAAp+N,WAAS,MAAMA,QAAOo+N,OAAM,KAAK;AAC7C,kBAAQ,eAAeA,QAAOrjO,OAAM;AACpC,UAAAqjO,OAAM,QAAQ,KAAK,QAAQ,KAAK,MAAM,OAAO,GAAG,KAAK,IAAI,GAAG;AAC5D,iBAAOA;AAAA,QACf;AAAA,MACA,CAAK;AAAA,IACF;AAED,IAAArjO,QAAO,QAAQ,YAAU;AACvB,UAAI,CAAC,SAAS,MAAM,EAAG,OAAM,IAAI,UAAU,gCAAgC;AAC3E,eAAS,QAAQ,OAAO,KAAK,MAAM,GAAG;AACpC,QAAAA,QAAO,MAAM,MAAM,OAAO,IAAI,CAAC;AAAA,MACrC;AACI,aAAOA;AAAA,IACR;AAED,IAAAA,QAAO,MAAM,WAAW,SAAO;AAC7B,UAAI,OAAO,QAAQ,YAAY,QAAQ,IAAI;AACzC,QAAAA,QAAO,UAAU,YAAY;AAC7B,eAAO,IAAI,QAAQA,QAAO,WAAW,EAAE;AAAA,MAC7C;AACI,aAAO;AAAA,IACX,CAAG;AAED,IAAAA,QAAO,MAAM,QAAQ,SAAO,GAAG;AAC/B,IAAAA,QAAO,OAAOA,QAAO,QAAQA,QAAO;AAEpC,IAAAA,QAAO,aAAaA,QAAO;AAC3B,IAAAA,QAAO,UAAUrC,iBAAoB;AACrC,IAAAqC,QAAO,SAAS;AAChB,WAAOA;AAAA,EACR;AAEasjO,aAAA,UAAG,OAAQ;AACzBA,aAAA,QAAA,SAAwB;;;;;;;;ACrLxB,UAAM,WAAW,OAAO,UAAU;AAClC,UAAMtjO,UAASrC,kBAAsB;AACrC,QAAI,SAAS;AACb,QAAI,MAAM,CAAE;AAEZ,UAAM,cAAc;AAAA,MAClB,UAAU;AAAA,MACV,QAAQ;AAAA,MACR,SAAS;AAAA,MACT,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,WAAW;AAAA,MACX,SAAS;AAAA,IACV;AAED,YAAA,UAAkB,CAAC,KAAK,SAAS;AAC/B,aAAO,IAAI,OAAO,CAAC,GAAG,MAAM,KAAK,IAAI,GAAG,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,CAAC;AAAA,IAC7E;AAED,YAAmB,WAAA,SAAO,CAAC,CAAC,OAAOqC,QAAO,SAAS,GAAG;AAEtD,UAAM,WAAW,QAAmB,WAAA,SAAO;AACzC,aAAO,QAAQ,QAAQ,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,GAAG;AAAA,IACrE;AAED,YAAA,aAAqB,SAAO;AAC1B,aAAO,SAAS,KAAK,GAAG,EAAE,MAAM,GAAG,EAAE,EAAE,YAAa,EAAC,QAAQ,OAAO,EAAE;AAAA,IACvE;AAED,YAAA,YAAoB,SAAO;AACzB,aAAO,QAAQ,WAAW,GAAG,MAAM;AAAA,IACpC;AAED,YAAA,cAAsB,SAAO;AAC3B,aAAO,OAAO,QAAQ,OAAO,QAAQ,YAAY,OAAO,QAAQ;AAAA,IACjE;AAED,YAAA,UAAkB,CAACmW,UAASnY,WAAU,SAAS;AAC7C,UAAI,OAAOA,WAAU,YAAY;AAC/B,eAAOA,OAAM,KAAKmY,UAAS,GAAG,IAAI;AAAA,MACtC;AACE,aAAOnY;AAAA,IACR;AAED,YAAA,aAAqB,CAAC,UAAU,CAAE,MAAK,CAAC,GAAG,QAAQ,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvE,YAAA,WAAmB,CAAC,UAAU,CAAA,MAAO,CAAC,QAAQ,OAAO,GAAG,OAAO;AAE/D,YAAA,UAAkB,CAAC,MAAM,OAAO;AAC9B,UAAI,MAAM,IAAI,MAAO;AACrB,UAAI,KAAK,CAAC,GAAG,MAAM;AACjB,YAAI,EAAE,QAAQ,EAAE,MAAO,QAAO;AAC9B,YAAI,EAAE,QAAQ,EAAE,MAAO,QAAO;AAC9B,eAAO;AAAA,MACX,CAAG;AACD,aAAO;AAAA,IACR;AAED,YAAA,OAAe,CAAC,KAAKP,QAAO2M,SAAQ;AAClC,UAAI,MAAM,IAAI;AACd,UAAI,MAAMA,SAAQ,MAAM,IAAIA,OAAM,IAAI,MAAM,IAAIA;AAChD,UAAI,SAAS,IAAI3M,MAAK;AACtB,UAAIA,MAAK,IAAI,IAAI,GAAG;AACpB,UAAI,GAAG,IAAI;AAAA,IACZ;AAED,YAAA,QAAgB,CAAC,QAAQ,WAAW,OAAO;AACzC,UAAI,UAAW,UAAU,OAAO,UAAW,OAAO,UAAU;AAC5D,UAAI,UAAU,OAAO,OAAO,kBAAkB,YAAY;AACxD,kBAAU,OAAO,cAAe,EAAC,CAAC;AAAA,MACtC;AACE,UAAI,QAAQ,aAAa,SAAS;AAChC,eAAO,UAAU;AAAA,MACrB;AACE,aAAO;AAAA,IACR;AAED,YAAA,SAAiB,CAAC,QAAQ,WAAW,OAAO;AAC1C,UAAI,OAAQ,UAAU,OAAO,OAAQ,OAAO,OAAO;AACnD,UAAI,UAAU,OAAO,OAAO,kBAAkB,YAAY;AACxD,eAAO,OAAO,cAAe,EAAC,CAAC;AAAA,MACnC;AACE,aAAO;AAAA,IACR;AAED,YAAA,WAAmB,CAAC,KAAKH,WAAU,CAAA,MAAO;AACxC,UAAI,CAAC,IAAK,QAAO;AAEjB,UAAI,OAAOA,aAAY,UAAU;AAC/B,QAAAA,WAAU,EAAE,OAAOA,SAAS;AAAA,MAChC;AAEE,UAAI,EAAE,SAAS,IAAI,UAAW,OAAO,QAAS,QAAQ,GAAE,IAAKA;AAC7D,UAAI,UAAU,UAAU,QAAQ,MAAM,UAAU,KAAK,CAAE;AACvD,eAAS,OAAO;AAChB,UAAI8B,UAAS,OAAO,KAAK;AACzB,UAAI,SAAS,IAAI,KAAM;AACvB,UAAI,QAAQ,IAAI,OAAOA,SAAQ,GAAG;AAClC,UAAI,QAAQ,OAAO,MAAM,KAAK,KAAK,CAAE;AACrC,cAAQ,MAAM,IAAI,CAAArC,UAAQA,MAAK,QAAQ,OAAO,EAAE,CAAC;AACjD,UAAIO,SAAQ,OAAQ,SAAQ,MAAM,IAAI,CAAAP,UAAQA,MAAK,OAAO,OAAO,GAAG,CAAC;AACrE,UAAIO,SAAQ,SAAU,SAAQ,MAAM,IAAI,CAAAP,UAAQA,MAAK,SAAS,OAAO,GAAG,CAAC;AACzE,aAAO,SAAS,MAAM,KAAK,OAAO;AAAA,IACnC;AAED,YAAA,SAAiB,WAAS;AACxB,UAAI,OAAO,MAAM,MAAM,KAAK,OAAKiD,QAAO,KAAK,MAAM,SAAS,CAAC,CAAC;AAC9D,UAAI,MAAM;AACR,eAAOA,QAAO,IAAI;AAAA,MACtB;AACE,UAAI,KAAK,MAAM,MAAM,KAAK,OAAK,EAAE,MAAM,CAAC,MAAM,IAAI;AAClD,UAAI,IAAI;AACN,eAAOA,QAAO,KAAK,MAAM,CAAC,CAAC;AAAA,MAC/B;AACE,aAAO,SAAO;AAAA,IACf;AAED,YAAA,SAAiB,SAAO,MAAM,IAAI,CAAC,EAAE,YAAa,IAAG,IAAI,MAAM,CAAC,IAAI;AAEpE,YAAA,UAAkB,WAAS;AACzB,UAAI,CAAC,SAAS,CAAC,MAAM,MAAO,QAAO;AACnC,UAAI,OAAO,MAAM,MAAM,KAAK,OAAKA,QAAO,KAAK,MAAM,SAAS,CAAC,CAAC;AAC9D,UAAI,MAAM;AACR,YAAI,MAAMA,QAAO,OAAO,QAAQ,OAAO,IAAI,CAAC;AAC5C,eAAO,MAAM,IAAI,QAAQ;AAAA,MAC7B;AACE,UAAI,KAAK,MAAM,MAAM,KAAK,OAAK,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI;AACrD,UAAI,IAAI;AACN,eAAOA,QAAO,GAAG,MAAM,CAAC,EAAE,YAAa,CAAA,KAAK;AAAA,MAChD;AACE,aAAOA,QAAO;AAAA,IACf;AAED,YAAA,aAAqB,WAAS;AAC5B,UAAI,CAAC,SAAS,CAAC,MAAM,MAAO,QAAO;AACnC,UAAI,OAAO,MAAM,MAAM,KAAK,OAAKA,QAAO,KAAK,MAAM,SAAS,CAAC,CAAC;AAC9D,UAAI,KAAK,MAAM,MAAM,KAAK,OAAK,EAAE,MAAM,GAAG,CAAC,MAAM,IAAI;AACrD,UAAI,QAAQ,CAAC,IAAI;AACf,eAAOA,QAAO,YAAY,IAAI,KAAK,IAAI;AAAA,MAC3C;AACE,UAAI,IAAI;AACN,YAAI,QAAQ,GAAG,MAAM,CAAC,EAAE,YAAa;AACrC,YAAI,OAAO,YAAY,KAAK;AAC5B,YAAI,CAAC,KAAM,QAAO;AAClB,eAAOA,QAAO,OAAO,QAAQ,OAAO,IAAI,CAAC,KAAK;AAAA,MAClD;AACE,aAAOA,QAAO;AAAA,IACf;AAED,YAAA,WAAmB,UAAQ;AACzB,UAAI,QAAQ,KAAK,SAAU;AAC3B,UAAI,UAAU,KAAK,WAAY;AAC/B,UAAI,OAAO,SAAS,KAAK,OAAO;AAChC,cAAQ,QAAQ;AAChB,UAAI,MAAM,UAAU,IAAI,KAAK;AAC7B,UAAI,MAAM,UAAU,KAAK,MAAM,UAAU;AACzC,aAAO,MAAM,MAAM,MAAM,MAAM;AAAA,IAChC;AASD,YAAc,MAAA,CAAC,MAAM,CAAE,GAAE,OAAO,IAAI,QAAQ;AAC1C,aAAO,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,GAAG,GAAG,QAAQ;AAChD,YAAIhC,SAAQ,IAAI,SAAS,IAAI,IAAK,IAAI,CAAC,KAAK,CAAA,IAAM;AAClD,YAAI,CAAC,QAAQ,SAASA,MAAK,KAAK,IAAI,IAAI,SAAS,EAAG,CAAAA,SAAQ,CAAE;AAC9D,eAAQ,IAAI,CAAC,IAAIA;AAAA,MAClB,GAAE,GAAG;AAAA,IACP;AAQD,YAAc,MAAA,CAAC,MAAM,CAAE,GAAE,OAAO,IAAI,aAAa;AAC/C,UAAIA,SAAQ,IAAI,IAAI,KAAK,OACrB,KAAK,MAAM,GAAG,EAAE,OAAO,CAAC,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,GAAG,IACrD,IAAI,IAAI;AACZ,aAAOA,UAAS,OAAO,WAAWA;AAAA,IACnC;AAED,YAAA,QAAgB,CAAC,QAAQ,MAAM;AAC7B,UAAI,CAAC,SAAS,MAAM,EAAG,QAAO;AAC9B,UAAI,CAAC,SAAS,CAAC,EAAG,QAAO;AACzB,eAASJ,QAAO,OAAO,KAAK,CAAC,GAAG;AAC9B,YAAI,OAAO,OAAO,yBAAyB,GAAGA,IAAG;AACjD,YAAI,KAAK,eAAe,OAAO,GAAG;AAChC,cAAI,OAAO,eAAeA,IAAG,KAAK,SAAS,KAAK,KAAK,GAAG;AACtD,gBAAI,WAAW,OAAO,yBAAyB,QAAQA,IAAG;AAC1D,gBAAI,SAAS,SAAS,KAAK,GAAG;AAC5B,qBAAOA,IAAG,IAAI,QAAQ,MAAM,CAAA,GAAI,OAAOA,IAAG,GAAG,EAAEA,IAAG,CAAC;AAAA,YAC7D,OAAe;AACL,sBAAQ,eAAe,QAAQA,MAAK,IAAI;AAAA,YAClD;AAAA,UACA,OAAa;AACL,oBAAQ,eAAe,QAAQA,MAAK,IAAI;AAAA,UAChD;AAAA,QACA,OAAW;AACL,kBAAQ,eAAe,QAAQA,MAAK,IAAI;AAAA,QAC9C;AAAA,MACA;AACE,aAAO;AAAA,IACR;AAED,YAAgB,QAAA,IAAI,SAAS;AAC3B,UAAI,SAAS,CAAE;AACf,eAAS,OAAO,KAAM,SAAQ,MAAM,QAAQ,GAAG;AAC/C,aAAO;AAAA,IACR;AAED,YAAA,eAAuB,CAAC,KAAK,YAAY;AACvC,UAAI,QAAQ,QAAQ,YAAY;AAChC,eAASA,QAAO,OAAO,KAAK,KAAK,GAAG;AAClC,YAAI,MAAM,MAAMA,IAAG;AACnB,YAAI,OAAO,QAAQ,YAAY;AAC7B,kBAAQ,OAAO,KAAKA,MAAK,IAAI,KAAK,OAAO,CAAC;AAAA,QAChD,OAAW;AACL,kBAAQ,OAAO,KAAKA,MAAK,GAAG;AAAA,QAClC;AAAA,MACA;AAAA,IACC;AAED,YAAA,SAAiB,cAAY;AAC3B,YAAM,SAAS,CAAC,MAAM,SAAS;AAC7B,YAAI,OAAQ;AAEZ,iBAAS;AACT,YAAI,QAAQ,QAAM,IAAI;AAEtB,YAAI,SAAS,MAAM;AACjB,kBAAQ,KAAK,MAAM,IAAI;AAAA,QAC7B;AAAA,MACG;AAED,UAAI,IAAI,WAAW,GAAG;AACpB,gBAAQ,KAAK,WAAW,OAAO,KAAK,MAAM,MAAM,EAAE,CAAC;AACnD,gBAAQ,KAAK,UAAU,OAAO,KAAK,MAAM,MAAM,CAAC,CAAC;AACjD,gBAAQ,KAAK,QAAQ,MAAM;AAAA,MAC/B;AAEE,UAAI,KAAK,QAAQ;AAAA,IAClB;AAED,YAAA,SAAiB,CAAC,KAAKA,MAAKI,WAAU;AACpC,cAAQ,eAAe,KAAKJ,MAAK,EAAE,OAAAI,OAAK,CAAE;AAAA,IAC3C;AAED,YAAA,eAAuB,CAAC,KAAKJ,MAAK,OAAO;AACvC,UAAI;AACJ,cAAQ,eAAe,KAAKA,MAAK;AAAA,QAC/B,YAAY;AAAA,QACZ,cAAc;AAAA,QACd,IAAI,KAAK;AACP,mBAAS;AAAA,QACV;AAAA,QACD,MAAM;AACJ,iBAAO,SAAS,OAAQ,IAAG,GAAI;AAAA,QACrC;AAAA,MACA,CAAG;AAAA;;;;;;;;;;ACnQH,SAAA,OAAe;AAAA,IACb,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,EACJ;AAED,SAAA,QAAgB;AAAA,IACd,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,KAAK;AAAA,EACN;AAED,SAAA,KAAa;AAAA,IACX,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,EACT;AAGD,SAAA,SAAiB;AAAA,IACf,GAAG;AAAA,IACH,GAAG;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,MAAM;AAAA,EACP;AAED,SAAA,OAAe;AAAA,IACb,QAAQ;AAAA;AAAA,IACR,UAAU;AAAA;AAAA,IACV,MAAM;AAAA;AAAA,IACN,KAAK;AAAA;AAAA,IACL,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,KAAK;AAAA,IACL,IAAI;AAAA,EACL;;;;;;;;ACxED,QAAM2lO,YAAW5lO;AACjB,QAAM6lO,UAASllO,cAAmB;AAGlC,QAAM,gBAAgB;AACtB,QAAM,UAAU;AAChB,QAAM,UAAU;AAAA;AAAA,IAEZ,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA;AAAA,IAEN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,IAEP,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA;AAAA,IAEN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA;AAAA,IAEN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,IAEP,QAAQ;AAAA,IACR,QAAQ;AAAA;AAAA,IAER,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,IAEP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IAEN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IAEP,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IACN,MAAM;AAAA,IAEN,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA;AAAA,IAEP,MAAM;AAAA,EACV;AAEA,WAAS,WAAW,MAAM;AACtB,WAAO,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,OAAO,IAAI,EAAE,SAAS,IAAI;AAAA,EACvG;AAEA,WAAS,UAAU,MAAM;AACrB,WAAO,CAAE,MAAM,MAAM,MAAM,MAAM,MAAM,OAAO,OAAO,OAAO,OAAO,OAAO,KAAK,EAAE,SAAS,IAAI;AAAA,EAClG;AAEA,QAAM,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAA,MAAO;AACvC,QAAI;AACJ,QAAIV,OAAM;AAAA,MACR,MAAM,MAAM;AAAA,MACZ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,KAAK;AAAA,MACL,GAAG;AAAA,IACJ;AAED,QAAI,OAAO,SAAS,CAAC,GAAG;AACtB,UAAI,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,MAAM,QAAQ;AACjC,UAAE,CAAC,KAAK;AACR,YAAI,SAAS,OAAO,CAAC;AAAA,MAC3B,OAAW;AACL,YAAI,OAAO,CAAC;AAAA,MAClB;AAAA,IACG,WAAU,MAAM,UAAU,OAAO,MAAM,UAAU;AAChD,UAAI,OAAO,CAAC;AAAA,IAChB,WAAa,CAAC,GAAG;AACb,UAAIA,KAAI,YAAY;AAAA,IACxB;AAEE,IAAAA,KAAI,WAAWA,KAAI,YAAY,KAAKA,KAAI;AAExC,QAAI,MAAM,MAAM;AAEd,MAAAA,KAAI,MAAM;AACV,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,MAAM,MAAM;AAErB,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,MAAM,KAAM;AAErB,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,MAAM,QAAQ,MAAM,OAAU,MAAM,WAAc,MAAM,UAAU;AAE3E,MAAAA,KAAI,OAAO;AACX,MAAAA,KAAI,OAAO,EAAE,OAAO,CAAC,MAAM;AAAA,IAC5B,WAAU,MAAM,UAAU,MAAM,YAAY;AAE3C,MAAAA,KAAI,OAAO;AACX,MAAAA,KAAI,OAAO,EAAE,WAAW;AAAA,IACzB,WAAU,MAAM,OAAO,MAAM,SAAS;AACrC,MAAAA,KAAI,OAAO;AACX,MAAAA,KAAI,OAAO,EAAE,WAAW;AAAA,IAC5B,WAAa,KAAK,KAAQ;AAEtB,MAAAA,KAAI,OAAO,OAAO,aAAa,EAAE,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,IAAI,CAAC;AACtE,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,EAAE,WAAW,KAAK,KAAK,OAAO,KAAK,KAAK;AAEjD,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,EAAE,WAAW,KAAK,KAAK,OAAO,KAAK,KAAK;AAEjD,MAAAA,KAAI,OAAO;AAAA,IACf,WAAa,EAAE,WAAW,KAAK,KAAK,OAAO,KAAK,KAAK;AAEjD,MAAAA,KAAI,OAAO,EAAE,YAAa;AAC1B,MAAAA,KAAI,QAAQ;AAAA,IACb,WAAW,QAAQ,cAAc,KAAK,CAAC,GAAI;AAE1C,MAAAA,KAAI,OAAO;AACX,MAAAA,KAAI,QAAQ,UAAU,KAAK,MAAM,CAAC,CAAC;AAAA,IACpC,WAAW,QAAQ,QAAQ,KAAK,CAAC,GAAI;AACpC,UAAI,OAAO,CAAC,GAAG,CAAC;AAEhB,UAAI,KAAK,CAAC,MAAM,UAAY,KAAK,CAAC,MAAM,QAAU;AAChD,QAAAA,KAAI,SAAS;AAAA,MACnB;AAKI,UAAI,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,EAAE,OAAO,OAAO,EAAE,KAAK,EAAE;AAC3E,UAAI,YAAY,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,KAAK;AAG7C,MAAAA,KAAI,OAAO,CAAC,EAAE,WAAW;AACzB,MAAAA,KAAI,OAAO,CAAC,EAAE,WAAW;AACzB,MAAAA,KAAI,QAAQ,CAAC,EAAE,WAAW;AAC1B,MAAAA,KAAI,OAAO;AAEX,MAAAA,KAAI,OAAO,QAAQ,IAAI;AACvB,MAAAA,KAAI,QAAQ,WAAW,IAAI,KAAKA,KAAI;AACpC,MAAAA,KAAI,OAAO,UAAU,IAAI,KAAKA,KAAI;AAAA,IACtC;AACE,WAAOA;AAAA,EACR;AAED,WAAS,SAAS,CAACN,WAAU,CAAA,GAAI,eAAe;AAC9C,QAAI,EAAE,MAAK,IAAKA;AAEhB,QAAI,CAAC,SAAU,UAAU,QAAQ,SAAS,CAAC,MAAM,OAAQ;AACvD,YAAM,IAAI,MAAM,uBAAuB;AAAA,IAC3C;AAEE,QAAI,KAAKimO,UAAS,gBAAgB,EAAE,UAAU,MAAM,OAAO,OAAO;AAClE,IAAAA,UAAS,mBAAmB,OAAO,EAAE;AAErC,QAAI,KAAK,CAAC,KAAK3lO,SAAQ,WAAW,KAAK,SAAS,KAAKA,IAAG,GAAG,EAAE;AAC7D,QAAI,QAAQ,MAAM;AAElB,QAAI,MAAM,MAAO,OAAM,WAAW,IAAI;AACtC,UAAM,GAAG,YAAY,EAAE;AACvB,OAAG,OAAQ;AAEX,QAAI,MAAM,MAAM;AACd,UAAI,MAAM,MAAO,OAAM,WAAW,KAAK;AACvC,YAAM,eAAe,YAAY,EAAE;AACnC,SAAG,MAAO;AACV,SAAG,MAAO;AAAA,IACX;AAED,WAAO;AAAA,EACR;AAED,WAAS,SAAS,CAAC,KAAKA,MAAK,kBAAkB;AAC7C,QAAI,MAAM,EAAE,GAAG4lO,SAAQ,GAAG,cAAe;AACzC,QAAI5lO,KAAI,MAAM;AACZ,MAAAA,KAAI,SAAS,IAAI,KAAKA,KAAI,IAAI;AAC9B,aAAOA;AAAA,IACX;AAEE,QAAIA,KAAI,UAAU,IAAI,QAAQ;AAC5B,MAAAA,KAAI,SAAS,IAAI,OAAOA,KAAI,IAAI;AAChC,aAAOA;AAAA,IACX;AAEE,QAAIA,KAAI,OAAO;AACb,MAAAA,KAAI,SAAS,IAAI,MAAMA,KAAI,IAAI;AAC/B,aAAOA;AAAA,IACX;AAEE,IAAAA,KAAI,SAAS,IAAI,KAAKA,KAAI,IAAI;AAC9B,WAAOA;AAAA,EACR;AAED,eAAiB;;;;;;;;AChPH,UAAG,CAAA6lO,YAAU;AACzB,IAAAA,QAAO,SAASA,QAAO,UAAU,CAAE;AAEnC,QAAI,SAASA,QAAO,QAAQ;AAC5B,QAAI,CAAC,OAAQ;AAEb,aAAS7lO,QAAO,OAAO,KAAK,MAAM,GAAG;AACnC,UAAI,OAAO,OAAOA,IAAG;AACrB,UAAI,OAAO,SAAS,UAAU;AAC5B,eAAO,EAAE,UAAU,KAAM;AAAA,MAC/B;AACI,aAAO6lO,SAAQ7lO,MAAK,IAAI;AAAA,IAC5B;AAAA,EACC;AAED,WAAS,OAAO6lO,SAAQ,MAAMnmO,WAAU,CAAA,GAAI;AAC1C,QAAIomO,SAAQD,QAAO,OAAO,IAAI,IAAI,EAAE,MAAM,OAAO,KAAK,IAAG,GAAI,IAAI,GAAG,MAAM,EAAG;AAC7E,QAAI,KAAKnmO,SAAQ,YAAY;AAC7B,IAAAomO,OAAM,SAASpmO,SAAQ,UAAU,CAAE;AACnC,IAAAomO,OAAM,UAAU;AAEhB,QAAI,WAAW,YAAY,MAAM;AAC/B,MAAAA,OAAM,KAAK,KAAK,IAAK,IAAGA,OAAM;AAC9B,MAAAA,OAAM;AACN,MAAAD,QAAO,OAAQ;AAAA,IAChB,GAAE,EAAE;AAEL,IAAAC,OAAM,OAAO,MAAM;AACjB,MAAAA,OAAM,UAAU;AAChB,oBAAc,QAAQ;AAAA,IACvB;AAED,YAAQ,eAAeA,QAAO,YAAY,EAAE,OAAO,UAAU;AAC7D,IAAAD,QAAO,KAAK,SAAS,MAAMC,OAAM,KAAI,CAAE;AACvC,WAAOA,OAAM;AAAA,EACf;;;;;;;;ACnCA,QAAM,EAAE,QAAQ,MAAO,IAAG/lO,aAAkB;AAAA,EAE5C,MAAM,MAAM;AAAA,IACV,YAAY8lO,SAAQ;AAClB,UAAInmO,WAAUmmO,QAAO;AACrB,aAAO,MAAM,WAAWA,OAAM;AAC9B,WAAK,OAAOA,QAAO;AACnB,WAAK,OAAOA,QAAO;AACnB,WAAK,UAAU;AACf,WAAK,SAAS;AACd,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,OAAO;AACZ,WAAK,QAAQ;AACb,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,QAAQ;AACb,WAAK,OAAO;AACZ,WAAK,SAAS;AACd,WAAK,SAAS;AACd,WAAK,QAAQ,MAAMnmO,SAAQ,UAAU,QAAQ,MAAM;AACnD,aAAO,OAAO,MAAMA,QAAO;AAC3B,WAAK,OAAO,KAAK,QAAQ,KAAK;AAC9B,WAAK,UAAU,KAAK,WAAW,KAAK;AACpC,WAAK,UAAUmmO,QAAO;AACtB,WAAK,SAASA,QAAO;AACrB,WAAK,WAAW,oBAAI,IAAK;AACzB,WAAK,YAAY;AACjB,WAAK,YAAY;AAAA,IACrB;AAAA,IAEE,QAAQ;AACN,UAAI3mO,SAAQ,EAAE,GAAG,KAAM;AACvB,MAAAA,OAAM,SAAS,KAAK;AACpB,MAAAA,OAAM,SAAS,OAAO,KAAKA,OAAM,MAAM;AACvC,aAAOA,OAAM;AACb,aAAOA;AAAA,IACX;AAAA,IAEE,IAAI,MAAM,KAAK;AACb,WAAK,SAAS;AAAA,IAClB;AAAA,IACE,IAAI,QAAQ;AACV,UAAI,SAAS,KAAK,OAAO;AACzB,UAAI,KAAK,UAAW,QAAO,OAAO;AAClC,UAAI,KAAK,UAAW,QAAO,OAAO;AAClC,UAAI,QAAQ,KAAK,UAAU,OAAO,KAAK,MAAM;AAC7C,aAAO,OAAO,UAAU,aAAa,QAAQ,OAAO;AAAA,IACxD;AAAA,IAEE,IAAI,QAAQkB,QAAO;AACjB,WAAK,WAAWA;AAAA,IACpB;AAAA,IACE,IAAI,UAAU;AACZ,UAAI,OAAO,KAAK,aAAa,UAAW,QAAO,KAAK;AACpD,UAAI,KAAK,eAAgB,QAAO;AAChC,aAAO;AAAA,IACX;AAAA,IAEE,IAAI,SAAS;AACX,UAAI,KAAK,UAAW,QAAO;AAC3B,UAAI,KAAK,UAAW,QAAO;AAC3B,aAAO;AAAA,IACX;AAAA,EACA;AAEA,UAAiB;;;;;;;;AClEjB,QAAMgF,SAAQrF,aAAkB;AAChC,QAAMqC,UAAS1B,kBAAsB;AAErC,QAAM,SAAS;AAAA,IACb,SAAS0B,QAAO;AAAA,IAChB,MAAMA,QAAO;AAAA;AAAA;AAAA;AAAA,IAMb,IAAI,QAAQ,QAAQ;AAClB,WAAK,WAAW;AAAA,IACjB;AAAA,IACD,IAAI,UAAU;AACZ,aAAO,KAAK,YAAYgD,OAAM,QAAQ,KAAK,OAAO;AAAA,IACnD;AAAA,IAED,IAAI,WAAW,QAAQ;AACrB,WAAK,cAAc;AAAA,IACpB;AAAA,IACD,IAAI,aAAa;AACf,aAAO,KAAK,eAAeA,OAAM,WAAW,KAAK,OAAO;AAAA,IACzD;AAAA;AAAA;AAAA;AAAA,IAMD,SAAShD,QAAO;AAAA;AAAA;AAAA;AAAA,IAMhB,SAASA,QAAO;AAAA,IAChB,QAAQA,QAAO;AAAA,IACf,QAAQA,QAAO;AAAA,IACf,SAASA,QAAO;AAAA,IAChB,OAAOA,QAAO;AAAA,IACd,UAAUA,QAAO;AAAA,IACjB,MAAMA,QAAO,IAAI;AAAA,IACjB,WAAWA,QAAO;AAAA,IAElB,IAAI,KAAK,QAAQ;AACf,WAAK,QAAQ;AAAA,IACd;AAAA,IACD,IAAI,OAAO;AACT,aAAO,KAAK,SAAS,KAAK;AAAA,IAC3B;AAAA,IAED,IAAI,GAAG,QAAQ;AACb,WAAK,MAAM;AAAA,IACZ;AAAA,IACD,IAAI,KAAK;AACP,aAAO,KAAK,OAAO,KAAK,QAAQ;AAAA,IACjC;AAAA,IAED,IAAI,QAAQ,QAAQ;AAClB,WAAK,WAAW;AAAA,IACjB;AAAA,IACD,IAAI,UAAU;AACZ,aAAO,KAAK,YAAY,KAAK,MAAM;AAAA,IACpC;AAAA;AAAA;AAAA;AAAA,IAMD,IAAI,QAAQ,QAAQ;AAClB,WAAK,WAAW;AAAA,IACjB;AAAA,IACD,IAAI,UAAU;AACZ,aAAO,KAAK,YAAY,KAAK;AAAA,IAC9B;AAAA,IAED,IAAI,UAAU,QAAQ;AACpB,WAAK,aAAa;AAAA,IACnB;AAAA,IACD,IAAI,YAAY;AACd,aAAO,KAAK,cAAc,KAAK;AAAA,IAChC;AAAA,IAED,IAAI,UAAU,QAAQ;AACpB,WAAK,aAAa;AAAA,IACnB;AAAA,IACD,IAAI,YAAY;AACd,aAAO,KAAK,cAAc,KAAK;AAAA,IAChC;AAAA;AAAA;AAAA;AAAA,IAMD,IAAI,OAAO,QAAQ;AACjB,WAAK,UAAU;AAAA,IAChB;AAAA,IACD,IAAI,SAAS;AACX,aAAO,KAAK,WAAW,KAAK;AAAA,IAC7B;AAAA,IAED,IAAI,YAAY,QAAQ;AACtB,WAAK,eAAe;AAAA,IACrB;AAAA,IACD,IAAI,cAAc;AAChB,aAAO,KAAK,gBAAgB,KAAK,QAAQ;AAAA,IAC1C;AAAA,IAED,IAAI,UAAU,QAAQ;AACpB,WAAK,aAAa;AAAA,IACnB;AAAA,IACD,IAAI,YAAY;AACd,aAAO,KAAK,cAAc,KAAK;AAAA,IACnC;AAAA,EACC;AAED,SAAO,QAAQ,CAAC1C,WAAU,OAAO;AAC/B,QAAIA,SAAQ,UAAU,OAAOA,SAAQ,OAAO,YAAY,WAAW;AACjE,MAAA0C,QAAO,UAAU1C,SAAQ,OAAO;AAAA,IACpC;AACE,QAAIA,SAAQ,UAAU,OAAOA,SAAQ,OAAO,YAAY,WAAW;AACjE,MAAA0C,QAAO,UAAU1C,SAAQ,OAAO;AAAA,IACpC;AAEE,QAAI,SAAS0F,OAAM,MAAM,CAAE,GAAE,QAAQ1F,SAAQ,MAAM;AACnD,WAAO,OAAO;AAEd,aAASM,QAAO,OAAO,KAAKoC,OAAM,GAAG;AACnC,UAAI,CAAC,OAAO,eAAepC,IAAG,GAAG;AAC/B,gBAAQ,eAAe,QAAQA,MAAK,EAAE,KAAK,MAAMoC,QAAOpC,IAAG,GAAG;AAAA,MACpE;AAAA,IACA;AAEE,aAASA,QAAO,OAAO,KAAKoC,QAAO,MAAM,GAAG;AAC1C,UAAI,CAAC,OAAO,eAAepC,IAAG,GAAG;AAC/B,gBAAQ,eAAe,QAAQA,MAAK,EAAE,KAAK,MAAMoC,QAAOpC,IAAG,GAAG;AAAA,MACpE;AAAA,IACA;AACE,WAAO;AAAA,EACR;AAED,aAAiB;;;;;;;;AC7IjB,QAAM,YAAY,QAAQ,aAAa;AACvC,QAAMoC,UAASrC,kBAAsB;AACrC,QAAMqF,SAAQ1E,aAAkB;AAEhC,QAAM25D,WAAU;AAAA,IACd,GAAGj4D,QAAO;AAAA,IACV,mBAAmB;AAAA,IACnB,oBAAoB;AAAA,IACpB,aAAa;AAAA,IACb,UAAU;AAAA,IACV,UAAU;AAAA,IACV,aAAa;AAAA,IACb,eAAe;AAAA,IACf,eAAe;AAAA,IACf,eAAe;AAAA,IACf,WAAW;AAAA,IACX,aAAa;AAAA,IACb,WAAWA,QAAO,QAAQ;AAAA,IAC1B,WAAW;AAAA,IACX,MAAM;AAAA,IACN,OAAO;AAAA,IACP,gBAAgB;AAAA,IAChB,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,IACT,UAAU;AAAA,IACV,eAAe;AAAA,IACf,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,MAAM;AAAA,IACN,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,SAAS,EAAE,KAAK,KAAK,IAAI,KAAK,UAAU,IAAK;AAAA,IAC7C,QAAQ,EAAE,IAAI,KAAK,KAAK,KAAK,UAAU,IAAK;AAAA,IAC5C,OAAO,EAAE,IAAI,KAAK,KAAK,KAAK,UAAU,IAAK;AAAA,IAC3C,QAAQ,EAAE,IAAI,KAAK,KAAK,KAAK,UAAU,IAAK;AAAA,IAC5C,QAAQ;AAAA,MACN,SAASA,QAAO,QAAQ;AAAA,MACxB,WAAWA,QAAO,QAAQ;AAAA,MAC1B,WAAWA,QAAO,QAAQ;AAAA,IAC3B;AAAA,IACD,WAAW;AAAA,MACT,SAASA,QAAO,QAAQ;AAAA,MACxB,WAAWA,QAAO,QAAQ;AAAA,MAC1B,WAAWA,QAAO,QAAQ;AAAA,IAC3B;AAAA,IACD,OAAO;AAAA,MACL,KAAK,YAAY,QAAQ;AAAA,MACzB,IAAI,YAAY,QAAQ;AAAA,MACxB,UAAU,YAAY,QAAQ;AAAA,IAC/B;AAAA,IACD,SAAS,CAAC,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,GAAG;AAAA,EACxQ;AAED,EAAAi4D,SAAQ,QAAQ,CAAA36D,aAAW;AACzB,QAAI,SAAS0F,OAAM,MAAM,CAAE,GAAEhD,QAAO,SAASi4D,UAAS36D,SAAQ,OAAO;AACrE,WAAO,OAAO;AACd,WAAO;AAAA,EACR;AAED,cAAiB26D;;;;;;;;AC9DjB,QAAM,SAASt6D,cAAmB;AAClC,QAAMs6D,WAAU35D,eAAoB;AACpC,QAAM0E,SAAQ/D,aAAkB;AAElB,UAAG,CAAAwkO,YAAU;AACzB,IAAAA,QAAO,UAAUzgO,OAAM,MAAM,CAAA,GAAIygO,QAAO,QAAQ,OAAOA,QAAO,OAAO;AACrE,IAAAA,QAAO,UAAUxrK,SAAQ,MAAMwrK,QAAO,OAAO;AAC7C,IAAAA,QAAO,SAAS,OAAO,MAAMA,QAAO,OAAO;AAAA,EAC5C;;;;;;;;;ACRD,UAAM,SAAS,QAAQ,IAAI,iBAAiB;AAC5C,UAAMzjO,UAASrC,kBAAsB;AACrC,UAAMqF,SAAQ1E,aAAkB;AAChC,UAAML,QAAOO,QAAA,UAAiB;AAC9B,UAAM,MAAM;AACZ,UAAM,MAAM;AACZ,QAAI,SAAS;AAEb,UAAM,OAAOP,MAAK,OAAO;AAAA,MACvB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW,GAAG,GAAG;AAAA,MACjB,MAAM,GAAG,GAAG;AAAA,MACZ,KAAK;AAAA,MACL,aAAa,GAAG,GAAG;AAAA,MACnB,MAAM,GAAG,GAAG;AAAA,MACZ,MAAM,GAAG,GAAG;AAAA,MACZ,SAAS,GAAG,GAAG;AAAA,MACf,WAAW,GAAG,GAAG;AAAA,MACjB,iBAAiB,OAAO,SAAS,MAAM;AAAA,MACvC,cAAc,OAAO,SAAS,MAAM;AAAA,MACpC,QAAQ,GAAG,GAAG;AAAA,MACd,MAAM,GAAG,GAAG;AAAA,MACZ,IAAI,GAAG,GAAG;AAAA,IACX;AAED,UAAM,SAASA,MAAK,SAAS;AAAA,MAC3B,IAAI,SAAS;AACX,eAAO;AAAA,MACR;AAAA,MAED,OAAO;AACL,iBAAS;AACT,eAAO,KAAK;AAAA,MACb;AAAA,MACD,OAAO;AACL,iBAAS;AACT,eAAO,KAAK;AAAA,MACb;AAAA,MAED,SAAS,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACtC,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,GAAG,KAAK;AAAA,MACvC,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MAC/C,UAAU,CAAC,QAAQ,MAAM,GAAG,GAAG,IAAI,OAAO,KAAK;AAAA,MAE/C,IAAI,CAAC,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,MAAM;AAAA,MAC/C,MAAM,CAAC,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,MAAM;AAAA,MACjD,OAAO,CAAC,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,MAAM;AAAA,MAClD,MAAM,CAAC,QAAQ,MAAM,QAAQ,GAAG,GAAG,GAAG,KAAK,MAAM;AAAA,MAEjD,GAAG,GAAG,GAAG;AACP,eAAO,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;AAAA,MACvD;AAAA,MAED,KAAK,IAAI,GAAG,IAAI,GAAG;AACjB,YAAI,MAAM;AACV,eAAQ,IAAI,IAAK,OAAO,KAAK,CAAC,CAAC,IAAK,IAAI,IAAK,OAAO,MAAM,CAAC,IAAI;AAC/D,eAAQ,IAAI,IAAK,OAAO,GAAG,CAAC,CAAC,IAAK,IAAI,IAAK,OAAO,KAAK,CAAC,IAAI;AAC5D,eAAO;AAAA,MACR;AAAA,MAED,QAAQnB,SAAQ,IAAI;AAClB,YAAI,EAAE,OAAO,QAAAmqJ,SAAQ,SAAS,OAAAhiJ,QAAO,QAAAw+N,SAAQ,MAAM,OAAAzlO,OAAK,IAAKlB;AAC7D,kBAAUkG,OAAM,YAAY,OAAO,IAAI,OAAO,OAAO,IAAI;AACzD,QAAAiC,SAAQjC,OAAM,YAAYiC,MAAK,IAAI,OAAOA,MAAK,IAAI;AACnD,QAAAjH,SAAQgF,OAAM,YAAYhF,MAAK,IAAI,OAAOA,MAAK,IAAI;AAEnD,YAAI,MAAM;AACR,cAAI,QAAQC,MAAK,OAAO,GAAG,IAAI,IAAIA,MAAK,OAAO,GAAGwlO,QAAO,MAAM;AAC/D,cAAI,OAAOx+N,OAAM,SAASgiJ;AAC1B,cAAI,OAAO,GAAG;AACZ,qBAAShpJ,MAAK,OAAO,KAAK,IAAI;AAAA,UACtC;AACM,iBAAO;AAAA,QACb;AAEI,YAAID,UAAS,OAAO;AAClB,cAAIoM,OAAO,CAACnF,UAAS,CAAC,CAAC,UAAW,CAAC,QAAQ,SAAS,CAACA,OAAM,SAASgiJ;AACpE,cAAI,MAAO,CAAA78I,QAAO,MAAM;AACxB,cAAInF,WAAU,MAAM,WAAW,CAACw+N,QAAO,SAAS,OAAO,GAAG;AACxD,YAAAr5N,QAAO,QAAQ;AAAA,UACvB;AACM,iBAAOnM,MAAK,OAAO,KAAKmM,IAAG;AAAA,QACjC;AAAA,MACA;AAAA,IACC;AAED,UAAM,QAAQnM,MAAK,QAAQ;AAAA,MACzB,QAAQ,KAAK;AAAA,MACb,IAAI,KAAK;AAAA,MACT,MAAM,KAAK;AAAA,MACX,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,MACd,WAAW,KAAK;AAAA,MAChB,MAAM,GAAG;AACP,YAAI,MAAM;AACV,iBAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,iBAAOA,MAAK,MAAM,QAAQ,IAAI,IAAI,IAAIA,MAAK,OAAO,GAAG,CAAC,IAAI;AAAA,QAChE;AACI,YAAI,EAAG,QAAOA,MAAK,KAAK;AACxB,eAAO;AAAA,MACX;AAAA,IACC;AAED,IAAAA,MAAK,QAAQ,CAACgH,SAAQ,IAAI,UAAU,QAAQ,OAAO,YAAY;AAC7D,UAAI,CAAC,QAAS,QAAO,MAAM,OAAO,OAAO,GAAG,CAAC;AAC7C,UAAI,QAAQ,SAAO,CAAC,GAAGjF,QAAO,QAAQ,GAAG,CAAC,EAAE;AAC5C,UAAI,QAAQiF,OAAM,MAAM,OAAO;AAC/B,UAAI,OAAO;AACX,eAASlI,SAAQ,OAAO;AACtB,gBAAQ,IAAI,KAAK,MAAM,KAAK,IAAI,MAAMA,KAAI,IAAI,GAAG,CAAC,IAAI,OAAO;AAAA,MACjE;AACE,cAAQ,MAAM,OAAO,OAAO,SAAU,GAAE,OAAO,OAAO,CAAC,IAAI,MAAM,OAAO,OAAO,GAAG,CAAC;AAAA;;;;;;;;;AChHrF,QAAM,SAASY,cAAiB;AAChC,QAAMqC,UAAS1B,kBAAsB;AACrC,QAAM,WAAWW,gBAAqB;AACtC,QAAMykO,SAAQvkO,aAAkB;AAChC,QAAM,QAAQmB,aAAkB;AAChC,QAAMqjO,SAAQpjO,aAAkB;AAChC,QAAMyC,SAAQxC,aAAkB;AAChC,QAAMvC,QAAOwC,YAAiB;AAAA,EAO9B,MAAM,eAAe,OAAO;AAAA,IAC1B,YAAYnD,WAAU,IAAI;AACxB,YAAO;AACP,WAAK,OAAOA,SAAQ;AACpB,WAAK,OAAOA,SAAQ;AACpB,WAAK,UAAUA;AACf,MAAAqmO,OAAM,IAAI;AACV,MAAAD,OAAM,IAAI;AACV,WAAK,QAAQ,IAAI,MAAM,IAAI;AAC3B,WAAK,UAAU,CAACpmO,SAAQ,SAASA,SAAQ,OAAO,EAAE,KAAK,OAAK,KAAK,IAAI;AACrE,WAAK,SAASA,SAAQ,UAAU,QAAQ;AACxC,WAAK,QAAQA,SAAQ,SAAS,QAAQ;AACtC,WAAK,QAAQA,SAAQ,SAAS;AAC9B,WAAK,OAAO,KAAK,QAAQ,QAAQ,QAAQ,IAAI;AAC7C,WAAK,SAAS,OAAO,KAAK,QAAQ,MAAM;AACxC,WAAK,gBAAgB,CAAC;AACtB,iBAAW,IAAI;AAAA,IACnB;AAAA,IAEE,MAAM,SAAS2H,QAAO,QAAQ,IAAI;AAChC,WAAK,aAAa;AAClB,UAAIrH,OAAM,SAAS,OAAOqH,QAAO,SAASA,QAAO,KAAK,GAAG,KAAK,QAAQ,OAAO;AAC7E,WAAK,MAAM,WAAWrH;AACtB,WAAK,KAAK,YAAYqH,QAAOrH,IAAG;AAChC,WAAK,KAAK,SAAS,KAAK,MAAM,MAAK,CAAE;AACrC,UAAI,KAAK,KAAK,QAAQA,KAAI,MAAM,KAAK,KAAKA,KAAI,MAAM,KAAK,KAAK;AAC9D,UAAI,OAAO,OAAO,YAAY;AAC5B,eAAO,MAAM,GAAG,KAAK,MAAMqH,QAAOrH,IAAG;AAAA,MAC3C;AACI,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,QAAQ;AACN,aAAO,KAAK,MAAM;AAClB,UAAI,KAAK,QAAQ,SAAS,OAAO;AAC/B,aAAK,KAAK,OAAO;AAAA,MACvB,OAAW;AACL,aAAK,OAAO,MAAMK,MAAK,KAAK,IAAI;AAAA,MACtC;AAAA,IACA;AAAA,IAEE,aAAa;AACX,WAAK,OAAO,MAAMA,MAAK,OAAO,KAAI,CAAE;AACpC,MAAA+E,OAAM,OAAO,MAAM,KAAK,WAAU,CAAE;AAAA,IACxC;AAAA,IAEE,aAAa;AACX,WAAK,OAAO,MAAM/E,MAAK,OAAO,KAAI,CAAE;AAAA,IACxC;AAAA,IAEE,MAAM,KAAK;AACT,UAAI,CAAC,IAAK;AACV,UAAI,KAAK,UAAU,KAAK,MAAM,SAAS,OAAO;AAC5C,aAAK,OAAO,MAAM,GAAG;AAAA,MAC3B;AACI,WAAK,MAAM,UAAU;AAAA,IACzB;AAAA,IAEE,MAAM,QAAQ,GAAG;AACf,UAAI4kO,UAAS,KAAK,MAAM;AACxB,WAAK,MAAM,SAAS;AACpB,UAAK,CAACA,WAAU,CAAC,SAAU,KAAK,QAAQ,SAAS,MAAO;AACxD,WAAK,OAAO,MAAM5kO,MAAK,OAAO,KAAK,KAAK,IAAIA,MAAK,MAAM4kO,SAAQ,KAAK,KAAK,CAAC;AAAA,IAC9E;AAAA,IAEE,UAAU;AACR,UAAI,KAAK,MAAM,UAAU,KAAK,QAAQ,SAAS,MAAO;AAEtD,UAAI,EAAE,QAAAY,SAAQ,OAAO,KAAI,IAAK,KAAK,SAAU;AAC7C,UAAI,EAAE,QAAQ,UAAU,IAAI,OAAAx+N,SAAQ,IAAI,OAAAjH,SAAQ,GAAE,IAAK;AAEvD,UAAI,OAAO,KAAK,MAAM,OAAO,KAAK;AAClC,UAAIlB,SAAQ,EAAE,OAAO,QAAQ,SAAS,OAAAmI,QAAO,QAAAw+N,SAAQ,MAAM,OAAAzlO,OAAO;AAClE,UAAI,QAAQC,MAAK,OAAO,QAAQnB,MAAK;AACrC,UAAI,OAAO;AACT,aAAK,OAAO,MAAM,KAAK;AAAA,MAC7B;AAAA,IACA;AAAA,IAEE,WAAW;AACT,UAAI,EAAE,QAAA+lO,SAAQ,OAAA59N,QAAO,QAAAw+N,QAAQ,IAAG,KAAK;AACrC,MAAAA,UAASzjO,QAAO,QAAQyjO,OAAM;AAC9B,UAAI,MAAMzjO,QAAO,QAAQ6iO,OAAM;AAC/B,UAAI,MAAM,IAAI,QAAQY,OAAM;AAC5B,UAAI,SAAS,IAAI,MAAM,GAAG,GAAG;AAC7B,UAAI,OAAO,IAAI,MAAM,GAAG;AACxB,UAAI,QAAQ,KAAK,MAAM,IAAI;AAC3B,UAAI,QAAQ,MAAM,CAAC;AACnB,UAAI,OAAO,MAAM,MAAM,SAAS,CAAC;AACjC,UAAI,aAAaA,WAAUx+N,SAAQ,MAAMA,SAAQ;AACjD,UAAI,MAAM,WAAW;AACrB,UAAI,QAAQ,MAAM,MAAM,SAAS,MAAM,MAAM,MAAM,CAAC,IAAI;AACxD,aAAO,EAAE,QAAQ,QAAQ,OAAO,OAAO,MAAM,MAAM,MAAM,CAAC,GAAG,KAAM;AAAA,IACvE;AAAA,IAEE,MAAM,SAAS;AACb,WAAK,MAAM,YAAY;AACvB,WAAK,MAAM,aAAa;AAKxB,UAAI,KAAK,QAAQ,UAAU;AACzB,cAAM,KAAK,QAAQ,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI;AAAA,MACxE;AAEI,UAAI,SAAS,KAAK,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,OAAO,KAAK,KAAK;AAC3E,UAAI,WAAW,MAAM;AACnB,YAAIhI,SAAQ,OAAO,KAAK,QAAQ,UAAU;AAE1C,YAAI,OAAO,WAAW,UAAU;AAC9B,UAAAA,UAAS,OAAO,KAAM;AAAA,QAC9B,OAAa;AACL,UAAAA,UAAS;AAAA,QACjB;AAEM,aAAK,MAAM,QAAQ,OAAO,KAAK,OAAO,OAAOA,MAAK;AAClD,aAAK,MAAM,YAAY;AACvB,cAAM,KAAK,OAAQ;AACnB,cAAM,KAAK,MAAO;AAClB,aAAK,MAAM,aAAa;AACxB,aAAK,MAAM,QAAQ;AACnB;AAAA,MACN;AAEI,WAAK,MAAM,aAAa;AACxB,YAAM,KAAK,OAAQ;AACnB,YAAM,KAAK,MAAO;AAElB,WAAK,QAAQ,MAAM,KAAK,OAAO,KAAK,KAAK;AACzC,WAAK,KAAK,UAAU,KAAK,KAAK;AAAA,IAClC;AAAA,IAEE,MAAM,OAAO,KAAK;AAChB,WAAK,MAAM,YAAY,KAAK,MAAM,YAAY;AAE9C,YAAM,KAAK,OAAQ;AACnB,YAAM,KAAK,MAAO;AAElB,UAAI,OAAO,KAAK,QAAQ,aAAa,YAAY;AAC/C,cAAM,KAAK,QAAQ,SAAS,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,IAAI;AAAA,MACxE;AAEI,WAAK,KAAK,UAAU,MAAM,KAAK,MAAM,GAAG,CAAC;AAAA,IAC7C;AAAA,IAEE,MAAM,QAAQ;AACZ,WAAK,MAAM,SAAS;AAEpB,UAAI;AACF,YAAI,WAAW,KAAK,SAAU;AAC9B,YAAI,QAAQ,KAAK,KAAK,SAAS,OAAO,SAAS,KAAK,KAAK;AACzD,YAAI,SAAS,MAAM;AACjB,eAAK,MAAMgB,MAAK,OAAO,KAAK,SAAS,KAAK,MAAM,CAAC;AAAA,QACzD;AACM,aAAK,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,MAC9B,SAAQ,KAAK;AAAA,MAAA;AAEd,WAAK,KAAK,OAAO;AAAA,IACrB;AAAA,IAEE,QAAQ;AACN,UAAI,CAAC,KAAK,QAAQ,KAAK,QAAQ,SAAS,OAAO;AAC7C,aAAK,OAAO,SAAS,OAAO,MAAM,KAAK,SAAS,KAAK,IAAI,CAAC;AAC1D,aAAK,KAAK,SAAS,KAAK,IAAI;AAAA,MAClC;AAAA,IACA;AAAA,IAEE,MAAM,OAAO;AACX,WAAK,UAAU,KAAK,QAAQ,SAAS;AACrC,UAAI,OAAO,KAAK,QAAQ,SAAS,YAAY;AAC3C,aAAK,UAAU,MAAM,KAAK,QAAQ,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,KAAK;AAAA,MAC7E;AACI,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,MAAM,aAAa;AACjB,UAAI,EAAE,QAAQ,SAAAX,UAAS,OAAQ,IAAG;AAElC,WAAK,SAAS,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK;AAChD,WAAK,SAAS,MAAM,OAAO,KAAK,MAAM,KAAK,KAAK;AAEhD,UAAI,OAAOA,SAAQ,YAAY,YAAY;AACzC,aAAK,UAAU,MAAMA,SAAQ,QAAQ,KAAK,MAAM,IAAI;AAAA,MAC1D;AAEI,UAAI,OAAOA,SAAQ,UAAU,YAAY;AACvC,cAAMA,SAAQ,MAAM,KAAK,MAAM,IAAI;AAAA,MACzC;AAKI,UAAI,OAAOA,SAAQ,aAAa,YAAY;AAC1C,YAAI,WAAWA,SAAQ,SAAS,KAAK,IAAI;AACzC,YAAI,SAAS,KAAK,OAAO,KAAK,IAAI;AAClC,eAAO,KAAK,QAAQ;AACpB,aAAK,SAAS,YAAW;AACvB,gBAAM,SAAS,KAAK,MAAM,KAAK,OAAO,IAAI;AAC1C,iBAAO,OAAQ;AAAA,QAChB;AAAA,MACP;AAEI,YAAM,KAAK,MAAO;AAClB,YAAM,KAAK,OAAQ;AAAA,IACvB;AAAA,IAEE,SAAS;AACP,YAAM,IAAI,MAAM,gDAAgD;AAAA,IACpE;AAAA,IAEE,MAAM;AACJ,aAAO,IAAI,QAAQ,OAAM,SAAS,WAAW;AAC3C,aAAK,KAAK,UAAU,OAAO;AAC3B,aAAK,KAAK,UAAU,MAAM;AAC1B,YAAI,MAAM,KAAK,QAAQ;AACrB,eAAK,SAAS,MAAM;AAAA,UAAE;AACtB,iBAAO,KAAK,OAAQ;AAAA,QAC5B;AACM,cAAM,KAAK,WAAY;AACvB,aAAK,KAAK,KAAK;AAAA,MACrB,CAAK;AAAA,IACL;AAAA,IAEE,MAAM,QAAQ,MAAM,QAAQ,GAAG;AAC7B,UAAI,EAAE,SAAAA,UAAS,OAAAR,QAAO,SAAAm7D,UAAS,OAAQ,IAAG;AAC1C,UAAIyrK,SAAQ,UAAU,OAAO,IAAI;AACjC,MAAA5mO,OAAM,QAAQ4mO;AACd,UAAI1lO,SAAQV,SAAQ,IAAI,KAAKR,OAAM,IAAI,KAAKm7D,SAAQ,IAAI;AACxD,UAAI,MAAM,UAAU,OAAO,IAAI,KAAK,OAAO,OAAO,IAAI,IAAI,MAAMj6D;AAChE,UAAI,QAAQ,GAAI,QAAO;AAEvB,UAAI,MAAM,MAAM,KAAK,QAAQ,KAAKlB,QAAO,QAAQ,CAAC;AAClD,UAAI,CAAC,OAAO,UAAU,OAAO,IAAI,GAAG;AAClC,eAAO,KAAK,QAAQkB,QAAOlB,QAAO,QAAQ,CAAC;AAAA,MACjD;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,UAAU,MAAM,KAAK,QAAQ,QAAQ,KAAK,KAAK;AACnD,UAAI4mO,SAAQ,KAAK,UAAU,KAAK,OAAO;AACvC,UAAI5mO,SAAQ,KAAK;AACjB,MAAAA,OAAM,QAAQ4mO;AACd,UAAI1gO,OAAM,SAAS,OAAO,EAAG,WAAU,QAAQlG,OAAM,MAAM,KAAK,QAAQ;AACxE,UAAI,CAACkG,OAAM,SAAS,OAAO,GAAG;AAC5B,YAAI,QAAQ,KAAK,OAAOlG,OAAM,MAAM,KAAK,KAAK,OAAO;AACrD,eAAO,MAAM,OAAO;AAAA,MAC1B;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,UAAU;AACd,UAAI,UAAU,MAAM,KAAK,QAAQ,SAAS;AAC1C,UAAI,CAACkG,OAAM,SAAS,OAAO,GAAG;AAC5B,eAAO,KAAK,OAAO,OAAO,OAAO;AAAA,MACvC;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,YAAY;AAChB,UAAI,UAAU,MAAM,KAAK,QAAQ,WAAW,KAAK,KAAK;AACtD,UAAI0gO,SAAQ,KAAK,UAAU,KAAK,OAAO;AACvC,UAAI5mO,SAAQ,KAAK;AACjB,MAAAA,OAAM,QAAQ4mO;AACd,UAAI1lO,SAAQ,QAAQlB,OAAM,MAAM,KAAK,QAAQ,WAAWA,OAAM;AAC9D,UAAI,MAAM,MAAM,KAAK,QAAQkB,QAAOlB,MAAK;AACzC,UAAIkG,OAAM,SAAS,GAAG,EAAG,OAAM,IAAIlG,OAAM,MAAM,KAAK,IAAI;AACxD,UAAI,CAACkG,OAAM,SAAS,GAAG,GAAG;AACxB,eAAO,KAAK,OAAO,MAAM,GAAG;AAAA,MAClC;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,QAAQ,QAAQ,GAAG;AACvB,UAAI,MAAM,MAAM,KAAK,QAAQ,WAAW,QAAQ,CAAC;AAEjD,UAAI,OAAO,QAAQ,YAAYA,OAAM,SAAS,GAAG,GAAG;AAClD,eAAO;AAAA,MACb;AAEI,UAAI,KAAK;AACP,YAAI,SAAS,KAAK;AAClB,YAAI,UAAU,KAAK,UAAU;AAC7B,YAAI,QAAQ,UAAU,OAAO,UAAU,CAAAwuB,SAAOA;AAC9C,YAAI,MAAM,MAAM,KAAK,QAAQ,IAAI,UAAU,OAAO,KAAK,KAAK,KAAK,KAAK,KAAK;AAC3E,YAAI,SAAS,CAACxuB,OAAM,SAAS,GAAG,IAAI,MAAM,GAAG,IAAI;AACjD,eAAO,UAAU,SAAS,IAAI,OAAO,IAAI,MAAM;AAAA,MACrD;AAAA,IACA;AAAA,IAEE,MAAM,UAAU,QAAQ,GAAG;AACzB,UAAI,MAAM,MAAM,KAAK,QAAQ,aAAa,QAAQ,CAAC;AACnD,UAAI,OAAO,QAAQ,YAAYA,OAAM,SAAS,GAAG,GAAG;AAClD,eAAO;AAAA,MACb;AACI,UAAI,KAAK;AACP,YAAI,SAAS,KAAK;AAClB,YAAI,UAAU,OAAO,YAAY;AACjC,YAAI,QAAQ,UAAU,OAAO,UAAU,OAAO;AAC9C,YAAI,MAAM,IAAI,UAAU,OAAO,KAAK,KAAK;AACzC,eAAO,CAACA,OAAM,SAAS,GAAG,IAAI,MAAM,GAAG,IAAI;AAAA,MACjD;AACI,aAAO;AAAA,IACX;AAAA,IAEE,OAAO;AACL,aAAO;AAAA,IACX;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,MAAM,WAAW,WAAW;AACnC,eAAO,KAAK,QAAQ,QAAQ;AAAA,MAClC;AAAA,IACA;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,MAAM,WAAW,WAAW;AACnC,eAAO,KAAK,QAAQ,QAAQ;AAAA,MAClC;AAAA,IACA;AAAA,IAEE,MAAM,OAAO;AACX,UAAI,KAAK,MAAM,WAAW,aAAa,CAAC,KAAK,QAAQ,KAAK,MAAM,KAAK,GAAG;AACtE,YAAI,OAAO,MAAM,KAAK,QAAQ,MAAM;AACpC,YAAI,CAACA,OAAM,SAAS,IAAI,GAAG;AACzB,iBAAO,KAAK,OAAO,MAAM,IAAI;AAAA,QACrC;AACM,eAAO;AAAA,MACb;AAAA,IACA;AAAA,IAEE,MAAM,KAAK;AACT,aAAO,CAAC,KAAK,MAAM,YAAa,OAAO,KAAK,MAAM,QAAS;AAAA,IAC/D;AAAA,IAEE,OAAOhF,QAAO;AACZ,aAAOA;AAAA,IACX;AAAA,IAEE,OAAOA,QAAO;AACZ,aAAOA;AAAA,IACX;AAAA,IAEE,SAASA,QAAO;AACd,UAAI,KAAK,QAAQ,aAAa,MAAM;AAClC,eAAO,KAAK,QAAQA,MAAK;AAAA,MAC/B;AACI,aAAO;AAAA,IACX;AAAA,IAEE,QAAQA,QAAO;AACb,aAAOA,UAAS,QAAQA,WAAU;AAAA,IACtC;AAAA,IAEE,QAAQA,WAAU,MAAM;AACtB,aAAOgF,OAAM,QAAQ,MAAMhF,QAAO,GAAG,IAAI;AAAA,IAC7C;AAAA,IAEE,IAAI,OAAO;AACT,aAAO,OAAO;AAAA,IAClB;AAAA,IAEE,IAAI,QAAQ;AACV,aAAO,KAAK,OAAO,KAAK,MAAM,MAAM;AAAA,IACxC;AAAA,IAEE,IAAI,SAAS;AACX,aAAO,KAAK,QAAQ,QAAQgF,OAAM,OAAO,KAAK,QAAQ,EAAE;AAAA,IAC5D;AAAA,IACE,IAAI,QAAQ;AACV,aAAO,KAAK,QAAQ,WAAWA,OAAM,MAAM,KAAK,QAAQ,EAAE;AAAA,IAC9D;AAAA,IACE,IAAI,OAAO;AACT,aAAO,EAAE,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAQ;AAAA,IACrD;AAAA,IAEE,IAAI,OAAOhF,QAAO;AAChB,WAAK,MAAM,SAASA;AAAA,IACxB;AAAA,IACE,IAAI,SAAS;AACX,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IAEE,IAAI,MAAMA,QAAO;AACf,WAAK,MAAM,QAAQA;AAAA,IACvB;AAAA,IACE,IAAI,QAAQ;AACV,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IAEE,IAAI,MAAMA,QAAO;AACf,WAAK,MAAM,QAAQA;AAAA,IACvB;AAAA,IACE,IAAI,QAAQ;AACV,UAAI,EAAE,OAAAiH,QAAO,OAAAjH,OAAO,IAAG,KAAK;AAC5B,UAAI,SAAS,CAACA,QAAOiH,MAAK,EAAE,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC;AACxD,aAAO,KAAK,QAAQ,MAAM,IAAI,SAAS,KAAK;AAAA,IAChD;AAAA,IAEE,WAAW,SAAS;AAClB,aAAO,CAAA3H,aAAW,IAAI,KAAKA,QAAO,EAAE,IAAK;AAAA,IAC7C;AAAA,EACA;AAEA,WAAS,WAAWmmO,SAAQ;AAC1B,QAAI,aAAa,CAAA7lO,SAAO;AACtB,aAAO6lO,QAAO7lO,IAAG,MAAM,UAAU,OAAO6lO,QAAO7lO,IAAG,MAAM;AAAA,IACzD;AAED,QAAI,SAAS;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAED,QAAI,WAAW;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACD;AAED,aAASA,QAAO,OAAO,KAAK6lO,QAAO,OAAO,GAAG;AAC3C,UAAI,OAAO,SAAS7lO,IAAG,EAAG;AAC1B,UAAI,WAAW,KAAKA,IAAG,EAAG;AAC1B,UAAI,SAAS6lO,QAAO,QAAQ7lO,IAAG;AAC/B,UAAI,OAAO,WAAW,cAAc,WAAWA,IAAG,GAAG;AACnD,YAAI,CAAC,SAAS,SAASA,IAAG,GAAG;AAC3B,UAAA6lO,QAAO7lO,IAAG,IAAI,OAAO,KAAK6lO,OAAM;AAAA,QACxC;AAAA,MACK,WAAU,OAAOA,QAAO7lO,IAAG,MAAM,YAAY;AAC5C,QAAA6lO,QAAO7lO,IAAG,IAAI;AAAA,MACpB;AAAA,IACA;AAAA,EACA;AAEA,WAAS,OAAOI,QAAO;AACrB,QAAI,OAAOA,WAAU,UAAU;AAC7B,MAAAA,SAAQ,CAACA,QAAOA,QAAOA,QAAOA,MAAK;AAAA,IACvC;AACE,QAAI,MAAM,CAAE,EAAC,OAAOA,UAAS,CAAA,CAAE;AAC/B,QAAI,MAAM,OAAK,IAAI,MAAM,IAAI,OAAO;AACpC,QAAI,MAAM,CAAE;AACZ,aAAS,IAAI,GAAG,IAAI,GAAG,KAAK;AAC1B,UAAI,OAAO,IAAI,CAAC;AAChB,UAAI,IAAI,CAAC,GAAG;AACV,YAAI,KAAK,KAAK,OAAO,IAAI,CAAC,CAAC,CAAC;AAAA,MAClC,OAAW;AACL,YAAI,KAAK,EAAE;AAAA,MACjB;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,WAAiB;;;;;;;;;AClejB,QAAMgF,SAAQrF,aAAkB;AAChC,QAAM,QAAQ;AAAA,IACZ,QAAQ8lO,SAAQ,QAAQ;AACtB,aAAO;AAAA,IACR;AAAA,IACD,SAASA,SAAQ,QAAQ;AACvB,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACvD;AAAA,IACD,SAASA,SAAQ,QAAQ;AACvB,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACvD;AAAA,IACD,WAAWA,SAAQ,QAAQ;AACzB,YAAM,IAAI,MAAM,wCAAwC;AAAA,IACzD;AAAA,IACD,QAAQA,SAAQ,QAAQ;AACtB,aAAO,WAAW;AAClB,aAAO,YAAY,CAAC,OAAO,WAAW,GAAG,EAAE,KAAK,OAAK,KAAK,IAAI;AAC9D,aAAO,UAAU,OAAO,WAAW;AACnC,aAAO;AAAA,IACR;AAAA,IACD,MAAMA,SAAQ,QAAQ;AACpB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACpD;AAAA,IACD,OAAOA,SAAQ,QAAQ;AACrB,aAAO,MAAM,QAAQA,SAAQ,MAAM;AAAA,IACpC;AAAA,IACD,MAAMA,SAAQ,QAAQ;AACpB,YAAM,IAAI,MAAM,mCAAmC;AAAA,IACpD;AAAA,IACD,UAAUA,SAAQ,QAAQ;AACxB,aAAO,WAAW;AAClB,aAAO,YAAY,CAAC,OAAO,WAAW,GAAG,EAAE,KAAK,OAAK,KAAK,IAAI;AAC9D,aAAO,UAAU,OAAO,WAAWA,QAAO,QAAQ,KAAK,OAAO,CAAC;AAC/D,aAAO;AAAA,IACR;AAAA,IACD,OAAOA,SAAQ,QAAQ;AACrB,aAAO;AAAA,IACX;AAAA,EACC;AAED,YAAiB,CAAC,MAAMnmO,WAAU,OAAO;AACvC,QAAI,OAAO0F,OAAM,MAAM,CAAE,GAAE,OAAO1F,SAAQ,KAAK;AAC/C,WAAO,KAAK,IAAI,KAAK,KAAK;AAAA,EAC3B;;;;;;;;AC3CD,QAAM0C,UAASrC,kBAAsB;AACrC,QAAM,SAASW,cAAoB;AACnC,QAAM,QAAQW,aAAmB;AACjC,QAAM+D,SAAQ7D,aAAmB;AACjC,QAAM,EAAE,SAAS,UAAU,YAAY,UAAU,KAAI,IAAK6D;AAAA,EAE1D,MAAM,oBAAoB,OAAO;AAAA,IAC/B,YAAY1F,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,WAAY;AACjB,WAAK,cAAcA,SAAQ,eAAe;AAC1C,WAAK,WAAWA,SAAQ,YAAY;AACpC,WAAK,UAAUA,SAAQ,WAAW;AAClC,WAAK,QAAQA,SAAQ,SAAS;AAC9B,WAAK,UAAU;AACf,WAAK,MAAM;AAAA,IACf;AAAA,IAEE,MAAM,aAAa;AACjB,UAAI,OAAO,KAAK,QAAQ,YAAY,YAAY;AAC9C,aAAK,UAAU,MAAM,KAAK,QAAQ,QAAQ,KAAK,IAAI;AAAA,MACzD;AACI,YAAM,KAAK,MAAM,IAAI;AACrB,YAAM,MAAM,WAAY;AAAA,IAC5B;AAAA,IAEE,MAAM,QAAQ;AACZ,UAAI,EAAE,SAAS,SAAS,WAAW,QAAO,IAAK,KAAK;AACpD,WAAK,MAAM,WAAW,CAAE;AACxB,WAAK,MAAM,UAAU,CAAE;AAEvB,WAAK,UAAU,MAAM,QAAQ,IAAI,MAAM,KAAK,UAAU,OAAO,CAAC;AAC9D,WAAK,QAAQ,QAAQ,QAAO,GAAG,UAAU,KAAM;AAE/C,UAAI,OAAO,YAAY,cAAc,KAAK,WAAW,WAAW,GAAG;AACjE,cAAM,IAAI,MAAM,wCAAwC;AAAA,MAC9D;AAEI,UAAI,SAAS,OAAO,EAAG,WAAU,OAAO,KAAK,OAAO;AACpD,UAAI,MAAM,QAAQ,OAAO,GAAG;AAC1B,YAAI,aAAa,KAAM,MAAK,QAAQ,KAAK,UAAU,SAAS;AAC5D,gBAAQ,QAAQ,OAAK,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC;AAC9C,cAAM,KAAK,OAAQ;AAAA,MACzB,OAAW;AACL,YAAI,aAAa,KAAM,WAAU;AACjC,YAAI,OAAO,YAAY,SAAU,WAAU,KAAK,UAAU,OAAO;AACjE,YAAI,OAAO,YAAY,YAAY,UAAU,IAAI;AAC/C,eAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,IAAI,SAAS,KAAK,QAAQ,MAAM,CAAC;AAC/D,eAAK,OAAO,KAAK,KAAK,KAAK,KAAK,CAAC;AAAA,QACzC;AAAA,MACA;AAEI,UAAI,KAAK,WAAW,KAAK,OAAO,GAAG;AACjC,cAAM,KAAK,KAAM;AAAA,MACvB;AAAA,IACA;AAAA,IAEE,MAAM,UAAUU,QAAO,QAAQ;AAC7B,WAAK,MAAM,iBAAiB;AAC5B,UAAI,UAAU,CAAE;AAChB,UAAIP,SAAQ;AAEZ,UAAI,YAAY,OAAM,OAAO67B,YAAW;AACtC,YAAI,OAAO,UAAU,WAAY,SAAQ,MAAM,MAAM,KAAK,IAAI;AAC9D,YAAI,iBAAiB,QAAS,SAAQ,MAAM;AAE5C,iBAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,cAAI,SAAS,MAAM,CAAC,IAAI,MAAM,KAAK,SAAS,MAAM,CAAC,GAAG77B,UAAS67B,OAAM;AACrE,kBAAQ,KAAK,MAAM;AAEnB,cAAI,OAAO,SAAS;AAClB,kBAAM,UAAU,OAAO,SAAS,MAAM;AAAA,UAChD;AAAA,QACA;AACM,eAAO;AAAA,MACR;AAED,aAAO,UAAUt7B,QAAO,MAAM,EAC3B,KAAK,CAAA4lO,aAAW;AACf,aAAK,MAAM,iBAAiB;AAC5B,eAAOA;AAAA,MACf,CAAO;AAAA,IACP;AAAA,IAEE,MAAM,SAAS,KAAK,GAAG,QAAQ;AAC7B,UAAI,OAAO,QAAQ,WAAY,OAAM,MAAM,IAAI,KAAK,MAAM,IAAI;AAC9D,UAAI,eAAe,QAAS,OAAM,MAAM;AACxC,UAAI,OAAO,QAAQ,SAAU,OAAM,EAAE,MAAM,IAAK;AAEhD,UAAI,IAAI,WAAY,QAAO;AAC3B,UAAI,aAAa;AAEjB,UAAI,UAAU,IAAI;AAClB,UAAI,OAAO,MAAM,IAAI,MAAM,KAAK,OAAO;AACvC,YAAM,KAAK,MAAM,GAAG;AAEpB,UAAI,OAAO,IAAI,aAAa,YAAY,CAAC,IAAI,MAAM;AACjD,YAAI,OAAO,IAAI;AACf,YAAI,WAAW;AAAA,MACrB;AAEI,UAAI,IAAI,aAAa,QAAQ,IAAI,QAAQ,MAAM;AAC7C,YAAI,OAAO;AAAA,MACjB;AAGI,UAAI,IAAI,SAAS,KAAM,QAAO;AAC9B,UAAI,OAAO,IAAI,QAAQ,IAAI,OAAO,IAAI,SAAS,IAAI,SAAS,IAAI;AAChE,UAAI,UAAU,IAAI,WAAW,IAAI,QAAQ;AACzC,UAAI,QAAQ,CAAC,IAAI,OAAO,IAAI,IAAI,EAAE,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC;AAE9D,UAAI,QAAQ;AACZ,UAAI,QAAQ;AACZ,UAAI,SAAS;AAEb,MAAA5gO,OAAM,OAAO,KAAK,UAAU,MAAM;AAClC,UAAI,QAAQ,SAAS,OAAO,QAAQ,IAAI;AACxC,UAAI,IAAI,UAAU,MAAM;AACtB,YAAI,SAAS,SAAS,OAAO,SAAS,OAAQ,IAAI,UAAU;AAAA,MAClE;AAEI,UAAI,OAAO,SAAS,OAAO,OAAO,MAAM,IAAI,OAAO,IAAI;AACvD,UAAI,UAAU,CAAC,EAAE,KAAK,YAAY,CAAC,KAAK,WAAW,GAAG,MAAM,IAAI,WAAW,KAAK,WAAW,GAAG;AAE9F,UAAI,CAAC,KAAK,WAAW,GAAG,GAAG;AACzB,aAAK,UAAU,KAAK,IAAI,KAAK,SAAShD,QAAO,QAAQ,IAAI,OAAO,EAAE,MAAM;AAAA,MAC9E;AAGI,UAAI,SAAS,EAAE,GAAG,IAAK;AAGvB,UAAI,QAAQ,CAACiF,SAAQ,OAAO,OAAOjH,SAAQ,OAAO,UAAU;AAC1D,iBAASJ,QAAO,OAAO,KAAK,MAAM,EAAG,KAAIA,IAAG,IAAI,OAAOA,IAAG;AAC1D,YAAI,QAAQqH;AACZ,YAAI,QAAQjH;AAAA,MACb;AAED,UAAI,WAAW,QAAQ,OAAO,IAAI,YAAY,YAAY;AACxD,YAAI,QAAQ,MAAM,IAAI,QAAQ,KAAK,MAAM,KAAK,OAAO,KAAK,CAAC;AAAA,MACjE;AAEI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,SAAS,QAAQ,GAAG;AACxB,WAAK,KAAK,UAAU,QAAQ,GAAG,IAAI;AAEnC,UAAI,OAAO,OAAO,aAAa,YAAY;AACzC,cAAM,OAAO,SAAS,KAAK,MAAM,KAAK,OAAO,QAAQ,CAAC;AAAA,MAC5D;AAAA,IACA;AAAA,IAEE,MAAM,UAAU,KAAK,GAAG,QAAQ;AAC9B,UAAI,SAAS,MAAM,KAAK,SAAS,KAAK,GAAG,MAAM;AAC/C,WAAK,QAAQ,KAAK,MAAM;AACxB,WAAK,QAAQ,KAAK,QAAQ,SAAS;AACnC,WAAK,QAAQ,KAAK,QAAQ;AAC1B,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,QAAQqC,OAAM,GAAG,QAAQ;AAC7B,UAAI,MAAM,EAAE,MAAM,oBAAoB,UAAU,MAAM,WAAW,MAAM,GAAGA,MAAM;AAChF,UAAI,SAAS,MAAM,KAAK,UAAU,KAAK,GAAG,MAAM;AAEhD,aAAO,eAAe,MAAM;AAC1B,eAAO,OAAO;AACd,eAAO,OAAO,OAAO,UAAU,OAAO;AACtC,eAAO,QAAQ;AACf,eAAO,SAAS;AAAA,MACjB;AAED,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO,QAAQ;AACb,UAAI,OAAO,UAAU,MAAM;AACzB,eAAO,OAAO,QAAQ,IAAI,KAAK,OAAO,OAAO,QAAQ,CAAC,IAAI;AAAA,MAChE;AACI,aAAO,OAAO;AAAA,IAClB;AAAA,IAEE,SAAS,GAAGzC,MAAK;AACf,UAAI,KAAK,YAAY,KAAKA,KAAI,IAAI,EAAG,QAAO,KAAKA,KAAI,IAAI,EAAG;AAC5D,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,MAAM,QAAQ,SAAS;AACrB,UAAI,OAAO,YAAY,UAAW,WAAU,OAAO;AACnD,UAAI,WAAW,CAAC,OAAO,WAAW,KAAK,SAAS,UAAU,KAAK,aAAa;AAC1E,eAAO,KAAK,MAAO;AAAA,MACzB;AACI,WAAK,QAAQ,OAAO;AACpB,aAAO,UAAU,WAAW,CAAC,KAAK,WAAW,MAAM;AACnD,aAAO;AAAA,IACX;AAAA,IAEE,QAAQ;AACN,UAAI,CAAC,KAAK,SAAU,QAAO,KAAK,MAAO;AACvC,WAAK,OAAO,KAAK,OAAO;AACxB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,IAAI;AACF,UAAI,KAAK,cAAc,KAAK,QAAQ,OAAQ,QAAO,KAAK,MAAO;AAC/D,UAAI,UAAU,KAAK,WAAW,MAAM,QAAM,GAAG,OAAO;AACpD,WAAK,QAAQ,QAAQ,QAAO,GAAG,UAAU,CAAC,OAAQ;AAClD,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,IAAI;AAGF,UAAI,KAAK,QAAQ,SAAS,KAAK,SAAS,SAAS,KAAK,aAAa;AACjE,eAAO,KAAK,MAAO;AAAA,MACzB;AACI,WAAK,QAAQ,QAAQ,QAAO,GAAG,UAAU,CAAC,GAAG,OAAQ;AACrD,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,EAAE,SAAS,KAAK,SAAS;AACvB,UAAI,CAAC,KAAK,QAAQ,KAAK,QAAM,CAAC,CAAC,GAAG,MAAM,EAAG,QAAO,KAAK,EAAG;AAC1D,WAAK,OAAQ,OAAO,UAAU,CAAC,OAAO,UAAW,OAAO,SAAS,MAAM;AACvE,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO,QAAQ,SAAS;AACtB,UAAI,CAAC,OAAO,WAAW,KAAK,SAAS,UAAU,KAAK,aAAa;AAC/D,eAAO,KAAK,MAAO;AAAA,MACzB;AAEI,UAAI,OAAO,YAAY,UAAW,WAAU,CAAC,OAAO;AACpD,aAAO,UAAU;AAEjB,UAAI,OAAO,SAAS;AAClB,eAAO,QAAQ,QAAQ,QAAM,KAAK,OAAO,IAAI,OAAO,CAAC;AAAA,MAC3D;AAEI,UAAI,SAAS,OAAO;AACpB,aAAO,QAAQ;AACb,YAAI,UAAU,OAAO,QAAQ,OAAO,QAAM,KAAK,WAAW,EAAE,CAAC;AAC7D,eAAO,UAAU,QAAQ,MAAM,QAAM,GAAG,YAAY,IAAI;AACxD,iBAAS,OAAO;AAAA,MACtB;AAEI,YAAM,MAAM,KAAK,OAAO;AACxB,WAAK,KAAK,UAAU,QAAQ,IAAI;AAChC,aAAO;AAAA,IACX;AAAA,IAEE,OAAO,QAAQ;AACb,UAAI,KAAK,SAAS,UAAU,KAAK,YAAa,QAAO,KAAK,MAAO;AACjE,aAAO,UAAU,CAAC,KAAK,WAAW,MAAM;AACxC,aAAO,WAAW,OAAO,QAAQ,QAAQ,KAAK,OAAO,KAAK,IAAI,CAAC;AAC/D,aAAO;AAAA,IACX;AAAA,IAEE,QAAQ,QAAQ;AACd,aAAO,UAAU;AACjB,aAAO,WAAW,OAAO,QAAQ,QAAQ,KAAK,QAAQ,KAAK,IAAI,CAAC;AAChE,aAAO;AAAA,IACX;AAAA,IAEE,OAAO,GAAG;AACR,WAAK,OAAO;AAEZ,UAAIe,UAAS,SAAO;AAClB,YAAI,IAAI,OAAO,GAAG;AAClB,YAAI,IAAI,KAAK,QAAQ,SAAS,EAAG,QAAO,KAAK,MAAO;AAEpD,YAAI,UAAU,KAAK;AACnB,YAAI,SAAS,KAAK,QAAQ,KAAK,QAAM,MAAM,GAAG,KAAK;AAEnD,YAAI,CAAC,OAAO,WAAW,KAAK,SAAS,UAAU,KAAK,aAAa;AAC/D,iBAAO,KAAK,MAAO;AAAA,QAC3B;AAEM,YAAI,KAAK,QAAQ,QAAQ,MAAM,MAAM,IAAI;AACvC,cAAI,UAAU,QAAQ,KAAK,OAAO;AAClC,cAAI,YAAY,QAAQ,QAAQ,MAAM;AAEtC,cAAI,QAAQ,QAAQ,WAAW;AAC7B,gBAAI,QAAQ,QAAQ,MAAM,WAAW,YAAY,KAAK,KAAK;AAC3D,gBAAI,MAAM,QAAQ,OAAO,QAAM,CAAC,MAAM,SAAS,EAAE,CAAC;AAClD,iBAAK,UAAU,MAAM,OAAO,GAAG;AAAA,UACzC,OAAe;AACL,gBAAIyL,OAAM,YAAY,KAAK,QAAQ;AACnC,iBAAK,UAAU,QAAQ,MAAMA,IAAG,EAAE,OAAO,QAAQ,MAAM,GAAGA,IAAG,CAAC;AAAA,UACxE;AAAA,QACA;AAEM,aAAK,QAAQ,KAAK,QAAQ,QAAQ,MAAM;AACxC,aAAK,OAAO,KAAK,OAAO;AACxB,eAAO,KAAK,OAAQ;AAAA,MACrB;AAED,mBAAa,KAAK,aAAa;AAE/B,aAAO,IAAI,QAAQ,aAAW;AAC5B,YAAI,MAAM,KAAK,QAAQ;AACvB,YAAI,MAAM,KAAK;AAEf,YAAI,SAAS,CAAC,MAAM,OAAO,QAAQ;AACjC,uBAAa,KAAK,aAAa;AAC/B,cAAI,IAAK,OAAMzL,QAAO,GAAG;AACzB,eAAK,MAAM;AACX,kBAAQ,GAAG;AAAA,QACZ;AAED,YAAI,QAAQ,OAAQ,IAAI,WAAW,KAAK,OAAO,MAAM,GAAG,IAAI,KAAM;AAChE,iBAAO,OAAO,IAAI;AAAA,QAC1B;AAEM,YAAI,OAAO,GAAG,IAAI,KAAK;AACrB,iBAAO,OAAO,OAAO,KAAK,MAAK,CAAE;AAAA,QACzC;AAEM,aAAK,gBAAgB,WAAW,MAAM,OAAO,IAAI,GAAG,KAAK,KAAK;AAAA,MACpE,CAAK;AAAA,IACL;AAAA,IAEE,OAAO;AACL,WAAK,UAAU,QAAQ,KAAK,OAAO;AACnC,WAAK,QAAQ;AACb,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,MAAM;AACJ,UAAIyL,OAAM,KAAK,QAAQ,SAAS,KAAK;AACrC,UAAI,UAAU,QAAQ,KAAK,OAAO;AAClC,WAAK,UAAU,QAAQ,MAAMA,IAAG,EAAE,OAAO,QAAQ,MAAM,GAAGA,IAAG,CAAC;AAC9D,WAAK,QAAQ,KAAK,QAAQ;AAC1B,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,QAAQ;AACN,WAAK,QAAQ;AACb,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,WAAK,QAAQ,KAAK,QAAQ,SAAS;AACnC,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,QAAQ,UAAU,EAAG,QAAO,KAAK,MAAO;AACjD,aAAO,KAAK,GAAI;AAAA,IACpB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,QAAQ,UAAU,EAAG,QAAO,KAAK,MAAO;AACjD,aAAO,KAAK,KAAM;AAAA,IACtB;AAAA,IAEE,QAAQ;AACN,UAAI,KAAK,UAAU,KAAK,MAAM,OAAQ,QAAO,KAAK,MAAO;AACzD,WAAK;AACL,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,UAAU,EAAG,QAAO,KAAK,MAAO;AACzC,WAAK;AACL,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,KAAK;AACH,UAAI,MAAM,KAAK,QAAQ;AACvB,UAAI,MAAM,KAAK,QAAQ;AACvB,UAAI,MAAM,KAAK;AACf,UAAI,KAAK,QAAQ,WAAW,SAAS,QAAQ,GAAG;AAC9C,eAAO,KAAK,MAAO;AAAA,MACzB;AACI,UAAI,MAAM,OAAO,QAAQ,GAAG;AAC1B,eAAO,KAAK,SAAU;AAAA,MAC5B;AACI,WAAK,SAAU,MAAM,IAAI,MAAO,OAAO;AACvC,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,GAAI;AAAA,MACtB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,MAAM,KAAK,QAAQ;AACvB,UAAI,MAAM,KAAK,QAAQ;AACvB,UAAI,MAAM,KAAK;AACf,UAAI,KAAK,QAAQ,WAAW,SAAS,QAAQ,MAAM,GAAG;AACpD,eAAO,KAAK,MAAO;AAAA,MACzB;AACI,UAAI,MAAM,OAAO,QAAQ,MAAM,GAAG;AAChC,eAAO,KAAK,WAAY;AAAA,MAC9B;AACI,WAAK,SAAS,MAAM,KAAK;AACzB,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,KAAM;AAAA,MACxB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS,IAAI,GAAG;AACd,WAAK,UAAU,SAAS,KAAK,OAAO;AACpC,WAAK,QAAQ;AACb,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,GAAI;AAAA,MACtB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,WAAW,IAAI,KAAK,QAAQ,SAAS,GAAG;AACtC,WAAK,UAAU,WAAW,KAAK,OAAO;AACtC,WAAK,QAAQ;AACb,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,KAAM;AAAA,MACxB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,MAAM,UAAU;AACd,UAAI,KAAK,QAAQ,SAAS,MAAM;AAC9B,aAAK,UAAU;AACf,aAAK,KAAK,KAAK,QAAQ,CAAC;AACxB,cAAM,KAAK,GAAI;AACf,aAAK,UAAU;AACf;AAAA,MACN;AACI,aAAO,KAAK,SAAS,KAAK,KAAK;AAAA,IACnC;AAAA,IAEE,MAAM,YAAY;AAChB,UAAI,KAAK,QAAQ,SAAS,MAAM;AAC9B,aAAK,UAAU;AACf,aAAK,KAAK,KAAK,QAAQ,CAAC;AACxB,cAAM,KAAK,KAAM;AACjB,aAAK,UAAU;AACf;AAAA,MACN;AACI,aAAO,KAAK,WAAW,KAAK,KAAK;AAAA,IACrC;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,QAAQ,UAAU,EAAG,QAAO,KAAK,MAAO;AACjD,WAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,GAAG,CAAC;AACvC,WAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,KAAK;AAChD,WAAK,SAAS,KAAK;AACnB,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,GAAI;AAAA,MACtB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,WAAW;AACT,UAAI,KAAK,QAAQ,UAAU,KAAK,QAAQ,OAAQ,QAAO,KAAK,MAAO;AACnE,WAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,KAAK;AACnC,WAAK,QAAQ,KAAK,IAAI,KAAK,QAAQ,GAAG,KAAK,QAAQ,MAAM;AACzD,WAAK,SAAS,KAAK;AACnB,UAAI,KAAK,cAAc;AACrB,eAAO,KAAK,KAAM;AAAA,MACxB;AACI,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,KAAKA,MAAK;AACR,WAAK,KAAK,SAAS,KAAK,OAAOA,IAAG;AAAA,IACtC;AAAA,IAEE,WAAW,SAAS,KAAK,SAAS;AAChC,UAAI,OAAO,CAAC,YAAY,aAAa,UAAU,cAAc,UAAU;AACvE,UAAI,UAAU,KAAK,KAAK,CAAAxM,SAAO,OAAOA,IAAG,MAAM,IAAI,GAAG;AACpD,eAAO;AAAA,MACb;AACI,aAAO,UAAU,OAAO,SAAS;AAAA,IACrC;AAAA,IAEE,UAAU,SAAS,KAAK,SAAS;AAC/B,UAAI,MAAM,QAAQ,MAAM,EAAG,QAAO,OAAO,MAAM,QAAM,KAAK,UAAU,EAAE,CAAC;AACvE,UAAI,OAAO,SAAS;AAClB,YAAI,UAAU,OAAO,QAAQ,OAAO,QAAM,CAAC,KAAK,WAAW,EAAE,CAAC;AAC9D,eAAO,OAAO,WAAW,QAAQ,MAAM,QAAM,KAAK,UAAU,EAAE,CAAC;AAAA,MACrE;AACI,aAAO,OAAO,WAAW,CAAC,KAAK,WAAW,MAAM;AAAA,IACpD;AAAA,IAEE,SAAS,QAAQI,QAAO;AACtB,aAAO,OAAO,SAASA,UAAS,OAAO,UAAU,OAAOA,MAAK;AAAA,IACjE;AAAA,IAEE,WAAW,QAAQ;AACjB,UAAI,MAAM,QAAQ,KAAK,OAAO,GAAG;AAC/B,eAAO,KAAK,QAAQ,KAAK,CAAAA,WAAS,KAAK,SAAS,QAAQA,MAAK,CAAC;AAAA,MACpE;AACI,aAAO,KAAK,SAAS,QAAQ,KAAK,OAAO;AAAA,IAC7C;AAAA,IAEE,IAAI,QAAQ,IAAI,OAAO,SAAS;AAC9B,aAAO,CAAE,EAAC,OAAO,SAAS,CAAA,CAAE,EAAE,OAAO,CAAC,KAAK,SAAS;AAClD,YAAI,IAAI,IAAI,KAAK,KAAK,MAAM,IAAI;AAChC,eAAO;AAAA,MACR,GAAE,EAAE;AAAA,IACT;AAAA,IAEE,OAAOA,QAAO,MAAM;AAClB,UAAI,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,SAASA,MAAK;AACvD,UAAI,KAAK,OAAOA,WAAU,aAAaA,SAAQ;AAC/C,UAAI,UAAU,KAAK,QAAQ,WAAW,KAAK,MAAM,WAAW,KAAK;AACjE,UAAI,SAAS,QAAQ,OAAO,EAAE;AAC9B,UAAI,MAAM;AACR,eAAO,OAAO,IAAI,QAAM,GAAG,IAAI,CAAC;AAAA,MACtC;AACI,aAAO;AAAA,IACX;AAAA,IAEE,KAAKA,QAAO,MAAM;AAChB,UAAI,SAASA,MAAK,EAAG,QAAO,OAAOA,OAAM,IAAI,IAAIA;AACjD,UAAI,WAAW,CAAC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,EAAE,SAASA,MAAK;AACvD,UAAI,KAAK,OAAOA,WAAU,aAAaA,SAAQ;AAC/C,UAAI,SAAS,KAAK,QAAQ,KAAK,EAAE;AACjC,UAAI,QAAQ;AACV,eAAO,OAAO,OAAO,IAAI,IAAI;AAAA,MACnC;AAAA,IACA;AAAA,IAEE,UAAUA,QAAO;AACf,aAAO,KAAK,QAAQ,QAAQ,KAAK,KAAKA,MAAK,CAAC;AAAA,IAChD;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,OAAQ,QAAO,KAAK,MAAO;AAEhC,UAAI,OAAO,WAAW;AACpB,YAAI,CAAC,OAAO,MAAO,QAAO,KAAK,MAAO;AACtC,eAAO,aAAc;AACrB,eAAO,KAAK,OAAQ;AAAA,MAC1B;AAEI,UAAI,KAAK,QAAQ,KAAK,QAAM,GAAG,SAAS,GAAG;AACzC,eAAO,KAAK,MAAO;AAAA,MACzB;AAEI,UAAI,EAAE,SAAA6lO,UAAS,MAAAtgF,MAAM,IAAG,KAAK;AAC7B,UAAI,QAAQ,KAAK,aAAa;AAC9B,UAAIvlJ,SAAQ,KAAK;AACjB,UAAIA,WAAU,QAAQ;AACpB,eAAO,KAAK,MAAO;AAAA,MACzB;AAGI,UAAI,MAAM,QAAQA,MAAK,KAAK6lO,aAAY,SAAStgF,UAAS,MAAM;AAC9D,QAAAvlJ,SAAQgF,OAAM,QAAQhF,MAAK;AAAA,MACjC;AAEI,WAAK,QAAQ,QAAQA,OAAM,IAAI,QAAM,GAAG,IAAI,IAAIA,OAAM;AACtD,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,IAEE,IAAI,QAAQ,UAAU,IAAI;AACxB,WAAK,MAAM,WAAW,KAAK,MAAM,YAAY,CAAE;AAC/C,WAAK,MAAM,UAAU;AAErB,eAAS,UAAU,SAAS;AAC1B,YAAI,CAAC,KAAK,MAAM,SAAS,KAAK,QAAM,GAAG,SAAS,OAAO,IAAI,GAAG;AAC5D,eAAK,MAAM,SAAS,KAAK,MAAM;AAAA,QACvC;AAAA,MACA;AAEI,UAAI,CAAC,KAAK,YAAY,KAAK,QAAQ,SAAS;AAC1C,aAAK,WAAW;AAChB,YAAI,OAAO,KAAK;AAChB,YAAI,OAAO,SAAS,YAAY,OAAO,SAAS,UAAU;AACxD,cAAI,SAAS,KAAK,KAAK,IAAI;AAC3B,cAAI,QAAQ;AACV,iBAAK,UAAU,OAAO;AACtB,iBAAK,MAAM,QAAQ,IAAI;AAAA,UACjC;AAAA,QACA;AAAA,MACA;AAAA,IACA;AAAA,IACE,IAAI,UAAU;AACZ,aAAO,MAAM,MAAM,KAAK,MAAM,WAAW,CAAA,CAAE;AAAA,IAC/C;AAAA,IAEE,IAAI,QAAQ,SAAS;AACnB,WAAK,MAAM,UAAU;AAAA,IACzB;AAAA,IACE,IAAI,UAAU;AACZ,cAAQ,KAAK,MAAM,WAAW,KAAK,SAAS,MAAM,GAAG,KAAK,KAAK;AAAA,IACnE;AAAA,IAEE,IAAI,MAAM,KAAK;AACb,WAAK,MAAM,QAAQ;AAAA,IACvB;AAAA,IACE,IAAI,QAAQ;AACV,UAAI,EAAE,OAAAlB,QAAO,SAAAQ,UAAS,QAAS,IAAG;AAClC,UAAI,QAAQR,OAAM,SAAS,KAAK,UAAUQ,SAAQ,SAAS,QAAQ;AACnE,aAAO,KAAK,IAAI,OAAO,KAAK,MAAM;AAAA,IACtC;AAAA,IAEE,IAAI,MAAMU,QAAO;AACf,YAAM,QAAQA;AAAA,IAClB;AAAA,IACE,IAAI,QAAQ;AACV,UAAI,OAAO,MAAM,UAAU,YAAY,MAAM,UAAU,KAAK,SAAS;AACnE,eAAO,KAAK;AAAA,MAClB;AACI,aAAO,MAAM;AAAA,IACjB;AAAA,IAEE,IAAI,MAAM,GAAG;AACX,WAAK,MAAM,QAAQ;AAAA,IACvB;AAAA,IACE,IAAI,QAAQ;AACV,aAAO,KAAK,IAAI,GAAG,KAAK,QAAQ,KAAK,MAAM,QAAQ,CAAC;AAAA,IACxD;AAAA,IAEE,IAAI,UAAU;AACZ,aAAO,KAAK,OAAO,KAAK,UAAU,KAAK,IAAI,CAAC;AAAA,IAChD;AAAA,IAEE,IAAI,UAAU;AACZ,UAAI,SAAS,KAAK,QAAQ,KAAK,KAAK;AACpC,UAAI,UAAU,KAAK,MAAM,aAAa,KAAK,aAAa,MAAM;AAC5D,eAAO,UAAU;AAAA,MACvB;AACI,aAAO;AAAA,IACX;AAAA,IAEE,IAAI,aAAa;AACf,aAAO,KAAK,QAAQ,OAAO,YAAU,CAAC,KAAK,WAAW,MAAM,CAAC;AAAA,IACjE;AAAA,IAEE,IAAI,WAAW;AACb,aAAO,KAAK,WAAW,KAAK,UAAU,KAAK;AAAA,IAC/C;AAAA,EACA;AAEA,WAAS,MAAMylO,SAAQ,SAAS;AAC9B,QAAI,mBAAmB,QAAS,QAAO;AACvC,QAAI,OAAO,YAAY,YAAY;AACjC,UAAIzgO,OAAM,UAAU,OAAO,EAAG,QAAO;AACrC,gBAAU,QAAQ,KAAKygO,SAAQA,OAAM;AAAA,IACzC;AACE,aAAS,UAAU,SAAS;AAC1B,UAAI,MAAM,QAAQ,OAAO,OAAO,GAAG;AACjC,YAAI,QAAQ,OAAO,QAAQ,OAAO,QAAM,CAACA,QAAO,WAAW,EAAE,CAAC;AAC9D,eAAO,UAAU,MAAM,MAAM,QAAM,GAAG,YAAY,IAAI;AAAA,MAC5D;AACI,UAAIA,QAAO,WAAW,MAAM,MAAM,MAAM;AACtC,eAAO,OAAO;AAAA,MACpB;AAAA,IACA;AACE,WAAO;AAAA,EACT;AAEA,UAAiB;;;;;;;;AC/oBjB,QAAM,cAAc9lO,aAAyB;AAC7C,QAAMqF,SAAQ1E,aAAmB;AAAA,EAEjC,MAAM,qBAAqB,YAAY;AAAA,IACrC,YAAYhB,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,aAAa,KAAK,QAAQ,cAAc;AAAA,IACjD;AAAA,IAEE,MAAM,SAAS,GAAGM,MAAK;AACrB,UAAI,KAAK,UAAU;AACjB,eAAO,KAAKA,KAAI,IAAI,IAAI,MAAM,KAAKA,KAAI,IAAI,EAAE,GAAGA,IAAG,IAAI,MAAM,MAAM,SAAS,GAAGA,IAAG;AAAA,MACxF;AACI,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,YAAY;AACV,UAAI,KAAK,QAAQ,UAAW,QAAO,MAAM,UAAW;AACpD,UAAI,MAAM,KAAK,OAAO,MAAM,KAAK,QAAQ,QAAQ;AACjD,aAAO,KAAK,MAAM,YAAY,MAAM,UAAW,IAAG;AAAA,IACtD;AAAA,IAEE,QAAQ,QAAQ,GAAG;AACjB,aAAQ,CAAC,KAAK,YAAY,KAAK,QAAQ,UAAW,MAAM,QAAQ,QAAQ,CAAC,IAAI;AAAA,IACjF;AAAA,IAEE,UAAU,QAAQ,GAAG;AACnB,aAAO,KAAK,WAAW,MAAM,UAAU,QAAQ,CAAC,IAAI;AAAA,IACxD;AAAA,IAEE,cAAc,QAAQ,GAAG;AACvB,UAAI,UAAU,KAAK,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ,CAAC;AAChE,UAAI,OAAO,SAAS,aAAa,CAACoF,OAAM,SAAS,OAAO,GAAG;AACzD,kBAAU,KAAK,OAAO,OAAO,OAAO;AAAA,MAC1C;AACI,aAAO,KAAK,QAAQ,SAAS,KAAK,OAAO,QAAQ,CAAC;AAAA,IACtD;AAAA,IAEE,kBAAkB;AAChB,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,aAAa,QAAQ,GAAG;AAC5B,YAAM,KAAK,SAAS,QAAQ,CAAC;AAE7B,UAAI,UAAU,KAAK,UAAU;AAC7B,UAAI,UAAU,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC1C,UAAI,QAAQ,MAAM,KAAK,UAAU,QAAQ,CAAC,KAAK,OAAO,OAAO;AAC7D,UAAI,OAAO,MAAM,KAAK,QAAQ,OAAO,MAAM,KAAK,OAAO,QAAQ,CAAC;AAEhE,UAAI,QAAQ,CAACA,OAAM,SAAS,IAAI,GAAG;AACjC,eAAO,KAAK,OAAO,MAAM,IAAI;AAAA,MACnC;AAEI,UAAI,MAAM,KAAK,OAAO,MAAM;AAC5B,UAAI,MAAM,MAAM,KAAK,cAAc,QAAQ,CAAC;AAC5C,UAAIjG,QAAO,MAAM,CAAC,KAAK,OAAO,CAAC,GAAG,MAAM,UAAU,OAAO,KAAK,KAAK,OAAO,CAAC,GAAG,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAE5G,UAAI,OAAO,SAAS,WAAW;AAC7B,eAAOA,MAAM;AAAA,MACnB;AAEI,UAAI,OAAO,UAAU;AACnB,YAAI,CAACiG,OAAM,SAAS,GAAG,GAAG;AACxB,gBAAM,KAAK,OAAO,SAAS,GAAG;AAAA,QACtC;AACM,eAAOjG,MAAM;AAAA,MACnB;AAEI,UAAI,SAAS;AACX,cAAM,KAAK,OAAO,GAAG,GAAG;AAAA,MAC9B;AAEI,aAAOA,MAAM;AAAA,IACjB;AAAA,IAEE,MAAM,gBAAgB;AACpB,UAAI,KAAK,MAAM,YAAY,WAAW;AACpC,eAAO,KAAK,OAAO,QAAQ,iBAAiB;AAAA,MAClD;AAEI,UAAI,KAAK,MAAM,UAAW,QAAO;AACjC,UAAI,UAAU,KAAK,QAAQ,IAAI,OAAM,IAAI,MAAM,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC;AAC7E,UAAI,UAAU,MAAM,QAAQ,IAAI,OAAO;AACvC,UAAI,CAAC,QAAQ,OAAQ,SAAQ,KAAK,KAAK,OAAO,OAAO,qBAAqB,CAAC;AAC3E,UAAI,SAAS,KAAK,OAAO,CAAC,IAAI,QAAQ,KAAK,IAAI;AAC/C,UAAI;AAEJ,UAAI,KAAK,QAAQ,eAAe;AAC9B,iBAAS,MAAM,KAAK,QAAQ,KAAK,QAAQ,eAAe,KAAK,KAAK;AAAA,MACxE;AAEI,aAAO,CAAC,QAAQ,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAAA,IACrD;AAAA,IAEE,SAAS;AACP,UAAI,CAAC,KAAK,MAAM,aAAa,KAAK,MAAM,UAAW,QAAO;AAC1D,UAAI,MAAM,QAAQ,KAAK,QAAQ,GAAG;AAChC,eAAO,KAAK,SAAS,IAAI,YAAU,KAAK,OAAO,QAAQ,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI;AAAA,MACpF;AACI,aAAO,KAAK,OAAO,QAAQ,KAAK,SAAS,IAAI;AAAA,IACjD;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,WAAW,KAAM,IAAG,KAAK;AAE/B,UAAI0mO,UAAS;AACb,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAI,KAAK,QAAQ,eAAe,OAAO;AACrC,QAAAA,UAAS,CAAC,QAAQ,SAAS,WAAW,EAAE,EAAE,KAAK,GAAG;AAClD,aAAK,MAAM,SAASA;AAAA,MAC1B;AAEI,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,OAAQ,MAAM,KAAK,MAAK,KAAQ,MAAM,KAAK;AAC/C,UAAI,OAAO,MAAM,KAAK,cAAe;AACrC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAEhC,UAAI,OAAQ,CAAAA,WAAU;AACtB,UAAI,QAAQ,CAACA,QAAO,SAAS,IAAI,EAAG,CAAAA,WAAU,MAAM;AAEpD,UAAI,aAAa,CAAC,UAAU,CAAC,KAAK,UAAU,KAAK,YAAY,KAAK,cAAc,MAAM;AACpF,QAAAA,WAAU,KAAK,OAAO,OAAO,KAAK,UAAU;AAAA,MAClD;AAEI,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAAC,QAAQA,SAAQ,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AACpE,WAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AACzB,WAAK,QAAS;AAAA,IAClB;AAAA,EACA;AAEA,WAAiB;;;;;;;;ACxIjB,QAAM,SAAS9lO,cAAmB;AAElC,QAAM,YAAY,CAACsH,QAAO,UAAU;AAClC,QAAI,MAAMA,OAAM,YAAa;AAC7B,WAAO,SAAO;AACZ,UAAI,IAAI,IAAI,YAAa;AACzB,UAAI,IAAI,EAAE,QAAQ,GAAG;AACrB,UAAI,UAAU,MAAM,IAAI,MAAM,GAAG,IAAI,IAAI,MAAM,CAAC;AAChD,aAAO,KAAK,IAAI,IAAI,MAAM,GAAG,CAAC,IAAI,UAAU,IAAI,MAAM,IAAI,IAAI,MAAM,IAAI;AAAA,IACzE;AAAA,EACF;AAAA,EAED,MAAM,qBAAqB,OAAO;AAAA,IAChC,YAAY3H,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,WAAY;AAAA,IACrB;AAAA,IAEE,WAAW,GAAG;AACZ,WAAK,MAAM,UAAU;AAAA,IACzB;AAAA,IAEE,SAAS,IAAI;AACX,aAAO,KAAK,OAAO,EAAE;AAAA,IACzB;AAAA,IAEE,MAAM,IAAI;AACR,aAAO,KAAK,QAAQ,WAAW,MAAM,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE;AAAA,IACnE;AAAA,IAEE,OAAO,IAAI;AACT,UAAI,EAAE,QAAQ,OAAA2H,OAAO,IAAG,KAAK;AAC7B,WAAK,QAAQA,OAAM,MAAM,GAAG,MAAM,IAAI,KAAKA,OAAM,MAAM,MAAM;AAC7D,WAAK,WAAW,CAAC;AACjB,aAAO,KAAK,SAAU;AAAA,IAC1B;AAAA,IAEE,SAAS;AACP,UAAI,EAAE,QAAQ,OAAAA,OAAO,IAAG,KAAK;AAC7B,UAAI,CAACA,OAAO,QAAO,KAAK,MAAO;AAC/B,WAAK,QAAQA,OAAM,MAAM,GAAG,SAAS,CAAC,IAAIA,OAAM,MAAM,MAAM;AAC5D,WAAK,WAAW,EAAE;AAClB,aAAO,KAAK,SAAU;AAAA,IAC1B;AAAA,IAEE,gBAAgB;AACd,UAAI,EAAE,QAAQ,OAAAA,OAAO,IAAG,KAAK;AAC7B,UAAIA,OAAM,MAAM,MAAM,OAAQ,QAAO,KAAK,MAAO;AACjD,WAAK,QAAQ,GAAGA,MAAK,GAAG,MAAM,GAAG,MAAM,IAAI,GAAGA,MAAK,GAAG,MAAM,SAAS,CAAC;AACtE,aAAO,KAAK,SAAU;AAAA,IAC1B;AAAA,IAEE,OAAO,IAAI;AACT,aAAO,KAAK,OAAO,EAAE;AAAA,IACzB;AAAA,IAEE,MAAM,WAAW;AACf,WAAK,aAAa;AAClB,WAAK,UAAU,MAAM,KAAK,QAAQ,KAAK,OAAO,KAAK,MAAM,QAAQ;AACjE,WAAK,MAAM,QAAQ;AACnB,WAAK,QAAQ,KAAK,IAAI,KAAK,IAAI,KAAK,QAAQ,SAAS,GAAG,CAAC,GAAG,KAAK,KAAK;AACtE,YAAM,KAAK,OAAQ;AACnB,WAAK,aAAa;AAAA,IACtB;AAAA,IAEE,QAAQA,SAAQ,KAAK,OAAO,UAAU,KAAK,MAAM,UAAU;AACzD,UAAI,OAAO,KAAK,QAAQ,YAAY,YAAY;AAC9C,eAAO,KAAK,QAAQ,QAAQ,KAAK,MAAMA,QAAO,OAAO;AAAA,MAC3D;AACI,UAAI,MAAMA,OAAM,YAAa;AAC7B,aAAO,QAAQ,OAAO,QAAM,GAAG,QAAQ,YAAa,EAAC,SAAS,GAAG,CAAC;AAAA,IACtE;AAAA,IAEE,UAAU;AACR,aAAO;AAAA,IACX;AAAA,IAEE,SAAS;AACP,UAAI,CAAC,KAAK,QAAS,QAAO,KAAK;AAC/B,UAAI,KAAK,QAAQ,YAAY,KAAK,MAAM,WAAW;AACjD,eAAO,KAAK,SAAS,IAAI,QAAM,KAAK,OAAO,QAAQ,GAAG,OAAO,CAAC,EAAE,KAAK,IAAI;AAAA,MAC/E;AACI,UAAI,KAAK,MAAM,WAAW;AACxB,YAAIjH,SAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ;AACnD,eAAO,KAAK,OAAO,QAAQA,MAAK;AAAA,MACtC;AACI,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,KAAK,MAAM,WAAW,UAAW,QAAO,MAAM,OAAQ;AAC1D,UAAI,QAAQ,KAAK,QAAQ,YACrB,KAAK,QAAQ,UAAU,KAAK,IAAI,IAChC,KAAK,OAAO;AAEhB,UAAI,QAAQ,UAAU,KAAK,OAAO,KAAK;AACvC,UAAI,UAAU,KAAK;AACnB,WAAK,UAAU,QAAQ,IAAI,SAAO,EAAE,GAAG,IAAI,SAAS,MAAM,GAAG,OAAO,EAAG,EAAC;AACxE,YAAM,MAAM,OAAQ;AACpB,WAAK,UAAU;AAAA,IACnB;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,QAAQ,UAAU;AACzB,aAAK,QAAQ,KAAK,SAAS,IAAI,QAAM,GAAG,IAAI;AAAA,MAClD;AACI,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,EACA;AAEA,iBAAiB;;;;;;;;AC9GjB,QAAMgF,SAAQrF,aAAkB;AAehC,gBAAiB,CAAC8lO,SAAQnmO,WAAU,OAAO;AACzC,IAAAmmO,QAAO,WAAY;AAEnB,QAAI,EAAE,OAAAx+N,SAAQ,IAAI,UAAU,IAAI,KAAAmF,MAAK,aAAa,MAAM,MAAK,IAAK9M;AAClE,QAAI,QAAQ,SAASmmO,QAAO,OAAO;AACnC,QAAI,UAAUzgO,OAAM,QAAQygO,QAAO,OAAO,OAAO;AACjD,QAAI,UAAU,SAAO,QAAQA,QAAO,OAAO,MAAM,GAAG,CAAC;AACrD,QAAI,SAASx+N;AACb,QAAI,OAAO;AACX,QAAI,UAAU,QAAQ,IAAI;AAE1B,QAAIw+N,QAAO,SAASA,QAAO,MAAM,QAAQ,MAAM;AAC7C,gBAAU,SAAO;AACjB,gBAAU;AAAA,IACd;AAEE,QAAI,cAAcr5N,SAAQ,KAAK,YAAY,MAAMnF,WAAU,IAAI;AAC7D,aAAO,QAAQ,IAAI;AAAA,IACvB;AAEE,QAAI,cAAcmF,SAAQ,MAAMnF,WAAU,WAAWA,WAAU,KAAK;AAClE,aAAO,QAAQ,QAAQ,CAAC,CAAC,IAAI,MAAM,QAAQ,MAAM,CAAC,CAAC;AAAA,IACvD;AAEE,cAAUjC,OAAM,YAAY,OAAO,IAAI,GAAG,OAAO,KAAK;AACtD,IAAAiC,SAAQjC,OAAM,YAAYiC,MAAK,IAAI,GAAGA,MAAK,KAAK;AAEhD,QAAI+P,eAAc,WAAW,QAAQ,WAAW/P,MAAK,KAAK,YAAYA;AACtE,QAAI,SAAS+P,eAAc,QAAQ,QAAQ/P,OAAM,MAAM,CAAC,IAAI;AAE5D,QAAImF,SAAQnF,OAAM,UAAU,eAAe,MAAM;AAC/C,eAASA,OAAM,MAAM,GAAGmF,IAAG,IAAI,QAAQnF,OAAMmF,IAAG,CAAC,IAAInF,OAAM,MAAMmF,OAAM,CAAC;AACxE,eAAS;AAAA,IACb;AAEE,QAAI,eAAe,OAAO;AACxB,eAAS;AAAA,IACb;AAEE,QAAI4K,cAAa;AACf,UAAI,MAAMyuN,QAAO,OAAO,QAAQ,SAAS,MAAM;AAC/C,aAAO,SAAS,SAAS,MAAM,QAAQ,MAAM,IAAI,MAAM,CAAC;AAAA,IAC5D;AAEE,WAAO,SAAS;AAAA,EACjB;;;;;;;;AC5DD,QAAMzjO,UAASrC,kBAAsB;AACrC,QAAM,eAAeW,cAAmB;AACxC,QAAM0W,eAAc/V,mBAAyB;AAAA,EAE7C,MAAM,mBAAmB,aAAa;AAAA,IACpC,YAAY3B,UAAS;AACnB,YAAM,EAAE,GAAGA,UAAS,UAAU,KAAI,CAAE;AACpC,WAAK,OAAO;AACZ,WAAK,UAAU,KAAK,QAAQ;AAC5B,WAAK,QAAQ,CAAC,KAAK,QAAQ,OAAO,OAAO,EAAE,KAAK,OAAK,KAAK,IAAI;AAC9D,WAAK,aAAa;AAClB,WAAK,SAAS,CAAE;AAAA,IACpB;AAAA,IAEE,MAAM,MAAM,OAAO;AACjB,YAAM,MAAM,MAAO;AACnB,UAAI,UAAU,KAAM,MAAK,SAAS,KAAK;AACvC,WAAK,QAAQ,KAAK;AAClB,WAAK,SAAS,CAAE;AAChB,WAAK,QAAQ,QAAQ,YAAU,OAAO,SAAS,OAAO,OAAO;AAC7D,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS,MAAM;AACb,aAAO,CAAC,CAAC,QAAQ,KAAK,OAAO,IAAI;AAAA,IACrC;AAAA,IAEE,OAAO,MAAM;AACX,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,OAAQ,QAAO,KAAK,MAAO;AAChC,UAAI,EAAE,QAAQ,OAAA2H,OAAK,IAAK;AACxB,aAAO,QAAQ,OAAO,QAAQA,OAAM,MAAM,GAAG,MAAM,IAAI,OAAOA,OAAM,MAAM,MAAM;AAChF,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS;AACP,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,UAAU,OAAO,UAAU,EAAG,QAAO,KAAK,MAAO;AACtD,UAAI,EAAE,QAAQ,OAAAA,OAAK,IAAK;AACxB,aAAO,QAAQ,OAAO,QAAQA,OAAM,MAAM,GAAG,SAAS,CAAC,IAAIA,OAAM,MAAM,MAAM;AAC7E,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,gBAAgB;AACd,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,OAAQ,QAAO,KAAK,MAAO;AAChC,UAAI,EAAE,QAAQ,OAAAA,OAAK,IAAK;AACxB,UAAIA,OAAM,MAAM,MAAM,OAAQ,QAAO,KAAK,MAAO;AACjD,UAAI,MAAM,GAAGA,MAAK,GAAG,MAAM,GAAG,MAAM,IAAI,GAAGA,MAAK,GAAG,MAAM,SAAS,CAAC;AACnE,aAAO,QAAQ,OAAO,QAAQ;AAC9B,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,QAAQ;AACN,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,OAAQ,QAAO,KAAK,MAAO;AAChC,UAAI,OAAO,UAAU,OAAO,MAAM,OAAQ,QAAO,KAAK,MAAO;AAC7D,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,SAAS,KAAK;AAClB,UAAI,CAAC,OAAQ,QAAO,KAAK,MAAO;AAChC,UAAI,OAAO,UAAU,EAAG,QAAO,KAAK,MAAO;AAC3C,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,MAAM,IAAIrH,MAAK;AACb,aAAO,KAAK,SAAS,IAAIA,IAAG;AAAA,IAChC;AAAA,IAEE,OAAO,IAAIA,MAAK;AACd,aAAO,KAAK,SAAS,IAAIA,IAAG;AAAA,IAChC;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,KAAK;AACd,UAAI,CAAC,GAAI,QAAO,KAAK,MAAO;AAC5B,UAAI,EAAE,SAAS,OAAAqH,OAAK,IAAK;AACzB,UAAI,WAAW,QAAQ,WAAWA,MAAK,KAAKA,WAAU,SAAS;AAC7D,WAAG,QAAQ,GAAG,QAAQ;AACtB,WAAG,SAAS,GAAG,MAAM;AACrB,eAAO,KAAK,OAAQ;AAAA,MAC1B;AACI,aAAO,MAAM,KAAM;AAAA,IACvB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,KAAK;AACd,UAAI,CAAC,GAAI,QAAO,KAAK,MAAO;AAC5B,UAAI,GAAG,WAAW,EAAG,QAAO,MAAM,KAAM;AACxC,SAAG,QAAQ,GAAG,QAAQ;AACtB,SAAG,SAAS;AACZ,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,YAAY;AACV,aAAO;AAAA,IACX;AAAA,IAEE,OAAOjH,QAAO;AACZ,aAAO,CAAC,KAAK,MAAM,YAAY,MAAM,OAAOA,MAAK,IAAI;AAAA,IACzD;AAAA,IAEE,UAAU;AACR,aAAO;AAAA,IACX;AAAA,IAEE,UAAU,QAAQ;AAChB,aAAO,OAAO,QAAQ,MAAM;AAAA,IAChC;AAAA,IAEE,MAAM,gBAAgB,QAAQ,GAAG;AAC/B,UAAI,MAAM,MAAM,KAAK,QAAQ,OAAO,WAAW,KAAK,OAAO,QAAQ,CAAC,KAAK;AACzE,aAAO,MAAM,MAAM,KAAK,OAAO,SAAS,GAAG,IAAI;AAAA,IACnD;AAAA,IAEE,MAAM,aAAa,QAAQ,GAAG;AAC5B,YAAM,KAAK,SAAS,QAAQ,CAAC;AAE7B,UAAI,EAAE,OAAAlB,QAAO,OAAM,IAAK;AACxB,UAAI,EAAE,QAAQ,UAAU,IAAI,MAAM,MAAM,OAAAmI,SAAQ,GAAE,IAAK;AACvD,UAAI,EAAE,OAAO,WAAW,SAAS,OAAQ,IAAG;AAE5C,UAAI,OAAO;AACX,UAAI,UAAU,KAAK,UAAU;AAC7B,UAAImuB,YAAW,OAAO,aAAa,MAAM;AACzC,UAAI,MAAM,MAAM,KAAK,gBAAgB,QAAQ,CAAC;AAC9C,UAAI,MAAM,OAAO;AAEjB,UAAI,KAAK,UAAU,QAAS,OAAM,IAAI,SAAS,KAAK,UAAU,GAAG,GAAG;AACpE,UAAI,KAAK,UAAU,OAAQ,OAAM,IAAI,OAAO,KAAK,UAAU,GAAG,GAAG;AAGjE,UAAIp1B,SAAQ,KAAK,OAAO,IAAI,IAAKiH,UAAS;AAC1C,UAAI,QAAQA,SAAQ,YAAY;AAEhC,UAAK,MAAMmuB,UAAS,KAAK,QAAQp1B,QAAO,KAAK,KAAK,MAAO,MAAM;AAC7D,gBAAQ;AAAA,MACd;AAEI,UAAI,QAAQ,OAAO,KAAK;AACxB,UAAI,YAAY,MAAM,MAAM,KAAK,UAAU,QAAQ,CAAC,CAAC,KAAK,OAAO,OAAO;AAExE,UAAI,SAAS,KAAK,OAAO,MAAM;AAC/B,UAAIjB,QAAO,MAAM,CAAC,QAAQ,WAAW,MAAM,KAAKkI,QAAO,IAAI,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAErF,UAAInI,OAAM,WAAW;AACnB,cAAMkD,QAAO,QAAQ,GAAG;AACxB,QAAAiF,SAAQ,UAAUA,MAAK;AACvB,eAAO;AACP,eAAOlI,MAAM;AAAA,MACnB;AAEI,UAAI,OAAO,QAAQ;AACjB,QAAAkI,SAAQ,MAAM,OAAO,OAAO,KAAK,MAAMA,QAAO,QAAQ,CAAC;AAAA,MAC7D,OAAW;AACL,YAAIo+N,SAAQ,KAAK,OAAO;AACxB,YAAI/lO,WAAU,EAAE,OAAA2H,QAAO,SAAS,KAAK,QAAQ,YAAY,SAAS,OAAAo+N,OAAO;AACzE,QAAAp+N,SAAQ+P,aAAY,MAAM1X,QAAO;AAAA,MACvC;AAEI,UAAI,CAAC,KAAK,QAAQ2H,MAAK,GAAG;AACxB,QAAAA,SAAQ,KAAK,OAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,MACrD;AAEI,UAAI,OAAO,QAAQ;AACjB,aAAK,OAAO,IAAI,IAAI,MAAM,OAAO,OAAO,KAAK,MAAMjH,QAAO,QAAQ,CAAC;AAAA,MACzE;AAEI,UAAI,SAAS;AACX,cAAM,QAAQ,GAAG;AAAA,MACvB;AAEI,UAAI,OAAO,OAAO;AAChB,QAAAiH,WAAUA,SAAQ,MAAM,MAAM,OAAO,OAAO,MAAM,MAAM;AAAA,MAC9D,WAAe,OAAO,MAAM;AACtB,QAAAA,WAAUA,SAAQ,MAAM,MAAM,MAAM,OAAO,KAAK,MAAM;AAAA,MAC5D;AAEI,aAAOlI,MAAM;AAAA,IACjB;AAAA,IAEE,MAAM,SAAS;AACb,WAAK,QAAQ,KAAK;AAClB,aAAO,MAAM,KAAK,OAAO,KAAK,IAAI;AAAA,IACtC;AAAA,EACA;AAEA,SAAiB;;;;;;;;ACjMjB,QAAM,aAAaY,YAA0B;AAE7C,QAAM,sBAAsB,MAAM;AAChC,UAAM,IAAI,MAAM,sDAAsD;AAAA,EACvE;AAED,QAAM,UAAU,CAAC,eAAe,wBAAwB;AAAA,IAEtD,MAAM,mBAAmB,WAAW;AAAA,MAClC,YAAYL,UAAS;AACnB,cAAMA,QAAO;AAAA,MACnB;AAAA,MAEI,MAAM,SAAS;AACb,aAAK,QAAQ,MAAM,aAAa,KAAK,MAAM,KAAK,QAAQ,KAAK,KAAK;AAClE,cAAM,KAAK,OAAO,KAAK,IAAI;AAAA,MACjC;AAAA,MAEI,OAAO,OAAOwmO,eAAc;AAC1B,eAAO,QAAQA,aAAY;AAAA,MACjC;AAAA,IACA;AAEE,WAAO;AAAA,EACR;AAEa,SAAG,QAAS;;;;;;;;AC1B1B,QAAM,aAAanmO,YAAwB;AAE3C,WAAS,oBAAoBK,QAAOlB,QAAO;AACzC,QAAIkB,OAAM,aAAa,KAAK,QAAQ,YAAYA,OAAM,aAAa,KAAK,QAAQ,UAAU;AACxF,aAAO;AAAA,IACX;AACE,WAAO;AAAA,EACT;AAEA,QAAM,UAAU,CAAC,eAAe,wBAAwB;AACtD,UAAM,UAAU;AAAA,MACd,EAAE,MAAM,YAAY,SAAS,WAAY;AAAA,MACzC;AAAA,QACE,MAAM;AAAA,QACN,SAAS;AAAA,QACT,OAAOiH,QAAO;AACZ,cAAI,KAAK,QAAQ,cAAc;AAC7B,mBAAOA;AAAA,UACjB;AACQ,cAAI,QAAQ,KAAK,MAAM,YAAY,KAAK,OAAO,UAAU,KAAK,OAAO;AACrE,iBAAO,MAAM,KAAK,QAAQ,SAAS,OAAOA,OAAM,MAAM,CAAC;AAAA,QAC/D;AAAA,MACA;AAAA,IACG;AAAA,IAED,MAAM,wBAAwB,WAAW,OAAO,YAAY,EAAE;AAAA,MAC5D,YAAY3H,UAAS;AACnB,cAAM,EAAE,GAAGA,UAAS,SAAS;AAAA,MACnC;AAAA,MAEI,OAAO,OAAOwmO,eAAc;AAC1B,eAAO,QAAQA,aAAY;AAAA,MACjC;AAAA,IACA;AAEE,WAAO;AAAA,EACR;AAEa,cAAG,QAAS;;;;;;;;ACtC1B,QAAM,SAASnmO,cAAoB;AACnC,QAAM,EAAE,aAAa,SAAU,IAAGW,aAAmB;AAAA,EAErD,MAAM,sBAAsB,OAAO;AAAA,IACjC,YAAYhB,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,WAAY;AAAA,IACrB;AAAA,IAEE,MAAM,aAAa;AACjB,UAAI,UAAU,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,KAAK;AACzD,WAAK,QAAQ,MAAM,KAAK,KAAK,OAAO;AACpC,YAAM,MAAM,WAAY;AAAA,IAC5B;AAAA,IAEE,SAAS,IAAI;AACX,UAAI,CAAC,KAAK,QAAQ,EAAE,EAAG,QAAO,KAAK,MAAO;AAC1C,WAAK,QAAQ;AACb,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAOU,QAAO;AACZ,UAAI,EAAE,QAAQ,OAAAlB,OAAK,IAAK;AACxB,aAAO,CAACA,OAAM,YAAY,OAAO,QAAQkB,MAAK,IAAI,OAAO,QAAQA,MAAK;AAAA,IAC1E;AAAA,IAEE,KAAKiH,QAAO;AACV,aAAO,KAAK,OAAOA,MAAK;AAAA,IAC5B;AAAA,IAEE,OAAOA,QAAO;AACZ,aAAO,UAAU,KAAKA,MAAK;AAAA,IAC/B;AAAA,IAEE,QAAQA,QAAO;AACb,aAAO,UAAU,KAAKA,MAAK;AAAA,IAC/B;AAAA,IAEE,QAAQjH,QAAO;AACb,aAAO,YAAYA,MAAK,MAAM,KAAK,OAAOA,MAAK,KAAK,KAAK,QAAQA,MAAK;AAAA,IAC1E;AAAA,IAEE,MAAM,OAAO;AACX,UAAI,KAAK,MAAM,WAAW,WAAW;AACnC,YAAI,OAAO,MAAM,KAAK,QAAQ,MAAM;AACpC,YAAI,CAAC,SAAS,IAAI,GAAG;AACnB,iBAAO,KAAK,OAAO,MAAM,IAAI;AAAA,QACrC;AACM,eAAO;AAAA,MACb;AAAA,IACA;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,OAAAiH,QAAO,KAAM,IAAG,KAAK;AAE3B,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,MAAM,MAAM,KAAK,UAAW;AAChC,UAAI,MAAM,MAAM,KAAK,QAAS;AAC9B,UAAI,OAAO,KAAK,OAAO,MAAM,KAAK,OAAO;AAEzC,UAAI,aAAa,CAAC,QAAQ,KAAK,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAClE,WAAK,MAAM,SAAS;AAEpB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAIjH,SAAQ,KAAK,QAAQ,KAAK,KAAKiH,MAAK;AACxC,UAAI,SAAS,MAAM,KAAK,OAAOjH,MAAK;AACpC,UAAI,OAAQ,MAAM,KAAK,MAAK,KAAQ,MAAM,KAAK;AAC/C,UAAI,SAAS,MAAM,KAAK,OAAQ;AAEhC,UAAI,QAAQ,CAAC,WAAW,SAAS,IAAI,EAAG,WAAU,MAAM;AACxD,oBAAc,MAAM;AAEpB,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAAC,QAAQ,YAAY,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AAClE,WAAK,QAAS;AAAA,IAClB;AAAA,IAEE,IAAI,MAAMA,QAAO;AACf,YAAM,QAAQA;AAAA,IAClB;AAAA,IACE,IAAI,QAAQ;AACV,aAAO,KAAK,KAAK,MAAM,KAAK;AAAA,IAChC;AAAA,EACA;AAEA,YAAiB;;;;;;;;ACrFjB,QAAM,gBAAgBL,eAA2B;AAAA,EAEjD,MAAM,sBAAsB,cAAc;AAAA,IACxC,YAAYL,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,UAAU,KAAK,QAAQ,YAAY,KAAK,UAAU,UAAU;AAAA,IACrE;AAAA,EACA;AAEA,YAAiB;;;;;;;;ACTjB,QAAM,SAASK,cAAmB;AAClC,QAAM,OAAOW,YAAiB;AAC9B,QAAMylO,QAAO,KAAK;AAAA,EAElB,MAAM,iBAAiB,OAAO;AAAA,IAC5B,YAAYzmO,UAAS;AACnB,YAAM,EAAE,GAAGA,UAAS,UAAU,KAAI,CAAE;AACpC,WAAK,QAAQ,CAAC,KAAK,QAAQ,OAAO,MAAM,EAAE,KAAK,OAAK,KAAK,IAAI;AAC7D,WAAK,aAAa;AAClB,WAAK,SAAS,CAAE;AAAA,IACpB;AAAA,IAEE,SAAS,MAAMM,MAAK;AAClB,UAAI,SAAS,KAAK;AAClB,UAAI,SAAS,OAAO,UAAU,CAAE;AAChC,UAAI,CAAC,OAAO,YAAY,CAAC,OAAO,UAAU;AACxC,YAAI,SAAS,OAAO,SAAS,IAAK,QAAO,MAAM,IAAI,EAAG;AAAA,MAC5D;AACI,aAAOmmO,MAAK,SAAS,KAAK,MAAM,MAAMnmO,IAAG;AAAA,IAC7C;AAAA,IAEE,OAAO,MAAMA,MAAK;AAChB,aAAOmmO,MAAK,OAAO,KAAK,MAAM,MAAMnmO,IAAG;AAAA,IAC3C;AAAA,IAEE,OAAO,MAAMA,MAAK;AAChB,aAAOmmO,MAAK,OAAO,KAAK,MAAM,MAAMnmO,IAAG;AAAA,IAC3C;AAAA,IAEE,MAAM,MAAM;AACV,aAAO,KAAK,QAAQ,WAAW,KAAK,OAAO,IAAI,IAAI,MAAM,MAAO;AAAA,IACpE;AAAA,IAEE,OAAO,MAAM;AACX,aAAO,KAAK,QAAQ,WAAW,KAAK,OAAO,IAAI,IAAI,MAAM,OAAO,IAAI;AAAA,IACxE;AAAA,IAEE,OAAO;AACL,aAAO,KAAK,QAAQ,WAAWmmO,MAAK,KAAK,KAAK,IAAI,IAAI,MAAM,KAAM;AAAA,IACtE;AAAA,IAEE,OAAO;AACL,aAAO,KAAK,QAAQ,WAAWA,MAAK,KAAK,KAAK,IAAI,IAAI,MAAM,KAAM;AAAA,IACtE;AAAA,IAEE,MAAM,UAAU,QAAQ,GAAG;AACzB,UAAI,SAAS,OAAO,aAAa;AACjC,UAAI/lO,SAAQ,OAAO,WAAW,SAAS,MAAM,UAAU,QAAQ,CAAC;AAChE,aAAO,MAAM,KAAK,QAAQA,QAAO,KAAK,OAAO,QAAQ,CAAC,KAAK;AAAA,IAC/D;AAAA,IAEE,OAAO,QAAQ;AACb,aAAO,OAAO,SAAS,YAAY,KAAM,OAAO,WAAW,MAAM;AAAA,IACrE;AAAA,IAEE,MAAM,aAAa,QAAQ,GAAG;AAC5B,aAAO,SAAS;AAChB,UAAI,OAAO,SAAU,QAAO+lO,MAAK,aAAa,KAAK,MAAM,QAAQ,CAAC;AAClE,aAAO,MAAM,aAAa,QAAQ,CAAC;AAAA,IACvC;AAAA,IAEE,QAAQ;AACN,aAAO;AAAA,IACX;AAAA,IAEE,SAAS;AACP,aAAO,KAAK,MAAM;AAAA,IACtB;AAAA,IAEE,MAAM,WAAW;AACf,UAAI,SAAS;AAEb,eAAS,UAAU,KAAK,SAAS;AAC/B,YAAI,OAAO,OAAO,aAAa,YAAY;AACzC;AAAA,QACR;AAEM,YAAI,OAAO,SAAS,WAAW;AAC7B;AAAA,QACR;AAEM,YAAI,MAAM,OAAO,SAAS,KAAK,MAAM,OAAO,OAAO,IAAI,IAAI,KAAK;AAEhE,YAAI,OAAO,UAAU;AACnB,gBAAM,OAAO,UAAU,OAAO,OAAO,OAAO,WAAW,KAAK,OAAO;AAAA,QACpE,WAAU,CAAC,KAAK,WAAW,MAAM,GAAG;AACnC,gBAAM,OAAO,YAAY;AAAA,QACjC;AAEM,iBAAS,MAAM,OAAO,SAAS,KAAK,KAAK,KAAK;AAE9C,YAAI,WAAW,MAAM;AACnB;AAAA,QACR;AAAA,MACA;AAEI,UAAI,WAAW,MAAM;AACnB,aAAK,MAAM,QAAQ,OAAO,WAAW,WAAW,SAAS;AAAA,MAC/D;AAEI,aAAO;AAAA,IACX;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,QAAQ,cAAc,KAAM,QAAO,MAAM,OAAQ;AAC1D,UAAI,KAAK,QAAQ,KAAK,QAAM,GAAG,SAAS,GAAG;AACzC,eAAO,KAAK,MAAO;AAAA,MACzB;AAEI,WAAK,QAAQ,CAAE;AAEf,eAAS,UAAU,KAAK,SAAS;AAC/B,YAAI,MAAM,OAAO,SAAS,KAAK,MAAM,OAAO,OAAO,IAAI,IAAI,KAAK;AAEhE,YAAI,OAAO,SAAS,WAAW;AAC7B,eAAK,MAAM,OAAO,IAAI,IAAI,CAAE;AAC5B;AAAA,QACR;AAEM,YAAI,OAAO,UAAU;AACnB,cAAI,OAAO,IAAI,IAAI,OAAO,UAAU,OAAO,OACtC,OAAO,WAAW,KACnB,OAAO;AAAA,QAEZ,WAAU,CAAC,KAAK,WAAW,MAAM,GAAG;AACnC,cAAI,OAAO,IAAI,IAAI,OAAO,YAAY;AAAA,QAC9C;AAAA,MACA;AAEI,aAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACrC;AAAA,EACA;AAEA,aAAiB;;;;;;;;ACrIjB,QAAM,SAASpmO,cAAoB;AACnC,QAAMqX,eAAc1W,mBAAyB;AAC7C,QAAM,EAAE,YAAa,IAAGW,aAAmB;AAAA,EAE3C,MAAM,qBAAqB,OAAO;AAAA,IAChC,YAAY3B,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,UAAU,YAAY,KAAK,OAAO,IAAI,OAAO,KAAK,OAAO,IAAI;AAClE,UAAI,KAAK,QAAS,MAAK,WAAY;AACnC,WAAK,MAAM,aAAa;AACxB,WAAK,MAAM,YAAY,CAAE;AAAA,IAC7B;AAAA,IAEE,MAAM,SAAS2H,QAAOrH,OAAM,IAAI;AAC9B,UAAI,OAAO,KAAK,MAAM;AACtB,WAAK,MAAM,eAAeA;AAC1B,UAAI,KAAK,QAAQ,cAAc,QAAQA,KAAI,SAAS,UAAU;AAC5D,YAAI,CAAC,QAAQ,KAAK,SAAS,UAAU;AACnC,iBAAO,KAAK,OAAO,MAAMA,IAAG;AAAA,QACpC;AAAA,MACA;AACI,aAAO,MAAM,SAASqH,QAAOrH,IAAG;AAAA,IACpC;AAAA,IAEE,WAAW,GAAG;AACZ,WAAK,UAAU;AAAA,IACnB;AAAA,IAEE,QAAQ;AACN,WAAK,QAAQ,KAAK,QAAQ;AAC1B,WAAK,SAAS;AACd,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS,IAAIA,MAAK;AAChB,UAAI,CAAC,MAAMA,KAAI,QAAQA,KAAI,KAAM,QAAO,KAAK,MAAO;AACpD,WAAK,OAAO,EAAE;AAAA,IAClB;AAAA,IAEE,OAAO,IAAI;AACT,UAAI,EAAE,QAAQ,OAAAqH,OAAO,IAAG,KAAK;AAC7B,WAAK,QAAQ,GAAGA,MAAK,GAAG,MAAM,GAAG,MAAM,IAAI,KAAK,GAAGA,MAAK,GAAG,MAAM,MAAM;AACvE,WAAK,WAAW,OAAO,EAAE,EAAE,MAAM;AACjC,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO,KAAK;AACV,WAAK,OAAO,GAAG;AAAA,IACnB;AAAA,IAEE,SAAS;AACP,UAAI,EAAE,QAAQ,OAAAA,OAAO,IAAG,KAAK;AAC7B,UAAI,UAAU,EAAG,QAAO,KAAK,MAAO;AACpC,WAAK,QAAQ,GAAGA,MAAK,GAAG,MAAM,GAAG,SAAS,CAAC,IAAI,GAAGA,MAAK,GAAG,MAAM,MAAM;AACtE,WAAK,WAAW,EAAE;AAClB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,gBAAgB;AACd,UAAI,EAAE,QAAQ,OAAAA,OAAO,IAAG,KAAK;AAC7B,UAAIA,OAAM,MAAM,MAAM,OAAQ,QAAO,KAAK,MAAO;AACjD,WAAK,QAAQ,GAAGA,MAAK,GAAG,MAAM,GAAG,MAAM,IAAI,GAAGA,MAAK,GAAG,MAAM,SAAS,CAAC;AACtE,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,aAAa;AACX,UAAImF,OAAM,KAAK;AACf,UAAI,KAAK,MAAM,UAAUA,KAAK,QAAO,KAAK,MAAO;AACjD,WAAK,MAAM,UAAU,KAAK,KAAK,MAAM,MAAMA,IAAG,CAAC;AAC/C,WAAK,QAAQ,KAAK,MAAM,MAAM,GAAGA,IAAG;AACpC,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,UAAU;AACR,UAAIA,OAAM,KAAK;AACf,UAAIA,SAAQ,EAAG,QAAO,KAAK,MAAO;AAClC,UAAI,SAAS,KAAK,MAAM,MAAM,GAAGA,IAAG;AACpC,UAAI,QAAQ,KAAK,MAAM,MAAMA,IAAG;AAChC,UAAI,QAAQ,OAAO,MAAM,GAAG;AAC5B,WAAK,MAAM,UAAU,KAAK,MAAM,IAAG,CAAE;AACrC,WAAK,QAAQ,MAAM,KAAK,GAAG;AAC3B,WAAK,SAAS,KAAK,MAAM;AACzB,WAAK,SAAS;AACd,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,QAAQ;AACN,UAAI,CAAC,KAAK,MAAM,UAAU,OAAQ,QAAO,KAAK,MAAO;AACrD,WAAK,OAAO,KAAK,MAAM,UAAU,IAAG,CAAE;AACtC,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,eAAe;AACb,UAAI,KAAK,MAAM,YAAY;AACzB,aAAK,SAAS,KAAK,MAAM;AACzB,aAAK,MAAM,aAAa;AAAA,MAC9B,OAAW;AACL,aAAK,MAAM,aAAa,KAAK;AAC7B,aAAK,SAAS;AAAA,MACpB;AACI,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,QAAQ;AACN,WAAK,SAAS;AACd,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,WAAK,SAAS,KAAK,MAAM,SAAS;AAClC,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,UAAI,OAAO,KAAK,WAAW,OAAO,OAAO,KAAK,OAAO,IAAI;AACzD,UAAI,CAAC,QAAQ,CAAC,KAAK,WAAW,KAAK,KAAK,EAAG,QAAO,KAAK,MAAO;AAC9D,WAAK,QAAQ,KAAK;AAClB,WAAK,SAAS,KAAK,QAAQ;AAC3B,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,UAAI,CAAC,KAAK,MAAO,QAAO,KAAK,MAAO;AACpC,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,WAAW;AACT,aAAO,KAAK,KAAM;AAAA,IACtB;AAAA,IAEE,UAAU;AACR,aAAO,KAAK,MAAO;AAAA,IACvB;AAAA,IAEE,QAAQ;AACN,UAAI,KAAK,UAAU,KAAK,MAAM,OAAQ,QAAO,KAAK,MAAO;AACzD,WAAK,WAAW,CAAC;AACjB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,UAAU,EAAG,QAAO,KAAK,MAAO;AACzC,WAAK,WAAW,EAAE;AAClB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,QAAQpM,QAAO;AACb,aAAO,CAAC,CAACA;AAAA,IACb;AAAA,IAEE,MAAM,OAAOiH,SAAQ,KAAK,OAAO;AAC/B,UAAI,UAAU,MAAM,KAAK,QAAQ,KAAK,SAAS,KAAK,KAAK;AACzD,UAAI,CAAC,KAAK,MAAM,WAAW;AACzB,eAAO+P,aAAY,MAAM,EAAE,OAAA/P,QAAO,SAAS,KAAK,KAAK,QAAQ;AAAA,MACnE;AACI,aAAO,KAAK,OAAO,UAAUA,UAAS,OAAO;AAAA,IACjD;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,OAAO,KAAK,MAAM;AAEtB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAIw+N,UAAS,CAAC,QAAQ,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAClE,WAAK,MAAM,SAASA;AAEpB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,OAAQ,MAAM,KAAK,MAAK,KAAQ,MAAM,KAAK;AAC/C,UAAI,SAAS,MAAM,KAAK,OAAQ;AAEhC,UAAI,QAAQ,CAAC,OAAO,SAAS,IAAI,EAAG,WAAU,MAAM;AACpD,MAAAA,WAAU,MAAM;AAEhB,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAAC,QAAQA,SAAQ,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AAC9D,WAAK,QAAS;AAAA,IAClB;AAAA,EACA;AAEA,WAAiB;;;;;;;;ACtLjB,QAAM,SAAS,SAAO,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC;AACnE,QAAM,UAAU,SAAO,OAAO,GAAG,EAAE,OAAO,OAAO;AAEnC,cAAG,CAAC,QAAQ,OAAO,CAAA,GAAIzlO,SAAQ,OAAO;AAClD,QAAI,EAAE,OAAO,CAAA,GAAI,UAAU,GAAI,IAAG;AAClC,QAAI,MAAM;AAEV,YAAQ,QAAM;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC;AACpC,eAAO,KAAK,KAAK,SAAS,CAAC,KAAK;AAChC,eAAO;AAAA,UACL,MAAM,QAAQ,CAACA,QAAO,GAAG,IAAI,CAAC;AAAA,UAC9B,SAAS;AAAA,QACV;AAAA,MAEH,KAAK;AAAA,MACL,KAAK;AACH,eAAO,KAAK,MAAM,CAAC;AACnB,eAAO,KAAK,CAAC,KAAK;AAClB,eAAO;AAAA,UACL,MAAM,QAAQ,CAAC,GAAG,MAAMA,MAAK,CAAC;AAAA,UAC9B,SAAS;AAAA,QACV;AAAA,MAEH,KAAK;AACH,eAAO;AAAA,UACL,MAAM,QAAQ,CAAC,GAAG,MAAMA,MAAK,CAAC;AAAA,UAC9B,SAAS;AAAA,QACV;AAAA,MAEH,KAAK;AACH,eAAO,QAAQ,KAAK,OAAO,OAAK,MAAMA,MAAK,CAAC;AAC5C,kBAAU;AAEV,YAAI,KAAK,QAAQ;AACf,oBAAU,KAAK,IAAK;AAAA,QAC5B;AAEM,eAAO;AAAA,UACL,MAAM;AAAA,UACN;AAAA,QACD;AAAA,MAEH,SAAS;AACP,cAAM,IAAI,MAAM,oBAAoB,MAAM,GAAG;AAAA,MACnD;AAAA,IACA;AAAA,EACC;;;;;;;;ACjDD,QAAM,SAASL,cAA0B;AACzC,QAAMqmO,aAAY1lO,iBAAuB;AAAA,EAEzC,MAAM,cAAc,OAAO;AAAA,IACzB,YAAYhB,UAAS;AACnB,YAAMA,QAAO;AACb,UAAI,UAAU,KAAK,QAAQ;AAC3B,UAAI,WAAW,QAAQ,OAAO;AAC5B,YAAI,UAAU,QAAQ,UAAU,KAAK;AACrC,aAAK,WAAW,CAAC,CAAC,QAAQ;AAC1B,aAAK,QAAQ,QAAQ;AACrB,aAAK,OAAO,KAAK,MAAM,IAAI,QAAQ,KAAK,EAAE,MAAM,IAAI,SAAS,QAAS;AACtE,aAAK,UAAU,KAAK,KAAK,WAAW,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,SAAS,CAAC;AAAA,MAClF;AAAA,IACA;AAAA,IAEE,WAAW,QAAQ;AACjB,UAAI,CAAC,KAAK,MAAO,QAAO,KAAK,MAAO;AACpC,WAAK,OAAO0mO,WAAU,QAAQ,KAAK,MAAM,KAAK,KAAK;AACnD,UAAI,CAAC,KAAK,KAAK,QAAS,QAAO,KAAK,MAAO;AAC3C,WAAK,QAAQ,KAAK,KAAK;AACvB,WAAK,SAAS,KAAK,MAAM;AACzB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,QAAQ;AACN,aAAO,KAAK,WAAW,MAAM;AAAA,IACjC;AAAA,IAEE,UAAU;AACR,aAAO,KAAK,WAAW,MAAM;AAAA,IACjC;AAAA,IAEE,OAAO;AACL,WAAK,KAAM;AACX,aAAO,MAAM,KAAM;AAAA,IACvB;AAAA,IAEE,OAAO;AACL,UAAI,CAAC,KAAK,MAAO;AACjB,WAAK,OAAOA,WAAU,QAAQ,KAAK,MAAM,KAAK,KAAK;AACnD,WAAK,MAAM,IAAI,UAAU,KAAK,IAAI;AAAA,IACtC;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,SAAS,KAAK,aAAa,MAAM;AACxC,aAAK,KAAM;AAAA,MACjB;AACI,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,EACA;AAEA,UAAiB;;;;;;;;ACpDjB,QAAM,eAAermO,cAA0B;AAAA,EAE/C,MAAM,wBAAwB,aAAa;AAAA,IACzC,SAAS;AACP,aAAO;AAAA,IACX;AAAA,EACA;AAEA,cAAiB;;;;;;;;ACRjB,QAAM,eAAeA,cAA0B;AAAA,EAE/C,MAAM,mBAAmB,aAAa;AAAA,IACpC,YAAYL,WAAU,IAAI;AACxB,YAAMA,QAAO;AACb,WAAK,MAAM,KAAK,QAAQ,aAAa;AACrC,WAAK,UAAUA,SAAQ,WAAW;AAAA,IACtC;AAAA,IAEE,MAAM2H,SAAQ,KAAK,OAAO;AACxB,aAAOA,SAAQ,OAAOA,MAAK,EAAE,MAAM,KAAK,GAAG,IAAI,CAAE;AAAA,IACrD;AAAA,IAEE,SAAS;AACP,UAAI,QAAQ,KAAK,MAAM,YAAY,KAAK,OAAO,UAAU,SAAO;AAChE,aAAO,KAAK,KAAK,IAAI,KAAK,EAAE,KAAK,IAAI;AAAA,IACzC;AAAA,IAEE,MAAM,OAAOjH,QAAO;AAClB,UAAI,SAAS,KAAK,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,MAAM,KAAK,KAAK;AAC1E,UAAI,WAAW,MAAM;AACnB,aAAK,MAAM,QAAQ;AACnB,eAAO,MAAM,OAAQ;AAAA,MAC3B;AACI,WAAK,QAAQ,KAAK;AAClB,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,IAEE,IAAI,OAAO;AACT,aAAO,KAAK,MAAO;AAAA,IACvB;AAAA,EACA;AAEA,SAAiB;;;;;;;;ACjCjB,QAAM,SAASL,cAAmB;AAAA,EAElC,MAAM,oBAAoB,OAAO;AAAA,IAC/B,YAAYL,UAAS;AACnB,YAAM,EAAE,GAAGA,UAAS,UAAU,KAAI,CAAE;AAAA,IACxC;AAAA,EACA;AAEA,gBAAiB;;;;;;;;ACRjB,QAAM,eAAeK,cAAmB;AAAA,EAExC,MAAM,qBAAqB,aAAa;AAAA,IACtC,YAAYL,WAAU,IAAI;AACxB,YAAM,EAAE,OAAO,UAAU,GAAGA,SAAO,CAAE;AACrC,WAAK,MAAM,KAAK,QAAQA,SAAQ,GAAG,IAAI,KAAK,SAASA,SAAQ,GAAG,IAAI;AACpE,WAAK,MAAM,KAAK,QAAQA,SAAQ,GAAG,IAAI,KAAK,SAASA,SAAQ,GAAG,IAAI;AACpE,WAAK,QAAQA,SAAQ,SAAS,OAAOA,SAAQ,QAAQ;AACrD,WAAK,QAAQA,SAAQ,UAAU;AAC/B,WAAK,QAAQA,SAAQ,UAAU,QAAQA,SAAQ,UAAU;AACzD,WAAK,QAAQA,SAAQ,SAAS;AAC9B,WAAK,QAAQA,SAAQ,SAAS;AAC9B,WAAK,UAAUA,SAAQ,WAAW,OAAOA,SAAQ,UAAU;AAC3D,WAAK,QAAQ,OAAO,KAAK,OAAO;AAChC,WAAK,SAAS,KAAK,MAAM;AACzB,WAAK,WAAY;AAAA,IACrB;AAAA,IAEE,OAAO,IAAI;AACT,UAAI,CAAC,QAAQ,KAAK,EAAE,KAAM,OAAO,OAAO,KAAK,MAAM,SAAS,GAAG,GAAI;AACjE,eAAO,KAAK,MAAM,gBAAgB;AAAA,MACxC;AACI,aAAO,MAAM,OAAO,EAAE;AAAA,IAC1B;AAAA,IAEE,OAAO,IAAI;AACT,aAAO,MAAM,OAAO,EAAE;AAAA,IAC1B;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,SAAS,KAAK,UAAU,KAAK,QAAS,QAAO,KAAK,MAAO;AAClE,UAAI,CAAC,KAAK,QAAQ,KAAK,OAAO,EAAG,QAAO,KAAK,MAAO;AACpD,WAAK,QAAQ,KAAK;AAClB,WAAK,SAAS,OAAO,KAAK,OAAO,EAAE;AACnC,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,GAAGqB,SAAQ;AACT,UAAI,OAAOA,WAAU,KAAK;AAC1B,UAAI,MAAM,KAAK,SAAS,KAAK,KAAK;AAClC,UAAI,MAAM,KAAK,MAAM,KAAM,QAAO,KAAK,MAAO;AAC9C,WAAK,QAAQ,GAAG,MAAM,IAAI;AAC1B,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,KAAKA,SAAQ;AACX,UAAI,OAAOA,WAAU,KAAK;AAC1B,UAAI,MAAM,KAAK,SAAS,KAAK,KAAK;AAClC,UAAI,MAAM,KAAK,MAAM,KAAM,QAAO,KAAK,MAAO;AAC9C,WAAK,QAAQ,GAAG,MAAM,IAAI;AAC1B,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,YAAY;AACV,aAAO,KAAK,KAAK,KAAK,KAAK;AAAA,IAC/B;AAAA,IAEE,UAAU;AACR,aAAO,KAAK,GAAG,KAAK,KAAK;AAAA,IAC7B;AAAA,IAEE,OAAOsG,SAAQ,KAAK,OAAO;AACzB,UAAI,OAAO,KAAK,QAAQ,WAAW,YAAY;AAC7C,eAAO,KAAK,QAAQ,OAAO,KAAK,MAAMA,MAAK;AAAA,MACjD;AACI,aAAO,KAAK,OAAO,KAAKA,MAAK;AAAA,IACjC;AAAA,IAEE,SAASjH,SAAQ,IAAI;AACnB,aAAO,KAAK,QAAQ,CAACA,SAAQ,KAAK,MAAM,CAACA,MAAK;AAAA,IAClD;AAAA,IAEE,QAAQA,QAAO;AACb,aAAO,kCAAkC,KAAKA,MAAK;AAAA,IACvD;AAAA,IAEE,SAAS;AACP,UAAIA,SAAQ,CAAC,KAAK,OAAO,KAAK,OAAO,EAAE,KAAK,OAAK,KAAK,QAAQ,CAAC,CAAC;AAChE,WAAK,QAAQ,KAAK,SAASA,UAAS,CAAC;AACrC,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,EACA;AAEA,WAAiB;;;;;;;;ACrFjB,YAAiBL,cAA0B;;;;;;;;ACE3C,QAAM,eAAeA,cAA0B;AAAA,EAE/C,MAAM,uBAAuB,aAAa;AAAA,IACxC,YAAYL,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,WAAY;AAAA,IACrB;AAAA,IAEE,OAAO2H,SAAQ,KAAK,OAAO;AACzB,UAAI,CAAC,KAAK,WAAY,QAAO;AAC7B,UAAI,QAAQ,KAAK,MAAM,YAAY,KAAK,OAAO,UAAU,KAAK,OAAO;AACrE,aAAO,MAAM,KAAK,QAAQ,SAAS,OAAOA,OAAM,MAAM,CAAC;AAAA,IAC3D;AAAA,EACA;AAEA,aAAiB;;;;;;;;ACfjB,QAAMjF,UAASrC,kBAAsB;AACrC,QAAM,cAAcW,aAAyB;AAC7C,QAAM0E,SAAQ/D,aAAmB;AAAA,EAEjC,MAAM,oBAAoB,YAAY;AAAA,IACpC,YAAY3B,WAAU,IAAI;AACxB,YAAMA,QAAO;AACb,WAAK,SAAS,CAAE,EAAC,OAAOA,SAAQ,gBAAgB,EAAE;AAClD,WAAK,QAAQ,CAAE,EAAC,OAAOA,SAAQ,SAAS,MAAM;AAC9C,WAAK,YAAYA,SAAQ,aAAa;AACtC,WAAK,aAAaA,SAAQ,cAAc;AACxC,WAAK,UAAUA,SAAQ,WAAW;AAClC,UAAI,QAAQA,SAAQ,eAAe;AACnC,UAAI,OAAO,KAAK,UAAU,UAAU;AAClC,aAAK,WAAW;AAChB,aAAK,QAAQ,MAAM,KAAK,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,OAAO,EAAE,MAAM,IAAI,MAAK,EAAG;AAAA,MAChF;AAAA,IACA;AAAA,IAEE,MAAM,QAAQ;AACZ,WAAK,YAAY;AACjB,YAAM,MAAM,MAAO;AACnB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,WAAW;AACT,UAAI,KAAK,cAAc,KAAM;AAC7B,WAAK,YAAY;AACjB,UAAI,UAAU;AAEd,eAAS,MAAM,KAAK,SAAS;AAC3B,kBAAU,KAAK,IAAI,SAAS,GAAG,QAAQ,MAAM;AAC7C,WAAG,aAAa,GAAG,WAAW;AAC9B,WAAG,QAAQ,CAAE;AAEb,iBAAS,IAAI,GAAG,IAAI,KAAK,MAAM,QAAQ,KAAK;AAC1C,aAAG,MAAM,KAAK,EAAE,OAAO,EAAC,CAAE;AAAA,QAClC;AAAA,MACA;AACI,WAAK,OAAO,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC,GAAG,UAAU,CAAC;AAAA,IACzD;AAAA,IAEE,MAAM,SAAS,GAAGM,MAAK;AACrB,UAAI,KAAK,UAAU;AACjB,eAAO,KAAKA,KAAI,IAAI,IAAI,MAAM,KAAKA,KAAI,IAAI,EAAE,GAAGA,IAAG,IAAI,MAAM,MAAM,SAAS,GAAGA,IAAG;AAAA,MACxF;AACI,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,QAAQ,KAAKyC,OAAM,GAAG;AACpB,aAAO,KAAK,OAAO,OAAO,GAAG;AAAA,IACjC;AAAA,IAEE,YAAY;AACV,aAAO,KAAK,OAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,IAClD;AAAA,IAEE,QAAQ;AACN,UAAI,SAAS,KAAK;AAClB,UAAI,OAAO,cAAc,KAAK,MAAM,SAAS,EAAG,QAAO,KAAK,MAAO;AACnE,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,SAAS,KAAK;AAClB,UAAI,OAAO,cAAc,EAAG,QAAO,KAAK,MAAO;AAC/C,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS;AACP,aAAO;AAAA,IACX;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,MAAM,WAAW;AACxB,YAAI,SAAS,KAAK,QAAQ,IAAI,QAAM,KAAK,OAAO,KAAK,GAAG,KAAK,CAAC;AAC9D,eAAO,OAAO,KAAK,IAAI;AAAA,MAC7B;AACI,aAAO;AAAA,IACX;AAAA,IAEE,UAAU;AACR,aAAO;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE,iBAAiB;AACf,UAAI,KAAK,aAAa,MAAO,QAAO;AACpC,UAAI,KAAK,MAAM,UAAW,QAAO;AACjC,UAAI4jO,SAAQ,KAAK,MAAM,IAAI,CAAA5jO,UAAQ,MAAMA,MAAK,IAAI,MAAMA,MAAK,OAAO,EAAE;AACtE,UAAIzC,OAAM,CAAC,IAAI,GAAGqmO,MAAK,EAAE,IAAI,CAAA5jO,UAAQ,KAAK,OAAO,MAAMA,KAAI,CAAC;AAC5D,aAAOzC,KAAI,KAAK,IAAI;AAAA,IACxB;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE,mBAAmB,KAAK;AACtB,UAAI,OAAO,KAAK,MAAM,IAAI,SAAO,IAAI,IAAI;AACzC,UAAI,OAAO,KAAK,QAAQ,uBAAuB,YAAY;AACzD,eAAO,KAAK,QAAQ,mBAAmB,KAAK,MAAM,GAAG;AAAA,MAC3D;AACI,UAAI,OAAO,KAAK,cAAc,KAAK,KAAK,EAAE,EAAE;AAC5C,UAAI,UAAU,KAAK,MAAM,QAAQ,KAAK,SAAS,EAAE;AACjD,UAAI,QAAQ,KAAK,IAAI,CAAAA,SAAO,KAAK,OAAO,OAAOA,IAAG,CAAC;AACnD,UAAI,WAAW,MAAM,KAAK,IAAI,OAAO,OAAO,CAAC;AAC7C,UAAI,UAAU,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC;AACvC,aAAO,KAAK,OAAO,CAAC,IAAI,UAAU,KAAK,OAAO,CAAC,IAAI;AAAA,IACvD;AAAA;AAAA;AAAA;AAAA,IAME,eAAe,QAAQyC,OAAM,GAAG;AAC9B,UAAI,OAAO,KAAK,QAAQ,mBAAmB,YAAY;AACrD,eAAO,KAAK,QAAQ,eAAe,KAAK,MAAM,QAAQA,OAAM,CAAC;AAAA,MACnE;AACI,UAAI,UAAU,OAAO,eAAeA,MAAK;AACzC,UAAIA,MAAK,SAAU,QAAO,KAAK,OAAO,KAAK,KAAK,QAAQ,MAAM,QAAQ;AACtE,UAAI,QAAS,QAAO,KAAK,OAAO,QAAQ,KAAK,QAAQ,MAAM,EAAE;AAC7D,aAAO,KAAK,QAAQ,MAAM;AAAA,IAC9B;AAAA;AAAA;AAAA;AAAA,IAME,YAAY,QAAQ,GAAG;AACrB,UAAI4jO,SAAQ,OAAO,MAAM,IAAI,CAAA5jO,UAAQ,KAAK,eAAe,QAAQA,OAAM,CAAC,CAAC;AACzE,UAAI,UAAU,KAAK,SAAS,UAAU,KAAK;AAC3C,aAAO4jO,OAAM,KAAK,UAAU,KAAK,QAAQ,KAAK,OAAO,KAAK,UAAU,CAAC;AAAA,IACzE;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE,MAAM,aAAa,QAAQ,GAAG;AAC5B,YAAM,KAAK,SAAS,QAAQ,CAAC;AAE7B,UAAI,UAAU,KAAK,UAAU;AAC7B,UAAI,UAAU,MAAM,KAAK,QAAQ,QAAQ,CAAC;AAC1C,UAAI,OAAO,MAAM,OAAO;AAExB,UAAI,QAAQ,CAACjhO,OAAM,SAAS,IAAI,GAAG;AACjC,eAAO,KAAK,OAAO,MAAM,IAAI;AAAA,MACnC;AAEI,UAAI,MAAM,SAAO,KAAK,OAAO,CAAC,IAAI,IAAI,QAAQ,QAAQ,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,GAAG;AACpF,UAAI,UAAU,KAAK;AACnB,UAAI,MAAM,KAAK,OAAO,MAAM;AAC5B,UAAI,UAAU,MAAM,KAAK,QAAQ,OAAO,SAAS,KAAK,OAAO,QAAQ,CAAC;AACtE,UAAIihO,SAAQ,MAAM,KAAK,YAAY,QAAQ,CAAC;AAC5C,UAAI,SAAS,KAAK,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC;AAC3C,WAAK,cAAcjkO,QAAO,QAAQikO,MAAK,EAAE;AACzC,WAAK,OAAO,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,CAAC,GAAG,KAAK,QAAQ,KAAK,cAAc,OAAO,MAAM;AACvF,UAAI,MAAMjhO,OAAM,SAAS,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,QAAO,CAAE;AACpE,UAAI,QAAQ,IAAI,MAAM,IAAI,EAAE,IAAI,CAAAjG,UAAQ,IAAIA,KAAI,IAAI,KAAK,OAAO,CAAC,CAAC;AAElE,UAAI,SAAS;AACX,QAAAknO,SAAQ,KAAK,OAAO,KAAKA,MAAK;AAC9B,gBAAQ,MAAM,IAAI,CAAAlnO,UAAQ,KAAK,OAAO,KAAKA,KAAI,CAAC;AAAA,MACtD;AAEI,YAAM,CAAC,KAAKknO;AAEZ,UAAI,KAAK,UAAW,OAAM,KAAK,EAAE;AACjC,aAAO,CAAC,MAAM,SAAS,MAAM,KAAK,IAAI,CAAC,EAAE,OAAO,OAAO;AAAA,IAC3D;AAAA,IAEE,MAAM,gBAAgB;AACpB,UAAI,KAAK,MAAM,UAAW,QAAO;AACjC,WAAK,SAAU;AACf,UAAI,UAAU,KAAK,QAAQ,IAAI,OAAM,IAAI,MAAM,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC;AAC7E,UAAI,UAAU,MAAM,QAAQ,IAAI,OAAO;AACvC,UAAI,UAAU,MAAM,KAAK,mBAAoB;AAC7C,aAAO,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,IAAI,OAAK,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI;AAAA,IACjF;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,WAAW,KAAM,IAAG,KAAK;AAE/B,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAIR,UAAS;AACb,UAAI,KAAK,QAAQ,eAAe,OAAO;AACrC,QAAAA,UAAS,CAAC,QAAQ,SAAS,WAAW,EAAE,EAAE,KAAK,GAAG;AAClD,aAAK,MAAM,SAASA;AAAA,MAC1B;AAEI,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI7lO,OAAM,MAAM,KAAK,eAAgB;AACrC,UAAI,OAAO,MAAM,KAAK,MAAK,KAAM,MAAM,KAAK,KAAM;AAClD,UAAI,OAAO,MAAM,KAAK,cAAe;AACrC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,MAAM,KAAK;AAEf,UAAI,OAAQ,CAAA6lO,WAAU;AACtB,UAAI,QAAQ,CAACA,QAAO,SAAS,IAAI,EAAG,CAAAA,WAAU,MAAM;AAEpD,UAAI,aAAa,CAAC,UAAU,CAAC,KAAK,KAAM,KAAI,KAAK,YAAY,OAAO,MAAM;AACxE,QAAAA,WAAU,KAAK,OAAO,OAAO,GAAG;AAAA,MACtC;AAEI,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAAC,QAAQA,SAAQ7lO,MAAK,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AACzE,UAAI,CAAC,KAAK,MAAM,WAAW;AACzB,aAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AAAA,MAC/B;AACI,WAAK,QAAS;AAAA,IAClB;AAAA,IAEE,SAAS;AACP,WAAK,QAAQ,CAAE;AACf,eAAS,UAAU,KAAK,SAAS;AAC/B,aAAK,MAAM,OAAO,IAAI,IAAI,OAAO;AAAA,MACvC;AACI,aAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACrC;AAAA,EACA;AAEA,UAAiB;;;;;;;;AC1OjB,QAAMoC,UAASrC,kBAAsB;AACrC,QAAM,QAAQ,CAAC,MAAM,OAAO;AAC1B,WAAO,OAAO,QAAQ,WAAW,IAAI,QAAQ,gBAAgB,EAAE,IAAI;AAAA,EACpE;AAAA,EAOD,MAAM,KAAK;AAAA,IACT,YAAYuH,QAAO;AACjB,WAAK,OAAOA,OAAM;AAClB,WAAK,QAAQA,OAAM,SAAS,CAAE;AAC9B,WAAK,QAAQ,MAAMA,OAAM,WAAW,KAAK,MAAM,WAAW,EAAE;AAC5D,WAAK,UAAUA,OAAM,WAAW,KAAK;AACrC,WAAK,SAAS;AACd,WAAK,QAAQ;AACb,WAAK,QAAQ,CAAE;AAAA,IACnB;AAAA,EACA;AAEA,QAAM,WAAW,OAAM5H,WAAU,CAAE,GAAE,WAAW,IAAI,KAAK,CAAA4H,WAASA,WAAU;AAC1E,QAAI,SAAS,oBAAI,IAAK;AACtB,QAAIsxB,UAASl5B,SAAQ,UAAU,CAAE;AACjC,QAAI2H,SAAQ3H,SAAQ;AACpB,QAAI,WAAW,CAAE;AACjB,QAAI,QAAQ,CAAE;AACd,QAAI,OAAO,CAAE;AACb,QAAIP,QAAO;AAEX,QAAI,OAAOkI,WAAU,YAAY;AAC/B,MAAAA,SAAQ,MAAMA,OAAO;AAAA,IACzB;AAEE,QAAI,IAAI;AACR,QAAI,OAAO,MAAMA,OAAM,EAAE,CAAC;AAC1B,QAAIE,QAAO,MAAMF,OAAM,IAAI,CAAC;AAC5B,QAAIM,QAAO,CAAAL,WAAS;AAClB,MAAAA,OAAM,OAAOnI;AACb,eAAS,KAAKmI,MAAK;AAAA,IACpB;AAED,IAAAK,MAAK,EAAE,MAAM,OAAO,OAAO,GAAE,CAAE;AAE/B,WAAO,IAAIN,OAAM,SAAS,GAAG;AAC3B,UAAIjH,SAAQ,KAAM;AAElB,UAAI,aAAa,KAAKA,MAAK,GAAG;AAC5B,QAAAuH,MAAK,EAAE,MAAM,QAAQ,OAAAvH,OAAK,CAAE;AAC5B;AAAA,MACN;AAEI,UAAIA,WAAU,MAAM;AAClB,QAAAuH,MAAK,EAAE,MAAM,WAAW,OAAAvH,OAAK,CAAE;AAC/B,QAAAjB;AACA;AAAA,MACN;AAEI,UAAIiB,WAAU,MAAM;AAClB,QAAAA,UAAS,KAAM;AACf,QAAAuH,MAAK,EAAE,MAAM,QAAQ,OAAAvH,OAAK,CAAE;AAC5B;AAAA,MACN;AAEI,WAAKA,WAAU,OAAOA,WAAU,OAAOA,WAAU,QAAQmH,MAAM,MAAK,KAAK;AACvE,YAAI,IAAI,KAAM;AACd,QAAAnH,UAAS;AAET,YAAIkH,SAAQ,EAAE,MAAM,YAAY,MAAMlH,QAAO,OAAO,IAAI,OAAO,IAAI,OAAAA,OAAO;AAC1E,YAAI;AAEJ,eAAQ,KAAK,QAAS;AACpB,cAAI,OAAO,KAAK;AACd,gBAAImH,MAAM,MAAK,IAAK,OAAM,KAAM;AAChC,YAAAD,OAAM,SAAS;AACf,YAAAA,OAAM,QAAQ;AACd;AAAA,UACV;AAEQ,cAAI,OAAO,KAAK;AACd,YAAAA,OAAM,UAAU;AAChB,YAAAA,OAAM,MAAMA,OAAM;AAAA,qBACTA,OAAM,YAAY,QAAQ;AACnC,YAAAA,OAAM,WAAW;AAAA,UAC3B;AAEQ,UAAAA,OAAM,SAAS;AACf,UAAAA,OAAM,SAAS;AAAA,QACvB;AAEM,QAAAA,OAAM,WAAWA,OAAM,QAAQA,OAAM,WAAWA,OAAM,SAASA,OAAM;AACrE,QAAAA,OAAM,MAAMA,OAAM,OAAOA,OAAM;AAE/B,YAAI,SAAS,eAAeA,OAAM,GAAG,GAAG;AACtC,UAAAA,OAAM,UAAU,SAASA,OAAM,GAAG;AAAA,QAC1C;AAEM,QAAAA,SAAQ,GAAGA,MAAK;AAChB,QAAAK,MAAKL,MAAK;AAEV,aAAK,KAAKA,OAAM,GAAG;AACnB,eAAO,IAAIA,OAAM,GAAG;AAEpB,YAAI7E,QAAO,MAAM,KAAK,CAAAA,UAAQA,MAAK,SAAS6E,OAAM,GAAG;AACrD,QAAAA,OAAM,QAAQsxB,QAAO,KAAK,CAAAxH,QAAMA,IAAG,SAAS9pB,OAAM,GAAG;AAErD,YAAI,CAAC7E,OAAM;AACT,UAAAA,QAAO,IAAI,KAAK6E,MAAK;AACrB,gBAAM,KAAK7E,KAAI;AAAA,QACvB;AAEM,QAAAA,MAAK,MAAM,KAAK6E,OAAM,OAAO,CAAC;AAC9B;AAAA,MACN;AAEI,UAAI,OAAO,SAAS,SAAS,SAAS,CAAC;AACvC,UAAI,KAAK,SAAS,UAAU,KAAK,SAASnI,OAAM;AAC9C,aAAK,SAASiB;AAAA,MACpB,OAAW;AACL,QAAAuH,MAAK,EAAE,MAAM,QAAQ,OAAAvH,OAAK,CAAE;AAAA,MAClC;AAAA,IACA;AAEE,IAAAuH,MAAK,EAAE,MAAM,OAAO,OAAO,GAAE,CAAE;AAC/B,WAAO,EAAE,OAAAN,QAAO,UAAU,QAAQ,MAAM,MAAO;AAAA,EAChD;AAEa,gBAAG,OAAMw+N,YAAU;AAC/B,QAAInmO,WAAUmmO,QAAO;AACrB,QAAI,WAAW,IAAI,IAAInmO,SAAQ,aAAa,OAAO,CAAA,IAAMA,SAAQ,YAAY,CAAA,CAAG;AAChF,QAAI,WAAW,EAAE,GAAGA,SAAQ,QAAQ,GAAGA,SAAQ,QAAS;AACxD,QAAI,EAAE,UAAU,OAAO,KAAM,IAAG,MAAM,SAASA,UAAS,QAAQ;AAEhE,QAAI,SAAS,SAAS,UAAUmmO,OAAe;AAC/C,QAAI,SAAS,SAAS,UAAUA,OAAe;AAC/C,QAAI,UAAU,SAAS,YAAYA,SAAQnmO,UAAS,IAAI;AACxD,QAAI,QAAQmmO,QAAO,QAAQ,KAAKA,OAAM;AAEtC,WAAO,OAAM3mO,SAAQ,IAAI,YAAY,UAAU;AAC7C,UAAIW,SAAQ;AAEZ,MAAAX,OAAM,WAAW;AACjB,MAAAA,OAAM,QAAQ;AACd,MAAAA,OAAM,OAAO;AACb,MAAAA,OAAM,SAAS;AAEf,UAAIs2B,YAAW,OAAMp1B,QAAOlB,QAAOuD,OAAM5C,WAAU;AACjD,YAAIR,SAAQ,MAAM,QAAQe,QAAOlB,QAAOuD,OAAM5C,MAAK;AACnD,YAAIR,WAAU,OAAO;AACnB,iBAAO,mBAAmBoD,MAAK;AAAA,QACvC;AACM,eAAOpD;AAAA,MACR;AAED,eAASiI,UAAS,UAAU;AAC1B,YAAIlH,SAAQkH,OAAM;AAClB,YAAItH,OAAMsH,OAAM;AAEhB,YAAIA,OAAM,SAAS,YAAY;AAC7B,cAAIlH,OAAO,CAAAlB,OAAM,UAAUkB;AAC3B;AAAA,QACR;AAEM,YAAIkH,OAAM,SAAS,YAAY;AAC7B,cAAI7E,QAAO,MAAM,KAAK,QAAM,GAAG,SAASzC,IAAG;AAE3C,cAAIN,SAAQ,aAAa,MAAM;AAC7B,YAAAR,OAAM,SAAS,IAAIuD,MAAK,IAAI;AAAA,UACtC;AAEQ,cAAI,MAAM,CAACA,MAAK,OAAOvD,OAAM,OAAOuD,MAAK,KAAK,GAAGA,MAAK,OAAOrC,MAAK,EAAE,KAAK,KAAK;AAC9E,cAAI,QAAQqC,MAAK,SAAS,CAAE;AAC5B,cAAI,UAAU,MAAM,WAAW6E,OAAM;AAErC,cAAI,WAAW;AACb,gBAAIjI,SAAQ,MAAMm2B,UAASt2B,OAAM,OAAOc,IAAG,GAAGd,QAAOuD,OAAM5C,MAAK;AAChE,gBAAKR,UAAS,OAAOA,WAAU,YAAaA,WAAU,OAAO;AAC3D,cAAAH,OAAM,QAAQ,IAAIc,MAAKX,MAAK;AAC5B;AAAA,YACZ;AAEU,YAAAH,OAAM,QAAQ,OAAOc,IAAG;AACxB,gBAAI,MAAM,MAAM,OAAOd,OAAM,OAAOc,IAAG,GAAGd,QAAOuD,OAAM5C,MAAK;AAC5D,YAAAX,OAAM,UAAUkD,QAAO,QAAQ,GAAG;AAClC;AAAA,UACV;AAEQ,UAAAK,MAAK,cAAc;AAEnB,cAAI,SAASrC;AACb,UAAAA,SAAQ,MAAM,OAAOA,QAAOlB,QAAOuD,OAAM5C,MAAK;AAE9C,cAAI,QAAQO,QAAO;AACjB,YAAAlB,OAAM,OAAOc,IAAG,IAAI;AACpB,YAAAI,SAAQylO,QAAO,OAAO,OAAO,GAAG;AAChC,YAAA3mO,OAAM,QAAQ,OAAO,OAAO;AAAA,UAEtC,OAAe;AACL,YAAAA,OAAM,OAAOc,IAAG,IAAI;AACpB,kBAAM,IAAI,OAAO;AACjB,YAAAI,SAAQylO,QAAO,OAAO,QAAQ,GAAG;AACjC,YAAApjO,MAAK,cAAc;AAEnB,gBAAIvD,OAAM,SAAS,IAAIc,IAAG,GAAG;AAC3B,cAAAd,OAAM,QAAQ,IAAI,OAAO;AAAA,YACrC;AAAA,UACA;AAEQ,cAAIA,OAAM,QAAQ,IAAI,OAAO,KAAKA,OAAM,YAAY;AAClD,YAAAkB,SAAQylO,QAAO,OAAO,QAAQ,GAAG;AAAA,UAC3C;AAEQ,cAAI3mO,OAAM,QAAQ,IAAIc,IAAG,KAAKd,OAAM,YAAY;AAC9C,YAAAkB,SAAQylO,QAAO,OAAO,OAAO,GAAG;AAAA,UAC1C;AAEQ,cAAIhmO,WAAUX,OAAM,OAAO;AACzB,gBAAI,WAAWkB,QAAO;AACpB,cAAAA,SAAQylO,QAAO,OAAO,UAAUzlO,MAAK;AAAA,YACjD,OAAiB;AACL,cAAAA,SAAQylO,QAAO,OAAO,QAAQzjO,QAAO,QAAQhC,MAAK,CAAC;AAAA,YAC/D;AAAA,UACA;AAEQ,UAAAP;AAAA,QACR;AAEM,YAAIO,QAAO;AACT,UAAAlB,OAAM,UAAUkB;AAAA,QACxB;AAAA,MACA;AAEI,UAAI,QAAQlB,OAAM,OAAO,MAAM,IAAI,EAAE,IAAI,OAAK,MAAM,CAAC;AACrD,UAAI,MAAM,MAAM;AAChB,UAAI,OAAO;AAEX,eAASuD,SAAQ,OAAO;AACtB,YAAIvD,OAAM,QAAQ,IAAIuD,MAAK,IAAI,GAAG;AAChC,UAAAA,MAAK,MAAM,QAAQ,OAAK;AACtB,gBAAI,MAAM,CAAC,EAAE,CAAC,MAAM,IAAK;AACzB,kBAAM,CAAC,IAAIvD,OAAM,OAAO,OAAOA,OAAM,QAAQ,MAAM,IAAI,MAAM,CAAC,EAAE,MAAM,CAAC;AAAA,UACjF,CAAS;AAAA,QACT;AAEM,YAAI2mO,QAAO,QAAQ3mO,OAAM,OAAOuD,MAAK,IAAI,CAAC,GAAG;AAC3C;AAAA,QACR;AAAA,MACA;AAEI,MAAAvD,OAAM,aAAc,OAAO,MAAO,KAAK,QAAQ,CAAC;AAChD,MAAAA,OAAM,SAAS,MAAM,KAAK,IAAI;AAC9B,aAAOA,OAAM;AAAA,IACd;AAAA,EACF;AAED,WAAS,SAAS,MAAM2mO,SAAQnmO,UAAS,UAAU;AACjD,WAAO,CAACU,QAAOlB,QAAOuD,OAAM5C,WAAU;AACpC,UAAI,OAAO4C,MAAK,MAAM,IAAI,MAAM,YAAY;AAC1C,eAAOA,MAAK,MAAM,IAAI,EAAE,KAAKojO,SAAQzlO,QAAOlB,QAAOuD,OAAM5C,MAAK;AAAA,MACpE;AACI,aAAO,CAAC,UAAUO,MAAK,EAAE,KAAK,OAAKylO,QAAO,QAAQ,CAAC,CAAC;AAAA,IACrD;AAAA,EACH;;;;;;;;ACvQA,QAAMzjO,UAASrC,kBAAsB;AACrC,QAAMumO,eAAc5lO,mBAAyB;AAC7C,QAAM,SAASW,cAAoB;AAAA,EAEnC,MAAM,sBAAsB,OAAO;AAAA,IACjC,YAAY3B,UAAS;AACnB,YAAMA,QAAO;AACb,WAAK,WAAY;AACjB,WAAK,MAAM,IAAI;AAAA,IACnB;AAAA,IAEE,MAAM,aAAa;AACjB,WAAK,cAAc,MAAM4mO,aAAY,IAAI;AACzC,YAAM,MAAM,WAAY;AAAA,IAC5B;AAAA,IAEE,MAAM,MAAM,OAAO;AACjB,WAAK,MAAM,OAAO,CAAE;AACpB,WAAK,MAAM,UAAU,oBAAI,IAAK;AAC9B,WAAK,MAAM,UAAU,oBAAI,IAAK;AAC9B,WAAK,MAAM,YAAY;AACvB,WAAK,MAAM,SAAS,CAAE;AAEtB,UAAI,UAAU,MAAM;AAClB,cAAM,KAAK,WAAY;AACvB,cAAM,KAAK,OAAQ;AAAA,MACzB;AAAA,IACA;AAAA,IAEE,WAAW,GAAG;AACZ,UAAI7jO,QAAO,KAAK,QAAS;AACzB,WAAK,UAAU;AACf,MAAAA,MAAK,UAAU;AAAA,IACnB;AAAA,IAEE,SAAS,IAAIzC,MAAK;AAChB,UAAI,CAACA,KAAI,QAAQ,CAACA,KAAI,QAAQ,MAAM,QAAQ,KAAK,WAAW;AAC1D,aAAK,OAAO,IAAIA,IAAG;AACnB;AAAA,MACN;AACI,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,OAAO,IAAIA,MAAK;AACd,UAAIyC,QAAO,KAAK,QAAS;AACzB,UAAI,SAASA,MAAK,MAAM,MAAM,GAAG,KAAK,MAAM;AAC5C,UAAI,SAASA,MAAK,MAAM,MAAM,KAAK,MAAM;AACzC,WAAK,QAAQA,MAAK,QAAQ,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM;AACjD,WAAK,WAAW,CAAC;AACjB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,SAAS;AACP,UAAIA,QAAO,KAAK,QAAS;AACzB,UAAI,KAAK,UAAU,KAAK,CAACA,MAAK,MAAO,QAAO,KAAK,MAAO;AACxD,UAAI,SAASA,MAAK,MAAM,MAAM,KAAK,MAAM;AACzC,UAAI,SAASA,MAAK,MAAM,MAAM,GAAG,KAAK,SAAS,CAAC;AAChD,WAAK,QAAQA,MAAK,QAAQ,GAAG,MAAM,GAAG,MAAM;AAC5C,WAAK,WAAW,EAAE;AAClB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,UAAU,GAAG;AACX,aAAO,KAAK,KAAK,MAAM,KAAK,SAAS,IAAI,IAAI,IAAI;AAAA,IACrD;AAAA,IAEE,UAAU,GAAG;AACX,aAAO,KAAK,IAAI,KAAK,MAAM,KAAK,SAAS,IAAI,IAAI;AAAA,IACrD;AAAA,IAEE,QAAQ;AACN,WAAK,MAAM,QAAQ;AACnB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,WAAK,MAAM,QAAQ,KAAK,MAAM,KAAK,SAAS;AAC5C,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,QAAQ;AACN,UAAI,KAAK,UAAU,KAAK,MAAM,OAAQ,QAAO,KAAK,MAAO;AACzD,WAAK,WAAW,CAAC;AACjB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,UAAI,KAAK,UAAU,EAAG,QAAO,KAAK,MAAO;AACzC,WAAK,WAAW,EAAE;AAClB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,WAAK,MAAM,QAAQ,KAAK,UAAU,KAAK,MAAM,KAAK;AAClD,WAAK,QAAS;AACd,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,OAAO;AACL,WAAK,MAAM,QAAQ,KAAK,UAAU,KAAK,MAAM,KAAK;AAClD,WAAK,QAAS;AACd,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,KAAK;AACH,WAAK,KAAM;AAAA,IACf;AAAA,IAEE,OAAO;AACL,WAAK,KAAM;AAAA,IACf;AAAA,IAEE,OAAOrC,QAAO;AACZ,UAAI,QAAQ,KAAK,MAAM,YAAY,MAAM,KAAK,OAAO,UAAU,KAAK,OAAO;AAC3E,UAAI,KAAK,MAAM,cAAc,QAAQ,KAAK,MAAM,cAAc,KAAK;AACjE,gBAAQ,KAAK,OAAO;AAAA,MAC1B;AACI,aAAO,MAAM,GAAG,KAAK,MAAM,SAAS,aAAa;AAAA,IACrD;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,OAAAP,QAAO,OAAO,CAAA,GAAI,WAAW,KAAI,IAAK,KAAK;AAEjD,UAAI,UAAU,CAAC,KAAK,QAAQ,SAAS,IAAI,EAAE,KAAK,OAAK,KAAK,IAAI;AAC9D,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAIgmO,UAAS,CAAC,QAAQ,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAClE,WAAK,MAAM,SAASA;AAEpB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAIxmO,SAAS,MAAM,KAAK,MAAO,KAAK;AACpC,UAAI,OAAQ,MAAM,KAAK,KAAM,KAAK;AAClC,UAAI,OAAO,YAAY,KAAK,MAAM,KAAK,YAAY,KAAK,KAAK;AAE7D,UAAIW,OAAM,KAAK,MAAM,MAAM,KAAKH,MAAK,KAAK;AAC1C,UAAIwH,SAAQ,MAAM,KAAK,OAAOrH,IAAG;AACjC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAIqH,OAAO,CAAAw+N,WAAU,MAAMx+N;AAC3B,UAAI,QAAQ,CAACA,UAAS,KAAK,MAAM,cAAc,EAAG,CAAAw+N,WAAU,MAAM;AAElE,WAAK,MAAM,IAAI;AACf,UAAI,QAAQ,CAAC,QAAQA,SAAQ,MAAM,QAAQxmO,OAAM,MAAM;AACvD,WAAK,MAAM,MAAM,OAAO,OAAO,EAAE,KAAK,OAAO,CAAC;AAC9C,WAAK,QAAS;AAAA,IAClB;AAAA,IAEE,QAAQ,MAAM;AACZ,UAAI,EAAE,OAAO,MAAM,OAAAQ,OAAO,IAAG,KAAK;AAClC,UAAI4C,QAAO,MAAM,KAAK,QAAM,GAAG,SAAS,KAAK5C,MAAK,CAAC;AACnD,UAAI4C,SAAQA,MAAK,SAAS,MAAM;AAC9B,aAAK,QAAQA,MAAK;AAClB,aAAK,SAASA,MAAK;AAAA,MACzB;AACI,aAAOA;AAAA,IACX;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,OAAO,KAAK,gBAAgB,WAAY,OAAM,KAAK,WAAY;AACnE,YAAM,KAAK,YAAY,KAAK,OAAO,IAAI;AAEvC,UAAI,EAAE,SAAS,SAAS,QAAQ,OAAM,IAAK,KAAK;AAChD,UAAI,QAAQ,MAAM;AAChB,YAAI,MAAM;AACV,iBAAS,CAACzC,MAAKI,MAAK,KAAK,QAAS,QAAO,WAAWJ,IAAG,KAAKI,MAAK;AAAA;AACjE,aAAK,MAAM,QAAQ;AACnB,eAAO,MAAM,OAAQ;AAAA,MAC3B;AAEI,UAAI,QAAQ,MAAM;AAChB,aAAK,MAAM,QAAQ,eAAe,CAAC,GAAG,QAAQ,KAAM,CAAA,EAAE,KAAK,IAAI;AAC/D,eAAO,MAAM,OAAQ;AAAA,MAC3B;AAEI,UAAI,QAAQgC,QAAO,QAAQ,MAAM,EAAE,MAAM,IAAI;AAC7C,UAAI,SAAS,MAAM,IAAI,OAAK,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,IAAI;AACjD,WAAK,QAAQ,EAAE,QAAQ,OAAQ;AAC/B,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,EACA;AAEA,YAAiB;;;;;;;;ACtLjB,QAAM,OAAO;AACb,QAAM,SAASrC,cAAmB;AAAA,EAElC,MAAM,aAAa,OAAO;AAAA,IACxB,YAAYL,UAAS;AACnB,YAAM,EAAE,GAAGA,UAAS,SAAS,OAAO,MAAM,MAAM,UAAU,MAAM;AAChE,WAAK,MAAM,OAAO,CAAC,KAAK,QAAQ,MAAM,IAAI,EAAE,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC5E;AAAA,IAEE,YAAY;AACV,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,aAAa,QAAQ,GAAG;AAC5B,UAAI,MAAM,MAAM,MAAM,aAAa,QAAQ,CAAC;AAC5C,UAAI,MAAM,KAAK,QAAQ,cAAc;AACrC,UAAI,MAAO,KAAK,UAAU,KAAK,KAAK,UAAW,KAAK,OAAO,MAAM,GAAG,IAAI;AACxE,UAAI,KAAK,QAAQ,SAAS,MAAO,OAAM;AACvC,UAAI,KAAK,QAAQ,aAAa,MAAM;AAClC,eAAO,MAAM,GAAG,IAAI,CAAC,QAAQ;AAAA,MACnC;AACI,aAAO,MAAM;AAAA,IACjB;AAAA,IAEE,IAAI,WAAW;AACb,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,SAAS;AACP,WAAK,QAAQ,KAAK,QAAQ,IAAI,YAAU,OAAO,KAAK;AACpD,aAAO,MAAM,OAAQ;AAAA,IACzB;AAAA,EACA;AAEA,SAAiB;;;;;;;;AClCjB,QAAM,cAAcK,aAAyB;AAAA,EAE7C,MAAM,eAAe,YAAY;AAAA,IAC/B,YAAYL,WAAU,IAAI;AACxB,YAAMA,QAAO;AACb,WAAK,aAAaA,SAAQ,cAAc;AACxC,WAAK,OAAO,QAAQ,IAAI;AAExB,UAAI,CAAC,KAAK,QAAQ,QAAQ;AACxB,YAAI,SAAS,CAAC,IAAI,sBAAsB,aAAa,eAAe,gBAAgB,yBAAyB,EAAE;AAC/G,iBAAS,OAAO,IAAI,SAAO,KAAK,OAAO,MAAM,GAAG,CAAC;AACjD,aAAK,MAAM,SAAS,OAAO,KAAK,OAAO;AAAA,MAC7C;AAAA,IACA;AAAA,IAEE,MAAM,aAAa,MAAM;AACvB,UAAI,KAAK,cAAe,QAAO;AAC/B,WAAK,gBAAgB;AACrB,UAAI,UAAU,MAAM,MAAM,UAAU,GAAG,IAAI;AAC3C,eAAS,UAAU,SAAS;AAC1B,eAAO,QAAQ,YAAY,GAAG,KAAK,OAAO;AAC1C,eAAO,WAAW;AAAA,MACxB;AACI,aAAO;AAAA,IACX;AAAA,IAEE,WAAW;AACT,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,QAAQ;AACN,UAAI,SAAS,KAAK;AAClB,UAAI,MAAM,OAAO,MAAM,OAAO,QAAQ;AACtC,UAAI,WAAW,IAAI;AACnB,aAAO,MAAM,QAAQ,OAAM,EAAE,WAAW,KAAM;AAC9C,UAAI,WAAW,CAAC;AAChB,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,YAAY;AACV,aAAO;AAAA,IACX;AAAA,IAEE,UAAU;AACR,aAAO;AAAA,IACX;AAAA,IAEE,YAAY;AACV,aAAO,KAAK,OAAO,MAAM,KAAK,QAAQ,QAAQ;AAAA,IAClD;AAAA,IAEE,QAAQ;AACN,UAAI,SAAS,KAAK;AAClB,UAAI,OAAO,YAAY,OAAO,MAAM,SAAS,EAAG,QAAO,KAAK,MAAO;AACnE,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,OAAO;AACL,UAAI,SAAS,KAAK;AAClB,UAAI,OAAO,YAAY,EAAG,QAAO,KAAK,MAAO;AAC7C,aAAO;AACP,aAAO,KAAK,OAAQ;AAAA,IACxB;AAAA,IAEE,SAAS;AACP,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,aAAa+C,OAAM,GAAG;AAC1B,YAAM,KAAK,SAASA,OAAM,CAAC;AAC3B,UAAI,UAAU,KAAK,UAAU;AAC7B,UAAI,UAAU,KAAK,SAAS;AAC5B,UAAI,IAAI,CAAC,UAAU,IAAI;AACvB,UAAI,IAAI,CAAC,UAAU,MAAM;AACzB,UAAI,KAAK,KAAK,QAAQ,KAAK,OAAO,CAAC;AACnC,UAAI,KAAK,IAAI,OAAO,KAAK,UAAU,IAAI,EAAE;AACzC,UAAI,MAAM,cAAY,UAAU,KAAK,OAAO,QAAQ,GAAG,IAAI,OAAO;AAElE,UAAI,MAAM,IAAI,IAAI;AAClB,UAAI,QAAQ,UAAU,KAAK,OAAO,UAAU,KAAK,OAAO;AACxD,UAAI,MAAM,MAAM,KAAK,QAAQA,MAAK,SAAS,KAAK,OAAOA,OAAM,CAAC;AAC9D,UAAI,SAAS,KAAK,OAAOA,KAAI;AAC7B,UAAI4jO,SAAQ,SAAS5jO,MAAK,MAAM,IAAI,CAAC,GAAGgK,OAAM,IAAIA,OAAMhK,MAAK,QAAQ,CAAC,EAAE,KAAK,EAAE;AAC/E,UAAI,MAAM,CAAAgK,OAAKA,OAAMhK,MAAK,WAAW,MAAMgK,EAAC,IAAIA;AAChD,UAAI,OAAO,SAAShK,MAAK,MAAM,IAAI,CAAC,GAAGgK,OAAM,IAAIA,EAAC,CAAC,EAAE,KAAK,EAAE;AAE5D,UAAItN,QAAO,MAAM,CAAC,KAAK,GAAG,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AACpD,UAAI,QAAQ,MAAM,CAACA,MAAI,GAAIknO,QAAO,MAAM,GAAG,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI;AAEtE,UAAI,SAAS;AACX,QAAAA,SAAQ,KAAK,OAAO,KAAKA,MAAK;AAC9B,eAAO,KAAK,OAAO,KAAK,IAAI;AAAA,MAClC;AAEI,aAAO,MAAO;AAAA,IAClB;AAAA,IAEE,MAAM,gBAAgB;AACpB,UAAI,KAAK,MAAM,UAAW,QAAO;AACjC,UAAI,UAAU,KAAK,QAAQ,IAAI,OAAM,IAAI,MAAM,MAAM,KAAK,aAAa,IAAI,CAAC,CAAC;AAC7E,UAAI,UAAU,MAAM,QAAQ,IAAI,OAAO;AACvC,UAAI,CAAC,QAAQ,OAAQ,SAAQ,KAAK,KAAK,OAAO,OAAO,qBAAqB,CAAC;AAC3E,aAAO,QAAQ,KAAK,IAAI;AAAA,IAC5B;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,MAAM,WAAW;AACxB,YAAI,SAAS,KAAK,QAAQ,IAAI,QAAM,KAAK,OAAO,KAAK,GAAG,QAAQ,CAAC;AACjE,eAAO,OAAO,KAAK,IAAI;AAAA,MAC7B;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,WAAW,KAAM,IAAG,KAAK;AAE/B,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAIR,UAAS,CAAC,QAAQ,SAAS,SAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAClE,WAAK,MAAM,SAASA;AAEpB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,OAAO,MAAM,KAAK,MAAK,KAAM,MAAM,KAAK,KAAM;AAClD,UAAI,OAAO,MAAM,KAAK,cAAe;AACrC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAEhC,UAAI,UAAU,CAAC,KAAM,CAAAA,WAAU,MAAM;AACrC,UAAI,QAAQ,CAACA,QAAO,SAAS,IAAI,EAAG,CAAAA,WAAU,MAAM;AAEpD,UAAI,aAAa,CAAC,UAAU,CAAC,QAAQ,KAAK,YAAY,KAAK,SAAS,QAAQ;AAC1E,QAAAA,WAAU,KAAK,OAAO,OAAO,KAAK,UAAU;AAAA,MAClD;AAEI,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAACA,SAAQ,QAAQ,MAAM,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AACpE,WAAK,QAAS;AAAA,IAClB;AAAA,IAEE,SAAS;AACP,WAAK,QAAQ,CAAE;AACf,eAAS,UAAU,KAAK,SAAS;AAC/B,aAAK,MAAM,OAAO,IAAI,IAAI,OAAO;AAAA,MACvC;AACI,aAAO,KAAK,KAAK,OAAO,KAAK,IAAI;AAAA,IACrC;AAAA,EACA;AAEA,WAAS,YAAY,GAAGnmO,WAAU,IAAI;AACpC,QAAI,MAAM,QAAQA,SAAQ,KAAK,GAAG;AAChC,aAAOA,SAAQ,MAAM,IAAI,UAAQ,EAAE,GAAG,IAAG,EAAG;AAAA,IAChD;AACE,QAAI2mO,SAAQ,CAAE;AACd,aAAS,IAAI,GAAG,IAAI,IAAI,GAAG,IAAK,CAAAA,OAAM,KAAK,EAAE,GAAG,UAAU,MAAK,CAAE;AACjE,WAAOA;AAAA,EACT;AAEA,WAAiB;;;;;;;;AClKjB,SAAiBtmO,aAAkB;;;;;;;;ACEnC,QAAM,gBAAgBA,eAA2B;AAAA,EAEjD,MAAM,qBAAqB,cAAc;AAAA,IACvC,MAAM,aAAa;AACjB,YAAM,MAAM,WAAY;AACxB,WAAK,QAAQ,KAAK,UAAU,CAAC,CAAC,KAAK,QAAQ;AAC3C,WAAK,WAAW,KAAK,QAAQ,YAAY;AACzC,WAAK,UAAU,KAAK,QAAQ,WAAW;AACvC,YAAM,KAAK,OAAQ;AAAA,IACvB;AAAA,IAEE,QAAQ;AACN,WAAK,QAAQ,KAAK;AAClB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,SAAS;AACP,WAAK,MAAO;AAAA,IAChB;AAAA,IAEE,SAAS;AACP,WAAK,QAAQ,CAAC,KAAK;AACnB,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,SAAS;AACP,UAAI,KAAK,UAAU,KAAM,QAAO,KAAK,MAAO;AAC5C,WAAK,QAAQ;AACb,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,UAAU;AACR,UAAI,KAAK,UAAU,MAAO,QAAO,KAAK,MAAO;AAC7C,WAAK,QAAQ;AACb,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,KAAK;AACH,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,OAAO;AACL,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,QAAQ;AACN,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,OAAO;AACL,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,OAAO;AACL,WAAK,OAAQ;AAAA,IACjB;AAAA,IACE,OAAO;AACL,WAAK,OAAQ;AAAA,IACjB;AAAA,IAEE,SAAS,KAAK,IAAIC,MAAK;AACrB,cAAQ,GAAG,YAAa,GAAA;AAAA,QACtB,KAAK;AACH,iBAAO,KAAK,OAAQ;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK,OAAQ;AAAA,QACtB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,KAAK,QAAS;AAAA,QACvB,SAAS;AACP,iBAAO,KAAK,MAAO;AAAA,QAC3B;AAAA,MACA;AAAA,IACA;AAAA,IAEE,SAAS;AACP,UAAI,SAAS,SAAO,KAAK,OAAO,QAAQ,UAAU,GAAG;AACrD,UAAII,SAAQ;AAAA,QACV,KAAK,QAAQ,KAAK,WAAW,OAAO,KAAK,QAAQ;AAAA,QACjD,KAAK,QAAQ,OAAO,KAAK,OAAO,IAAI,KAAK;AAAA,MAC1C;AACD,aAAOA,OAAM,KAAK,KAAK,OAAO,MAAM,KAAK,CAAC;AAAA,IAC9C;AAAA,IAEE,MAAM,SAAS;AACb,UAAI,EAAE,SAAS,KAAK;AAEpB,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,YAAY,MAAM,KAAK,UAAW;AACtC,UAAI,UAAU,MAAM,KAAK,QAAS;AAElC,UAAI,SAAS,MAAM,KAAK,OAAQ;AAChC,UAAI,OAAQ,MAAM,KAAK,MAAK,KAAQ,MAAM,KAAK;AAC/C,UAAI,SAAS,MAAM,KAAK,OAAQ;AAEhC,UAAIylO,UAAS,CAAC,QAAQ,SAAS,WAAW,MAAM,EAAE,KAAK,GAAG;AAC1D,WAAK,MAAM,SAASA;AAEpB,UAAI,QAAQ,CAACA,QAAO,SAAS,IAAI,EAAG,CAAAA,WAAU,MAAM;AAEpD,WAAK,MAAM,IAAI;AACf,WAAK,MAAM,CAAC,QAAQA,SAAQ,MAAM,EAAE,OAAO,OAAO,EAAE,KAAK,IAAI,CAAC;AAC9D,WAAK,MAAM,KAAK,OAAO,CAAC,CAAC;AACzB,WAAK,QAAS;AAAA,IAClB;AAAA,EACA;AAEA,WAAiB;;;;;;;;AC1GjB,QAAM,eAAe9lO,cAAmB;AAAA,EAExC,MAAM,aAAa,aAAa;AAAA,IAC9B,YAAYL,UAAS;AACnB,YAAMA,QAAO;AACb,UAAI,OAAO,KAAK,QAAQ,kBAAkB,YAAY,KAAK,QAAQ,gBAAgB,GAAG;AACpF,cAAM,IAAI,MAAM,yEAAyE;AAAA,MAC/F;AAAA,IACA;AAAA,IAEE,MAAM,UAAUU,QAAO,QAAQ;AAC7B,UAAI,UAAU,MAAM,MAAM,UAAUA,QAAO,MAAM;AACjD,UAAI,QAAQ,SAAS,GAAG;AACtB,cAAM,IAAI,MAAM,8CAA8C;AAAA,MACpE;AACI,UAAI,KAAK,QAAQ,gBAAgB,QAAQ,QAAQ;AAC/C,cAAM,IAAI,MAAM,yEAAyE;AAAA,MAC/F;AACI,aAAO;AAAA,IACX;AAAA,IAEE,MAAMlB,QAAO;AACX,aAAOA,OAAM,UAAU,KAAK,QAAQ;AAAA,IACxC;AAAA,IAEE,MAAM,OAAO,UAAU;AACrB,aAAO;AAAA,QACL,gBAAgB;AAAA,QAChB,eAAe,KAAK,QAAQ,QAAQ,KAAK,QAAQ,aAAa,EAAE;AAAA,QAChE,SAAS,MAAM,KAAK,MAAM,KAAK,KAAK;AAAA,MACrC;AAAA,IACL;AAAA,EACA;AAEA,SAAiB;;;;;;;;AClCjB,UAAMkG,SAAQrF,aAAmB;AAEjC,UAAM,SAAS,CAACC,MAAK,OAAO;AAC1B,MAAAoF,OAAM,aAAa,SAASpF,MAAK,EAAE;AACnC,MAAAoF,OAAM,aAAa,SAASpF,KAAI,YAAW,GAAI,EAAE;AAAA,IAClD;AAED,WAAO,gBAAgB,MAAMU,qBAAyB;AACtD,WAAO,aAAa,MAAMW,kBAAsB;AAChD,WAAO,WAAW,MAAME,gBAAoB;AAC5C,WAAO,YAAY,MAAMmB,iBAAqB;AAC9C,WAAO,QAAQ,MAAMC,aAAiB;AACtC,WAAO,SAAS,MAAMC,cAAkB;AACxC,WAAO,aAAa,MAAMC,kBAAsB;AAChD,WAAO,QAAQ,MAAMmG,aAAiB;AACtC,WAAO,eAAe,MAAMC,oBAAwB;AACpD,WAAO,WAAW,MAAMC,gBAAoB;AAC5C,WAAO,YAAY,MAAMC,iBAAqB;AAC9C,WAAO,SAAS,MAAMC,cAAkB;AACxC,WAAO,UAAU,MAAMC,eAAmB;AAC1C,WAAO,WAAW,MAAMC,gBAAoB;AAC5C,WAAO,QAAQ,MAAMC,aAAiB;AACtC,WAAO,UAAU,MAAMC,eAAmB;AAC1C,WAAO,QAAQ,MAAMC,aAAiB;AACtC,WAAO,UAAU,MAAMC,eAAmB;AAC1C,WAAO,QAAQ,MAAMC,aAAiB;AAAA;;;;;;;;AC3BtC,UAAiB;AAAA,IACf,aAAa5J,aAAkB;AAAA,IAC/B,YAAYW,YAAiB;AAAA,IAC7B,eAAeW,eAAoB;AAAA,IACnC,cAAcE,cAAmB;AAAA,IACjC,cAAcmB,cAAA;AAAA,EACf;;;;;;;;ACJD,QAAM,SAAS3C,cAAiB;AAChC,QAAM,SAASW,cAAiB;AAChC,QAAM0E,SAAQ/D,aAAsB;AAAA,EAepC,MAAM,iBAAiB,OAAO;AAAA,IAC5B,YAAY3B,UAAS,SAAS;AAC5B,YAAO;AACP,WAAK,UAAU0F,OAAM,MAAM,CAAA,GAAI1F,QAAO;AACtC,WAAK,UAAU,EAAE,GAAG,QAAS;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAiBE,SAAS,MAAM,IAAI;AACjB,UAAI0F,OAAM,SAAS,IAAI,GAAG;AACxB,iBAASpF,QAAO,OAAO,KAAK,IAAI,EAAG,MAAK,SAASA,MAAK,KAAKA,IAAG,CAAC;AAC/D,eAAO;AAAA,MACb;AACI,aAAO,MAAM,OAAO,IAAI,YAAY,qBAAqB;AACzD,UAAI,OAAO,KAAK,YAAa;AAC7B,UAAI,GAAG,qBAAqB,KAAK,QAAQ;AACvC,aAAK,QAAQ,IAAI,IAAI;AAAA,MAC3B,OAAW;AACL,aAAK,QAAQ,IAAI,IAAI,GAAG,KAAK,QAAQ,IAAI;AAAA,MAC/C;AACI,aAAO;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAuBE,MAAM,OAAO,YAAY,IAAI;AAC3B,eAAS,YAAY,CAAA,EAAG,OAAO,SAAS,GAAG;AACzC,YAAI;AACF,cAAI,OAAO,aAAa,WAAY,YAAW,MAAM,SAAS,KAAK,IAAI;AACvE,gBAAM,KAAK,IAAIoF,OAAM,MAAM,CAAA,GAAI,KAAK,SAAS,QAAQ,CAAC;AAAA,QACvD,SAAQ,KAAK;AACZ,iBAAO,QAAQ,OAAO,GAAG;AAAA,QACjC;AAAA,MACA;AACI,aAAO,KAAK;AAAA,IAChB;AAAA,IAEE,MAAM,IAAI,UAAU;AAClB,UAAI,OAAO,aAAa,YAAY;AAClC,mBAAW,MAAM,SAAS,KAAK,IAAI;AAAA,MACzC;AAEI,UAAI,OAAOA,OAAM,MAAM,CAAE,GAAE,KAAK,SAAS,QAAQ;AACjD,UAAI,EAAE,MAAM,KAAI,IAAK;AACrB,UAAI,EAAE,KAAK,IAAG,IAAKA;AAEnB,UAAI,OAAO,SAAS,YAAY;AAC9B,eAAO,MAAM,KAAK,KAAK,MAAM,UAAU,KAAK,OAAO;AAAA,MACzD;AAEI,UAAI,CAAC,KAAM,QAAO,KAAK,QAAQ,IAAI;AAEnC,aAAO,KAAK,QAAQ,IAAI,GAAG,WAAW,IAAI,qBAAqB;AAE/D,UAAIygO,UAAS,IAAI,KAAK,QAAQ,IAAI,EAAE,IAAI;AACxC,UAAIzlO,SAAQ,IAAI,KAAK,SAAS,IAAI;AAElC,MAAAylO,QAAO,MAAM,UAAU,KAAK;AAC5B,MAAAA,QAAO,WAAW;AAElB,UAAI,MAAM;AACR,QAAAA,QAAO,GAAG,UAAU,CAAAzlO,WAAS;AAC3B,eAAK,KAAK,UAAU,MAAMA,QAAOylO,OAAM;AACvC,cAAI,KAAK,SAAS,MAAMzlO,MAAK;AAAA,QACrC,CAAO;AAAA,MACP;AAGI,UAAI,OAAOylO,QAAO,KAAK,KAAKA,OAAM;AAClC,MAAAA,QAAO,OAAO,IAAI,SAAS;AACzB,aAAK,KAAK,KAAK,MAAM,GAAG,IAAI;AAC5B,eAAO,KAAK,GAAG,IAAI;AAAA,MACpB;AAED,WAAK,KAAK,UAAUA,SAAQ,IAAI;AAEhC,UAAI,KAAK,YAAYzlO,UAAS,MAAM;AAClC,QAAAylO,QAAO,QAAQA,QAAO,QAAQzlO;AAG9B,YAAI,KAAK,aAAa,QAAQ;AAC5B,gBAAMylO,QAAO,OAAQ;AAAA,QAC7B;AAAA,MACA,OAAW;AACL,QAAAzlO,SAAQylO,QAAO,QAAQ,MAAMA,QAAO,IAAK;AAAA,MAC/C;AAEI,aAAOzlO;AAAA,IACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAmBE,IAAI6B,SAAQ;AACV,MAAAA,QAAO,KAAK,MAAM,IAAI;AACtB,aAAO;AAAA,IACX;AAAA,IAEE,IAAI,OAAO7B,QAAO;AAChB,WAAK,UAAUA;AAAA,IACnB;AAAA,IACE,IAAI,SAAS;AACX,aAAO,KAAK,WAAW,KAAK,YAAY;AAAA,IAC5C;AAAA,IAEE,IAAI,UAAU;AACZ,aAAO,KAAK,YAAY;AAAA,IAC5B;AAAA,IAEE,WAAW,OAAOA,QAAO;AACvB,WAAK,UAAUA;AAAA,IACnB;AAAA,IACE,WAAW,SAAS;AAClB,aAAO,KAAK,WAAWmB,cAAuB;AAAA,IAClD;AAAA,IAEE,WAAW,UAAU;AACnB,aAAOmB,eAAwB;AAAA,IACnC;AAAA,IAEE,WAAW,QAAQ;AACjB,aAAOC,aAAsB;AAAA,IACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAqBE,WAAW,SAAS;AAClB,YAAM,KAAK,CAAC,cAAc,SAAS;AACjC,YAAI4jO,YAAW,IAAI,KAAK,GAAG,IAAI;AAC/B,YAAI,OAAOA,UAAS,KAAK,KAAKA,SAAQ;AACtC,QAAAA,UAAS,OAAO,IAAI,SAAS;AAC3B,aAAG,KAAK,GAAG,IAAI;AACf,iBAAO,KAAK,GAAG,IAAI;AAAA,QACpB;AACD,eAAOA,UAAS,OAAO,SAAS;AAAA,MACjC;AACD,MAAAnhO,OAAM,aAAa,IAAI,IAAI,OAAM,CAAE;AACnC,aAAO;AAAA,IACX;AAAA,EACA;AAEA,EAAAA,OAAM,aAAa,UAAU,IAAI,OAAM,CAAE;AACzC,QAAMohO,WAAU,SAAS;AAEzB,WAAS,QAAQ,OAAO,KAAKA,QAAO,GAAG;AACrC,QAAIxmO,OAAM,KAAK,YAAa;AAE5B,QAAI,MAAM,CAAAN,aAAW,IAAI8mO,SAAQ,IAAI,EAAE9mO,QAAO,EAAE,IAAK;AACrD,aAAS,OAAOM,IAAG,IAAI;AACvB,aAASA,IAAG,IAAI;AAEhB,QAAI,CAAC,SAAS,IAAI,GAAG;AACnB,cAAQ,eAAe,UAAU,MAAM,EAAE,KAAK,MAAMwmO,SAAQ,IAAI,GAAG;AAAA,IACvE;AAAA,EACA;AAEA,QAAM,MAAM,UAAQ;AAClB,IAAAphO,OAAM,aAAa,UAAU,MAAM,MAAM,SAAS,MAAM,IAAI,CAAC;AAAA,EAC9D;AAED,MAAI,aAAa;AACjB,MAAI,YAAY;AAChB,MAAI,eAAe;AACnB,MAAI,cAAc;AAClB,MAAI,cAAc;AAElBmhO,eAAiB;;;;;ACzOjB,SAAS,OAAO;AAAC;AAEjB,MAAe,kBAAA;AAAA,EACb,OAAO;AACT;AClBA,SAAS,YAAY,GAAG;AACvB,SAAO,MAAM,OACT,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAQ,KAAK,OAClB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,MAAM,OACN,MAAM,OACN,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,KAAK,OAAS,KAAK,OACnB,MAAM,QACN,KAAK,QAAS,KAAK,QACnB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,WACrB,KAAK,WAAY,KAAK;AAC3B;AAEA,SAAS,YAAY,GAAG;AACvB,SAAO,MAAM,SACT,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK;AACzB;AAEA,SAAS,OAAO,GAAG;AAClB,SAAO,KAAK,QAAU,KAAK,QACvB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,KAAK,QAAU,KAAK,QACpB,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,QACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,MAAM,SACN,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAW,KAAK,SACrB,MAAM,SACN,MAAM,SACN,KAAK,SAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,MAAM,UACN,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK,UACrB,KAAK,UAAW,KAAK;AAC1B;AAEA,SAAS,YAAY,GAAG;AACvB,MAAI,YAAY,CAAC,EAAG,QAAO;AAE3B,MAAI,YAAY,CAAC,EAAG,QAAO;AAE3B,MACC,MAAM,QACH,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,SACpB,KAAK,SAAU,KAAK,OACtB;AACD,WAAO;AAAA,EACT;AAEC,MACC,KAAK,MAAQ,KAAK,OACf,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,MAAM,OACN,KAAK,SAAU,KAAK,SACpB,MAAM,SACN,MAAM,OACR;AACD,WAAO;AAAA,EACT;AAEC,MAAI,OAAO,CAAC,EAAG,QAAO;AAEtB,SAAO;AACR;AC9YA,SAAS,SAAS,WAAW;AAC5B,MAAI,CAAC,OAAO,cAAc,SAAS,GAAG;AACrC,UAAM,IAAI,UAAU,gCAAgC,OAAO,SAAS,KAAK;AAAA,EAC3E;AACA;AAEO,SAAS,mBAAmB,WAAW;AAC7C,WAAS,SAAS;AAElB,SAAO,YAAY,SAAS;AAC7B;AAEO,SAAS,eAAe,WAAW,EAAC,kBAAkB,MAAK,IAAI,CAAA,GAAI;AACzE,WAAS,SAAS;AAElB,MACC,YAAY,SAAS,KAClB,OAAO,SAAS,KACf,mBAAmB,YAAY,SAAS,GAC3C;AACD,WAAO;AAAA,EACT;AAEC,SAAO;AACR;AAIO,MAAM,iBAAiB,eAAa,EAAE,YAAY,SAAS,KAAK,OAAO,SAAS;;;;;;;ACXhF,MAAM,QAAQE;AAGd,MAAMC,qBAAmB;AAGzB,MAAM,YAAY;AAGlB,MAAM,WAAW;AAGjB,MAAM,WAAW;AAGjB,MAAM,oBAAoB;;;;;;;;;;;AClB8C,WAA6B;AAC/F,MAAA,mBAA6F,WAA6B;AAC7C,WAA6B;AACtC,WAA6B;AAC7B,WAA6B;AACR,WAA6B;AC6B3G,QAAQ,IAAI,qBAAqB,MAAM;;AAC7D,MAAI,QAAQ,aAAa;AACvB,WAAOznO,OAAK,KAAK,GAAG,UAAU,4BAA4B;AAKrD,SAAAA,OAAK,KAAK,GAAG,OAAA,GAAU,kCAAgC,aAAQ,YAAR,iCAAmB;AACnF,GAAG;AAwM+BA,OAAK,QAAQ,gDAAW,qBAAqB;AC9HzD,QAAQ,aAAa,UAAU,MAAM;AAC1C,IAAI,IAAI,OAAO,cAAc;AAwLvC,SAAS,yBAA6C,MAAgE;AAC3H,SAAO,IAAI,SAAS;AAClB,UAAM,uBAAuB,MAAM;AAC7B,UAAA,oBAAoB,CAACI,QAAO,gBAAgB;AAChD,YAAM,QAAyB,iBAAiB,aAAa,YAAY,CAAC,CAAC;AACrE,YAAA,WAAW,MAAM,YAAY;AAE7BD,YAAAA,QAAQ,YAAY,SAAS,WAAW,SAAS,IAAK,IAAI,cAAc,QAAQ,IAAI;AACnF,aAAA;AAAA,QACL,MAAAA;AAAAA,QACA,MAAM,MAAM,cAAc;AAAA,QAC1B,QAAQ,MAAM,gBAAgB;AAAA,MAChC;AAAA,IACF;AACA,UAAM,qBAAqB,MAAM;AACjC,UAAM,kBAAkB;AACxB,UAAM,MAA2B,CAAC;AAClC,UAAM,kBAAkB,GAAG;AAC3B,UAAM,WAAW,IAAI;AACrB,UAAM,kBAAkB;AACxB,UAAM,oBAAoB;AACnB,WAAA,KAAK,UAAU,GAAG,IAAI;AAAA,EAC/B;AACF;ACxTA,MAAM,iBAAiB,OAAO,UAAU;AAEjC,MAAM,aAAa;AAAA,EAIxB,YAAY,UAAkC;AAC5C,SAAK,WAAW;AAEhB,UAAMJ,QAAY,yBAAyB,KAAK,YAAY,KAAK,MAAM,SAAS,CAAC;AACjF,IAAAA,MAAK,cAAc,IAAI;AACvB,IAAAA,MAAK,SAAS;AACd,IAAAA,MAAK,OAAO,yBAAyB,KAAK,YAAY,KAAK,MAAM,MAAM,CAAC;AACxE,IAAAA,MAAK,WAAW,yBAAyB,KAAK,UAAU,KAAK,MAAM,SAAS,CAAC;AACxE,IAAAA,MAAA,SAAS,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;AAC/E,IAAAA,MAAK,SAAS,YAAY,yBAAyB,KAAK,WAAW,KAAK,IAAI,CAAC;AACxE,IAAAA,MAAA,SAAS,QAAQ,yBAAyB,KAAK,UAAU,KAAK,MAAM,OAAO,CAAC;AAC5E,IAAAA,MAAA,SAAS,WAAW,yBAAyB,KAAK,UAAU,KAAK,MAAM,UAAU,CAAC;AAClF,IAAAA,MAAA,SAAS,SAAS,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,eAAe,CAAC;AAC5F,IAAAA,MAAA,SAAS,SAAS,yBAAyB,KAAK,UAAU,KAAK,MAAM,QAAQ,CAAC;AAC9E,IAAAA,MAAA,SAAS,OAAO,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,aAAa,CAAC;AACxF,IAAAA,MAAA,SAAS,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;AAC/E,IAAAA,MAAK,aAAa,yBAAyB,KAAK,MAAM,KAAK,MAAM,YAAY,CAAC;AAC9E,IAAAA,MAAK,YAAY,yBAAyB,KAAK,MAAM,KAAK,MAAM,WAAW,CAAC;AAC5E,IAAAA,MAAK,YAAY,yBAAyB,KAAK,MAAM,KAAK,MAAM,WAAW,CAAC;AAC5E,IAAAA,MAAK,WAAW,yBAAyB,KAAK,MAAM,KAAK,MAAM,UAAU,CAAC;AAC1E,IAAAA,MAAK,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;AACtE,IAAAA,MAAK,QAAQ,yBAAyB,KAAK,UAAU,KAAK,MAAM,OAAO,CAAC;AACxE,IAAAA,MAAK,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;AACjE,IAAAA,MAAA,KAAK,OAAO,yBAAyB,KAAK,YAAY,KAAK,MAAM,WAAW,CAAC;AAClF,IAAAA,MAAK,OAAO,yBAAyB,KAAK,UAAU,KAAK,MAAM,MAAM,CAAC;AACtE,IAAAA,MAAK,aAAa,yBAAyB,KAAK,YAAY,KAAK,IAAI,CAAC;AACtE,IAAAA,MAAK,OAAO,KAAK,MAAM,KAAK,MAAM,MAAM;AACxC,IAAAA,MAAK,KAAK,OAAO,KAAK,MAAM,KAAK,MAAM,MAAM;AAC7C,IAAAA,MAAK,MAAM,yBAAyB,KAAK,KAAK,KAAK,IAAI,CAAC;AACxD,IAAAA,MAAK,SAAS,yBAAyB,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC9D,IAAAA,MAAK,OAAO,MAAM;AAGR,YAAA,IAAI,MAAM,sDAAsD;AAAA,IAE1E;AACA,SAAK,OAAOA;AAAA,EAAA;AAAA,EAGN,cAAc,UAAoB,OAAkC;AAC1E,UAAM,QAAQ,0BAA0B;AACxC,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,MAAM;AAAA,QACd,kCAAkC,KAAK;AAAA,QACvC;AAAA,QACA,qBAAqB,KAAK;AAAA,QAC1B,qBAAqB,KAAK;AAAA,QAC1B;AAAA,QACA;AAAA,MAAA,EACA,KAAK,IAAI,CAAC;AAAA,IAAA;AAEP,WAAA;AAAA,EAAA;AAAA,EAGD,YAAY,MAAoE,UAAoB,OAAe,aAAqC,IAAe;AACpJ,6BAAA;AACzB,UAAM,QAAQ,KAAK,cAAc,UAAU,QAAQ;AACnD,QAAI,CAAC;AACH;AAEE,QAAA;AACA,QAAA;AACA,QAAA,OAAO,gBAAgB,YAAY;AAC9B,aAAA;AACP,gBAAU,CAAC;AAAA,IAAA,OACN;AACE,aAAA;AACG,gBAAA;AAAA,IAAA;AAGN,UAAA,mBAAmB,oBAAoB,OAAO;AACpD,UAAMA,QAAO,IAAI,SAAS,OAAO,MAAM,MAAM,QAAQ;AACrD,IAAAA,MAAK,eAAe,MAAM;AAC1B,IAAAA,MAAK,YAAY,KAAK,GAAG,iBAAiB,WAAW;AACrD,IAAAA,MAAK,MAAM,KAAK,GAAG,iBAAiB,IAAI;AACxC,UAAM,SAASA,KAAI;AAEf,QAAA,SAAS,UAAU,SAAS;AAC9B,MAAAA,MAAK,QAAQ;AACf,QAAI,SAAS,UAAU,SAAS,WAAW,SAAS;AAClD,MAAAA,MAAK,YAAY,KAAK,EAAE,KAAA,CAAM;AAAA,aACvB,SAAS;AAChB,MAAAA,MAAK,YAAY,KAAK,EAAE,MAAM,QAAQ;AAAA,EAAA;AAAA,EAGlC,UAAU,MAAuG,UAAoB,WAA8B,aAAsC,IAAe;AACrM,6BAAA;AACzB,UAAM,QAAQ,KAAK,cAAc,UAAU,iBAAiB;AAC5D,QAAI,CAAC;AACH;AAEE,QAAA;AACA,QAAA;AACA,QAAA;AAEA,QAAA,OAAO,cAAc,YAAY;AAC3B,cAAA;AACR,gBAAU,CAAC;AACJ,aAAA;AAAA,IAAA,WACE,OAAO,gBAAgB,YAAY;AACpC,cAAA;AACR,gBAAU,CAAC;AACJ,aAAA;AAAA,IAAA,OACF;AACG,cAAA;AACE,gBAAA;AACH,aAAA;AAAA,IAAA;AAGH,UAAA,mBAAmB,oBAAoB,OAAO;AACpD,UAAM,QAAQ,IAAI,MAAM,OAAO,UAAU;AACzC,UAAM,eAAe,MAAM;AAC3B,UAAM,WAAW;AACjB,UAAM,mBAAmB,KAAK,GAAG,iBAAiB,WAAW;AAC7D,UAAM,MAAM,KAAK,GAAG,iBAAiB,IAAI;AACzC,UAAM,UAAU,KAAK;AAErB,QAAI,SAAS,UAAU,SAAS,iBAAiB,SAAS;AACxD,YAAM,QAAQ;AACZ,QAAA,SAAS,YAAY,SAAS;AAChC,YAAM,gBAAgB;AACpB,QAAA,SAAS,cAAc,SAAS;AAClC,YAAM,gBAAgB;AACpB,QAAA,SAAS,UAAU,SAAS;AAC9B,YAAM,mBAAmB,KAAK,EAAE,KAAA,CAAM;AAExC,aAAS,SAA4B,OAAO,QAAQ,SAAS,OAAO,QAAQ;AAC1E,UAAI,OAAO,kBAAkB,YAAY,MAAM,kBAAkB;AACzD,cAAA,IAAI,MAAM,2DAA2D;AAC7E,UAAI,OAAO,kBAAkB,aAAa,MAAM,kBAAkB;AAC1D,cAAA,IAAI,MAAM,sEAAsE;AAAA,IAAA;AAG1F,iCAA6B,KAAK;AAC7B,SAAA;AACL,iCAA6B,KAAK;AAAA,EAAA;AAAA,EAG5B,MAAM,MAA6D,UAAoB,OAA0B,IAAe;AACtI,UAAM,QAAQ,KAAK,cAAc,UAAU,QAAQ,IAAI,IAAI;AAC3D,QAAI,CAAC;AACH;AACE,QAAA,OAAO,UAAU,YAAY;AAC1B,WAAA;AACL,cAAQ,GAAG,IAAI;AAAA,IAAA;AAGX,UAAA,OAAO,KAAK,EAAE,MAAM,MAAM,IAAS,OAAO,UAAU;AAAA,EAAA;AAAA,EAGpD,WAAW,UAAoBU,UAA2F;AACvG,6BAAA;AACzB,UAAM,QAAQ,KAAK,cAAc,UAAU,2BAA2B;AACtE,QAAI,CAAC;AACH;AAEF,QAAIA,SAAQ,YAAY;AACtB,YAAM,WAAWA,SAAQ;AAE3B,QAAIA,SAAQ,YAAY;AACtB,YAAM,WAAWA,SAAQ;AAEvB,QAAAA,SAAQ,SAAS,QAAW;AAC9B,UAAI,MAAM,kBAAkB;AAC1B,cAAM,IAAI,MAAM,IAAI,MAAM,aAAa,qDAAqD;AAC9F,YAAM,gBAAgBA,SAAQ;AAC9B,eAAS,SAA4B,MAAM,QAAQ,QAAQ,SAAS,OAAO,QAAQ;AACjF,YAAI,OAAO,kBAAkB,YAAY,MAAM,kBAAkB;AACzD,gBAAA,IAAI,MAAM,+EAA+E;AACjG,YAAI,OAAO,kBAAkB,aAAa,MAAM,kBAAkB;AAC1D,gBAAA,IAAI,MAAM,gFAAgF;AAAA,MAAA;AAAA,IACpG;AAAA,EACF;AAAA,EAGM,UAAU,MAA0C,aAAuB,cAAqB;AACtG,UAAM,QAAQ,0BAA0B;AACxC,QAAI,OAAO;AACT,UAAI,OAAO,aAAa,CAAC,MAAM,YAAY,OAAO,aAAa,CAAC,MAAM,eAAe,SAAS,UAAU,SAAS,WAAW,SAAS,SAAS;AAEvI,aAAA,YAAY,MAAM,UAAU,aAAa,CAAC,GAAG,aAAa,CAAC,CAAC;AACjE;AAAA,MAAA;AAEE,UAAA,OAAO,aAAa,CAAC,MAAM,YAAY,OAAO,aAAa,CAAC,MAAM,YAAY,OAAO,aAAa,CAAC,MAAM,eAAe,SAAS,UAAU,SAAS,WAAW,SAAS,SAAS;AAE9K,aAAA,YAAY,MAAM,UAAU,aAAa,CAAC,GAAG,aAAa,CAAC,GAAG,aAAa,CAAC,CAAC;AAClF;AAAA,MAAA;AAGF,UAAI,OAAO,aAAa,CAAC,MAAM,YAAY;AACzC,cAAM,WAAW,KAAK,EAAE,MAAM,IAAI,aAAa,CAAC,GAAG,UAAU,aAAa,aAAa,CAAC,GAAG;AAAA,MAAA,OACtF;AACL,YAAI,aAAa,UAAU,KAAK,CAAC,aAAa,CAAC;AAC7C;AACI,cAAA,cAAc,aAAa,CAAC;AAClC,cAAM,mBAAmB,KAAK,EAAE,MAAM,aAAa;AAAA,MAAA;AAErD;AAAA,IAAA;AAKA,UAAM,IAAI,MAAM,QAAQ,IAAI,8DAA8D;AAAA,EAGhD;AAAA,EAGtC,YAAY,UAAoB,SAAiB;AACvD,UAAM,QAAQ,0BAA0B;AACxC,QAAI,OAAO;AACT,YAAM,WAAW;AACjB;AAAA,IAAA;AAKM,UAAA,IAAI,MAAM,kDAAkD;AAAA,EACzC;AAAA,EAGrB,KAAK,UAAoB,UAAoB;AACnD,UAAM,QAAQ,KAAK,cAAc,UAAU,YAAY;AACvD,QAAI,CAAC;AACH;AACF,UAAM,KAAK,KAAK,EAAE,UAAU,UAAU;AAAA,EAAA;AAAA,EAGxC,MAAM,MAAS,aAA4B,OAAe,MAA8CA,WAAmE,CAAA,GAAgB;AAGjL,UAAA,IAAI,MAAM,4CAA4C;AAAA,EAwB7D;AAAA,EAGK,QAAQ,UAAoB,UAAoB;AACtD,QAAK,SAAiB,cAAc;AAClC,YAAM,IAAI,MAAM;AAAA,mCAA+F;AAC3G,UAAA,uBAA6C,EAAE,UAAU,SAAS;AACjE,WAAA,IAAI,aAAa,CAAC,GAAG,KAAK,UAAU,oBAAoB,CAAC,EAAE;AAAA,EAAA;AAEtE;AAEA,SAAS,2BAA2B;AAC9B,MAAA,QAAQ,IAAI,gBAAgB;AAC9B,UAAM,wBAAwB,6BAA6B;AAC3D,UAAM,IAAI;AAAA,MACN,4CAA4C,qBAAqB;AAAA;AAAA;AAAA,IAGrE;AAAA,EAAA;AAEJ;AAEA,SAAS,oBAAoB,SAAsB;AACjD,QAAM,cAAc,MAAM,QAAQ,QAAQ,UAAU,IAAI,QAAQ,aAAc,QAAQ,aAAa,CAAC,QAAQ,UAAU,IAAI,CAAC;AAC3H,QAAM,OAAO,MAAM,QAAQ,QAAQ,GAAG,IAAI,QAAQ,MAAO,QAAQ,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxF,aAAW,OAAO,MAAM;AAClB,QAAA,IAAI,CAAC,MAAM;AACb,YAAM,IAAI,MAAM,wCAAwC,GAAG,YAAY;AAAA,EAAA;AAEpE,SAAA,EAAE,aAAa,KAAK;AAC7B;AAEO,MAAM,eAAe,IAAI,aAAa,EAAE;AC/RxC,MAAM,YAA8B,aAAa;AAExD,sBAAsB,CAACT,OAAK,QAAQ,QAAgB,iBAAiB,CAAC,CAAC,CAAC;AAExE,IAAK,QAAgB,kBAAkB,GAAG;AACxC,QAAM,0BAA0B,MAAM;AACtC,QAAM,kBAAkB;AACpB,MAAA;AACF,UAAM,IAAI,MAAM,uDAAwD,QAAgB,kBAAkB,IAAI,cAAc;AAAA,EAAA,UAC5H;AACA,UAAM,kBAAkB;AAAA,EAAA;AAE5B,OAAO;AACJ,UAAgB,kBAAkB,IAAI,IAAI,MAAQ,EAAA;AACrD;AAiBA,MAAM,qBAA8D;AAAA,EAClE,oBAAoB,CAAC,YAAY,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EAClE,aAAa,CAAC,CAAC,EAAE,mBAAsB,GAAA,QAAQ,IAAI,kBAAkB,GAAG,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACzG,YAAY,CAAC,OAAO,IAAI,QAAQ;AACxB,UAAA,IAAI,QAAQ,iBAAiB,CAAC;AAAA,KACnC,EAAE,OAAO,UAAU,KAAK,MAAM;AAAA,EACjC,UAAU,CAAC,CAAC,EAAE,iBAAiB,QAAQ,IAAI,cAAc,YAAY,IAAI,GAAG,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EAC7G,SAAS,CAAC,CAAC,EAAE,cAAA,GAAiB,QAAQ,IAAI,cAAc,OAAO,GAAG,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACnG,eAAe,CAAC,CAAA,GAAI,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACrD,gBAAgB,CAAC,OAAO,EAAE,sBAAA,GAAyB,QAAQ;AACnD,UAAA,IAAI,sBAAsB,KAAK,qBAAqB;AAAA,KACzD,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACpC,YAAY,CAAC,OAAO,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACrD,OAAO,CAAC,OAAO,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EAChD,OAAO,CAAC,OAAO,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EAEhD,iBAAiB,CAAC,OAAO,EAAE,YAAY,UAAU,SAAS,cAAc,GAAG,QAAQ;AACjF,UAAMS,WAAyB;AAAA,MAC7B,cAAc;AAAA,MACd,GAAG;AAAA,MACH,WAAW,QAAQ,EAAE,UAAU;AAAA,IACjC;AACA,QAAI,aAAa;AACf,MAAAA,SAAQ,WAAW;AACrB,QAAI,YAAY;AACd,MAAAA,SAAQ,UAAU;AAEpB,eAAW,wBAAwBA;AACnC,UAAM,IAAIA,QAAO;AACjB,eAAW,wBAAwB;AAAA,EAAA,GAClC,EAAE,OAAO,UAAU,MAAM,MAAM,KAAK,MAAM;AAAA,EAE7C,SAAS,CAAC,OAAO,EAAE,YAAY,aAAa,iBAAiB,eAAA,GAAkB,KAAK,aAAa;AAC3F,QAAA,CAAC,CAAC,YAAY,WAAW,UAAU,iBAAiB,cAAc,EAAE,SAAS,WAAW;AAC1F,YAAM,IAAI,MAAM,2BAA2B,WAAW,qDAAqD;AAE7G,QAAI,gBAAgB;AAClB,YAAMmB,YAAU,MAAM,WAAW,WAAW,EAAE,QAAQ;AAAA,QACpD,GAAG;AAAA,QACH,eAAe,eAAe,iBAAkB,eAAuB;AAAA,QACvE,SAAS;AAAA;AAAA,UAEP,+BAA+B,wBAAwB,eAAe;AAAA,UACtE,GAAG,eAAe;AAAA,QAAA;AAAA,MACpB,CACD;AACD,YAAM,IAAIA,SAAO;AACVA,YAAAA,UAAgB,aAAa,YAAY;AAC9C,cAAMA,UAAQ,MAAM,EAAE,QAAQ,eAAe;AAAA,MAAA,GAC5C,EAAE,UAAU,MAAM;AACrB;AAAA,IAAA;AAGF,UAAMA,WAAU,MAAM,WAAW,WAAW,EAAE,OAAO;AACrD,UAAM,IAAIA,QAAO;AACV,UAAAA,SAAgB,aAAa,YAAY;AAC9C,YAAMA,SAAQ,MAAM,EAAE,QAAQ,eAAe;AAAA,IAAA,GAC5C,EAAE,UAAU,MAAM;AAAA,KACpB,EAAE,OAAO,UAAU,SAAS,GAAG;AAAA,EAElC,iBAAiB,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,mBAAmB,IAAI,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC5G,WAAW,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,aAAa,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EACjG,aAAa,CAAC,CAAC,EAAE,eAAe,GAAG,QAAQ,IAAI,eAAe,gBAAgB,SAAY,UAAU,eAAe,WAAW,GAAG,EAAE,QAAQ,MAAM;AAAA,EACjJ,mBAAmB,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,iBAAiB,GAAG,EAAE,QAAQ,MAAM;AAAA,EACxG,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,gBAAgB,GAAG,EAAE,QAAQ,MAAM;AAAA,EACtG,aAAa,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,WAAW,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC5F,UAAU,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,YAAY,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC/F,iBAAiB,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,eAAe,GAAG,EAAE,QAAQ,MAAM;AAAA,EACpG,mBAAmB,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,qBAAqB,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EACjH,UAAU,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,YAAY,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC/F,mBAAmB,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,qBAAqB,IAAI,GAAG,EAAE,QAAQ,MAAM;AAAA,EAChH,QAAQ,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,UAAU,OAAO,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC7F,SAAS,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,WAAW,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC7F,aAAa,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,WAAW,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC5F,OAAO,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,KAAK,GAAG,EAAE,QAAQ,MAAM;AAAA,EAChF,cAAc,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,YAAY,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC9F,oBAAoB,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,kBAAkB,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC1G,YAAY,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,UAAU,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC1F,WAAW,CAAC,CAAC,EAAE,kBAAkB,QAAQ,IAAI,eAAe,SAAS,GAAG,EAAE,QAAQ,MAAM;AAAA,EACxF,UAAU,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,aAAa,SAAY,EAAE,OAAO,MAAM,QAAQ,QAAQ,eAAe,QAAQ,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC7J,eAAe,CAAC,GAAG,EAAE,QAAQ,MAAM;AAAA,EACnC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,MAAM;AAAA,EACjD,mBAAmB,CAAC,GAAG,EAAE,QAAQ,MAAM;AAAA,EACvC,SAAS,CAAC,OAAO,IAAK,QAAQ;AACtB,UAAA,IAAI,QAAQ,IAAI,wBAAwB;AAAA,EAAA,GAC7C,EAAE,QAAQ,MAAM;AAAA,EACnB,gBAAgB,CAAC,CAAC,EAAE,eAAkB,GAAA,QAAQ,IAAI,eAAe,kBAAkB,OAAO,GAAG,EAAE,QAAQ,MAAM;AAAA,EAC7G,gBAAgB,CAAC,IAAI,EAAE,QAAQ,MAAM;AAAA,EAErC,yBAAyB,CAAC,OAAO;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,KACC,QAAQ;AACT,UAAMnB,WAAiC,CAAC;AACxC,QAAI,oBAAoB;AACtB,MAAAA,SAAQ,kBAAkB;AAC5B,QAAI,cAAc;AAChB,MAAAA,SAAQ,YAAY;AACtB,QAAI,gBAAgB;AAClB,MAAAA,SAAQ,cAAc;AACxB,QAAI,sBAAsB;AACxB,MAAAA,SAAQ,oBAAoB;AAC9B,QAAI,qBAAqB;AACvB,MAAAA,SAAQ,mBAAmB;AAC7B,QAAI,gBAAgB;AAClB,MAAAA,SAAQ,cAAc;AACxB,QAAI,aAAa;AACf,MAAAA,SAAQ,WAAW;AACrB,QAAI,oBAAoB;AACtB,MAAAA,SAAQ,kBAAkB;AAC5B,QAAI,sBAAsB;AACxB,MAAAA,SAAQ,oBAAoB;AAC9B,QAAI,aAAa;AACf,MAAAA,SAAQ,WAAW;AACrB,QAAI,sBAAsB;AACxB,MAAAA,SAAQ,oBAAoB;AAC9B,QAAI,WAAW;AACb,MAAAA,SAAQ,SAAS;AACnB,QAAI,YAAY;AACd,MAAAA,SAAQ,UAAU;AACpB,QAAI,gBAAgB;AAClB,MAAAA,SAAQ,cAAc;AACxB,QAAI,UAAU;AACZ,MAAAA,SAAQ,QAAQ;AAClB,QAAI,iBAAiB;AACnB,MAAAA,SAAQ,eAAe;AACzB,QAAI,yDAAoB;AACd,MAAAA,SAAA,qBAAqB,wBAAwB,kBAAkB;AACzE,QAAI,eAAe;AACjB,MAAAA,SAAQ,aAAa;AACvB,QAAI,cAAc;AAChB,MAAAA,SAAQ,YAAY;AACtB,QAAI,aAAa;AACf,MAAAA,SAAQ,WAAW;AACrB,QAAI,YAAY;AACd,MAAAA,SAAQ,UAAU;AACpB,QAAI,mBAAmB;AACrB,MAAAA,SAAQ,iBAAiB;AAC3B,UAAM,IAAI;AAAA,MACR,GAAG;AAAA,MACH,GAAGA;AAAA,IAAA,CACJ;AAAA,EAAA,GACA,EAAE,KAAK,MAAM;AAAA,EAEhB,sBAAsB,CAAC,OAAO,EAAE,YAAY,yBAAyB,eAAe,mBAAmB,gBAAA,GAAmB,KAAK,aAAa;AACtI,QAAA;AACgBinO,gBAAU,mBAAmB,eAAe;AAChE,aAAS,iBAAiB,QAAQ;AAClC,QAAI,UAAU;AACX,eAA0B,cAAc;AAE3C,eAAW,yBAAyB;AACpC,eAAW,yBAAyB,iBAAiB;AACrD,eAAW,mCAAmC,qBAAqB;AACnE,UAAM,IAAI;AACV,eAAW,yBAAyB;AACpC,eAAW,yBAAyB;AACpC,eAAW,mCAAmC;AAAA,EAAA,GAC7C,EAAE,MAAM,sBAAuB,OAAO,yBAAyB,KAAK,MAAa;AAAA,EAEpF,iBAAiB,CAAC,OAAO,EAAE,YAAY,WAAW,GAAG,KAAK,aAAa;AAI5D,aAAA,WAAW,SAAS,QAAQ,OAAO;AAEtC,UAAA,oBAAoB,IAAI,kBAAkB,YAAY,UAAU,gBAAgB,UAAU;AAC1F,UAAA,kBAAkB,cAAc,QAAwB;AAE9D,UAAM,oBAAwC,CAAC;AAC/C,UAAM,cAA6C;AAAA,MACjD,gBAAgB,CAAC,MAAM,YAAY;AAI/B;AAAA,MAyBJ;AAAA,MACA,cAAc,CAAQ,SAAA;AAEpB,YAAI,KAAK,YAAY;AACnB;AACE,YAAA,KAAK,YAAY,oBAAoB;AACjCC,gBAAAA,QAAO,kBAAkB,IAAI;AACnCA,yCAAM,SAAS,EAAE,OAAO,KAAK;AAC7B;AAAA,QAAA;AAEF,cAAM,OAAO,KAAK;AAClB,qCAAM,SAAS,EAAE,OAAO,KAAK;MAC/B;AAAA,MACA,aAAa,CAAC,EAAE,sBAAsB;AAAA,MAGtC;AAAA,MACA,8BAA8B,OAAOruN,aAA4B;AACzD,eAAA,uDAAmB,wBAAwBA;AAAA,MAInD;AAAA,MACA,8BAA8B,OAAOA,aAA+B;AAC5D,eAAA,uDAAmB,wBAAwBA;AAAA,MACnD;AAAA,MACA,8BAA8B,OAAOA,aAA4B;AACzD,eAAA,uDAAmB,wBAAwBA;AAAA,MACnD;AAAA,MACA,8BAA8B,OAAOA,aAA+B;AAC5D,eAAA,uDAAmB,wBAAwBA;AAAA,MAAO;AAAA,IAE5D;AAEA,UAAM,wBAAyB,WAAmB;AAClD,0BAAsB,YAAY,WAAW;AAE7C,UAAM,IAAI;AAEV,0BAAsB,eAAe,WAAW;AAChD,UAAM,kBAAkB,cAAc;AAAA,EAAA,GACrC,EAAE,MAAM,sBAAuB,OAAO,mBAAmB,KAAK,MAAM,SAAS,GAAU;AAAA,EAE1F,iBAAiB,CAAC,OAAO;AAAA,IAAE,SAAA1X;AAAA,IAAS;AAAA,IAAO;AAAA,IAAe;AAAA;AAAA,EAAA,GAA6E,KAAK,aAAa;AACvJ,UAAM,eAAe;AACf,UAAA,YAAY,mBAAmB,KAAK;AAC1C,UAAM,eAAe,mBAAmB,WAAW,QAAQ,KAAK,CAAC;AAC3D,UAAA,+BAAe,IAAgD;AAE/D,UAAA,IAAI,OAAMnB,aAAW;AACnB,YAAA,OAAO,aAAa,iBAAiB;AACvC,UAAA,SAAS,eAAe,SAAS,YAAY;AAC/C,cAAM,IAAI,MAAM;AAAA,UACd,uDAAuD,IAAI;AAAA,UAC3D;AAAA,UACA;AAAA,QAAA,EACA,KAAK,IAAI,CAAC;AAAA,MAAA;AAEd,YAAM,eAAsC,eAAe;AAAA,QACzD,aAAa;AAAA,UACX,KAAK,QAAQ,EAAE,aAAa;AAAA,UAC5B,MAAM,OAAO,UAAU,WAAW,SAAY,MAAM;AAAA,QAAA;AAAA,MACtD,IACE,CAAC;AACC,YAAA6Y,WAAU,MAAM1X,SAAQ,WAAW,EAAE,GAAG,cAAc,GAAGnB,UAAS;AACxE,YAAM,cAA0C,EAAE,gBAAgB,GAAG;AAC5D,eAAA,IAAI6Y,UAAS,WAAW;AAC7B,UAAA;AACM,QAAAA,SAAA,GAAG,QAAQ,CAAA,SAAQ,YAAY,eAAe,KAAK,IAAI,CAAC;AAE9D,UAAA,QAAQ,IAAI,aAAa,UAAU;AAC9B,cAAAA,SAAgB,aAAa,YAAY;AAC9C,gBAAMA,SAAQ,MAAM,QAAQ,EAAE,MAAM,GAAG;AACjC,gBAAAA,SAAQ,MAAM,QAAQ,GAAI;AAAA,QAAA,GAC/B,EAAE,UAAU,MAAM;AAAA,MACZ,WAAA,QAAQ,IAAI,aAAa,YAAY;AACvC,cAAAA,SAAgB,aAAa,YAAY;AAC9C,gBAAMA,SAAQ,MAAM,QAAQ,EAAE,MAAM,GAAG;AAAA,QAAA,GACtC,EAAE,UAAU,MAAM;AAAA,MAAA;AAGhB,aAAAA;AAAA,IAAA,CACR;AAED,QAAI,UAAU;AACd,UAAM,cAAc,SAAS,WAAW,aAAa,qBAAqB,SAAS,UAAU,iBAAiB;AACxG,UAAA,QAAQ,IAAI,CAAC,GAAG,SAAS,MAAM,EAAE,IAAI,OAAMA,aAAW;AACnD,YAAAA,SAAgB,aAAa,YAAY;AAC9C,cAAMA,SAAQ,MAAM,EAAE,QAAQ,aAAa;AAAA,MAAA,GAC1C,EAAE,UAAU,MAAM;AACf,YAAA,aAAa,SAAS,WAAW,SAAS;AAC1C,YAAA,gBAAgB,iBAAiB,cAAc,QAAS,cAAc,cAAc,uBAAyB,cAAc,oBAAoB,SAAS,UAAU;AACxK,UAAI,eAAe;AACjB,cAAM,EAAE,gBAAgB,cAAA,IAAkB,SAAS,IAAIA,QAAO;AACxD,cAAA,SAAS,cAAc,IAAI,CAAA,MAAK,EAAE,MAAO,CAAA,EAAE,OAAO,OAAO;AAC/D,cAAM,QAAQ,IAAI,OAAO,IAAI,OAAM,MAAK;AAClC,cAAA;AACI,kBAAA,YAAY,SAAS,WAAW,QAAQ,UAAU,MAAM,UAAU,EAAE,OAAO;AAC/E,cAAA;AACI,kBAAA,EAAE,OAAO,SAAS;AACf,qBAAA,YAAY,KAAK,EAAE,MAAM,SAAS,MAAM,WAAW,aAAa,cAAc;AAAA,mBAChF,GAAG;AAAA,UAAA;AAAA,QAEZ,CACD,CAAC;AAAA,MAAA;AAAA,IACJ,CACD,CAAC;AAAA,EAAA,GAED,EAAE,OAAO,QAAS,OAAO,WAAW,KAAK,MAAM;AAAA,EAElD,yBAAyB,CAAC,QAAQ,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EACnE,uBAAuB,CAAC,QAAW,EAAE,OAAO,UAAU,QAAQ,MAAM;AAAA,EAEpE,eAAe,CAAC,OAAO,EAAE,OAAO,wBAAA,GAA2B,QAAQ;AACjE,QAAI,OAAO;AACX,QAAI,QAAQ,IAAI;AACP,aAAA;AACT,UAAM,QAAQ,SAAS,mBAAmB,mBAAmB,KAAK,MAAM;AACxE,UAAM,IAAI,KAAK;AAAA,EAAA,GACd,EAAE,OAAO,UAAW,OAAO,WAAW,KAAK,MAAM;AAAA,EAEpD,SAAS,OAAO,EAAE,YAAY,SAAA1X,UAAS,eAAe,gBAAmB,GAAA,KAAK,aAAa;AACzF,kCAA8B,UAAUA,QAAO;AAC/C,QAAI,CAAC,eAAe;AACZ,YAAA,IAAI,MAAM,iBAAiB;AACjC;AAAA,IAAA;AAGI,UAAA,wBAAyB,WAAW,SAAiB;AAC3D,UAAM0X,WAAU,MAAO1X,SAAgB,oBAAoB,qBAAqB;AAC/E,IAAA0X,SAAgB,gBAAgB,IAAI;AACrC,UAAM,IAAIA,QAAO;AACjB,UAAM,cAAc,SAAS,WAAW,aAAa,qBAAqB,SAAS,UAAU,iBAAiB;AACvG,UAAA1X,SAAgB,uBAAuB,WAAW;AAAA,EAC3D;AAAA,EAEA,MAAM,OAAO,EAAE,SAAA0X,UAAS,cAAA,GAAiB,QAAQ;AAC/C,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI,MAAMA,SAAQ,SAAS;AACjC;AAAA,IAAA;AAIF,QAAI,CAAC,IAAI,IAAIA,SAAQ,MAAM;AAC3B,QAAI,CAAC;AACI,aAAA,MAAMA,SAAQ,QAAQ;AAC/B,UAAM,IAAI,IAAI;AAAA,EAChB;AAAA,EAEA,SAAS,OAAO,EAAE,cAAc,QAAQ;AACtC,UAAM,UAAU,MAAM,WAAW,QAAQ,WAAW;AACpD,UAAM,IAAI,OAAO;AACjB,UAAM,OAAQ,KAAK,KAAK,EAAmB,iBAAiB;AAC5D,QAAI,SAAS,aAAa;AAClB,YAAA,QAAQ,QAAQ,EAAE,QAAQ;AAAA,QAC9B;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MAAA,EACA,KAAK,IAAI,GAAG;AAAA,IAAA,OACT;AACL,YAAM,QAAQ,QAAQ;AAAA,IAAA;AAAA,EACxB;AAEJ;AAIA,SAAS,mBAAmB,OAAoF;AAC9G,MAAI,CAAC;AACI,WAAA;AACT,MAAI,YAAY,OAAO,UAAU,WAAW,QAAQ,MAAM;AAC1D,MAAI,cAAc;AACJ,gBAAA;AACP,SAAA;AACT;AAEA,SAAS,mBAAmB,WAAsB,UAAoB;AACpE,SAAQ,cAAc,QAAQ,cAAc,uBAAwB,cAAc,oBAAoB,SAAS,UAAU;AAC3H;AAEA,SAAS,wBAAwB,YAA8C;AAC7E,MAAI,CAAC;AACI,WAAA;AACT,SAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAClE;AAEA,SAAS,8BAA8B,UAAoB1X,UAAyB;AAC5E,QAAA,iBAAiEA,YAAA,gBAAAA,SAAiB,YAAY;AACpG,MAAI,CAAC;AACH;AACF,aAAW,UAAU,gBAAgB;AACnC,QAAI,OAAO,SAAS;AAClB;AACF,UAAM,CAAC,MAAMT,MAAK,IAAI,OAAO,MAAM,MAAM,GAAG;AACxC,QAAA,CAAC,QAAQ,CAACA;AACZ;AACF,QAAI,SAAS,YAAY,KAAK,CAAc,eAAA,WAAW,SAAS,IAAI;AAClE;AACO,aAAA,YAAY,KAAK,EAAE,MAAM,aAAa,cAAc,MAAM,OAAO,KAAKA,MAAK,EAAA,CAAG;AAAA,EAAA;AAE3F;AAEA,SAAS,oBAAoBhB,OAA0B;AACrD,QAAMuC,UAAS,KAAK,KAAK,EAAE,OAAO;AAC9B,MAAA,CAACA,WAAU,CAACvC;AACP,WAAAA;AACL,MAAAH,OAAK,WAAWG,KAAI;AACf,WAAAA;AACT,SAAOH,OAAK,QAAQA,OAAK,QAAQ0C,OAAM,GAAGvC,KAAI;AAChD;AAIA,SAAS,wBAAwB,oBAA4D;AAC3F,aAAW,QAAQ,oBAAoB;AAChC,SAAA,WAAW,oBAAoB,KAAK,QAAQ;AAC5C,SAAA,UAAU,oBAAoB,KAAK,OAAO;AAC1C,SAAA,UAAU,oBAAoB,KAAK,OAAO;AAAA,EAAA;AAE1C,SAAA;AACT;AAEA,MAAM,kBAAkB,OAAO,iBAAiB;AAChD,MAAM,mBAAmB,OAAO,gBAAgB;AAEhD,SAAS,wBAAwB;AACzB,QAAA,aAAa,QAAQ,IAAI;AAC/B,MAAI,CAAC;AACI,WAAA;AACH,QAAA,UAAU,QAAQ,IAAI,0BAA0B,KAAK,MAAM,QAAQ,IAAI,uBAAuB,IAAI;AACjG,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA,eAAe,QAAQ,IAAI;AAAA,EAC7B;AACF;AAIA,MAAM,iBAAiB;AAAA,EAIrB,YACU,oBACA,OACA,OACA,cACA,YACA,aAA0D;AAL1D,SAAA,qBAAA;AACA,SAAA,QAAA;AACA,SAAA,QAAA;AACA,SAAA,eAAA;AACA,SAAA,aAAA;AACA,SAAA,cAAA;AATV,SAAQ,WAAW;AACnB,SAAQ,aAAuB,CAAC;AAAA,EAAA;AAAA,EAWhC,aAAa;AAGN,SAAA,WAAW,KAAK,SAAS,YAAY,OAAO,OAAK,EAAE,SAAS,KAAK,KAAK,EAAE;AAAA,EAAA;AAAA,EAGvE,0BAA0B;AAChC,WAAO,KAAK,UAAU,QACjB,KAAK,UAAU,qBAAqB,KAAK,SAAS,WAAA,KAClD,KAAK,UAAU,sBAAsB,KAAK,SAAS,gBAAgB,KAAK,SAAS,UAAU;AAAA,EAAA;AAAA,EAGlG,MAAM,eAAe;AACf,QAAA,CAAC,KAAK,wBAAwB;AAChC;AAEF,UAAM,QAAQ,IAAI,KAAK,mBAAmB,YAAY,UAAU,EAAE,IAAI,CAAA,SAAQ,KAAK,cAAc,MAAM,KAAK,CAAC,CAAC;AAAA,EAAA;AAAA,EAGhH,MAAM,mBAAmB;AACnB,QAAA,KAAK,2BAA2B;AAClC,YAAM,QAAQ,IAAI,KAAK,WAAW,IAAI,OAAMA,UAAQ;AAC9C,YAAA;AACIH,gBAAAA,QAAO,KAAK,sBAAsB;AACxC,gBAAM,GAAG,SAAS,OAAOG,OAAMH,KAAI;AACnC,eAAK,QAAQA,KAAI;AAAA,QAAA,QACX;AAAA,QAAA;AAAA,MACR,CACD,CAAC;AAAA,IAAA;AAAA,EACJ;AAAA,EAGF,MAAM,iBAAiBsZ,UAAyB;AAC1C,QAAA,KAAK,UAAU,QAAQ,KAAK,UAAU,qBAAsB,KAAK,UAAU,sBAAsB,KAAK,SAAS,UAAU;AAC3H,YAAM,QAAQ,IAAIA,SAAQ,MAAQ,EAAA,IAAI,CAAQ,SAAA,KAAK,cAAc,MAAM,IAAI,CAAC,CAAC;AAAA,EAAA;AAAA,EAGzE,QAAQ,gBAAwB;AACtC,SAAK,SAAS,YAAY,KAAK,EAAE,MAAM,KAAK,OAAO,MAAM,gBAAgB,aAAa,KAAK,aAAA,CAAc;AAAA,EAAA;AAAA,EAGnG,wBAAwB;AACxB,UAAA,aAAa,KAAK,SAAS,WAAW;AACtC,UAAA1Y,SAAQ,KAAK,WAAW;AAC9B,MAAE,KAAK;AACP,UAAMZ,QAAO,KAAK,SAAS,WAAW,QAAQ,aAAa,WAAW,UAAU,IAAIY,MAAK,GAAG,KAAK,UAAU,EAAE;AACtGZ,WAAAA;AAAAA,EAAAA;AAAAA,EAGD,4BAA4B,MAAgB;AAClD,UAAMG,QAAOH,OAAK,KAAK,KAAK,mBAAmB,eAAe,GAAG,IAAI;AAC9D,WAAAG;AAAA,EAAA;AAAA,EAGT,MAAc,cAAc,MAAY,WAAoB;AAGrD,QAAA,KAAa,KAAK,SAAS,aAAa;AAC3C;AACY,SAAA,KAAK,SAAS,aAAa,IAAI;AACzC,QAAA;AACIH,YAAAA,QAAO,YAAY,KAAK,yBAAyB,eAAe,KAAK,UAAU,IAAI,KAAK,sBAAsB;AAC9G,YAAA,KAAK,YAAY,MAAMA,KAAI;AAC7B,UAAA;AACG,aAAA,WAAW,KAAKA,KAAI;AAAA;AAEzB,aAAK,QAAQA,KAAI;AAAA,IAAA,QACb;AAAA,IAAA;AAAA,EAER;AAAA,EAGF,IAAY,WAAyB;AACnC,WAAO,KAAK,mBAAmB;AAAA,EAAA;AAEnC;AAEA,MAAM,kBAAkB;AAAA,EAWtB,YAAY,YAA4B,cAAsB,YAA8B;AAPpF,SAAA,sCAAsB,IAAoB;AAK1C,SAAA,mCAAwC,IAAI;AAGlD,SAAK,cAAc;AACnB,SAAK,gBAAgB;AACrB,UAAM,oBAAoB,OAAO,eAAe,WAAW,SAAY;AAClE,SAAA,8BAA8B,OAAO,4BAA4B;AAEtE,SAAK,sBAAsB,IAAI,iBAAiB,MAAM,wBAAwB,UAAU,GAAG,cAAc,aAAa,QAAQ,OAAO,MAAMA,UAAS;AAC5I,YAAA,KAAK,WAAW,EAAE,GAAG,mBAAmB,SAAS,KAAM,MAAAA,OAAM,OAAO,UAAA,CAAW;AAAA,IAAA,CACtF;AAAA,EAAA;AAAA,EAGH,MAAM,cAAc,UAAwB;AAC1C,SAAK,YAAY;AACR,aAAA,2BAA2B,MAAM,KAAK,sBAAsB;AAErE,SAAK,oBAAoB,WAAW;AAG9B,UAAA,QAAQ,IAAI,KAAK,YAAY,eAAe,IAAI,OAAMsZ,aAAW;AACrE,UAAKA,SAAgB,gBAAgB;AAC9B,aAAA,gBAAgB,IAAIA,QAAO;AAAA;AAE1B,cAAA,KAAK,wBAAwBA,QAAO;AAAA,IAAA,CAC7C,CAAC;AACF;AACE,YAAM,sBAA4C,MAAM,KAAM,KAAK,YAAY,QAAgB,SAAmC;AAC5H,YAAA,QAAQ,IAAI,oBAAoB,IAAI,QAAK,KAAK,wBAAwBrY,EAAC,CAAC,CAAC;AAAA,IAAA;AAAA,EACjF;AAAA,EAGF,MAAM,wBAAwBqY,UAAyB;AAC/C,UAAA,KAAK,kCAAkCA,SAAQ,OAAO;AAAA,EAAA;AAAA,EAG9D,MAAM,wBAAwBA,UAAyB;AAGjD,QAAA,KAAK,gBAAgB,IAAIA,QAAO;AAClC;AACI,UAAA,KAAK,aAAaA,SAAQ,OAAO;AAEjC,UAAA,KAAK,oBAAoB,iBAAiBA,QAAO;AACjD,UAAA,KAAK,kBAAkBA,QAAO;AAAA,EAAA;AAAA,EAGtC,MAAc,kBAAkBA,UAAyB;AACvD,QAAI,QAAQ,IAAI;AACd;AACE,QAAA,KAAK,UAAU,OAAO,WAAW;AACnC;AACF,QAAI,KAAK;AACP;AACF,UAAM,OAAOA,SAAQ,MAAM,EAAE,CAAC;AAE1B,QAAA;AAEG,WAAA,gBAAgB,OAAM,6BAAM,QAAQ,QAAQ,aAAa,EAAE,SAAS;IAAM,QACzE;AAAA,IAAA;AAAA,EAAC;AAAA,EAGX,MAAM,wBAAwBA,UAA4B;AACxD,UAAMsuN,WAAWtuN,SAAgB;AAC3B,UAAA,KAAK,kCAAkCsuN,QAAO;AAAA,EAAA;AAAA,EAGtD,MAAM,wBAAwBtuN,UAA4B;AACxD,UAAMsuN,WAAWtuN,SAAgB;AAC3B,UAAA,KAAK,aAAasuN,QAAO;AAAA,EAAA;AAAA,EAGjC,MAAM,wBAAwB;AACtB,UAAA,KAAK,oBAAoB,aAAa;AAAA,EAAA;AAAA,EAG9C,MAAM,gBAAgB;AACpB,UAAM,KAAK,sBAAsB;AAEjC,UAAM,mBAAmB,KAAK,YAAY,aAAe,EAAA,OAAO,CAAAtuN,cAAW,CAAC,KAAK,gBAAgB,IAAIA,SAAO,CAAC;AAC7G,UAAM,sBAA4C,MAAM,KAAM,KAAK,YAAY,QAAgB,SAAmC;AAGlI,UAAM,QAAQ,IAAI,iBAAiB,IAAI,OAAMA,cAAW;AAChD,YAAA,KAAK,aAAaA,UAAQ,OAAO;AAAA,IACxC,CAAA,EAAE,OAAO,oBAAoB,IAAI,OAAMA,cAAW;AACjD,YAAMsuN,WAAWtuN,UAAgB;AAC3B,YAAA,KAAK,aAAasuN,QAAO;AAAA,IAChC,CAAA,CAAC,CAAC;AAEG,UAAA,KAAK,oBAAoB,iBAAiB;AAE1C,UAAAtuN,WAAU,iBAAiB,CAAC;AAC9B,QAAAA;AACI,YAAA,KAAK,kBAAkBA,QAAO;AAEtC,QAAI,KAAK,iBAAiB,KAAK,UAAU,OAAO,SAAS,KAAK,CAAC,KAAK,UAAU,YAAY,KAAK,CAAA,MAAK,EAAE,SAAS,eAAe,GAAG;AAC/H,YAAM,QAAQ;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,QACA,KAAK;AAAA,QACL;AAAA,MACF;AACA,YAAM,WAAW,KAAK,UAAU,WAAW,kBAAkB;AACvD,YAAA,GAAG,SAAS,UAAU,UAAU,MAAM,KAAK,IAAI,GAAG,MAAM;AAE9D,WAAK,UAAU,QAAQ;AAAA,QACrB,MAAM;AAAA,QACN,aAAa;AAAA,QACb,MAAM;AAAA,SACL,MAAS;AAAA,IAAA;AAAA,EACd;AAAA,EAGF,MAAc,kCAAkCsuN,UAAkB;AAChE,UAAMnnO,WAAU,KAAK,UAAU,SAAS,aAAa;AACrD,QAAIA,UAAS;AACX,YAAM,QAAQ,KAAK,UAAU,SAAS,WAAW;AACjD,YAAM,OAAO,KAAK,UAAU,SAAS,+BAA+B;AAChE,UAAA,CAAEmnO,SAAgB,eAAe,GAAG;AACtC,cAAMA,SAAQ,MAAM,EAAE,GAAGnnO,UAAS,OAAO,MAAM;AAC9CmnO,iBAAgB,eAAe,IAAI;AAAA,MAAA,OAC/B;AACL,cAAMA,SAAQ,WAAW,EAAE,OAAO,MAAM;AAAA,MAAA;AAAA,IAC1C,OACK;AACAA,UAAAA,SAAgB,eAAe,GAAG;AACpCA,iBAAgB,eAAe,IAAI;AACpC,cAAMA,SAAQ,KAAK;AAAA,MAAA;AAAA,IACrB;AAAA,EACF;AAAA,EAGF,MAAc,aAAaA,UAAkB;AACtCA,QAAAA,SAAgB,KAAK,2BAA2B;AACnD;AACe,aAAA,KAAK,2BAA2B,IAAI;AACrD,QAAI,KAAK,UAAU,SAAS,aAAa,KAAMA,SAAgB,eAAe;AACtEA,YAAAA,SAAQ,UAAU,EAAE,MAAM,KAAK,UAAU,SAAS,oCAAoC,GAAG;AAAA,EAAA;AAErG;AAUA,SAAS,UAAU;AACT,SAAA,KAAK,OAAwB;AACvC;AAEa,MAAA,OAAO,UAAU,OAAqC,kBAAkB;;","x_google_ignoreList":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,114,115,118,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463,464,465,466,469,470,471,472,473,474,475,476,477,478,479,480,481,482,483,484,485,486,487,488,489,490,491,492,493,494,495,496,497,498,499,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,515,516,517,518,519,520,521,522,523,524,525,526,528,529]}