readability_js 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rspec +2 -0
- data/CHANGELOG.md +2 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +4 -0
- data/LICENSE +21 -0
- data/README.md +119 -0
- data/Rakefile +30 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/cli/pry.rb +5 -0
- data/lib/custom_errors/error.rb +4 -0
- data/lib/readability_js/node/node_modules/.bin/tldts +1 -0
- data/lib/readability_js/node/node_modules/.yarn-integrity +67 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/LICENSE +21 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/README.md +316 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js +220 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs +5666 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.cjs.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/cjs/index.d.cts +109 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.d.ts +17 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.js +27 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.d.ts +44 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js +82 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/cache.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.d.ts +537 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js +2833 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/color.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.d.ts +21 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js +7 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/common.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.d.ts +43 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js +101 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/constant.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.d.ts +99 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js +361 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/convert.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.d.ts +89 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js +860 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-calc.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.d.ts +79 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js +261 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-gradient.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.d.ts +31 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js +195 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/css-var.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.d.ts +29 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js +507 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/relative-color.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.d.ts +52 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js +350 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/resolve.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/typedef.d.ts +80 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.d.ts +45 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js +279 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/esm/js/util.js.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/package.json +82 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/index.ts +24 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/cache.ts +114 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/color.ts +3511 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/common.ts +31 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/constant.ts +68 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/convert.ts +469 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-calc.ts +965 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-gradient.ts +384 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/css-var.ts +250 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/relative-color.ts +603 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/resolve.ts +443 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/typedef.ts +88 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/src/js/util.ts +336 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/LICENSE +21 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/README.md +324 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.cjs +4613 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.cjs.map +1 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/dist/cjs/index.d.cts +16 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/package.json +83 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/index.js +353 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/constant.js +129 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/finder.js +3108 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/matcher.js +587 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/parser.js +431 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/src/js/utility.js +1107 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/index.d.ts +14 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/constant.d.ts +79 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/finder.d.ts +64 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/matcher.d.ts +16 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/parser.d.ts +14 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/dom-selector/types/js/utility.d.ts +30 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/LICENSE +22 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/README.md +132 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/package.json +43 -0
- data/lib/readability_js/node/node_modules/@asamuzakjp/nwsapi/src/nwsapi.js +1855 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/CHANGELOG.md +10 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/LICENSE.md +18 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/README.md +32 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.cjs +263 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.d.ts +429 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/dist/index.mjs +263 -0
- data/lib/readability_js/node/node_modules/@csstools/color-helpers/package.json +62 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/CHANGELOG.md +10 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/LICENSE.md +20 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/README.md +132 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.cjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.d.ts +71 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/dist/index.mjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-calc/package.json +66 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/CHANGELOG.md +13 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/LICENSE.md +20 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/README.md +37 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.cjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.d.ts +168 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/dist/index.mjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-color-parser/package.json +71 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/CHANGELOG.md +9 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/LICENSE.md +20 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/README.md +119 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.cjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.d.ts +604 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/dist/index.mjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-parser-algorithms/package.json +65 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/CHANGELOG.md +9 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/LICENSE.md +18 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/README.md +43 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/dist/index.d.ts +5 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/dist/index.json +765 -0
- data/lib/readability_js/node/node_modules/@csstools/css-syntax-patches-for-csstree/package.json +54 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/CHANGELOG.md +9 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/LICENSE.md +20 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/README.md +111 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.cjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.d.ts +593 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/dist/index.mjs +1 -0
- data/lib/readability_js/node/node_modules/@csstools/css-tokenizer/package.json +62 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/.prettierrc.js +13 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/CHANGELOG.md +104 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/CODE_OF_CONDUCT.md +15 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/CONTRIBUTING.md +78 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/JSDOMParser.js +1278 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/LICENSE.md +13 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/README.md +129 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/Readability-readerable.js +122 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/Readability.js +2786 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/SECURITY.md +8 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/eslint.config.mjs +55 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/index.d.ts +64 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/index.js +8 -0
- data/lib/readability_js/node/node_modules/@mozilla/readability/package.json +41 -0
- data/lib/readability_js/node/node_modules/agent-base/LICENSE +22 -0
- data/lib/readability_js/node/node_modules/agent-base/README.md +69 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/helpers.d.ts +15 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/helpers.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/helpers.js +66 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/helpers.js.map +1 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/index.d.ts +41 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/index.js +178 -0
- data/lib/readability_js/node/node_modules/agent-base/dist/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/agent-base/package.json +46 -0
- data/lib/readability_js/node/node_modules/bidi-js/LICENSE.txt +22 -0
- data/lib/readability_js/node/node_modules/bidi-js/README.md +133 -0
- data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.js +1010 -0
- data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.min.js +1 -0
- data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.min.mjs +1 -0
- data/lib/readability_js/node/node_modules/bidi-js/dist/bidi.mjs +1002 -0
- data/lib/readability_js/node/node_modules/bidi-js/package.json +39 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/brackets.js +30 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/charTypes.js +66 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiBrackets.data.js +5 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiCharTypes.data.js +25 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/data/bidiMirroring.data.js +2 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/embeddingLevels.js +690 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/index.js +5 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/mirroring.js +48 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/reordering.js +99 -0
- data/lib/readability_js/node/node_modules/bidi-js/src/util/parseCharacterMap.js +30 -0
- data/lib/readability_js/node/node_modules/css-tree/LICENSE +19 -0
- data/lib/readability_js/node/node_modules/css-tree/README.md +192 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/convertor/create.cjs +32 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/convertor/index.cjs +8 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/data-patch.cjs +7 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/data.cjs +120 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/SyntaxError.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/generate.cjs +139 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/index.cjs +13 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/parse.cjs +556 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/scanner.cjs +113 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/tokenizer.cjs +59 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/definition-syntax/walk.cjs +57 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/generator/create.cjs +102 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/generator/index.cjs +8 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/generator/sourceMap.cjs +96 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/generator/token-before.cjs +170 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/index.cjs +65 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/Lexer.cjs +517 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/error.cjs +128 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-an-plus-b.cjs +235 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-const.cjs +12 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic-urange.cjs +149 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/generic.cjs +589 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/index.cjs +7 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/match-graph.cjs +530 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/match.cjs +632 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/prepare-tokens.cjs +54 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/search.cjs +65 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/structure.cjs +173 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/trace.cjs +73 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/lexer/units.cjs +38 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/parser/SyntaxError.cjs +74 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/parser/create.cjs +340 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/parser/index.cjs +8 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/parser/parse-selector.cjs +8 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/parser/sequence.cjs +47 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/container.cjs +32 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/font-face.cjs +12 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/import.cjs +101 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/index.cjs +27 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/layer.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/media.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/nest.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/page.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/scope.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/starting-style.cjs +12 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/atrule/supports.cjs +16 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/generator.cjs +9 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/lexer.cjs +14 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/mix.cjs +127 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/parser-selector.cjs +19 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/parser.cjs +49 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/config/walker.cjs +9 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/create.cjs +58 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/function/expression.cjs +11 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/function/var.cjs +43 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/index.cjs +14 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AnPlusB.cjs +293 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Atrule.cjs +103 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AtrulePrelude.cjs +52 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/AttributeSelector.cjs +148 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Block.cjs +96 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Brackets.cjs +38 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/CDC.cjs +26 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/CDO.cjs +26 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/ClassSelector.cjs +31 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Combinator.cjs +61 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Comment.cjs +40 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Condition.cjs +120 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Declaration.cjs +166 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/DeclarationList.cjs +62 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Dimension.cjs +30 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Feature.cjs +101 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/FeatureFunction.cjs +67 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/FeatureRange.cjs +133 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Function.cjs +45 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/GeneralEnclosed.cjs +68 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Hash.cjs +30 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/IdSelector.cjs +33 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Identifier.cjs +25 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Layer.cjs +35 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerList.cjs +43 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerName.cjs +34 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/LayerNameList.cjs +42 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaCondition.cjs +70 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaFeature.cjs +76 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaFeatureRange.cjs +11 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaQuery.cjs +100 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/MediaQueryList.cjs +41 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/NestingSelector.cjs +29 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Nth.cjs +54 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Number.cjs +25 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Operator.cjs +28 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Parentheses.cjs +38 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Percentage.cjs +25 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/PseudoClassSelector.cjs +67 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/PseudoElementSelector.cjs +69 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Ratio.cjs +71 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Raw.cjs +48 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Rule.cjs +58 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Scope.cjs +69 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Selector.cjs +38 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SelectorList.cjs +43 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/String.cjs +26 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/StyleSheet.cjs +83 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SupportsDeclaration.cjs +38 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/SupportsFeature.cjs +69 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/TypeSelector.cjs +59 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/UnicodeRange.cjs +158 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Url.cjs +54 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/Value.cjs +26 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/WhiteSpace.cjs +34 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/common/feature-range.cjs +112 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/common/feature.cjs +76 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-generate.cjs +103 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-parse-selector.cjs +39 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index-parse.cjs +103 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/node/index.cjs +103 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/pseudo/index.cjs +60 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/pseudo/lang.cjs +37 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/atrulePrelude.cjs +9 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/default.cjs +76 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/index.cjs +11 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/selector.cjs +88 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/syntax/scope/value.cjs +29 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/OffsetToLocation.cjs +91 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/TokenStream.cjs +308 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/adopt-buffer.cjs +13 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/char-code-definitions.cjs +236 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/index.cjs +554 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/names.cjs +32 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/types.cjs +57 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/tokenizer/utils.cjs +261 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/List.cjs +473 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/clone.cjs +25 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/create-custom-error.cjs +18 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/ident.cjs +102 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/index.cjs +20 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/names.cjs +113 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/string.cjs +99 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/utils/url.cjs +108 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/version.cjs +5 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/walker/create.cjs +291 -0
- data/lib/readability_js/node/node_modules/css-tree/cjs/walker/index.cjs +8 -0
- data/lib/readability_js/node/node_modules/css-tree/data/patch.json +982 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/csstree.esm.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/csstree.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/data.cjs +1308 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/data.js +1308 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/version.cjs +1 -0
- data/lib/readability_js/node/node_modules/css-tree/dist/version.js +1 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/convertor/create.js +28 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/convertor/index.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/data-patch.js +6 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/data.js +118 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/SyntaxError.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/generate.js +135 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/index.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/parse.js +552 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/scanner.js +109 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/definition-syntax/walk.js +53 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/generator/create.js +97 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/generator/index.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/generator/sourceMap.js +92 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/generator/token-before.js +182 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/index.js +30 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/Lexer.js +511 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/error.js +123 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-an-plus-b.js +238 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-const.js +8 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic-urange.js +151 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/generic.js +622 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/index.js +1 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/match-graph.js +527 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/match.js +630 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/prepare-tokens.js +50 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/search.js +61 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/structure.js +169 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/trace.js +66 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/lexer/units.js +27 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/parser/SyntaxError.js +70 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/parser/create.js +350 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/parser/index.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/parser/parse-selector.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/parser/sequence.js +43 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/container.js +28 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/font-face.js +8 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/import.js +104 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/index.js +23 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/layer.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/media.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/nest.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/page.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/scope.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/starting-style.js +8 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/atrule/supports.js +12 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/generator.js +5 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/lexer.js +10 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/mix.js +123 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/parser-selector.js +15 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/parser.js +45 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/config/walker.js +5 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/create.js +55 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/function/expression.js +7 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/function/var.js +39 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/index.js +10 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AnPlusB.js +292 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Atrule.js +100 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AtrulePrelude.js +47 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/AttributeSelector.js +147 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Block.js +95 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Brackets.js +35 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/CDC.js +19 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/CDO.js +19 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/ClassSelector.js +24 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Combinator.js +54 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Comment.js +33 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Condition.js +123 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Declaration.js +165 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/DeclarationList.js +62 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Dimension.js +23 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Feature.js +103 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/FeatureFunction.js +63 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/FeatureRange.js +133 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Function.js +41 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/GeneralEnclosed.js +66 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Hash.js +23 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/IdSelector.js +26 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Identifier.js +18 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Layer.js +28 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/LayerList.js +36 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/MediaQuery.js +102 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/MediaQueryList.js +34 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/NestingSelector.js +22 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Nth.js +47 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Number.js +18 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Operator.js +21 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Parentheses.js +34 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Percentage.js +18 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/PseudoClassSelector.js +65 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/PseudoElementSelector.js +66 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Ratio.js +68 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Raw.js +41 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Rule.js +51 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Scope.js +66 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Selector.js +31 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/SelectorList.js +35 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/String.js +19 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/StyleSheet.js +82 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/SupportsDeclaration.js +34 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/TypeSelector.js +52 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/UnicodeRange.js +156 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Url.js +52 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/Value.js +19 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/WhiteSpace.js +27 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-generate.js +49 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-parse-selector.js +17 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index-parse.js +49 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/node/index.js +49 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/pseudo/index.js +56 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/pseudo/lang.js +33 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/atrulePrelude.js +5 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/default.js +85 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/index.js +3 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/selector.js +94 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/syntax/scope/value.js +25 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/OffsetToLocation.js +87 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/TokenStream.js +316 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/adopt-buffer.js +9 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/char-code-definitions.js +212 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/index.js +513 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/names.js +28 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/types.js +28 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/tokenizer/utils.js +254 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/List.js +469 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/clone.js +21 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/create-custom-error.js +14 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/ident.js +101 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/index.js +6 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/names.js +106 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/string.js +99 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/utils/url.js +108 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/version.js +5 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/walker/create.js +287 -0
- data/lib/readability_js/node/node_modules/css-tree/lib/walker/index.js +4 -0
- data/lib/readability_js/node/node_modules/css-tree/package.json +125 -0
- data/lib/readability_js/node/node_modules/cssstyle/LICENSE +20 -0
- data/lib/readability_js/node/node_modules/cssstyle/README.md +11 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/CSSStyleDeclaration.js +636 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/generated/allProperties.js +653 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/generated/implementedProperties.js +2222 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/generated/properties.js +6951 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/normalize.js +1417 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/parsers.js +535 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/background.js +396 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundAttachment.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundClip.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundColor.js +55 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundImage.js +78 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundOrigin.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundPosition.js +193 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundRepeat.js +89 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/backgroundSize.js +120 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/border.js +164 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottom.js +156 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomColor.js +60 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomStyle.js +59 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderBottomWidth.js +69 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderCollapse.js +50 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderColor.js +116 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeft.js +156 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftColor.js +60 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftStyle.js +59 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderLeftWidth.js +69 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRight.js +156 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightColor.js +60 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightStyle.js +59 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderRightWidth.js +69 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderSpacing.js +62 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderStyle.js +116 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTop.js +156 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopColor.js +60 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopStyle.js +59 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderTopWidth.js +69 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/borderWidth.js +129 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/bottom.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/clear.js +50 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/clip.js +68 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/color.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/display.js +207 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flex.js +176 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexBasis.js +62 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexGrow.js +61 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/flexShrink.js +61 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/float.js +50 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/floodColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/font.js +289 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontFamily.js +94 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontSize.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontStyle.js +63 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontVariant.js +73 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/fontWeight.js +68 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/height.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/left.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/lightingColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/lineHeight.js +66 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/margin.js +95 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginBottom.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginLeft.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginRight.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/marginTop.js +64 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/opacity.js +59 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/outlineColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/padding.js +93 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingBottom.js +65 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingLeft.js +65 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingRight.js +65 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/paddingTop.js +65 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/right.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/stopColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/top.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderAfterColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderBeforeColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderEndColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitBorderStartColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitColumnRuleColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTapHighlightColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextEmphasisColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextFillColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/webkitTextStrokeColor.js +51 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/properties/width.js +58 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/utils/allExtraProperties.js +155 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/utils/camelize.js +37 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/utils/propertyDescriptors.js +19 -0
- data/lib/readability_js/node/node_modules/cssstyle/lib/utils/strings.js +167 -0
- data/lib/readability_js/node/node_modules/cssstyle/package.json +74 -0
- data/lib/readability_js/node/node_modules/data-urls/LICENSE.txt +7 -0
- data/lib/readability_js/node/node_modules/data-urls/README.md +62 -0
- data/lib/readability_js/node/node_modules/data-urls/lib/parser.js +69 -0
- data/lib/readability_js/node/node_modules/data-urls/lib/utils.js +20 -0
- data/lib/readability_js/node/node_modules/data-urls/package.json +52 -0
- data/lib/readability_js/node/node_modules/debug/LICENSE +20 -0
- data/lib/readability_js/node/node_modules/debug/README.md +481 -0
- data/lib/readability_js/node/node_modules/debug/package.json +64 -0
- data/lib/readability_js/node/node_modules/debug/src/browser.js +272 -0
- data/lib/readability_js/node/node_modules/debug/src/common.js +292 -0
- data/lib/readability_js/node/node_modules/debug/src/index.js +10 -0
- data/lib/readability_js/node/node_modules/debug/src/node.js +263 -0
- data/lib/readability_js/node/node_modules/decimal.js/LICENCE.md +23 -0
- data/lib/readability_js/node/node_modules/decimal.js/README.md +246 -0
- data/lib/readability_js/node/node_modules/decimal.js/decimal.d.ts +301 -0
- data/lib/readability_js/node/node_modules/decimal.js/decimal.js +4951 -0
- data/lib/readability_js/node/node_modules/decimal.js/decimal.mjs +4914 -0
- data/lib/readability_js/node/node_modules/decimal.js/package.json +55 -0
- data/lib/readability_js/node/node_modules/entities/LICENSE +11 -0
- data/lib/readability_js/node/node_modules/entities/decode.d.ts +1 -0
- data/lib/readability_js/node/node_modules/entities/decode.js +3 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.d.ts +19 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.js +77 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode-codepoint.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.d.ts +209 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.js +511 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/decode.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.d.ts +22 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.js +73 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/encode.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.d.ts +43 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.js +121 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/escape.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts +2 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.js +10 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-html.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts +2 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.js +10 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/decode-data-xml.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.d.ts +8 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.js +13 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/generated/encode-html.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.d.ts +96 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.js +131 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/commonjs/package.json +3 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.d.ts +19 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.js +72 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode-codepoint.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode.d.ts +209 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode.js +497 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/decode.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/encode.d.ts +22 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/encode.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/encode.js +69 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/encode.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/escape.d.ts +43 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/escape.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/escape.js +117 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/escape.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.d.ts +2 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.js +7 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-html.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts +2 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.js +7 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/decode-data-xml.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.d.ts +8 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.js +10 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/generated/encode-html.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/index.d.ts +96 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/index.js +107 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/entities/dist/esm/package.json +3 -0
- data/lib/readability_js/node/node_modules/entities/escape.d.ts +1 -0
- data/lib/readability_js/node/node_modules/entities/escape.js +3 -0
- data/lib/readability_js/node/node_modules/entities/package.json +118 -0
- data/lib/readability_js/node/node_modules/entities/readme.md +122 -0
- data/lib/readability_js/node/node_modules/entities/src/decode-codepoint.ts +81 -0
- data/lib/readability_js/node/node_modules/entities/src/decode.spec.ts +320 -0
- data/lib/readability_js/node/node_modules/entities/src/decode.ts +620 -0
- data/lib/readability_js/node/node_modules/entities/src/encode.spec.ts +78 -0
- data/lib/readability_js/node/node_modules/entities/src/encode.ts +77 -0
- data/lib/readability_js/node/node_modules/entities/src/escape.spec.ts +14 -0
- data/lib/readability_js/node/node_modules/entities/src/escape.ts +148 -0
- data/lib/readability_js/node/node_modules/entities/src/generated/.eslintrc.json +10 -0
- data/lib/readability_js/node/node_modules/entities/src/generated/decode-data-html.ts +8 -0
- data/lib/readability_js/node/node_modules/entities/src/generated/decode-data-xml.ts +8 -0
- data/lib/readability_js/node/node_modules/entities/src/generated/encode-html.ts +17 -0
- data/lib/readability_js/node/node_modules/entities/src/index.spec.ts +125 -0
- data/lib/readability_js/node/node_modules/entities/src/index.ts +188 -0
- data/lib/readability_js/node/node_modules/html-encoding-sniffer/LICENSE.txt +7 -0
- data/lib/readability_js/node/node_modules/html-encoding-sniffer/README.md +40 -0
- data/lib/readability_js/node/node_modules/html-encoding-sniffer/lib/html-encoding-sniffer.js +295 -0
- data/lib/readability_js/node/node_modules/html-encoding-sniffer/package.json +30 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/LICENSE +22 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/README.md +44 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.d.ts +44 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.js +148 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/dist/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/http-proxy-agent/package.json +47 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/LICENSE +22 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/README.md +70 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.d.ts +47 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.js +180 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts +15 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.js +101 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/dist/parse-proxy-response.js.map +1 -0
- data/lib/readability_js/node/node_modules/https-proxy-agent/package.json +50 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.github/dependabot.yml +11 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/codeStyles/Project.xml +47 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/codeStyles/codeStyleConfig.xml +5 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/iconv-lite.iml +12 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/inspectionProfiles/Project_Default.xml +6 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/modules.xml +8 -0
- data/lib/readability_js/node/node_modules/iconv-lite/.idea/vcs.xml +6 -0
- data/lib/readability_js/node/node_modules/iconv-lite/Changelog.md +212 -0
- data/lib/readability_js/node/node_modules/iconv-lite/LICENSE +21 -0
- data/lib/readability_js/node/node_modules/iconv-lite/README.md +130 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/dbcs-codec.js +597 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/dbcs-data.js +188 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/index.js +23 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/internal.js +198 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-codec.js +72 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-data-generated.js +451 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/sbcs-data.js +179 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/big5-added.json +122 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp936.json +264 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp949.json +273 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/cp950.json +177 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/eucjp.json +182 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +1 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/gbk-added.json +56 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/tables/shiftjis.json +125 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf16.js +197 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf32.js +319 -0
- data/lib/readability_js/node/node_modules/iconv-lite/encodings/utf7.js +290 -0
- data/lib/readability_js/node/node_modules/iconv-lite/lib/bom-handling.js +52 -0
- data/lib/readability_js/node/node_modules/iconv-lite/lib/index.d.ts +41 -0
- data/lib/readability_js/node/node_modules/iconv-lite/lib/index.js +180 -0
- data/lib/readability_js/node/node_modules/iconv-lite/lib/streams.js +109 -0
- data/lib/readability_js/node/node_modules/iconv-lite/package.json +44 -0
- data/lib/readability_js/node/node_modules/is-potential-custom-element-name/LICENSE-MIT.txt +20 -0
- data/lib/readability_js/node/node_modules/is-potential-custom-element-name/README.md +40 -0
- data/lib/readability_js/node/node_modules/is-potential-custom-element-name/index.js +9 -0
- data/lib/readability_js/node/node_modules/is-potential-custom-element-name/package.json +35 -0
- data/lib/readability_js/node/node_modules/jsdom/LICENSE.txt +22 -0
- data/lib/readability_js/node/node_modules/jsdom/README.md +551 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/api.js +335 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/Window.js +1022 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/default-stylesheet.css +415 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/js-globals.json +312 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/not-implemented.js +20 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/html.js +208 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/index.js +37 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/parser/xml.js +202 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/async-resource-queue.js +114 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/no-op-resource-loader.js +8 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/per-document-resource-loader.js +98 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/request-manager.js +33 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/resource-loader.js +142 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/browser/resources/resource-queue.js +142 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/level2/style.js +57 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/level3/xpath.js +1875 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/aborting/AbortController-impl.js +17 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/aborting/AbortSignal-impl.js +131 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes/Attr-impl.js +60 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes/NamedNodeMap-impl.js +78 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/attributes.js +312 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/constraint-validation/DefaultConstraintValidation-impl.js +75 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/constraint-validation/ValidityState-impl.js +66 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/crypto/Crypto-impl.js +68 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/cssom/StyleSheetList-impl.js +38 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/custom-elements/CustomElementRegistry-impl.js +279 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/custom-elements/ElementInternals-impl.js +56 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventAcceleration-impl.js +7 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/deviceorientation/DeviceMotionEventRotationRate-impl.js +7 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/documents.js +15 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/DOMParser-impl.js +59 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/InnerHTML-impl.js +30 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/XMLSerializer-impl.js +18 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/parse5-adapter-serialization.js +63 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/domparsing/serialization.js +36 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/BeforeUnloadEvent-impl.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/BlobEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CloseEvent-impl.js +10 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CompositionEvent-impl.js +20 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/CustomEvent-impl.js +21 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/DeviceMotionEvent-impl.js +49 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/DeviceOrientationEvent-impl.js +10 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/ErrorEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/Event-impl.js +195 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/EventModifierMixin-impl.js +24 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/EventTarget-impl.js +438 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/FocusEvent-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/HashChangeEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/InputEvent-impl.js +11 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/KeyboardEvent-impl.js +29 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/MessageEvent-impl.js +25 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/MouseEvent-impl.js +72 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PageTransitionEvent-impl.js +20 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PointerEvent-impl.js +21 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PopStateEvent-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/ProgressEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/PromiseRejectionEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/StorageEvent-impl.js +26 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/SubmitEvent-impl.js +13 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/TouchEvent-impl.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/TransitionEvent-impl.js +10 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/UIEvent-impl.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/events/WheelEvent-impl.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/Headers-impl.js +172 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/header-list.js +65 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/fetch/header-types.js +103 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/Blob-impl.js +93 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/File-impl.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/FileList-impl.js +15 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/file-api/FileReader-impl.js +130 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbortController.js +143 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbortSignal.js +249 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AbstractRange.js +171 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AddEventListenerOptions.js +53 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/AssignedNodesOptions.js +28 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Attr.js +217 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BarProp.js +117 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BeforeUnloadEvent.js +139 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BinaryType.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Blob.js +211 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobCallback.js +30 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobEvent.js +157 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobEventInit.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/BlobPropertyBag.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CDATASection.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CanPlayTypeResult.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CharacterData.js +453 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CloseEvent.js +168 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CloseEventInit.js +65 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Comment.js +120 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CompositionEvent.js +219 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CompositionEventInit.js +32 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Crypto.js +148 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomElementConstructor.js +34 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomElementRegistry.js +267 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomEvent.js +206 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/CustomEventInit.js +32 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMException.js +222 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMImplementation.js +237 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMParser.js +140 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRect.js +276 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRectInit.js +76 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMRectReadOnly.js +285 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMStringMap.js +297 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DOMTokenList.js +537 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEvent.js +183 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventAcceleration.js +145 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventAccelerationInit.js +61 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventInit.js +70 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventRotationRate.js +145 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceMotionEventRotationRateInit.js +61 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceOrientationEvent.js +183 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DeviceOrientationEventInit.js +80 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Document.js +4509 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentFragment.js +334 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentReadyState.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/DocumentType.js +252 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Element.js +3718 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementCreationOptions.js +26 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementDefinitionOptions.js +29 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ElementInternals.js +2150 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EndingType.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ErrorEvent.js +192 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ErrorEventInit.js +92 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Event.js +430 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventHandlerNonNull.js +36 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventInit.js +58 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventListener.js +35 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventListenerOptions.js +28 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventModifierInit.js +221 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/EventTarget.js +259 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/External.js +130 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/File.js +185 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FileList.js +298 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FilePropertyBag.js +33 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FileReader.js +468 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FocusEvent.js +144 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FocusEventInit.js +36 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/FormData.js +468 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Function.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/GetRootNodeOptions.js +31 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAnchorElement.js +1023 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAreaElement.js +822 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLAudioElement.js +110 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBRElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBaseElement.js +193 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLBodyElement.js +877 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLButtonElement.js +522 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLCanvasElement.js +304 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLCollection.js +352 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDListElement.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDataListElement.js +125 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDetailsElement.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDialogElement.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDirectoryElement.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLDivElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLElement.js +3489 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLEmbedElement.js +378 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFieldSetElement.js +329 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFontElement.js +236 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormControlsCollection.js +318 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFormElement.js +658 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameElement.js +510 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLFrameSetElement.js +708 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHRElement.js +320 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadElement.js +110 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHeadingElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLHtmlElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLIFrameElement.js +686 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLImageElement.js +902 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLInputElement.js +1927 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLIElement.js +201 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLabelElement.js +179 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLegendElement.js +166 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLLinkElement.js +552 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMapElement.js +168 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMarqueeElement.js +554 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMediaElement.js +898 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMenuElement.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMetaElement.js +276 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLMeterElement.js +365 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLModElement.js +214 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOListElement.js +281 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLObjectElement.js +941 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptGroupElement.js +197 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionElement.js +376 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOptionsCollection.js +511 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLOutputElement.js +392 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLParagraphElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLParamElement.js +276 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLPictureElement.js +110 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLPreElement.js +160 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLProgressElement.js +228 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLQuoteElement.js +173 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLScriptElement.js +469 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSelectElement.js +989 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSlotElement.js +192 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSourceElement.js +337 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLSpanElement.js +110 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLStyleElement.js +207 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCaptionElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableCellElement.js +729 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableColElement.js +372 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableElement.js +799 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableRowElement.js +414 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTableSectionElement.js +346 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTemplateElement.js +123 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTextAreaElement.js +1206 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTimeElement.js +153 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTitleElement.js +152 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLTrackElement.js +363 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLUListElement.js +197 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLUnknownElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HTMLVideoElement.js +340 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEvent.js +157 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/HashChangeEventInit.js +50 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Headers.js +418 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/History.js +266 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/InputEvent.js +168 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/InputEventInit.js +68 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEvent.js +445 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/KeyboardEventInit.js +116 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Location.js +404 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MessageEvent.js +317 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MessageEventInit.js +100 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MimeType.js +156 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MimeTypeArray.js +326 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MouseEvent.js +595 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MouseEventInit.js +189 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationCallback.js +34 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationObserver.js +178 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationObserverInit.js +121 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/MutationRecord.js +229 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NamedNodeMap.js +527 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Navigator.js +326 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Node.js +763 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeFilter.js +75 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeIterator.js +207 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/NodeList.js +302 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/OnBeforeUnloadEventHandlerNonNull.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/OnErrorEventHandlerNonNull.js +56 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEvent.js +144 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PageTransitionEventInit.js +35 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Performance.js +142 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Plugin.js +359 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PluginArray.js +336 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PointerEvent.js +324 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PointerEventInit.js +241 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PopStateEvent.js +144 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PopStateEventInit.js +32 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProcessingInstruction.js +122 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProgressEvent.js +170 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ProgressEventInit.js +65 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PromiseRejectionEvent.js +157 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/PromiseRejectionEventInit.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/RadioNodeList.js +296 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Range.js +641 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedPreserveAspectRatio.js +136 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedRect.js +136 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGAnimatedString.js +149 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGBoundingBoxOptions.js +64 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGDefsElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGDescElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGElement.js +3155 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGGElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGGraphicsElement.js +139 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGMetadataElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGNumber.js +132 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGPreserveAspectRatio.js +196 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGRect.js +210 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSVGElement.js +786 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGStringList.js +511 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSwitchElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGSymbolElement.js +146 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SVGTitleElement.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Screen.js +180 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollBehavior.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollIntoViewOptions.js +45 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollLogicalPosition.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollOptions.js +30 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ScrollRestoration.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Selection.js +569 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SelectionMode.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRoot.js +187 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootInit.js +30 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ShadowRootMode.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StaticRange.js +123 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StaticRangeInit.js +72 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Storage.js +397 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StorageEvent.js +318 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StorageEventInit.js +99 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/StyleSheetList.js +300 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SubmitEvent.js +144 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SubmitEventInit.js +36 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/SupportedType.js +18 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/Text.js +170 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TextTrackKind.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TouchEvent.js +222 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TouchEventInit.js +89 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TransitionEvent.js +170 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TransitionEventInit.js +65 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/TreeWalker.js +255 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/UIEvent.js +235 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/UIEventInit.js +62 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/ValidityState.js +249 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/VisibilityState.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/VoidFunction.js +26 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WebSocket.js +480 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WheelEvent.js +191 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/WheelEventInit.js +71 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLDocument.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequest.js +663 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestEventTarget.js +334 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestResponseType.js +14 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLHttpRequestUpload.js +109 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/XMLSerializer.js +132 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/generated/utils.js +252 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/geometry/DOMRect-impl.js +39 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/geometry/DOMRectReadOnly-impl.js +72 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/agent-factory.js +13 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/binary-data.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/colors.js +245 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/create-element.js +329 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/create-event-accessor.js +188 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/custom-elements.js +272 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/dates-and-times.js +270 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/details.js +15 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/events.js +24 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/focusing.js +104 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/form-controls.js +309 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/html-constructor.js +78 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/http-request.js +266 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/internal-constants.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/is-window.js +18 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/iterable-weak-set.js +48 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/json.js +12 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/mutation-observers.js +198 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/namespaces.js +16 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/node.js +68 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/number-and-date-inputs.js +195 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/ordered-set.js +104 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/page-transition-event.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/runtime-script-errors.js +75 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/shadow-dom.js +285 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/strings.js +162 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/style-rules.js +319 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/stylesheets.js +129 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/svg/basic-types.js +41 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/svg/render.js +46 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/system-colors.js +147 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/text.js +19 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/traversal.js +72 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/helpers/validate-names.js +65 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/hr-time/Performance-impl.js +22 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/interfaces.js +249 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationObserver-impl.js +95 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/mutation-observer/MutationRecord-impl.js +37 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/MimeType-impl.js +3 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/MimeTypeArray-impl.js +21 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/Navigator-impl.js +29 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorConcurrentHardware-impl.js +8 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorCookies-impl.js +7 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorID-impl.js +37 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorLanguage-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorOnLine-impl.js +7 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/NavigatorPlugins-impl.js +8 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/Plugin-impl.js +3 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/navigator/PluginArray-impl.js +23 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node-document-position.js +10 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node-type.js +16 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/node.js +331 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/CDATASection-impl.js +16 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/CharacterData-impl.js +118 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ChildNode-impl.js +80 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Comment-impl.js +20 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMImplementation-impl.js +120 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMStringMap-impl.js +64 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DOMTokenList-impl.js +171 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Document-impl.js +1014 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentFragment-impl.js +44 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentOrShadowRoot-impl.js +28 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/DocumentType-impl.js +24 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Element-impl.js +608 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ElementCSSInlineStyle-impl.js +22 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ElementContentEditable-impl.js +7 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/GlobalEventHandlers-impl.js +157 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAnchorElement-impl.js +50 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAreaElement-impl.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLAudioElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBRElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBaseElement-impl.js +44 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLBodyElement-impl.js +17 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLButtonElement-impl.js +79 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCanvasElement-impl.js +136 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLCollection-impl.js +96 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDListElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDataListElement-impl.js +20 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDetailsElement-impl.js +35 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDialogElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDirectoryElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLDivElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLElement-impl.js +211 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLEmbedElement-impl.js +8 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFieldSetElement-impl.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFontElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormControlsCollection-impl.js +33 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFormElement-impl.js +248 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameElement-impl.js +266 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLFrameSetElement-impl.js +17 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHRElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHeadingElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHtmlElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLHyperlinkElementUtils-impl.js +366 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLIFrameElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLImageElement-impl.js +131 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLInputElement-impl.js +1097 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLIElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLabelElement-impl.js +94 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLegendElement-impl.js +18 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLLinkElement-impl.js +107 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMapElement-impl.js +13 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMarqueeElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMediaElement-impl.js +138 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMenuElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMetaElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLMeterElement-impl.js +180 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLModElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOListElement-impl.js +22 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLObjectElement-impl.js +26 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptGroupElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionElement-impl.js +146 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOptionsCollection-impl.js +110 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOrSVGElement-impl.js +88 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLOutputElement-impl.js +88 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParagraphElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLParamElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPictureElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLPreElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLProgressElement-impl.js +72 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLQuoteElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLScriptElement-impl.js +261 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSelectElement-impl.js +283 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSlotElement-impl.js +59 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSourceElement-impl.js +8 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLSpanElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLStyleElement-impl.js +73 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCaptionElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableCellElement-impl.js +73 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableColElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableElement-impl.js +236 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableRowElement-impl.js +88 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTableSectionElement-impl.js +61 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTemplateElement-impl.js +67 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTextAreaElement-impl.js +244 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTimeElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTitleElement-impl.js +18 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLTrackElement-impl.js +13 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUListElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLUnknownElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/HTMLVideoElement-impl.js +17 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/LinkStyle-impl.js +2 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Node-impl.js +1160 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NodeList-impl.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NonDocumentTypeChildNode-impl.js +28 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/NonElementParentNode-impl.js +11 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ParentNode-impl.js +90 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ProcessingInstruction-impl.js +22 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/RadioNodeList-impl.js +49 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGDefsElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGDescElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGElement-impl.js +64 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGGElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGGraphicsElement-impl.js +16 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGMetadataElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSVGElement-impl.js +47 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSwitchElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGSymbolElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGTests-impl.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/SVGTitleElement-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/ShadowRoot-impl.js +41 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Slotable-impl.js +48 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/Text-impl.js +96 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/WindowEventHandlers-impl.js +52 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/nodes/XMLDocument-impl.js +4 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/AbstractRange-impl.js +43 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/Range-impl.js +897 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/StaticRange-impl.js +39 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/range/boundary-point.js +47 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/selection/Selection-impl.js +358 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedPreserveAspectRatio-impl.js +24 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedRect-impl.js +122 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGAnimatedString-impl.js +42 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGListBase.js +195 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGNumber-impl.js +48 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGPreserveAspectRatio-impl.js +100 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGRect-impl.js +143 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/svg/SVGStringList-impl.js +16 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/NodeIterator-impl.js +107 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/TreeWalker-impl.js +217 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/traversal/helpers.js +44 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/webidl/DOMException-impl.js +46 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/websockets/WebSocket-impl.js +328 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/webstorage/Storage-impl.js +102 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/BarProp-impl.js +10 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/External-impl.js +9 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/History-impl.js +148 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/Location-impl.js +227 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/Screen-impl.js +13 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/SessionHistory.js +163 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window/navigation.js +85 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/window-properties.js +241 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/FormData-impl.js +191 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequest-impl.js +1005 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestEventTarget-impl.js +17 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/XMLHttpRequestUpload-impl.js +4 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/multipart-form-data.js +105 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/xhr-sync-worker.js +59 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/living/xhr/xhr-utils.js +410 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/utils.js +105 -0
- data/lib/readability_js/node/node_modules/jsdom/lib/jsdom/virtual-console.js +46 -0
- data/lib/readability_js/node/node_modules/jsdom/package.json +93 -0
- data/lib/readability_js/node/node_modules/lru-cache/LICENSE +15 -0
- data/lib/readability_js/node/node_modules/lru-cache/README.md +338 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.d.ts +1322 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.js +1568 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.min.js +2 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/index.min.js.map +7 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/commonjs/package.json +3 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.d.ts +1322 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.d.ts.map +1 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.js +1564 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.min.js +2 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/index.min.js.map +7 -0
- data/lib/readability_js/node/node_modules/lru-cache/dist/esm/package.json +3 -0
- data/lib/readability_js/node/node_modules/lru-cache/package.json +113 -0
- data/lib/readability_js/node/node_modules/mdn-data/LICENSE +116 -0
- data/lib/readability_js/node/node_modules/mdn-data/README.md +59 -0
- data/lib/readability_js/node/node_modules/mdn-data/api/index.js +3 -0
- data/lib/readability_js/node/node_modules/mdn-data/api/inheritance.json +2681 -0
- data/lib/readability_js/node/node_modules/mdn-data/api/inheritance.schema.json +31 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/at-rules.json +504 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/at-rules.schema.json +131 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/definitions.json +80 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/functions.json +593 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/functions.schema.json +45 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/index.js +9 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/properties.json +10806 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/properties.schema.json +449 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/selectors.json +1071 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/selectors.schema.json +36 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/syntaxes.json +899 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/syntaxes.schema.json +15 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/types.json +287 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/types.schema.json +32 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/units.json +213 -0
- data/lib/readability_js/node/node_modules/mdn-data/css/units.schema.json +28 -0
- data/lib/readability_js/node/node_modules/mdn-data/index.js +5 -0
- data/lib/readability_js/node/node_modules/mdn-data/l10n/css.json +1876 -0
- data/lib/readability_js/node/node_modules/mdn-data/l10n/index.js +3 -0
- data/lib/readability_js/node/node_modules/mdn-data/package.json +38 -0
- data/lib/readability_js/node/node_modules/ms/index.js +162 -0
- data/lib/readability_js/node/node_modules/ms/license.md +21 -0
- data/lib/readability_js/node/node_modules/ms/package.json +38 -0
- data/lib/readability_js/node/node_modules/ms/readme.md +59 -0
- data/lib/readability_js/node/node_modules/parse5/LICENSE +19 -0
- data/lib/readability_js/node/node_modules/parse5/README.md +38 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/doctype.d.ts +4 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/doctype.js +114 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/error-codes.d.ts +67 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/error-codes.js +63 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/foreign-content.d.ts +9 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/foreign-content.js +228 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/html.d.ts +289 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/html.js +523 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/token.d.ts +84 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/token.js +20 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/unicode.d.ts +42 -0
- data/lib/readability_js/node/node_modules/parse5/dist/common/unicode.js +62 -0
- data/lib/readability_js/node/node_modules/parse5/dist/index.d.ts +71 -0
- data/lib/readability_js/node/node_modules/parse5/dist/index.js +42 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/formatting-element-list.d.ts +36 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/formatting-element-list.js +110 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/index.d.ts +221 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/index.js +3245 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/open-element-stack.d.ts +53 -0
- data/lib/readability_js/node/node_modules/parse5/dist/parser/open-element-stack.js +324 -0
- data/lib/readability_js/node/node_modules/parse5/dist/serializer/index.d.ts +60 -0
- data/lib/readability_js/node/node_modules/parse5/dist/serializer/index.js +168 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/index.d.ts +247 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/index.js +2710 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/preprocessor.d.ts +36 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tokenizer/preprocessor.js +196 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/default.d.ts +84 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/default.js +173 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/interface.d.ts +255 -0
- data/lib/readability_js/node/node_modules/parse5/dist/tree-adapters/interface.js +1 -0
- data/lib/readability_js/node/node_modules/parse5/package.json +48 -0
- data/lib/readability_js/node/node_modules/punycode/LICENSE-MIT.txt +20 -0
- data/lib/readability_js/node/node_modules/punycode/README.md +148 -0
- data/lib/readability_js/node/node_modules/punycode/package.json +58 -0
- data/lib/readability_js/node/node_modules/punycode/punycode.es6.js +444 -0
- data/lib/readability_js/node/node_modules/punycode/punycode.js +443 -0
- data/lib/readability_js/node/node_modules/require-from-string/index.js +34 -0
- data/lib/readability_js/node/node_modules/require-from-string/license +21 -0
- data/lib/readability_js/node/node_modules/require-from-string/package.json +28 -0
- data/lib/readability_js/node/node_modules/require-from-string/readme.md +56 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/LICENSE.txt +20 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/README.mdown +74 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/build/CSSOM.js +1995 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSConditionRule.js +25 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSContainerRule.js +50 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSDocumentRule.js +39 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSFontFaceRule.js +36 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSGroupingRule.js +69 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSHostRule.js +37 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSImportRule.js +132 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSKeyframeRule.js +37 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSKeyframesRule.js +39 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSLayerBlockRule.js +48 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSMediaRule.js +53 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSOM.js +3 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSRule.js +42 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStartingStyleRule.js +37 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleDeclaration.js +148 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleRule.js +190 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSStyleSheet.js +88 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSSupportsRule.js +36 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSValue.js +43 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/CSSValueExpression.js +344 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/MatcherList.js +62 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/MediaList.js +61 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/StyleSheet.js +17 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/clone.js +80 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/index.js +26 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/lib/parse.js +525 -0
- data/lib/readability_js/node/node_modules/rrweb-cssom/package.json +27 -0
- data/lib/readability_js/node/node_modules/safer-buffer/LICENSE +21 -0
- data/lib/readability_js/node/node_modules/safer-buffer/Porting-Buffer.md +268 -0
- data/lib/readability_js/node/node_modules/safer-buffer/Readme.md +156 -0
- data/lib/readability_js/node/node_modules/safer-buffer/dangerous.js +58 -0
- data/lib/readability_js/node/node_modules/safer-buffer/package.json +34 -0
- data/lib/readability_js/node/node_modules/safer-buffer/safer.js +77 -0
- data/lib/readability_js/node/node_modules/safer-buffer/tests.js +406 -0
- data/lib/readability_js/node/node_modules/saxes/README.md +323 -0
- data/lib/readability_js/node/node_modules/saxes/package.json +71 -0
- data/lib/readability_js/node/node_modules/saxes/saxes.d.ts +635 -0
- data/lib/readability_js/node/node_modules/saxes/saxes.js +2053 -0
- data/lib/readability_js/node/node_modules/saxes/saxes.js.map +1 -0
- data/lib/readability_js/node/node_modules/source-map-js/LICENSE +28 -0
- data/lib/readability_js/node/node_modules/source-map-js/README.md +765 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/array-set.js +121 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/base64-vlq.js +140 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/base64.js +67 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/binary-search.js +111 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/mapping-list.js +79 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/quick-sort.js +132 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-consumer.d.ts +1 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-consumer.js +1188 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-generator.d.ts +1 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-map-generator.js +444 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-node.d.ts +1 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/source-node.js +413 -0
- data/lib/readability_js/node/node_modules/source-map-js/lib/util.js +594 -0
- data/lib/readability_js/node/node_modules/source-map-js/package.json +71 -0
- data/lib/readability_js/node/node_modules/source-map-js/source-map.d.ts +104 -0
- data/lib/readability_js/node/node_modules/source-map-js/source-map.js +8 -0
- data/lib/readability_js/node/node_modules/symbol-tree/LICENSE +21 -0
- data/lib/readability_js/node/node_modules/symbol-tree/README.md +545 -0
- data/lib/readability_js/node/node_modules/symbol-tree/lib/SymbolTree.js +838 -0
- data/lib/readability_js/node/node_modules/symbol-tree/lib/SymbolTreeNode.js +54 -0
- data/lib/readability_js/node/node_modules/symbol-tree/lib/TreeIterator.js +69 -0
- data/lib/readability_js/node/node_modules/symbol-tree/lib/TreePosition.js +11 -0
- data/lib/readability_js/node/node_modules/symbol-tree/package.json +47 -0
- data/lib/readability_js/node/node_modules/tldts/LICENSE +13 -0
- data/lib/readability_js/node/node_modules/tldts/README.md +327 -0
- data/lib/readability_js/node/node_modules/tldts/bin/cli.js +21 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/index.js +669 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/data/trie.js +14 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/data/trie.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/suffix-trie.js +67 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/src/suffix-trie.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/cjs/tsconfig.tsbuildinfo +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/index.js +33 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/src/data/trie.js +11 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/src/data/trie.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/src/suffix-trie.js +64 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/src/suffix-trie.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.cjs.min.js +2 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.cjs.min.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.esm.min.js +2 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.esm.min.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.umd.min.js +2 -0
- data/lib/readability_js/node/node_modules/tldts/dist/index.umd.min.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts/dist/types/index.d.ts +7 -0
- data/lib/readability_js/node/node_modules/tldts/dist/types/src/data/trie.d.ts +5 -0
- data/lib/readability_js/node/node_modules/tldts/dist/types/src/suffix-trie.d.ts +5 -0
- data/lib/readability_js/node/node_modules/tldts/index.ts +62 -0
- data/lib/readability_js/node/node_modules/tldts/package.json +91 -0
- data/lib/readability_js/node/node_modules/tldts/src/data/trie.ts +14 -0
- data/lib/readability_js/node/node_modules/tldts/src/suffix-trie.ts +110 -0
- data/lib/readability_js/node/node_modules/tldts-core/LICENSE +13 -0
- data/lib/readability_js/node/node_modules/tldts-core/README.md +3 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/index.js +564 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js +15 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain-without-suffix.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain.js +83 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/domain.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/extract-hostname.js +149 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/extract-hostname.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/factory.js +107 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/factory.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-ip.js +72 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-ip.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-valid.js +69 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/is-valid.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js +69 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/fast-path.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/interface.js +3 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/lookup/interface.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/options.js +22 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/options.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/subdomain.js +14 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/src/subdomain.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/cjs/tsconfig.tsbuildinfo +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/index.js +4 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js +12 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain-without-suffix.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain.js +80 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/domain.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/extract-hostname.js +146 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/extract-hostname.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/factory.js +102 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/factory.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-ip.js +69 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-ip.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-valid.js +66 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/is-valid.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js +66 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/fast-path.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/interface.js +2 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/lookup/interface.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/options.js +19 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/options.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/subdomain.js +11 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/src/subdomain.js.map +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/es6/tsconfig.bundle.tsbuildinfo +1 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/index.d.ts +4 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/domain-without-suffix.d.ts +6 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/domain.d.ts +5 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/extract-hostname.d.ts +5 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/factory.d.ts +28 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/is-ip.d.ts +6 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/is-valid.d.ts +15 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/lookup/fast-path.d.ts +2 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/lookup/interface.d.ts +9 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/options.d.ts +10 -0
- data/lib/readability_js/node/node_modules/tldts-core/dist/types/src/subdomain.d.ts +4 -0
- data/lib/readability_js/node/node_modules/tldts-core/index.ts +10 -0
- data/lib/readability_js/node/node_modules/tldts-core/package.json +68 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/domain-without-suffix.ts +14 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/domain.ts +100 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/extract-hostname.ts +170 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/factory.ts +163 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/is-ip.ts +87 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/is-valid.ts +79 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/lookup/fast-path.ts +80 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/lookup/interface.ts +10 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/options.ts +39 -0
- data/lib/readability_js/node/node_modules/tldts-core/src/subdomain.ts +11 -0
- data/lib/readability_js/node/node_modules/tough-cookie/LICENSE +12 -0
- data/lib/readability_js/node/node_modules/tough-cookie/README.md +195 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.cjs +2313 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.cjs.map +1 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.d.cts +1879 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.d.ts +1879 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.js +2268 -0
- data/lib/readability_js/node/node_modules/tough-cookie/dist/index.js.map +1 -0
- data/lib/readability_js/node/node_modules/tough-cookie/node_modules/.bin/tldts +1 -0
- data/lib/readability_js/node/node_modules/tough-cookie/package.json +149 -0
- data/lib/readability_js/node/node_modules/tr46/LICENSE.md +21 -0
- data/lib/readability_js/node/node_modules/tr46/README.md +76 -0
- data/lib/readability_js/node/node_modules/tr46/index.js +344 -0
- data/lib/readability_js/node/node_modules/tr46/lib/mappingTable.json +1 -0
- data/lib/readability_js/node/node_modules/tr46/lib/regexes.js +29 -0
- data/lib/readability_js/node/node_modules/tr46/lib/statusMapping.js +9 -0
- data/lib/readability_js/node/node_modules/tr46/package.json +47 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/LICENSE.md +25 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/README.md +41 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/attributes.js +125 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/constants.js +44 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/lib/serialize.js +365 -0
- data/lib/readability_js/node/node_modules/w3c-xmlserializer/package.json +32 -0
- data/lib/readability_js/node/node_modules/webidl-conversions/LICENSE.md +12 -0
- data/lib/readability_js/node/node_modules/webidl-conversions/README.md +99 -0
- data/lib/readability_js/node/node_modules/webidl-conversions/lib/index.js +462 -0
- data/lib/readability_js/node/node_modules/webidl-conversions/package.json +34 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/LICENSE.txt +7 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/README.md +50 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/lib/labels-to-names.json +217 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/lib/supported-names.json +38 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/lib/whatwg-encoding.js +60 -0
- data/lib/readability_js/node/node_modules/whatwg-encoding/package.json +32 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/LICENSE.txt +7 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/README.md +101 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/mime-type-parameters.js +70 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/mime-type.js +127 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/parser.js +105 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/serializer.js +25 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/lib/utils.js +60 -0
- data/lib/readability_js/node/node_modules/whatwg-mimetype/package.json +45 -0
- data/lib/readability_js/node/node_modules/whatwg-url/LICENSE.txt +21 -0
- data/lib/readability_js/node/node_modules/whatwg-url/README.md +106 -0
- data/lib/readability_js/node/node_modules/whatwg-url/index.js +27 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/Function.js +42 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/URL-impl.js +233 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/URL.js +499 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/URLSearchParams-impl.js +135 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/URLSearchParams.js +505 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/VoidFunction.js +26 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/encoding.js +16 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/infra.js +26 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/percent-encoding.js +142 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/url-state-machine.js +1277 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/urlencoded.js +89 -0
- data/lib/readability_js/node/node_modules/whatwg-url/lib/utils.js +240 -0
- data/lib/readability_js/node/node_modules/whatwg-url/package.json +56 -0
- data/lib/readability_js/node/node_modules/whatwg-url/webidl2js-wrapper.js +7 -0
- data/lib/readability_js/node/node_modules/ws/LICENSE +20 -0
- data/lib/readability_js/node/node_modules/ws/README.md +548 -0
- data/lib/readability_js/node/node_modules/ws/browser.js +8 -0
- data/lib/readability_js/node/node_modules/ws/index.js +13 -0
- data/lib/readability_js/node/node_modules/ws/lib/buffer-util.js +131 -0
- data/lib/readability_js/node/node_modules/ws/lib/constants.js +18 -0
- data/lib/readability_js/node/node_modules/ws/lib/event-target.js +292 -0
- data/lib/readability_js/node/node_modules/ws/lib/extension.js +203 -0
- data/lib/readability_js/node/node_modules/ws/lib/limiter.js +55 -0
- data/lib/readability_js/node/node_modules/ws/lib/permessage-deflate.js +528 -0
- data/lib/readability_js/node/node_modules/ws/lib/receiver.js +706 -0
- data/lib/readability_js/node/node_modules/ws/lib/sender.js +602 -0
- data/lib/readability_js/node/node_modules/ws/lib/stream.js +161 -0
- data/lib/readability_js/node/node_modules/ws/lib/subprotocol.js +62 -0
- data/lib/readability_js/node/node_modules/ws/lib/validation.js +152 -0
- data/lib/readability_js/node/node_modules/ws/lib/websocket-server.js +550 -0
- data/lib/readability_js/node/node_modules/ws/lib/websocket.js +1388 -0
- data/lib/readability_js/node/node_modules/ws/package.json +69 -0
- data/lib/readability_js/node/node_modules/ws/wrapper.mjs +8 -0
- data/lib/readability_js/node/node_modules/xml-name-validator/LICENSE.txt +176 -0
- data/lib/readability_js/node/node_modules/xml-name-validator/README.md +35 -0
- data/lib/readability_js/node/node_modules/xml-name-validator/lib/xml-name-validator.js +9 -0
- data/lib/readability_js/node/node_modules/xml-name-validator/package.json +30 -0
- data/lib/readability_js/node/node_modules/xmlchars/LICENSE +18 -0
- data/lib/readability_js/node/node_modules/xmlchars/README.md +33 -0
- data/lib/readability_js/node/node_modules/xmlchars/package.json +51 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.d.ts +31 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.js +44 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed4.js.map +1 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.d.ts +51 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.js +105 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.0/ed5.js.map +1 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.d.ts +73 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.js +145 -0
- data/lib/readability_js/node/node_modules/xmlchars/xml/1.1/ed2.js.map +1 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlchars.d.ts +170 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlchars.js +191 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlchars.js.map +1 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.d.ts +28 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.js +65 -0
- data/lib/readability_js/node/node_modules/xmlchars/xmlns/1.0/ed3.js.map +1 -0
- data/lib/readability_js/node/package.json +9 -0
- data/lib/readability_js/node/readability-example.js +10 -0
- data/lib/readability_js/node/yarn.lock +315 -0
- data/lib/readability_js/nodo.rb +67 -0
- data/lib/readability_js/version.rb +3 -0
- data/lib/readability_js.rb +207 -0
- data/readability_js.gemspec +47 -0
- metadata +1775 -0
data/lib/readability_js/node/node_modules/@asamuzakjp/css-color/dist/browser/css-color.min.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"css-color.min.js","sources":["../../node_modules/.pnpm/@csstools+css-tokenizer@3.0.4/node_modules/@csstools/css-tokenizer/dist/index.mjs","../../node_modules/.pnpm/@csstools+css-parser-algori_f97be086dec1114cf77bb1341d3f2991/node_modules/@csstools/css-parser-algorithms/dist/index.mjs","../../node_modules/.pnpm/@csstools+css-calc@2.1.4_@c_e8d5cb57048a11d39451107410ea18b6/node_modules/@csstools/css-calc/dist/index.mjs","../../node_modules/.pnpm/lru-cache@11.2.1/node_modules/lru-cache/dist/esm/index.js","../../src/js/common.ts","../../src/js/constant.ts","../../src/js/color.ts","../../src/js/css-var.ts","../../node_modules/.pnpm/@csstools+color-helpers@5.1.0/node_modules/@csstools/color-helpers/dist/index.mjs","../../node_modules/.pnpm/@csstools+css-color-parser@_ac3eaa9e6357e2e6fe2577d663b974a1/node_modules/@csstools/css-color-parser/dist/index.mjs","../../src/js/relative-color.ts","../../src/js/resolve.ts","../../src/js/util.ts","../../src/js/cache.ts","../../src/js/css-calc.ts","../../src/js/css-gradient.ts","../../src/js/convert.ts","../../src/index.ts"],"sourcesContent":["class ParseError extends Error{sourceStart;sourceEnd;parserState;constructor(e,n,t,o){super(e),this.name=\"ParseError\",this.sourceStart=n,this.sourceEnd=t,this.parserState=o}}class ParseErrorWithToken extends ParseError{token;constructor(e,n,t,o,r){super(e,n,t,o),this.token=r}}const e={UnexpectedNewLineInString:\"Unexpected newline while consuming a string token.\",UnexpectedEOFInString:\"Unexpected EOF while consuming a string token.\",UnexpectedEOFInComment:\"Unexpected EOF while consuming a comment.\",UnexpectedEOFInURL:\"Unexpected EOF while consuming a url token.\",UnexpectedEOFInEscapedCodePoint:\"Unexpected EOF while consuming an escaped code point.\",UnexpectedCharacterInURL:\"Unexpected character while consuming a url token.\",InvalidEscapeSequenceInURL:\"Invalid escape sequence while consuming a url token.\",InvalidEscapeSequenceAfterBackslash:'Invalid escape sequence after \"\\\\\"'},n=\"undefined\"!=typeof globalThis&&\"structuredClone\"in globalThis;function cloneTokens(e){return n?structuredClone(e):JSON.parse(JSON.stringify(e))}function stringify(...e){let n=\"\";for(let t=0;t<e.length;t++)n+=e[t][1];return n}const t=13,o=45,r=10,i=43,s=65533;function checkIfFourCodePointsWouldStartCDO(e){return 60===e.source.codePointAt(e.cursor)&&33===e.source.codePointAt(e.cursor+1)&&e.source.codePointAt(e.cursor+2)===o&&e.source.codePointAt(e.cursor+3)===o}function isDigitCodePoint(e){return e>=48&&e<=57}function isUppercaseLetterCodePoint(e){return e>=65&&e<=90}function isLowercaseLetterCodePoint(e){return e>=97&&e<=122}function isHexDigitCodePoint(e){return e>=48&&e<=57||e>=97&&e<=102||e>=65&&e<=70}function isLetterCodePoint(e){return isLowercaseLetterCodePoint(e)||isUppercaseLetterCodePoint(e)}function isIdentStartCodePoint(e){return isLetterCodePoint(e)||isNonASCII_IdentCodePoint(e)||95===e}function isIdentCodePoint(e){return isIdentStartCodePoint(e)||isDigitCodePoint(e)||e===o}function isNonASCII_IdentCodePoint(e){return 183===e||8204===e||8205===e||8255===e||8256===e||8204===e||(192<=e&&e<=214||216<=e&&e<=246||248<=e&&e<=893||895<=e&&e<=8191||8304<=e&&e<=8591||11264<=e&&e<=12271||12289<=e&&e<=55295||63744<=e&&e<=64975||65008<=e&&e<=65533||(0===e||(!!isSurrogate(e)||e>=65536)))}function isNewLine(e){return e===r||e===t||12===e}function isWhitespace(e){return 32===e||e===r||9===e||e===t||12===e}function isSurrogate(e){return e>=55296&&e<=57343}function checkIfTwoCodePointsAreAValidEscape(e){return 92===e.source.codePointAt(e.cursor)&&!isNewLine(e.source.codePointAt(e.cursor+1)??-1)}function checkIfThreeCodePointsWouldStartAnIdentSequence(e,n){return n.source.codePointAt(n.cursor)===o?n.source.codePointAt(n.cursor+1)===o||(!!isIdentStartCodePoint(n.source.codePointAt(n.cursor+1)??-1)||92===n.source.codePointAt(n.cursor+1)&&!isNewLine(n.source.codePointAt(n.cursor+2)??-1)):!!isIdentStartCodePoint(n.source.codePointAt(n.cursor)??-1)||checkIfTwoCodePointsAreAValidEscape(n)}function checkIfThreeCodePointsWouldStartANumber(e){return e.source.codePointAt(e.cursor)===i||e.source.codePointAt(e.cursor)===o?!!isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1)||46===e.source.codePointAt(e.cursor+1)&&isDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1):46===e.source.codePointAt(e.cursor)?isDigitCodePoint(e.source.codePointAt(e.cursor+1)??-1):isDigitCodePoint(e.source.codePointAt(e.cursor)??-1)}function checkIfTwoCodePointsStartAComment(e){return 47===e.source.codePointAt(e.cursor)&&42===e.source.codePointAt(e.cursor+1)}function checkIfThreeCodePointsWouldStartCDC(e){return e.source.codePointAt(e.cursor)===o&&e.source.codePointAt(e.cursor+1)===o&&62===e.source.codePointAt(e.cursor+2)}var c,a,u;function mirrorVariantType(e){switch(e){case c.OpenParen:return c.CloseParen;case c.CloseParen:return c.OpenParen;case c.OpenCurly:return c.CloseCurly;case c.CloseCurly:return c.OpenCurly;case c.OpenSquare:return c.CloseSquare;case c.CloseSquare:return c.OpenSquare;default:return null}}function mirrorVariant(e){switch(e[0]){case c.OpenParen:return[c.CloseParen,\")\",-1,-1,void 0];case c.CloseParen:return[c.OpenParen,\"(\",-1,-1,void 0];case c.OpenCurly:return[c.CloseCurly,\"}\",-1,-1,void 0];case c.CloseCurly:return[c.OpenCurly,\"{\",-1,-1,void 0];case c.OpenSquare:return[c.CloseSquare,\"]\",-1,-1,void 0];case c.CloseSquare:return[c.OpenSquare,\"[\",-1,-1,void 0];default:return null}}function consumeComment(n,t){for(t.advanceCodePoint(2);;){const o=t.readCodePoint();if(void 0===o){const o=[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInComment,t.representationStart,t.representationEnd,[\"4.3.2. Consume comments\",\"Unexpected EOF\"],o)),o}if(42===o&&(void 0!==t.source.codePointAt(t.cursor)&&47===t.source.codePointAt(t.cursor))){t.advanceCodePoint();break}}return[c.Comment,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0]}function consumeEscapedCodePoint(n,o){const i=o.readCodePoint();if(void 0===i)return n.onParseError(new ParseError(e.UnexpectedEOFInEscapedCodePoint,o.representationStart,o.representationEnd,[\"4.3.7. Consume an escaped code point\",\"Unexpected EOF\"])),s;if(isHexDigitCodePoint(i)){const e=[i];let n;for(;void 0!==(n=o.source.codePointAt(o.cursor))&&isHexDigitCodePoint(n)&&e.length<6;)e.push(n),o.advanceCodePoint();isWhitespace(o.source.codePointAt(o.cursor)??-1)&&(o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint());const c=parseInt(String.fromCodePoint(...e),16);return 0===c||isSurrogate(c)||c>1114111?s:c}return 0===i||isSurrogate(i)?s:i}function consumeIdentSequence(e,n){const t=[];for(;;){const o=n.source.codePointAt(n.cursor)??-1;if(0===o||isSurrogate(o))t.push(s),n.advanceCodePoint(+(o>65535)+1);else if(isIdentCodePoint(o))t.push(o),n.advanceCodePoint(+(o>65535)+1);else{if(!checkIfTwoCodePointsAreAValidEscape(n))return t;n.advanceCodePoint(),t.push(consumeEscapedCodePoint(e,n))}}}function consumeHashToken(e,n){n.advanceCodePoint();const t=n.source.codePointAt(n.cursor);if(void 0!==t&&(isIdentCodePoint(t)||checkIfTwoCodePointsAreAValidEscape(n))){let t=u.Unrestricted;checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)&&(t=u.ID);const o=consumeIdentSequence(e,n);return[c.Hash,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...o),type:t}]}return[c.Delim,\"#\",n.representationStart,n.representationEnd,{value:\"#\"}]}function consumeNumber(e,n){let t=a.Integer;for(n.source.codePointAt(n.cursor)!==i&&n.source.codePointAt(n.cursor)!==o||n.advanceCodePoint();isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(46===n.source.codePointAt(n.cursor)&&isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint(2),t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint();if(101===n.source.codePointAt(n.cursor)||69===n.source.codePointAt(n.cursor)){if(isDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))n.advanceCodePoint(2);else{if(n.source.codePointAt(n.cursor+1)!==o&&n.source.codePointAt(n.cursor+1)!==i||!isDigitCodePoint(n.source.codePointAt(n.cursor+2)??-1))return t;n.advanceCodePoint(3)}for(t=a.Number;isDigitCodePoint(n.source.codePointAt(n.cursor)??-1);)n.advanceCodePoint()}return t}function consumeNumericToken(e,n){let t;{const e=n.source.codePointAt(n.cursor);e===o?t=\"-\":e===i&&(t=\"+\")}const r=consumeNumber(0,n),s=parseFloat(n.source.slice(n.representationStart,n.representationEnd+1));if(checkIfThreeCodePointsWouldStartAnIdentSequence(0,n)){const o=consumeIdentSequence(e,n);return[c.Dimension,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r,unit:String.fromCodePoint(...o)}]}return 37===n.source.codePointAt(n.cursor)?(n.advanceCodePoint(),[c.Percentage,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t}]):[c.Number,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:s,signCharacter:t,type:r}]}function consumeWhiteSpace(e){for(;isWhitespace(e.source.codePointAt(e.cursor)??-1);)e.advanceCodePoint();return[c.Whitespace,e.source.slice(e.representationStart,e.representationEnd+1),e.representationStart,e.representationEnd,void 0]}!function(e){e.Comment=\"comment\",e.AtKeyword=\"at-keyword-token\",e.BadString=\"bad-string-token\",e.BadURL=\"bad-url-token\",e.CDC=\"CDC-token\",e.CDO=\"CDO-token\",e.Colon=\"colon-token\",e.Comma=\"comma-token\",e.Delim=\"delim-token\",e.Dimension=\"dimension-token\",e.EOF=\"EOF-token\",e.Function=\"function-token\",e.Hash=\"hash-token\",e.Ident=\"ident-token\",e.Number=\"number-token\",e.Percentage=\"percentage-token\",e.Semicolon=\"semicolon-token\",e.String=\"string-token\",e.URL=\"url-token\",e.Whitespace=\"whitespace-token\",e.OpenParen=\"(-token\",e.CloseParen=\")-token\",e.OpenSquare=\"[-token\",e.CloseSquare=\"]-token\",e.OpenCurly=\"{-token\",e.CloseCurly=\"}-token\",e.UnicodeRange=\"unicode-range-token\"}(c||(c={})),function(e){e.Integer=\"integer\",e.Number=\"number\"}(a||(a={})),function(e){e.Unrestricted=\"unrestricted\",e.ID=\"id\"}(u||(u={}));class Reader{cursor=0;source=\"\";representationStart=0;representationEnd=-1;constructor(e){this.source=e}advanceCodePoint(e=1){this.cursor=this.cursor+e,this.representationEnd=this.cursor-1}readCodePoint(){const e=this.source.codePointAt(this.cursor);if(void 0!==e)return this.cursor=this.cursor+1,this.representationEnd=this.cursor-1,e}unreadCodePoint(e=1){this.cursor=this.cursor-e,this.representationEnd=this.cursor-1}resetRepresentation(){this.representationStart=this.cursor,this.representationEnd=-1}}function consumeStringToken(n,o){let i=\"\";const a=o.readCodePoint();for(;;){const u=o.readCodePoint();if(void 0===u){const t=[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInString,o.representationStart,o.representationEnd,[\"4.3.5. Consume a string token\",\"Unexpected EOF\"],t)),t}if(isNewLine(u)){o.unreadCodePoint();const i=[c.BadString,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedNewLineInString,o.representationStart,o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r?o.representationEnd+2:o.representationEnd+1,[\"4.3.5. Consume a string token\",\"Unexpected newline\"],i)),i}if(u===a)return[c.String,o.source.slice(o.representationStart,o.representationEnd+1),o.representationStart,o.representationEnd,{value:i}];if(92!==u)0===u||isSurrogate(u)?i+=String.fromCodePoint(s):i+=String.fromCodePoint(u);else{if(void 0===o.source.codePointAt(o.cursor))continue;if(isNewLine(o.source.codePointAt(o.cursor)??-1)){o.source.codePointAt(o.cursor)===t&&o.source.codePointAt(o.cursor+1)===r&&o.advanceCodePoint(),o.advanceCodePoint();continue}i+=String.fromCodePoint(consumeEscapedCodePoint(n,o))}}}function checkIfCodePointsMatchURLIdent(e){return!(3!==e.length||117!==e[0]&&85!==e[0]||114!==e[1]&&82!==e[1]||108!==e[2]&&76!==e[2])}function consumeBadURL(e,n){for(;;){const t=n.source.codePointAt(n.cursor);if(void 0===t)return;if(41===t)return void n.advanceCodePoint();checkIfTwoCodePointsAreAValidEscape(n)?(n.advanceCodePoint(),consumeEscapedCodePoint(e,n)):n.advanceCodePoint()}}function consumeUrlToken(n,t){for(;isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();let o=\"\";for(;;){if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected EOF\"],r)),r}if(41===t.source.codePointAt(t.cursor))return t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];if(isWhitespace(t.source.codePointAt(t.cursor)??-1)){for(t.advanceCodePoint();isWhitespace(t.source.codePointAt(t.cursor)??-1);)t.advanceCodePoint();if(void 0===t.source.codePointAt(t.cursor)){const r=[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}];return n.onParseError(new ParseErrorWithToken(e.UnexpectedEOFInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Consume as much whitespace as possible\",\"Unexpected EOF\"],r)),r}return 41===t.source.codePointAt(t.cursor)?(t.advanceCodePoint(),[c.URL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,{value:o}]):(consumeBadURL(n,t),[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0])}const i=t.source.codePointAt(t.cursor);if(34===i||39===i||40===i||(11===(r=i??-1)||127===r||0<=r&&r<=8||14<=r&&r<=31)){consumeBadURL(n,t);const o=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.UnexpectedCharacterInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"Unexpected U+0022 QUOTATION MARK (\\\"), U+0027 APOSTROPHE ('), U+0028 LEFT PARENTHESIS (() or non-printable code point\"],o)),o}if(92===i){if(checkIfTwoCodePointsAreAValidEscape(t)){t.advanceCodePoint(),o+=String.fromCodePoint(consumeEscapedCodePoint(n,t));continue}consumeBadURL(n,t);const r=[c.BadURL,t.source.slice(t.representationStart,t.representationEnd+1),t.representationStart,t.representationEnd,void 0];return n.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceInURL,t.representationStart,t.representationEnd,[\"4.3.6. Consume a url token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],r)),r}0===t.source.codePointAt(t.cursor)||isSurrogate(t.source.codePointAt(t.cursor)??-1)?(o+=String.fromCodePoint(s),t.advanceCodePoint()):(o+=t.source[t.cursor],t.advanceCodePoint())}var r}function consumeIdentLikeToken(e,n){const t=consumeIdentSequence(e,n);if(40!==n.source.codePointAt(n.cursor))return[c.Ident,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];if(checkIfCodePointsMatchURLIdent(t)){n.advanceCodePoint();let o=0;for(;;){const e=isWhitespace(n.source.codePointAt(n.cursor)??-1),r=isWhitespace(n.source.codePointAt(n.cursor+1)??-1);if(e&&r){o+=1,n.advanceCodePoint(1);continue}const i=e?n.source.codePointAt(n.cursor+1):n.source.codePointAt(n.cursor);if(34===i||39===i)return o>0&&n.unreadCodePoint(o),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}];break}return consumeUrlToken(e,n)}return n.advanceCodePoint(),[c.Function,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{value:String.fromCodePoint(...t)}]}function checkIfThreeCodePointsWouldStartAUnicodeRange(e){return!(117!==e.source.codePointAt(e.cursor)&&85!==e.source.codePointAt(e.cursor)||e.source.codePointAt(e.cursor+1)!==i||63!==e.source.codePointAt(e.cursor+2)&&!isHexDigitCodePoint(e.source.codePointAt(e.cursor+2)??-1))}function consumeUnicodeRangeToken(e,n){n.advanceCodePoint(2);const t=[],r=[];let i;for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&isHexDigitCodePoint(i);)t.push(i),n.advanceCodePoint();for(;void 0!==(i=n.source.codePointAt(n.cursor))&&t.length<6&&63===i;)0===r.length&&r.push(...t),t.push(48),r.push(70),n.advanceCodePoint();if(!r.length&&n.source.codePointAt(n.cursor)===o&&isHexDigitCodePoint(n.source.codePointAt(n.cursor+1)??-1))for(n.advanceCodePoint();void 0!==(i=n.source.codePointAt(n.cursor))&&r.length<6&&isHexDigitCodePoint(i);)r.push(i),n.advanceCodePoint();if(!r.length){const e=parseInt(String.fromCodePoint(...t),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:e,endOfRange:e}]}const s=parseInt(String.fromCodePoint(...t),16),a=parseInt(String.fromCodePoint(...r),16);return[c.UnicodeRange,n.source.slice(n.representationStart,n.representationEnd+1),n.representationStart,n.representationEnd,{startOfRange:s,endOfRange:a}]}function tokenize(e,n){const t=tokenizer(e,n),o=[];for(;!t.endOfFile();)o.push(t.nextToken());return o.push(t.nextToken()),o}function tokenizer(n,s){const a=n.css.valueOf(),u=n.unicodeRangesAllowed??!1,d=new Reader(a),p={onParseError:s?.onParseError??noop};return{nextToken:function nextToken(){d.resetRepresentation();const n=d.source.codePointAt(d.cursor);if(void 0===n)return[c.EOF,\"\",-1,-1,void 0];if(47===n&&checkIfTwoCodePointsStartAComment(d))return consumeComment(p,d);if(u&&(117===n||85===n)&&checkIfThreeCodePointsWouldStartAUnicodeRange(d))return consumeUnicodeRangeToken(0,d);if(isIdentStartCodePoint(n))return consumeIdentLikeToken(p,d);if(isDigitCodePoint(n))return consumeNumericToken(p,d);switch(n){case 44:return d.advanceCodePoint(),[c.Comma,\",\",d.representationStart,d.representationEnd,void 0];case 58:return d.advanceCodePoint(),[c.Colon,\":\",d.representationStart,d.representationEnd,void 0];case 59:return d.advanceCodePoint(),[c.Semicolon,\";\",d.representationStart,d.representationEnd,void 0];case 40:return d.advanceCodePoint(),[c.OpenParen,\"(\",d.representationStart,d.representationEnd,void 0];case 41:return d.advanceCodePoint(),[c.CloseParen,\")\",d.representationStart,d.representationEnd,void 0];case 91:return d.advanceCodePoint(),[c.OpenSquare,\"[\",d.representationStart,d.representationEnd,void 0];case 93:return d.advanceCodePoint(),[c.CloseSquare,\"]\",d.representationStart,d.representationEnd,void 0];case 123:return d.advanceCodePoint(),[c.OpenCurly,\"{\",d.representationStart,d.representationEnd,void 0];case 125:return d.advanceCodePoint(),[c.CloseCurly,\"}\",d.representationStart,d.representationEnd,void 0];case 39:case 34:return consumeStringToken(p,d);case 35:return consumeHashToken(p,d);case i:case 46:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):(d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]);case r:case t:case 12:case 9:case 32:return consumeWhiteSpace(d);case o:return checkIfThreeCodePointsWouldStartANumber(d)?consumeNumericToken(p,d):checkIfThreeCodePointsWouldStartCDC(d)?(d.advanceCodePoint(3),[c.CDC,\"--\\x3e\",d.representationStart,d.representationEnd,void 0]):checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)?consumeIdentLikeToken(p,d):(d.advanceCodePoint(),[c.Delim,\"-\",d.representationStart,d.representationEnd,{value:\"-\"}]);case 60:return checkIfFourCodePointsWouldStartCDO(d)?(d.advanceCodePoint(4),[c.CDO,\"\\x3c!--\",d.representationStart,d.representationEnd,void 0]):(d.advanceCodePoint(),[c.Delim,\"<\",d.representationStart,d.representationEnd,{value:\"<\"}]);case 64:if(d.advanceCodePoint(),checkIfThreeCodePointsWouldStartAnIdentSequence(0,d)){const e=consumeIdentSequence(p,d);return[c.AtKeyword,d.source.slice(d.representationStart,d.representationEnd+1),d.representationStart,d.representationEnd,{value:String.fromCodePoint(...e)}]}return[c.Delim,\"@\",d.representationStart,d.representationEnd,{value:\"@\"}];case 92:{if(checkIfTwoCodePointsAreAValidEscape(d))return consumeIdentLikeToken(p,d);d.advanceCodePoint();const n=[c.Delim,\"\\\\\",d.representationStart,d.representationEnd,{value:\"\\\\\"}];return p.onParseError(new ParseErrorWithToken(e.InvalidEscapeSequenceAfterBackslash,d.representationStart,d.representationEnd,[\"4.3.1. Consume a token\",\"U+005C REVERSE SOLIDUS (\\\\)\",\"The input stream does not start with a valid escape sequence\"],n)),n}}return d.advanceCodePoint(),[c.Delim,d.source[d.representationStart],d.representationStart,d.representationEnd,{value:d.source[d.representationStart]}]},endOfFile:function endOfFile(){return void 0===d.source.codePointAt(d.cursor)}}}function noop(){}function mutateIdent(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=String.fromCodePoint(...serializeIdent(t));e[1]=o,e[4].value=n}function mutateUnit(e,n){const t=[];for(const e of n)t.push(e.codePointAt(0));const o=serializeIdent(t);101===o[0]&&insertEscapedCodePoint(o,0,o[0]);const r=String.fromCodePoint(...o),i=\"+\"===e[4].signCharacter?e[4].signCharacter:\"\",s=e[4].value.toString();e[1]=`${i}${s}${r}`,e[4].unit=n}function serializeIdent(e){let n=0;if(0===e[0])e.splice(0,1,s),n=1;else if(e[0]===o&&e[1]===o)n=2;else if(e[0]===o&&e[1])n=2,isIdentStartCodePoint(e[1])||(n+=insertEscapedCodePoint(e,1,e[1]));else{if(e[0]===o&&!e[1])return[92,e[0]];isIdentStartCodePoint(e[0])?n=1:(n=1,n+=insertEscapedCodePoint(e,0,e[0]))}for(let t=n;t<e.length;t++)0!==e[t]?isIdentCodePoint(e[t])||(t+=insertEscapedCharacter(e,t,e[t])):(e.splice(t,1,s),t++);return e}function insertEscapedCharacter(e,n,t){return e.splice(n,1,92,t),1}function insertEscapedCodePoint(e,n,t){const o=t.toString(16),r=[];for(const e of o)r.push(e.codePointAt(0));return e.splice(n,1,92,...r,32),1+r.length}const d=Object.values(c);function isToken(e){return!!Array.isArray(e)&&(!(e.length<4)&&(!!d.includes(e[0])&&(\"string\"==typeof e[1]&&(\"number\"==typeof e[2]&&\"number\"==typeof e[3]))))}function isTokenNumeric(e){if(!e)return!1;switch(e[0]){case c.Dimension:case c.Number:case c.Percentage:return!0;default:return!1}}function isTokenWhiteSpaceOrComment(e){if(!e)return!1;switch(e[0]){case c.Whitespace:case c.Comment:return!0;default:return!1}}function isTokenAtKeyword(e){return!!e&&e[0]===c.AtKeyword}function isTokenBadString(e){return!!e&&e[0]===c.BadString}function isTokenBadURL(e){return!!e&&e[0]===c.BadURL}function isTokenCDC(e){return!!e&&e[0]===c.CDC}function isTokenCDO(e){return!!e&&e[0]===c.CDO}function isTokenColon(e){return!!e&&e[0]===c.Colon}function isTokenComma(e){return!!e&&e[0]===c.Comma}function isTokenComment(e){return!!e&&e[0]===c.Comment}function isTokenDelim(e){return!!e&&e[0]===c.Delim}function isTokenDimension(e){return!!e&&e[0]===c.Dimension}function isTokenEOF(e){return!!e&&e[0]===c.EOF}function isTokenFunction(e){return!!e&&e[0]===c.Function}function isTokenHash(e){return!!e&&e[0]===c.Hash}function isTokenIdent(e){return!!e&&e[0]===c.Ident}function isTokenNumber(e){return!!e&&e[0]===c.Number}function isTokenPercentage(e){return!!e&&e[0]===c.Percentage}function isTokenSemicolon(e){return!!e&&e[0]===c.Semicolon}function isTokenString(e){return!!e&&e[0]===c.String}function isTokenURL(e){return!!e&&e[0]===c.URL}function isTokenWhitespace(e){return!!e&&e[0]===c.Whitespace}function isTokenOpenParen(e){return!!e&&e[0]===c.OpenParen}function isTokenCloseParen(e){return!!e&&e[0]===c.CloseParen}function isTokenOpenSquare(e){return!!e&&e[0]===c.OpenSquare}function isTokenCloseSquare(e){return!!e&&e[0]===c.CloseSquare}function isTokenOpenCurly(e){return!!e&&e[0]===c.OpenCurly}function isTokenCloseCurly(e){return!!e&&e[0]===c.CloseCurly}function isTokenUnicodeRange(e){return!!e&&e[0]===c.UnicodeRange}export{u as HashType,a as NumberType,ParseError,e as ParseErrorMessage,ParseErrorWithToken,c as TokenType,cloneTokens,isToken,isTokenAtKeyword,isTokenBadString,isTokenBadURL,isTokenCDC,isTokenCDO,isTokenCloseCurly,isTokenCloseParen,isTokenCloseSquare,isTokenColon,isTokenComma,isTokenComment,isTokenDelim,isTokenDimension,isTokenEOF,isTokenFunction,isTokenHash,isTokenIdent,isTokenNumber,isTokenNumeric,isTokenOpenCurly,isTokenOpenParen,isTokenOpenSquare,isTokenPercentage,isTokenSemicolon,isTokenString,isTokenURL,isTokenUnicodeRange,isTokenWhiteSpaceOrComment,isTokenWhitespace,mirrorVariant,mirrorVariantType,mutateIdent,mutateUnit,stringify,tokenize,tokenizer};\n","import{isTokenEOF as e,TokenType as n,isToken as t,stringify as o,mirrorVariant as s,isTokenOpenParen as i,isTokenOpenCurly as r,isTokenOpenSquare as a,isTokenFunction as c,isTokenWhitespace as u,isTokenComment as l,mirrorVariantType as d,ParseError as h,isTokenWhiteSpaceOrComment as p,isTokenCloseParen as m,isTokenComma as k}from\"@csstools/css-tokenizer\";var f;function walkerIndexGenerator(e){let n=e.slice();return(e,t,o)=>{let s=-1;for(let i=n.indexOf(t);i<n.length&&(s=e.indexOf(n[i]),-1===s||s<o);i++);return-1===s||s===o&&t===e[o]&&(s++,s>=e.length)?-1:(n=e.slice(),s)}}function consumeComponentValue(e,n){const t=n[0];if(i(t)||r(t)||a(t)){const t=consumeSimpleBlock(e,n);return{advance:t.advance,node:t.node}}if(c(t)){const t=consumeFunction(e,n);return{advance:t.advance,node:t.node}}if(u(t)){const t=consumeWhitespace(e,n);return{advance:t.advance,node:t.node}}if(l(t)){const t=consumeComment(e,n);return{advance:t.advance,node:t.node}}return{advance:1,node:new TokenNode(t)}}!function(e){e.Function=\"function\",e.SimpleBlock=\"simple-block\",e.Whitespace=\"whitespace\",e.Comment=\"comment\",e.Token=\"token\"}(f||(f={}));class ContainerNodeBaseClass{value=[];indexOf(e){return this.value.indexOf(e)}at(e){if(\"number\"==typeof e)return e<0&&(e=this.value.length+e),this.value[e]}forEach(e,n){if(0===this.value.length)return;const t=walkerIndexGenerator(this.value);let o=0;for(;o<this.value.length;){const s=this.value[o];let i;if(n&&(i={...n}),!1===e({node:s,parent:this,state:i},o))return!1;if(o=t(this.value,s,o),-1===o)break}}walk(e,n){0!==this.value.length&&this.forEach(((n,t)=>!1!==e(n,t)&&((!(\"walk\"in n.node)||!this.value.includes(n.node)||!1!==n.node.walk(e,n.state))&&void 0)),n)}}class FunctionNode extends ContainerNodeBaseClass{type=f.Function;name;endToken;constructor(e,n,t){super(),this.name=e,this.endToken=n,this.value=t}getName(){return this.name[4].value}normalize(){e(this.endToken)&&(this.endToken=[n.CloseParen,\")\",-1,-1,void 0])}tokens(){return e(this.endToken)?[this.name,...this.value.flatMap((e=>e.tokens()))]:[this.name,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.name)+e+o(this.endToken)}toJSON(){return{type:this.type,name:this.getName(),tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isFunctionNode(){return FunctionNode.isFunctionNode(this)}static isFunctionNode(e){return!!e&&(e instanceof FunctionNode&&e.type===f.Function)}}function consumeFunction(n,t){const o=[];let s=1;for(;;){const i=t[s];if(!i||e(i))return n.onParseError(new h(\"Unexpected EOF while consuming a function.\",t[0][2],t[t.length-1][3],[\"5.4.9. Consume a function\",\"Unexpected EOF\"])),{advance:t.length,node:new FunctionNode(t[0],i,o)};if(m(i))return{advance:s+1,node:new FunctionNode(t[0],i,o)};if(p(i)){const e=consumeAllCommentsAndWhitespace(n,t.slice(s));s+=e.advance,o.push(...e.nodes);continue}const r=consumeComponentValue(n,t.slice(s));s+=r.advance,o.push(r.node)}}class SimpleBlockNode extends ContainerNodeBaseClass{type=f.SimpleBlock;startToken;endToken;constructor(e,n,t){super(),this.startToken=e,this.endToken=n,this.value=t}normalize(){if(e(this.endToken)){const e=s(this.startToken);e&&(this.endToken=e)}}tokens(){return e(this.endToken)?[this.startToken,...this.value.flatMap((e=>e.tokens()))]:[this.startToken,...this.value.flatMap((e=>e.tokens())),this.endToken]}toString(){const e=this.value.map((e=>t(e)?o(e):e.toString())).join(\"\");return o(this.startToken)+e+o(this.endToken)}toJSON(){return{type:this.type,startToken:this.startToken,tokens:this.tokens(),value:this.value.map((e=>e.toJSON()))}}isSimpleBlockNode(){return SimpleBlockNode.isSimpleBlockNode(this)}static isSimpleBlockNode(e){return!!e&&(e instanceof SimpleBlockNode&&e.type===f.SimpleBlock)}}function consumeSimpleBlock(n,t){const o=d(t[0][0]);if(!o)throw new Error(\"Failed to parse, a mirror variant must exist for all block open tokens.\");const s=[];let i=1;for(;;){const r=t[i];if(!r||e(r))return n.onParseError(new h(\"Unexpected EOF while consuming a simple block.\",t[0][2],t[t.length-1][3],[\"5.4.8. Consume a simple block\",\"Unexpected EOF\"])),{advance:t.length,node:new SimpleBlockNode(t[0],r,s)};if(r[0]===o)return{advance:i+1,node:new SimpleBlockNode(t[0],r,s)};if(p(r)){const e=consumeAllCommentsAndWhitespace(n,t.slice(i));i+=e.advance,s.push(...e.nodes);continue}const a=consumeComponentValue(n,t.slice(i));i+=a.advance,s.push(a.node)}}class WhitespaceNode{type=f.Whitespace;value;constructor(e){this.value=e}tokens(){return this.value}toString(){return o(...this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isWhitespaceNode(){return WhitespaceNode.isWhitespaceNode(this)}static isWhitespaceNode(e){return!!e&&(e instanceof WhitespaceNode&&e.type===f.Whitespace)}}function consumeWhitespace(e,n){let t=0;for(;;){const e=n[t];if(!u(e))return{advance:t,node:new WhitespaceNode(n.slice(0,t))};t++}}class CommentNode{type=f.Comment;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return o(this.value)}toJSON(){return{type:this.type,tokens:this.tokens()}}isCommentNode(){return CommentNode.isCommentNode(this)}static isCommentNode(e){return!!e&&(e instanceof CommentNode&&e.type===f.Comment)}}function consumeComment(e,n){return{advance:1,node:new CommentNode(n[0])}}function consumeAllCommentsAndWhitespace(e,n){const t=[];let o=0;for(;;)if(u(n[o])){const e=consumeWhitespace(0,n.slice(o));o+=e.advance,t.push(e.node)}else{if(!l(n[o]))return{advance:o,nodes:t};t.push(new CommentNode(n[o])),o++}}class TokenNode{type=f.Token;value;constructor(e){this.value=e}tokens(){return[this.value]}toString(){return this.value[1]}toJSON(){return{type:this.type,tokens:this.tokens()}}isTokenNode(){return TokenNode.isTokenNode(this)}static isTokenNode(e){return!!e&&(e instanceof TokenNode&&e.type===f.Token)}}function parseComponentValue(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=consumeComponentValue(s,i);if(e(i[Math.min(r.advance,i.length-1)]))return r.node;s.onParseError(new h(\"Expected EOF after parsing a component value.\",t[0][2],t[t.length-1][3],[\"5.3.9. Parse a component value\",\"Expected EOF\"]))}function parseListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=0;for(;;){if(!i[a]||e(i[a]))return r;const n=consumeComponentValue(s,i.slice(a));r.push(n.node),a+=n.advance}}function parseCommaSeparatedListOfComponentValues(t,o){const s={onParseError:o?.onParseError??(()=>{})},i=[...t];if(0===t.length)return[];e(i[i.length-1])&&i.push([n.EOF,\"\",i[i.length-1][2],i[i.length-1][3],void 0]);const r=[];let a=[],c=0;for(;;){if(!i[c]||e(i[c]))return a.length&&r.push(a),r;if(k(i[c])){r.push(a),a=[],c++;continue}const n=consumeComponentValue(s,t.slice(c));a.push(n.node),c+=n.advance}}function gatherNodeAncestry(e){const n=new Map;return e.walk((e=>{Array.isArray(e.node)?e.node.forEach((t=>{n.set(t,e.parent)})):n.set(e.node,e.parent)})),n}function forEach(e,n,t){if(0===e.length)return;const o=walkerIndexGenerator(e);let s=0;for(;s<e.length;){const i=e[s];let r;if(t&&(r={...t}),!1===n({node:i,parent:{value:e},state:r},s))return!1;if(s=o(e,i,s),-1===s)break}}function walk(e,n,t){0!==e.length&&forEach(e,((t,o)=>!1!==n(t,o)&&((!(\"walk\"in t.node)||!e.includes(t.node)||!1!==t.node.walk(n,t.state))&&void 0)),t)}function replaceComponentValues(e,n){for(let t=0;t<e.length;t++){walk(e[t],((e,t)=>{if(\"number\"!=typeof t)return;const o=n(e.node);o&&(Array.isArray(o)?e.parent.value.splice(t,1,...o):e.parent.value.splice(t,1,o))}))}return e}function stringify(e){return e.map((e=>e.map((e=>o(...e.tokens()))).join(\"\"))).join(\",\")}function isSimpleBlockNode(e){return SimpleBlockNode.isSimpleBlockNode(e)}function isFunctionNode(e){return FunctionNode.isFunctionNode(e)}function isWhitespaceNode(e){return WhitespaceNode.isWhitespaceNode(e)}function isCommentNode(e){return CommentNode.isCommentNode(e)}function isWhiteSpaceOrCommentNode(e){return isWhitespaceNode(e)||isCommentNode(e)}function isTokenNode(e){return TokenNode.isTokenNode(e)}function sourceIndices(e){if(Array.isArray(e)){const n=e[0];if(!n)return[0,0];const t=e[e.length-1]||n;return[sourceIndices(n)[0],sourceIndices(t)[1]]}const n=e.tokens(),t=n[0],o=n[n.length-1];return t&&o?[t[2],o[3]]:[0,0]}export{CommentNode,f as ComponentValueType,ContainerNodeBaseClass,FunctionNode,SimpleBlockNode,TokenNode,WhitespaceNode,forEach,gatherNodeAncestry,isCommentNode,isFunctionNode,isSimpleBlockNode,isTokenNode,isWhiteSpaceOrCommentNode,isWhitespaceNode,parseCommaSeparatedListOfComponentValues,parseComponentValue,parseListOfComponentValues,replaceComponentValues,sourceIndices,stringify,walk,walkerIndexGenerator};\n","import{TokenNode as e,isTokenNode as n,isWhitespaceNode as t,isCommentNode as r,isWhiteSpaceOrCommentNode as a,isSimpleBlockNode as u,isFunctionNode as i,FunctionNode as o,WhitespaceNode as l,parseCommaSeparatedListOfComponentValues as c,replaceComponentValues as s}from\"@csstools/css-parser-algorithms\";import{isTokenDimension as v,TokenType as f,NumberType as m,mutateUnit as p,isTokenNumber as C,isTokenPercentage as g,isTokenIdent as d,isTokenNumeric as D,isTokenOpenParen as N,isTokenDelim as B,isTokenComma as A,isToken as h,tokenizer as F,tokenize as b,stringify as w}from\"@csstools/css-tokenizer\";const E=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(E,(e=>String.fromCharCode(e.charCodeAt(0)+32)))}const I={cm:\"px\",in:\"px\",mm:\"px\",pc:\"px\",pt:\"px\",px:\"px\",q:\"px\",deg:\"deg\",grad:\"deg\",rad:\"deg\",turn:\"deg\",ms:\"s\",s:\"s\",hz:\"hz\",khz:\"hz\"},S=new Map([[\"cm\",e=>e],[\"mm\",e=>10*e],[\"q\",e=>40*e],[\"in\",e=>e/2.54],[\"pc\",e=>e/2.54*6],[\"pt\",e=>e/2.54*72],[\"px\",e=>e/2.54*96]]),y=new Map([[\"deg\",e=>e],[\"grad\",e=>e/.9],[\"rad\",e=>e/180*Math.PI],[\"turn\",e=>e/360]]),M=new Map([[\"deg\",e=>.9*e],[\"grad\",e=>e],[\"rad\",e=>.9*e/180*Math.PI],[\"turn\",e=>.9*e/360]]),T=new Map([[\"hz\",e=>e],[\"khz\",e=>e/1e3]]),x=new Map([[\"cm\",e=>2.54*e],[\"mm\",e=>25.4*e],[\"q\",e=>25.4*e*4],[\"in\",e=>e],[\"pc\",e=>6*e],[\"pt\",e=>72*e],[\"px\",e=>96*e]]),k=new Map([[\"hz\",e=>1e3*e],[\"khz\",e=>e]]),P=new Map([[\"cm\",e=>e/10],[\"mm\",e=>e],[\"q\",e=>4*e],[\"in\",e=>e/25.4],[\"pc\",e=>e/25.4*6],[\"pt\",e=>e/25.4*72],[\"px\",e=>e/25.4*96]]),O=new Map([[\"ms\",e=>e],[\"s\",e=>e/1e3]]),W=new Map([[\"cm\",e=>e/6*2.54],[\"mm\",e=>e/6*25.4],[\"q\",e=>e/6*25.4*4],[\"in\",e=>e/6],[\"pc\",e=>e],[\"pt\",e=>e/6*72],[\"px\",e=>e/6*96]]),L=new Map([[\"cm\",e=>e/72*2.54],[\"mm\",e=>e/72*25.4],[\"q\",e=>e/72*25.4*4],[\"in\",e=>e/72],[\"pc\",e=>e/72*6],[\"pt\",e=>e],[\"px\",e=>e/72*96]]),U=new Map([[\"cm\",e=>e/96*2.54],[\"mm\",e=>e/96*25.4],[\"q\",e=>e/96*25.4*4],[\"in\",e=>e/96],[\"pc\",e=>e/96*6],[\"pt\",e=>e/96*72],[\"px\",e=>e]]),$=new Map([[\"cm\",e=>e/4/10],[\"mm\",e=>e/4],[\"q\",e=>e],[\"in\",e=>e/4/25.4],[\"pc\",e=>e/4/25.4*6],[\"pt\",e=>e/4/25.4*72],[\"px\",e=>e/4/25.4*96]]),Z=new Map([[\"deg\",e=>180*e/Math.PI],[\"grad\",e=>180*e/Math.PI/.9],[\"rad\",e=>e],[\"turn\",e=>180*e/Math.PI/360]]),z=new Map([[\"ms\",e=>1e3*e],[\"s\",e=>e]]),q=new Map([[\"deg\",e=>360*e],[\"grad\",e=>360*e/.9],[\"rad\",e=>360*e/180*Math.PI],[\"turn\",e=>e]]),G=new Map([[\"cm\",S],[\"mm\",P],[\"q\",$],[\"in\",x],[\"pc\",W],[\"pt\",L],[\"px\",U],[\"ms\",O],[\"s\",z],[\"deg\",y],[\"grad\",M],[\"rad\",Z],[\"turn\",q],[\"hz\",T],[\"khz\",k]]);function convertUnit(e,n){if(!v(e))return n;if(!v(n))return n;const t=toLowerCaseAZ(e[4].unit),r=toLowerCaseAZ(n[4].unit);if(t===r)return n;const a=G.get(r);if(!a)return n;const u=a.get(t);if(!u)return n;const i=u(n[4].value),o=[f.Dimension,\"\",n[2],n[3],{...n[4],signCharacter:i<0?\"-\":void 0,type:Number.isInteger(i)?m.Integer:m.Number,value:i}];return p(o,e[4].unit),o}function toCanonicalUnit(e){if(!v(e))return e;const n=toLowerCaseAZ(e[4].unit),t=I[n];if(n===t)return e;const r=G.get(n);if(!r)return e;const a=r.get(t);if(!a)return e;const u=a(e[4].value),i=[f.Dimension,\"\",e[2],e[3],{...e[4],signCharacter:u<0?\"-\":void 0,type:Number.isInteger(u)?m.Integer:m.Number,value:u}];return p(i,t),i}function addition(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value+r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value+r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value+r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function division(n){if(2!==n.length)return-1;const t=n[0].value,r=n[1].value;if(C(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number}])}if(g(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&C(r)){const n=t[4].value/r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:Number.isInteger(n)?m.Integer:m.Number,unit:t[4].unit}])}return-1}function isCalculation(e){return!!e&&\"object\"==typeof e&&\"inputs\"in e&&Array.isArray(e.inputs)&&\"operation\"in e}function solve(e){if(-1===e)return-1;const t=[];for(let r=0;r<e.inputs.length;r++){const a=e.inputs[r];if(n(a)){t.push(a);continue}const u=solve(a);if(-1===u)return-1;t.push(u)}return e.operation(t)}function multiplication(n){if(2!==n.length)return-1;const t=n[0].value,r=n[1].value;if(C(t)&&C(r)){const n=t[4].value*r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&C(r)){const n=t[4].value*r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(C(t)&&g(r)){const n=t[4].value*r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&C(r)){const n=t[4].value*r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}if(C(t)&&v(r)){const n=t[4].value*r[4].value;return new e([f.Dimension,n.toString()+r[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:r[4].unit}])}return-1}function resolveGlobalsAndConstants(t,r){for(let a=0;a<t.length;a++){const u=t[a];if(!n(u))continue;const i=u.value;if(!d(i))continue;const o=toLowerCaseAZ(i[4].value);switch(o){case\"e\":t.splice(a,1,new e([f.Number,Math.E.toString(),i[2],i[3],{value:Math.E,type:m.Number}]));break;case\"pi\":t.splice(a,1,new e([f.Number,Math.PI.toString(),i[2],i[3],{value:Math.PI,type:m.Number}]));break;case\"infinity\":t.splice(a,1,new e([f.Number,\"infinity\",i[2],i[3],{value:1/0,type:m.Number}]));break;case\"-infinity\":t.splice(a,1,new e([f.Number,\"-infinity\",i[2],i[3],{value:-1/0,type:m.Number}]));break;case\"nan\":t.splice(a,1,new e([f.Number,\"NaN\",i[2],i[3],{value:Number.NaN,type:m.Number}]));break;default:if(r.has(o)){const n=r.get(o);t.splice(a,1,new e(n))}}}return t}function unary(e){if(1!==e.length)return-1;const n=e[0].value;return D(n)?e[0]:-1}function resultToCalculation(e,n,t){return v(n)?dimensionToCalculation(e,n[4].unit,t):g(n)?percentageToCalculation(e,t):C(n)?numberToCalculation(e,t):-1}function dimensionToCalculation(n,t,r){const a=n.tokens();return{inputs:[new e([f.Dimension,r.toString()+t,a[0][2],a[a.length-1][3],{value:r,type:Number.isInteger(r)?m.Integer:m.Number,unit:t}])],operation:unary}}function percentageToCalculation(n,t){const r=n.tokens();return{inputs:[new e([f.Percentage,t.toString()+\"%\",r[0][2],r[r.length-1][3],{value:t}])],operation:unary}}function numberToCalculation(n,t){const r=n.tokens();return{inputs:[new e([f.Number,t.toString(),r[0][2],r[r.length-1][3],{value:t,type:Number.isInteger(t)?m.Integer:m.Number}])],operation:unary}}function solveACos(e,n){const t=n.value;if(!C(t))return-1;return dimensionToCalculation(e,\"rad\",Math.acos(t[4].value))}function solveASin(e,n){const t=n.value;if(!C(t))return-1;return dimensionToCalculation(e,\"rad\",Math.asin(t[4].value))}function solveATan(e,n){const t=n.value;if(!C(t))return-1;return dimensionToCalculation(e,\"rad\",Math.atan(t[4].value))}function isDimensionOrNumber(e){return v(e)||C(e)}function arrayOfSameNumeric(e){if(0===e.length)return!0;const n=e[0];if(!D(n))return!1;if(1===e.length)return!0;if(v(n)){const t=toLowerCaseAZ(n[4].unit);for(let r=1;r<e.length;r++){const a=e[r];if(n[0]!==a[0])return!1;if(t!==toLowerCaseAZ(a[4].unit))return!1}return!0}for(let t=1;t<e.length;t++){const r=e[t];if(n[0]!==r[0])return!1}return!0}function twoOfSameNumeric(e,n){return!!D(e)&&(v(e)?e[0]===n[0]&&toLowerCaseAZ(e[4].unit)===toLowerCaseAZ(n[4].unit):e[0]===n[0])}function solveATan2(e,n,t){const r=n.value;if(!isDimensionOrNumber(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;return dimensionToCalculation(e,\"rad\",Math.atan2(r[4].value,a[4].value))}function solveAbs(e,n,t){const r=n.value;if(!D(r))return-1;if(!t.rawPercentages&&g(r))return-1;return resultToCalculation(e,r,Math.abs(r[4].value))}function solveClamp(e,t,r,a,u){if(!n(t)||!n(r)||!n(a))return-1;const i=t.value;if(!D(i))return-1;if(!u.rawPercentages&&g(i))return-1;const o=convertUnit(i,r.value);if(!twoOfSameNumeric(i,o))return-1;const l=convertUnit(i,a.value);if(!twoOfSameNumeric(i,l))return-1;return resultToCalculation(e,i,Math.max(i[4].value,Math.min(o[4].value,l[4].value)))}function solveCos(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;let r=t[4].value;if(v(t))switch(t[4].unit.toLowerCase()){case\"rad\":break;case\"deg\":r=y.get(\"rad\")(t[4].value);break;case\"grad\":r=M.get(\"rad\")(t[4].value);break;case\"turn\":r=q.get(\"rad\")(t[4].value);break;default:return-1}return r=Math.cos(r),numberToCalculation(e,r)}function solveExp(e,n){const t=n.value;if(!C(t))return-1;return numberToCalculation(e,Math.exp(t[4].value))}function solveHypot(e,t,r){if(!t.every(n))return-1;const a=t[0].value;if(!D(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=t.map((e=>convertUnit(a,e.value)));if(!arrayOfSameNumeric(u))return-1;const i=u.map((e=>e[4].value)),o=Math.hypot(...i);return resultToCalculation(e,a,o)}function solveMax(e,t,r){if(!t.every(n))return-1;const a=t[0].value;if(!D(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=t.map((e=>convertUnit(a,e.value)));if(!arrayOfSameNumeric(u))return-1;const i=u.map((e=>e[4].value)),o=Math.max(...i);return resultToCalculation(e,a,o)}function solveMin(e,t,r){if(!t.every(n))return-1;const a=t[0].value;if(!D(a))return-1;if(!r.rawPercentages&&g(a))return-1;const u=t.map((e=>convertUnit(a,e.value)));if(!arrayOfSameNumeric(u))return-1;const i=u.map((e=>e[4].value)),o=Math.min(...i);return resultToCalculation(e,a,o)}function solveMod(e,n,t){const r=n.value;if(!D(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;let u;return u=0===a[4].value?Number.NaN:Number.isFinite(r[4].value)&&(Number.isFinite(a[4].value)||(a[4].value!==Number.POSITIVE_INFINITY||r[4].value!==Number.NEGATIVE_INFINITY&&!Object.is(0*r[4].value,-0))&&(a[4].value!==Number.NEGATIVE_INFINITY||r[4].value!==Number.POSITIVE_INFINITY&&!Object.is(0*r[4].value,0)))?Number.isFinite(a[4].value)?(r[4].value%a[4].value+a[4].value)%a[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,u)}function solvePow(e,n,t){const r=n.value,a=t.value;if(!C(r))return-1;if(!twoOfSameNumeric(r,a))return-1;return numberToCalculation(e,Math.pow(r[4].value,a[4].value))}function solveRem(e,n,t){const r=n.value;if(!D(r))return-1;const a=convertUnit(r,t.value);if(!twoOfSameNumeric(r,a))return-1;let u;return u=0===a[4].value?Number.NaN:Number.isFinite(r[4].value)?Number.isFinite(a[4].value)?r[4].value%a[4].value:r[4].value:Number.NaN,resultToCalculation(e,r,u)}function solveRound(e,n,t,r,a){const u=t.value;if(!D(u))return-1;if(!a.rawPercentages&&g(u))return-1;const i=convertUnit(u,r.value);if(!twoOfSameNumeric(u,i))return-1;let o;if(0===i[4].value)o=Number.NaN;else if(Number.isFinite(u[4].value)||Number.isFinite(i[4].value))if(!Number.isFinite(u[4].value)&&Number.isFinite(i[4].value))o=u[4].value;else if(Number.isFinite(u[4].value)&&!Number.isFinite(i[4].value))switch(n){case\"down\":o=u[4].value<0?-1/0:Object.is(-0,0*u[4].value)?-0:0;break;case\"up\":o=u[4].value>0?1/0:Object.is(0,0*u[4].value)?0:-0;break;default:o=Object.is(0,0*u[4].value)?0:-0}else if(Number.isFinite(i[4].value))switch(n){case\"down\":o=Math.floor(u[4].value/i[4].value)*i[4].value;break;case\"up\":o=Math.ceil(u[4].value/i[4].value)*i[4].value;break;case\"to-zero\":o=Math.trunc(u[4].value/i[4].value)*i[4].value;break;default:{let e=Math.floor(u[4].value/i[4].value)*i[4].value,n=Math.ceil(u[4].value/i[4].value)*i[4].value;if(e>n){const t=e;e=n,n=t}const t=Math.abs(u[4].value-e),r=Math.abs(u[4].value-n);o=t===r?n:t<r?e:n;break}}else o=u[4].value;else o=Number.NaN;return resultToCalculation(e,u,o)}function solveSign(e,n,t){const r=n.value;if(!D(r))return-1;if(!t.rawPercentages&&g(r))return-1;return numberToCalculation(e,Math.sign(r[4].value))}function solveSin(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;let r=t[4].value;if(v(t))switch(toLowerCaseAZ(t[4].unit)){case\"rad\":break;case\"deg\":r=y.get(\"rad\")(t[4].value);break;case\"grad\":r=M.get(\"rad\")(t[4].value);break;case\"turn\":r=q.get(\"rad\")(t[4].value);break;default:return-1}return r=Math.sin(r),numberToCalculation(e,r)}function solveSqrt(e,n){const t=n.value;if(!C(t))return-1;return numberToCalculation(e,Math.sqrt(t[4].value))}function solveTan(e,n){const t=n.value;if(!isDimensionOrNumber(t))return-1;const r=t[4].value;let a=0,u=t[4].value;if(v(t))switch(toLowerCaseAZ(t[4].unit)){case\"rad\":a=Z.get(\"deg\")(r);break;case\"deg\":a=r,u=y.get(\"rad\")(r);break;case\"grad\":a=M.get(\"deg\")(r),u=M.get(\"rad\")(r);break;case\"turn\":a=q.get(\"deg\")(r),u=q.get(\"rad\")(r);break;default:return-1}const i=a/90;return u=a%90==0&&i%2!=0?i>0?1/0:-1/0:Math.tan(u),numberToCalculation(e,u)}function subtraction(n){if(2!==n.length)return-1;const t=n[0].value;let r=n[1].value;if(C(t)&&C(r)){const n=t[4].value-r[4].value;return new e([f.Number,n.toString(),t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number}])}if(g(t)&&g(r)){const n=t[4].value-r[4].value;return new e([f.Percentage,n.toString()+\"%\",t[2],r[3],{value:n}])}if(v(t)&&v(r)&&(r=convertUnit(t,r),toLowerCaseAZ(t[4].unit)===toLowerCaseAZ(r[4].unit))){const n=t[4].value-r[4].value;return new e([f.Dimension,n.toString()+t[4].unit,t[2],r[3],{value:n,type:t[4].type===m.Integer&&r[4].type===m.Integer?m.Integer:m.Number,unit:t[4].unit}])}return-1}function solveLog(e,t){if(1===t.length){const r=t[0];if(!r||!n(r))return-1;const a=r.value;if(!C(a))return-1;return numberToCalculation(e,Math.log(a[4].value))}if(2===t.length){const r=t[0];if(!r||!n(r))return-1;const a=r.value;if(!C(a))return-1;const u=t[1];if(!u||!n(u))return-1;const i=u.value;if(!C(i))return-1;return numberToCalculation(e,Math.log(a[4].value)/Math.log(i[4].value))}return-1}const R=/^none$/i;function isNone(e){if(Array.isArray(e)){const n=e.filter((e=>!(t(e)&&r(e))));return 1===n.length&&isNone(n[0])}if(!n(e))return!1;const a=e.value;return!!d(a)&&R.test(a[4].value)}const V=String.fromCodePoint(0);function solveRandom(e,n,t,r,a,u){if(-1===n.fixed&&!u.randomCaching)return-1;u.randomCaching||(u.randomCaching={propertyName:\"\",propertyN:0,elementID:\"\",documentID:\"\"}),u.randomCaching&&!u.randomCaching.propertyN&&(u.randomCaching.propertyN=0);const i=t.value;if(!D(i))return-1;const o=convertUnit(i,r.value);if(!twoOfSameNumeric(i,o))return-1;let l=null;if(a&&(l=convertUnit(i,a.value),!twoOfSameNumeric(i,l)))return-1;if(!Number.isFinite(i[4].value))return resultToCalculation(e,i,Number.NaN);if(!Number.isFinite(o[4].value))return resultToCalculation(e,i,Number.NaN);if(!Number.isFinite(o[4].value-i[4].value))return resultToCalculation(e,i,Number.NaN);if(l&&!Number.isFinite(l[4].value))return resultToCalculation(e,i,i[4].value);const c=-1===n.fixed?sfc32(crc32([n.dashedIdent?n.dashedIdent:`${u.randomCaching?.propertyName} ${u.randomCaching.propertyN++}`,n.elementShared?\"\":u.randomCaching.elementID,u.randomCaching.documentID].join(V))):()=>n.fixed;let s=i[4].value,v=o[4].value;if(s>v&&([s,v]=[v,s]),l&&(l[4].value<=0||Math.abs(s-v)/l[4].value>1e10)&&(l=null),l){const n=Math.max(l[4].value/1e3,1e-9),t=[s];let r=0;for(;;){r+=l[4].value;const e=s+r;if(!(e+n<v)){t.push(v);break}if(t.push(e),e+l[4].value-n>v)break}const a=c();return resultToCalculation(e,i,Number(t[Math.floor(t.length*a)].toFixed(5)))}const f=c();return resultToCalculation(e,i,Number((f*(v-s)+s).toFixed(5)))}function sfc32(e=.34944106645296036,n=.19228640875738723,t=.8784393832007205,r=.04850964319275053){return()=>{const a=((e|=0)+(n|=0)|0)+(r|=0)|0;return r=r+1|0,e=n^n>>>9,n=(t|=0)+(t<<3)|0,t=(t=t<<21|t>>>11)+a|0,(a>>>0)/4294967296}}function crc32(e){let n=0,t=0,r=0;n^=-1;for(let a=0,u=e.length;a<u;a++)r=255&(n^e.charCodeAt(a)),t=Number(\"0x\"+\"00000000 77073096 EE0E612C 990951BA 076DC419 706AF48F E963A535 9E6495A3 0EDB8832 79DCB8A4 E0D5E91E 97D2D988 09B64C2B 7EB17CBD E7B82D07 90BF1D91 1DB71064 6AB020F2 F3B97148 84BE41DE 1ADAD47D 6DDDE4EB F4D4B551 83D385C7 136C9856 646BA8C0 FD62F97A 8A65C9EC 14015C4F 63066CD9 FA0F3D63 8D080DF5 3B6E20C8 4C69105E D56041E4 A2677172 3C03E4D1 4B04D447 D20D85FD A50AB56B 35B5A8FA 42B2986C DBBBC9D6 ACBCF940 32D86CE3 45DF5C75 DCD60DCF ABD13D59 26D930AC 51DE003A C8D75180 BFD06116 21B4F4B5 56B3C423 CFBA9599 B8BDA50F 2802B89E 5F058808 C60CD9B2 B10BE924 2F6F7C87 58684C11 C1611DAB B6662D3D 76DC4190 01DB7106 98D220BC EFD5102A 71B18589 06B6B51F 9FBFE4A5 E8B8D433 7807C9A2 0F00F934 9609A88E E10E9818 7F6A0DBB 086D3D2D 91646C97 E6635C01 6B6B51F4 1C6C6162 856530D8 F262004E 6C0695ED 1B01A57B 8208F4C1 F50FC457 65B0D9C6 12B7E950 8BBEB8EA FCB9887C 62DD1DDF 15DA2D49 8CD37CF3 FBD44C65 4DB26158 3AB551CE A3BC0074 D4BB30E2 4ADFA541 3DD895D7 A4D1C46D D3D6F4FB 4369E96A 346ED9FC AD678846 DA60B8D0 44042D73 33031DE5 AA0A4C5F DD0D7CC9 5005713C 270241AA BE0B1010 C90C2086 5768B525 206F85B3 B966D409 CE61E49F 5EDEF90E 29D9C998 B0D09822 C7D7A8B4 59B33D17 2EB40D81 B7BD5C3B C0BA6CAD EDB88320 9ABFB3B6 03B6E20C 74B1D29A EAD54739 9DD277AF 04DB2615 73DC1683 E3630B12 94643B84 0D6D6A3E 7A6A5AA8 E40ECF0B 9309FF9D 0A00AE27 7D079EB1 F00F9344 8708A3D2 1E01F268 6906C2FE F762575D 806567CB 196C3671 6E6B06E7 FED41B76 89D32BE0 10DA7A5A 67DD4ACC F9B9DF6F 8EBEEFF9 17B7BE43 60B08ED5 D6D6A3E8 A1D1937E 38D8C2C4 4FDFF252 D1BB67F1 A6BC5767 3FB506DD 48B2364B D80D2BDA AF0A1B4C 36034AF6 41047A60 DF60EFC3 A867DF55 316E8EEF 4669BE79 CB61B38C BC66831A 256FD2A0 5268E236 CC0C7795 BB0B4703 220216B9 5505262F C5BA3BBE B2BD0B28 2BB45A92 5CB36A04 C2D7FFA7 B5D0CF31 2CD99E8B 5BDEAE1D 9B64C2B0 EC63F226 756AA39C 026D930A 9C0906A9 EB0E363F 72076785 05005713 95BF4A82 E2B87A14 7BB12BAE 0CB61B38 92D28E9B E5D5BE0D 7CDCEFB7 0BDBDF21 86D3D2D4 F1D4E242 68DDB3F8 1FDA836E 81BE16CD F6B9265B 6FB077E1 18B74777 88085AE6 FF0F6A70 66063BCA 11010B5C 8F659EFF F862AE69 616BFFD3 166CCF45 A00AE278 D70DD2EE 4E048354 3903B3C2 A7672661 D06016F7 4969474D 3E6E77DB AED16A4A D9D65ADC 40DF0B66 37D83BF0 A9BCAE53 DEBB9EC5 47B2CF7F 30B5FFE9 BDBDF21C CABAC28A 53B39330 24B4A3A6 BAD03605 CDD70693 54DE5729 23D967BF B3667A2E C4614AB8 5D681B02 2A6F2B94 B40BBE37 C30C8EA1 5A05DF1B 2D02EF8D\".substring(9*r,9*r+8)),n=n>>>8^t;return(-1^n)>>>0}const j=new Map([[\"abs\",function abs(e,n,t){return singleNodeSolver(e,n,t,solveAbs)}],[\"acos\",function acos(e,n,t){return singleNodeSolver(e,n,t,solveACos)}],[\"asin\",function asin(e,n,t){return singleNodeSolver(e,n,t,solveASin)}],[\"atan\",function atan(e,n,t){return singleNodeSolver(e,n,t,solveATan)}],[\"atan2\",function atan2(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveATan2)}],[\"calc\",calc$1],[\"clamp\",function clamp(t,r,u){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!a(e)))],r),l=[],c=[],s=[];{let e=l;for(let t=0;t<i.length;t++){const r=i[t];if(n(r)&&A(r.value)){if(e===s)return-1;if(e===c){e=s;continue}if(e===l){e=c;continue}return-1}e.push(r)}}const v=isNone(l),m=isNone(s);if(v&&m)return calc$1(calcWrapper(c),r,u);const p=solve(calc$1(calcWrapper(c),r,u));if(-1===p)return-1;if(v){const n=solve(calc$1(calcWrapper(s),r,u));return-1===n?-1:solveMin((C=p,g=n,new o([f.Function,\"min(\",-1,-1,{value:\"min\"}],[f.CloseParen,\")\",-1,-1,void 0],[C,new e([f.Comma,\",\",-1,-1,void 0]),g])),[p,n],u)}if(m){const e=solve(calc$1(calcWrapper(l),r,u));return-1===e?-1:solveMax(maxWrapper(e,p),[e,p],u)}var C,g;const d=solve(calc$1(calcWrapper(l),r,u));if(-1===d)return-1;const D=solve(calc$1(calcWrapper(s),r,u));if(-1===D)return-1;return solveClamp(t,d,p,D,u)}],[\"cos\",function cos(e,n,t){return singleNodeSolver(e,n,t,solveCos)}],[\"exp\",function exp(e,n,t){return singleNodeSolver(e,n,t,solveExp)}],[\"hypot\",function hypot(e,n,t){return variadicNodesSolver(e,e.value,n,t,solveHypot)}],[\"log\",function log(e,n,t){return variadicNodesSolver(e,e.value,n,t,solveLog)}],[\"max\",function max(e,n,t){return variadicNodesSolver(e,e.value,n,t,solveMax)}],[\"min\",function min(e,n,t){return variadicNodesSolver(e,e.value,n,t,solveMin)}],[\"mod\",function mod(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveMod)}],[\"pow\",function pow(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solvePow)}],[\"random\",function random(e,n,t){const r=parseRandomValueSharing(e.value.filter((e=>!a(e))),n,t);if(-1===r)return-1;const[u,i]=r,o=variadicArguments(i,n,t);if(-1===o)return-1;const[l,c,s]=o;if(!l||!c)return-1;return solveRandom(e,u,l,c,s,t)}],[\"rem\",function rem(e,n,t){return twoCommaSeparatedNodesSolver(e,n,t,solveRem)}],[\"round\",function round(t,r,u){const i=resolveGlobalsAndConstants([...t.value.filter((e=>!a(e)))],r);let o=\"\",l=!1;const c=[],s=[];{let e=c;for(let t=0;t<i.length;t++){const r=i[t];if(!o&&0===c.length&&0===s.length&&n(r)&&d(r.value)){const e=r.value[4].value.toLowerCase();if(Y.has(e)){o=e;continue}}if(n(r)&&A(r.value)){if(e===s)return-1;if(e===c&&o&&0===c.length)continue;if(e===c){l=!0,e=s;continue}return-1}e.push(r)}}const v=solve(calc$1(calcWrapper(c),r,u));if(-1===v)return-1;l||0!==s.length||s.push(new e([f.Number,\"1\",-1,-1,{value:1,type:m.Integer}]));const p=solve(calc$1(calcWrapper(s),r,u));if(-1===p)return-1;o||(o=\"nearest\");return solveRound(t,o,v,p,u)}],[\"sign\",function sign(e,n,t){return singleNodeSolver(e,n,t,solveSign)}],[\"sin\",function sin(e,n,t){return singleNodeSolver(e,n,t,solveSin)}],[\"sqrt\",function sqrt(e,n,t){return singleNodeSolver(e,n,t,solveSqrt)}],[\"tan\",function tan(e,n,t){return singleNodeSolver(e,n,t,solveTan)}]]);function calc$1(e,t,r){const o=resolveGlobalsAndConstants([...e.value.filter((e=>!a(e)))],t);if(1===o.length&&n(o[0]))return{inputs:[o[0]],operation:unary};let l=0;for(;l<o.length;){const e=o[l];if(u(e)&&N(e.startToken)){const n=calc$1(e,t,r);if(-1===n)return-1;o.splice(l,1,n)}else if(i(e)){const n=j.get(e.getName().toLowerCase());if(!n)return-1;const a=n(e,t,r);if(-1===a)return-1;o.splice(l,1,a)}else l++}if(l=0,1===o.length&&isCalculation(o[0]))return o[0];for(;l<o.length;){const e=o[l];if(!e||!n(e)&&!isCalculation(e)){l++;continue}const t=o[l+1];if(!t||!n(t)){l++;continue}const r=t.value;if(!B(r)||\"*\"!==r[4].value&&\"/\"!==r[4].value){l++;continue}const a=o[l+2];if(!a||!n(a)&&!isCalculation(a))return-1;\"*\"!==r[4].value?\"/\"!==r[4].value?l++:o.splice(l,3,{inputs:[e,a],operation:division}):o.splice(l,3,{inputs:[e,a],operation:multiplication})}if(l=0,1===o.length&&isCalculation(o[0]))return o[0];for(;l<o.length;){const e=o[l];if(!e||!n(e)&&!isCalculation(e)){l++;continue}const t=o[l+1];if(!t||!n(t)){l++;continue}const r=t.value;if(!B(r)||\"+\"!==r[4].value&&\"-\"!==r[4].value){l++;continue}const a=o[l+2];if(!a||!n(a)&&!isCalculation(a))return-1;\"+\"!==r[4].value?\"-\"!==r[4].value?l++:o.splice(l,3,{inputs:[e,a],operation:subtraction}):o.splice(l,3,{inputs:[e,a],operation:addition})}return 1===o.length&&isCalculation(o[0])?o[0]:-1}function singleNodeSolver(e,n,t,r){const a=singleArgument(e.value,n,t);return-1===a?-1:r(e,a,t)}function singleArgument(e,n,t){const r=solve(calc$1(calcWrapper(resolveGlobalsAndConstants([...e.filter((e=>!a(e)))],n)),n,t));return-1===r?-1:r}function twoCommaSeparatedNodesSolver(e,n,t,r){const a=twoCommaSeparatedArguments(e.value,n,t);if(-1===a)return-1;const[u,i]=a;return r(e,u,i,t)}function twoCommaSeparatedArguments(e,t,r){const u=resolveGlobalsAndConstants([...e.filter((e=>!a(e)))],t),i=[],o=[];{let e=i;for(let t=0;t<u.length;t++){const r=u[t];if(n(r)&&A(r.value)){if(e===o)return-1;if(e===i){e=o;continue}return-1}e.push(r)}}const l=solve(calc$1(calcWrapper(i),t,r));if(-1===l)return-1;const c=solve(calc$1(calcWrapper(o),t,r));return-1===c?-1:[l,c]}function variadicNodesSolver(e,n,t,r,a){const u=variadicArguments(e.value,t,r);return-1===u?-1:a(e,u,r)}function variadicArguments(e,t,r){const u=resolveGlobalsAndConstants([...e.filter((e=>!a(e)))],t),i=[];{const e=[];let a=[];for(let t=0;t<u.length;t++){const r=u[t];n(r)&&A(r.value)?(e.push(a),a=[]):a.push(r)}e.push(a);for(let n=0;n<e.length;n++){if(0===e[n].length)return-1;const a=solve(calc$1(calcWrapper(e[n]),t,r));if(-1===a)return-1;i.push(a)}}return i}const Y=new Set([\"nearest\",\"up\",\"down\",\"to-zero\"]);function parseRandomValueSharing(e,t,r){const a={isAuto:!1,dashedIdent:\"\",fixed:-1,elementShared:!1},u=e[0];if(!n(u)||!d(u.value))return[a,e];for(let u=0;u<e.length;u++){const i=e[u];if(!n(i))return-1;if(A(i.value))return[a,e.slice(u+1)];if(!d(i.value))return-1;const o=i.value[4].value.toLowerCase();if(\"element-shared\"!==o)if(\"fixed\"!==o)if(\"auto\"!==o)if(o.startsWith(\"--\")){if(-1!==a.fixed||a.isAuto)return-1;a.dashedIdent=o}else;else{if(-1!==a.fixed||a.dashedIdent)return-1;a.isAuto=!0}else{if(a.elementShared||a.dashedIdent||a.isAuto)return-1;u++;const n=e[u];if(!n)return-1;const i=solve(calc$1(calcWrapper([n]),t,r));if(-1===i)return-1;if(!C(i.value))return-1;if(i.value[4].value<0||i.value[4].value>1)return-1;a.fixed=Math.max(0,Math.min(i.value[4].value,1-1e-9))}else{if(-1!==a.fixed)return-1;a.elementShared=!0}}return-1}function calcWrapper(e){return new o([f.Function,\"calc(\",-1,-1,{value:\"calc\"}],[f.CloseParen,\")\",-1,-1,void 0],e)}function maxWrapper(n,t){return new o([f.Function,\"max(\",-1,-1,{value:\"max\"}],[f.CloseParen,\")\",-1,-1,void 0],[n,new e([f.Comma,\",\",-1,-1,void 0]),t])}function patchNaN(n){if(-1===n)return-1;if(i(n))return n;const t=n.value;return D(t)&&Number.isNaN(t[4].value)?C(t)?new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}])]):v(t)?new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Dimension,\"1\"+t[4].unit,t[2],t[3],{value:1,type:m.Integer,unit:t[4].unit}])]):g(t)?new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,\"NaN\",t[2],t[3],{value:\"NaN\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Percentage,\"1%\",t[2],t[3],{value:1}])]):-1:n}function patchInfinity(n){if(-1===n)return-1;if(i(n))return n;const t=n.value;if(!D(t))return n;if(Number.isFinite(t[4].value)||Number.isNaN(t[4].value))return n;let r=\"\";return Number.NEGATIVE_INFINITY===t[4].value&&(r=\"-\"),C(t)?new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}])]):v(t)?new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Dimension,\"1\"+t[4].unit,t[2],t[3],{value:1,type:m.Integer,unit:t[4].unit}])]):new o([f.Function,\"calc(\",t[2],t[3],{value:\"calc\"}],[f.CloseParen,\")\",t[2],t[3],void 0],[new e([f.Ident,r+\"infinity\",t[2],t[3],{value:r+\"infinity\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Delim,\"*\",t[2],t[3],{value:\"*\"}]),new l([[f.Whitespace,\" \",t[2],t[3],void 0]]),new e([f.Percentage,\"1%\",t[2],t[3],{value:1}])])}function patchMinusZero(e){if(-1===e)return-1;if(i(e))return e;const n=e.value;return D(n)&&Object.is(-0,n[4].value)?(\"-0\"===n[1]||(g(n)?n[1]=\"-0%\":v(n)?n[1]=\"-0\"+n[4].unit:n[1]=\"-0\"),e):e}function patchPrecision(e,n=13){if(-1===e)return-1;if(n<=0)return e;if(i(e))return e;const t=e.value;if(!D(t))return e;if(Number.isInteger(t[4].value))return e;const r=Number(t[4].value.toFixed(n)).toString();return C(t)?t[1]=r:g(t)?t[1]=r+\"%\":v(t)&&(t[1]=r+t[4].unit),e}function patchCanonicalUnit(e){return-1===e?-1:i(e)?e:v(e.value)?(e.value=toCanonicalUnit(e.value),e):e}function patchCalcResult(e,n){let t=e;return n?.toCanonicalUnits&&(t=patchCanonicalUnit(t)),t=patchPrecision(t,n?.precision),t=patchMinusZero(t),n?.censorIntoStandardRepresentableValues||(t=patchNaN(t),t=patchInfinity(t)),t}function tokenizeGlobals(e){const n=new Map;if(!e)return n;for(const[t,r]of e)if(h(r))n.set(t,r);else if(\"string\"!=typeof r);else{const e=F({css:r}),a=e.nextToken();if(e.nextToken(),!e.endOfFile())continue;if(!D(a))continue;n.set(t,a)}return n}function calc(e,n){return calcFromComponentValues(c(b({css:e}),{}),n).map((e=>e.map((e=>w(...e.tokens()))).join(\"\"))).join(\",\")}function calcFromComponentValues(e,n){const t=tokenizeGlobals(n?.globals);return s(e,(e=>{if(!i(e))return;const r=j.get(e.getName().toLowerCase());if(!r)return;const a=patchCalcResult(solve(r(e,t,n??{})),n);return-1!==a?a:void 0}))}const _=new Set(j.keys());export{calc,calcFromComponentValues,_ as mathFunctionNames};\n","/**\n * @module LRUCache\n */\nconst defaultPerf = (typeof performance === 'object' &&\n performance &&\n typeof performance.now === 'function') ?\n performance\n : Date;\nconst warned = new Set();\n/* c8 ignore start */\nconst PROCESS = (typeof process === 'object' && !!process ?\n process\n : {});\n/* c8 ignore start */\nconst emitWarning = (msg, type, code, fn) => {\n typeof PROCESS.emitWarning === 'function' ?\n PROCESS.emitWarning(msg, type, code, fn)\n : console.error(`[${code}] ${type}: ${msg}`);\n};\nlet AC = globalThis.AbortController;\nlet AS = globalThis.AbortSignal;\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n //@ts-ignore\n AS = class AbortSignal {\n onabort;\n _onabort = [];\n reason;\n aborted = false;\n addEventListener(_, fn) {\n this._onabort.push(fn);\n }\n };\n //@ts-ignore\n AC = class AbortController {\n constructor() {\n warnACPolyfill();\n }\n signal = new AS();\n abort(reason) {\n if (this.signal.aborted)\n return;\n //@ts-ignore\n this.signal.reason = reason;\n //@ts-ignore\n this.signal.aborted = true;\n //@ts-ignore\n for (const fn of this.signal._onabort) {\n fn(reason);\n }\n this.signal.onabort?.(reason);\n }\n };\n let printACPolyfillWarning = PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1';\n const warnACPolyfill = () => {\n if (!printACPolyfillWarning)\n return;\n printACPolyfillWarning = false;\n emitWarning('AbortController is not defined. If using lru-cache in ' +\n 'node 14, load an AbortController polyfill from the ' +\n '`node-abort-controller` package. A minimal polyfill is ' +\n 'provided for use by LRUCache.fetch(), but it should not be ' +\n 'relied upon in other contexts (eg, passing it to other APIs that ' +\n 'use AbortController/AbortSignal might have undesirable effects). ' +\n 'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.', 'NO_ABORT_CONTROLLER', 'ENOTSUP', warnACPolyfill);\n };\n}\n/* c8 ignore stop */\nconst shouldWarn = (code) => !warned.has(code);\nconst TYPE = Symbol('type');\nconst isPosInt = (n) => n && n === Math.floor(n) && n > 0 && isFinite(n);\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values. Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max) => !isPosInt(max) ? null\n : max <= Math.pow(2, 8) ? Uint8Array\n : max <= Math.pow(2, 16) ? Uint16Array\n : max <= Math.pow(2, 32) ? Uint32Array\n : max <= Number.MAX_SAFE_INTEGER ? ZeroArray\n : null;\n/* c8 ignore stop */\nclass ZeroArray extends Array {\n constructor(size) {\n super(size);\n this.fill(0);\n }\n}\nclass Stack {\n heap;\n length;\n // private constructor\n static #constructing = false;\n static create(max) {\n const HeapCls = getUintArray(max);\n if (!HeapCls)\n return [];\n Stack.#constructing = true;\n const s = new Stack(max, HeapCls);\n Stack.#constructing = false;\n return s;\n }\n constructor(max, HeapCls) {\n /* c8 ignore start */\n if (!Stack.#constructing) {\n throw new TypeError('instantiate Stack using Stack.create(n)');\n }\n /* c8 ignore stop */\n this.heap = new HeapCls(max);\n this.length = 0;\n }\n push(n) {\n this.heap[this.length++] = n;\n }\n pop() {\n return this.heap[--this.length];\n }\n}\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache {\n // options that cannot be changed without disaster\n #max;\n #maxSize;\n #dispose;\n #onInsert;\n #disposeAfter;\n #fetchMethod;\n #memoMethod;\n #perf;\n /**\n * {@link LRUCache.OptionsBase.perf}\n */\n get perf() {\n return this.#perf;\n }\n /**\n * {@link LRUCache.OptionsBase.ttl}\n */\n ttl;\n /**\n * {@link LRUCache.OptionsBase.ttlResolution}\n */\n ttlResolution;\n /**\n * {@link LRUCache.OptionsBase.ttlAutopurge}\n */\n ttlAutopurge;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnGet}\n */\n updateAgeOnGet;\n /**\n * {@link LRUCache.OptionsBase.updateAgeOnHas}\n */\n updateAgeOnHas;\n /**\n * {@link LRUCache.OptionsBase.allowStale}\n */\n allowStale;\n /**\n * {@link LRUCache.OptionsBase.noDisposeOnSet}\n */\n noDisposeOnSet;\n /**\n * {@link LRUCache.OptionsBase.noUpdateTTL}\n */\n noUpdateTTL;\n /**\n * {@link LRUCache.OptionsBase.maxEntrySize}\n */\n maxEntrySize;\n /**\n * {@link LRUCache.OptionsBase.sizeCalculation}\n */\n sizeCalculation;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n */\n noDeleteOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n */\n noDeleteOnStaleGet;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n */\n allowStaleOnFetchAbort;\n /**\n * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n */\n allowStaleOnFetchRejection;\n /**\n * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n */\n ignoreFetchAbort;\n // computed properties\n #size;\n #calculatedSize;\n #keyMap;\n #keyList;\n #valList;\n #next;\n #prev;\n #head;\n #tail;\n #free;\n #disposed;\n #sizes;\n #starts;\n #ttls;\n #hasDispose;\n #hasFetchMethod;\n #hasDisposeAfter;\n #hasOnInsert;\n /**\n * Do not call this method unless you need to inspect the\n * inner workings of the cache. If anything returned by this\n * object is modified in any way, strange breakage may occur.\n *\n * These fields are private for a reason!\n *\n * @internal\n */\n static unsafeExposeInternals(c) {\n return {\n // properties\n starts: c.#starts,\n ttls: c.#ttls,\n sizes: c.#sizes,\n keyMap: c.#keyMap,\n keyList: c.#keyList,\n valList: c.#valList,\n next: c.#next,\n prev: c.#prev,\n get head() {\n return c.#head;\n },\n get tail() {\n return c.#tail;\n },\n free: c.#free,\n // methods\n isBackgroundFetch: (p) => c.#isBackgroundFetch(p),\n backgroundFetch: (k, index, options, context) => c.#backgroundFetch(k, index, options, context),\n moveToTail: (index) => c.#moveToTail(index),\n indexes: (options) => c.#indexes(options),\n rindexes: (options) => c.#rindexes(options),\n isStale: (index) => c.#isStale(index),\n };\n }\n // Protected read-only members\n /**\n * {@link LRUCache.OptionsBase.max} (read-only)\n */\n get max() {\n return this.#max;\n }\n /**\n * {@link LRUCache.OptionsBase.maxSize} (read-only)\n */\n get maxSize() {\n return this.#maxSize;\n }\n /**\n * The total computed size of items in the cache (read-only)\n */\n get calculatedSize() {\n return this.#calculatedSize;\n }\n /**\n * The number of items stored in the cache (read-only)\n */\n get size() {\n return this.#size;\n }\n /**\n * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n */\n get fetchMethod() {\n return this.#fetchMethod;\n }\n get memoMethod() {\n return this.#memoMethod;\n }\n /**\n * {@link LRUCache.OptionsBase.dispose} (read-only)\n */\n get dispose() {\n return this.#dispose;\n }\n /**\n * {@link LRUCache.OptionsBase.onInsert} (read-only)\n */\n get onInsert() {\n return this.#onInsert;\n }\n /**\n * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n */\n get disposeAfter() {\n return this.#disposeAfter;\n }\n constructor(options) {\n const { max = 0, ttl, ttlResolution = 1, ttlAutopurge, updateAgeOnGet, updateAgeOnHas, allowStale, dispose, onInsert, disposeAfter, noDisposeOnSet, noUpdateTTL, maxSize = 0, maxEntrySize = 0, sizeCalculation, fetchMethod, memoMethod, noDeleteOnFetchRejection, noDeleteOnStaleGet, allowStaleOnFetchRejection, allowStaleOnFetchAbort, ignoreFetchAbort, perf, } = options;\n if (perf !== undefined) {\n if (typeof perf?.now !== 'function') {\n throw new TypeError('perf option must have a now() method if specified');\n }\n }\n this.#perf = perf ?? defaultPerf;\n if (max !== 0 && !isPosInt(max)) {\n throw new TypeError('max option must be a nonnegative integer');\n }\n const UintArray = max ? getUintArray(max) : Array;\n if (!UintArray) {\n throw new Error('invalid max value: ' + max);\n }\n this.#max = max;\n this.#maxSize = maxSize;\n this.maxEntrySize = maxEntrySize || this.#maxSize;\n this.sizeCalculation = sizeCalculation;\n if (this.sizeCalculation) {\n if (!this.#maxSize && !this.maxEntrySize) {\n throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');\n }\n if (typeof this.sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation set to non-function');\n }\n }\n if (memoMethod !== undefined &&\n typeof memoMethod !== 'function') {\n throw new TypeError('memoMethod must be a function if defined');\n }\n this.#memoMethod = memoMethod;\n if (fetchMethod !== undefined &&\n typeof fetchMethod !== 'function') {\n throw new TypeError('fetchMethod must be a function if specified');\n }\n this.#fetchMethod = fetchMethod;\n this.#hasFetchMethod = !!fetchMethod;\n this.#keyMap = new Map();\n this.#keyList = new Array(max).fill(undefined);\n this.#valList = new Array(max).fill(undefined);\n this.#next = new UintArray(max);\n this.#prev = new UintArray(max);\n this.#head = 0;\n this.#tail = 0;\n this.#free = Stack.create(max);\n this.#size = 0;\n this.#calculatedSize = 0;\n if (typeof dispose === 'function') {\n this.#dispose = dispose;\n }\n if (typeof onInsert === 'function') {\n this.#onInsert = onInsert;\n }\n if (typeof disposeAfter === 'function') {\n this.#disposeAfter = disposeAfter;\n this.#disposed = [];\n }\n else {\n this.#disposeAfter = undefined;\n this.#disposed = undefined;\n }\n this.#hasDispose = !!this.#dispose;\n this.#hasOnInsert = !!this.#onInsert;\n this.#hasDisposeAfter = !!this.#disposeAfter;\n this.noDisposeOnSet = !!noDisposeOnSet;\n this.noUpdateTTL = !!noUpdateTTL;\n this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;\n this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection;\n this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort;\n this.ignoreFetchAbort = !!ignoreFetchAbort;\n // NB: maxEntrySize is set to maxSize if it's set\n if (this.maxEntrySize !== 0) {\n if (this.#maxSize !== 0) {\n if (!isPosInt(this.#maxSize)) {\n throw new TypeError('maxSize must be a positive integer if specified');\n }\n }\n if (!isPosInt(this.maxEntrySize)) {\n throw new TypeError('maxEntrySize must be a positive integer if specified');\n }\n this.#initializeSizeTracking();\n }\n this.allowStale = !!allowStale;\n this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;\n this.updateAgeOnGet = !!updateAgeOnGet;\n this.updateAgeOnHas = !!updateAgeOnHas;\n this.ttlResolution =\n isPosInt(ttlResolution) || ttlResolution === 0 ?\n ttlResolution\n : 1;\n this.ttlAutopurge = !!ttlAutopurge;\n this.ttl = ttl || 0;\n if (this.ttl) {\n if (!isPosInt(this.ttl)) {\n throw new TypeError('ttl must be a positive integer if specified');\n }\n this.#initializeTTLTracking();\n }\n // do not allow completely unbounded caches\n if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n throw new TypeError('At least one of max, maxSize, or ttl is required');\n }\n if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n const code = 'LRU_CACHE_UNBOUNDED';\n if (shouldWarn(code)) {\n warned.add(code);\n const msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' +\n 'result in unbounded memory consumption.';\n emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);\n }\n }\n }\n /**\n * Return the number of ms left in the item's TTL. If item is not in cache,\n * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n */\n getRemainingTTL(key) {\n return this.#keyMap.has(key) ? Infinity : 0;\n }\n #initializeTTLTracking() {\n const ttls = new ZeroArray(this.#max);\n const starts = new ZeroArray(this.#max);\n this.#ttls = ttls;\n this.#starts = starts;\n this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {\n starts[index] = ttl !== 0 ? start : 0;\n ttls[index] = ttl;\n if (ttl !== 0 && this.ttlAutopurge) {\n const t = setTimeout(() => {\n if (this.#isStale(index)) {\n this.#delete(this.#keyList[index], 'expire');\n }\n }, ttl + 1);\n // unref() not supported on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n };\n this.#updateItemAge = index => {\n starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0;\n };\n this.#statusTTL = (status, index) => {\n if (ttls[index]) {\n const ttl = ttls[index];\n const start = starts[index];\n /* c8 ignore next */\n if (!ttl || !start)\n return;\n status.ttl = ttl;\n status.start = start;\n status.now = cachedNow || getNow();\n const age = status.now - start;\n status.remainingTTL = ttl - age;\n }\n };\n // debounce calls to perf.now() to 1s so we're not hitting\n // that costly call repeatedly.\n let cachedNow = 0;\n const getNow = () => {\n const n = this.#perf.now();\n if (this.ttlResolution > 0) {\n cachedNow = n;\n const t = setTimeout(() => (cachedNow = 0), this.ttlResolution);\n // not available on all platforms\n /* c8 ignore start */\n if (t.unref) {\n t.unref();\n }\n /* c8 ignore stop */\n }\n return n;\n };\n this.getRemainingTTL = key => {\n const index = this.#keyMap.get(key);\n if (index === undefined) {\n return 0;\n }\n const ttl = ttls[index];\n const start = starts[index];\n if (!ttl || !start) {\n return Infinity;\n }\n const age = (cachedNow || getNow()) - start;\n return ttl - age;\n };\n this.#isStale = index => {\n const s = starts[index];\n const t = ttls[index];\n return !!t && !!s && (cachedNow || getNow()) - s > t;\n };\n }\n // conditionally set private methods related to TTL\n #updateItemAge = () => { };\n #statusTTL = () => { };\n #setItemTTL = () => { };\n /* c8 ignore stop */\n #isStale = () => false;\n #initializeSizeTracking() {\n const sizes = new ZeroArray(this.#max);\n this.#calculatedSize = 0;\n this.#sizes = sizes;\n this.#removeItemSize = index => {\n this.#calculatedSize -= sizes[index];\n sizes[index] = 0;\n };\n this.#requireSize = (k, v, size, sizeCalculation) => {\n // provisionally accept background fetches.\n // actual value size will be checked when they return.\n if (this.#isBackgroundFetch(v)) {\n return 0;\n }\n if (!isPosInt(size)) {\n if (sizeCalculation) {\n if (typeof sizeCalculation !== 'function') {\n throw new TypeError('sizeCalculation must be a function');\n }\n size = sizeCalculation(v, k);\n if (!isPosInt(size)) {\n throw new TypeError('sizeCalculation return invalid (expect positive integer)');\n }\n }\n else {\n throw new TypeError('invalid size value (must be positive integer). ' +\n 'When maxSize or maxEntrySize is used, sizeCalculation ' +\n 'or size must be set.');\n }\n }\n return size;\n };\n this.#addItemSize = (index, size, status) => {\n sizes[index] = size;\n if (this.#maxSize) {\n const maxSize = this.#maxSize - sizes[index];\n while (this.#calculatedSize > maxSize) {\n this.#evict(true);\n }\n }\n this.#calculatedSize += sizes[index];\n if (status) {\n status.entrySize = size;\n status.totalCalculatedSize = this.#calculatedSize;\n }\n };\n }\n #removeItemSize = _i => { };\n #addItemSize = (_i, _s, _st) => { };\n #requireSize = (_k, _v, size, sizeCalculation) => {\n if (size || sizeCalculation) {\n throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');\n }\n return 0;\n };\n *#indexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#tail; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#head) {\n break;\n }\n else {\n i = this.#prev[i];\n }\n }\n }\n }\n *#rindexes({ allowStale = this.allowStale } = {}) {\n if (this.#size) {\n for (let i = this.#head; true;) {\n if (!this.#isValidIndex(i)) {\n break;\n }\n if (allowStale || !this.#isStale(i)) {\n yield i;\n }\n if (i === this.#tail) {\n break;\n }\n else {\n i = this.#next[i];\n }\n }\n }\n }\n #isValidIndex(index) {\n return (index !== undefined &&\n this.#keyMap.get(this.#keyList[index]) === index);\n }\n /**\n * Return a generator yielding `[key, value]` pairs,\n * in order from most recently used to least recently used.\n */\n *entries() {\n for (const i of this.#indexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.entries}\n *\n * Return a generator yielding `[key, value]` pairs,\n * in order from least recently used to most recently used.\n */\n *rentries() {\n for (const i of this.#rindexes()) {\n if (this.#valList[i] !== undefined &&\n this.#keyList[i] !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield [this.#keyList[i], this.#valList[i]];\n }\n }\n }\n /**\n * Return a generator yielding the keys in the cache,\n * in order from most recently used to least recently used.\n */\n *keys() {\n for (const i of this.#indexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.keys}\n *\n * Return a generator yielding the keys in the cache,\n * in order from least recently used to most recently used.\n */\n *rkeys() {\n for (const i of this.#rindexes()) {\n const k = this.#keyList[i];\n if (k !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield k;\n }\n }\n }\n /**\n * Return a generator yielding the values in the cache,\n * in order from most recently used to least recently used.\n */\n *values() {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Inverse order version of {@link LRUCache.values}\n *\n * Return a generator yielding the values in the cache,\n * in order from least recently used to most recently used.\n */\n *rvalues() {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n if (v !== undefined &&\n !this.#isBackgroundFetch(this.#valList[i])) {\n yield this.#valList[i];\n }\n }\n }\n /**\n * Iterating over the cache itself yields the same results as\n * {@link LRUCache.entries}\n */\n [Symbol.iterator]() {\n return this.entries();\n }\n /**\n * A String value that is used in the creation of the default string\n * description of an object. Called by the built-in method\n * `Object.prototype.toString`.\n */\n [Symbol.toStringTag] = 'LRUCache';\n /**\n * Find a value for which the supplied fn method returns a truthy value,\n * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n */\n find(fn, getOptions = {}) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n if (value === undefined)\n continue;\n if (fn(value, this.#keyList[i], this)) {\n return this.get(this.#keyList[i], getOptions);\n }\n }\n }\n /**\n * Call the supplied function on each item in the cache, in order from most\n * recently used to least recently used.\n *\n * `fn` is called as `fn(value, key, cache)`.\n *\n * If `thisp` is provided, function will be called in the `this`-context of\n * the provided object, or the cache if no `thisp` object is provided.\n *\n * Does not update age or recenty of use, or iterate over stale values.\n */\n forEach(fn, thisp = this) {\n for (const i of this.#indexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * The same as {@link LRUCache.forEach} but items are iterated over in\n * reverse order. (ie, less recently used items are iterated over first.)\n */\n rforEach(fn, thisp = this) {\n for (const i of this.#rindexes()) {\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n if (value === undefined)\n continue;\n fn.call(thisp, value, this.#keyList[i], this);\n }\n }\n /**\n * Delete any stale entries. Returns true if anything was removed,\n * false otherwise.\n */\n purgeStale() {\n let deleted = false;\n for (const i of this.#rindexes({ allowStale: true })) {\n if (this.#isStale(i)) {\n this.#delete(this.#keyList[i], 'expire');\n deleted = true;\n }\n }\n return deleted;\n }\n /**\n * Get the extended info about a given entry, to get its value, size, and\n * TTL info simultaneously. Returns `undefined` if the key is not present.\n *\n * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n * serialization, the `start` value is always the current timestamp, and the\n * `ttl` is a calculated remaining time to live (negative if expired).\n *\n * Always returns stale values, if their info is found in the cache, so be\n * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n * if relevant.\n */\n info(key) {\n const i = this.#keyMap.get(key);\n if (i === undefined)\n return undefined;\n const v = this.#valList[i];\n /* c8 ignore start - this isn't tested for the info function,\n * but it's the same logic as found in other places. */\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n if (value === undefined)\n return undefined;\n /* c8 ignore end */\n const entry = { value };\n if (this.#ttls && this.#starts) {\n const ttl = this.#ttls[i];\n const start = this.#starts[i];\n if (ttl && start) {\n const remain = ttl - (this.#perf.now() - start);\n entry.ttl = remain;\n entry.start = Date.now();\n }\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n return entry;\n }\n /**\n * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n * passed to {@link LRUCache#load}.\n *\n * The `start` fields are calculated relative to a portable `Date.now()`\n * timestamp, even if `performance.now()` is available.\n *\n * Stale entries are always included in the `dump`, even if\n * {@link LRUCache.OptionsBase.allowStale} is false.\n *\n * Note: this returns an actual array, not a generator, so it can be more\n * easily passed around.\n */\n dump() {\n const arr = [];\n for (const i of this.#indexes({ allowStale: true })) {\n const key = this.#keyList[i];\n const v = this.#valList[i];\n const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n if (value === undefined || key === undefined)\n continue;\n const entry = { value };\n if (this.#ttls && this.#starts) {\n entry.ttl = this.#ttls[i];\n // always dump the start relative to a portable timestamp\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = this.#perf.now() - this.#starts[i];\n entry.start = Math.floor(Date.now() - age);\n }\n if (this.#sizes) {\n entry.size = this.#sizes[i];\n }\n arr.unshift([key, entry]);\n }\n return arr;\n }\n /**\n * Reset the cache and load in the items in entries in the order listed.\n *\n * The shape of the resulting cache may be different if the same options are\n * not used in both caches.\n *\n * The `start` fields are assumed to be calculated relative to a portable\n * `Date.now()` timestamp, even if `performance.now()` is available.\n */\n load(arr) {\n this.clear();\n for (const [key, entry] of arr) {\n if (entry.start) {\n // entry.start is a portable timestamp, but we may be using\n // node's performance.now(), so calculate the offset, so that\n // we get the intended remaining TTL, no matter how long it's\n // been on ice.\n //\n // it's ok for this to be a bit slow, it's a rare operation.\n const age = Date.now() - entry.start;\n entry.start = this.#perf.now() - age;\n }\n this.set(key, entry.value, entry);\n }\n }\n /**\n * Add a value to the cache.\n *\n * Note: if `undefined` is specified as a value, this is an alias for\n * {@link LRUCache#delete}\n *\n * Fields on the {@link LRUCache.SetOptions} options param will override\n * their corresponding values in the constructor options for the scope\n * of this single `set()` operation.\n *\n * If `start` is provided, then that will set the effective start\n * time for the TTL calculation. Note that this must be a previous\n * value of `performance.now()` if supported, or a previous value of\n * `Date.now()` if not.\n *\n * Options object may also include `size`, which will prevent\n * calling the `sizeCalculation` function and just use the specified\n * number if it is a positive integer, and `noDisposeOnSet` which\n * will prevent calling a `dispose` function in the case of\n * overwrites.\n *\n * If the `size` (or return value of `sizeCalculation`) for a given\n * entry is greater than `maxEntrySize`, then the item will not be\n * added to the cache.\n *\n * Will update the recency of the entry.\n *\n * If the value is `undefined`, then this is an alias for\n * `cache.delete(key)`. `undefined` is never stored in the cache.\n */\n set(k, v, setOptions = {}) {\n if (v === undefined) {\n this.delete(k);\n return this;\n }\n const { ttl = this.ttl, start, noDisposeOnSet = this.noDisposeOnSet, sizeCalculation = this.sizeCalculation, status, } = setOptions;\n let { noUpdateTTL = this.noUpdateTTL } = setOptions;\n const size = this.#requireSize(k, v, setOptions.size || 0, sizeCalculation);\n // if the item doesn't fit, don't do anything\n // NB: maxEntrySize set to maxSize by default\n if (this.maxEntrySize && size > this.maxEntrySize) {\n if (status) {\n status.set = 'miss';\n status.maxEntrySizeExceeded = true;\n }\n // have to delete, in case something is there already.\n this.#delete(k, 'set');\n return this;\n }\n let index = this.#size === 0 ? undefined : this.#keyMap.get(k);\n if (index === undefined) {\n // addition\n index = (this.#size === 0 ? this.#tail\n : this.#free.length !== 0 ? this.#free.pop()\n : this.#size === this.#max ? this.#evict(false)\n : this.#size);\n this.#keyList[index] = k;\n this.#valList[index] = v;\n this.#keyMap.set(k, index);\n this.#next[this.#tail] = index;\n this.#prev[index] = this.#tail;\n this.#tail = index;\n this.#size++;\n this.#addItemSize(index, size, status);\n if (status)\n status.set = 'add';\n noUpdateTTL = false;\n if (this.#hasOnInsert) {\n this.#onInsert?.(v, k, 'add');\n }\n }\n else {\n // update\n this.#moveToTail(index);\n const oldVal = this.#valList[index];\n if (v !== oldVal) {\n if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n oldVal.__abortController.abort(new Error('replaced'));\n const { __staleWhileFetching: s } = oldVal;\n if (s !== undefined && !noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(s, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([s, k, 'set']);\n }\n }\n }\n else if (!noDisposeOnSet) {\n if (this.#hasDispose) {\n this.#dispose?.(oldVal, k, 'set');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([oldVal, k, 'set']);\n }\n }\n this.#removeItemSize(index);\n this.#addItemSize(index, size, status);\n this.#valList[index] = v;\n if (status) {\n status.set = 'replace';\n const oldValue = oldVal && this.#isBackgroundFetch(oldVal) ?\n oldVal.__staleWhileFetching\n : oldVal;\n if (oldValue !== undefined)\n status.oldValue = oldValue;\n }\n }\n else if (status) {\n status.set = 'update';\n }\n if (this.#hasOnInsert) {\n this.onInsert?.(v, k, v === oldVal ? 'update' : 'replace');\n }\n }\n if (ttl !== 0 && !this.#ttls) {\n this.#initializeTTLTracking();\n }\n if (this.#ttls) {\n if (!noUpdateTTL) {\n this.#setItemTTL(index, ttl, start);\n }\n if (status)\n this.#statusTTL(status, index);\n }\n if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return this;\n }\n /**\n * Evict the least recently used item, returning its value or\n * `undefined` if cache is empty.\n */\n pop() {\n try {\n while (this.#size) {\n const val = this.#valList[this.#head];\n this.#evict(true);\n if (this.#isBackgroundFetch(val)) {\n if (val.__staleWhileFetching) {\n return val.__staleWhileFetching;\n }\n }\n else if (val !== undefined) {\n return val;\n }\n }\n }\n finally {\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n }\n #evict(free) {\n const head = this.#head;\n const k = this.#keyList[head];\n const v = this.#valList[head];\n if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('evicted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, 'evict');\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, 'evict']);\n }\n }\n this.#removeItemSize(head);\n // if we aren't about to use the index, then null these out\n if (free) {\n this.#keyList[head] = undefined;\n this.#valList[head] = undefined;\n this.#free.push(head);\n }\n if (this.#size === 1) {\n this.#head = this.#tail = 0;\n this.#free.length = 0;\n }\n else {\n this.#head = this.#next[head];\n }\n this.#keyMap.delete(k);\n this.#size--;\n return head;\n }\n /**\n * Check if a key is in the cache, without updating the recency of use.\n * Will return false if the item is stale, even though it is technically\n * in the cache.\n *\n * Check if a key is in the cache, without updating the recency of\n * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n * to `true` in either the options or the constructor.\n *\n * Will return `false` if the item is stale, even though it is technically in\n * the cache. The difference can be determined (if it matters) by using a\n * `status` argument, and inspecting the `has` field.\n *\n * Will not update item age unless\n * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n */\n has(k, hasOptions = {}) {\n const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v) &&\n v.__staleWhileFetching === undefined) {\n return false;\n }\n if (!this.#isStale(index)) {\n if (updateAgeOnHas) {\n this.#updateItemAge(index);\n }\n if (status) {\n status.has = 'hit';\n this.#statusTTL(status, index);\n }\n return true;\n }\n else if (status) {\n status.has = 'stale';\n this.#statusTTL(status, index);\n }\n }\n else if (status) {\n status.has = 'miss';\n }\n return false;\n }\n /**\n * Like {@link LRUCache#get} but doesn't update recency or delete stale\n * items.\n *\n * Returns `undefined` if the item is stale, unless\n * {@link LRUCache.OptionsBase.allowStale} is set.\n */\n peek(k, peekOptions = {}) {\n const { allowStale = this.allowStale } = peekOptions;\n const index = this.#keyMap.get(k);\n if (index === undefined ||\n (!allowStale && this.#isStale(index))) {\n return;\n }\n const v = this.#valList[index];\n // either stale and allowed, or forcing a refresh of non-stale value\n return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v;\n }\n #backgroundFetch(k, index, options, context) {\n const v = index === undefined ? undefined : this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n return v;\n }\n const ac = new AC();\n const { signal } = options;\n // when/if our AC signals, then stop listening to theirs.\n signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n signal: ac.signal,\n });\n const fetchOpts = {\n signal: ac.signal,\n options,\n context,\n };\n const cb = (v, updateCache = false) => {\n const { aborted } = ac.signal;\n const ignoreAbort = options.ignoreFetchAbort && v !== undefined;\n if (options.status) {\n if (aborted && !updateCache) {\n options.status.fetchAborted = true;\n options.status.fetchError = ac.signal.reason;\n if (ignoreAbort)\n options.status.fetchAbortIgnored = true;\n }\n else {\n options.status.fetchResolved = true;\n }\n }\n if (aborted && !ignoreAbort && !updateCache) {\n return fetchFail(ac.signal.reason);\n }\n // either we didn't abort, and are still here, or we did, and ignored\n const bf = p;\n if (this.#valList[index] === p) {\n if (v === undefined) {\n if (bf.__staleWhileFetching !== undefined) {\n this.#valList[index] = bf.__staleWhileFetching;\n }\n else {\n this.#delete(k, 'fetch');\n }\n }\n else {\n if (options.status)\n options.status.fetchUpdated = true;\n this.set(k, v, fetchOpts.options);\n }\n }\n return v;\n };\n const eb = (er) => {\n if (options.status) {\n options.status.fetchRejected = true;\n options.status.fetchError = er;\n }\n return fetchFail(er);\n };\n const fetchFail = (er) => {\n const { aborted } = ac.signal;\n const allowStaleAborted = aborted && options.allowStaleOnFetchAbort;\n const allowStale = allowStaleAborted || options.allowStaleOnFetchRejection;\n const noDelete = allowStale || options.noDeleteOnFetchRejection;\n const bf = p;\n if (this.#valList[index] === p) {\n // if we allow stale on fetch rejections, then we need to ensure that\n // the stale value is not removed from the cache when the fetch fails.\n const del = !noDelete || bf.__staleWhileFetching === undefined;\n if (del) {\n this.#delete(k, 'fetch');\n }\n else if (!allowStaleAborted) {\n // still replace the *promise* with the stale value,\n // since we are done with the promise at this point.\n // leave it untouched if we're still waiting for an\n // aborted background fetch that hasn't yet returned.\n this.#valList[index] = bf.__staleWhileFetching;\n }\n }\n if (allowStale) {\n if (options.status && bf.__staleWhileFetching !== undefined) {\n options.status.returnedStale = true;\n }\n return bf.__staleWhileFetching;\n }\n else if (bf.__returned === bf) {\n throw er;\n }\n };\n const pcall = (res, rej) => {\n const fmp = this.#fetchMethod?.(k, v, fetchOpts);\n if (fmp && fmp instanceof Promise) {\n fmp.then(v => res(v === undefined ? undefined : v), rej);\n }\n // ignored, we go until we finish, regardless.\n // defer check until we are actually aborting,\n // so fetchMethod can override.\n ac.signal.addEventListener('abort', () => {\n if (!options.ignoreFetchAbort ||\n options.allowStaleOnFetchAbort) {\n res(undefined);\n // when it eventually resolves, update the cache.\n if (options.allowStaleOnFetchAbort) {\n res = v => cb(v, true);\n }\n }\n });\n };\n if (options.status)\n options.status.fetchDispatched = true;\n const p = new Promise(pcall).then(cb, eb);\n const bf = Object.assign(p, {\n __abortController: ac,\n __staleWhileFetching: v,\n __returned: undefined,\n });\n if (index === undefined) {\n // internal, don't expose status.\n this.set(k, bf, { ...fetchOpts.options, status: undefined });\n index = this.#keyMap.get(k);\n }\n else {\n this.#valList[index] = bf;\n }\n return bf;\n }\n #isBackgroundFetch(p) {\n if (!this.#hasFetchMethod)\n return false;\n const b = p;\n return (!!b &&\n b instanceof Promise &&\n b.hasOwnProperty('__staleWhileFetching') &&\n b.__abortController instanceof AC);\n }\n async fetch(k, fetchOptions = {}) {\n const { \n // get options\n allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, \n // set options\n ttl = this.ttl, noDisposeOnSet = this.noDisposeOnSet, size = 0, sizeCalculation = this.sizeCalculation, noUpdateTTL = this.noUpdateTTL, \n // fetch exclusive options\n noDeleteOnFetchRejection = this.noDeleteOnFetchRejection, allowStaleOnFetchRejection = this.allowStaleOnFetchRejection, ignoreFetchAbort = this.ignoreFetchAbort, allowStaleOnFetchAbort = this.allowStaleOnFetchAbort, context, forceRefresh = false, status, signal, } = fetchOptions;\n if (!this.#hasFetchMethod) {\n if (status)\n status.fetch = 'get';\n return this.get(k, {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n status,\n });\n }\n const options = {\n allowStale,\n updateAgeOnGet,\n noDeleteOnStaleGet,\n ttl,\n noDisposeOnSet,\n size,\n sizeCalculation,\n noUpdateTTL,\n noDeleteOnFetchRejection,\n allowStaleOnFetchRejection,\n allowStaleOnFetchAbort,\n ignoreFetchAbort,\n status,\n signal,\n };\n let index = this.#keyMap.get(k);\n if (index === undefined) {\n if (status)\n status.fetch = 'miss';\n const p = this.#backgroundFetch(k, index, options, context);\n return (p.__returned = p);\n }\n else {\n // in cache, maybe already fetching\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n const stale = allowStale && v.__staleWhileFetching !== undefined;\n if (status) {\n status.fetch = 'inflight';\n if (stale)\n status.returnedStale = true;\n }\n return stale ? v.__staleWhileFetching : (v.__returned = v);\n }\n // if we force a refresh, that means do NOT serve the cached value,\n // unless we are already in the process of refreshing the cache.\n const isStale = this.#isStale(index);\n if (!forceRefresh && !isStale) {\n if (status)\n status.fetch = 'hit';\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n if (status)\n this.#statusTTL(status, index);\n return v;\n }\n // ok, it is stale or a forced refresh, and not already fetching.\n // refresh the cache.\n const p = this.#backgroundFetch(k, index, options, context);\n const hasStale = p.__staleWhileFetching !== undefined;\n const staleVal = hasStale && allowStale;\n if (status) {\n status.fetch = isStale ? 'stale' : 'refresh';\n if (staleVal && isStale)\n status.returnedStale = true;\n }\n return staleVal ? p.__staleWhileFetching : (p.__returned = p);\n }\n }\n async forceFetch(k, fetchOptions = {}) {\n const v = await this.fetch(k, fetchOptions);\n if (v === undefined)\n throw new Error('fetch() returned undefined');\n return v;\n }\n memo(k, memoOptions = {}) {\n const memoMethod = this.#memoMethod;\n if (!memoMethod) {\n throw new Error('no memoMethod provided to constructor');\n }\n const { context, forceRefresh, ...options } = memoOptions;\n const v = this.get(k, options);\n if (!forceRefresh && v !== undefined)\n return v;\n const vv = memoMethod(k, v, {\n options,\n context,\n });\n this.set(k, vv, options);\n return vv;\n }\n /**\n * Return a value from the cache. Will update the recency of the cache\n * entry found.\n *\n * If the key is not found, get() will return `undefined`.\n */\n get(k, getOptions = {}) {\n const { allowStale = this.allowStale, updateAgeOnGet = this.updateAgeOnGet, noDeleteOnStaleGet = this.noDeleteOnStaleGet, status, } = getOptions;\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n const value = this.#valList[index];\n const fetching = this.#isBackgroundFetch(value);\n if (status)\n this.#statusTTL(status, index);\n if (this.#isStale(index)) {\n if (status)\n status.get = 'stale';\n // delete only if not an in-flight background fetch\n if (!fetching) {\n if (!noDeleteOnStaleGet) {\n this.#delete(k, 'expire');\n }\n if (status && allowStale)\n status.returnedStale = true;\n return allowStale ? value : undefined;\n }\n else {\n if (status &&\n allowStale &&\n value.__staleWhileFetching !== undefined) {\n status.returnedStale = true;\n }\n return allowStale ? value.__staleWhileFetching : undefined;\n }\n }\n else {\n if (status)\n status.get = 'hit';\n // if we're currently fetching it, we don't actually have it yet\n // it's not stale, which means this isn't a staleWhileRefetching.\n // If it's not stale, and fetching, AND has a __staleWhileFetching\n // value, then that means the user fetched with {forceRefresh:true},\n // so it's safe to return that value.\n if (fetching) {\n return value.__staleWhileFetching;\n }\n this.#moveToTail(index);\n if (updateAgeOnGet) {\n this.#updateItemAge(index);\n }\n return value;\n }\n }\n else if (status) {\n status.get = 'miss';\n }\n }\n #connect(p, n) {\n this.#prev[n] = p;\n this.#next[p] = n;\n }\n #moveToTail(index) {\n // if tail already, nothing to do\n // if head, move head to next[index]\n // else\n // move next[prev[index]] to next[index] (head has no prev)\n // move prev[next[index]] to prev[index]\n // prev[index] = tail\n // next[tail] = index\n // tail = index\n if (index !== this.#tail) {\n if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n this.#connect(this.#prev[index], this.#next[index]);\n }\n this.#connect(this.#tail, index);\n this.#tail = index;\n }\n }\n /**\n * Deletes a key out of the cache.\n *\n * Returns true if the key was deleted, false otherwise.\n */\n delete(k) {\n return this.#delete(k, 'delete');\n }\n #delete(k, reason) {\n let deleted = false;\n if (this.#size !== 0) {\n const index = this.#keyMap.get(k);\n if (index !== undefined) {\n deleted = true;\n if (this.#size === 1) {\n this.#clear(reason);\n }\n else {\n this.#removeItemSize(index);\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else if (this.#hasDispose || this.#hasDisposeAfter) {\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n this.#keyMap.delete(k);\n this.#keyList[index] = undefined;\n this.#valList[index] = undefined;\n if (index === this.#tail) {\n this.#tail = this.#prev[index];\n }\n else if (index === this.#head) {\n this.#head = this.#next[index];\n }\n else {\n const pi = this.#prev[index];\n this.#next[pi] = this.#next[index];\n const ni = this.#next[index];\n this.#prev[ni] = this.#prev[index];\n }\n this.#size--;\n this.#free.push(index);\n }\n }\n }\n if (this.#hasDisposeAfter && this.#disposed?.length) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n return deleted;\n }\n /**\n * Clear the cache entirely, throwing away all values.\n */\n clear() {\n return this.#clear('delete');\n }\n #clear(reason) {\n for (const index of this.#rindexes({ allowStale: true })) {\n const v = this.#valList[index];\n if (this.#isBackgroundFetch(v)) {\n v.__abortController.abort(new Error('deleted'));\n }\n else {\n const k = this.#keyList[index];\n if (this.#hasDispose) {\n this.#dispose?.(v, k, reason);\n }\n if (this.#hasDisposeAfter) {\n this.#disposed?.push([v, k, reason]);\n }\n }\n }\n this.#keyMap.clear();\n this.#valList.fill(undefined);\n this.#keyList.fill(undefined);\n if (this.#ttls && this.#starts) {\n this.#ttls.fill(0);\n this.#starts.fill(0);\n }\n if (this.#sizes) {\n this.#sizes.fill(0);\n }\n this.#head = 0;\n this.#tail = 0;\n this.#free.length = 0;\n this.#calculatedSize = 0;\n this.#size = 0;\n if (this.#hasDisposeAfter && this.#disposed) {\n const dt = this.#disposed;\n let task;\n while ((task = dt?.shift())) {\n this.#disposeAfter?.(...task);\n }\n }\n }\n}\n//# sourceMappingURL=index.js.map","/**\n * common\n */\n\n/* numeric constants */\nconst TYPE_FROM = 8;\nconst TYPE_TO = -1;\n\n/**\n * get type\n * @param o - object to check\n * @returns type of object\n */\nexport const getType = (o: unknown): string =>\n Object.prototype.toString.call(o).slice(TYPE_FROM, TYPE_TO);\n\n/**\n * is string\n * @param o - object to check\n * @returns result\n */\nexport const isString = (o: unknown): o is string =>\n typeof o === 'string' || o instanceof String;\n\n/**\n * is string or number\n * @param o - object to check\n * @returns result\n */\nexport const isStringOrNumber = (o: unknown): boolean =>\n isString(o) || typeof o === 'number';\n","/**\n * constant\n */\n\n/* values and units */\nconst _DIGIT = '(?:0|[1-9]\\\\d*)';\nconst _COMPARE = 'clamp|max|min';\nconst _EXPO = 'exp|hypot|log|pow|sqrt';\nconst _SIGN = 'abs|sign';\nconst _STEP = 'mod|rem|round';\nconst _TRIG = 'a?(?:cos|sin|tan)|atan2';\nconst _MATH = `${_COMPARE}|${_EXPO}|${_SIGN}|${_STEP}|${_TRIG}`;\nconst _CALC = `calc|${_MATH}`;\nconst _VAR = `var|${_CALC}`;\nexport const ANGLE = 'deg|g?rad|turn';\nexport const LENGTH =\n '[cm]m|[dls]?v(?:[bhiw]|max|min)|in|p[ctx]|q|r?(?:[cl]h|cap|e[mx]|ic)';\nexport const NUM = `[+-]?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nexport const NUM_POSITIVE = `\\\\+?(?:${_DIGIT}(?:\\\\.\\\\d*)?|\\\\.\\\\d+)(?:e-?${_DIGIT})?`;\nexport const NONE = 'none';\nexport const PCT = `${NUM}%`;\nexport const SYN_FN_CALC = `^(?:${_CALC})\\\\(|(?<=[*\\\\/\\\\s\\\\(])(?:${_CALC})\\\\(`;\nexport const SYN_FN_MATH_START = `^(?:${_MATH})\\\\($`;\nexport const SYN_FN_VAR = '^var\\\\(|(?<=[*\\\\/\\\\s\\\\(])var\\\\(';\nexport const SYN_FN_VAR_START = `^(?:${_VAR})\\\\(`;\n\n/* colors */\nconst _ALPHA = `(?:\\\\s*\\\\/\\\\s*(?:${NUM}|${PCT}|${NONE}))?`;\nconst _ALPHA_LV3 = `(?:\\\\s*,\\\\s*(?:${NUM}|${PCT}))?`;\nconst _COLOR_FUNC = '(?:ok)?l(?:ab|ch)|color|hsla?|hwb|rgba?';\nconst _COLOR_KEY = '[a-z]+|#[\\\\da-f]{3}|#[\\\\da-f]{4}|#[\\\\da-f]{6}|#[\\\\da-f]{8}';\nconst _CS_HUE = '(?:ok)?lch|hsl|hwb';\nconst _CS_HUE_ARC = '(?:de|in)creasing|longer|shorter';\nconst _NUM_ANGLE = `${NUM}(?:${ANGLE})?`;\nconst _NUM_ANGLE_NONE = `(?:${NUM}(?:${ANGLE})?|${NONE})`;\nconst _NUM_PCT_NONE = `(?:${NUM}|${PCT}|${NONE})`;\nexport const CS_HUE = `(?:${_CS_HUE})(?:\\\\s(?:${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_HUE_CAPT = `(${_CS_HUE})(?:\\\\s(${_CS_HUE_ARC})\\\\shue)?`;\nexport const CS_LAB = '(?:ok)?lab';\nexport const CS_LCH = '(?:ok)?lch';\nexport const CS_SRGB = 'srgb(?:-linear)?';\nexport const CS_RGB = `(?:a98|prophoto)-rgb|display-p3|rec2020|${CS_SRGB}`;\nexport const CS_XYZ = 'xyz(?:-d(?:50|65))?';\nexport const CS_RECT = `${CS_LAB}|${CS_RGB}|${CS_XYZ}`;\nexport const CS_MIX = `${CS_HUE}|${CS_RECT}`;\nexport const FN_COLOR = 'color(';\nexport const FN_LIGHT_DARK = 'light-dark(';\nexport const FN_MIX = 'color-mix(';\nexport const FN_REL = `(?:${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_REL_CAPT = `(${_COLOR_FUNC})\\\\(\\\\s*from\\\\s+`;\nexport const FN_VAR = 'var(';\nexport const SYN_FN_COLOR = `(?:${CS_RGB}|${CS_XYZ})(?:\\\\s+${_NUM_PCT_NONE}){3}${_ALPHA}`;\nexport const SYN_FN_LIGHT_DARK = '^light-dark\\\\(';\nexport const SYN_FN_REL = `^${FN_REL}|(?<=[\\\\s])${FN_REL}`;\nexport const SYN_HSL = `${_NUM_ANGLE_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_HSL_LV3 = `${_NUM_ANGLE}(?:\\\\s*,\\\\s*${PCT}){2}${_ALPHA_LV3}`;\nexport const SYN_LCH = `(?:${_NUM_PCT_NONE}\\\\s+){2}${_NUM_ANGLE_NONE}${_ALPHA}`;\nexport const SYN_MOD = `${_NUM_PCT_NONE}(?:\\\\s+${_NUM_PCT_NONE}){2}${_ALPHA}`;\nexport const SYN_RGB_LV3 = `(?:${NUM}(?:\\\\s*,\\\\s*${NUM}){2}|${PCT}(?:\\\\s*,\\\\s*${PCT}){2})${_ALPHA_LV3}`;\nexport const SYN_COLOR_TYPE = `${_COLOR_KEY}|hsla?\\\\(\\\\s*${SYN_HSL_LV3}\\\\s*\\\\)|rgba?\\\\(\\\\s*${SYN_RGB_LV3}\\\\s*\\\\)|(?:hsla?|hwb)\\\\(\\\\s*${SYN_HSL}\\\\s*\\\\)|(?:(?:ok)?lab|rgba?)\\\\(\\\\s*${SYN_MOD}\\\\s*\\\\)|(?:ok)?lch\\\\(\\\\s*${SYN_LCH}\\\\s*\\\\)|color\\\\(\\\\s*${SYN_FN_COLOR}\\\\s*\\\\)`;\nexport const SYN_MIX_PART = `(?:${SYN_COLOR_TYPE})(?:\\\\s+${PCT})?`;\nexport const SYN_MIX = `color-mix\\\\(\\\\s*in\\\\s+(?:${CS_MIX})\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*,\\\\s*${SYN_MIX_PART}\\\\s*\\\\)`;\nexport const SYN_MIX_CAPT = `color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)`;\n\n/* formats */\nexport const VAL_COMP = 'computedValue';\nexport const VAL_MIX = 'mixValue';\nexport const VAL_SPEC = 'specifiedValue';\n","/**\n * color\n *\n * Ref: CSS Color Module Level 4\n * Sample code for Color Conversions\n * https://w3c.github.io/csswg-drafts/css-color-4/#color-conversion-code\n */\n\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport { isString } from './common';\nimport { resolveColor } from './resolve';\nimport { interpolateHue, roundToPrecision, splitValue } from './util';\nimport {\n ColorChannels,\n ComputedColorChannels,\n Options,\n MatchedRegExp,\n SpecifiedColorChannels,\n StringColorChannels,\n StringColorSpacedChannels\n} from './typedef';\n\n/* constants */\nimport {\n ANGLE,\n CS_HUE_CAPT,\n CS_MIX,\n CS_RGB,\n CS_XYZ,\n FN_COLOR,\n FN_LIGHT_DARK,\n FN_MIX,\n NONE,\n NUM,\n PCT,\n SYN_COLOR_TYPE,\n SYN_FN_COLOR,\n SYN_HSL,\n SYN_HSL_LV3,\n SYN_LCH,\n SYN_MIX,\n SYN_MIX_CAPT,\n SYN_MIX_PART,\n SYN_MOD,\n SYN_RGB_LV3,\n VAL_COMP,\n VAL_MIX,\n VAL_SPEC\n} from './constant';\nconst NAMESPACE = 'color';\n\n/* numeric constants */\nconst PPTH = 0.001;\nconst HALF = 0.5;\nconst DUO = 2;\nconst TRIA = 3;\nconst QUAD = 4;\nconst OCT = 8;\nconst DEC = 10;\nconst DOZ = 12;\nconst HEX = 16;\nconst SEXA = 60;\nconst DEG_HALF = 180;\nconst DEG = 360;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\nconst POW_SQR = 2;\nconst POW_CUBE = 3;\nconst POW_LINEAR = 2.4;\nconst LINEAR_COEF = 12.92;\nconst LINEAR_OFFSET = 0.055;\nconst LAB_L = 116;\nconst LAB_A = 500;\nconst LAB_B = 200;\nconst LAB_EPSILON = 216 / 24389;\nconst LAB_KAPPA = 24389 / 27;\n\n/* type definitions */\n/**\n * @type NumStrColorChannels - string or numeric color channels\n */\ntype NumStrColorChannels = [\n x: number | string,\n y: number | string,\n z: number | string,\n alpha: number | string\n];\n\n/**\n * @type TriColorChannels - color channels without alpha\n */\ntype TriColorChannels = [x: number, y: number, z: number];\n\n/**\n * @type ColorMatrix - color matrix\n */\ntype ColorMatrix = [\n r1: TriColorChannels,\n r2: TriColorChannels,\n r3: TriColorChannels\n];\n\n/* white point */\nconst D50: TriColorChannels = [\n 0.3457 / 0.3585,\n 1.0,\n (1.0 - 0.3457 - 0.3585) / 0.3585\n];\nconst MATRIX_D50_TO_D65: ColorMatrix = [\n [0.955473421488075, -0.02309845494876471, 0.06325924320057072],\n [-0.0283697093338637, 1.0099953980813041, 0.021041441191917323],\n [0.012314014864481998, -0.020507649298898964, 1.330365926242124]\n];\nconst MATRIX_D65_TO_D50: ColorMatrix = [\n [1.0479297925449969, 0.022946870601609652, -0.05019226628920524],\n [0.02962780877005599, 0.9904344267538799, -0.017073799063418826],\n [-0.009243040646204504, 0.015055191490298152, 0.7518742814281371]\n];\n\n/* color space */\nconst MATRIX_L_RGB_TO_XYZ: ColorMatrix = [\n [506752 / 1228815, 87881 / 245763, 12673 / 70218],\n [87098 / 409605, 175762 / 245763, 12673 / 175545],\n [7918 / 409605, 87881 / 737289, 1001167 / 1053270]\n];\nconst MATRIX_XYZ_TO_L_RGB: ColorMatrix = [\n [12831 / 3959, -329 / 214, -1974 / 3959],\n [-851781 / 878810, 1648619 / 878810, 36519 / 878810],\n [705 / 12673, -2585 / 12673, 705 / 667]\n];\nconst MATRIX_XYZ_TO_LMS: ColorMatrix = [\n [0.819022437996703, 0.3619062600528904, -0.1288737815209879],\n [0.0329836539323885, 0.9292868615863434, 0.0361446663506424],\n [0.0481771893596242, 0.2642395317527308, 0.6335478284694309]\n];\nconst MATRIX_LMS_TO_XYZ: ColorMatrix = [\n [1.2268798758459243, -0.5578149944602171, 0.2813910456659647],\n [-0.0405757452148008, 1.112286803280317, -0.0717110580655164],\n [-0.0763729366746601, -0.4214933324022432, 1.5869240198367816]\n];\nconst MATRIX_OKLAB_TO_LMS: ColorMatrix = [\n [1.0, 0.3963377773761749, 0.2158037573099136],\n [1.0, -0.1055613458156586, -0.0638541728258133],\n [1.0, -0.0894841775298119, -1.2914855480194092]\n];\nconst MATRIX_LMS_TO_OKLAB: ColorMatrix = [\n [0.210454268309314, 0.7936177747023054, -0.0040720430116193],\n [1.9779985324311684, -2.4285922420485799, 0.450593709617411],\n [0.0259040424655478, 0.7827717124575296, -0.8086757549230774]\n];\nconst MATRIX_P3_TO_XYZ: ColorMatrix = [\n [608311 / 1250200, 189793 / 714400, 198249 / 1000160],\n [35783 / 156275, 247089 / 357200, 198249 / 2500400],\n [0 / 1, 32229 / 714400, 5220557 / 5000800]\n];\nconst MATRIX_REC2020_TO_XYZ: ColorMatrix = [\n [63426534 / 99577255, 20160776 / 139408157, 47086771 / 278816314],\n [26158966 / 99577255, 472592308 / 697040785, 8267143 / 139408157],\n [0 / 1, 19567812 / 697040785, 295819943 / 278816314]\n];\nconst MATRIX_A98_TO_XYZ: ColorMatrix = [\n [573536 / 994567, 263643 / 1420810, 187206 / 994567],\n [591459 / 1989134, 6239551 / 9945670, 374412 / 4972835],\n [53769 / 1989134, 351524 / 4972835, 4929758 / 4972835]\n];\nconst MATRIX_PROPHOTO_TO_XYZ_D50: ColorMatrix = [\n [0.7977666449006423, 0.13518129740053308, 0.0313477341283922],\n [0.2880748288194013, 0.711835234241873, 0.00008993693872564],\n [0.0, 0.0, 0.8251046025104602]\n];\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_CS_HUE = new RegExp(`^${CS_HUE_CAPT}$`);\nconst REG_CS_XYZ = /^xyz(?:-d(?:50|65))?$/;\nconst REG_CURRENT = /^currentColor$/i;\nconst REG_FN_COLOR = new RegExp(`^color\\\\(\\\\s*(${SYN_FN_COLOR})\\\\s*\\\\)$`);\nconst REG_HSL = new RegExp(`^hsla?\\\\(\\\\s*(${SYN_HSL}|${SYN_HSL_LV3})\\\\s*\\\\)$`);\nconst REG_HWB = new RegExp(`^hwb\\\\(\\\\s*(${SYN_HSL})\\\\s*\\\\)$`);\nconst REG_LAB = new RegExp(`^lab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_LCH = new RegExp(`^lch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_MIX = new RegExp(`^${SYN_MIX}$`);\nconst REG_MIX_CAPT = new RegExp(`^${SYN_MIX_CAPT}$`);\nconst REG_MIX_NEST = new RegExp(`${SYN_MIX}`, 'g');\nconst REG_OKLAB = new RegExp(`^oklab\\\\(\\\\s*(${SYN_MOD})\\\\s*\\\\)$`);\nconst REG_OKLCH = new RegExp(`^oklch\\\\(\\\\s*(${SYN_LCH})\\\\s*\\\\)$`);\nconst REG_SPEC = /^(?:specifi|comput)edValue$/;\n\n/**\n * named colors\n */\nexport const NAMED_COLORS = {\n aliceblue: [0xf0, 0xf8, 0xff],\n antiquewhite: [0xfa, 0xeb, 0xd7],\n aqua: [0x00, 0xff, 0xff],\n aquamarine: [0x7f, 0xff, 0xd4],\n azure: [0xf0, 0xff, 0xff],\n beige: [0xf5, 0xf5, 0xdc],\n bisque: [0xff, 0xe4, 0xc4],\n black: [0x00, 0x00, 0x00],\n blanchedalmond: [0xff, 0xeb, 0xcd],\n blue: [0x00, 0x00, 0xff],\n blueviolet: [0x8a, 0x2b, 0xe2],\n brown: [0xa5, 0x2a, 0x2a],\n burlywood: [0xde, 0xb8, 0x87],\n cadetblue: [0x5f, 0x9e, 0xa0],\n chartreuse: [0x7f, 0xff, 0x00],\n chocolate: [0xd2, 0x69, 0x1e],\n coral: [0xff, 0x7f, 0x50],\n cornflowerblue: [0x64, 0x95, 0xed],\n cornsilk: [0xff, 0xf8, 0xdc],\n crimson: [0xdc, 0x14, 0x3c],\n cyan: [0x00, 0xff, 0xff],\n darkblue: [0x00, 0x00, 0x8b],\n darkcyan: [0x00, 0x8b, 0x8b],\n darkgoldenrod: [0xb8, 0x86, 0x0b],\n darkgray: [0xa9, 0xa9, 0xa9],\n darkgreen: [0x00, 0x64, 0x00],\n darkgrey: [0xa9, 0xa9, 0xa9],\n darkkhaki: [0xbd, 0xb7, 0x6b],\n darkmagenta: [0x8b, 0x00, 0x8b],\n darkolivegreen: [0x55, 0x6b, 0x2f],\n darkorange: [0xff, 0x8c, 0x00],\n darkorchid: [0x99, 0x32, 0xcc],\n darkred: [0x8b, 0x00, 0x00],\n darksalmon: [0xe9, 0x96, 0x7a],\n darkseagreen: [0x8f, 0xbc, 0x8f],\n darkslateblue: [0x48, 0x3d, 0x8b],\n darkslategray: [0x2f, 0x4f, 0x4f],\n darkslategrey: [0x2f, 0x4f, 0x4f],\n darkturquoise: [0x00, 0xce, 0xd1],\n darkviolet: [0x94, 0x00, 0xd3],\n deeppink: [0xff, 0x14, 0x93],\n deepskyblue: [0x00, 0xbf, 0xff],\n dimgray: [0x69, 0x69, 0x69],\n dimgrey: [0x69, 0x69, 0x69],\n dodgerblue: [0x1e, 0x90, 0xff],\n firebrick: [0xb2, 0x22, 0x22],\n floralwhite: [0xff, 0xfa, 0xf0],\n forestgreen: [0x22, 0x8b, 0x22],\n fuchsia: [0xff, 0x00, 0xff],\n gainsboro: [0xdc, 0xdc, 0xdc],\n ghostwhite: [0xf8, 0xf8, 0xff],\n gold: [0xff, 0xd7, 0x00],\n goldenrod: [0xda, 0xa5, 0x20],\n gray: [0x80, 0x80, 0x80],\n green: [0x00, 0x80, 0x00],\n greenyellow: [0xad, 0xff, 0x2f],\n grey: [0x80, 0x80, 0x80],\n honeydew: [0xf0, 0xff, 0xf0],\n hotpink: [0xff, 0x69, 0xb4],\n indianred: [0xcd, 0x5c, 0x5c],\n indigo: [0x4b, 0x00, 0x82],\n ivory: [0xff, 0xff, 0xf0],\n khaki: [0xf0, 0xe6, 0x8c],\n lavender: [0xe6, 0xe6, 0xfa],\n lavenderblush: [0xff, 0xf0, 0xf5],\n lawngreen: [0x7c, 0xfc, 0x00],\n lemonchiffon: [0xff, 0xfa, 0xcd],\n lightblue: [0xad, 0xd8, 0xe6],\n lightcoral: [0xf0, 0x80, 0x80],\n lightcyan: [0xe0, 0xff, 0xff],\n lightgoldenrodyellow: [0xfa, 0xfa, 0xd2],\n lightgray: [0xd3, 0xd3, 0xd3],\n lightgreen: [0x90, 0xee, 0x90],\n lightgrey: [0xd3, 0xd3, 0xd3],\n lightpink: [0xff, 0xb6, 0xc1],\n lightsalmon: [0xff, 0xa0, 0x7a],\n lightseagreen: [0x20, 0xb2, 0xaa],\n lightskyblue: [0x87, 0xce, 0xfa],\n lightslategray: [0x77, 0x88, 0x99],\n lightslategrey: [0x77, 0x88, 0x99],\n lightsteelblue: [0xb0, 0xc4, 0xde],\n lightyellow: [0xff, 0xff, 0xe0],\n lime: [0x00, 0xff, 0x00],\n limegreen: [0x32, 0xcd, 0x32],\n linen: [0xfa, 0xf0, 0xe6],\n magenta: [0xff, 0x00, 0xff],\n maroon: [0x80, 0x00, 0x00],\n mediumaquamarine: [0x66, 0xcd, 0xaa],\n mediumblue: [0x00, 0x00, 0xcd],\n mediumorchid: [0xba, 0x55, 0xd3],\n mediumpurple: [0x93, 0x70, 0xdb],\n mediumseagreen: [0x3c, 0xb3, 0x71],\n mediumslateblue: [0x7b, 0x68, 0xee],\n mediumspringgreen: [0x00, 0xfa, 0x9a],\n mediumturquoise: [0x48, 0xd1, 0xcc],\n mediumvioletred: [0xc7, 0x15, 0x85],\n midnightblue: [0x19, 0x19, 0x70],\n mintcream: [0xf5, 0xff, 0xfa],\n mistyrose: [0xff, 0xe4, 0xe1],\n moccasin: [0xff, 0xe4, 0xb5],\n navajowhite: [0xff, 0xde, 0xad],\n navy: [0x00, 0x00, 0x80],\n oldlace: [0xfd, 0xf5, 0xe6],\n olive: [0x80, 0x80, 0x00],\n olivedrab: [0x6b, 0x8e, 0x23],\n orange: [0xff, 0xa5, 0x00],\n orangered: [0xff, 0x45, 0x00],\n orchid: [0xda, 0x70, 0xd6],\n palegoldenrod: [0xee, 0xe8, 0xaa],\n palegreen: [0x98, 0xfb, 0x98],\n paleturquoise: [0xaf, 0xee, 0xee],\n palevioletred: [0xdb, 0x70, 0x93],\n papayawhip: [0xff, 0xef, 0xd5],\n peachpuff: [0xff, 0xda, 0xb9],\n peru: [0xcd, 0x85, 0x3f],\n pink: [0xff, 0xc0, 0xcb],\n plum: [0xdd, 0xa0, 0xdd],\n powderblue: [0xb0, 0xe0, 0xe6],\n purple: [0x80, 0x00, 0x80],\n rebeccapurple: [0x66, 0x33, 0x99],\n red: [0xff, 0x00, 0x00],\n rosybrown: [0xbc, 0x8f, 0x8f],\n royalblue: [0x41, 0x69, 0xe1],\n saddlebrown: [0x8b, 0x45, 0x13],\n salmon: [0xfa, 0x80, 0x72],\n sandybrown: [0xf4, 0xa4, 0x60],\n seagreen: [0x2e, 0x8b, 0x57],\n seashell: [0xff, 0xf5, 0xee],\n sienna: [0xa0, 0x52, 0x2d],\n silver: [0xc0, 0xc0, 0xc0],\n skyblue: [0x87, 0xce, 0xeb],\n slateblue: [0x6a, 0x5a, 0xcd],\n slategray: [0x70, 0x80, 0x90],\n slategrey: [0x70, 0x80, 0x90],\n snow: [0xff, 0xfa, 0xfa],\n springgreen: [0x00, 0xff, 0x7f],\n steelblue: [0x46, 0x82, 0xb4],\n tan: [0xd2, 0xb4, 0x8c],\n teal: [0x00, 0x80, 0x80],\n thistle: [0xd8, 0xbf, 0xd8],\n tomato: [0xff, 0x63, 0x47],\n turquoise: [0x40, 0xe0, 0xd0],\n violet: [0xee, 0x82, 0xee],\n wheat: [0xf5, 0xde, 0xb3],\n white: [0xff, 0xff, 0xff],\n whitesmoke: [0xf5, 0xf5, 0xf5],\n yellow: [0xff, 0xff, 0x00],\n yellowgreen: [0x9a, 0xcd, 0x32]\n} as const satisfies {\n [key: string]: TriColorChannels;\n};\n\n/**\n * cache invalid color value\n * @param key - cache key\n * @param nullable - is nullable\n * @returns cached value\n */\nexport const cacheInvalidColorValue = (\n cacheKey: string,\n format: string,\n nullable: boolean = false\n): SpecifiedColorChannels | string | NullObject => {\n if (format === VAL_SPEC) {\n const res = '';\n setCache(cacheKey, res);\n return res;\n }\n if (nullable) {\n setCache(cacheKey, null);\n return new NullObject();\n }\n const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * resolve invalid color value\n * @param format - output format\n * @param nullable - is nullable\n * @returns resolved value\n */\nexport const resolveInvalidColorValue = (\n format: string,\n nullable: boolean = false\n): SpecifiedColorChannels | string | NullObject => {\n switch (format) {\n case 'hsl':\n case 'hwb':\n case VAL_MIX: {\n return new NullObject();\n }\n case VAL_SPEC: {\n return '';\n }\n default: {\n if (nullable) {\n return new NullObject();\n }\n return ['rgb', 0, 0, 0, 0] as SpecifiedColorChannels;\n }\n }\n};\n\n/**\n * validate color components\n * @param arr - color components\n * @param [opt] - options\n * @param [opt.alpha] - alpha channel\n * @param [opt.minLength] - min length\n * @param [opt.maxLength] - max length\n * @param [opt.minRange] - min range\n * @param [opt.maxRange] - max range\n * @param [opt.validateRange] - validate range\n * @returns result - validated color components\n */\nexport const validateColorComponents = (\n arr: ColorChannels | TriColorChannels,\n opt: {\n alpha?: boolean;\n minLength?: number;\n maxLength?: number;\n minRange?: number;\n maxRange?: number;\n validateRange?: boolean;\n } = {}\n): ColorChannels | TriColorChannels => {\n if (!Array.isArray(arr)) {\n throw new TypeError(`${arr} is not an array.`);\n }\n const {\n alpha = false,\n minLength = TRIA,\n maxLength = QUAD,\n minRange = 0,\n maxRange = 1,\n validateRange = true\n } = opt;\n if (!Number.isFinite(minLength)) {\n throw new TypeError(`${minLength} is not a number.`);\n }\n if (!Number.isFinite(maxLength)) {\n throw new TypeError(`${maxLength} is not a number.`);\n }\n if (!Number.isFinite(minRange)) {\n throw new TypeError(`${minRange} is not a number.`);\n }\n if (!Number.isFinite(maxRange)) {\n throw new TypeError(`${maxRange} is not a number.`);\n }\n const l = arr.length;\n if (l < minLength || l > maxLength) {\n throw new Error(`Unexpected array length ${l}.`);\n }\n let i = 0;\n while (i < l) {\n const v = arr[i] as number;\n if (!Number.isFinite(v)) {\n throw new TypeError(`${v} is not a number.`);\n } else if (i < TRIA && validateRange && (v < minRange || v > maxRange)) {\n throw new RangeError(`${v} is not between ${minRange} and ${maxRange}.`);\n } else if (i === TRIA && (v < 0 || v > 1)) {\n throw new RangeError(`${v} is not between 0 and 1.`);\n }\n i++;\n }\n if (alpha && l === TRIA) {\n arr.push(1);\n }\n return arr;\n};\n\n/**\n * transform matrix\n * @param mtx - 3 * 3 matrix\n * @param vct - vector\n * @param [skip] - skip validate\n * @returns TriColorChannels - [p1, p2, p3]\n */\nexport const transformMatrix = (\n mtx: ColorMatrix,\n vct: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!Array.isArray(mtx)) {\n throw new TypeError(`${mtx} is not an array.`);\n } else if (mtx.length !== TRIA) {\n throw new Error(`Unexpected array length ${mtx.length}.`);\n } else if (!skip) {\n for (let i of mtx) {\n i = validateColorComponents(i as TriColorChannels, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n }\n }\n const [[r1c1, r1c2, r1c3], [r2c1, r2c2, r2c3], [r3c1, r3c2, r3c3]] = mtx;\n let v1, v2, v3;\n if (skip) {\n [v1, v2, v3] = vct;\n } else {\n [v1, v2, v3] = validateColorComponents(vct, {\n maxLength: TRIA,\n validateRange: false\n });\n }\n const p1 = r1c1 * v1 + r1c2 * v2 + r1c3 * v3;\n const p2 = r2c1 * v1 + r2c2 * v2 + r2c3 * v3;\n const p3 = r3c1 * v1 + r3c2 * v2 + r3c3 * v3;\n return [p1, p2, p3];\n};\n\n/**\n * normalize color components\n * @param colorA - color components [v1, v2, v3, v4]\n * @param colorB - color components [v1, v2, v3, v4]\n * @param [skip] - skip validate\n * @returns result - [colorA, colorB]\n */\nexport const normalizeColorComponents = (\n colorA: [number | string, number | string, number | string, number | string],\n colorB: [number | string, number | string, number | string, number | string],\n skip: boolean = false\n): [ColorChannels, ColorChannels] => {\n if (!Array.isArray(colorA)) {\n throw new TypeError(`${colorA} is not an array.`);\n } else if (colorA.length !== QUAD) {\n throw new Error(`Unexpected array length ${colorA.length}.`);\n }\n if (!Array.isArray(colorB)) {\n throw new TypeError(`${colorB} is not an array.`);\n } else if (colorB.length !== QUAD) {\n throw new Error(`Unexpected array length ${colorB.length}.`);\n }\n let i = 0;\n while (i < QUAD) {\n if (colorA[i] === NONE && colorB[i] === NONE) {\n colorA[i] = 0;\n colorB[i] = 0;\n } else if (colorA[i] === NONE) {\n colorA[i] = colorB[i] as number;\n } else if (colorB[i] === NONE) {\n colorB[i] = colorA[i] as number;\n }\n i++;\n }\n if (skip) {\n return [colorA as ColorChannels, colorB as ColorChannels];\n }\n const validatedColorA = validateColorComponents(colorA as ColorChannels, {\n minLength: QUAD,\n validateRange: false\n });\n const validatedColorB = validateColorComponents(colorB as ColorChannels, {\n minLength: QUAD,\n validateRange: false\n });\n return [validatedColorA as ColorChannels, validatedColorB as ColorChannels];\n};\n\n/**\n * number to hex string\n * @param value - numeric value\n * @returns hex string\n */\nexport const numberToHexString = (value: number): string => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a number.`);\n } else {\n value = Math.round(value);\n if (value < 0 || value > MAX_RGB) {\n throw new RangeError(`${value} is not between 0 and ${MAX_RGB}.`);\n }\n }\n let hex = value.toString(HEX);\n if (hex.length === 1) {\n hex = `0${hex}`;\n }\n return hex;\n};\n\n/**\n * angle to deg\n * @param angle\n * @returns deg: 0..360\n */\nexport const angleToDeg = (angle: string): number => {\n if (isString(angle)) {\n angle = angle.trim();\n } else {\n throw new TypeError(`${angle} is not a string.`);\n }\n const GRAD = DEG / 400;\n const RAD = DEG / (Math.PI * DUO);\n const reg = new RegExp(`^(${NUM})(${ANGLE})?$`);\n if (!reg.test(angle)) {\n throw new SyntaxError(`Invalid property value: ${angle}`);\n }\n const [, value, unit] = angle.match(reg) as MatchedRegExp;\n let deg;\n switch (unit) {\n case 'grad':\n deg = parseFloat(value) * GRAD;\n break;\n case 'rad':\n deg = parseFloat(value) * RAD;\n break;\n case 'turn':\n deg = parseFloat(value) * DEG;\n break;\n default:\n deg = parseFloat(value);\n }\n deg %= DEG;\n if (deg < 0) {\n deg += DEG;\n } else if (Object.is(deg, -0)) {\n deg = 0;\n }\n return deg;\n};\n\n/**\n * parse alpha\n * @param [alpha] - alpha value\n * @returns alpha: 0..1\n */\nexport const parseAlpha = (alpha: string = ''): number => {\n if (isString(alpha)) {\n alpha = alpha.trim();\n if (!alpha) {\n alpha = '1';\n } else if (alpha === NONE) {\n alpha = '0';\n } else {\n let a;\n if (alpha.endsWith('%')) {\n a = parseFloat(alpha) / MAX_PCT;\n } else {\n a = parseFloat(alpha);\n }\n if (!Number.isFinite(a)) {\n throw new TypeError(`${a} is not a finite number.`);\n }\n if (a < PPTH) {\n alpha = '0';\n } else if (a > 1) {\n alpha = '1';\n } else {\n alpha = a.toFixed(TRIA);\n }\n }\n } else {\n alpha = '1';\n }\n return parseFloat(alpha);\n};\n\n/**\n * parse hex alpha\n * @param value - alpha value in hex string\n * @returns alpha: 0..1\n */\nexport const parseHexAlpha = (value: string): number => {\n if (isString(value)) {\n if (value === '') {\n throw new SyntaxError('Invalid property value: (empty string)');\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n let alpha = parseInt(value, HEX);\n if (alpha <= 0) {\n return 0;\n }\n if (alpha >= MAX_RGB) {\n return 1;\n }\n const alphaMap = new Map();\n for (let i = 1; i < MAX_PCT; i++) {\n alphaMap.set(Math.round((i * MAX_RGB) / MAX_PCT), i);\n }\n if (alphaMap.has(alpha)) {\n alpha = alphaMap.get(alpha) / MAX_PCT;\n } else {\n alpha = Math.round(alpha / MAX_RGB / PPTH) * PPTH;\n }\n return parseFloat(alpha.toFixed(TRIA));\n};\n\n/**\n * transform rgb to linear rgb\n * @param rgb - [r, g, b] r|g|b: 0..255\n * @param [skip] - skip validate\n * @returns TriColorChannels - [r, g, b] r|g|b: 0..1\n */\nexport const transformRgbToLinearRgb = (\n rgb: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n let rr, gg, bb;\n if (skip) {\n [rr, gg, bb] = rgb;\n } else {\n [rr, gg, bb] = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n });\n }\n let r = rr / MAX_RGB;\n let g = gg / MAX_RGB;\n let b = bb / MAX_RGB;\n const COND_POW = 0.04045;\n if (r > COND_POW) {\n r = Math.pow((r + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n r /= LINEAR_COEF;\n }\n if (g > COND_POW) {\n g = Math.pow((g + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n g /= LINEAR_COEF;\n }\n if (b > COND_POW) {\n b = Math.pow((b + LINEAR_OFFSET) / (1 + LINEAR_OFFSET), POW_LINEAR);\n } else {\n b /= LINEAR_COEF;\n }\n return [r, g, b];\n};\n\n/**\n * transform rgb to xyz\n * @param rgb - [r, g, b] r|g|b: 0..255\n * @param [skip] - skip validate\n * @returns TriColorChannels - [x, y, z]\n */\nexport const transformRgbToXyz = (\n rgb: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!skip) {\n rgb = validateColorComponents(rgb, {\n maxLength: TRIA,\n maxRange: MAX_RGB\n }) as TriColorChannels;\n }\n rgb = transformRgbToLinearRgb(rgb, true);\n const xyz = transformMatrix(MATRIX_L_RGB_TO_XYZ, rgb, true);\n return xyz;\n};\n\n/**\n * transform rgb to xyz-d50\n * @param rgb - [r, g, b] r|g|b: 0..255 alpha: 0..1\n * @returns TriColorChannels - [x, y, z]\n */\nexport const transformRgbToXyzD50 = (\n rgb: TriColorChannels\n): TriColorChannels => {\n let xyz = transformRgbToXyz(rgb);\n xyz = transformMatrix(MATRIX_D65_TO_D50, xyz, true);\n return xyz;\n};\n\n/**\n * transform linear rgb to rgb\n * @param rgb - [r, g, b] r|g|b: 0..1\n * @param [round] - round result\n * @returns TriColorChannels - [r, g, b] r|g|b: 0..255\n */\nexport const transformLinearRgbToRgb = (\n rgb: TriColorChannels,\n round: boolean = false\n): TriColorChannels => {\n let [r, g, b] = validateColorComponents(rgb, {\n maxLength: TRIA\n });\n const COND_POW = 809 / 258400;\n if (r > COND_POW) {\n r = Math.pow(r, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n r *= LINEAR_COEF;\n }\n r *= MAX_RGB;\n if (g > COND_POW) {\n g = Math.pow(g, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n g *= LINEAR_COEF;\n }\n g *= MAX_RGB;\n if (b > COND_POW) {\n b = Math.pow(b, 1 / POW_LINEAR) * (1 + LINEAR_OFFSET) - LINEAR_OFFSET;\n } else {\n b *= LINEAR_COEF;\n }\n b *= MAX_RGB;\n return [\n round ? Math.round(r) : r,\n round ? Math.round(g) : g,\n round ? Math.round(b) : b\n ];\n};\n\n/**\n * transform xyz to rgb\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [r, g, b] r|g|b: 0..255\n */\nexport const transformXyzToRgb = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!skip) {\n xyz = validateColorComponents(xyz, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n }\n let [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyz, true);\n [r, g, b] = transformLinearRgbToRgb(\n [\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1)\n ],\n true\n );\n return [r, g, b];\n};\n\n/**\n * transform xyz to xyz-d50\n * @param xyz - [x, y, z]\n * @returns TriColorChannels - [x, y, z]\n */\nexport const transformXyzToXyzD50 = (\n xyz: TriColorChannels\n): TriColorChannels => {\n xyz = validateColorComponents(xyz, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n xyz = transformMatrix(MATRIX_D65_TO_D50, xyz, true);\n return xyz;\n};\n\n/**\n * transform xyz to hsl\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [h, s, l]\n */\nexport const transformXyzToHsl = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n const [rr, gg, bb] = transformXyzToRgb(xyz, skip);\n const r = rr / MAX_RGB;\n const g = gg / MAX_RGB;\n const b = bb / MAX_RGB;\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n const d = max - min;\n const l = (max + min) * HALF * MAX_PCT;\n let h, s;\n if (Math.round(l) === 0 || Math.round(l) === MAX_PCT) {\n h = 0;\n s = 0;\n } else {\n s = (d / (1 - Math.abs(max + min - 1))) * MAX_PCT;\n if (s === 0) {\n h = 0;\n } else {\n switch (max) {\n case r:\n h = (g - b) / d;\n break;\n case g:\n h = (b - r) / d + DUO;\n break;\n case b:\n default:\n h = (r - g) / d + QUAD;\n break;\n }\n h = (h * SEXA) % DEG;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [h, s, l];\n};\n\n/**\n * transform xyz to hwb\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [h, w, b]\n */\nexport const transformXyzToHwb = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n const [r, g, b] = transformXyzToRgb(xyz, skip);\n const wh = Math.min(r, g, b) / MAX_RGB;\n const bk = 1 - Math.max(r, g, b) / MAX_RGB;\n let h;\n if (wh + bk === 1) {\n h = 0;\n } else {\n [h] = transformXyzToHsl(xyz);\n }\n return [h, wh * MAX_PCT, bk * MAX_PCT];\n};\n\n/**\n * transform xyz to oklab\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [l, a, b]\n */\nexport const transformXyzToOklab = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!skip) {\n xyz = validateColorComponents(xyz, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n }\n const lms = transformMatrix(MATRIX_XYZ_TO_LMS, xyz, true);\n const xyzLms = lms.map(c => Math.cbrt(c)) as TriColorChannels;\n let [l, a, b] = transformMatrix(MATRIX_LMS_TO_OKLAB, xyzLms, true);\n l = Math.min(Math.max(l, 0), 1);\n const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n a = 0;\n b = 0;\n }\n return [l, a, b];\n};\n\n/**\n * transform xyz to oklch\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [l, c, h]\n */\nexport const transformXyzToOklch = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n const [l, a, b] = transformXyzToOklab(xyz, skip);\n let c, h;\n const lPct = Math.round(parseFloat(l.toFixed(QUAD)) * MAX_PCT);\n if (lPct === 0 || lPct === MAX_PCT) {\n c = 0;\n h = 0;\n } else {\n c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n if (parseFloat(c.toFixed(QUAD)) === 0) {\n h = 0;\n } else {\n h = (Math.atan2(b, a) * DEG_HALF) / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n }\n return [l, c, h];\n};\n\n/**\n * transform xyz D50 to rgb\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [r, g, b] r|g|b: 0..255\n */\nexport const transformXyzD50ToRgb = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!skip) {\n xyz = validateColorComponents(xyz, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n }\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, xyz, true);\n const rgb = transformXyzToRgb(xyzD65, true);\n return rgb;\n};\n\n/**\n * transform xyz-d50 to lab\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [l, a, b]\n */\nexport const transformXyzD50ToLab = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n if (!skip) {\n xyz = validateColorComponents(xyz, {\n maxLength: TRIA,\n validateRange: false\n }) as TriColorChannels;\n }\n const xyzD50 = xyz.map((val, i) => val / (D50[i] as number));\n const [f0, f1, f2] = xyzD50.map(val =>\n val > LAB_EPSILON ? Math.cbrt(val) : (val * LAB_KAPPA + HEX) / LAB_L\n ) as TriColorChannels;\n const l = Math.min(Math.max(LAB_L * f1 - HEX, 0), MAX_PCT);\n let a, b;\n if (l === 0 || l === MAX_PCT) {\n a = 0;\n b = 0;\n } else {\n a = (f0 - f1) * LAB_A;\n b = (f1 - f2) * LAB_B;\n }\n return [l, a, b];\n};\n\n/**\n * transform xyz-d50 to lch\n * @param xyz - [x, y, z]\n * @param [skip] - skip validate\n * @returns TriColorChannels - [l, c, h]\n */\nexport const transformXyzD50ToLch = (\n xyz: TriColorChannels,\n skip: boolean = false\n): TriColorChannels => {\n const [l, a, b] = transformXyzD50ToLab(xyz, skip);\n let c, h;\n if (l === 0 || l === MAX_PCT) {\n c = 0;\n h = 0;\n } else {\n c = Math.max(Math.sqrt(Math.pow(a, POW_SQR) + Math.pow(b, POW_SQR)), 0);\n h = (Math.atan2(b, a) * DEG_HALF) / Math.PI;\n if (h < 0) {\n h += DEG;\n }\n }\n return [l, c, h];\n};\n\n/**\n * convert rgb to hex color\n * @param rgb - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n * @returns hex color\n */\nexport const convertRgbToHex = (rgb: ColorChannels): string => {\n const [r, g, b, alpha] = validateColorComponents(rgb, {\n alpha: true,\n maxRange: MAX_RGB\n }) as ColorChannels;\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert linear rgb to hex color\n * @param rgb - [r, g, b, alpha] r|g|b|alpha: 0..1\n * @param [skip] - skip validate\n * @returns hex color\n */\nexport const convertLinearRgbToHex = (\n rgb: ColorChannels,\n skip: boolean = false\n): string => {\n let r, g, b, alpha;\n if (skip) {\n [r, g, b, alpha] = rgb;\n } else {\n [r, g, b, alpha] = validateColorComponents(rgb, {\n minLength: QUAD\n }) as ColorChannels;\n }\n [r, g, b] = transformLinearRgbToRgb([r, g, b], true);\n const rr = numberToHexString(r);\n const gg = numberToHexString(g);\n const bb = numberToHexString(b);\n const aa = numberToHexString(alpha * MAX_RGB);\n let hex;\n if (aa === 'ff') {\n hex = `#${rr}${gg}${bb}`;\n } else {\n hex = `#${rr}${gg}${bb}${aa}`;\n }\n return hex;\n};\n\n/**\n * convert xyz to hex color\n * @param xyz - [x, y, z, alpha]\n * @returns hex color\n */\nexport const convertXyzToHex = (xyz: ColorChannels): string => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAD,\n validateRange: false\n }) as ColorChannels;\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n const hex = convertLinearRgbToHex(\n [\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ],\n true\n );\n return hex;\n};\n\n/**\n * convert xyz D50 to hex color\n * @param xyz - [x, y, z, alpha]\n * @returns hex color\n */\nexport const convertXyzD50ToHex = (xyz: ColorChannels): string => {\n const [x, y, z, alpha] = validateColorComponents(xyz, {\n minLength: QUAD,\n validateRange: false\n }) as ColorChannels;\n const xyzD65 = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n const [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, xyzD65, true);\n const hex = convertLinearRgbToHex([\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ]);\n return hex;\n};\n\n/**\n * convert hex color to rgb\n * @param value - hex color value\n * @returns ColorChannels - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertHexToRgb = (value: string): ColorChannels => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n if (\n !(\n /^#[\\da-f]{6}$/.test(value) ||\n /^#[\\da-f]{3}$/.test(value) ||\n /^#[\\da-f]{8}$/.test(value) ||\n /^#[\\da-f]{4}$/.test(value)\n )\n ) {\n throw new SyntaxError(`Invalid property value: ${value}`);\n }\n const arr: number[] = [];\n if (/^#[\\da-f]{3}$/.test(value)) {\n const [, r, g, b] = value.match(\n /^#([\\da-f])([\\da-f])([\\da-f])$/\n ) as MatchedRegExp;\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n 1\n );\n } else if (/^#[\\da-f]{4}$/.test(value)) {\n const [, r, g, b, alpha] = value.match(\n /^#([\\da-f])([\\da-f])([\\da-f])([\\da-f])$/\n ) as MatchedRegExp;\n arr.push(\n parseInt(`${r}${r}`, HEX),\n parseInt(`${g}${g}`, HEX),\n parseInt(`${b}${b}`, HEX),\n parseHexAlpha(`${alpha}${alpha}`)\n );\n } else if (/^#[\\da-f]{8}$/.test(value)) {\n const [, r, g, b, alpha] = value.match(\n /^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/\n ) as MatchedRegExp;\n arr.push(\n parseInt(r, HEX),\n parseInt(g, HEX),\n parseInt(b, HEX),\n parseHexAlpha(alpha)\n );\n } else {\n const [, r, g, b] = value.match(\n /^#([\\da-f]{2})([\\da-f]{2})([\\da-f]{2})$/\n ) as MatchedRegExp;\n arr.push(parseInt(r, HEX), parseInt(g, HEX), parseInt(b, HEX), 1);\n }\n return arr as ColorChannels;\n};\n\n/**\n * convert hex color to linear rgb\n * @param value - hex color value\n * @returns ColorChannels - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertHexToLinearRgb = (value: string): ColorChannels => {\n const [rr, gg, bb, alpha] = convertHexToRgb(value);\n const [r, g, b] = transformRgbToLinearRgb([rr, gg, bb], true);\n return [r, g, b, alpha];\n};\n\n/**\n * convert hex color to xyz\n * @param value - hex color value\n * @returns ColorChannels - [x, y, z, alpha]\n */\nexport const convertHexToXyz = (value: string): ColorChannels => {\n const [r, g, b, alpha] = convertHexToLinearRgb(value);\n const [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b], true);\n return [x, y, z, alpha];\n};\n\n/**\n * parse rgb()\n * @param value - rgb color value\n * @param [opt] - options\n * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject\n */\nexport const parseRgb = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n const reg = new RegExp(`^rgba?\\\\(\\\\s*(${SYN_MOD}|${SYN_RGB_LV3})\\\\s*\\\\)$`);\n if (!reg.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const [, val] = value.match(reg) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace(/[,/]/g, ' ')\n .split(/\\s+/) as StringColorChannels;\n let r, g, b;\n if (v1 === NONE) {\n r = 0;\n } else {\n if (v1.endsWith('%')) {\n r = (parseFloat(v1) * MAX_RGB) / MAX_PCT;\n } else {\n r = parseFloat(v1);\n }\n r = Math.min(Math.max(roundToPrecision(r, OCT), 0), MAX_RGB);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n if (v2.endsWith('%')) {\n g = (parseFloat(v2) * MAX_RGB) / MAX_PCT;\n } else {\n g = parseFloat(v2);\n }\n g = Math.min(Math.max(roundToPrecision(g, OCT), 0), MAX_RGB);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n if (v3.endsWith('%')) {\n b = (parseFloat(v3) * MAX_RGB) / MAX_PCT;\n } else {\n b = parseFloat(v3);\n }\n b = Math.min(Math.max(roundToPrecision(b, OCT), 0), MAX_RGB);\n }\n const alpha = parseAlpha(v4);\n return ['rgb', r, g, b, format === VAL_MIX && v4 === NONE ? NONE : alpha];\n};\n\n/**\n * parse hsl()\n * @param value - hsl color value\n * @param [opt] - options\n * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject\n */\nexport const parseHsl = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_HSL.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const [, val] = value.match(REG_HSL) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace(/[,/]/g, ' ')\n .split(/\\s+/) as StringColorChannels;\n let h, s, l;\n if (v1 === NONE) {\n h = 0;\n } else {\n h = angleToDeg(v1);\n }\n if (v2 === NONE) {\n s = 0;\n } else {\n s = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT);\n }\n if (v3 === NONE) {\n l = 0;\n } else {\n l = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT);\n }\n const alpha = parseAlpha(v4);\n if (format === 'hsl') {\n return [\n format,\n v1 === NONE ? v1 : h,\n v2 === NONE ? v2 : s,\n v3 === NONE ? v3 : l,\n v4 === NONE ? v4 : alpha\n ];\n }\n h = (h / DEG) * DOZ;\n l /= MAX_PCT;\n const sa = (s / MAX_PCT) * Math.min(l, 1 - l);\n const rk = h % DOZ;\n const gk = (8 + h) % DOZ;\n const bk = (4 + h) % DOZ;\n const r = l - sa * Math.max(-1, Math.min(rk - TRIA, TRIA ** POW_SQR - rk, 1));\n const g = l - sa * Math.max(-1, Math.min(gk - TRIA, TRIA ** POW_SQR - gk, 1));\n const b = l - sa * Math.max(-1, Math.min(bk - TRIA, TRIA ** POW_SQR - bk, 1));\n return [\n 'rgb',\n Math.min(Math.max(roundToPrecision(r * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(g * MAX_RGB, OCT), 0), MAX_RGB),\n Math.min(Math.max(roundToPrecision(b * MAX_RGB, OCT), 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n * parse hwb()\n * @param value - hwb color value\n * @param [opt] - options\n * @returns parsed color - ['rgb', r, g, b, alpha], '(empty)', NullObject\n */\nexport const parseHwb = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_HWB.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const [, val] = value.match(REG_HWB) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorChannels;\n let h, wh, bk;\n if (v1 === NONE) {\n h = 0;\n } else {\n h = angleToDeg(v1);\n }\n if (v2 === NONE) {\n wh = 0;\n } else {\n wh = Math.min(Math.max(parseFloat(v2), 0), MAX_PCT) / MAX_PCT;\n }\n if (v3 === NONE) {\n bk = 0;\n } else {\n bk = Math.min(Math.max(parseFloat(v3), 0), MAX_PCT) / MAX_PCT;\n }\n const alpha = parseAlpha(v4);\n if (format === 'hwb') {\n return [\n format,\n v1 === NONE ? v1 : h,\n v2 === NONE ? v2 : wh * MAX_PCT,\n v3 === NONE ? v3 : bk * MAX_PCT,\n v4 === NONE ? v4 : alpha\n ];\n }\n if (wh + bk >= 1) {\n const v = roundToPrecision((wh / (wh + bk)) * MAX_RGB, OCT);\n return ['rgb', v, v, v, alpha];\n }\n const factor = (1 - wh - bk) / MAX_RGB;\n let [, r, g, b] = parseHsl(`hsl(${h} 100 50)`) as ComputedColorChannels;\n r = roundToPrecision((r * factor + wh) * MAX_RGB, OCT);\n g = roundToPrecision((g * factor + wh) * MAX_RGB, OCT);\n b = roundToPrecision((b * factor + wh) * MAX_RGB, OCT);\n return [\n 'rgb',\n Math.min(Math.max(r, 0), MAX_RGB),\n Math.min(Math.max(g, 0), MAX_RGB),\n Math.min(Math.max(b, 0), MAX_RGB),\n alpha\n ];\n};\n\n/**\n * parse lab()\n * @param value - lab color value\n * @param [opt] - options\n * @returns parsed color\n * - [xyz-d50, x, y, z, alpha], ['lab', l, a, b, alpha], '(empty)', NullObject\n */\nexport const parseLab = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_LAB.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const COEF_PCT = 1.25;\n const COND_POW = 8;\n const [, val] = value.match(REG_LAB) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorChannels;\n let l, a, b;\n if (v1 === NONE) {\n l = 0;\n } else {\n if (v1.endsWith('%')) {\n l = parseFloat(v1);\n if (l > MAX_PCT) {\n l = MAX_PCT;\n }\n } else {\n l = parseFloat(v1);\n }\n if (l < 0) {\n l = 0;\n }\n }\n if (v2 === NONE) {\n a = 0;\n } else {\n a = v2.endsWith('%') ? parseFloat(v2) * COEF_PCT : parseFloat(v2);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n b = v3.endsWith('%') ? parseFloat(v3) * COEF_PCT : parseFloat(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format)) {\n return [\n 'lab',\n v1 === NONE ? v1 : roundToPrecision(l, HEX),\n v2 === NONE ? v2 : roundToPrecision(a, HEX),\n v3 === NONE ? v3 : roundToPrecision(b, HEX),\n v4 === NONE ? v4 : alpha\n ];\n }\n const fl = (l + HEX) / LAB_L;\n const fa = a / LAB_A + fl;\n const fb = fl - b / LAB_B;\n const powFl = Math.pow(fl, POW_CUBE);\n const powFa = Math.pow(fa, POW_CUBE);\n const powFb = Math.pow(fb, POW_CUBE);\n const xyz = [\n powFa > LAB_EPSILON ? powFa : (fa * LAB_L - HEX) / LAB_KAPPA,\n l > COND_POW ? powFl : l / LAB_KAPPA,\n powFb > LAB_EPSILON ? powFb : (fb * LAB_L - HEX) / LAB_KAPPA\n ];\n const [x, y, z] = xyz.map(\n (val, i) => val * (D50[i] as number)\n ) as TriColorChannels;\n return [\n 'xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse lch()\n * @param value - lch color value\n * @param [opt] - options\n * @returns parsed color\n * - ['xyz-d50', x, y, z, alpha], ['lch', l, c, h, alpha]\n * - '(empty)', NullObject\n */\nexport const parseLch = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_LCH.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const COEF_PCT = 1.5;\n const [, val] = value.match(REG_LCH) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorChannels;\n let l, c, h;\n if (v1 === NONE) {\n l = 0;\n } else {\n l = parseFloat(v1);\n if (l < 0) {\n l = 0;\n }\n }\n if (v2 === NONE) {\n c = 0;\n } else {\n c = v2.endsWith('%') ? parseFloat(v2) * COEF_PCT : parseFloat(v2);\n }\n if (v3 === NONE) {\n h = 0;\n } else {\n h = angleToDeg(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format)) {\n return [\n 'lch',\n v1 === NONE ? v1 : roundToPrecision(l, HEX),\n v2 === NONE ? v2 : roundToPrecision(c, HEX),\n v3 === NONE ? v3 : roundToPrecision(h, HEX),\n v4 === NONE ? v4 : alpha\n ];\n }\n const a = c * Math.cos((h * Math.PI) / DEG_HALF);\n const b = c * Math.sin((h * Math.PI) / DEG_HALF);\n const [, x, y, z] = parseLab(`lab(${l} ${a} ${b})`) as ComputedColorChannels;\n return [\n 'xyz-d50',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha as number\n ];\n};\n\n/**\n * parse oklab()\n * @param value - oklab color value\n * @param [opt] - options\n * @returns parsed color\n * - ['xyz-d65', x, y, z, alpha], ['oklab', l, a, b, alpha]\n * - '(empty)', NullObject\n */\nexport const parseOklab = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_OKLAB.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLAB) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorChannels;\n let l, a, b;\n if (v1 === NONE) {\n l = 0;\n } else {\n l = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n if (l < 0) {\n l = 0;\n }\n }\n if (v2 === NONE) {\n a = 0;\n } else if (v2.endsWith('%')) {\n a = (parseFloat(v2) * COEF_PCT) / MAX_PCT;\n } else {\n a = parseFloat(v2);\n }\n if (v3 === NONE) {\n b = 0;\n } else if (v3.endsWith('%')) {\n b = (parseFloat(v3) * COEF_PCT) / MAX_PCT;\n } else {\n b = parseFloat(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format)) {\n return [\n 'oklab',\n v1 === NONE ? v1 : roundToPrecision(l, HEX),\n v2 === NONE ? v2 : roundToPrecision(a, HEX),\n v3 === NONE ? v3 : roundToPrecision(b, HEX),\n v4 === NONE ? v4 : alpha\n ];\n }\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(c => Math.pow(c, POW_CUBE)) as TriColorChannels;\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha as number\n ];\n};\n\n/**\n * parse oklch()\n * @param value - oklch color value\n * @param [opt] - options\n * @returns parsed color\n * - ['xyz-d65', x, y, z, alpha], ['oklch', l, c, h, alpha]\n * - '(empty)', NullObject\n */\nexport const parseOklch = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n if (!REG_OKLCH.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const COEF_PCT = 0.4;\n const [, val] = value.match(REG_OKLCH) as MatchedRegExp;\n const [v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorChannels;\n let l, c, h;\n if (v1 === NONE) {\n l = 0;\n } else {\n l = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n if (l < 0) {\n l = 0;\n }\n }\n if (v2 === NONE) {\n c = 0;\n } else {\n if (v2.endsWith('%')) {\n c = (parseFloat(v2) * COEF_PCT) / MAX_PCT;\n } else {\n c = parseFloat(v2);\n }\n if (c < 0) {\n c = 0;\n }\n }\n if (v3 === NONE) {\n h = 0;\n } else {\n h = angleToDeg(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format)) {\n return [\n 'oklch',\n v1 === NONE ? v1 : roundToPrecision(l, HEX),\n v2 === NONE ? v2 : roundToPrecision(c, HEX),\n v3 === NONE ? v3 : roundToPrecision(h, HEX),\n v4 === NONE ? v4 : alpha\n ];\n }\n const a = c * Math.cos((h * Math.PI) / DEG_HALF);\n const b = c * Math.sin((h * Math.PI) / DEG_HALF);\n const lms = transformMatrix(MATRIX_OKLAB_TO_LMS, [l, a, b]);\n const xyzLms = lms.map(cc => Math.pow(cc, POW_CUBE)) as TriColorChannels;\n const [x, y, z] = transformMatrix(MATRIX_LMS_TO_XYZ, xyzLms, true);\n return [\n 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * parse color()\n * @param value - color function value\n * @param [opt] - options\n * @returns parsed color\n * - ['xyz-(d50|d65)', x, y, z, alpha], [cs, r, g, b, alpha]\n * - '(empty)', NullObject\n */\nexport const parseColorFunc = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace = '', d50 = false, format = '', nullable = false } = opt;\n if (!REG_FN_COLOR.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;\n let [cs, v1, v2, v3, v4 = ''] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorSpacedChannels;\n let r, g, b;\n if (cs === 'xyz') {\n cs = 'xyz-d65';\n }\n if (v1 === NONE) {\n r = 0;\n } else {\n r = v1.endsWith('%') ? parseFloat(v1) / MAX_PCT : parseFloat(v1);\n }\n if (v2 === NONE) {\n g = 0;\n } else {\n g = v2.endsWith('%') ? parseFloat(v2) / MAX_PCT : parseFloat(v2);\n }\n if (v3 === NONE) {\n b = 0;\n } else {\n b = v3.endsWith('%') ? parseFloat(v3) / MAX_PCT : parseFloat(v3);\n }\n const alpha = parseAlpha(v4);\n if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {\n return [\n cs,\n v1 === NONE ? v1 : roundToPrecision(r, DEC),\n v2 === NONE ? v2 : roundToPrecision(g, DEC),\n v3 === NONE ? v3 : roundToPrecision(b, DEC),\n v4 === NONE ? v4 : alpha\n ];\n }\n let x = 0;\n let y = 0;\n let z = 0;\n // srgb-linear\n if (cs === 'srgb-linear') {\n [x, y, z] = transformMatrix(MATRIX_L_RGB_TO_XYZ, [r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // display-p3\n } else if (cs === 'display-p3') {\n const linearRgb = transformRgbToLinearRgb([\n r * MAX_RGB,\n g * MAX_RGB,\n b * MAX_RGB\n ]);\n [x, y, z] = transformMatrix(MATRIX_P3_TO_XYZ, linearRgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // rec2020\n } else if (cs === 'rec2020') {\n const ALPHA = 1.09929682680944;\n const BETA = 0.018053968510807;\n const REC_COEF = 0.45;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c < BETA * REC_COEF * DEC) {\n cl = c / (REC_COEF * DEC);\n } else {\n cl = Math.pow((c + ALPHA - 1) / ALPHA, 1 / REC_COEF);\n }\n return cl;\n }) as TriColorChannels;\n [x, y, z] = transformMatrix(MATRIX_REC2020_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // a98-rgb\n } else if (cs === 'a98-rgb') {\n const POW_A98 = 563 / 256;\n const rgb = [r, g, b].map(c => {\n const cl = Math.pow(c, POW_A98);\n return cl;\n }) as TriColorChannels;\n [x, y, z] = transformMatrix(MATRIX_A98_TO_XYZ, rgb);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // prophoto-rgb\n } else if (cs === 'prophoto-rgb') {\n const POW_PROPHOTO = 1.8;\n const rgb = [r, g, b].map(c => {\n let cl;\n if (c > 1 / (HEX * DUO)) {\n cl = Math.pow(c, POW_PROPHOTO);\n } else {\n cl = c / HEX;\n }\n return cl;\n }) as TriColorChannels;\n [x, y, z] = transformMatrix(MATRIX_PROPHOTO_TO_XYZ_D50, rgb);\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // xyz, xyz-d50, xyz-d65\n } else if (/^xyz(?:-d(?:50|65))?$/.test(cs)) {\n [x, y, z] = [r, g, b];\n if (cs === 'xyz-d50') {\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z]);\n }\n } else if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // srgb\n } else {\n [x, y, z] = transformRgbToXyz([r * MAX_RGB, g * MAX_RGB, b * MAX_RGB]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n format === VAL_MIX && v4 === NONE ? v4 : alpha\n ];\n};\n\n/**\n * parse color value\n * @param value - CSS color value\n * @param [opt] - options\n * @returns parsed color\n * - ['xyz-(d50|d65)', x, y, z, alpha], ['rgb', r, g, b, alpha]\n * - value, '(empty)', NullObject\n */\nexport const parseColorValue = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50 = false, format = '', nullable = false } = opt;\n if (!REG_COLOR.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n return res;\n }\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n let x = 0;\n let y = 0;\n let z = 0;\n let alpha = 0;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_COMP) {\n return ['rgb', 0, 0, 0, 0];\n }\n if (format === VAL_SPEC) {\n return value;\n }\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.hasOwn(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n return value;\n }\n const [r, g, b] = NAMED_COLORS[\n value as keyof typeof NAMED_COLORS\n ] as TriColorChannels;\n alpha = 1;\n if (format === VAL_COMP) {\n return ['rgb', r, g, b, alpha];\n }\n [x, y, z] = transformRgbToXyz([r, g, b], true);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n switch (format) {\n case VAL_COMP: {\n if (nullable && value !== 'transparent') {\n return new NullObject();\n }\n return ['rgb', 0, 0, 0, 0];\n }\n case VAL_SPEC: {\n if (value === 'transparent') {\n return value;\n }\n return '';\n }\n case VAL_MIX: {\n if (value === 'transparent') {\n return ['rgb', 0, 0, 0, 0];\n }\n return new NullObject();\n }\n default:\n }\n }\n // hex-color\n } else if (value[0] === '#') {\n if (REG_SPEC.test(format)) {\n const rgb = convertHexToRgb(value);\n return ['rgb', ...rgb];\n }\n [x, y, z, alpha] = convertHexToXyz(value);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // lab()\n } else if (value.startsWith('lab')) {\n if (REG_SPEC.test(format)) {\n return parseLab(value, opt);\n }\n [, x, y, z, alpha] = parseLab(value) as ComputedColorChannels;\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // lch()\n } else if (value.startsWith('lch')) {\n if (REG_SPEC.test(format)) {\n return parseLch(value, opt);\n }\n [, x, y, z, alpha] = parseLch(value) as ComputedColorChannels;\n if (!d50) {\n [x, y, z] = transformMatrix(MATRIX_D50_TO_D65, [x, y, z], true);\n }\n // oklab()\n } else if (value.startsWith('oklab')) {\n if (REG_SPEC.test(format)) {\n return parseOklab(value, opt);\n }\n [, x, y, z, alpha] = parseOklab(value) as ComputedColorChannels;\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n // oklch()\n } else if (value.startsWith('oklch')) {\n if (REG_SPEC.test(format)) {\n return parseOklch(value, opt);\n }\n [, x, y, z, alpha] = parseOklch(value) as ComputedColorChannels;\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n } else {\n let r, g, b;\n // hsl()\n if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value) as ComputedColorChannels;\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value) as ComputedColorChannels;\n // rgb()\n } else {\n [, r, g, b, alpha] = parseRgb(value, opt) as ComputedColorChannels;\n }\n if (REG_SPEC.test(format)) {\n return ['rgb', Math.round(r), Math.round(g), Math.round(b), alpha];\n }\n [x, y, z] = transformRgbToXyz([r, g, b]);\n if (d50) {\n [x, y, z] = transformMatrix(MATRIX_D65_TO_D50, [x, y, z], true);\n }\n }\n return [\n d50 ? 'xyz-d50' : 'xyz-d65',\n roundToPrecision(x, HEX),\n roundToPrecision(y, HEX),\n roundToPrecision(z, HEX),\n alpha\n ];\n};\n\n/**\n * resolve color value\n * @param value - CSS color value\n * @param [opt] - options\n * @returns resolved color\n * - [cs, v1, v2, v3, alpha], value, '(empty)', NullObject\n */\nexport const resolveColorValue = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace = '', format = '', nullable = false } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolveColorValue',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n const cachedItem = cachedResult.item;\n if (isString(cachedItem)) {\n return cachedItem as string;\n }\n return cachedItem as SpecifiedColorChannels;\n }\n if (!REG_COLOR.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n setCache(cacheKey, null);\n return res;\n }\n setCache(cacheKey, res);\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n let cs = '';\n let r = 0;\n let g = 0;\n let b = 0;\n let alpha = 0;\n // complement currentcolor as a missing color\n if (REG_CURRENT.test(value)) {\n if (format === VAL_SPEC) {\n setCache(cacheKey, value);\n return value;\n }\n // named-color\n } else if (/^[a-z]+$/.test(value)) {\n if (Object.hasOwn(NAMED_COLORS, value)) {\n if (format === VAL_SPEC) {\n setCache(cacheKey, value);\n return value;\n }\n [r, g, b] = NAMED_COLORS[\n value as keyof typeof NAMED_COLORS\n ] as TriColorChannels;\n alpha = 1;\n } else {\n switch (format) {\n case VAL_SPEC: {\n if (value === 'transparent') {\n setCache(cacheKey, value);\n return value;\n }\n const res = '';\n setCache(cacheKey, res);\n return res;\n }\n case VAL_MIX: {\n if (value === 'transparent') {\n const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];\n setCache(cacheKey, res);\n return res;\n }\n setCache(cacheKey, null);\n return new NullObject();\n }\n case VAL_COMP:\n default: {\n if (nullable && value !== 'transparent') {\n setCache(cacheKey, null);\n return new NullObject();\n }\n const res: SpecifiedColorChannels = ['rgb', 0, 0, 0, 0];\n setCache(cacheKey, res);\n return res;\n }\n }\n }\n // hex-color\n } else if (value[0] === '#') {\n [r, g, b, alpha] = convertHexToRgb(value);\n // hsl()\n } else if (value.startsWith('hsl')) {\n [, r, g, b, alpha] = parseHsl(value, opt) as ComputedColorChannels;\n // hwb()\n } else if (value.startsWith('hwb')) {\n [, r, g, b, alpha] = parseHwb(value, opt) as ComputedColorChannels;\n // lab(), lch()\n } else if (/^l(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('lab')) {\n [cs, x, y, z, alpha] = parseLab(value, opt) as ComputedColorChannels;\n } else {\n [cs, x, y, z, alpha] = parseLch(value, opt) as ComputedColorChannels;\n }\n if (REG_SPEC.test(format)) {\n const res: SpecifiedColorChannels = [cs, x, y, z, alpha];\n setCache(cacheKey, res);\n return res;\n }\n [r, g, b] = transformXyzD50ToRgb([x, y, z]);\n // oklab(), oklch()\n } else if (/^okl(?:ab|ch)/.test(value)) {\n let x, y, z;\n if (value.startsWith('oklab')) {\n [cs, x, y, z, alpha] = parseOklab(value, opt) as ComputedColorChannels;\n } else {\n [cs, x, y, z, alpha] = parseOklch(value, opt) as ComputedColorChannels;\n }\n if (REG_SPEC.test(format)) {\n const res: SpecifiedColorChannels = [cs, x, y, z, alpha];\n setCache(cacheKey, res);\n return res;\n }\n [r, g, b] = transformXyzToRgb([x, y, z]);\n // rgb()\n } else {\n [, r, g, b, alpha] = parseRgb(value, opt) as ComputedColorChannels;\n }\n if (format === VAL_MIX && colorSpace === 'srgb') {\n const res: SpecifiedColorChannels = [\n 'srgb',\n r / MAX_RGB,\n g / MAX_RGB,\n b / MAX_RGB,\n alpha\n ];\n setCache(cacheKey, res);\n return res;\n }\n const res: SpecifiedColorChannels = [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n alpha\n ];\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * resolve color()\n * @param value - color function value\n * @param [opt] - options\n * @returns resolved color - [cs, v1, v2, v3, alpha], '(empty)', NullObject\n */\nexport const resolveColorFunc = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace = '', format = '', nullable = false } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolveColorFunc',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n const cachedItem = cachedResult.item;\n if (isString(cachedItem)) {\n return cachedItem as string;\n }\n return cachedItem as SpecifiedColorChannels;\n }\n if (!REG_FN_COLOR.test(value)) {\n const res = resolveInvalidColorValue(format, nullable);\n if (res instanceof NullObject) {\n setCache(cacheKey, null);\n return res;\n }\n setCache(cacheKey, res);\n if (isString(res)) {\n return res as string;\n }\n return res as SpecifiedColorChannels;\n }\n const [cs, v1, v2, v3, v4] = parseColorFunc(\n value,\n opt\n ) as SpecifiedColorChannels;\n if (REG_SPEC.test(format) || (format === VAL_MIX && cs === colorSpace)) {\n const res: SpecifiedColorChannels = [cs, v1, v2, v3, v4];\n setCache(cacheKey, res);\n return res;\n }\n const x = parseFloat(`${v1}`);\n const y = parseFloat(`${v2}`);\n const z = parseFloat(`${v3}`);\n const alpha = parseAlpha(`${v4}`);\n const [r, g, b] = transformXyzToRgb([x, y, z], true);\n const res: SpecifiedColorChannels = ['rgb', r, g, b, alpha];\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * convert color value to linear rgb\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [r, g, b, alpha] r|g|b|alpha: 0..1\n */\nexport const convertColorToLinearRgb = (\n value: string,\n opt: {\n colorSpace?: string;\n format?: string;\n } = {}\n): ColorChannels | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { colorSpace = '', format = '' } = opt;\n let cs = '';\n let r, g, b, alpha, x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [cs, x, y, z, alpha] = xyz as ComputedColorChannels;\n if (cs === colorSpace) {\n return [x, y, z, alpha];\n }\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;\n const [cs] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorSpacedChannels;\n if (cs === 'srgb-linear') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;\n [r, g, b] = transformMatrix(MATRIX_XYZ_TO_L_RGB, [x, y, z], true);\n }\n return [\n Math.min(Math.max(r, 0), 1),\n Math.min(Math.max(g, 0), 1),\n Math.min(Math.max(b, 0), 1),\n alpha\n ];\n};\n\n/**\n * convert color value to rgb\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject\n * - [r, g, b, alpha] r|g|b: 0..255 alpha: 0..1\n */\nexport const convertColorToRgb = (\n value: string,\n opt: Options = {}\n): ColorChannels | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let r, g, b, alpha;\n if (format === VAL_MIX) {\n let rgb;\n if (value.startsWith(FN_COLOR)) {\n rgb = resolveColorFunc(value, opt);\n } else {\n rgb = resolveColorValue(value, opt);\n }\n if (rgb instanceof NullObject) {\n return rgb;\n }\n [, r, g, b, alpha] = rgb as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;\n const [cs] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorSpacedChannels;\n if (cs === 'srgb') {\n [, r, g, b, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n } else {\n [, r, g, b, alpha] = resolveColorFunc(value) as ComputedColorChannels;\n }\n } else if (/^(?:ok)?l(?:ab|ch)/.test(value)) {\n [r, g, b, alpha] = convertColorToLinearRgb(value) as ColorChannels;\n [r, g, b] = transformLinearRgbToRgb([r, g, b]);\n } else {\n [, r, g, b, alpha] = resolveColorValue(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n }\n return [r, g, b, alpha];\n};\n\n/**\n * convert color value to xyz\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [x, y, z, alpha]\n */\nexport const convertColorToXyz = (\n value: string,\n opt: Options = {}\n): ColorChannels | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { d50 = false, format = '' } = opt;\n let x, y, z, alpha;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n const [, val] = value.match(REG_FN_COLOR) as MatchedRegExp;\n const [cs] = val\n .replace('/', ' ')\n .split(/\\s+/) as StringColorSpacedChannels;\n if (d50) {\n if (cs === 'xyz-d50') {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorFunc(\n value,\n opt\n ) as ComputedColorChannels;\n }\n } else if (/^xyz(?:-d65)?$/.test(cs)) {\n [, x, y, z, alpha] = resolveColorFunc(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n }\n } else {\n [, x, y, z, alpha] = parseColorValue(value, opt) as ComputedColorChannels;\n }\n return [x, y, z, alpha];\n};\n\n/**\n * convert color value to hsl\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [h, s, l, alpha], hue may be powerless\n */\nexport const convertColorToHsl = (\n value: string,\n opt: Options = {}\n): ColorChannels | [number | string, number, number, number] | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let h, s, l, alpha;\n if (REG_HSL.test(value)) {\n [, h, s, l, alpha] = parseHsl(value, {\n format: 'hsl'\n }) as ComputedColorChannels;\n if (format === 'hsl') {\n return [Math.round(h), Math.round(s), Math.round(l), alpha];\n }\n return [h, s, l, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;\n }\n [h, s, l] = transformXyzToHsl([x, y, z], true) as TriColorChannels;\n if (format === 'hsl') {\n return [Math.round(h), Math.round(s), Math.round(l), alpha];\n }\n return [format === VAL_MIX && s === 0 ? NONE : h, s, l, alpha];\n};\n\n/**\n * convert color value to hwb\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [h, w, b, alpha], hue may be powerless\n */\nexport const convertColorToHwb = (\n value: string,\n opt: Options = {}\n): ColorChannels | [number | string, number, number, number] | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let h, w, b, alpha;\n if (REG_HWB.test(value)) {\n [, h, w, b, alpha] = parseHwb(value, {\n format: 'hwb'\n }) as ComputedColorChannels;\n if (format === 'hwb') {\n return [Math.round(h), Math.round(w), Math.round(b), alpha];\n }\n return [h, w, b, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;\n }\n [h, w, b] = transformXyzToHwb([x, y, z], true) as TriColorChannels;\n if (format === 'hwb') {\n return [Math.round(h), Math.round(w), Math.round(b), alpha];\n }\n return [format === VAL_MIX && w + b >= 100 ? NONE : h, w, b, alpha];\n};\n\n/**\n * convert color value to lab\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [l, a, b, alpha]\n */\nexport const convertColorToLab = (\n value: string,\n opt: Options = {}\n): ColorChannels | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let l, a, b, alpha;\n if (REG_LAB.test(value)) {\n [, l, a, b, alpha] = parseLab(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n return [l, a, b, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n }) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n }) as ComputedColorChannels;\n }\n [l, a, b] = transformXyzD50ToLab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to lch\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [l, c, h, alpha], hue may be powerless\n */\nexport const convertColorToLch = (\n value: string,\n opt: Options = {}\n): ColorChannels | [number, number, number | string, number] | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let l, c, h, alpha;\n if (REG_LCH.test(value)) {\n [, l, c, h, alpha] = parseLch(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n return [l, c, h, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n opt.d50 = true;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value, {\n d50: true\n }) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value, {\n d50: true\n }) as ComputedColorChannels;\n }\n [l, c, h] = transformXyzD50ToLch([x, y, z], true);\n return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];\n};\n\n/**\n * convert color value to oklab\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [l, a, b, alpha]\n */\nexport const convertColorToOklab = (\n value: string,\n opt: Options = {}\n): ColorChannels | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let l, a, b, alpha;\n if (REG_OKLAB.test(value)) {\n [, l, a, b, alpha] = parseOklab(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n return [l, a, b, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;\n }\n [l, a, b] = transformXyzToOklab([x, y, z], true);\n return [l, a, b, alpha];\n};\n\n/**\n * convert color value to oklch\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels | NullObject - [l, c, h, alpha], hue may be powerless\n */\nexport const convertColorToOklch = (\n value: string,\n opt: Options = {}\n): ColorChannels | [number, number, number | string, number] | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '' } = opt;\n let l, c, h, alpha;\n if (REG_OKLCH.test(value)) {\n [, l, c, h, alpha] = parseOklch(value, {\n format: VAL_COMP\n }) as ComputedColorChannels;\n return [l, c, h, alpha];\n }\n let x, y, z;\n if (format === VAL_MIX) {\n let xyz;\n if (value.startsWith(FN_COLOR)) {\n xyz = parseColorFunc(value, opt);\n } else {\n xyz = parseColorValue(value, opt);\n }\n if (xyz instanceof NullObject) {\n return xyz;\n }\n [, x, y, z, alpha] = xyz as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n [, x, y, z, alpha] = parseColorFunc(value) as ComputedColorChannels;\n } else {\n [, x, y, z, alpha] = parseColorValue(value) as ComputedColorChannels;\n }\n [l, c, h] = transformXyzToOklch([x, y, z], true) as TriColorChannels;\n return [l, c, format === VAL_MIX && c === 0 ? NONE : h, alpha];\n};\n\n/**\n * resolve color-mix()\n * @param value - color-mix color value\n * @param [opt] - options\n * @returns resolved color - [cs, v1, v2, v3, alpha], '(empty)'\n */\nexport const resolveColorMix = (\n value: string,\n opt: Options = {}\n): SpecifiedColorChannels | string | NullObject => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { format = '', nullable = false } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolveColorMix',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n const cachedItem = cachedResult.item;\n if (isString(cachedItem)) {\n return cachedItem as string;\n }\n return cachedItem as SpecifiedColorChannels;\n }\n const nestedItems = [];\n let colorSpace = '';\n let hueArc = '';\n let colorA = '';\n let pctA = '';\n let colorB = '';\n let pctB = '';\n let parsed = false;\n if (!REG_MIX.test(value)) {\n // nested color-mix()\n if (value.startsWith(FN_MIX) && REG_MIX_NEST.test(value)) {\n const regColorSpace = new RegExp(`^(?:${CS_RGB}|${CS_XYZ})$`);\n const items = value.match(REG_MIX_NEST) as RegExpMatchArray;\n for (const item of items) {\n if (item) {\n let val = resolveColorMix(item, {\n format: format === VAL_SPEC ? format : VAL_COMP\n }) as ComputedColorChannels | string;\n // computed value\n if (Array.isArray(val)) {\n const [cs, v1, v2, v3, v4] = val as ComputedColorChannels;\n if (v1 === 0 && v2 === 0 && v3 === 0 && v4 === 0) {\n value = '';\n break;\n }\n if (regColorSpace.test(cs)) {\n if (v4 === 1) {\n val = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n val = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n }\n } else if (v4 === 1) {\n val = `${cs}(${v1} ${v2} ${v3})`;\n } else {\n val = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n }\n } else if (!REG_MIX.test(val)) {\n value = '';\n break;\n }\n nestedItems.push(val);\n value = value.replace(item, val);\n }\n }\n if (!value) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n // contains light-dark()\n } else if (\n value.startsWith(FN_MIX) &&\n value.endsWith(')') &&\n value.includes(FN_LIGHT_DARK)\n ) {\n const regColorSpace = new RegExp(`in\\\\s+(${CS_MIX})`);\n const colorParts = value.replace(FN_MIX, '').replace(/\\)$/, '');\n const [csPart = '', partA = '', partB = ''] = splitValue(colorParts, {\n delimiter: ','\n });\n const [colorPartA = '', pctPartA = ''] = splitValue(partA);\n const [colorPartB = '', pctPartB = ''] = splitValue(partB);\n const specifiedColorA = resolveColor(colorPartA, {\n format: VAL_SPEC\n }) as string;\n const specifiedColorB = resolveColor(colorPartB, {\n format: VAL_SPEC\n }) as string;\n if (regColorSpace.test(csPart) && specifiedColorA && specifiedColorB) {\n if (format === VAL_SPEC) {\n const [, cs] = csPart.match(regColorSpace) as MatchedRegExp;\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = cs.match(REG_CS_HUE) as MatchedRegExp;\n } else {\n colorSpace = cs;\n }\n colorA = specifiedColorA;\n if (pctPartA) {\n pctA = pctPartA;\n }\n colorB = specifiedColorB;\n if (pctPartB) {\n pctB = pctPartB;\n }\n value = value\n .replace(colorPartA, specifiedColorA)\n .replace(colorPartB, specifiedColorB);\n parsed = true;\n } else {\n const resolvedColorA = resolveColor(colorPartA, opt);\n const resolvedColorB = resolveColor(colorPartB, opt);\n if (isString(resolvedColorA) && isString(resolvedColorB)) {\n value = value\n .replace(colorPartA, resolvedColorA)\n .replace(colorPartB, resolvedColorB);\n }\n }\n } else {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n } else {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n }\n if (nestedItems.length && format === VAL_SPEC) {\n const regColorSpace = new RegExp(`^color-mix\\\\(\\\\s*in\\\\s+(${CS_MIX})\\\\s*,`);\n const [, cs] = value.match(regColorSpace) as MatchedRegExp;\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = cs.match(REG_CS_HUE) as MatchedRegExp;\n } else {\n colorSpace = cs;\n }\n if (nestedItems.length === 2) {\n let [itemA, itemB] = nestedItems as [string, string];\n itemA = itemA.replace(/(?=[()])/g, '\\\\');\n itemB = itemB.replace(/(?=[()])/g, '\\\\');\n const regA = new RegExp(`(${itemA})(?:\\\\s+(${PCT}))?`);\n const regB = new RegExp(`(${itemB})(?:\\\\s+(${PCT}))?`);\n [, colorA, pctA] = value.match(regA) as MatchedRegExp;\n [, colorB, pctB] = value.match(regB) as MatchedRegExp;\n } else {\n let [item] = nestedItems as [string];\n item = item.replace(/(?=[()])/g, '\\\\');\n const itemPart = `${item}(?:\\\\s+${PCT})?`;\n const itemPartCapt = `(${item})(?:\\\\s+(${PCT}))?`;\n const regItemPart = new RegExp(`^${itemPartCapt}$`);\n const regLastItem = new RegExp(`${itemPartCapt}\\\\s*\\\\)$`);\n const regColorPart = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n // item is at the end\n if (regLastItem.test(value)) {\n const reg = new RegExp(\n `(${SYN_MIX_PART})\\\\s*,\\\\s*(${itemPart})\\\\s*\\\\)$`\n );\n const [, colorPartA, colorPartB] = value.match(reg) as MatchedRegExp;\n [, colorA, pctA] = colorPartA.match(regColorPart) as MatchedRegExp;\n [, colorB, pctB] = colorPartB.match(regItemPart) as MatchedRegExp;\n } else {\n const reg = new RegExp(\n `(${itemPart})\\\\s*,\\\\s*(${SYN_MIX_PART})\\\\s*\\\\)$`\n );\n const [, colorPartA, colorPartB] = value.match(reg) as MatchedRegExp;\n [, colorA, pctA] = colorPartA.match(regItemPart) as MatchedRegExp;\n [, colorB, pctB] = colorPartB.match(regColorPart) as MatchedRegExp;\n }\n }\n } else if (!parsed) {\n const [, cs, colorPartA, colorPartB] = value.match(\n REG_MIX_CAPT\n ) as MatchedRegExp;\n const reg = new RegExp(`^(${SYN_COLOR_TYPE})(?:\\\\s+(${PCT}))?$`);\n [, colorA, pctA] = colorPartA.match(reg) as MatchedRegExp;\n [, colorB, pctB] = colorPartB.match(reg) as MatchedRegExp;\n if (REG_CS_HUE.test(cs)) {\n [, colorSpace, hueArc] = cs.match(REG_CS_HUE) as MatchedRegExp;\n } else {\n colorSpace = cs;\n }\n }\n // normalize percentages and set multipler\n let pA, pB, m;\n if (pctA && pctB) {\n const p1 = parseFloat(pctA) / MAX_PCT;\n const p2 = parseFloat(pctB) / MAX_PCT;\n if (p1 < 0 || p1 > 1 || p2 < 0 || p2 > 1 || (p1 === 0 && p2 === 0)) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const factor = p1 + p2;\n pA = p1 / factor;\n pB = p2 / factor;\n m = factor < 1 ? factor : 1;\n } else {\n if (pctA) {\n pA = parseFloat(pctA) / MAX_PCT;\n if (pA < 0 || pA > 1) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n pB = 1 - pA;\n } else if (pctB) {\n pB = parseFloat(pctB) / MAX_PCT;\n if (pB < 0 || pB > 1) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n pA = 1 - pB;\n } else {\n pA = HALF;\n pB = HALF;\n }\n m = 1;\n }\n if (colorSpace === 'xyz') {\n colorSpace = 'xyz-d65';\n }\n // specified value\n if (format === VAL_SPEC) {\n let valueA = '';\n let valueB = '';\n if (colorA.startsWith(FN_MIX) || colorA.startsWith(FN_LIGHT_DARK)) {\n valueA = colorA;\n } else if (colorA.startsWith(FN_COLOR)) {\n const [cs, v1, v2, v3, v4] = parseColorFunc(\n colorA,\n opt\n ) as SpecifiedColorChannels;\n if (v4 === 1) {\n valueA = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n valueA = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n }\n } else {\n const val = parseColorValue(colorA, opt);\n if (Array.isArray(val)) {\n const [cs, v1, v2, v3, v4] = val;\n if (v4 === 1) {\n if (cs === 'rgb') {\n valueA = `${cs}(${v1}, ${v2}, ${v3})`;\n } else {\n valueA = `${cs}(${v1} ${v2} ${v3})`;\n }\n } else if (cs === 'rgb') {\n valueA = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;\n } else {\n valueA = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n }\n } else {\n if (!isString(val) || !val) {\n setCache(cacheKey, '');\n return '';\n }\n valueA = val;\n }\n }\n if (colorB.startsWith(FN_MIX) || colorB.startsWith(FN_LIGHT_DARK)) {\n valueB = colorB;\n } else if (colorB.startsWith(FN_COLOR)) {\n const [cs, v1, v2, v3, v4] = parseColorFunc(\n colorB,\n opt\n ) as SpecifiedColorChannels;\n if (v4 === 1) {\n valueB = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n valueB = `color(${cs} ${v1} ${v2} ${v3} / ${v4})`;\n }\n } else {\n const val = parseColorValue(colorB, opt);\n if (Array.isArray(val)) {\n const [cs, v1, v2, v3, v4] = val;\n if (v4 === 1) {\n if (cs === 'rgb') {\n valueB = `${cs}(${v1}, ${v2}, ${v3})`;\n } else {\n valueB = `${cs}(${v1} ${v2} ${v3})`;\n }\n } else if (cs === 'rgb') {\n valueB = `${cs}a(${v1}, ${v2}, ${v3}, ${v4})`;\n } else {\n valueB = `${cs}(${v1} ${v2} ${v3} / ${v4})`;\n }\n } else {\n if (!isString(val) || !val) {\n setCache(cacheKey, '');\n return '';\n }\n valueB = val;\n }\n }\n if (pctA && pctB) {\n valueA += ` ${parseFloat(pctA)}%`;\n valueB += ` ${parseFloat(pctB)}%`;\n } else if (pctA) {\n const pA = parseFloat(pctA);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n } else if (pctB) {\n const pA = MAX_PCT - parseFloat(pctB);\n if (pA !== MAX_PCT * HALF) {\n valueA += ` ${pA}%`;\n }\n }\n if (hueArc) {\n const res = `color-mix(in ${colorSpace} ${hueArc} hue, ${valueA}, ${valueB})`;\n setCache(cacheKey, res);\n return res;\n } else {\n const res = `color-mix(in ${colorSpace}, ${valueA}, ${valueB})`;\n setCache(cacheKey, res);\n return res;\n }\n }\n let r = 0;\n let g = 0;\n let b = 0;\n let alpha = 0;\n // in srgb, srgb-linear\n if (/^srgb(?:-linear)?$/.test(colorSpace)) {\n let rgbA, rgbB;\n if (colorSpace === 'srgb') {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n rgbA = [NONE, NONE, NONE, NONE];\n } else {\n rgbA = convertColorToLinearRgb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n rgbB = [NONE, NONE, NONE, NONE];\n } else {\n rgbB = convertColorToLinearRgb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (rgbA instanceof NullObject || rgbB instanceof NullObject) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const [rrA, ggA, bbA, aaA] = rgbA as NumStrColorChannels;\n const [rrB, ggB, bbB, aaB] = rgbB as NumStrColorChannels;\n const rNone = rrA === NONE && rrB === NONE;\n const gNone = ggA === NONE && ggB === NONE;\n const bNone = bbA === NONE && bbB === NONE;\n const alphaNone = aaA === NONE && aaB === NONE;\n const [[rA, gA, bA, alphaA], [rB, gB, bB, alphaB]] =\n normalizeColorComponents(\n [rrA, ggA, bbA, aaA],\n [rrB, ggB, bbB, aaB],\n true\n );\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = factorA + factorB;\n if (alpha === 0) {\n r = rA * pA + rB * pB;\n g = gA * pA + gB * pB;\n b = bA * pA + bB * pB;\n } else {\n r = (rA * factorA + rB * factorB) / alpha;\n g = (gA * factorA + gB * factorB) / alpha;\n b = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n const res: SpecifiedColorChannels = [\n colorSpace,\n rNone ? NONE : roundToPrecision(r, HEX),\n gNone ? NONE : roundToPrecision(g, HEX),\n bNone ? NONE : roundToPrecision(b, HEX),\n alphaNone ? NONE : alpha * m\n ];\n setCache(cacheKey, res);\n return res;\n }\n r *= MAX_RGB;\n g *= MAX_RGB;\n b *= MAX_RGB;\n // in xyz, xyz-d65, xyz-d50\n } else if (REG_CS_XYZ.test(colorSpace)) {\n let xyzA, xyzB;\n if (REG_CURRENT.test(colorA)) {\n xyzA = [NONE, NONE, NONE, NONE];\n } else {\n xyzA = convertColorToXyz(colorA, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n xyzB = [NONE, NONE, NONE, NONE];\n } else {\n xyzB = convertColorToXyz(colorB, {\n colorSpace,\n d50: colorSpace === 'xyz-d50',\n format: VAL_MIX\n });\n }\n if (xyzA instanceof NullObject || xyzB instanceof NullObject) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const [xxA, yyA, zzA, aaA] = xyzA;\n const [xxB, yyB, zzB, aaB] = xyzB;\n const xNone = xxA === NONE && xxB === NONE;\n const yNone = yyA === NONE && yyB === NONE;\n const zNone = zzA === NONE && zzB === NONE;\n const alphaNone = aaA === NONE && aaB === NONE;\n const [[xA, yA, zA, alphaA], [xB, yB, zB, alphaB]] =\n normalizeColorComponents(\n [xxA, yyA, zzA, aaA],\n [xxB, yyB, zzB, aaB],\n true\n );\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = factorA + factorB;\n let x, y, z;\n if (alpha === 0) {\n x = xA * pA + xB * pB;\n y = yA * pA + yB * pB;\n z = zA * pA + zB * pB;\n } else {\n x = (xA * factorA + xB * factorB) / alpha;\n y = (yA * factorA + yB * factorB) / alpha;\n z = (zA * factorA + zB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n const res: SpecifiedColorChannels = [\n colorSpace,\n xNone ? NONE : roundToPrecision(x, HEX),\n yNone ? NONE : roundToPrecision(y, HEX),\n zNone ? NONE : roundToPrecision(z, HEX),\n alphaNone ? NONE : alpha * m\n ];\n setCache(cacheKey, res);\n return res;\n }\n if (colorSpace === 'xyz-d50') {\n [r, g, b] = transformXyzD50ToRgb([x, y, z], true);\n } else {\n [r, g, b] = transformXyzToRgb([x, y, z], true);\n }\n // in hsl, hwb\n } else if (/^h(?:sl|wb)$/.test(colorSpace)) {\n let hslA, hslB;\n if (colorSpace === 'hsl') {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHsl(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHsl(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n hslA = [NONE, NONE, NONE, NONE];\n } else {\n hslA = convertColorToHwb(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n hslB = [NONE, NONE, NONE, NONE];\n } else {\n hslB = convertColorToHwb(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (hslA instanceof NullObject || hslB instanceof NullObject) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const [hhA, ssA, llA, aaA] = hslA;\n const [hhB, ssB, llB, aaB] = hslB;\n const alphaNone = aaA === NONE && aaB === NONE;\n let [[hA, sA, lA, alphaA], [hB, sB, lB, alphaB]] = normalizeColorComponents(\n [hhA, ssA, llA, aaA],\n [hhB, ssB, llB, aaB],\n true\n );\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = factorA + factorB;\n const h = (hA * pA + hB * pB) % DEG;\n let s, l;\n if (alpha === 0) {\n s = sA * pA + sB * pB;\n l = lA * pA + lB * pB;\n } else {\n s = (sA * factorA + sB * factorB) / alpha;\n l = (lA * factorA + lB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n [r, g, b] = convertColorToRgb(\n `${colorSpace}(${h} ${s} ${l})`\n ) as ColorChannels;\n if (format === VAL_COMP) {\n const res: SpecifiedColorChannels = [\n 'srgb',\n roundToPrecision(r / MAX_RGB, HEX),\n roundToPrecision(g / MAX_RGB, HEX),\n roundToPrecision(b / MAX_RGB, HEX),\n alphaNone ? NONE : alpha * m\n ];\n setCache(cacheKey, res);\n return res;\n }\n // in lch, oklch\n } else if (/^(?:ok)?lch$/.test(colorSpace)) {\n let lchA, lchB;\n if (colorSpace === 'lch') {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToLch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToLch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n lchA = [NONE, NONE, NONE, NONE];\n } else {\n lchA = convertColorToOklch(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n lchB = [NONE, NONE, NONE, NONE];\n } else {\n lchB = convertColorToOklch(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (lchA instanceof NullObject || lchB instanceof NullObject) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const [llA, ccA, hhA, aaA] = lchA;\n const [llB, ccB, hhB, aaB] = lchB;\n const lNone = llA === NONE && llB === NONE;\n const cNone = ccA === NONE && ccB === NONE;\n const hNone = hhA === NONE && hhB === NONE;\n const alphaNone = aaA === NONE && aaB === NONE;\n let [[lA, cA, hA, alphaA], [lB, cB, hB, alphaB]] = normalizeColorComponents(\n [llA, ccA, hhA, aaA],\n [llB, ccB, hhB, aaB],\n true\n );\n if (hueArc) {\n [hA, hB] = interpolateHue(hA, hB, hueArc);\n }\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = factorA + factorB;\n const h = (hA * pA + hB * pB) % DEG;\n let l, c;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n c = cA * pA + cB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n c = (cA * factorA + cB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n const res: SpecifiedColorChannels = [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n cNone ? NONE : roundToPrecision(c, HEX),\n hNone ? NONE : roundToPrecision(h, HEX),\n alphaNone ? NONE : alpha * m\n ];\n setCache(cacheKey, res);\n return res;\n }\n [, r, g, b] = resolveColorValue(\n `${colorSpace}(${l} ${c} ${h})`\n ) as ComputedColorChannels;\n // in lab, oklab\n } else {\n let labA, labB;\n if (colorSpace === 'lab') {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToLab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToLab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n } else {\n if (REG_CURRENT.test(colorA)) {\n labA = [NONE, NONE, NONE, NONE];\n } else {\n labA = convertColorToOklab(colorA, {\n colorSpace,\n format: VAL_MIX\n });\n }\n if (REG_CURRENT.test(colorB)) {\n labB = [NONE, NONE, NONE, NONE];\n } else {\n labB = convertColorToOklab(colorB, {\n colorSpace,\n format: VAL_MIX\n });\n }\n }\n if (labA instanceof NullObject || labB instanceof NullObject) {\n const res = cacheInvalidColorValue(cacheKey, format, nullable);\n return res;\n }\n const [llA, aaA, bbA, alA] = labA;\n const [llB, aaB, bbB, alB] = labB;\n const lNone = llA === NONE && llB === NONE;\n const aNone = aaA === NONE && aaB === NONE;\n const bNone = bbA === NONE && bbB === NONE;\n const alphaNone = alA === NONE && alB === NONE;\n const [[lA, aA, bA, alphaA], [lB, aB, bB, alphaB]] =\n normalizeColorComponents(\n [llA, aaA, bbA, alA],\n [llB, aaB, bbB, alB],\n true\n );\n const factorA = alphaA * pA;\n const factorB = alphaB * pB;\n alpha = factorA + factorB;\n let l, aO, bO;\n if (alpha === 0) {\n l = lA * pA + lB * pB;\n aO = aA * pA + aB * pB;\n bO = bA * pA + bB * pB;\n } else {\n l = (lA * factorA + lB * factorB) / alpha;\n aO = (aA * factorA + aB * factorB) / alpha;\n bO = (bA * factorA + bB * factorB) / alpha;\n alpha = parseFloat(alpha.toFixed(3));\n }\n if (format === VAL_COMP) {\n const res: SpecifiedColorChannels = [\n colorSpace,\n lNone ? NONE : roundToPrecision(l, HEX),\n aNone ? NONE : roundToPrecision(aO, HEX),\n bNone ? NONE : roundToPrecision(bO, HEX),\n alphaNone ? NONE : alpha * m\n ];\n setCache(cacheKey, res);\n return res;\n }\n [, r, g, b] = resolveColorValue(\n `${colorSpace}(${l} ${aO} ${bO})`\n ) as ComputedColorChannels;\n }\n const res: SpecifiedColorChannels = [\n 'rgb',\n Math.round(r),\n Math.round(g),\n Math.round(b),\n parseFloat((alpha * m).toFixed(3))\n ];\n setCache(cacheKey, res);\n return res;\n};\n","/**\n * css-var\n */\n\nimport { CSSToken, TokenType, tokenize } from '@csstools/css-tokenizer';\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport { isString } from './common';\nimport { cssCalc } from './css-calc';\nimport { isColor } from './util';\nimport { Options } from './typedef';\n\n/* constants */\nimport { FN_VAR, SYN_FN_CALC, SYN_FN_VAR, VAL_SPEC } from './constant';\nconst {\n CloseParen: PAREN_CLOSE,\n Comment: COMMENT,\n EOF,\n Ident: IDENT,\n Whitespace: W_SPACE\n} = TokenType;\nconst NAMESPACE = 'css-var';\n\n/* regexp */\nconst REG_FN_CALC = new RegExp(SYN_FN_CALC);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/**\n * resolve custom property\n * @param tokens - CSS tokens\n * @param [opt] - options\n * @returns result - [tokens, resolvedValue]\n */\nexport function resolveCustomProperty(\n tokens: CSSToken[],\n opt: Options = {}\n): [CSSToken[], string] {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { customProperty = {} } = opt;\n const items: string[] = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value] = token as [TokenType, string];\n // end of var()\n if (type === PAREN_CLOSE) {\n break;\n }\n // nested var()\n if (value === FN_VAR) {\n const [restTokens, item] = resolveCustomProperty(tokens, opt);\n tokens = restTokens;\n if (item) {\n items.push(item);\n }\n } else if (type === IDENT) {\n if (value.startsWith('--')) {\n let item;\n if (Object.hasOwn(customProperty, value)) {\n item = customProperty[value] as string;\n } else if (typeof customProperty.callback === 'function') {\n item = customProperty.callback(value);\n }\n if (item) {\n items.push(item);\n }\n } else if (value) {\n items.push(value);\n }\n }\n }\n let resolveAsColor = false;\n if (items.length > 1) {\n const lastValue = items[items.length - 1];\n resolveAsColor = isColor(lastValue);\n }\n let resolvedValue = '';\n for (let item of items) {\n item = item.trim();\n if (REG_FN_VAR.test(item)) {\n // recurse resolveVar()\n const resolvedItem = resolveVar(item, opt);\n if (isString(resolvedItem)) {\n if (resolveAsColor) {\n if (isColor(resolvedItem)) {\n resolvedValue = resolvedItem;\n }\n } else {\n resolvedValue = resolvedItem;\n }\n }\n } else if (REG_FN_CALC.test(item)) {\n item = cssCalc(item, opt);\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n } else if (\n item &&\n !/^(?:inherit|initial|revert(?:-layer)?|unset)$/.test(item)\n ) {\n if (resolveAsColor) {\n if (isColor(item)) {\n resolvedValue = item;\n }\n } else {\n resolvedValue = item;\n }\n }\n if (resolvedValue) {\n break;\n }\n }\n return [tokens, resolvedValue];\n}\n\n/**\n * parse tokens\n * @param tokens - CSS tokens\n * @param [opt] - options\n * @returns parsed tokens\n */\nexport function parseTokens(\n tokens: CSSToken[],\n opt: Options = {}\n): string[] | NullObject {\n const res: string[] = [];\n while (tokens.length) {\n const token = tokens.shift();\n const [type = '', value = ''] = token as [TokenType, string];\n if (value === FN_VAR) {\n const [restTokens, resolvedValue] = resolveCustomProperty(tokens, opt);\n if (!resolvedValue) {\n return new NullObject();\n }\n tokens = restTokens;\n res.push(resolvedValue);\n } else {\n switch (type) {\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (\n isString(lastValue) &&\n !lastValue.endsWith('(') &&\n lastValue !== ' '\n ) {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n }\n return res;\n}\n\n/**\n * resolve CSS var()\n * @param value - CSS value including var()\n * @param [opt] - options\n * @returns resolved value\n */\nexport function resolveVar(\n value: string,\n opt: Options = {}\n): string | NullObject {\n const { format = '' } = opt;\n if (isString(value)) {\n if (!REG_FN_VAR.test(value) || format === VAL_SPEC) {\n return value;\n }\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolveVar',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n return cachedResult.item as string;\n }\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n if (Array.isArray(values)) {\n let color = values.join('');\n if (REG_FN_CALC.test(color)) {\n color = cssCalc(color, opt);\n }\n setCache(cacheKey, color);\n return color;\n } else {\n setCache(cacheKey, null);\n return new NullObject();\n }\n}\n\n/**\n * CSS var()\n * @param value - CSS value including var()\n * @param [opt] - options\n * @returns resolved value\n */\nexport const cssVar = (value: string, opt: Options = {}): string => {\n const resolvedValue = resolveVar(value, opt);\n if (isString(resolvedValue)) {\n return resolvedValue;\n }\n return '';\n};\n","function multiplyMatrices(t,n){return[t[0]*n[0]+t[1]*n[1]+t[2]*n[2],t[3]*n[0]+t[4]*n[1]+t[5]*n[2],t[6]*n[0]+t[7]*n[1]+t[8]*n[2]]}const t=[.955473421488075,-.02309845494876471,.06325924320057072,-.0283697093338637,1.0099953980813041,.021041441191917323,.012314014864481998,-.020507649298898964,1.330365926242124];\n/**\n * Bradford chromatic adaptation from D50 to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function D50_to_D65(n){return multiplyMatrices(t,n)}const n=[1.0479297925449969,.022946870601609652,-.05019226628920524,.02962780877005599,.9904344267538799,-.017073799063418826,-.009243040646204504,.015055191490298152,.7518742814281371];\n/**\n * Bradford chromatic adaptation from D65 to D50\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_ChromAdapt.html\n */function D65_to_D50(t){return multiplyMatrices(n,t)}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} sat - Saturation as percentage 0..100\n * @param {number} light - Lightness as percentage 0..100\n * @return {number[]} Array of sRGB components; in-gamut colors in range [0..1]\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hslToRgb.js\n */function HSL_to_sRGB(t){let n=t[0]%360;const _=t[1]/100,o=t[2]/100;return n<0&&(n+=360),[HSL_to_sRGB_channel(0,n,_,o),HSL_to_sRGB_channel(8,n,_,o),HSL_to_sRGB_channel(4,n,_,o)]}function HSL_to_sRGB_channel(t,n,_,o){const e=(t+n/30)%12;return o-_*Math.min(o,1-o)*Math.max(-1,Math.min(e-3,9-e,1))}\n/**\n * @param {number} hue - Hue as degrees 0..360\n * @param {number} white - Whiteness as percentage 0..100\n * @param {number} black - Blackness as percentage 0..100\n * @return {number[]} Array of RGB components 0..1\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/hwbToRgb.js\n */function HWB_to_sRGB(t){const n=t[0],_=t[1]/100,o=t[2]/100;if(_+o>=1){const t=_/(_+o);return[t,t,t]}const e=HSL_to_sRGB([n,100,50]),a=1-_-o;return[e[0]*a+_,e[1]*a+_,e[2]*a+_]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function LCH_to_Lab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function Lab_to_LCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(Math.pow(t[1],2)+Math.pow(t[2],2)),n>=0?n:n+360]}const _=[.3457/.3585,1,.2958/.3585];\n/**\n * Convert Lab to D50-adapted XYZ\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function Lab_to_XYZ(t){const n=24389/27,o=216/24389,e=(t[0]+16)/116,a=t[1]/500+e,r=e-t[2]/200;return[(Math.pow(a,3)>o?Math.pow(a,3):(116*a-16)/n)*_[0],(t[0]>8?Math.pow((t[0]+16)/116,3):t[0]/n)*_[1],(Math.pow(r,3)>o?Math.pow(r,3):(116*r-16)/n)*_[2]]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLCH_to_OKLab(t){const n=t[2]*Math.PI/180;return[t[0],t[1]*Math.cos(n),t[1]*Math.sin(n)]}\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */function OKLab_to_OKLCH(t){const n=180*Math.atan2(t[2],t[1])/Math.PI;return[t[0],Math.sqrt(t[1]**2+t[2]**2),n>=0?n:n+360]}const o=[1.2268798758459243,-.5578149944602171,.2813910456659647,-.0405757452148008,1.112286803280317,-.0717110580655164,-.0763729366746601,-.4214933324022432,1.5869240198367816],e=[1,.3963377773761749,.2158037573099136,1,-.1055613458156586,-.0638541728258133,1,-.0894841775298119,-1.2914855480194092];\n/**\n * Given OKLab, convert to XYZ relative to D65\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js\n */\nfunction OKLab_to_XYZ(t){const n=multiplyMatrices(e,t);return multiplyMatrices(o,[n[0]**3,n[1]**3,n[2]**3])}\n/**\n * Assuming XYZ is relative to D50, convert to CIE Lab\n * from CIE standard, which now defines these as a rational fraction\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_Lab(t){const n=compute_f(t[0]/_[0]),o=compute_f(t[1]/_[1]);return[116*o-16,500*(n-o),200*(o-compute_f(t[2]/_[2]))]}const a=216/24389,r=24389/27;function compute_f(t){return t>a?Math.cbrt(t):(r*t+16)/116}const l=[.819022437996703,.3619062600528904,-.1288737815209879,.0329836539323885,.9292868615863434,.0361446663506424,.0481771893596242,.2642395317527308,.6335478284694309],i=[.210454268309314,.7936177747023054,-.0040720430116193,1.9779985324311684,-2.42859224204858,.450593709617411,.0259040424655478,.7827717124575296,-.8086757549230774];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n *\n * XYZ <-> LMS matrices recalculated for consistent reference white\n * @see https://github.com/w3c/csswg-drafts/issues/6642#issuecomment-943521484\n */\nfunction XYZ_to_OKLab(t){const n=multiplyMatrices(l,t);return multiplyMatrices(i,[Math.cbrt(n[0]),Math.cbrt(n[1]),Math.cbrt(n[2])])}const c=[30757411/17917100,-6372589/17917100,-4539589/17917100,-.666684351832489,1.616481236634939,467509/29648200,792561/44930125,-1921689/44930125,.942103121235474];\n/**\n * Convert XYZ to linear-light rec2020\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const u=[446124/178915,-333277/357830,-72051/178915,-14852/17905,63121/35810,423/17905,11844/330415,-50337/660830,316169/330415];\n/**\n * Convert XYZ to linear-light P3\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_P3(t){return multiplyMatrices(u,t)}const s=[1.3457868816471583,-.25557208737979464,-.05110186497554526,-.5446307051249019,1.5082477428451468,.02052744743642139,0,0,1.2119675456389452];\n/**\n * Convert D50 XYZ to linear-light prophoto-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */const h=[1829569/896150,-506331/896150,-308931/896150,-851781/878810,1648619/878810,36519/878810,16779/1248040,-147721/1248040,1266979/1248040];\n/**\n * Convert XYZ to linear-light a98-rgb\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const m=[12831/3959,-329/214,-1974/3959,-851781/878810,1648619/878810,36519/878810,705/12673,-2585/12673,705/667];\n/**\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function XYZ_to_lin_sRGB(t){return multiplyMatrices(m,t)}\n/**\n * Convert an array of linear-light rec2020 RGB in the range 0.0-1.0\n * to gamma corrected form ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const D=1.09929682680944,b=.018053968510807;function gam_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>b?n*(D*Math.pow(_,.45)-(D-1)):4.5*t}\n/**\n * Convert an array of linear-light sRGB values in the range 0.0-1.0 to gamma corrected form\n * Extended transfer function:\n * For negative values, linear portion extends on reflection\n * of axis, then uses reflected pow below that\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */function gam_sRGB(t){return[gam_sRGB_channel(t[0]),gam_sRGB_channel(t[1]),gam_sRGB_channel(t[2])]}function gam_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>.0031308?n*(1.055*Math.pow(_,1/2.4)-.055):12.92*t}\n/**\n * Convert an array of linear-light display-p3 RGB in the range 0.0-1.0\n * to gamma corrected form\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function gam_P3(t){return gam_sRGB(t)}\n/**\n * Convert an array of linear-light prophoto-rgb in the range 0.0-1.0\n * to gamma corrected form.\n * Transfer curve is gamma 1.8 with a small linear portion.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const g=1/512;function gam_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _>=g?n*Math.pow(_,1/1.8):16*t}\n/**\n * Convert an array of linear-light a98-rgb in the range 0.0-1.0\n * to gamma corrected form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function gam_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,256/563)}\n/**\n * Convert an array of rec2020 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n * ITU-R BT.2020-2 p.4\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const X=1.09929682680944,Y=.018053968510807;function lin_2020_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<4.5*Y?t/4.5:n*Math.pow((_+X-1)/X,1/.45)}const Z=[63426534/99577255,20160776/139408157,47086771/278816314,26158966/99577255,.677998071518871,8267143/139408157,0,19567812/697040785,1.0609850577107909];\n/**\n * Convert an array of linear-light rec2020 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */\n/**\n * Convert an array of of sRGB values where in-gamut values are in the range\n * [0 - 1] to linear light (un-companded) form.\n * Extended transfer function:\n * For negative values, linear portion is extended on reflection of axis,\n * then reflected power function is used.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://en.wikipedia.org/wiki/SRGB\n */\nfunction lin_sRGB(t){return[lin_sRGB_channel(t[0]),lin_sRGB_channel(t[1]),lin_sRGB_channel(t[2])]}function lin_sRGB_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=.04045?t/12.92:n*Math.pow((_+.055)/1.055,2.4)}\n/**\n * Convert an array of display-p3 RGB values in the range 0.0 - 1.0\n * to linear light (un-companded) form.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function lin_P3(t){return lin_sRGB(t)}const f=[608311/1250200,189793/714400,198249/1000160,35783/156275,247089/357200,198249/2500400,0,32229/714400,5220557/5000800];\n/**\n * Convert an array of linear-light display-p3 values to CIE XYZ\n * using D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n */function lin_P3_to_XYZ(t){return multiplyMatrices(f,t)}\n/**\n * Convert an array of prophoto-rgb values where in-gamut Colors are in the\n * range [0.0 - 1.0] to linear light (un-companded) form. Transfer curve is\n * gamma 1.8 with a small linear portion. Extended transfer function\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */const M=16/512;function lin_ProPhoto_channel(t){const n=t<0?-1:1,_=Math.abs(t);return _<=M?t/16:n*Math.pow(_,1.8)}const p=[.7977666449006423,.13518129740053308,.0313477341283922,.2880748288194013,.711835234241873,8993693872564e-17,0,0,.8251046025104602];\n/**\n * Convert an array of linear-light prophoto-rgb values to CIE D50 XYZ.\n * Matrix cannot be expressed in rational form, but is calculated to 64 bit accuracy.\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see see https://github.com/w3c/csswg-drafts/issues/7675\n */function lin_a98rgb_channel(t){const n=t<0?-1:1,_=Math.abs(t);return n*Math.pow(_,563/256)}const d=[573536/994567,263643/1420810,187206/994567,591459/1989134,6239551/9945670,374412/4972835,53769/1989134,351524/4972835,4929758/4972835];\n/**\n * Convert an array of linear-light a98-rgb values to CIE XYZ\n * http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * has greater numerical precision than section 4.3.5.3 of\n * https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * but the values below were calculated from first principles\n * from the chromaticity coordinates of R G B W\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n * @see https://www.adobe.com/digitalimag/pdfs/AdobeRGB1998.pdf\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/matrixmaker.html\n */const L=[506752/1228815,87881/245763,12673/70218,87098/409605,175762/245763,12673/175545,7918/409605,87881/737289,1001167/1053270];\n/**\n * Convert an array of linear-light sRGB values to CIE XYZ\n * using sRGB's own white, D65 (no chromatic adaptation)\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */function lin_sRGB_to_XYZ(t){return multiplyMatrices(L,t)}\n/**\n * Convert an array of gamma-corrected sRGB values in the 0.0 to 1.0 range to HSL.\n *\n * @param {Color} RGB [r, g, b]\n * - Red component 0..1\n * - Green component 0..1\n * - Blue component 0..1\n * @return {number[]} Array of HSL values: Hue as degrees 0..360, Saturation and Lightness as percentages 0..100\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/utilities.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n *\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/better-rgbToHsl.js\n */function sRGB_to_HSL(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o),r=(a+e)/2,l=e-a;let i=Number.NaN,c=0;if(0!==Math.round(1e5*l)){const t=Math.round(1e5*r);switch(c=0===t||1e5===t?0:(e-r)/Math.min(r,1-r),e){case n:i=(_-o)/l+(_<o?6:0);break;case _:i=(o-n)/l+2;break;case o:i=(n-_)/l+4}i*=60}return c<0&&(i+=180,c=Math.abs(c)),i>=360&&(i-=360),[i,100*c,100*r]}function sRGB_to_Hue(t){const n=t[0],_=t[1],o=t[2],e=Math.max(n,_,o),a=Math.min(n,_,o);let r=Number.NaN;const l=e-a;if(0!==l){switch(e){case n:r=(_-o)/l+(_<o?6:0);break;case _:r=(o-n)/l+2;break;case o:r=(n-_)/l+4}r*=60}return r>=360&&(r-=360),r}function sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n}function HSL_to_XYZ_D50(t){let n=t;return n=HSL_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HSL(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n=gam_sRGB(n),n=sRGB_to_HSL(n),n}function HWB_to_XYZ_D50(t){let n=t;return n=HWB_to_sRGB(n),n=lin_sRGB(n),n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_HWB(t){let n=t;n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n);const _=gam_sRGB(n),o=Math.min(_[0],_[1],_[2]),e=1-Math.max(_[0],_[1],_[2]);return[sRGB_to_Hue(_),100*o,100*e]}function Lab_to_XYZ_D50(t){let n=t;return n=Lab_to_XYZ(n),n}function XYZ_D50_to_Lab(t){let n=t;return n=XYZ_to_Lab(n),n}function LCH_to_XYZ_D50(t){let n=t;return n=LCH_to_Lab(n),n=Lab_to_XYZ(n),n}function XYZ_D50_to_LCH(t){let n=t;return n=XYZ_to_Lab(n),n=Lab_to_LCH(n),n}function OKLab_to_XYZ_D50(t){let n=t;return n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLab(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n}function OKLCH_to_XYZ_D50(t){let n=t;return n=OKLCH_to_OKLab(n),n=OKLab_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_OKLCH(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_OKLab(n),n=OKLab_to_OKLCH(n),n}function lin_sRGB_to_XYZ_D50(t){let n=t;return n=lin_sRGB_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_sRGB(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_sRGB(n),n}function a98_RGB_to_XYZ_D50(t){let n=t;\n/**\n * Convert an array of a98-rgb values in the range 0.0 - 1.0\n * to linear light (un-companded) form. Negative values are also now accepted\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/conversions.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n */\nvar _;return n=[lin_a98rgb_channel((_=n)[0]),lin_a98rgb_channel(_[1]),lin_a98rgb_channel(_[2])],n=multiplyMatrices(d,n),n=D65_to_D50(n),n}function XYZ_D50_to_a98_RGB(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(h,n),n=[gam_a98rgb_channel((_=n)[0]),gam_a98rgb_channel(_[1]),gam_a98rgb_channel(_[2])],n}function P3_to_XYZ_D50(t){let n=t;return n=lin_P3(n),n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n=gam_P3(n),n}function lin_P3_to_XYZ_D50(t){let n=t;return n=lin_P3_to_XYZ(n),n=D65_to_D50(n),n}function XYZ_D50_to_lin_P3(t){let n=t;return n=D50_to_D65(n),n=XYZ_to_lin_P3(n),n}function rec_2020_to_XYZ_D50(t){let n=t;var _;return n=[lin_2020_channel((_=n)[0]),lin_2020_channel(_[1]),lin_2020_channel(_[2])],n=multiplyMatrices(Z,n),n=D65_to_D50(n),n}function XYZ_D50_to_rec_2020(t){let n=t;var _;return n=D50_to_D65(n),n=multiplyMatrices(c,n),n=[gam_2020_channel((_=n)[0]),gam_2020_channel(_[1]),gam_2020_channel(_[2])],n}function ProPhoto_RGB_to_XYZ_D50(t){let n=t;var _;return n=[lin_ProPhoto_channel((_=n)[0]),lin_ProPhoto_channel(_[1]),lin_ProPhoto_channel(_[2])],n=multiplyMatrices(p,n),n}function XYZ_D50_to_ProPhoto(t){let n=t;var _;return n=multiplyMatrices(s,n),n=[gam_ProPhoto_channel((_=n)[0]),gam_ProPhoto_channel(_[1]),gam_ProPhoto_channel(_[2])],n}function XYZ_D65_to_XYZ_D50(t){let n=t;return n=D65_to_D50(n),n}function XYZ_D50_to_XYZ_D65(t){let n=t;return n=D50_to_D65(n),n}function XYZ_D50_to_XYZ_D50(t){return t}function inGamut(t){return t[0]>=-1e-4&&t[0]<=1.0001&&t[1]>=-1e-4&&t[1]<=1.0001&&t[2]>=-1e-4&&t[2]<=1.0001}function clip(t){return[t[0]<0?0:t[0]>1?1:t[0],t[1]<0?0:t[1]>1?1:t[1],t[2]<0?0:t[2]>1?1:t[2]]}\n/**\n * @description Calculate deltaE OK which is the simple root sum of squares\n * @param {number[]} reference - Array of OKLab values: L as 0..1, a and b as -1..1\n * @param {number[]} sample - Array of OKLab values: L as 0..1, a and b as -1..1\n * @return {number} How different a color sample is from reference\n *\n * @license W3C https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n * @copyright This software or document includes material copied from or derived from https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js. Copyright © 2022 W3C® (MIT, ERCIM, Keio, Beihang).\n * @see https://github.com/w3c/csswg-drafts/blob/main/css-color-4/deltaEOK.js\n */function deltaEOK(t,n){const[_,o,e]=t,[a,r,l]=n,i=_-a,c=o-r,u=e-l;return Math.sqrt(i**2+c**2+u**2)}const B=.02,G=1e-4;function mapGamut(t,n,_){const o=t;let e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o));if(a<B)return e;let r=0,l=o[1],i=!0;for(;l-r>G;){const t=(r+l)/2;if(o[1]=t,i&&inGamut(n(o)))r=t;else if(e=clip(n(o)),a=deltaEOK(OKLCH_to_OKLab(_(e)),OKLCH_to_OKLab(o)),a<B){if(B-a<G)return e;i=!1,r=t}else l=t}return clip(n([...o]))}\n/**\n * @license MIT https://github.com/facelessuser/coloraide/blob/main/LICENSE.md\n */function mapGamutRayTrace(t,n,_){const o=t[0],e=t[2];let a=n(t);const r=n([o,0,e]);for(let t=0;t<4;t++){if(t>0){const t=_(a);t[0]=o,t[2]=e,a=n(t)}const l=rayTraceBox(r,a);if(!l)break;a=l}return clip(a)}function rayTraceBox(t,n){let _=1/0,o=-1/0;const e=[0,0,0];for(let a=0;a<3;a++){const r=t[a],l=n[a]-r;e[a]=l;const i=0,c=1;if(l){const t=1/l,n=(i-r)*t,e=(c-r)*t;o=Math.max(Math.min(n,e),o),_=Math.min(Math.max(n,e),_)}else if(r<i||r>c)return!1}return!(o>_||_<0)&&(o<0&&(o=_),!!isFinite(o)&&[t[0]+e[0]*o,t[1]+e[1]*o,t[2]+e[2]*o])}const R={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};function luminance(t){const[n,_,o]=t.map(t=>t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4));return.2126*n+.7152*_+.0722*o}function contrast_ratio_wcag_2_1(t,n){const _=luminance(t),o=luminance(n);return(Math.max(_,o)+.05)/(Math.min(_,o)+.05)}export{HSL_to_XYZ_D50,HWB_to_XYZ_D50,LCH_to_XYZ_D50,Lab_to_XYZ_D50,OKLCH_to_OKLab,OKLCH_to_XYZ_D50,OKLab_to_OKLCH,OKLab_to_XYZ,OKLab_to_XYZ_D50,P3_to_XYZ_D50,ProPhoto_RGB_to_XYZ_D50,XYZ_D50_to_HSL,XYZ_D50_to_HWB,XYZ_D50_to_LCH,XYZ_D50_to_Lab,XYZ_D50_to_OKLCH,XYZ_D50_to_OKLab,XYZ_D50_to_P3,XYZ_D50_to_ProPhoto,XYZ_D50_to_XYZ_D50,XYZ_D50_to_XYZ_D65,XYZ_D50_to_a98_RGB,XYZ_D50_to_lin_P3,XYZ_D50_to_lin_sRGB,XYZ_D50_to_rec_2020,XYZ_D50_to_sRGB,XYZ_D65_to_XYZ_D50,XYZ_to_OKLab,XYZ_to_lin_P3,XYZ_to_lin_sRGB,a98_RGB_to_XYZ_D50,clip,contrast_ratio_wcag_2_1,gam_P3,gam_sRGB,inGamut,lin_P3,lin_P3_to_XYZ,lin_P3_to_XYZ_D50,lin_sRGB,lin_sRGB_to_XYZ,lin_sRGB_to_XYZ_D50,mapGamut,mapGamutRayTrace,R as namedColors,rec_2020_to_XYZ_D50,sRGB_to_XYZ_D50};\n","import{TokenType as e,NumberType as a,isTokenIdent as n,isTokenPercentage as r,isTokenNumber as o,isTokenDelim as t,isTokenNumeric as l,isTokenComma as s,isTokenDimension as u,isTokenHash as i}from\"@csstools/css-tokenizer\";import{XYZ_D50_to_XYZ_D65 as c,XYZ_D50_to_XYZ_D50 as h,XYZ_D50_to_OKLab as m,XYZ_D50_to_OKLCH as p,XYZ_D50_to_LCH as N,XYZ_D50_to_Lab as b,XYZ_D50_to_HWB as v,XYZ_D50_to_HSL as g,XYZ_D50_to_a98_RGB as f,XYZ_D50_to_ProPhoto as d,XYZ_D50_to_rec_2020 as y,XYZ_D50_to_lin_P3 as _,XYZ_D50_to_P3 as C,XYZ_D50_to_lin_sRGB as w,XYZ_D50_to_sRGB as x,XYZ_D65_to_XYZ_D50 as L,OKLCH_to_XYZ_D50 as H,LCH_to_XYZ_D50 as P,OKLab_to_XYZ_D50 as k,Lab_to_XYZ_D50 as S,HWB_to_XYZ_D50 as D,HSL_to_XYZ_D50 as M,ProPhoto_RGB_to_XYZ_D50 as F,a98_RGB_to_XYZ_D50 as z,rec_2020_to_XYZ_D50 as Z,lin_P3_to_XYZ_D50 as R,P3_to_XYZ_D50 as B,lin_sRGB_to_XYZ_D50 as V,sRGB_to_XYZ_D50 as T,namedColors as G,inGamut as A,clip as X,gam_sRGB as K,mapGamutRayTrace as Y,OKLCH_to_OKLab as I,OKLab_to_XYZ as O,XYZ_to_lin_sRGB as W,lin_sRGB_to_XYZ as E,XYZ_to_OKLab as U,OKLab_to_OKLCH as $,contrast_ratio_wcag_2_1 as j,gam_P3 as q,XYZ_to_lin_P3 as J,lin_P3_to_XYZ as Q}from\"@csstools/color-helpers\";import{isWhitespaceNode as ee,isCommentNode as ae,isTokenNode as ne,isFunctionNode as re,TokenNode as oe,isWhiteSpaceOrCommentNode as te,replaceComponentValues as le,FunctionNode as se,WhitespaceNode as ue}from\"@csstools/css-parser-algorithms\";import{mathFunctionNames as ie,calcFromComponentValues as ce}from\"@csstools/css-calc\";var he,me;function convertNaNToZero(e){return[Number.isNaN(e[0])?0:e[0],Number.isNaN(e[1])?0:e[1],Number.isNaN(e[2])?0:e[2]]}function colorData_to_XYZ_D50(e){switch(e.colorNotation){case he.HEX:case he.RGB:case he.sRGB:return{...e,colorNotation:he.XYZ_D50,channels:T(convertNaNToZero(e.channels))};case he.Linear_sRGB:return{...e,colorNotation:he.XYZ_D50,channels:V(convertNaNToZero(e.channels))};case he.Display_P3:return{...e,colorNotation:he.XYZ_D50,channels:B(convertNaNToZero(e.channels))};case he.Linear_Display_P3:return{...e,colorNotation:he.XYZ_D50,channels:R(convertNaNToZero(e.channels))};case he.Rec2020:return{...e,colorNotation:he.XYZ_D50,channels:Z(convertNaNToZero(e.channels))};case he.A98_RGB:return{...e,colorNotation:he.XYZ_D50,channels:z(convertNaNToZero(e.channels))};case he.ProPhoto_RGB:return{...e,colorNotation:he.XYZ_D50,channels:F(convertNaNToZero(e.channels))};case he.HSL:return{...e,colorNotation:he.XYZ_D50,channels:M(convertNaNToZero(e.channels))};case he.HWB:return{...e,colorNotation:he.XYZ_D50,channels:D(convertNaNToZero(e.channels))};case he.Lab:return{...e,colorNotation:he.XYZ_D50,channels:S(convertNaNToZero(e.channels))};case he.OKLab:return{...e,colorNotation:he.XYZ_D50,channels:k(convertNaNToZero(e.channels))};case he.LCH:return{...e,colorNotation:he.XYZ_D50,channels:P(convertNaNToZero(e.channels))};case he.OKLCH:return{...e,colorNotation:he.XYZ_D50,channels:H(convertNaNToZero(e.channels))};case he.XYZ_D50:return{...e,colorNotation:he.XYZ_D50,channels:h(convertNaNToZero(e.channels))};case he.XYZ_D65:return{...e,colorNotation:he.XYZ_D50,channels:L(convertNaNToZero(e.channels))};default:throw new Error(\"Unsupported color notation\")}}!function(e){e.A98_RGB=\"a98-rgb\",e.Display_P3=\"display-p3\",e.Linear_Display_P3=\"display-p3-linear\",e.HEX=\"hex\",e.HSL=\"hsl\",e.HWB=\"hwb\",e.LCH=\"lch\",e.Lab=\"lab\",e.Linear_sRGB=\"srgb-linear\",e.OKLCH=\"oklch\",e.OKLab=\"oklab\",e.ProPhoto_RGB=\"prophoto-rgb\",e.RGB=\"rgb\",e.sRGB=\"srgb\",e.Rec2020=\"rec2020\",e.XYZ_D50=\"xyz-d50\",e.XYZ_D65=\"xyz-d65\"}(he||(he={})),function(e){e.ColorKeyword=\"color-keyword\",e.HasAlpha=\"has-alpha\",e.HasDimensionValues=\"has-dimension-values\",e.HasNoneKeywords=\"has-none-keywords\",e.HasNumberValues=\"has-number-values\",e.HasPercentageAlpha=\"has-percentage-alpha\",e.HasPercentageValues=\"has-percentage-values\",e.HasVariableAlpha=\"has-variable-alpha\",e.Hex=\"hex\",e.LegacyHSL=\"legacy-hsl\",e.LegacyRGB=\"legacy-rgb\",e.NamedColor=\"named-color\",e.RelativeColorSyntax=\"relative-color-syntax\",e.ColorMix=\"color-mix\",e.ColorMixVariadic=\"color-mix-variadic\",e.ContrastColor=\"contrast-color\",e.RelativeAlphaSyntax=\"relative-alpha-syntax\",e.Experimental=\"experimental\"}(me||(me={}));const pe=new Set([he.A98_RGB,he.Display_P3,he.Linear_Display_P3,he.HEX,he.Linear_sRGB,he.ProPhoto_RGB,he.RGB,he.sRGB,he.Rec2020,he.XYZ_D50,he.XYZ_D65]);function colorDataTo(e,a){const n={...e};if(e.colorNotation!==a){const e=colorData_to_XYZ_D50(n);switch(a){case he.HEX:case he.RGB:n.colorNotation=he.RGB,n.channels=x(e.channels);break;case he.sRGB:n.colorNotation=he.sRGB,n.channels=x(e.channels);break;case he.Linear_sRGB:n.colorNotation=he.Linear_sRGB,n.channels=w(e.channels);break;case he.Display_P3:n.colorNotation=he.Display_P3,n.channels=C(e.channels);break;case he.Linear_Display_P3:n.colorNotation=he.Linear_Display_P3,n.channels=_(e.channels);break;case he.Rec2020:n.colorNotation=he.Rec2020,n.channels=y(e.channels);break;case he.ProPhoto_RGB:n.colorNotation=he.ProPhoto_RGB,n.channels=d(e.channels);break;case he.A98_RGB:n.colorNotation=he.A98_RGB,n.channels=f(e.channels);break;case he.HSL:n.colorNotation=he.HSL,n.channels=g(e.channels);break;case he.HWB:n.colorNotation=he.HWB,n.channels=v(e.channels);break;case he.Lab:n.colorNotation=he.Lab,n.channels=b(e.channels);break;case he.LCH:n.colorNotation=he.LCH,n.channels=N(e.channels);break;case he.OKLCH:n.colorNotation=he.OKLCH,n.channels=p(e.channels);break;case he.OKLab:n.colorNotation=he.OKLab,n.channels=m(e.channels);break;case he.XYZ_D50:n.colorNotation=he.XYZ_D50,n.channels=h(e.channels);break;case he.XYZ_D65:n.colorNotation=he.XYZ_D65,n.channels=c(e.channels);break;default:throw new Error(\"Unsupported color notation\")}}else n.channels=convertNaNToZero(e.channels);if(a===e.colorNotation)n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else if(pe.has(a)&&pe.has(e.colorNotation))n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);else switch(a){case he.HSL:switch(e.colorNotation){case he.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[2],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0])}break;case he.HWB:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2])}break;case he.Lab:case he.OKLab:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0])}break;case he.LCH:case he.OKLCH:switch(e.colorNotation){case he.HSL:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[2,1,0]);break;case he.HWB:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[2]);break;case he.Lab:case he.OKLab:n.channels=carryForwardMissingComponents(e.channels,[0],n.channels,[0]);break;case he.LCH:case he.OKLCH:n.channels=carryForwardMissingComponents(e.channels,[0,1,2],n.channels,[0,1,2])}}return n.channels=convertPowerlessComponentsToMissingComponents(n.channels,a),n}function convertPowerlessComponentsToMissingComponents(e,a){const n=[...e];switch(a){case he.HSL:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[0]=Number.NaN);break;case he.HWB:Math.max(0,reducePrecision(n[1],4))+Math.max(0,reducePrecision(n[2],4))>=100&&(n[0]=Number.NaN);break;case he.LCH:!Number.isNaN(n[1])&&reducePrecision(n[1],4)<=0&&(n[2]=Number.NaN);break;case he.OKLCH:!Number.isNaN(n[1])&&reducePrecision(n[1],6)<=0&&(n[2]=Number.NaN)}return n}function convertPowerlessComponentsToZeroValuesForDisplay(e,a){const n=[...e];switch(a){case he.HSL:(reducePrecision(n[2])<=0||reducePrecision(n[2])>=100)&&(n[0]=Number.NaN,n[1]=Number.NaN),reducePrecision(n[1])<=0&&(n[0]=Number.NaN);break;case he.HWB:Math.max(0,reducePrecision(n[1]))+Math.max(0,reducePrecision(n[2]))>=100&&(n[0]=Number.NaN);break;case he.Lab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.LCH:reducePrecision(n[1])<=0&&(n[2]=Number.NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=100)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.OKLab:(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=Number.NaN,n[2]=Number.NaN);break;case he.OKLCH:reducePrecision(n[1])<=0&&(n[2]=Number.NaN),(reducePrecision(n[0])<=0||reducePrecision(n[0])>=1)&&(n[1]=Number.NaN,n[2]=Number.NaN)}return n}function carryForwardMissingComponents(e,a,n,r){const o=[...n];for(const n of a)Number.isNaN(e[a[n]])&&(o[r[n]]=Number.NaN);return o}function normalizeRelativeColorDataChannels(e){const a=new Map;switch(e.colorNotation){case he.RGB:case he.HEX:a.set(\"r\",dummyNumberToken(255*e.channels[0])),a.set(\"g\",dummyNumberToken(255*e.channels[1])),a.set(\"b\",dummyNumberToken(255*e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.HSL:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"s\",dummyNumberToken(e.channels[1])),a.set(\"l\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.HWB:a.set(\"h\",dummyNumberToken(e.channels[0])),a.set(\"w\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.Lab:case he.OKLab:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"a\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.LCH:case he.OKLCH:a.set(\"l\",dummyNumberToken(e.channels[0])),a.set(\"c\",dummyNumberToken(e.channels[1])),a.set(\"h\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.sRGB:case he.A98_RGB:case he.Display_P3:case he.Linear_Display_P3:case he.Rec2020:case he.Linear_sRGB:case he.ProPhoto_RGB:a.set(\"r\",dummyNumberToken(e.channels[0])),a.set(\"g\",dummyNumberToken(e.channels[1])),a.set(\"b\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha));break;case he.XYZ_D50:case he.XYZ_D65:a.set(\"x\",dummyNumberToken(e.channels[0])),a.set(\"y\",dummyNumberToken(e.channels[1])),a.set(\"z\",dummyNumberToken(e.channels[2])),\"number\"==typeof e.alpha&&a.set(\"alpha\",dummyNumberToken(e.alpha))}return a}function noneToZeroInRelativeColorDataChannels(e){const a=new Map(e);for(const[n,r]of e)Number.isNaN(r[4].value)&&a.set(n,dummyNumberToken(0));return a}function dummyNumberToken(n){return Number.isNaN(n)?[e.Number,\"none\",-1,-1,{value:Number.NaN,type:a.Number}]:[e.Number,n.toString(),-1,-1,{value:n,type:a.Number}]}function reducePrecision(e,a=7){if(Number.isNaN(e))return 0;const n=Math.pow(10,a);return Math.round(e*n)/n}function colorDataFitsRGB_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,he.RGB).channels.find(e=>e<-1e-5||e>1.00001)}function colorDataFitsDisplayP3_Gamut(e){const a={...e,channels:[...e.channels]};a.channels=convertPowerlessComponentsToZeroValuesForDisplay(a.channels,a.colorNotation);return!colorDataTo(a,he.Display_P3).channels.find(e=>e<-1e-5||e>1.00001)}function normalize(e,a,n,r){return Math.min(Math.max(e/a,n),r)}const Ne=/[A-Z]/g;function toLowerCaseAZ(e){return e.replace(Ne,e=>String.fromCharCode(e.charCodeAt(0)+32))}function normalize_Color_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}const be=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"display-p3-linear\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]);function color$1(e,a){const r=[],s=[],u=[],i=[];let c,h,m=!1,p=!1;const N={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};let b=r;for(let o=0;o<e.value.length;o++){let v=e.value[o];if(ee(v)||ae(v))for(;ee(e.value[o+1])||ae(e.value[o+1]);)o++;else if(b===r&&r.length&&(b=s),b===s&&s.length&&(b=u),ne(v)&&t(v.value)&&\"/\"===v.value[4].value){if(b===i)return!1;b=i}else{if(re(v)){if(b===i&&\"var\"===toLowerCaseAZ(v.getName())){N.syntaxFlags.add(me.HasVariableAlpha),b.push(v);continue}if(!ie.has(toLowerCaseAZ(v.getName())))return!1;const[[e]]=ce([[v]],{censorIntoStandardRepresentableValues:!0,globals:h,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),v=e}if(b===r&&0===r.length&&ne(v)&&n(v.value)&&be.has(toLowerCaseAZ(v.value[4].value))){if(m)return!1;m=toLowerCaseAZ(v.value[4].value),N.colorNotation=colorSpaceNameToColorNotation(m),p&&(p.colorNotation!==N.colorNotation&&(p=colorDataTo(p,N.colorNotation)),c=normalizeRelativeColorDataChannels(p),h=noneToZeroInRelativeColorDataChannels(c))}else if(b===r&&0===r.length&&ne(v)&&n(v.value)&&\"from\"===toLowerCaseAZ(v.value[4].value)){if(p)return!1;if(m)return!1;for(;ee(e.value[o+1])||ae(e.value[o+1]);)o++;if(o++,v=e.value[o],p=a(v),!1===p)return!1;p.syntaxFlags.has(me.Experimental)&&N.syntaxFlags.add(me.Experimental),N.syntaxFlags.add(me.RelativeColorSyntax)}else{if(!ne(v))return!1;if(n(v.value)&&c&&c.has(toLowerCaseAZ(v.value[4].value))){b.push(new oe(c.get(toLowerCaseAZ(v.value[4].value))));continue}b.push(v)}}}if(!m)return!1;if(1!==b.length)return!1;if(1!==r.length||1!==s.length||1!==u.length)return!1;if(!ne(r[0])||!ne(s[0])||!ne(u[0]))return!1;if(c&&!c.has(\"alpha\"))return!1;const v=normalize_Color_ChannelValues(r[0].value,0,N);if(!v||!o(v))return!1;const g=normalize_Color_ChannelValues(s[0].value,1,N);if(!g||!o(g))return!1;const f=normalize_Color_ChannelValues(u[0].value,2,N);if(!f||!o(f))return!1;const d=[v,g,f];if(1===i.length)if(N.syntaxFlags.add(me.HasAlpha),ne(i[0])){const e=normalize_Color_ChannelValues(i[0].value,3,N);if(!e||!o(e))return!1;d.push(e)}else N.alpha=i[0];else if(c&&c.has(\"alpha\")){const e=normalize_Color_ChannelValues(c.get(\"alpha\"),3,N);if(!e||!o(e))return!1;d.push(e)}return N.channels=[d[0][4].value,d[1][4].value,d[2][4].value],4===d.length&&(N.alpha=d[3][4].value),N}function colorSpaceNameToColorNotation(e){switch(e){case\"srgb\":return he.sRGB;case\"srgb-linear\":return he.Linear_sRGB;case\"display-p3\":return he.Display_P3;case\"display-p3-linear\":return he.Linear_Display_P3;case\"a98-rgb\":return he.A98_RGB;case\"prophoto-rgb\":return he.ProPhoto_RGB;case\"rec2020\":return he.Rec2020;case\"xyz\":case\"xyz-d65\":return he.XYZ_D65;case\"xyz-d50\":return he.XYZ_D50;default:throw new Error(\"Unknown color space name: \"+e)}}const ve=new Set([\"srgb\",\"srgb-linear\",\"display-p3\",\"display-p3-linear\",\"a98-rgb\",\"prophoto-rgb\",\"rec2020\",\"lab\",\"oklab\",\"xyz\",\"xyz-d50\",\"xyz-d65\"]),ge=new Set([\"hsl\",\"hwb\",\"lch\",\"oklch\"]),fe=new Set([\"shorter\",\"longer\",\"increasing\",\"decreasing\"]);function colorMix(e,a){let r=null,o=null,t=null,l=!1;for(let u=0;u<e.value.length;u++){const i=e.value[u];if(!te(i)){if(!(r||ne(i)&&n(i.value)&&\"in\"===toLowerCaseAZ(i.value[4].value)))return colorMixRectangular(\"oklab\",colorMixComponents(e.value,a));if(ne(i)&&n(i.value)){if(!r&&\"in\"===toLowerCaseAZ(i.value[4].value)){r=i;continue}if(r&&!o){o=toLowerCaseAZ(i.value[4].value);continue}if(r&&o&&!t&&ge.has(o)){t=toLowerCaseAZ(i.value[4].value);continue}if(r&&o&&t&&!l&&\"hue\"===toLowerCaseAZ(i.value[4].value)){l=!0;continue}return!1}return!(!ne(i)||!s(i.value))&&(!!o&&(t||l?!!(o&&t&&l&&ge.has(o)&&fe.has(t))&&colorMixPolar(o,t,colorMixComponents(e.value.slice(u+1),a)):ve.has(o)?colorMixRectangular(o,colorMixComponents(e.value.slice(u+1),a)):!!ge.has(o)&&colorMixPolar(o,\"shorter\",colorMixComponents(e.value.slice(u+1),a))))}}return!1}function colorMixComponents(e,a){const n=[];let o=1,t=!1,u=!1;for(let o=0;o<e.length;o++){let i=e[o];if(!te(i)){if(!ne(i)||!s(i.value)){if(!t){const e=a(i);if(e){t=e;continue}}if(!u){if(re(i)&&ie.has(toLowerCaseAZ(i.getName()))){if([[i]]=ce([[i]],{censorIntoStandardRepresentableValues:!0,precision:-1,toCanonicalUnits:!0,rawPercentages:!0}),!i||!ne(i)||!l(i.value))return!1;Number.isNaN(i.value[4].value)&&(i.value[4].value=0)}if(ne(i)&&r(i.value)&&i.value[4].value>=0){u=i.value[4].value;continue}}return!1}if(!t)return!1;n.push({color:t,percentage:u}),t=!1,u=!1}}if(!t)return!1;n.push({color:t,percentage:u});let i=0,c=0;for(let e=0;e<n.length;e++){const a=n[e].percentage;if(!1!==a){if(a<0||a>100)return!1;i+=a}else c++}const h=Math.max(0,100-i);i=0;for(let e=0;e<n.length;e++)!1===n[e].percentage&&(n[e].percentage=h/c),i+=n[e].percentage;if(0===i)return{colors:[{color:{channels:[0,0,0],colorNotation:he.sRGB,alpha:0,syntaxFlags:new Set},percentage:0}],alphaMultiplier:0};if(i>100)for(let e=0;e<n.length;e++){let a=n[e].percentage;a=a/i*100,n[e].percentage=a}if(i<100){o=i/100;for(let e=0;e<n.length;e++){let a=n[e].percentage;a=a/i*100,n[e].percentage=a}}return{colors:n,alphaMultiplier:o}}function colorMixRectangular(e,a){if(!a||!a.colors.length)return!1;const n=a.colors.slice();n.reverse();let r=he.RGB;switch(e){case\"srgb\":r=he.RGB;break;case\"srgb-linear\":r=he.Linear_sRGB;break;case\"display-p3\":r=he.Display_P3;break;case\"display-p3-linear\":r=he.Linear_Display_P3;break;case\"a98-rgb\":r=he.A98_RGB;break;case\"prophoto-rgb\":r=he.ProPhoto_RGB;break;case\"rec2020\":r=he.Rec2020;break;case\"lab\":r=he.Lab;break;case\"oklab\":r=he.OKLab;break;case\"xyz-d50\":r=he.XYZ_D50;break;case\"xyz\":case\"xyz-d65\":r=he.XYZ_D65;break;default:return!1}if(1===n.length){const e=colorDataTo(n[0].color,r);return e.colorNotation=r,e.syntaxFlags.add(me.ColorMixVariadic),\"number\"!=typeof e.alpha?!1:(e.alpha=e.alpha*a.alphaMultiplier,e)}for(;n.length>=2;){const e=n.pop(),a=n.pop();if(!e||!a)return!1;const o=colorMixRectangularPair(r,e.color,e.percentage,a.color,a.percentage);if(!o)return!1;n.push({color:o,percentage:e.percentage+a.percentage})}const o=n[0]?.color;return!!o&&(a.colors.some(e=>e.color.syntaxFlags.has(me.Experimental))&&o.syntaxFlags.add(me.Experimental),\"number\"==typeof o.alpha&&(o.alpha=o.alpha*a.alphaMultiplier,2!==a.colors.length&&o.syntaxFlags.add(me.ColorMixVariadic),o))}function colorMixRectangularPair(e,a,n,r,o){const t=n/(n+o);let l=a.alpha;if(\"number\"!=typeof l)return!1;let s=r.alpha;if(\"number\"!=typeof s)return!1;l=Number.isNaN(l)?s:l,s=Number.isNaN(s)?l:s;const u=colorDataTo(a,e).channels,i=colorDataTo(r,e).channels;u[0]=fillInMissingComponent(u[0],i[0]),i[0]=fillInMissingComponent(i[0],u[0]),u[1]=fillInMissingComponent(u[1],i[1]),i[1]=fillInMissingComponent(i[1],u[1]),u[2]=fillInMissingComponent(u[2],i[2]),i[2]=fillInMissingComponent(i[2],u[2]),u[0]=premultiply(u[0],l),u[1]=premultiply(u[1],l),u[2]=premultiply(u[2],l),i[0]=premultiply(i[0],s),i[1]=premultiply(i[1],s),i[2]=premultiply(i[2],s);const c=interpolate(l,s,t);return{colorNotation:e,channels:[un_premultiply(interpolate(u[0],i[0],t),c),un_premultiply(interpolate(u[1],i[1],t),c),un_premultiply(interpolate(u[2],i[2],t),c)],alpha:c,syntaxFlags:new Set([me.ColorMix])}}function colorMixPolar(e,a,n){if(!n||!n.colors.length)return!1;const r=n.colors.slice();r.reverse();let o=he.HSL;switch(e){case\"hsl\":o=he.HSL;break;case\"hwb\":o=he.HWB;break;case\"lch\":o=he.LCH;break;case\"oklch\":o=he.OKLCH;break;default:return!1}if(1===r.length){const e=colorDataTo(r[0].color,o);return e.colorNotation=o,e.syntaxFlags.add(me.ColorMixVariadic),\"number\"!=typeof e.alpha?!1:(e.alpha=e.alpha*n.alphaMultiplier,e)}for(;r.length>=2;){const e=r.pop(),n=r.pop();if(!e||!n)return!1;const t=colorMixPolarPair(o,a,e.color,e.percentage,n.color,n.percentage);if(!t)return!1;r.push({color:t,percentage:e.percentage+n.percentage})}const t=r[0]?.color;return!!t&&(n.colors.some(e=>e.color.syntaxFlags.has(me.Experimental))&&t.syntaxFlags.add(me.Experimental),\"number\"==typeof t.alpha&&(t.alpha=t.alpha*n.alphaMultiplier,2!==n.colors.length&&t.syntaxFlags.add(me.ColorMixVariadic),t))}function colorMixPolarPair(e,a,n,r,o,t){const l=r/(r+t);let s=0,u=0,i=0,c=0,h=0,m=0,p=n.alpha;if(\"number\"!=typeof p)return!1;let N=o.alpha;if(\"number\"!=typeof N)return!1;p=Number.isNaN(p)?N:p,N=Number.isNaN(N)?p:N;const b=colorDataTo(n,e).channels,v=colorDataTo(o,e).channels;switch(e){case he.HSL:case he.HWB:s=b[0],u=v[0],i=b[1],c=v[1],h=b[2],m=v[2];break;case he.LCH:case he.OKLCH:i=b[0],c=v[0],h=b[1],m=v[1],s=b[2],u=v[2]}s=fillInMissingComponent(s,u),Number.isNaN(s)&&(s=0),u=fillInMissingComponent(u,s),Number.isNaN(u)&&(u=0),i=fillInMissingComponent(i,c),c=fillInMissingComponent(c,i),h=fillInMissingComponent(h,m),m=fillInMissingComponent(m,h);const g=u-s;switch(a){case\"shorter\":g>180?s+=360:g<-180&&(u+=360);break;case\"longer\":-180<g&&g<180&&(g>0?s+=360:u+=360);break;case\"increasing\":g<0&&(u+=360);break;case\"decreasing\":g>0&&(s+=360);break;default:throw new Error(\"Unknown hue interpolation method\")}i=premultiply(i,p),h=premultiply(h,p),c=premultiply(c,N),m=premultiply(m,N);let f=[0,0,0];const d=interpolate(p,N,l);switch(e){case he.HSL:case he.HWB:f=[interpolate(s,u,l),un_premultiply(interpolate(i,c,l),d),un_premultiply(interpolate(h,m,l),d)];break;case he.LCH:case he.OKLCH:f=[un_premultiply(interpolate(i,c,l),d),un_premultiply(interpolate(h,m,l),d),interpolate(s,u,l)]}return{colorNotation:e,channels:f,alpha:d,syntaxFlags:new Set([me.ColorMix])}}function fillInMissingComponent(e,a){return Number.isNaN(e)?a:e}function interpolate(e,a,n){return e*n+a*(1-n)}function premultiply(e,a){return Number.isNaN(a)?e:Number.isNaN(e)?Number.NaN:e*a}function un_premultiply(e,a){return 0===a||Number.isNaN(a)?e:Number.isNaN(e)?Number.NaN:e/a}function hex(e){const a=toLowerCaseAZ(e[4].value);if(a.match(/[^a-f0-9]/))return!1;const n={colorNotation:he.HEX,channels:[0,0,0],alpha:1,syntaxFlags:new Set([me.Hex])},r=a.length;if(3===r){const e=a[0],r=a[1],o=a[2];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n}if(6===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n}if(4===r){const e=a[0],r=a[1],o=a[2],t=a[3];return n.channels=[parseInt(e+e,16)/255,parseInt(r+r,16)/255,parseInt(o+o,16)/255],n.alpha=parseInt(t+t,16)/255,n.syntaxFlags.add(me.HasAlpha),n}if(8===r){const e=a[0]+a[1],r=a[2]+a[3],o=a[4]+a[5],t=a[6]+a[7];return n.channels=[parseInt(e,16)/255,parseInt(r,16)/255,parseInt(o,16)/255],n.alpha=parseInt(t,16)/255,n.syntaxFlags.add(me.HasAlpha),n}return!1}function normalizeHue(n){if(o(n))return n[4].value=n[4].value%360,n[1]=n[4].value.toString(),n;if(u(n)){let r=n[4].value;switch(toLowerCaseAZ(n[4].unit)){case\"deg\":break;case\"rad\":r=180*n[4].value/Math.PI;break;case\"grad\":r=.9*n[4].value;break;case\"turn\":r=360*n[4].value;break;default:return!1}return r%=360,[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_legacy_HSL_ChannelValues(n,t,l){if(0===t){const e=normalizeHue(n);return!1!==e&&(u(n)&&l.syntaxFlags.add(me.HasDimensionValues),e)}if(r(n)){3===t?l.syntaxFlags.add(me.HasPercentageAlpha):l.syntaxFlags.add(me.HasPercentageValues);let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,100,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){if(3!==t)return!1;let r=normalize(n[4].value,1,0,100);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_HSL_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(me.HasPercentageAlpha):s.syntaxFlags.add(me.HasPercentageValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,100,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=t[4].value;return 3===l?n=normalize(t[4].value,1,0,1):1===l&&(n=normalize(t[4].value,1,0,2147483647)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function threeChannelLegacySyntax(e,a,n,r){const t=[],u=[],i=[],c=[],h={colorNotation:n,channels:[0,0,0],alpha:1,syntaxFlags:new Set(r)};let m=t;for(let a=0;a<e.value.length;a++){let n=e.value[a];if(!ee(n)&&!ae(n)){if(ne(n)&&s(n.value)){if(m===t){m=u;continue}if(m===u){m=i;continue}if(m===i){m=c;continue}if(m===c)return!1}if(re(n)){if(m===c&&\"var\"===n.getName().toLowerCase()){h.syntaxFlags.add(me.HasVariableAlpha),m.push(n);continue}if(!ie.has(n.getName().toLowerCase()))return!1;const[[e]]=ce([[n]],{censorIntoStandardRepresentableValues:!0,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),n=e}if(!ne(n))return!1;m.push(n)}}if(1!==m.length)return!1;if(1!==t.length||1!==u.length||1!==i.length)return!1;if(!ne(t[0])||!ne(u[0])||!ne(i[0]))return!1;const p=a(t[0].value,0,h);if(!p||!o(p))return!1;const N=a(u[0].value,1,h);if(!N||!o(N))return!1;const b=a(i[0].value,2,h);if(!b||!o(b))return!1;const v=[p,N,b];if(1===c.length)if(h.syntaxFlags.add(me.HasAlpha),ne(c[0])){const e=a(c[0].value,3,h);if(!e||!o(e))return!1;v.push(e)}else h.alpha=c[0];return h.channels=[v[0][4].value,v[1][4].value,v[2][4].value],4===v.length&&(h.alpha=v[3][4].value),h}function threeChannelSpaceSeparated(e,a,r,s,u){const i=[],c=[],h=[],m=[];let p,N,b=!1;const v={colorNotation:r,channels:[0,0,0],alpha:1,syntaxFlags:new Set(s)};let g=i;for(let a=0;a<e.value.length;a++){let o=e.value[a];if(ee(o)||ae(o))for(;ee(e.value[a+1])||ae(e.value[a+1]);)a++;else if(g===i&&i.length&&(g=c),g===c&&c.length&&(g=h),ne(o)&&t(o.value)&&\"/\"===o.value[4].value){if(g===m)return!1;g=m}else{if(re(o)){if(g===m&&\"var\"===o.getName().toLowerCase()){v.syntaxFlags.add(me.HasVariableAlpha),g.push(o);continue}if(!ie.has(o.getName().toLowerCase()))return!1;const[[e]]=ce([[o]],{censorIntoStandardRepresentableValues:!0,globals:N,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),o=e}if(g===i&&0===i.length&&ne(o)&&n(o.value)&&\"from\"===o.value[4].value.toLowerCase()){if(b)return!1;for(;ee(e.value[a+1])||ae(e.value[a+1]);)a++;if(a++,o=e.value[a],b=u(o),!1===b)return!1;b.syntaxFlags.has(me.Experimental)&&v.syntaxFlags.add(me.Experimental),v.syntaxFlags.add(me.RelativeColorSyntax),b.colorNotation!==r&&(b=colorDataTo(b,r)),p=normalizeRelativeColorDataChannels(b),N=noneToZeroInRelativeColorDataChannels(p)}else{if(!ne(o))return!1;if(n(o.value)&&p){const e=o.value[4].value.toLowerCase();if(p.has(e)){g.push(new oe(p.get(e)));continue}}g.push(o)}}}if(1!==g.length)return!1;if(1!==i.length||1!==c.length||1!==h.length)return!1;if(!ne(i[0])||!ne(c[0])||!ne(h[0]))return!1;if(p&&!p.has(\"alpha\"))return!1;const f=a(i[0].value,0,v);if(!f||!o(f))return!1;const d=a(c[0].value,1,v);if(!d||!o(d))return!1;const y=a(h[0].value,2,v);if(!y||!o(y))return!1;const _=[f,d,y];if(1===m.length)if(v.syntaxFlags.add(me.HasAlpha),ne(m[0])){const e=a(m[0].value,3,v);if(!e||!o(e))return!1;_.push(e)}else v.alpha=m[0];else if(p&&p.has(\"alpha\")){const e=a(p.get(\"alpha\"),3,v);if(!e||!o(e))return!1;_.push(e)}return v.channels=[_[0][4].value,_[1][4].value,_[2][4].value],4===_.length&&(v.alpha=_[3][4].value),v}function hsl(e,a){if(e.value.some(e=>ne(e)&&s(e.value))){const a=hslCommaSeparated(e);if(!1!==a)return a}{const n=hslSpaceSeparated(e,a);if(!1!==n)return n}return!1}function hslCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_HSL_ChannelValues,he.HSL,[me.LegacyHSL])}function hslSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_HSL_ChannelValues,he.HSL,[],a)}function normalize_HWB_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(0===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3===l?s.syntaxFlags.add(me.HasPercentageAlpha):s.syntaxFlags.add(me.HasPercentageValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=t[4].value;return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function normalize_Lab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,.8,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lab(e,a){return threeChannelSpaceSeparated(e,normalize_Lab_ChannelValues,he.Lab,[],a)}function normalize_LCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,100/150,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,100);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function lch(e,a){return threeChannelSpaceSeparated(e,normalize_LCH_ChannelValues,he.LCH,[],a)}const de=new Map;for(const[e,a]of Object.entries(G))de.set(e,a);function namedColor(e){const a=de.get(toLowerCaseAZ(e));return!!a&&{colorNotation:he.RGB,channels:[a[0]/255,a[1]/255,a[2]/255],alpha:1,syntaxFlags:new Set([me.ColorKeyword,me.NamedColor])}}function normalize_OKLab_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l||2===l?n=normalize(t[4].value,250,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l||2===l?n=normalize(t[4].value,1,-2147483647,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklab(e,a){return threeChannelSpaceSeparated(e,normalize_OKLab_ChannelValues,he.OKLab,[],a)}function normalize_OKLCH_ChannelValues(t,l,s){if(n(t)&&\"none\"===toLowerCaseAZ(t[4].value))return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(2===l){const e=normalizeHue(t);return!1!==e&&(u(t)&&s.syntaxFlags.add(me.HasDimensionValues),e)}if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,0,1);return 1===l?n=normalize(t[4].value,250,0,2147483647):3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,1,0,1);return 1===l?n=normalize(t[4].value,1,0,2147483647):3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function oklch(e,a){return threeChannelSpaceSeparated(e,normalize_OKLCH_ChannelValues,he.OKLCH,[],a)}function normalize_legacy_sRGB_ChannelValues(n,t,l){if(r(n)){3===t?l.syntaxFlags.add(me.HasPercentageAlpha):l.syntaxFlags.add(me.HasPercentageValues);const r=normalize(n[4].value,100,0,1);return[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}if(o(n)){3!==t&&l.syntaxFlags.add(me.HasNumberValues);let r=normalize(n[4].value,255,0,1);return 3===t&&(r=normalize(n[4].value,1,0,1)),[e.Number,r.toString(),n[2],n[3],{value:r,type:a.Number}]}return!1}function normalize_modern_sRGB_ChannelValues(t,l,s){if(n(t)&&\"none\"===t[4].value.toLowerCase())return s.syntaxFlags.add(me.HasNoneKeywords),[e.Number,\"none\",t[2],t[3],{value:Number.NaN,type:a.Number}];if(r(t)){3!==l&&s.syntaxFlags.add(me.HasPercentageValues);let n=normalize(t[4].value,100,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,100,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}if(o(t)){3!==l&&s.syntaxFlags.add(me.HasNumberValues);let n=normalize(t[4].value,255,-2147483647,2147483647);return 3===l&&(n=normalize(t[4].value,1,0,1)),[e.Number,n.toString(),t[2],t[3],{value:n,type:a.Number}]}return!1}function rgb(e,a){if(e.value.some(e=>ne(e)&&s(e.value))){const a=rgbCommaSeparated(e);if(!1!==a)return(!a.syntaxFlags.has(me.HasNumberValues)||!a.syntaxFlags.has(me.HasPercentageValues))&&a}else{const n=rgbSpaceSeparated(e,a);if(!1!==n)return n}return!1}function rgbCommaSeparated(e){return threeChannelLegacySyntax(e,normalize_legacy_sRGB_ChannelValues,he.RGB,[me.LegacyRGB])}function rgbSpaceSeparated(e,a){return threeChannelSpaceSeparated(e,normalize_modern_sRGB_ChannelValues,he.RGB,[],a)}function XYZ_D50_to_sRGB_Gamut(e){const a=x(e);if(A(a))return X(a);let n=e;return n=p(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),K(Y(n,oklch_to_lin_srgb,lin_srgb_to_oklch))}function oklch_to_lin_srgb(e){return e=I(e),e=O(e),W(e)}function lin_srgb_to_oklch(e){return e=E(e),e=U(e),$(e)}function contrastColor(e,a){let n=!1;for(let r=0;r<e.value.length;r++){const o=e.value[r];if(!ee(o)&&!ae(o)&&(n||(n=a(o),!n)))return!1}if(!n)return!1;n.channels=convertNaNToZero(n.channels),n.channels=XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels),n.colorNotation=he.sRGB;const r={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([me.ContrastColor,me.Experimental])},o=j(n.channels,[1,1,1]),t=j(n.channels,[0,0,0]);return r.channels=o>t?[1,1,1]:[0,0,0],r}function alpha(e,a){let r,s,u=!1,i=!1,c=!1;const h={colorNotation:he.sRGB,channels:[0,0,0],alpha:1,syntaxFlags:new Set([])};for(let m=0;m<e.value.length;m++){let p=e.value[m];if(ee(p)||ae(p))for(;ee(e.value[m+1])||ae(e.value[m+1]);)m++;else if(c&&!u&&!i&&ne(p)&&t(p.value)&&\"/\"===p.value[4].value)u=!0;else{if(re(p)&&ie.has(toLowerCaseAZ(p.getName()))){const[[e]]=ce([[p]],{censorIntoStandardRepresentableValues:!0,globals:s,precision:-1,toCanonicalUnits:!0,rawPercentages:!0});if(!e||!ne(e)||!l(e.value))return!1;Number.isNaN(e.value[4].value)&&(e.value[4].value=0),p=e}if(u||i||!ne(p)||!n(p.value)||\"from\"!==toLowerCaseAZ(p.value[4].value)){if(!u)return!1;if(i)return!1;if(ne(p)){if(n(p.value)&&\"alpha\"===toLowerCaseAZ(p.value[4].value)&&r&&r.has(\"alpha\")){h.alpha=r.get(\"alpha\")[4].value,i=!0;continue}const e=normalize_Color_ChannelValues(p.value,3,h);if(!e||!o(e))return!1;h.alpha=new oe(e),i=!0;continue}if(re(p)){const e=le([[p]],e=>{if(ne(e)&&n(e.value)&&\"alpha\"===toLowerCaseAZ(e.value[4].value)&&r&&r.has(\"alpha\"))return new oe(r.get(\"alpha\"))});h.alpha=e[0][0],i=!0;continue}return!1}if(c)return!1;for(;ee(e.value[m+1])||ae(e.value[m+1]);)m++;if(m++,p=e.value[m],c=a(p),!1===c)return!1;r=normalizeRelativeColorDataChannels(c),s=noneToZeroInRelativeColorDataChannels(r),h.syntaxFlags=new Set(c.syntaxFlags),h.syntaxFlags.add(me.RelativeAlphaSyntax),h.channels=[...c.channels],h.colorNotation=c.colorNotation,h.alpha=c.alpha}}return!!r&&h}function XYZ_D50_to_P3_Gamut(e){const a=C(e);if(A(a))return X(a);let n=e;return n=p(n),n[0]<1e-6&&(n=[0,0,0]),n[0]>.999999&&(n=[1,0,0]),q(Y(n,oklch_to_lin_p3,lin_p3_to_oklch))}function oklch_to_lin_p3(e){return e=I(e),e=O(e),J(e)}function lin_p3_to_oklch(e){return e=Q(e),e=U(e),$(e)}function toPrecision(e,a=7){e=+e,a=+a;const n=(Math.floor(Math.abs(e))+\"\").length;if(a>n)return+e.toFixed(a-n);{const r=10**(n-a);return Math.round(e/r)*r}}function serializeWithAlpha(n,r,o,t){const l=[e.CloseParen,\")\",-1,-1,void 0];if(\"number\"==typeof n.alpha){const s=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(s,4)?new se(r,l,t):new se(r,l,[...t,new ue([o]),new oe([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new ue([o]),new oe([e.Number,toPrecision(s,4).toString(),-1,-1,{value:n.alpha,type:a.Integer}])])}return new se(r,l,[...t,new ue([o]),new oe([e.Delim,\"/\",-1,-1,{value:\"/\"}]),new ue([o]),n.alpha])}function serializeP3(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);r?o=XYZ_D50_to_P3_Gamut(colorData_to_XYZ_D50(n).channels):n.colorNotation!==he.Display_P3&&(o=C(colorData_to_XYZ_D50(n).channels));const t=r?Math.min(1,Math.max(0,toPrecision(o[0],6))):toPrecision(o[0],6),l=r?Math.min(1,Math.max(0,toPrecision(o[1],6))):toPrecision(o[1],6),s=r?Math.min(1,Math.max(0,toPrecision(o[2],6))):toPrecision(o[2],6),u=[e.Function,\"color(\",-1,-1,{value:\"color\"}],i=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,u,i,[new oe([e.Ident,\"display-p3\",-1,-1,{value:\"display-p3\"}]),new ue([i]),new oe([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Number}]),new ue([i]),new oe([e.Number,l.toString(),-1,-1,{value:o[1],type:a.Number}]),new ue([i]),new oe([e.Number,s.toString(),-1,-1,{value:o[2],type:a.Number}])])}function serializeRGB(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);o=r?XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels):x(colorData_to_XYZ_D50(n).channels);const t=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[0])))),l=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[1])))),s=Math.min(255,Math.max(0,Math.round(255*toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],i=[e.Whitespace,\" \",-1,-1,void 0],c=[e.Comma,\",\",-1,-1,void 0],h=[new oe([e.Number,t.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[0])),type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Number,l.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[1])),type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Number,s.toString(),-1,-1,{value:Math.min(255,255*Math.max(0,o[2])),type:a.Integer}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new se([e.Function,\"rgb(\",-1,-1,{value:\"rgb\"}],u,h):new se([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new oe(c),new ue([i]),new oe([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new se([e.Function,\"rgba(\",-1,-1,{value:\"rgba\"}],u,[...h,new oe(c),new ue([i]),n.alpha])}function serializeHSL(n,r=!0){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let o=n.channels.map(e=>Number.isNaN(e)?0:e);o=g(r?T(XYZ_D50_to_sRGB_Gamut(colorData_to_XYZ_D50(n).channels)):colorData_to_XYZ_D50(n).channels),o=o.map(e=>Number.isNaN(e)?0:e);const t=Math.min(360,Math.max(0,Math.round(toPrecision(o[0])))),l=Math.min(100,Math.max(0,Math.round(toPrecision(o[1])))),s=Math.min(100,Math.max(0,Math.round(toPrecision(o[2])))),u=[e.CloseParen,\")\",-1,-1,void 0],i=[e.Whitespace,\" \",-1,-1,void 0],c=[e.Comma,\",\",-1,-1,void 0],h=[new oe([e.Number,t.toString(),-1,-1,{value:o[0],type:a.Integer}]),new oe(c),new ue([i]),new oe([e.Percentage,l.toString()+\"%\",-1,-1,{value:o[1]}]),new oe(c),new ue([i]),new oe([e.Percentage,s.toString()+\"%\",-1,-1,{value:o[2]}])];if(\"number\"==typeof n.alpha){const r=Math.min(1,Math.max(0,toPrecision(Number.isNaN(n.alpha)?0:n.alpha)));return 1===toPrecision(r,4)?new se([e.Function,\"hsl(\",-1,-1,{value:\"hsl\"}],u,h):new se([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new oe(c),new ue([i]),new oe([e.Number,toPrecision(r,4).toString(),-1,-1,{value:n.alpha,type:a.Number}])])}return new se([e.Function,\"hsla(\",-1,-1,{value:\"hsla\"}],u,[...h,new oe(c),new ue([i]),n.alpha])}function serializeOKLCH(n){n.channels=convertPowerlessComponentsToZeroValuesForDisplay(n.channels,n.colorNotation);let r=n.channels.map(e=>Number.isNaN(e)?0:e);n.colorNotation!==he.OKLCH&&(r=p(colorData_to_XYZ_D50(n).channels));const o=toPrecision(r[0],6),t=toPrecision(r[1],6),l=toPrecision(r[2],6),s=[e.Function,\"oklch(\",-1,-1,{value:\"oklch\"}],u=[e.Whitespace,\" \",-1,-1,void 0];return serializeWithAlpha(n,s,u,[new oe([e.Number,o.toString(),-1,-1,{value:r[0],type:a.Number}]),new ue([u]),new oe([e.Number,t.toString(),-1,-1,{value:r[1],type:a.Number}]),new ue([u]),new oe([e.Number,l.toString(),-1,-1,{value:r[2],type:a.Number}])])}function color(e){if(re(e)){switch(toLowerCaseAZ(e.getName())){case\"rgb\":case\"rgba\":return rgb(e,color);case\"hsl\":case\"hsla\":return hsl(e,color);case\"hwb\":return a=color,threeChannelSpaceSeparated(e,normalize_HWB_ChannelValues,he.HWB,[],a);case\"lab\":return lab(e,color);case\"lch\":return lch(e,color);case\"oklab\":return oklab(e,color);case\"oklch\":return oklch(e,color);case\"color\":return color$1(e,color);case\"color-mix\":return colorMix(e,color);case\"contrast-color\":return contrastColor(e,color);case\"alpha\":return alpha(e,color)}}var a;if(ne(e)){if(i(e.value))return hex(e.value);if(n(e.value)){const a=namedColor(e.value[4].value);return!1!==a?a:\"transparent\"===toLowerCaseAZ(e.value[4].value)&&{colorNotation:he.RGB,channels:[0,0,0],alpha:0,syntaxFlags:new Set([me.ColorKeyword])}}}return!1}export{he as ColorNotation,me as SyntaxFlag,color,colorDataFitsDisplayP3_Gamut,colorDataFitsRGB_Gamut,serializeHSL,serializeOKLCH,serializeP3,serializeRGB};\n","/**\n * relative-color\n */\n\nimport { SyntaxFlag, color as colorParser } from '@csstools/css-color-parser';\nimport {\n ComponentValue,\n parseComponentValue\n} from '@csstools/css-parser-algorithms';\nimport { CSSToken, TokenType, tokenize } from '@csstools/css-tokenizer';\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport { NAMED_COLORS, convertColorToRgb } from './color';\nimport { isString, isStringOrNumber } from './common';\nimport { resolveDimension, serializeCalc } from './css-calc';\nimport { resolveColor } from './resolve';\nimport { roundToPrecision, splitValue } from './util';\nimport {\n ColorChannels,\n MatchedRegExp,\n Options,\n StringColorChannels\n} from './typedef';\n\n/* constants */\nimport {\n CS_LAB,\n CS_LCH,\n FN_LIGHT_DARK,\n FN_REL,\n FN_REL_CAPT,\n FN_VAR,\n NONE,\n SYN_COLOR_TYPE,\n SYN_FN_MATH_START,\n SYN_FN_VAR,\n SYN_MIX,\n VAL_SPEC\n} from './constant';\nconst {\n CloseParen: PAREN_CLOSE,\n Comment: COMMENT,\n Dimension: DIM,\n EOF,\n Function: FUNC,\n Ident: IDENT,\n Number: NUM,\n OpenParen: PAREN_OPEN,\n Percentage: PCT,\n Whitespace: W_SPACE\n} = TokenType;\nconst { HasNoneKeywords: KEY_NONE } = SyntaxFlag;\nconst NAMESPACE = 'relative-color';\n\n/* numeric constants */\nconst OCT = 8;\nconst DEC = 10;\nconst HEX = 16;\nconst MAX_PCT = 100;\nconst MAX_RGB = 255;\n\n/* type definitions */\n/**\n * @type NumberOrStringColorChannels - color channel\n */\ntype NumberOrStringColorChannels = ColorChannels & StringColorChannels;\n\n/* regexp */\nconst REG_COLOR_CAPT = new RegExp(\n `^${FN_REL}(${SYN_COLOR_TYPE}|${SYN_MIX})\\\\s+`\n);\nconst REG_CS_HSL = /(?:hsla?|hwb)$/;\nconst REG_CS_CIE = new RegExp(`^(?:${CS_LAB}|${CS_LCH})$`);\nconst REG_FN_MATH_START = new RegExp(SYN_FN_MATH_START);\nconst REG_FN_REL = new RegExp(FN_REL);\nconst REG_FN_REL_CAPT = new RegExp(`^${FN_REL_CAPT}`);\nconst REG_FN_REL_START = new RegExp(`^${FN_REL}`);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/**\n * resolve relative color channels\n * @param tokens - CSS tokens\n * @param [opt] - options\n * @returns resolved color channels\n */\nexport function resolveColorChannels(\n tokens: CSSToken[],\n opt: Options = {}\n): NumberOrStringColorChannels | NullObject {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { colorSpace = '', format = '' } = opt;\n const colorChannels = new Map([\n ['color', ['r', 'g', 'b', 'alpha']],\n ['hsl', ['h', 's', 'l', 'alpha']],\n ['hsla', ['h', 's', 'l', 'alpha']],\n ['hwb', ['h', 'w', 'b', 'alpha']],\n ['lab', ['l', 'a', 'b', 'alpha']],\n ['lch', ['l', 'c', 'h', 'alpha']],\n ['oklab', ['l', 'a', 'b', 'alpha']],\n ['oklch', ['l', 'c', 'h', 'alpha']],\n ['rgb', ['r', 'g', 'b', 'alpha']],\n ['rgba', ['r', 'g', 'b', 'alpha']]\n ]);\n const colorChannel = colorChannels.get(colorSpace);\n // invalid color channel\n if (!colorChannel) {\n return new NullObject();\n }\n const mathFunc = new Set();\n const channels: [\n (number | string)[],\n (number | string)[],\n (number | string)[],\n (number | string)[]\n ] = [[], [], [], []];\n let i = 0;\n let nest = 0;\n let func = false;\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type, value, , , detail] = token as [\n TokenType,\n string,\n number,\n number,\n { value: string | number } | undefined\n ];\n const channel = channels[i];\n if (Array.isArray(channel)) {\n switch (type) {\n case DIM: {\n const resolvedValue = resolveDimension(token, opt);\n if (isString(resolvedValue)) {\n channel.push(resolvedValue);\n } else {\n channel.push(value);\n }\n break;\n }\n case FUNC: {\n channel.push(value);\n func = true;\n nest++;\n if (REG_FN_MATH_START.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case IDENT: {\n // invalid channel key\n if (!colorChannel.includes(value)) {\n return new NullObject();\n }\n channel.push(value);\n if (!func) {\n i++;\n }\n break;\n }\n case NUM: {\n channel.push(Number(detail?.value));\n if (!func) {\n i++;\n }\n break;\n }\n case PAREN_OPEN: {\n channel.push(value);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n if (func) {\n const lastValue = channel[channel.length - 1];\n if (lastValue === ' ') {\n channel.splice(-1, 1, value);\n } else {\n channel.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n if (nest === 0) {\n func = false;\n i++;\n }\n }\n break;\n }\n case PCT: {\n channel.push(Number(detail?.value) / MAX_PCT);\n if (!func) {\n i++;\n }\n break;\n }\n case W_SPACE: {\n if (channel.length && func) {\n const lastValue = channel[channel.length - 1];\n if (typeof lastValue === 'number') {\n channel.push(value);\n } else if (\n isString(lastValue) &&\n !lastValue.endsWith('(') &&\n lastValue !== ' '\n ) {\n channel.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF && func) {\n channel.push(value);\n }\n }\n }\n }\n }\n const channelValues = [];\n for (const channel of channels) {\n if (channel.length === 1) {\n const [resolvedValue] = channel;\n if (isStringOrNumber(resolvedValue)) {\n channelValues.push(resolvedValue);\n }\n } else if (channel.length) {\n const resolvedValue = serializeCalc(channel.join(''), {\n format\n });\n channelValues.push(resolvedValue);\n }\n }\n return channelValues as NumberOrStringColorChannels;\n}\n\n/**\n * extract origin color\n * @param value - CSS color value\n * @param [opt] - options\n * @returns origin color value\n */\nexport function extractOriginColor(\n value: string,\n opt: Options = {}\n): string | NullObject {\n const { colorScheme = 'normal', currentColor = '', format = '' } = opt;\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (!value) {\n return new NullObject();\n }\n if (!REG_FN_REL_START.test(value)) {\n return value;\n }\n } else {\n return new NullObject();\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'extractOriginColor',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n return cachedResult.item as string;\n }\n if (/currentcolor/.test(value)) {\n if (currentColor) {\n value = value.replace(/currentcolor/g, currentColor);\n } else {\n setCache(cacheKey, null);\n return new NullObject();\n }\n }\n let colorSpace = '';\n if (REG_FN_REL_CAPT.test(value)) {\n [, colorSpace] = value.match(REG_FN_REL_CAPT) as MatchedRegExp;\n }\n opt.colorSpace = colorSpace;\n if (value.includes(FN_LIGHT_DARK)) {\n const colorParts = value\n .replace(new RegExp(`^${colorSpace}\\\\(`), '')\n .replace(/\\)$/, '');\n const [, originColor = ''] = splitValue(colorParts);\n const specifiedOriginColor = resolveColor(originColor, {\n colorScheme,\n format: VAL_SPEC\n }) as string;\n if (specifiedOriginColor === '') {\n setCache(cacheKey, null);\n return new NullObject();\n }\n if (format === VAL_SPEC) {\n value = value.replace(originColor, specifiedOriginColor);\n } else {\n const resolvedOriginColor = resolveColor(specifiedOriginColor, opt);\n if (isString(resolvedOriginColor)) {\n value = value.replace(originColor, resolvedOriginColor);\n }\n }\n }\n if (REG_COLOR_CAPT.test(value)) {\n const [, originColor] = value.match(REG_COLOR_CAPT) as MatchedRegExp;\n const [, restValue] = value.split(originColor) as MatchedRegExp;\n if (/^[a-z]+$/.test(originColor)) {\n if (\n !/^transparent$/.test(originColor) &&\n !Object.hasOwn(NAMED_COLORS, originColor)\n ) {\n setCache(cacheKey, null);\n return new NullObject();\n }\n } else if (format === VAL_SPEC) {\n const resolvedOriginColor = resolveColor(originColor, opt);\n if (isString(resolvedOriginColor)) {\n value = value.replace(originColor, resolvedOriginColor);\n }\n }\n if (format === VAL_SPEC) {\n const tokens = tokenize({ css: restValue });\n const channelValues = resolveColorChannels(tokens, opt);\n if (channelValues instanceof NullObject) {\n setCache(cacheKey, null);\n return channelValues;\n }\n const [v1, v2, v3, v4] = channelValues;\n let channelValue = '';\n if (isStringOrNumber(v4)) {\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n } else {\n channelValue = ` ${channelValues.join(' ')})`;\n }\n if (restValue !== channelValue) {\n value = value.replace(restValue, channelValue);\n }\n }\n // nested relative color\n } else {\n const [, restValue] = value.split(REG_FN_REL_START) as MatchedRegExp;\n const tokens = tokenize({ css: restValue });\n const originColor: string[] = [];\n let nest = 0;\n while (tokens.length) {\n const [type, tokenValue] = tokens.shift() as [TokenType, string];\n switch (type) {\n case FUNC:\n case PAREN_OPEN: {\n originColor.push(tokenValue);\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n const lastValue = originColor[originColor.length - 1];\n if (lastValue === ' ') {\n originColor.splice(-1, 1, tokenValue);\n } else if (isString(lastValue)) {\n originColor.push(tokenValue);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n const lastValue = originColor[originColor.length - 1];\n if (\n isString(lastValue) &&\n !lastValue.endsWith('(') &&\n lastValue !== ' '\n ) {\n originColor.push(tokenValue);\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n originColor.push(tokenValue);\n }\n }\n }\n if (nest === 0) {\n break;\n }\n }\n const resolvedOriginColor = resolveRelativeColor(\n originColor.join('').trim(),\n opt\n );\n if (resolvedOriginColor instanceof NullObject) {\n setCache(cacheKey, null);\n return resolvedOriginColor;\n }\n const channelValues = resolveColorChannels(tokens, opt);\n if (channelValues instanceof NullObject) {\n setCache(cacheKey, null);\n return channelValues;\n }\n const [v1, v2, v3, v4] = channelValues;\n let channelValue = '';\n if (isStringOrNumber(v4)) {\n channelValue = ` ${v1} ${v2} ${v3} / ${v4})`;\n } else {\n channelValue = ` ${channelValues.join(' ')})`;\n }\n value = value.replace(restValue, `${resolvedOriginColor}${channelValue}`);\n }\n setCache(cacheKey, value);\n return value;\n}\n\n/**\n * resolve relative color\n * @param value - CSS relative color value\n * @param [opt] - options\n * @returns resolved value\n */\nexport function resolveRelativeColor(\n value: string,\n opt: Options = {}\n): string | NullObject {\n const { format = '' } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n // var() must be resolved before resolveRelativeColor()\n } else {\n throw new SyntaxError(`Unexpected token ${FN_VAR} found.`);\n }\n } else if (!REG_FN_REL.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolveRelativeColor',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n return cachedResult.item as string;\n }\n const originColor = extractOriginColor(value, opt);\n if (originColor instanceof NullObject) {\n setCache(cacheKey, null);\n return originColor;\n }\n value = originColor;\n if (format === VAL_SPEC) {\n if (value.startsWith('rgba(')) {\n value = value.replace(/^rgba\\(/, 'rgb(');\n } else if (value.startsWith('hsla(')) {\n value = value.replace(/^hsla\\(/, 'hsl(');\n }\n return value;\n }\n const tokens = tokenize({ css: value });\n const components = parseComponentValue(tokens) as ComponentValue;\n const parsedComponents = colorParser(components);\n if (!parsedComponents) {\n setCache(cacheKey, null);\n return new NullObject();\n }\n const {\n alpha: alphaComponent,\n channels: channelsComponent,\n colorNotation,\n syntaxFlags\n } = parsedComponents;\n let alpha: number | string;\n if (Number.isNaN(Number(alphaComponent))) {\n if (syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE)) {\n alpha = NONE;\n } else {\n alpha = 0;\n }\n } else {\n alpha = roundToPrecision(Number(alphaComponent), OCT);\n }\n let v1: number | string;\n let v2: number | string;\n let v3: number | string;\n [v1, v2, v3] = channelsComponent;\n let resolvedValue;\n if (REG_CS_CIE.test(colorNotation)) {\n const hasNone = syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE);\n if (Number.isNaN(v1)) {\n if (hasNone) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, HEX);\n }\n if (Number.isNaN(v2)) {\n if (hasNone) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, HEX);\n }\n if (Number.isNaN(v3)) {\n if (hasNone) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, HEX);\n }\n if (alpha === 1) {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`;\n }\n } else if (REG_CS_HSL.test(colorNotation)) {\n if (Number.isNaN(v1)) {\n v1 = 0;\n }\n if (Number.isNaN(v2)) {\n v2 = 0;\n }\n if (Number.isNaN(v3)) {\n v3 = 0;\n }\n let [r, g, b] = convertColorToRgb(\n `${colorNotation}(${v1} ${v2} ${v3} / ${alpha})`\n ) as ColorChannels;\n r = roundToPrecision(r / MAX_RGB, DEC);\n g = roundToPrecision(g / MAX_RGB, DEC);\n b = roundToPrecision(b / MAX_RGB, DEC);\n if (alpha === 1) {\n resolvedValue = `color(srgb ${r} ${g} ${b})`;\n } else {\n resolvedValue = `color(srgb ${r} ${g} ${b} / ${alpha})`;\n }\n } else {\n const cs = colorNotation === 'rgb' ? 'srgb' : colorNotation;\n const hasNone = syntaxFlags instanceof Set && syntaxFlags.has(KEY_NONE);\n if (Number.isNaN(v1)) {\n if (hasNone) {\n v1 = NONE;\n } else {\n v1 = 0;\n }\n } else {\n v1 = roundToPrecision(v1, DEC);\n }\n if (Number.isNaN(v2)) {\n if (hasNone) {\n v2 = NONE;\n } else {\n v2 = 0;\n }\n } else {\n v2 = roundToPrecision(v2, DEC);\n }\n if (Number.isNaN(v3)) {\n if (hasNone) {\n v3 = NONE;\n } else {\n v3 = 0;\n }\n } else {\n v3 = roundToPrecision(v3, DEC);\n }\n if (alpha === 1) {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3})`;\n } else {\n resolvedValue = `color(${cs} ${v1} ${v2} ${v3} / ${alpha})`;\n }\n }\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n}\n","/**\n * resolve\n */\n\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport {\n convertRgbToHex,\n resolveColorFunc,\n resolveColorMix,\n resolveColorValue\n} from './color';\nimport { isString } from './common';\nimport { cssCalc } from './css-calc';\nimport { resolveVar } from './css-var';\nimport { resolveRelativeColor } from './relative-color';\nimport { splitValue } from './util';\nimport {\n ComputedColorChannels,\n Options,\n SpecifiedColorChannels\n} from './typedef';\n\n/* constants */\nimport {\n FN_COLOR,\n FN_MIX,\n SYN_FN_CALC,\n SYN_FN_LIGHT_DARK,\n SYN_FN_REL,\n SYN_FN_VAR,\n VAL_COMP,\n VAL_SPEC\n} from './constant';\nconst NAMESPACE = 'resolve';\nconst RGB_TRANSPARENT = 'rgba(0, 0, 0, 0)';\n\n/* regexp */\nconst REG_FN_CALC = new RegExp(SYN_FN_CALC);\nconst REG_FN_LIGHT_DARK = new RegExp(SYN_FN_LIGHT_DARK);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/**\n * resolve color\n * @param value - CSS color value\n * @param [opt] - options\n * @returns resolved color\n */\nexport const resolveColor = (\n value: string,\n opt: Options = {}\n): string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const {\n colorScheme = 'normal',\n currentColor = '',\n format = VAL_COMP,\n nullable = false\n } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'resolve',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n return cachedResult.item as string;\n }\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n setCache(cacheKey, value);\n return value;\n }\n const resolvedValue = resolveVar(value, opt);\n if (resolvedValue instanceof NullObject) {\n switch (format) {\n case 'hex':\n case 'hexAlpha': {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n default: {\n if (nullable) {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n const res = RGB_TRANSPARENT;\n setCache(cacheKey, res);\n return res;\n }\n }\n } else {\n value = resolvedValue;\n }\n }\n if (opt.format !== format) {\n opt.format = format;\n }\n value = value.toLowerCase();\n if (REG_FN_LIGHT_DARK.test(value) && value.endsWith(')')) {\n const colorParts = value.replace(REG_FN_LIGHT_DARK, '').replace(/\\)$/, '');\n const [light = '', dark = ''] = splitValue(colorParts, {\n delimiter: ','\n });\n if (light && dark) {\n if (format === VAL_SPEC) {\n const lightColor = resolveColor(light, opt);\n const darkColor = resolveColor(dark, opt);\n let res;\n if (lightColor && darkColor) {\n res = `light-dark(${lightColor}, ${darkColor})`;\n } else {\n res = '';\n }\n setCache(cacheKey, res);\n return res;\n }\n let resolvedValue;\n if (colorScheme === 'dark') {\n resolvedValue = resolveColor(dark, opt);\n } else {\n resolvedValue = resolveColor(light, opt);\n }\n let res;\n if (resolvedValue instanceof NullObject) {\n if (nullable) {\n res = resolvedValue;\n } else {\n res = RGB_TRANSPARENT;\n }\n } else {\n res = resolvedValue;\n }\n setCache(cacheKey, res);\n return res;\n }\n // invalid value\n switch (format) {\n case VAL_SPEC: {\n setCache(cacheKey, '');\n return '';\n }\n case 'hex':\n case 'hexAlpha': {\n setCache(cacheKey, null);\n return new NullObject();\n }\n case VAL_COMP:\n default: {\n const res = RGB_TRANSPARENT;\n setCache(cacheKey, res);\n return res;\n }\n }\n }\n if (REG_FN_REL.test(value)) {\n const resolvedValue = resolveRelativeColor(value, opt);\n if (format === VAL_COMP) {\n let res;\n if (resolvedValue instanceof NullObject) {\n if (nullable) {\n res = resolvedValue;\n } else {\n res = RGB_TRANSPARENT;\n }\n } else {\n res = resolvedValue;\n }\n setCache(cacheKey, res);\n return res;\n }\n if (format === VAL_SPEC) {\n let res = '';\n if (resolvedValue instanceof NullObject) {\n res = '';\n } else {\n res = resolvedValue;\n }\n setCache(cacheKey, res);\n return res;\n }\n if (resolvedValue instanceof NullObject) {\n value = '';\n } else {\n value = resolvedValue;\n }\n }\n if (REG_FN_CALC.test(value)) {\n value = cssCalc(value, opt);\n }\n let cs = '';\n let r = NaN;\n let g = NaN;\n let b = NaN;\n let alpha = NaN;\n if (value === 'transparent') {\n switch (format) {\n case VAL_SPEC: {\n setCache(cacheKey, value);\n return value;\n }\n case 'hex': {\n setCache(cacheKey, null);\n return new NullObject();\n }\n case 'hexAlpha': {\n const res = '#00000000';\n setCache(cacheKey, res);\n return res;\n }\n case VAL_COMP:\n default: {\n const res = RGB_TRANSPARENT;\n setCache(cacheKey, res);\n return res;\n }\n }\n } else if (value === 'currentcolor') {\n if (format === VAL_SPEC) {\n setCache(cacheKey, value);\n return value;\n }\n if (currentColor) {\n let resolvedValue;\n if (currentColor.startsWith(FN_MIX)) {\n resolvedValue = resolveColorMix(currentColor, opt);\n } else if (currentColor.startsWith(FN_COLOR)) {\n resolvedValue = resolveColorFunc(currentColor, opt);\n } else {\n resolvedValue = resolveColorValue(currentColor, opt);\n }\n if (resolvedValue instanceof NullObject) {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n [cs, r, g, b, alpha] = resolvedValue as ComputedColorChannels;\n } else if (format === VAL_COMP) {\n const res = RGB_TRANSPARENT;\n setCache(cacheKey, res);\n return res;\n }\n } else if (format === VAL_SPEC) {\n if (value.startsWith(FN_MIX)) {\n const res = resolveColorMix(value, opt) as string;\n setCache(cacheKey, res);\n return res;\n } else if (value.startsWith(FN_COLOR)) {\n const [scs, rr, gg, bb, aa] = resolveColorFunc(\n value,\n opt\n ) as SpecifiedColorChannels;\n let res = '';\n if (aa === 1) {\n res = `color(${scs} ${rr} ${gg} ${bb})`;\n } else {\n res = `color(${scs} ${rr} ${gg} ${bb} / ${aa})`;\n }\n setCache(cacheKey, res);\n return res;\n } else {\n const rgb = resolveColorValue(value, opt);\n if (isString(rgb)) {\n setCache(cacheKey, rgb);\n return rgb;\n }\n const [scs, rr, gg, bb, aa] = rgb as SpecifiedColorChannels;\n let res = '';\n if (scs === 'rgb') {\n if (aa === 1) {\n res = `${scs}(${rr}, ${gg}, ${bb})`;\n } else {\n res = `${scs}a(${rr}, ${gg}, ${bb}, ${aa})`;\n }\n } else if (aa === 1) {\n res = `${scs}(${rr} ${gg} ${bb})`;\n } else {\n res = `${scs}(${rr} ${gg} ${bb} / ${aa})`;\n }\n setCache(cacheKey, res);\n return res;\n }\n } else if (value.startsWith(FN_MIX)) {\n if (/currentcolor/.test(value)) {\n if (currentColor) {\n value = value.replace(/currentcolor/g, currentColor);\n }\n }\n if (/transparent/.test(value)) {\n value = value.replace(/transparent/g, RGB_TRANSPARENT);\n }\n const resolvedValue = resolveColorMix(value, opt);\n if (resolvedValue instanceof NullObject) {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n [cs, r, g, b, alpha] = resolvedValue as ComputedColorChannels;\n } else if (value.startsWith(FN_COLOR)) {\n const resolvedValue = resolveColorFunc(value, opt);\n if (resolvedValue instanceof NullObject) {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n [cs, r, g, b, alpha] = resolvedValue as ComputedColorChannels;\n } else if (value) {\n const resolvedValue = resolveColorValue(value, opt);\n if (resolvedValue instanceof NullObject) {\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n [cs, r, g, b, alpha] = resolvedValue as ComputedColorChannels;\n }\n let res = '';\n switch (format) {\n case 'hex': {\n if (\n Number.isNaN(r) ||\n Number.isNaN(g) ||\n Number.isNaN(b) ||\n Number.isNaN(alpha) ||\n alpha === 0\n ) {\n setCache(cacheKey, null);\n return new NullObject();\n }\n res = convertRgbToHex([r, g, b, 1]);\n break;\n }\n case 'hexAlpha': {\n if (\n Number.isNaN(r) ||\n Number.isNaN(g) ||\n Number.isNaN(b) ||\n Number.isNaN(alpha)\n ) {\n setCache(cacheKey, null);\n return new NullObject();\n }\n res = convertRgbToHex([r, g, b, alpha]);\n break;\n }\n case VAL_COMP:\n default: {\n switch (cs) {\n case 'rgb': {\n if (alpha === 1) {\n res = `${cs}(${r}, ${g}, ${b})`;\n } else {\n res = `${cs}a(${r}, ${g}, ${b}, ${alpha})`;\n }\n break;\n }\n case 'lab':\n case 'lch':\n case 'oklab':\n case 'oklch': {\n if (alpha === 1) {\n res = `${cs}(${r} ${g} ${b})`;\n } else {\n res = `${cs}(${r} ${g} ${b} / ${alpha})`;\n }\n break;\n }\n // color()\n default: {\n if (alpha === 1) {\n res = `color(${cs} ${r} ${g} ${b})`;\n } else {\n res = `color(${cs} ${r} ${g} ${b} / ${alpha})`;\n }\n }\n }\n }\n }\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * resolve CSS color\n * @param value\n * - CSS color value\n * - system colors are not supported\n * @param [opt] - options\n * @param [opt.currentColor]\n * - color to use for `currentcolor` keyword\n * - if omitted, it will be treated as a missing color\n * i.e. `rgb(none none none / none)`\n * @param [opt.customProperty]\n * - custom properties\n * - pair of `--` prefixed property name and value,\n * e.g. `customProperty: { '--some-color': '#0000ff' }`\n * - and/or `callback` function to get the value of the custom property,\n * e.g. `customProperty: { callback: someDeclaration.getPropertyValue }`\n * @param [opt.dimension]\n * - dimension, convert relative length to pixels\n * - pair of unit and it's value as a number in pixels,\n * e.g. `dimension: { em: 12, rem: 16, vw: 10.26 }`\n * - and/or `callback` function to get the value as a number in pixels,\n * e.g. `dimension: { callback: convertUnitToPixel }`\n * @param [opt.format]\n * - output format, one of below\n * - `computedValue` (default), [computed value][139] of the color\n * - `specifiedValue`, [specified value][140] of the color\n * - `hex`, hex color notation, i.e. `rrggbb`\n * - `hexAlpha`, hex color notation with alpha channel, i.e. `#rrggbbaa`\n * @returns\n * - one of rgba?(), #rrggbb(aa)?, color-name, '(empty-string)',\n * color(color-space r g b / alpha), color(color-space x y z / alpha),\n * lab(l a b / alpha), lch(l c h / alpha), oklab(l a b / alpha),\n * oklch(l c h / alpha), null\n * - in `computedValue`, values are numbers, however `rgb()` values are\n * integers\n * - in `specifiedValue`, returns `empty string` for unknown and/or invalid\n * color\n * - in `hex`, returns `null` for `transparent`, and also returns `null` if\n * any of `r`, `g`, `b`, `alpha` is not a number\n * - in `hexAlpha`, returns `#00000000` for `transparent`,\n * however returns `null` if any of `r`, `g`, `b`, `alpha` is not a number\n */\nexport const resolve = (value: string, opt: Options = {}): string | null => {\n opt.nullable = false;\n const resolvedValue = resolveColor(value, opt);\n if (resolvedValue instanceof NullObject) {\n return null;\n }\n return resolvedValue as string;\n};\n","/**\n * util\n */\n\nimport { TokenType, tokenize } from '@csstools/css-tokenizer';\nimport { CacheItem, createCacheKey, getCache, setCache } from './cache';\nimport { isString } from './common';\nimport { resolveColor } from './resolve';\nimport { Options } from './typedef';\n\n/* constants */\nimport { NAMED_COLORS } from './color';\nimport { SYN_COLOR_TYPE, SYN_MIX, VAL_SPEC } from './constant';\nconst {\n CloseParen: PAREN_CLOSE,\n Comma: COMMA,\n Comment: COMMENT,\n Delim: DELIM,\n EOF,\n Function: FUNC,\n Ident: IDENT,\n OpenParen: PAREN_OPEN,\n Whitespace: W_SPACE\n} = TokenType;\nconst NAMESPACE = 'util';\n\n/* numeric constants */\nconst DEC = 10;\nconst HEX = 16;\nconst DEG = 360;\nconst DEG_HALF = 180;\n\n/* regexp */\nconst REG_COLOR = new RegExp(`^(?:${SYN_COLOR_TYPE})$`);\nconst REG_FN_COLOR =\n /^(?:(?:ok)?l(?:ab|ch)|color(?:-mix)?|hsla?|hwb|rgba?|var)\\(/;\nconst REG_MIX = new RegExp(SYN_MIX);\n\n/**\n * split value\n * NOTE: comments are stripped, it can be preserved if, in the options param,\n * `delimiter` is either ',' or '/' and with `preserveComment` set to `true`\n * @param value - CSS value\n * @param [opt] - options\n * @returns array of values\n */\nexport const splitValue = (value: string, opt: Options = {}): string[] => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { delimiter = ' ', preserveComment = false } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'splitValue',\n value\n },\n {\n delimiter,\n preserveComment\n }\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as string[];\n }\n let regDelimiter;\n if (delimiter === ',') {\n regDelimiter = /^,$/;\n } else if (delimiter === '/') {\n regDelimiter = /^\\/$/;\n } else {\n regDelimiter = /^\\s+$/;\n }\n const tokens = tokenize({ css: value });\n let nest = 0;\n let str = '';\n const res: string[] = [];\n while (tokens.length) {\n const [type, value] = tokens.shift() as [TokenType, string];\n switch (type) {\n case COMMA: {\n if (regDelimiter.test(value)) {\n if (nest === 0) {\n res.push(str.trim());\n str = '';\n } else {\n str += value;\n }\n } else {\n str += value;\n }\n break;\n }\n case DELIM: {\n if (regDelimiter.test(value)) {\n if (nest === 0) {\n res.push(str.trim());\n str = '';\n } else {\n str += value;\n }\n } else {\n str += value;\n }\n break;\n }\n case COMMENT: {\n if (preserveComment && (delimiter === ',' || delimiter === '/')) {\n str += value;\n }\n break;\n }\n case FUNC:\n case PAREN_OPEN: {\n str += value;\n nest++;\n break;\n }\n case PAREN_CLOSE: {\n str += value;\n nest--;\n break;\n }\n case W_SPACE: {\n if (regDelimiter.test(value)) {\n if (nest === 0) {\n if (str) {\n res.push(str.trim());\n str = '';\n }\n } else {\n str += ' ';\n }\n } else if (!str.endsWith(' ')) {\n str += ' ';\n }\n break;\n }\n default: {\n if (type === EOF) {\n res.push(str.trim());\n str = '';\n } else {\n str += value;\n }\n }\n }\n }\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * extract dashed-ident tokens\n * @param value - CSS value\n * @returns array of dashed-ident tokens\n */\nexport const extractDashedIdent = (value: string): string[] => {\n if (isString(value)) {\n value = value.trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey({\n namespace: NAMESPACE,\n name: 'extractDashedIdent',\n value\n });\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as string[];\n }\n const tokens = tokenize({ css: value });\n const items = new Set();\n while (tokens.length) {\n const [type, value] = tokens.shift() as [TokenType, string];\n if (type === IDENT && value.startsWith('--')) {\n items.add(value);\n }\n }\n const res = [...items] as string[];\n setCache(cacheKey, res);\n return res;\n};\n\n/**\n * is color\n * @param value - CSS value\n * @param [opt] - options\n * @returns result\n */\nexport const isColor = (value: unknown, opt: Options = {}): boolean => {\n if (isString(value)) {\n value = value.toLowerCase().trim();\n if (value && isString(value)) {\n if (/^[a-z]+$/.test(value)) {\n if (\n /^(?:currentcolor|transparent)$/.test(value) ||\n Object.hasOwn(NAMED_COLORS, value)\n ) {\n return true;\n }\n } else if (REG_COLOR.test(value) || REG_MIX.test(value)) {\n return true;\n } else if (REG_FN_COLOR.test(value)) {\n opt.nullable = true;\n if (!opt.format) {\n opt.format = VAL_SPEC;\n }\n const resolvedValue = resolveColor(value, opt);\n if (resolvedValue) {\n return true;\n }\n }\n }\n }\n return false;\n};\n\n/**\n * value to JSON string\n * @param value - CSS value\n * @param [func] - stringify function\n * @returns stringified value in JSON notation\n */\nexport const valueToJsonString = (\n value: unknown,\n func: boolean = false\n): string => {\n if (typeof value === 'undefined') {\n return '';\n }\n const res = JSON.stringify(value, (_key, val) => {\n let replacedValue;\n if (typeof val === 'undefined') {\n replacedValue = null;\n } else if (typeof val === 'function') {\n if (func) {\n replacedValue = val.toString().replace(/\\s/g, '').substring(0, HEX);\n } else {\n replacedValue = val.name;\n }\n } else if (val instanceof Map || val instanceof Set) {\n replacedValue = [...val];\n } else if (typeof val === 'bigint') {\n replacedValue = val.toString();\n } else {\n replacedValue = val;\n }\n return replacedValue;\n });\n return res;\n};\n\n/**\n * round to specified precision\n * @param value - numeric value\n * @param bit - minimum bits\n * @returns rounded value\n */\nexport const roundToPrecision = (value: number, bit: number = 0): number => {\n if (!Number.isFinite(value)) {\n throw new TypeError(`${value} is not a finite number.`);\n }\n if (!Number.isFinite(bit)) {\n throw new TypeError(`${bit} is not a finite number.`);\n } else if (bit < 0 || bit > HEX) {\n throw new RangeError(`${bit} is not between 0 and ${HEX}.`);\n }\n if (bit === 0) {\n return Math.round(value);\n }\n let val;\n if (bit === HEX) {\n val = value.toPrecision(6);\n } else if (bit < DEC) {\n val = value.toPrecision(4);\n } else {\n val = value.toPrecision(5);\n }\n return parseFloat(val);\n};\n\n/**\n * interpolate hue\n * @param hueA - hue value\n * @param hueB - hue value\n * @param arc - shorter | longer | increasing | decreasing\n * @returns result - [hueA, hueB]\n */\nexport const interpolateHue = (\n hueA: number,\n hueB: number,\n arc: string = 'shorter'\n): [number, number] => {\n if (!Number.isFinite(hueA)) {\n throw new TypeError(`${hueA} is not a finite number.`);\n }\n if (!Number.isFinite(hueB)) {\n throw new TypeError(`${hueB} is not a finite number.`);\n }\n switch (arc) {\n case 'decreasing': {\n if (hueB > hueA) {\n hueA += DEG;\n }\n break;\n }\n case 'increasing': {\n if (hueB < hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'longer': {\n if (hueB > hueA && hueB < hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB > hueA + DEG_HALF * -1 && hueB <= hueA) {\n hueB += DEG;\n }\n break;\n }\n case 'shorter':\n default: {\n if (hueB > hueA + DEG_HALF) {\n hueA += DEG;\n } else if (hueB < hueA + DEG_HALF * -1) {\n hueB += DEG;\n }\n }\n }\n return [hueA, hueB];\n};\n","/**\n * cache\n */\n\nimport { LRUCache } from 'lru-cache';\nimport { Options } from './typedef';\nimport { valueToJsonString } from './util';\n\n/* numeric constants */\nconst MAX_CACHE = 4096;\n\n/**\n * CacheItem\n */\nexport class CacheItem {\n /* private */\n #isNull: boolean;\n #item: unknown;\n\n /**\n * constructor\n */\n constructor(item: unknown, isNull: boolean = false) {\n this.#item = item;\n this.#isNull = !!isNull;\n }\n\n get item() {\n return this.#item;\n }\n\n get isNull() {\n return this.#isNull;\n }\n}\n\n/**\n * NullObject\n */\nexport class NullObject extends CacheItem {\n /**\n * constructor\n */\n constructor() {\n super(Symbol('null'), true);\n }\n}\n\n/*\n * lru cache\n */\nexport const lruCache = new LRUCache({\n max: MAX_CACHE\n});\n\n/**\n * set cache\n * @param key - cache key\n * @param value - value to cache\n * @returns void\n */\nexport const setCache = (key: string, value: unknown): void => {\n if (key) {\n if (value === null) {\n lruCache.set(key, new NullObject());\n } else if (value instanceof CacheItem) {\n lruCache.set(key, value);\n } else {\n lruCache.set(key, new CacheItem(value));\n }\n }\n};\n\n/**\n * get cache\n * @param key - cache key\n * @returns cached item or false otherwise\n */\nexport const getCache = (key: string): CacheItem | boolean => {\n if (key && lruCache.has(key)) {\n const item = lruCache.get(key);\n if (item instanceof CacheItem) {\n return item;\n }\n // delete unexpected cached item\n lruCache.delete(key);\n return false;\n }\n return false;\n};\n\n/**\n * create cache key\n * @param keyData - key data\n * @param [opt] - options\n * @returns cache key\n */\nexport const createCacheKey = (\n keyData: Record<string, string>,\n opt: Options = {}\n): string => {\n const { customProperty = {}, dimension = {} } = opt;\n let cacheKey = '';\n if (\n keyData &&\n Object.keys(keyData).length &&\n typeof customProperty.callback !== 'function' &&\n typeof dimension.callback !== 'function'\n ) {\n keyData.opt = valueToJsonString(opt);\n cacheKey = valueToJsonString(keyData);\n }\n return cacheKey;\n};\n","/**\n * css-calc\n */\n\nimport { calc } from '@csstools/css-calc';\nimport { CSSToken, TokenType, tokenize } from '@csstools/css-tokenizer';\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport { isString, isStringOrNumber } from './common';\nimport { resolveVar } from './css-var';\nimport { roundToPrecision } from './util';\nimport { MatchedRegExp, Options } from './typedef';\n\n/* constants */\nimport {\n ANGLE,\n LENGTH,\n NUM,\n SYN_FN_CALC,\n SYN_FN_MATH_START,\n SYN_FN_VAR,\n SYN_FN_VAR_START,\n VAL_SPEC\n} from './constant';\nconst {\n CloseParen: PAREN_CLOSE,\n Comment: COMMENT,\n Dimension: DIM,\n EOF,\n Function: FUNC,\n OpenParen: PAREN_OPEN,\n Whitespace: W_SPACE\n} = TokenType;\nconst NAMESPACE = 'css-calc';\n\n/* numeric constants */\nconst TRIA = 3;\nconst HEX = 16;\nconst MAX_PCT = 100;\n\n/* regexp */\nconst REG_FN_CALC = new RegExp(SYN_FN_CALC);\nconst REG_FN_CALC_NUM = new RegExp(`^calc\\\\((${NUM})\\\\)$`);\nconst REG_FN_MATH_START = new RegExp(SYN_FN_MATH_START);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\nconst REG_FN_VAR_START = new RegExp(SYN_FN_VAR_START);\nconst REG_OPERATOR = /\\s[*+/-]\\s/;\nconst REG_TYPE_DIM = new RegExp(`^(${NUM})(${ANGLE}|${LENGTH})$`);\nconst REG_TYPE_DIM_PCT = new RegExp(`^(${NUM})(${ANGLE}|${LENGTH}|%)$`);\nconst REG_TYPE_PCT = new RegExp(`^(${NUM})%$`);\n\n/**\n * Calclator\n */\nexport class Calculator {\n /* private */\n // number\n #hasNum: boolean;\n #numSum: number[];\n #numMul: number[];\n // percentage\n #hasPct: boolean;\n #pctSum: number[];\n #pctMul: number[];\n // dimension\n #hasDim: boolean;\n #dimSum: string[];\n #dimSub: string[];\n #dimMul: string[];\n #dimDiv: string[];\n // et cetra\n #hasEtc: boolean;\n #etcSum: string[];\n #etcSub: string[];\n #etcMul: string[];\n #etcDiv: string[];\n\n /**\n * constructor\n */\n constructor() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n get hasNum() {\n return this.#hasNum;\n }\n\n set hasNum(value: boolean) {\n this.#hasNum = !!value;\n }\n\n get numSum() {\n return this.#numSum;\n }\n\n get numMul() {\n return this.#numMul;\n }\n\n get hasPct() {\n return this.#hasPct;\n }\n\n set hasPct(value: boolean) {\n this.#hasPct = !!value;\n }\n\n get pctSum() {\n return this.#pctSum;\n }\n\n get pctMul() {\n return this.#pctMul;\n }\n\n get hasDim() {\n return this.#hasDim;\n }\n\n set hasDim(value: boolean) {\n this.#hasDim = !!value;\n }\n\n get dimSum() {\n return this.#dimSum;\n }\n\n get dimSub() {\n return this.#dimSub;\n }\n\n get dimMul() {\n return this.#dimMul;\n }\n\n get dimDiv() {\n return this.#dimDiv;\n }\n\n get hasEtc() {\n return this.#hasEtc;\n }\n\n set hasEtc(value: boolean) {\n this.#hasEtc = !!value;\n }\n\n get etcSum() {\n return this.#etcSum;\n }\n\n get etcSub() {\n return this.#etcSub;\n }\n\n get etcMul() {\n return this.#etcMul;\n }\n\n get etcDiv() {\n return this.#etcDiv;\n }\n\n /**\n * clear values\n * @returns void\n */\n clear() {\n // number\n this.#hasNum = false;\n this.#numSum = [];\n this.#numMul = [];\n // percentage\n this.#hasPct = false;\n this.#pctSum = [];\n this.#pctMul = [];\n // dimension\n this.#hasDim = false;\n this.#dimSum = [];\n this.#dimSub = [];\n this.#dimMul = [];\n this.#dimDiv = [];\n // et cetra\n this.#hasEtc = false;\n this.#etcSum = [];\n this.#etcSub = [];\n this.#etcMul = [];\n this.#etcDiv = [];\n }\n\n /**\n * sort values\n * @param values - values\n * @returns sorted values\n */\n sort(values: string[] = []): string[] {\n const arr = [...values];\n if (arr.length > 1) {\n arr.sort((a, b) => {\n let res;\n if (REG_TYPE_DIM_PCT.test(a) && REG_TYPE_DIM_PCT.test(b)) {\n const [, valA, unitA] = a.match(REG_TYPE_DIM_PCT) as MatchedRegExp;\n const [, valB, unitB] = b.match(REG_TYPE_DIM_PCT) as MatchedRegExp;\n if (unitA === unitB) {\n if (Number(valA) === Number(valB)) {\n res = 0;\n } else if (Number(valA) > Number(valB)) {\n res = 1;\n } else {\n res = -1;\n }\n } else if (unitA > unitB) {\n res = 1;\n } else {\n res = -1;\n }\n } else {\n if (a === b) {\n res = 0;\n } else if (a > b) {\n res = 1;\n } else {\n res = -1;\n }\n }\n return res;\n });\n }\n return arr;\n }\n\n /**\n * multiply values\n * @returns resolved value\n */\n multiply(): string {\n const value = [];\n let num;\n if (this.#hasNum) {\n num = 1;\n for (const i of this.#numMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (!this.#hasPct && !this.#hasDim && !this.hasEtc) {\n if (Number.isFinite(num)) {\n num = roundToPrecision(num, HEX);\n }\n value.push(num);\n }\n }\n if (this.#hasPct) {\n if (typeof num !== 'number') {\n num = 1;\n }\n for (const i of this.#pctMul) {\n num *= i;\n if (num === 0 || !Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${roundToPrecision(num, HEX)}%`;\n }\n if (!this.#hasDim && !this.hasEtc) {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim = '';\n let mul = '';\n let div = '';\n if (this.#dimMul.length) {\n if (this.#dimMul.length === 1) {\n [mul] = this.#dimMul as [string];\n } else {\n mul = `${this.sort(this.#dimMul).join(' * ')}`;\n }\n }\n if (this.#dimDiv.length) {\n if (this.#dimDiv.length === 1) {\n [div] = this.#dimDiv as [string];\n } else {\n div = `${this.sort(this.#dimDiv).join(' * ')}`;\n }\n }\n if (Number.isFinite(num)) {\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${num} * ${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} * ${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${num} * ${mul})`, {\n toCanonicalUnits: true\n });\n }\n } else if (div.includes('*')) {\n dim = calc(`calc(${num} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${num} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n value.push(dim.replace(/^calc/, ''));\n } else {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n if (mul) {\n if (div) {\n if (div.includes('*')) {\n dim = calc(`calc(${mul} / (${div}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${mul} / ${div})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${mul})`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('*', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n } else {\n dim = calc(`calc(${div})`, {\n toCanonicalUnits: true\n });\n if (value.length) {\n value.push('/', dim.replace(/^calc/, ''));\n } else {\n value.push('1', '/', dim.replace(/^calc/, ''));\n }\n }\n }\n }\n if (this.#hasEtc) {\n if (this.#etcMul.length) {\n if (!value.length && num !== undefined) {\n value.push(num);\n }\n const mul = this.sort(this.#etcMul).join(' * ');\n if (value.length) {\n value.push(`* ${mul}`);\n } else {\n value.push(`${mul}`);\n }\n }\n if (this.#etcDiv.length) {\n const div = this.sort(this.#etcDiv).join(' * ');\n if (div.includes('*')) {\n if (value.length) {\n value.push(`/ (${div})`);\n } else {\n value.push(`1 / (${div})`);\n }\n } else if (value.length) {\n value.push(`/ ${div}`);\n } else {\n value.push(`1 / ${div}`);\n }\n }\n }\n if (value.length) {\n return value.join(' ');\n }\n return '';\n }\n\n /**\n * sum values\n * @returns resolved value\n */\n sum(): string {\n const value = [];\n if (this.#hasNum) {\n let num = 0;\n for (const i of this.#numSum) {\n num += i;\n if (!Number.isFinite(num) || Number.isNaN(num)) {\n break;\n }\n }\n value.push(num);\n }\n if (this.#hasPct) {\n let num: number | string = 0;\n for (const i of this.#pctSum) {\n num += i;\n if (!Number.isFinite(num)) {\n break;\n }\n }\n if (Number.isFinite(num)) {\n num = `${num}%`;\n }\n if (value.length) {\n value.push(`+ ${num}`);\n } else {\n value.push(num);\n }\n }\n if (this.#hasDim) {\n let dim, sum, sub;\n if (this.#dimSum.length) {\n sum = this.sort(this.#dimSum).join(' + ');\n }\n if (this.#dimSub.length) {\n sub = this.sort(this.#dimSub).join(' + ');\n }\n if (sum) {\n if (sub) {\n if (sub.includes('-')) {\n dim = calc(`calc(${sum} - (${sub}))`, {\n toCanonicalUnits: true\n });\n } else {\n dim = calc(`calc(${sum} - ${sub})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(${sum})`, {\n toCanonicalUnits: true\n });\n }\n } else {\n dim = calc(`calc(-1 * (${sub}))`, {\n toCanonicalUnits: true\n });\n }\n if (value.length) {\n value.push('+', dim.replace(/^calc/, ''));\n } else {\n value.push(dim.replace(/^calc/, ''));\n }\n }\n if (this.#hasEtc) {\n if (this.#etcSum.length) {\n const sum = this.sort(this.#etcSum)\n .map(item => {\n let res;\n if (\n REG_OPERATOR.test(item) &&\n !item.startsWith('(') &&\n !item.endsWith(')')\n ) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n })\n .join(' + ');\n if (value.length) {\n if (this.#etcSum.length > 1) {\n value.push(`+ (${sum})`);\n } else {\n value.push(`+ ${sum}`);\n }\n } else {\n value.push(`${sum}`);\n }\n }\n if (this.#etcSub.length) {\n const sub = this.sort(this.#etcSub)\n .map(item => {\n let res;\n if (\n REG_OPERATOR.test(item) &&\n !item.startsWith('(') &&\n !item.endsWith(')')\n ) {\n res = `(${item})`;\n } else {\n res = item;\n }\n return res;\n })\n .join(' + ');\n if (value.length) {\n if (this.#etcSub.length > 1) {\n value.push(`- (${sub})`);\n } else {\n value.push(`- ${sub}`);\n }\n } else if (this.#etcSub.length > 1) {\n value.push(`-1 * (${sub})`);\n } else {\n value.push(`-1 * ${sub}`);\n }\n }\n }\n if (value.length) {\n return value.join(' ');\n }\n return '';\n }\n}\n\n/**\n * sort calc values\n * @param values - values to sort\n * @param [finalize] - finalize values\n * @returns sorted values\n */\nexport const sortCalcValues = (\n values: (number | string)[] = [],\n finalize: boolean = false\n): string => {\n if (values.length < TRIA) {\n throw new Error(`Unexpected array length ${values.length}.`);\n }\n const start = values.shift();\n if (!isString(start) || !start.endsWith('(')) {\n throw new Error(`Unexpected token ${start}.`);\n }\n const end = values.pop();\n if (end !== ')') {\n throw new Error(`Unexpected token ${end}.`);\n }\n if (values.length === 1) {\n const [value] = values;\n if (!isStringOrNumber(value)) {\n throw new Error(`Unexpected token ${value}.`);\n }\n return `${start}${value}${end}`;\n }\n const sortedValues = [];\n const cal = new Calculator();\n let operator: string = '';\n const l = values.length;\n for (let i = 0; i < l; i++) {\n const value = values[i];\n if (!isStringOrNumber(value)) {\n throw new Error(`Unexpected token ${value}.`);\n }\n if (value === '*' || value === '/') {\n operator = value;\n } else if (value === '+' || value === '-') {\n const sortedValue = cal.multiply();\n if (sortedValue) {\n sortedValues.push(sortedValue, value);\n }\n cal.clear();\n operator = '';\n } else {\n const numValue = Number(value);\n const strValue = `${value}`;\n switch (operator) {\n case '/': {\n if (Number.isFinite(numValue)) {\n cal.hasNum = true;\n cal.numMul.push(1 / numValue);\n } else if (REG_TYPE_PCT.test(strValue)) {\n const [, val] = strValue.match(REG_TYPE_PCT) as MatchedRegExp;\n cal.hasPct = true;\n cal.pctMul.push((MAX_PCT * MAX_PCT) / Number(val));\n } else if (REG_TYPE_DIM.test(strValue)) {\n cal.hasDim = true;\n cal.dimDiv.push(strValue);\n } else {\n cal.hasEtc = true;\n cal.etcDiv.push(strValue);\n }\n break;\n }\n case '*':\n default: {\n if (Number.isFinite(numValue)) {\n cal.hasNum = true;\n cal.numMul.push(numValue);\n } else if (REG_TYPE_PCT.test(strValue)) {\n const [, val] = strValue.match(REG_TYPE_PCT) as MatchedRegExp;\n cal.hasPct = true;\n cal.pctMul.push(Number(val));\n } else if (REG_TYPE_DIM.test(strValue)) {\n cal.hasDim = true;\n cal.dimMul.push(strValue);\n } else {\n cal.hasEtc = true;\n cal.etcMul.push(strValue);\n }\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.multiply();\n if (sortedValue) {\n sortedValues.push(sortedValue);\n }\n cal.clear();\n operator = '';\n }\n }\n let resolvedValue = '';\n if (finalize && (sortedValues.includes('+') || sortedValues.includes('-'))) {\n const finalizedValues = [];\n cal.clear();\n operator = '';\n const l = sortedValues.length;\n for (let i = 0; i < l; i++) {\n const value = sortedValues[i];\n if (isStringOrNumber(value)) {\n if (value === '+' || value === '-') {\n operator = value;\n } else {\n const numValue = Number(value);\n const strValue = `${value}`;\n switch (operator) {\n case '-': {\n if (Number.isFinite(numValue)) {\n cal.hasNum = true;\n cal.numSum.push(-1 * numValue);\n } else if (REG_TYPE_PCT.test(strValue)) {\n const [, val] = strValue.match(REG_TYPE_PCT) as MatchedRegExp;\n cal.hasPct = true;\n cal.pctSum.push(-1 * Number(val));\n } else if (REG_TYPE_DIM.test(strValue)) {\n cal.hasDim = true;\n cal.dimSub.push(strValue);\n } else {\n cal.hasEtc = true;\n cal.etcSub.push(strValue);\n }\n break;\n }\n case '+':\n default: {\n if (Number.isFinite(numValue)) {\n cal.hasNum = true;\n cal.numSum.push(numValue);\n } else if (REG_TYPE_PCT.test(strValue)) {\n const [, val] = strValue.match(REG_TYPE_PCT) as MatchedRegExp;\n cal.hasPct = true;\n cal.pctSum.push(Number(val));\n } else if (REG_TYPE_DIM.test(strValue)) {\n cal.hasDim = true;\n cal.dimSum.push(strValue);\n } else {\n cal.hasEtc = true;\n cal.etcSum.push(strValue);\n }\n }\n }\n }\n }\n if (i === l - 1) {\n const sortedValue = cal.sum();\n if (sortedValue) {\n finalizedValues.push(sortedValue);\n }\n cal.clear();\n operator = '';\n }\n }\n resolvedValue = finalizedValues.join(' ').replace(/\\+\\s-/g, '- ');\n } else {\n resolvedValue = sortedValues.join(' ').replace(/\\+\\s-/g, '- ');\n }\n if (\n resolvedValue.startsWith('(') &&\n resolvedValue.endsWith(')') &&\n resolvedValue.lastIndexOf('(') === 0 &&\n resolvedValue.indexOf(')') === resolvedValue.length - 1\n ) {\n resolvedValue = resolvedValue.replace(/^\\(/, '').replace(/\\)$/, '');\n }\n return `${start}${resolvedValue}${end}`;\n};\n\n/**\n * serialize calc\n * @param value - CSS value\n * @param [opt] - options\n * @returns serialized value\n */\nexport const serializeCalc = (value: string, opt: Options = {}): string => {\n const { format = '' } = opt;\n if (isString(value)) {\n if (!REG_FN_VAR_START.test(value) || format !== VAL_SPEC) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'serializeCalc',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as string;\n }\n const items: string[] = tokenize({ css: value })\n .map((token: CSSToken): string => {\n const [type, value] = token as [TokenType, string];\n let res = '';\n if (type !== W_SPACE && type !== COMMENT) {\n res = value;\n }\n return res;\n })\n .filter(v => v);\n let startIndex = items.findLastIndex((item: string) => /\\($/.test(item));\n while (startIndex) {\n const endIndex = items.findIndex((item: unknown, index: number) => {\n return item === ')' && index > startIndex;\n });\n const slicedValues: string[] = items.slice(startIndex, endIndex + 1);\n let serializedValue: string = sortCalcValues(slicedValues);\n if (REG_FN_VAR_START.test(serializedValue)) {\n serializedValue = calc(serializedValue, {\n toCanonicalUnits: true\n });\n }\n items.splice(startIndex, endIndex - startIndex + 1, serializedValue);\n startIndex = items.findLastIndex((item: string) => /\\($/.test(item));\n }\n const serializedCalc = sortCalcValues(items, true);\n setCache(cacheKey, serializedCalc);\n return serializedCalc;\n};\n\n/**\n * resolve dimension\n * @param token - CSS token\n * @param [opt] - options\n * @returns resolved value\n */\nexport const resolveDimension = (\n token: CSSToken,\n opt: Options = {}\n): string | NullObject => {\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [, , , , detail = {}] = token;\n const { unit, value } = detail as {\n unit: string;\n value: number;\n };\n const { dimension = {} } = opt;\n if (unit === 'px') {\n return `${value}${unit}`;\n }\n const relativeValue = Number(value);\n if (unit && Number.isFinite(relativeValue)) {\n let pixelValue;\n if (Object.hasOwn(dimension, unit)) {\n pixelValue = dimension[unit];\n } else if (typeof dimension.callback === 'function') {\n pixelValue = dimension.callback(unit);\n }\n pixelValue = Number(pixelValue);\n if (Number.isFinite(pixelValue)) {\n return `${relativeValue * pixelValue}px`;\n }\n }\n return new NullObject();\n};\n\n/**\n * parse tokens\n * @param tokens - CSS tokens\n * @param [opt] - options\n * @returns parsed tokens\n */\nexport const parseTokens = (\n tokens: CSSToken[],\n opt: Options = {}\n): string[] => {\n if (!Array.isArray(tokens)) {\n throw new TypeError(`${tokens} is not an array.`);\n }\n const { format = '' } = opt;\n const mathFunc = new Set();\n let nest = 0;\n const res: string[] = [];\n while (tokens.length) {\n const token = tokens.shift();\n if (!Array.isArray(token)) {\n throw new TypeError(`${token} is not an array.`);\n }\n const [type = '', value = ''] = token as [TokenType, string];\n switch (type) {\n case DIM: {\n if (format === VAL_SPEC && !mathFunc.has(nest)) {\n res.push(value);\n } else {\n const resolvedValue = resolveDimension(token, opt);\n if (isString(resolvedValue)) {\n res.push(resolvedValue);\n } else {\n res.push(value);\n }\n }\n break;\n }\n case FUNC:\n case PAREN_OPEN: {\n res.push(value);\n nest++;\n if (REG_FN_MATH_START.test(value)) {\n mathFunc.add(nest);\n }\n break;\n }\n case PAREN_CLOSE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (lastValue === ' ') {\n res.splice(-1, 1, value);\n } else {\n res.push(value);\n }\n } else {\n res.push(value);\n }\n if (mathFunc.has(nest)) {\n mathFunc.delete(nest);\n }\n nest--;\n break;\n }\n case W_SPACE: {\n if (res.length) {\n const lastValue = res[res.length - 1];\n if (\n isString(lastValue) &&\n !lastValue.endsWith('(') &&\n lastValue !== ' '\n ) {\n res.push(value);\n }\n }\n break;\n }\n default: {\n if (type !== COMMENT && type !== EOF) {\n res.push(value);\n }\n }\n }\n }\n return res;\n};\n\n/**\n * CSS calc()\n * @param value - CSS value including calc()\n * @param [opt] - options\n * @returns resolved value\n */\nexport const cssCalc = (value: string, opt: Options = {}): string => {\n const { format = '' } = opt;\n if (isString(value)) {\n if (REG_FN_VAR.test(value)) {\n if (format === VAL_SPEC) {\n return value;\n } else {\n const resolvedValue = resolveVar(value, opt);\n if (isString(resolvedValue)) {\n return resolvedValue;\n } else {\n return '';\n }\n }\n } else if (!REG_FN_CALC.test(value)) {\n return value;\n }\n value = value.toLowerCase().trim();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'cssCalc',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as string;\n }\n const tokens = tokenize({ css: value });\n const values = parseTokens(tokens, opt);\n let resolvedValue: string = calc(values.join(''), {\n toCanonicalUnits: true\n });\n if (REG_FN_VAR_START.test(value)) {\n if (REG_TYPE_DIM_PCT.test(resolvedValue)) {\n const [, val, unit] = resolvedValue.match(\n REG_TYPE_DIM_PCT\n ) as MatchedRegExp;\n resolvedValue = `${roundToPrecision(Number(val), HEX)}${unit}`;\n }\n // wrap with `calc()`\n if (\n resolvedValue &&\n !REG_FN_VAR_START.test(resolvedValue) &&\n format === VAL_SPEC\n ) {\n resolvedValue = `calc(${resolvedValue})`;\n }\n }\n if (format === VAL_SPEC) {\n if (/\\s[-+*/]\\s/.test(resolvedValue) && !resolvedValue.includes('NaN')) {\n resolvedValue = serializeCalc(resolvedValue, opt);\n } else if (REG_FN_CALC_NUM.test(resolvedValue)) {\n const [, val] = resolvedValue.match(REG_FN_CALC_NUM) as MatchedRegExp;\n resolvedValue = `calc(${roundToPrecision(Number(val), HEX)})`;\n }\n }\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n};\n","/**\n * css-gradient\n */\n\nimport { CacheItem, createCacheKey, getCache, setCache } from './cache';\nimport { resolveColor } from './resolve';\nimport { isString } from './common';\nimport { MatchedRegExp, Options } from './typedef';\nimport { isColor, splitValue } from './util';\n\n/* constants */\nimport {\n ANGLE,\n CS_HUE,\n CS_RECT,\n LENGTH,\n NUM,\n NUM_POSITIVE,\n PCT,\n VAL_COMP,\n VAL_SPEC\n} from './constant';\nconst NAMESPACE = 'css-gradient';\nconst DIM_ANGLE = `${NUM}(?:${ANGLE})`;\nconst DIM_ANGLE_PCT = `${DIM_ANGLE}|${PCT}`;\nconst DIM_LEN = `${NUM}(?:${LENGTH})|0`;\nconst DIM_LEN_PCT = `${DIM_LEN}|${PCT}`;\nconst DIM_LEN_PCT_POSI = `${NUM_POSITIVE}(?:${LENGTH}|%)|0`;\nconst DIM_LEN_POSI = `${NUM_POSITIVE}(?:${LENGTH})|0`;\nconst CTR = 'center';\nconst L_R = 'left|right';\nconst T_B = 'top|bottom';\nconst S_E = 'start|end';\nconst AXIS_X = `${L_R}|x-(?:${S_E})`;\nconst AXIS_Y = `${T_B}|y-(?:${S_E})`;\nconst BLOCK = `block-(?:${S_E})`;\nconst INLINE = `inline-(?:${S_E})`;\nconst POS_1 = `${CTR}|${AXIS_X}|${AXIS_Y}|${BLOCK}|${INLINE}|${DIM_LEN_PCT}`;\nconst POS_2 = [\n `(?:${CTR}|${AXIS_X})\\\\s+(?:${CTR}|${AXIS_Y})`,\n `(?:${CTR}|${AXIS_Y})\\\\s+(?:${CTR}|${AXIS_X})`,\n `(?:${CTR}|${AXIS_X}|${DIM_LEN_PCT})\\\\s+(?:${CTR}|${AXIS_Y}|${DIM_LEN_PCT})`,\n `(?:${CTR}|${BLOCK})\\\\s+(?:${CTR}|${INLINE})`,\n `(?:${CTR}|${INLINE})\\\\s+(?:${CTR}|${BLOCK})`,\n `(?:${CTR}|${S_E})\\\\s+(?:${CTR}|${S_E})`\n].join('|');\nconst POS_4 = [\n `(?:${AXIS_X})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${AXIS_Y})\\\\s+(?:${DIM_LEN_PCT})`,\n `(?:${AXIS_Y})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${AXIS_X})\\\\s+(?:${DIM_LEN_PCT})`,\n `(?:${BLOCK})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${INLINE})\\\\s+(?:${DIM_LEN_PCT})`,\n `(?:${INLINE})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${BLOCK})\\\\s+(?:${DIM_LEN_PCT})`,\n `(?:${S_E})\\\\s+(?:${DIM_LEN_PCT})\\\\s+(?:${S_E})\\\\s+(?:${DIM_LEN_PCT})`\n].join('|');\nconst RAD_EXTENT = '(?:clos|farth)est-(?:corner|side)';\nconst RAD_SIZE = [\n `${RAD_EXTENT}(?:\\\\s+${RAD_EXTENT})?`,\n `${DIM_LEN_POSI}`,\n `(?:${DIM_LEN_PCT_POSI})\\\\s+(?:${DIM_LEN_PCT_POSI})`\n].join('|');\nconst RAD_SHAPE = 'circle|ellipse';\nconst FROM_ANGLE = `from\\\\s+${DIM_ANGLE}`;\nconst AT_POSITION = `at\\\\s+(?:${POS_1}|${POS_2}|${POS_4})`;\nconst TO_SIDE_CORNER = `to\\\\s+(?:(?:${L_R})(?:\\\\s(?:${T_B}))?|(?:${T_B})(?:\\\\s(?:${L_R}))?)`;\nconst IN_COLOR_SPACE = `in\\\\s+(?:${CS_RECT}|${CS_HUE})`;\n\n/* type definitions */\n/**\n * @type ColorStopList - list of color stops\n */\ntype ColorStopList = [string, string, ...string[]];\n\n/**\n * @typedef ValidateGradientLine - validate gradient line\n * @property line - gradient line\n * @property valid - result\n */\ninterface ValidateGradientLine {\n line: string;\n valid: boolean;\n}\n\n/**\n * @typedef ValidateColorStops - validate color stops\n * @property colorStops - list of color stops\n * @property valid - result\n */\ninterface ValidateColorStops {\n colorStops: string[];\n valid: boolean;\n}\n\n/**\n * @typedef Gradient - parsed CSS gradient\n * @property value - input value\n * @property type - gradient type\n * @property [gradientLine] - gradient line\n * @property colorStopList - list of color stops\n */\ninterface Gradient {\n value: string;\n type: string;\n gradientLine?: string;\n colorStopList: ColorStopList;\n}\n\n/* regexp */\nconst REG_GRAD = /^(?:repeating-)?(?:conic|linear|radial)-gradient\\(/;\nconst REG_GRAD_CAPT = /^((?:repeating-)?(?:conic|linear|radial)-gradient)\\(/;\n\n/**\n * get gradient type\n * @param value - gradient value\n * @returns gradient type\n */\nexport const getGradientType = (value: string): string => {\n if (isString(value)) {\n value = value.trim();\n if (REG_GRAD.test(value)) {\n const [, type] = value.match(REG_GRAD_CAPT) as MatchedRegExp;\n return type;\n }\n }\n return '';\n};\n\n/**\n * validate gradient line\n * @param value - gradient line value\n * @param type - gradient type\n * @returns result\n */\nexport const validateGradientLine = (\n value: string,\n type: string\n): ValidateGradientLine => {\n if (isString(value) && isString(type)) {\n value = value.trim();\n type = type.trim();\n let lineSyntax = '';\n const defaultValues = [];\n if (/^(?:repeating-)?linear-gradient$/.test(type)) {\n /*\n * <linear-gradient-line> = [\n * [ <angle> | to <side-or-corner> ] ||\n * <color-interpolation-method>\n * ]\n */\n lineSyntax = [\n `(?:${DIM_ANGLE}|${TO_SIDE_CORNER})(?:\\\\s+${IN_COLOR_SPACE})?`,\n `${IN_COLOR_SPACE}(?:\\\\s+(?:${DIM_ANGLE}|${TO_SIDE_CORNER}))?`\n ].join('|');\n defaultValues.push(/to\\s+bottom/);\n } else if (/^(?:repeating-)?radial-gradient$/.test(type)) {\n /*\n * <radial-gradient-line> = [\n * [ [ <radial-shape> || <radial-size> ]? [ at <position> ]? ] ||\n * <color-interpolation-method>]?\n */\n lineSyntax = [\n `(?:${RAD_SHAPE})(?:\\\\s+(?:${RAD_SIZE}))?(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n `(?:${RAD_SIZE})(?:\\\\s+(?:${RAD_SHAPE}))?(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n `${AT_POSITION}(?:\\\\s+${IN_COLOR_SPACE})?`,\n `${IN_COLOR_SPACE}(?:\\\\s+${RAD_SHAPE})(?:\\\\s+(?:${RAD_SIZE}))?(?:\\\\s+${AT_POSITION})?`,\n `${IN_COLOR_SPACE}(?:\\\\s+${RAD_SIZE})(?:\\\\s+(?:${RAD_SHAPE}))?(?:\\\\s+${AT_POSITION})?`,\n `${IN_COLOR_SPACE}(?:\\\\s+${AT_POSITION})?`\n ].join('|');\n defaultValues.push(/ellipse/, /farthest-corner/, /at\\s+center/);\n } else if (/^(?:repeating-)?conic-gradient$/.test(type)) {\n /*\n * <conic-gradient-line> = [\n * [ [ from <angle> ]? [ at <position> ]? ] ||\n * <color-interpolation-method>\n * ]\n */\n lineSyntax = [\n `${FROM_ANGLE}(?:\\\\s+${AT_POSITION})?(?:\\\\s+${IN_COLOR_SPACE})?`,\n `${AT_POSITION}(?:\\\\s+${IN_COLOR_SPACE})?`,\n `${IN_COLOR_SPACE}(?:\\\\s+${FROM_ANGLE})?(?:\\\\s+${AT_POSITION})?`\n ].join('|');\n defaultValues.push(/at\\s+center/);\n }\n if (lineSyntax) {\n const reg = new RegExp(`^(?:${lineSyntax})$`);\n const valid = reg.test(value);\n if (valid) {\n let line = value;\n for (const defaultValue of defaultValues) {\n line = line.replace(defaultValue, '');\n }\n line = line.replace(/\\s{2,}/g, ' ').trim();\n return {\n line,\n valid\n };\n }\n return {\n valid,\n line: value\n };\n }\n }\n return {\n line: value,\n valid: false\n };\n};\n\n/**\n * validate color stop list\n * @param list\n * @param type\n * @param [opt]\n * @returns result\n */\nexport const validateColorStopList = (\n list: string[],\n type: string,\n opt: Options = {}\n): ValidateColorStops => {\n if (Array.isArray(list) && list.length > 1) {\n const dimension = /^(?:repeating-)?conic-gradient$/.test(type)\n ? DIM_ANGLE_PCT\n : DIM_LEN_PCT;\n const regColorHint = new RegExp(`^(?:${dimension})$`);\n const regDimension = new RegExp(`(?:\\\\s+(?:${dimension})){1,2}$`);\n const valueTypes = [];\n const valueList = [];\n for (const item of list) {\n if (isString(item)) {\n if (regColorHint.test(item)) {\n valueTypes.push('hint');\n valueList.push(item);\n } else {\n const itemColor = item.replace(regDimension, '');\n if (isColor(itemColor, { format: VAL_SPEC })) {\n const resolvedColor = resolveColor(itemColor, opt) as string;\n valueTypes.push('color');\n valueList.push(item.replace(itemColor, resolvedColor));\n } else {\n return {\n colorStops: list,\n valid: false\n };\n }\n }\n }\n }\n const valid = /^color(?:,(?:hint,)?color)+$/.test(valueTypes.join(','));\n return {\n valid,\n colorStops: valueList\n };\n }\n return {\n colorStops: list,\n valid: false\n };\n};\n\n/**\n * parse CSS gradient\n * @param value - gradient value\n * @param [opt] - options\n * @returns parsed result\n */\nexport const parseGradient = (\n value: string,\n opt: Options = {}\n): Gradient | null => {\n if (isString(value)) {\n value = value.trim();\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'parseGradient',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return null;\n }\n return cachedResult.item as Gradient;\n }\n const type = getGradientType(value);\n const gradValue = value.replace(REG_GRAD, '').replace(/\\)$/, '');\n if (type && gradValue) {\n const [lineOrColorStop = '', ...itemList] = splitValue(gradValue, {\n delimiter: ','\n });\n const dimension = /^(?:repeating-)?conic-gradient$/.test(type)\n ? DIM_ANGLE_PCT\n : DIM_LEN_PCT;\n const regDimension = new RegExp(`(?:\\\\s+(?:${dimension})){1,2}$`);\n let colorStop = '';\n if (regDimension.test(lineOrColorStop)) {\n const itemColor = lineOrColorStop.replace(regDimension, '');\n if (isColor(itemColor, { format: VAL_SPEC })) {\n const resolvedColor = resolveColor(itemColor, opt) as string;\n colorStop = lineOrColorStop.replace(itemColor, resolvedColor);\n }\n } else if (isColor(lineOrColorStop, { format: VAL_SPEC })) {\n colorStop = resolveColor(lineOrColorStop, opt) as string;\n }\n if (colorStop) {\n itemList.unshift(colorStop);\n const { colorStops, valid } = validateColorStopList(\n itemList,\n type,\n opt\n );\n if (valid) {\n const res: Gradient = {\n value,\n type,\n colorStopList: colorStops as ColorStopList\n };\n setCache(cacheKey, res);\n return res;\n }\n } else if (itemList.length > 1) {\n const { line: gradientLine, valid: validLine } = validateGradientLine(\n lineOrColorStop,\n type\n );\n const { colorStops, valid: validColorStops } = validateColorStopList(\n itemList,\n type,\n opt\n );\n if (validLine && validColorStops) {\n const res: Gradient = {\n value,\n type,\n gradientLine,\n colorStopList: colorStops as ColorStopList\n };\n setCache(cacheKey, res);\n return res;\n }\n }\n }\n setCache(cacheKey, null);\n return null;\n }\n return null;\n};\n\n/**\n * resolve CSS gradient\n * @param value - CSS value\n * @param [opt] - options\n * @returns result\n */\nexport const resolveGradient = (value: string, opt: Options = {}): string => {\n const { format = VAL_COMP } = opt;\n const gradient = parseGradient(value, opt);\n if (gradient) {\n const { type = '', gradientLine = '', colorStopList = [] } = gradient;\n if (type && Array.isArray(colorStopList) && colorStopList.length > 1) {\n if (gradientLine) {\n return `${type}(${gradientLine}, ${colorStopList.join(', ')})`;\n }\n return `${type}(${colorStopList.join(', ')})`;\n }\n }\n if (format === VAL_SPEC) {\n return '';\n }\n return 'none';\n};\n\n/**\n * is CSS gradient\n * @param value - CSS value\n * @param [opt] - options\n * @returns result\n */\nexport const isGradient = (value: string, opt: Options = {}): boolean => {\n const gradient = parseGradient(value, opt);\n return gradient !== null;\n};\n","/**\n * convert\n */\n\nimport {\n CacheItem,\n NullObject,\n createCacheKey,\n getCache,\n setCache\n} from './cache';\nimport {\n convertColorToHsl,\n convertColorToHwb,\n convertColorToLab,\n convertColorToLch,\n convertColorToOklab,\n convertColorToOklch,\n convertColorToRgb,\n numberToHexString,\n parseColorFunc,\n parseColorValue\n} from './color';\nimport { isString } from './common';\nimport { cssCalc } from './css-calc';\nimport { resolveVar } from './css-var';\nimport { resolveRelativeColor } from './relative-color';\nimport { resolveColor } from './resolve';\nimport { ColorChannels, ComputedColorChannels, Options } from './typedef';\n\n/* constants */\nimport { SYN_FN_CALC, SYN_FN_REL, SYN_FN_VAR, VAL_COMP } from './constant';\nconst NAMESPACE = 'convert';\n\n/* regexp */\nconst REG_FN_CALC = new RegExp(SYN_FN_CALC);\nconst REG_FN_REL = new RegExp(SYN_FN_REL);\nconst REG_FN_VAR = new RegExp(SYN_FN_VAR);\n\n/**\n * pre process\n * @param value - CSS color value\n * @param [opt] - options\n * @returns value\n */\nexport const preProcess = (\n value: string,\n opt: Options = {}\n): string | NullObject => {\n if (isString(value)) {\n value = value.trim();\n if (!value) {\n return new NullObject();\n }\n } else {\n return new NullObject();\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'preProcess',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return cachedResult as NullObject;\n }\n return cachedResult.item as string;\n }\n if (REG_FN_VAR.test(value)) {\n const resolvedValue = resolveVar(value, opt);\n if (isString(resolvedValue)) {\n value = resolvedValue;\n } else {\n setCache(cacheKey, null);\n return new NullObject();\n }\n }\n if (REG_FN_REL.test(value)) {\n const resolvedValue = resolveRelativeColor(value, opt);\n if (isString(resolvedValue)) {\n value = resolvedValue;\n } else {\n setCache(cacheKey, null);\n return new NullObject();\n }\n } else if (REG_FN_CALC.test(value)) {\n value = cssCalc(value, opt);\n }\n if (value.startsWith('color-mix')) {\n const clonedOpt = structuredClone(opt);\n clonedOpt.format = VAL_COMP;\n clonedOpt.nullable = true;\n const resolvedValue = resolveColor(value, clonedOpt);\n setCache(cacheKey, resolvedValue);\n return resolvedValue;\n }\n setCache(cacheKey, value);\n return value;\n};\n\n/**\n * convert number to hex string\n * @param value - numeric value\n * @returns hex string: 00..ff\n */\nexport const numberToHex = (value: number): string => {\n const hex = numberToHexString(value);\n return hex;\n};\n\n/**\n * convert color to hex\n * @param value - CSS color value\n * @param [opt] - options\n * @param [opt.alpha] - enable alpha channel\n * @returns #rrggbb | #rrggbbaa | null\n */\nexport const colorToHex = (value: string, opt: Options = {}): string | null => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return null;\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const { alpha = false } = opt;\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToHex',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n if (cachedResult.isNull) {\n return null;\n }\n return cachedResult.item as string;\n }\n let hex;\n opt.nullable = true;\n if (alpha) {\n opt.format = 'hexAlpha';\n hex = resolveColor(value, opt);\n } else {\n opt.format = 'hex';\n hex = resolveColor(value, opt);\n }\n if (isString(hex)) {\n setCache(cacheKey, hex);\n return hex;\n }\n setCache(cacheKey, null);\n return null;\n};\n\n/**\n * convert color to hsl\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [h, s, l, alpha]\n */\nexport const colorToHsl = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToHsl',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n opt.format = 'hsl';\n const hsl = convertColorToHsl(value, opt) as ColorChannels;\n setCache(cacheKey, hsl);\n return hsl;\n};\n\n/**\n * convert color to hwb\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [h, w, b, alpha]\n */\nexport const colorToHwb = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToHwb',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n opt.format = 'hwb';\n const hwb = convertColorToHwb(value, opt) as ColorChannels;\n setCache(cacheKey, hwb);\n return hwb;\n};\n\n/**\n * convert color to lab\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [l, a, b, alpha]\n */\nexport const colorToLab = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToLab',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n const lab = convertColorToLab(value, opt) as ColorChannels;\n setCache(cacheKey, lab);\n return lab;\n};\n\n/**\n * convert color to lch\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [l, c, h, alpha]\n */\nexport const colorToLch = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToLch',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n const lch = convertColorToLch(value, opt) as ColorChannels;\n setCache(cacheKey, lch);\n return lch;\n};\n\n/**\n * convert color to oklab\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [l, a, b, alpha]\n */\nexport const colorToOklab = (\n value: string,\n opt: Options = {}\n): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToOklab',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n const lab = convertColorToOklab(value, opt) as ColorChannels;\n setCache(cacheKey, lab);\n return lab;\n};\n\n/**\n * convert color to oklch\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [l, c, h, alpha]\n */\nexport const colorToOklch = (\n value: string,\n opt: Options = {}\n): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToOklch',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n const lch = convertColorToOklch(value, opt) as ColorChannels;\n setCache(cacheKey, lch);\n return lch;\n};\n\n/**\n * convert color to rgb\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [r, g, b, alpha]\n */\nexport const colorToRgb = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToRgb',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n const rgb = convertColorToRgb(value, opt) as ColorChannels;\n setCache(cacheKey, rgb);\n return rgb;\n};\n\n/**\n * convert color to xyz\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [x, y, z, alpha]\n */\nexport const colorToXyz = (value: string, opt: Options = {}): ColorChannels => {\n if (isString(value)) {\n const resolvedValue = preProcess(value, opt);\n if (resolvedValue instanceof NullObject) {\n return [0, 0, 0, 0];\n }\n value = resolvedValue.toLowerCase();\n } else {\n throw new TypeError(`${value} is not a string.`);\n }\n const cacheKey: string = createCacheKey(\n {\n namespace: NAMESPACE,\n name: 'colorToXyz',\n value\n },\n opt\n );\n const cachedResult = getCache(cacheKey);\n if (cachedResult instanceof CacheItem) {\n return cachedResult.item as ColorChannels;\n }\n let xyz;\n if (value.startsWith('color(')) {\n [, ...xyz] = parseColorFunc(value, opt) as ComputedColorChannels;\n } else {\n [, ...xyz] = parseColorValue(value, opt) as ComputedColorChannels;\n }\n setCache(cacheKey, xyz);\n return xyz as ColorChannels;\n};\n\n/**\n * convert color to xyz-d50\n * @param value - CSS color value\n * @param [opt] - options\n * @returns ColorChannels - [x, y, z, alpha]\n */\nexport const colorToXyzD50 = (\n value: string,\n opt: Options = {}\n): ColorChannels => {\n opt.d50 = true;\n return colorToXyz(value, opt);\n};\n\n/* convert */\nexport const convert = {\n colorToHex,\n colorToHsl,\n colorToHwb,\n colorToLab,\n colorToLch,\n colorToOklab,\n colorToOklch,\n colorToRgb,\n colorToXyz,\n colorToXyzD50,\n numberToHex\n};\n","/*!\n * CSS color - Resolve, parse, convert CSS color.\n * @license MIT\n * @copyright asamuzaK (Kazz)\n * @see {@link https://github.com/asamuzaK/cssColor/blob/main/LICENSE}\n */\n\nimport { cssCalc as csscalc } from './js/css-calc';\nimport { isGradient, resolveGradient } from './js/css-gradient';\nimport { cssVar } from './js/css-var';\nimport { extractDashedIdent, isColor as iscolor, splitValue } from './js/util';\n\nexport { convert } from './js/convert';\nexport { resolve } from './js/resolve';\n/* utils */\nexport const utils = {\n cssCalc: csscalc,\n cssVar,\n extractDashedIdent,\n isColor: iscolor,\n isGradient,\n resolveGradient,\n splitValue\n};\n"],"names":["ParseError","e","n","t","__publicField","ParseErrorWithToken","r","stringify","o","i","s","checkIfFourCodePointsWouldStartCDO","isDigitCodePoint","isUppercaseLetterCodePoint","isLowercaseLetterCodePoint","isHexDigitCodePoint","isLetterCodePoint","isIdentStartCodePoint","isNonASCII_IdentCodePoint","isIdentCodePoint","isSurrogate","isNewLine","isWhitespace","checkIfTwoCodePointsAreAValidEscape","checkIfThreeCodePointsWouldStartAnIdentSequence","checkIfThreeCodePointsWouldStartANumber","checkIfTwoCodePointsStartAComment","checkIfThreeCodePointsWouldStartCDC","c","a","u","mirrorVariantType","mirrorVariant","consumeComment","consumeEscapedCodePoint","consumeIdentSequence","consumeHashToken","consumeNumber","consumeNumericToken","consumeWhiteSpace","Reader","consumeStringToken","checkIfCodePointsMatchURLIdent","consumeBadURL","consumeUrlToken","consumeIdentLikeToken","checkIfThreeCodePointsWouldStartAUnicodeRange","consumeUnicodeRangeToken","tokenize","tokenizer","d","p","noop","mutateUnit","serializeIdent","insertEscapedCodePoint","insertEscapedCharacter","isToken","isTokenNumeric","isTokenWhiteSpaceOrComment","isTokenComma","isTokenComment","isTokenDelim","isTokenDimension","isTokenEOF","isTokenFunction","isTokenHash","isTokenIdent","isTokenNumber","isTokenPercentage","isTokenWhitespace","isTokenOpenParen","isTokenCloseParen","isTokenOpenSquare","isTokenOpenCurly","f","walkerIndexGenerator","consumeComponentValue","consumeSimpleBlock","consumeFunction","consumeWhitespace","l","TokenNode","ContainerNodeBaseClass","FunctionNode","h","m","consumeAllCommentsAndWhitespace","SimpleBlockNode","WhitespaceNode","CommentNode","parseComponentValue","parseCommaSeparatedListOfComponentValues","k","forEach","walk","replaceComponentValues","isSimpleBlockNode","isFunctionNode","isWhitespaceNode","isCommentNode","isWhiteSpaceOrCommentNode","isTokenNode","E","toLowerCaseAZ","I","S","y","M","T","x","P","O","W","L","U","$","Z","z","q","G","convertUnit","v","toCanonicalUnit","addition","C","g","division","isCalculation","solve","multiplication","resolveGlobalsAndConstants","unary","D","resultToCalculation","dimensionToCalculation","percentageToCalculation","numberToCalculation","solveACos","solveASin","solveATan","isDimensionOrNumber","arrayOfSameNumeric","twoOfSameNumeric","solveATan2","solveAbs","solveClamp","solveCos","solveExp","solveHypot","solveMax","solveMin","solveMod","solvePow","solveRem","solveRound","solveSign","solveSin","solveSqrt","solveTan","subtraction","solveLog","R","isNone","V","solveRandom","_a","sfc32","crc32","j","singleNodeSolver","twoCommaSeparatedNodesSolver","calc$1","A","calcWrapper","maxWrapper","variadicNodesSolver","parseRandomValueSharing","variadicArguments","Y","N","B","singleArgument","twoCommaSeparatedArguments","patchNaN","patchInfinity","patchMinusZero","patchPrecision","patchCanonicalUnit","patchCalcResult","tokenizeGlobals","F","calc","calcFromComponentValues","b","w","_","defaultPerf","warned","PROCESS","emitWarning","msg","type","code","fn","AC","AS","warnACPolyfill","reason","_b","printACPolyfillWarning","shouldWarn","isPosInt","getUintArray","max","ZeroArray","size","_constructing","_Stack","HeapCls","__privateGet","__privateSet","__privateAdd","Stack","_max","_maxSize","_dispose","_onInsert","_disposeAfter","_fetchMethod","_memoMethod","_perf","_size","_calculatedSize","_keyMap","_keyList","_valList","_next","_prev","_head","_tail","_free","_disposed","_sizes","_starts","_ttls","_hasDispose","_hasFetchMethod","_hasDisposeAfter","_hasOnInsert","_LRUCache_instances","initializeTTLTracking_fn","_updateItemAge","_statusTTL","_setItemTTL","_isStale","initializeSizeTracking_fn","_removeItemSize","_addItemSize","_requireSize","indexes_fn","rindexes_fn","isValidIndex_fn","evict_fn","backgroundFetch_fn","isBackgroundFetch_fn","connect_fn","moveToTail_fn","delete_fn","clear_fn","_LRUCache","options","_i","_s","_st","_k","_v","sizeCalculation","ttl","ttlResolution","ttlAutopurge","updateAgeOnGet","updateAgeOnHas","allowStale","dispose","onInsert","disposeAfter","noDisposeOnSet","noUpdateTTL","maxSize","maxEntrySize","fetchMethod","memoMethod","noDeleteOnFetchRejection","noDeleteOnStaleGet","allowStaleOnFetchRejection","allowStaleOnFetchAbort","ignoreFetchAbort","perf","UintArray","__privateMethod","index","context","key","getOptions","value","thisp","deleted","entry","start","remain","arr","age","setOptions","_c","_d","_e","_f","_g","status","__privateWrapper","oldVal","oldValue","dt","task","val","hasOptions","peekOptions","fetchOptions","forceRefresh","signal","stale","isStale","staleVal","memoOptions","vv","fetching","ttls","starts","cachedNow","getNow","sizes","free","head","ac","fetchOpts","cb","updateCache","aborted","ignoreAbort","fetchFail","bf","eb","er","allowStaleAborted","noDelete","pcall","res","rej","fmp","pi","ni","LRUCache","isString","isStringOrNumber","_DIGIT","_COMPARE","_EXPO","_SIGN","_STEP","_TRIG","_MATH","_CALC","_VAR","ANGLE","LENGTH","NUM","NUM_POSITIVE","NONE","PCT","SYN_FN_CALC","SYN_FN_MATH_START","SYN_FN_VAR","SYN_FN_VAR_START","_ALPHA","_ALPHA_LV3","_COLOR_FUNC","_COLOR_KEY","_CS_HUE","_CS_HUE_ARC","_NUM_ANGLE","_NUM_ANGLE_NONE","_NUM_PCT_NONE","CS_HUE","CS_HUE_CAPT","CS_LAB","CS_LCH","CS_SRGB","CS_RGB","CS_XYZ","CS_RECT","CS_MIX","FN_COLOR","FN_LIGHT_DARK","FN_MIX","FN_REL","FN_REL_CAPT","FN_VAR","SYN_FN_COLOR","SYN_FN_LIGHT_DARK","SYN_FN_REL","SYN_HSL","SYN_HSL_LV3","SYN_LCH","SYN_MOD","SYN_RGB_LV3","SYN_COLOR_TYPE","SYN_MIX_PART","SYN_MIX","SYN_MIX_CAPT","VAL_COMP","VAL_MIX","VAL_SPEC","NAMESPACE","PPTH","HALF","DUO","TRIA","QUAD","OCT","DEC","DOZ","HEX","SEXA","DEG_HALF","DEG","MAX_PCT","MAX_RGB","POW_SQR","POW_CUBE","POW_LINEAR","LINEAR_COEF","LINEAR_OFFSET","LAB_L","LAB_A","LAB_B","LAB_EPSILON","LAB_KAPPA","D50","MATRIX_D50_TO_D65","MATRIX_D65_TO_D50","MATRIX_L_RGB_TO_XYZ","MATRIX_XYZ_TO_L_RGB","MATRIX_XYZ_TO_LMS","MATRIX_LMS_TO_XYZ","MATRIX_OKLAB_TO_LMS","MATRIX_LMS_TO_OKLAB","MATRIX_P3_TO_XYZ","MATRIX_REC2020_TO_XYZ","MATRIX_A98_TO_XYZ","MATRIX_PROPHOTO_TO_XYZ_D50","REG_COLOR","REG_CS_HUE","REG_CS_XYZ","REG_CURRENT","REG_FN_COLOR","REG_HSL","REG_HWB","REG_LAB","REG_LCH","REG_MIX","REG_MIX_CAPT","REG_MIX_NEST","REG_OKLAB","REG_OKLCH","REG_SPEC","NAMED_COLORS","cacheInvalidColorValue","cacheKey","format","nullable","setCache","NullObject","resolveInvalidColorValue","validateColorComponents","opt","alpha","minLength","maxLength","minRange","maxRange","validateRange","transformMatrix","mtx","vct","skip","r1c1","r1c2","r1c3","r2c1","r2c2","r2c3","r3c1","r3c2","r3c3","v1","v2","v3","p1","p2","p3","normalizeColorComponents","colorA","colorB","validatedColorA","validatedColorB","numberToHexString","hex","angleToDeg","angle","GRAD","RAD","reg","unit","deg","parseAlpha","parseHexAlpha","alphaMap","transformRgbToLinearRgb","rgb","rr","gg","bb","COND_POW","transformRgbToXyz","transformLinearRgbToRgb","round","transformXyzToRgb","xyz","transformXyzToHsl","min","transformXyzToHwb","wh","bk","transformXyzToOklab","xyzLms","lPct","transformXyzToOklch","transformXyzD50ToRgb","xyzD65","transformXyzD50ToLab","xyzD50","f0","f1","f2","transformXyzD50ToLch","convertRgbToHex","aa","convertHexToRgb","convertHexToLinearRgb","convertHexToXyz","parseRgb","v4","roundToPrecision","parseHsl","sa","rk","gk","parseHwb","factor","parseLab","COEF_PCT","fl","fa","fb","powFl","powFa","powFb","parseLch","parseOklab","parseOklch","cc","parseColorFunc","colorSpace","d50","cs","linearRgb","ALPHA","BETA","REC_COEF","cl","POW_A98","parseColorValue","resolveColorValue","createCacheKey","cachedResult","getCache","CacheItem","cachedItem","resolveColorFunc","convertColorToLinearRgb","convertColorToRgb","convertColorToXyz","convertColorToHsl","convertColorToHwb","convertColorToLab","convertColorToLch","convertColorToOklab","convertColorToOklch","resolveColorMix","nestedItems","hueArc","pctA","pctB","parsed","regColorSpace","items","item","colorParts","csPart","partA","partB","splitValue","colorPartA","pctPartA","colorPartB","pctPartB","specifiedColorA","resolveColor","specifiedColorB","resolvedColorA","resolvedColorB","itemA","itemB","regA","regB","itemPart","itemPartCapt","regItemPart","regLastItem","regColorPart","pA","pB","valueA","valueB","rgbA","rgbB","rrA","ggA","bbA","aaA","rrB","ggB","bbB","aaB","rNone","gNone","bNone","alphaNone","rA","gA","bA","alphaA","rB","gB","bB","alphaB","factorA","factorB","xyzA","xyzB","xxA","yyA","zzA","xxB","yyB","zzB","xNone","yNone","zNone","xA","yA","zA","xB","yB","zB","hslA","hslB","hhA","ssA","llA","hhB","ssB","llB","hA","sA","lA","hB","sB","lB","interpolateHue","lchA","lchB","ccA","ccB","lNone","cNone","hNone","cA","cB","labA","labB","alA","alB","aNone","aA","aB","aO","bO","PAREN_CLOSE","COMMENT","EOF","IDENT","W_SPACE","TokenType","REG_FN_CALC","REG_FN_VAR","resolveCustomProperty","tokens","customProperty","token","restTokens","resolveAsColor","lastValue","isColor","resolvedValue","resolvedItem","resolveVar","cssCalc","parseTokens","values","color","cssVar","multiplyMatrices","D50_to_D65","D65_to_D50","HSL_to_sRGB","HSL_to_sRGB_channel","HWB_to_sRGB","LCH_to_Lab","Lab_to_LCH","Lab_to_XYZ","OKLCH_to_OKLab","OKLab_to_OKLCH","OKLab_to_XYZ","XYZ_to_Lab","compute_f","XYZ_to_OKLab","XYZ_to_lin_P3","XYZ_to_lin_sRGB","gam_2020_channel","gam_sRGB","gam_sRGB_channel","gam_P3","gam_ProPhoto_channel","gam_a98rgb_channel","X","lin_2020_channel","lin_sRGB","lin_sRGB_channel","lin_P3","lin_P3_to_XYZ","lin_ProPhoto_channel","lin_a98rgb_channel","lin_sRGB_to_XYZ","sRGB_to_HSL","sRGB_to_Hue","sRGB_to_XYZ_D50","XYZ_D50_to_sRGB","HSL_to_XYZ_D50","XYZ_D50_to_HSL","HWB_to_XYZ_D50","XYZ_D50_to_HWB","Lab_to_XYZ_D50","XYZ_D50_to_Lab","LCH_to_XYZ_D50","XYZ_D50_to_LCH","OKLab_to_XYZ_D50","XYZ_D50_to_OKLab","OKLCH_to_XYZ_D50","XYZ_D50_to_OKLCH","lin_sRGB_to_XYZ_D50","XYZ_D50_to_lin_sRGB","a98_RGB_to_XYZ_D50","XYZ_D50_to_a98_RGB","P3_to_XYZ_D50","XYZ_D50_to_P3","lin_P3_to_XYZ_D50","XYZ_D50_to_lin_P3","rec_2020_to_XYZ_D50","XYZ_D50_to_rec_2020","ProPhoto_RGB_to_XYZ_D50","XYZ_D50_to_ProPhoto","XYZ_D65_to_XYZ_D50","XYZ_D50_to_XYZ_D65","inGamut","clip","mapGamutRayTrace","rayTraceBox","luminance","contrast_ratio_wcag_2_1","he","me","convertNaNToZero","colorData_to_XYZ_D50","H","pe","colorDataTo","carryForwardMissingComponents","convertPowerlessComponentsToMissingComponents","reducePrecision","normalizeRelativeColorDataChannels","dummyNumberToken","noneToZeroInRelativeColorDataChannels","normalize","Ne","normalize_Color_ChannelValues","be","color$1","ee","ae","ne","re","ie","ce","colorSpaceNameToColorNotation","oe","ve","ge","fe","colorMix","te","colorMixRectangular","colorMixComponents","colorMixPolar","colorMixRectangularPair","fillInMissingComponent","premultiply","interpolate","un_premultiply","colorMixPolarPair","normalizeHue","normalize_legacy_HSL_ChannelValues","normalize_modern_HSL_ChannelValues","threeChannelLegacySyntax","threeChannelSpaceSeparated","hsl","hslCommaSeparated","hslSpaceSeparated","normalize_HWB_ChannelValues","normalize_Lab_ChannelValues","lab","normalize_LCH_ChannelValues","lch","de","namedColor","normalize_OKLab_ChannelValues","oklab","normalize_OKLCH_ChannelValues","oklch","normalize_legacy_sRGB_ChannelValues","normalize_modern_sRGB_ChannelValues","rgbCommaSeparated","rgbSpaceSeparated","XYZ_D50_to_sRGB_Gamut","K","oklch_to_lin_srgb","lin_srgb_to_oklch","contrastColor","le","DIM","FUNC","PAREN_OPEN","KEY_NONE","SyntaxFlag","REG_COLOR_CAPT","REG_CS_HSL","REG_CS_CIE","REG_FN_MATH_START","REG_FN_REL","REG_FN_REL_CAPT","REG_FN_REL_START","resolveColorChannels","colorChannel","mathFunc","channels","nest","func","detail","channel","resolveDimension","channelValues","serializeCalc","extractOriginColor","colorScheme","currentColor","originColor","specifiedOriginColor","resolvedOriginColor","restValue","channelValue","tokenValue","resolveRelativeColor","components","parsedComponents","colorParser","alphaComponent","channelsComponent","colorNotation","syntaxFlags","hasNone","RGB_TRANSPARENT","REG_FN_LIGHT_DARK","light","dark","lightColor","darkColor","scs","resolve","COMMA","DELIM","delimiter","preserveComment","regDelimiter","str","extractDashedIdent","valueToJsonString","_key","replacedValue","bit","hueA","hueB","arc","MAX_CACHE","_isNull","_item","isNull","lruCache","keyData","dimension","REG_FN_CALC_NUM","REG_FN_VAR_START","REG_OPERATOR","REG_TYPE_DIM","REG_TYPE_DIM_PCT","REG_TYPE_PCT","_hasNum","_numSum","_numMul","_hasPct","_pctSum","_pctMul","_hasDim","_dimSum","_dimSub","_dimMul","_dimDiv","_hasEtc","_etcSum","_etcSub","_etcMul","_etcDiv","Calculator","valA","unitA","valB","unitB","num","dim","mul","div","sum","sub","sortCalcValues","finalize","end","sortedValues","cal","operator","sortedValue","numValue","strValue","finalizedValues","startIndex","endIndex","slicedValues","serializedValue","serializedCalc","relativeValue","pixelValue","DIM_ANGLE","DIM_ANGLE_PCT","DIM_LEN","DIM_LEN_PCT","DIM_LEN_PCT_POSI","DIM_LEN_POSI","CTR","L_R","T_B","S_E","AXIS_X","AXIS_Y","BLOCK","INLINE","POS_1","POS_2","POS_4","RAD_EXTENT","RAD_SIZE","RAD_SHAPE","FROM_ANGLE","AT_POSITION","TO_SIDE_CORNER","IN_COLOR_SPACE","REG_GRAD","REG_GRAD_CAPT","getGradientType","validateGradientLine","lineSyntax","defaultValues","valid","line","defaultValue","validateColorStopList","list","regColorHint","regDimension","valueTypes","valueList","itemColor","resolvedColor","parseGradient","gradValue","lineOrColorStop","itemList","colorStop","colorStops","gradientLine","validLine","validColorStops","resolveGradient","gradient","colorStopList","isGradient","preProcess","clonedOpt","numberToHex","colorToHex","colorToHsl","colorToHwb","hwb","colorToLab","colorToLch","colorToOklab","colorToOklch","colorToRgb","colorToXyz","colorToXyzD50","convert","utils","csscalc","iscolor"],"mappings":";;;;;;;;;;;;;;;AAAA,MAAMA,WAAmB,MAAK;AAAA,EAAmC,YAAYC,GAAEC,GAAEC,GAAE,GAAE;AAAC,UAAMF,CAAC;AAA9D,IAAAG,EAAA;AAAY,IAAAA,EAAA;AAAU,IAAAA,EAAA;AAA0C,SAAK,OAAK,cAAa,KAAK,cAAYF,GAAE,KAAK,YAAUC,GAAE,KAAK,cAAY;AAAA,EAAC;AAAC;AAAC,MAAME,WAA4BL,GAAU;AAAA,EAAO,YAAYC,GAAEC,GAAEC,GAAE,GAAEG,GAAE;AAAC,UAAML,GAAEC,GAAEC,GAAE,CAAC;AAA1C,IAAAC,EAAA;AAA4C,SAAK,QAAME;AAAA,EAAC;AAAC;AAAM,MAACL,KAAE,EAAC,2BAA0B,sDAAqD,uBAAsB,kDAAiD,wBAAuB,6CAA4C,oBAAmB,+CAA8C,iCAAgC,yDAAwD,0BAAyB,qDAAoD,4BAA2B,wDAAuD,qCAAoC,qCAAoC;AAAqJ,SAASM,MAAa,GAAE;AAAC,MAAIL,IAAE;AAAG,WAAQC,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,CAAAD,KAAG,EAAEC,CAAC,EAAE,CAAC;AAAE,SAAOD;AAAC;AAAC,MAAMC,KAAE,IAAGK,KAAE,IAAGF,KAAE,IAAGG,KAAE,IAAGC,KAAE;AAAM,SAASC,GAAmC,GAAE;AAAC,SAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,MAA0C,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAApC,MAAuC,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAAIH,MAAG,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAAIA;AAAC;AAAC,SAASI,GAAiB,GAAE;AAAC,SAAO,KAAG,MAAI,KAAG;AAAE;AAAC,SAASC,GAA2B,GAAE;AAAC,SAAO,KAAG,MAAI,KAAG;AAAE;AAAC,SAASC,GAA2B,GAAE;AAAC,SAAO,KAAG,MAAI,KAAG;AAAG;AAAC,SAASC,GAAoB,GAAE;AAAC,SAAO,KAAG,MAAI,KAAG,MAAI,KAAG,MAAI,KAAG,OAAK,KAAG,MAAI,KAAG;AAAE;AAAC,SAASC,GAAkB,GAAE;AAAC,SAAOF,GAA2B,CAAC,KAAGD,GAA2B,CAAC;AAAC;AAAC,SAASI,GAAsB,GAAE;AAAC,SAAOD,GAAkB,CAAC,KAAGE,GAA0B,CAAC,KAAQ,MAAL;AAAM;AAAC,SAASC,GAAiB,GAAE;AAAC,SAAOF,GAAsB,CAAC,KAAGL,GAAiB,CAAC,KAAG,MAAIJ;AAAC;AAAC,SAASU,GAA0B,GAAE;AAAC,SAAa,MAAN,OAAgB,MAAP,QAAiB,MAAP,QAAiB,MAAP,QAAiB,MAAP,QAAiB,MAAP,QAAW,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,OAAK,OAAK,KAAG,KAAG,QAAM,QAAM,KAAG,KAAG,QAAM,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAO,SAAO,KAAG,KAAG,SAAY,MAAJ,KAAQ,CAAC,CAACE,GAAY,CAAC,KAAG,KAAG;AAAQ;AAAC,SAASC,GAAU,GAAE;AAAC,SAAO,MAAIf,MAAG,MAAIH,MAAQ,MAAL;AAAM;AAAC,SAASmB,GAAa,GAAE;AAAC,SAAY,MAAL,MAAQ,MAAIhB,MAAO,MAAJ,KAAO,MAAIH,MAAQ,MAAL;AAAM;AAAC,SAASiB,GAAY,GAAE;AAAC,SAAO,KAAG,SAAO,KAAG;AAAK;AAAC,SAASG,GAAoC,GAAE;AAAC,SAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,MAAqC,CAACF,GAAU,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,KAAG,EAAE;AAAC;AAAC,SAASG,GAAgD,GAAEtB,GAAE;AAAC,SAAOA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIM,KAAEN,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIM,MAAI,CAAC,CAACS,GAAsBf,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,KAAQA,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAApC,MAAuC,CAACmB,GAAUnB,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,IAAG,CAAC,CAACe,GAAsBf,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,KAAGqB,GAAoCrB,CAAC;AAAC;AAAC,SAASuB,GAAwC,GAAE;AAAC,SAAO,EAAE,OAAO,YAAY,EAAE,MAAM,MAAIhB,MAAG,EAAE,OAAO,YAAY,EAAE,MAAM,MAAID,KAAE,CAAC,CAACI,GAAiB,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,KAAG,EAAE,KAAQ,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAApC,MAAuCA,GAAiB,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,KAAG,EAAE,IAAO,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,KAAoCA,GAAiB,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,KAAG,EAAE,IAAEA,GAAiB,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE;AAAC;AAAC,SAASc,GAAkC,GAAE;AAAC,SAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,MAA0C,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAApC;AAAqC;AAAC,SAASC,GAAoC,GAAE;AAAC,SAAO,EAAE,OAAO,YAAY,EAAE,MAAM,MAAInB,MAAG,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAAIA,MAAQ,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAApC;AAAqC;AAAC,IAAIoB,GAAEC,GAAEC;AAAE,SAASC,GAAkB,GAAE;AAAC,UAAO;IAAG,KAAKH,EAAE;AAAU,aAAOA,EAAE;AAAA,IAAW,KAAKA,EAAE;AAAW,aAAOA,EAAE;AAAA,IAAU,KAAKA,EAAE;AAAU,aAAOA,EAAE;AAAA,IAAW,KAAKA,EAAE;AAAW,aAAOA,EAAE;AAAA,IAAU,KAAKA,EAAE;AAAW,aAAOA,EAAE;AAAA,IAAY,KAAKA,EAAE;AAAY,aAAOA,EAAE;AAAA,IAAW;AAAQ,aAAO;AAAA,EAAI;AAAC;AAAC,SAASI,GAAc,GAAE;AAAC,UAAO,EAAE,CAAC,GAAC;AAAA,IAAE,KAAKJ,EAAE;AAAU,aAAM,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE,KAAKA,EAAE;AAAW,aAAM,CAACA,EAAE,WAAU,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE,KAAKA,EAAE;AAAU,aAAM,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE,KAAKA,EAAE;AAAW,aAAM,CAACA,EAAE,WAAU,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE,KAAKA,EAAE;AAAW,aAAM,CAACA,EAAE,aAAY,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE,KAAKA,EAAE;AAAY,aAAM,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM;AAAA,IAAE;AAAQ,aAAO;AAAA,EAAI;AAAC;AAAC,SAASK,GAAe/B,GAAE,GAAE;AAAC,OAAI,EAAE,iBAAiB,CAAC,OAAI;AAAC,UAAMM,IAAE,EAAE;AAAgB,QAAYA,MAAT,QAAW;AAAC,YAAMA,IAAE,CAACoB,EAAE,SAAQ,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAE,aAAO1B,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,wBAAuB,EAAE,qBAAoB,EAAE,mBAAkB,CAAC,2BAA0B,gBAAgB,GAAEO,CAAC,CAAC,GAAEA;AAAA,IAAC;AAAC,QAAQA,MAAL,MAAkB,EAAE,OAAO,YAAY,EAAE,MAAM,MAAtC,UAA8C,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,IAAqC;AAAC,QAAE,iBAAgB;AAAG;AAAA,IAAK;AAAA,EAAC;AAAC,SAAM,CAACoB,EAAE,SAAQ,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAC;AAAC,SAASM,GAAwBhC,GAAEM,GAAE;AAAC,QAAMC,IAAED,EAAE,cAAa;AAAG,MAAYC,MAAT,OAAW,QAAOP,EAAE,aAAa,IAAIF,GAAWC,GAAE,iCAAgCO,EAAE,qBAAoBA,EAAE,mBAAkB,CAAC,wCAAuC,gBAAgB,CAAC,CAAC,GAAEE;AAAE,MAAGK,GAAoBN,CAAC,GAAE;AAAC,UAAMR,IAAE,CAACQ,CAAC;AAAE,QAAIP;AAAE,YAAeA,IAAEM,EAAE,OAAO,YAAYA,EAAE,MAAM,OAAzC,UAA6CO,GAAoBb,CAAC,KAAGD,EAAE,SAAO,IAAG,CAAAA,EAAE,KAAKC,CAAC,GAAEM,EAAE,iBAAgB;AAAG,IAAAc,GAAad,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,MAAIA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIL,MAAGK,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIF,MAAGE,EAAE,iBAAgB,GAAGA,EAAE,iBAAgB;AAAI,UAAMoB,IAAE,SAAS,OAAO,cAAc,GAAG3B,CAAC,GAAE,EAAE;AAAE,WAAW2B,MAAJ,KAAOR,GAAYQ,CAAC,KAAGA,IAAE,UAAQlB,KAAEkB;AAAA,EAAC;AAAC,SAAWnB,MAAJ,KAAOW,GAAYX,CAAC,IAAEC,KAAED;AAAC;AAAC,SAAS0B,GAAqB,GAAEjC,GAAE;AAAC,QAAMC,IAAE,CAAA;AAAG,aAAO;AAAC,UAAMK,IAAEN,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG;AAAG,QAAOM,MAAJ,KAAOY,GAAYZ,CAAC,EAAE,CAAAL,EAAE,KAAKO,EAAC,GAAER,EAAE,iBAAiB,EAAEM,IAAE,SAAO,CAAC;AAAA,aAAUW,GAAiBX,CAAC,EAAE,CAAAL,EAAE,KAAKK,CAAC,GAAEN,EAAE,iBAAiB,EAAEM,IAAE,SAAO,CAAC;AAAA,SAAM;AAAC,UAAG,CAACe,GAAoCrB,CAAC,EAAE,QAAOC;AAAE,MAAAD,EAAE,oBAAmBC,EAAE,KAAK+B,GAAwB,GAAEhC,CAAC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASkC,GAAiB,GAAElC,GAAE;AAAC,EAAAA,EAAE,iBAAgB;AAAG,QAAMC,IAAED,EAAE,OAAO,YAAYA,EAAE,MAAM;AAAE,MAAYC,MAAT,WAAagB,GAAiBhB,CAAC,KAAGoB,GAAoCrB,CAAC,IAAG;AAAC,QAAIC,IAAE2B,GAAE;AAAa,IAAAN,GAAgD,GAAEtB,CAAC,MAAIC,IAAE2B,GAAE;AAAI,UAAMtB,IAAE2B,GAAqB,GAAEjC,CAAC;AAAE,WAAM,CAAC0B,EAAE,MAAK1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,OAAO,cAAc,GAAGM,CAAC,GAAE,MAAKL,EAAC,CAAC;AAAA,EAAC;AAAC,SAAM,CAACyB,EAAE,OAAM,KAAI1B,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,IAAG,CAAC;AAAC;AAAC,SAASmC,GAAc,GAAEnC,GAAE;AAAC,MAAIC,IAAE0B,EAAE;AAAQ,OAAI3B,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIO,MAAGP,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIM,MAAGN,EAAE,iBAAgB,GAAGU,GAAiBV,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,IAAG,CAAAA,EAAE,iBAAgB;AAAG,MAAQA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAlC,MAAqCU,GAAiBV,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,EAAE,MAAIA,EAAE,iBAAiB,CAAC,GAAEC,IAAE0B,EAAE,QAAOjB,GAAiBV,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,IAAG,CAAAA,EAAE,iBAAgB;AAAG,MAASA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAnC,OAA2CA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAlC,IAAoC;AAAC,QAAGU,GAAiBV,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,EAAE,CAAAA,EAAE,iBAAiB,CAAC;AAAA,SAAM;AAAC,UAAGA,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIM,MAAGN,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIO,MAAG,CAACG,GAAiBV,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,EAAE,QAAOC;AAAE,MAAAD,EAAE,iBAAiB,CAAC;AAAA,IAAC;AAAC,SAAIC,IAAE0B,EAAE,QAAOjB,GAAiBV,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,IAAG,CAAAA,EAAE,iBAAgB;AAAA,EAAE;AAAC,SAAOC;AAAC;AAAC,SAASmC,GAAoB,GAAEpC,GAAE;AAAC,MAAIC;AAAE;AAAC,UAAMF,IAAEC,EAAE,OAAO,YAAYA,EAAE,MAAM;AAAE,IAAAD,MAAIO,KAAEL,IAAE,MAAIF,MAAIQ,OAAIN,IAAE;AAAA,EAAI;AAAC,QAAM,IAAEkC,GAAc,GAAEnC,CAAC,GAAE,IAAE,WAAWA,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,CAAC;AAAE,MAAGsB,GAAgD,GAAEtB,CAAC,GAAE;AAAC,UAAM,IAAEiC,GAAqB,GAAEjC,CAAC;AAAE,WAAM,CAAC0B,EAAE,WAAU1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,GAAE,eAAcC,GAAE,MAAK,GAAE,MAAK,OAAO,cAAc,GAAG,CAAC,EAAC,CAAC;AAAA,EAAC;AAAC,SAAYD,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAlC,MAAqCA,EAAE,oBAAmB,CAAC0B,EAAE,YAAW1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,GAAE,eAAcC,EAAC,CAAC,KAAG,CAACyB,EAAE,QAAO1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,GAAE,eAAcC,GAAE,MAAK,EAAC,CAAC;AAAC;AAAC,SAASoC,GAAkB,GAAE;AAAC,SAAKjB,GAAa,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE,IAAG,GAAE,iBAAgB;AAAG,SAAM,CAACM,EAAE,YAAW,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAC;AAAA,CAAE,SAAS,GAAE;AAAC,IAAE,UAAQ,WAAU,EAAE,YAAU,oBAAmB,EAAE,YAAU,oBAAmB,EAAE,SAAO,iBAAgB,EAAE,MAAI,aAAY,EAAE,MAAI,aAAY,EAAE,QAAM,eAAc,EAAE,QAAM,eAAc,EAAE,QAAM,eAAc,EAAE,YAAU,mBAAkB,EAAE,MAAI,aAAY,EAAE,WAAS,kBAAiB,EAAE,OAAK,cAAa,EAAE,QAAM,eAAc,EAAE,SAAO,gBAAe,EAAE,aAAW,oBAAmB,EAAE,YAAU,mBAAkB,EAAE,SAAO,gBAAe,EAAE,MAAI,aAAY,EAAE,aAAW,oBAAmB,EAAE,YAAU,WAAU,EAAE,aAAW,WAAU,EAAE,aAAW,WAAU,EAAE,cAAY,WAAU,EAAE,YAAU,WAAU,EAAE,aAAW,WAAU,EAAE,eAAa;AAAqB,GAAEA,MAAIA,IAAE,GAAG,IAAE,SAAS,GAAE;AAAC,IAAE,UAAQ,WAAU,EAAE,SAAO;AAAQ,GAAEC,MAAIA,IAAE,GAAG,IAAE,SAAS,GAAE;AAAC,IAAE,eAAa,gBAAe,EAAE,KAAG;AAAI,GAAEC,OAAIA,KAAE,CAAA,EAAG;AAAE,MAAMU,GAAM;AAAA,EAA+D,YAAYvC,GAAE;AAA5E,IAAAG,EAAA,gBAAO;AAAE,IAAAA,EAAA,gBAAO;AAAG,IAAAA,EAAA,6BAAoB;AAAE,IAAAA,EAAA,2BAAkB;AAAkB,SAAK,SAAOH;AAAA,EAAC;AAAA,EAAC,iBAAiBA,IAAE,GAAE;AAAC,SAAK,SAAO,KAAK,SAAOA,GAAE,KAAK,oBAAkB,KAAK,SAAO;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,UAAMA,IAAE,KAAK,OAAO,YAAY,KAAK,MAAM;AAAE,QAAYA,MAAT,OAAW,QAAO,KAAK,SAAO,KAAK,SAAO,GAAE,KAAK,oBAAkB,KAAK,SAAO,GAAEA;AAAA,EAAC;AAAA,EAAC,gBAAgBA,IAAE,GAAE;AAAC,SAAK,SAAO,KAAK,SAAOA,GAAE,KAAK,oBAAkB,KAAK,SAAO;AAAA,EAAC;AAAA,EAAC,sBAAqB;AAAC,SAAK,sBAAoB,KAAK,QAAO,KAAK,oBAAkB;AAAA,EAAE;AAAC;AAAC,SAASwC,GAAmBvC,GAAEM,GAAE;AAAC,MAAIC,IAAE;AAAG,QAAMoB,IAAErB,EAAE,cAAa;AAAG,aAAO;AAAC,UAAMsB,IAAEtB,EAAE,cAAa;AAAG,QAAYsB,MAAT,QAAW;AAAC,YAAM3B,IAAE,CAACyB,EAAE,QAAOpB,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAMC,EAAC,CAAC;AAAE,aAAOP,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,uBAAsBO,EAAE,qBAAoBA,EAAE,mBAAkB,CAAC,iCAAgC,gBAAgB,GAAEL,CAAC,CAAC,GAAEA;AAAA,IAAC;AAAC,QAAGkB,GAAUS,CAAC,GAAE;AAAC,MAAAtB,EAAE,gBAAe;AAAG,YAAMC,IAAE,CAACmB,EAAE,WAAUpB,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAE,aAAON,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,2BAA0BO,EAAE,qBAAoBA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIL,MAAGK,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIF,KAAEE,EAAE,oBAAkB,IAAEA,EAAE,oBAAkB,GAAE,CAAC,iCAAgC,oBAAoB,GAAEC,CAAC,CAAC,GAAEA;AAAA,IAAC;AAAC,QAAGqB,MAAID,EAAE,QAAM,CAACD,EAAE,QAAOpB,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAMC,EAAC,CAAC;AAAE,QAAQqB,MAAL,GAAO,CAAIA,MAAJ,KAAOV,GAAYU,CAAC,IAAErB,KAAG,OAAO,cAAcC,EAAC,IAAED,KAAG,OAAO,cAAcqB,CAAC;AAAA,SAAM;AAAC,UAAYtB,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAtC,OAAwC;AAAS,UAAGa,GAAUb,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,GAAE;AAAC,QAAAA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIL,MAAGK,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,MAAIF,MAAGE,EAAE,iBAAgB,GAAGA,EAAE,iBAAgB;AAAG;AAAA,MAAQ;AAAC,MAAAC,KAAG,OAAO,cAAcyB,GAAwBhC,GAAEM,CAAC,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC;AAAC,SAASkC,GAA+B,GAAE;AAAC,SAAM,EAAM,EAAE,WAAN,KAAoB,EAAE,CAAC,MAAT,OAAiB,EAAE,CAAC,MAAR,MAAiB,EAAE,CAAC,MAAT,OAAiB,EAAE,CAAC,MAAR,MAAiB,EAAE,CAAC,MAAT,OAAiB,EAAE,CAAC,MAAR;AAAU;AAAC,SAASC,GAAc,GAAEzC,GAAE;AAAC,aAAO;AAAC,UAAMC,IAAED,EAAE,OAAO,YAAYA,EAAE,MAAM;AAAE,QAAYC,MAAT,OAAW;AAAO,QAAQA,MAAL,GAAO,QAAO,KAAKD,EAAE,iBAAgB;AAAG,IAAAqB,GAAoCrB,CAAC,KAAGA,EAAE,iBAAgB,GAAGgC,GAAwB,GAAEhC,CAAC,KAAGA,EAAE,iBAAgB;AAAA,EAAE;AAAC;AAAC,SAAS0C,GAAgB1C,GAAE,GAAE;AAAC,SAAKoB,GAAa,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE,IAAG,GAAE,iBAAgB;AAAG,MAAId,IAAE;AAAG,aAAO;AAAC,QAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAtC,QAAwC;AAAC,YAAMF,IAAE,CAACsB,EAAE,KAAI,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,EAAC,OAAMpB,EAAC,CAAC;AAAE,aAAON,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,oBAAmB,EAAE,qBAAoB,EAAE,mBAAkB,CAAC,8BAA6B,gBAAgB,GAAEK,CAAC,CAAC,GAAEA;AAAA,IAAC;AAAC,QAAQ,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,GAAoC,QAAO,EAAE,iBAAgB,GAAG,CAACsB,EAAE,KAAI,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,EAAC,OAAMpB,EAAC,CAAC;AAAE,QAAGc,GAAa,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE,GAAE;AAAC,WAAI,EAAE,iBAAgB,GAAGA,GAAa,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE,IAAG,GAAE,iBAAgB;AAAG,UAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAtC,QAAwC;AAAC,cAAMhB,IAAE,CAACsB,EAAE,KAAI,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,EAAC,OAAMpB,EAAC,CAAC;AAAE,eAAON,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,oBAAmB,EAAE,qBAAoB,EAAE,mBAAkB,CAAC,8BAA6B,0CAAyC,gBAAgB,GAAEK,CAAC,CAAC,GAAEA;AAAA,MAAC;AAAC,aAAY,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,MAAqC,EAAE,iBAAgB,GAAG,CAACsB,EAAE,KAAI,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,EAAC,OAAMpB,EAAC,CAAC,MAAImC,GAAczC,GAAE,CAAC,GAAE,CAAC0B,EAAE,QAAO,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAA,IAAE;AAAC,UAAMnB,IAAE,EAAE,OAAO,YAAY,EAAE,MAAM;AAAE,QAAQA,MAAL,MAAaA,MAAL,MAAaA,MAAL,OAAe,IAAEA,KAAG,QAAX,MAAsB,MAAN,OAAS,KAAG,KAAG,KAAG,KAAG,MAAI,KAAG,KAAG,IAAI;AAAC,MAAAkC,GAAczC,GAAE,CAAC;AAAE,YAAM,IAAE,CAAC0B,EAAE,QAAO,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAE,aAAO1B,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,0BAAyB,EAAE,qBAAoB,EAAE,mBAAkB,CAAC,8BAA6B,sHAAuH,GAAE,CAAC,CAAC,GAAE;AAAA,IAAC;AAAC,QAAQQ,MAAL,IAAO;AAAC,UAAGc,GAAoC,CAAC,GAAE;AAAC,UAAE,oBAAmBf,KAAG,OAAO,cAAc0B,GAAwBhC,GAAE,CAAC,CAAC;AAAE;AAAA,MAAQ;AAAC,MAAAyC,GAAczC,GAAE,CAAC;AAAE,YAAMI,IAAE,CAACsB,EAAE,QAAO,EAAE,OAAO,MAAM,EAAE,qBAAoB,EAAE,oBAAkB,CAAC,GAAE,EAAE,qBAAoB,EAAE,mBAAkB,MAAM;AAAE,aAAO1B,EAAE,aAAa,IAAIG,GAAoBJ,GAAE,4BAA2B,EAAE,qBAAoB,EAAE,mBAAkB,CAAC,8BAA6B,+BAA8B,8DAA8D,GAAEK,CAAC,CAAC,GAAEA;AAAA,IAAC;AAAC,IAAI,EAAE,OAAO,YAAY,EAAE,MAAM,MAAjC,KAAoCc,GAAY,EAAE,OAAO,YAAY,EAAE,MAAM,KAAG,EAAE,KAAGZ,KAAG,OAAO,cAAcE,EAAC,GAAE,EAAE,uBAAqBF,KAAG,EAAE,OAAO,EAAE,MAAM,GAAE,EAAE;EAAmB;AAAC,MAAI;AAAC;AAAC,SAASqC,GAAsB,GAAE3C,GAAE;AAAC,QAAMC,IAAEgC,GAAqB,GAAEjC,CAAC;AAAE,MAAQA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAlC,GAAoC,QAAM,CAAC0B,EAAE,OAAM1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,OAAO,cAAc,GAAGC,CAAC,EAAC,CAAC;AAAE,MAAGuC,GAA+BvC,CAAC,GAAE;AAAC,IAAAD,EAAE,iBAAgB;AAAG,QAAIM,IAAE;AAAE,eAAO;AAAC,YAAMP,IAAEqB,GAAapB,EAAE,OAAO,YAAYA,EAAE,MAAM,KAAG,EAAE,GAAEI,IAAEgB,GAAapB,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE;AAAE,UAAGD,KAAGK,GAAE;AAAC,QAAAE,KAAG,GAAEN,EAAE,iBAAiB,CAAC;AAAE;AAAA,MAAQ;AAAC,YAAMO,IAAER,IAAEC,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,IAAEA,EAAE,OAAO,YAAYA,EAAE,MAAM;AAAE,UAAQO,MAAL,MAAaA,MAAL,GAAO,QAAOD,IAAE,KAAGN,EAAE,gBAAgBM,CAAC,GAAE,CAACoB,EAAE,UAAS1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,OAAO,cAAc,GAAGC,CAAC,EAAC,CAAC;AAAE;AAAA,IAAK;AAAC,WAAOyC,GAAgB,GAAE1C,CAAC;AAAA,EAAC;AAAC,SAAOA,EAAE,iBAAgB,GAAG,CAAC0B,EAAE,UAAS1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,OAAO,cAAc,GAAGC,CAAC,EAAC,CAAC;AAAC;AAAC,SAAS2C,GAA8C,GAAE;AAAC,SAAM,EAAQ,EAAE,OAAO,YAAY,EAAE,MAAM,MAAnC,OAA2C,EAAE,OAAO,YAAY,EAAE,MAAM,MAAlC,MAAqC,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAAIrC,MAAQ,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,MAApC,MAAuC,CAACM,GAAoB,EAAE,OAAO,YAAY,EAAE,SAAO,CAAC,KAAG,EAAE;AAAE;AAAC,SAASgC,GAAyB,GAAE7C,GAAE;AAAC,EAAAA,EAAE,iBAAiB,CAAC;AAAE,QAAMC,IAAE,CAAA,GAAG,IAAE,CAAA;AAAG,MAAIM;AAAE,UAAeA,IAAEP,EAAE,OAAO,YAAYA,EAAE,MAAM,OAAzC,UAA6CC,EAAE,SAAO,KAAGY,GAAoBN,CAAC,IAAG,CAAAN,EAAE,KAAKM,CAAC,GAAEP,EAAE;AAAmB,UAAeO,IAAEP,EAAE,OAAO,YAAYA,EAAE,MAAM,OAAzC,UAA6CC,EAAE,SAAO,KAAQM,MAAL,KAAQ,CAAI,EAAE,WAAN,KAAc,EAAE,KAAK,GAAGN,CAAC,GAAEA,EAAE,KAAK,EAAE,GAAE,EAAE,KAAK,EAAE,GAAED,EAAE,iBAAgB;AAAG,MAAG,CAAC,EAAE,UAAQA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAIM,MAAGO,GAAoBb,EAAE,OAAO,YAAYA,EAAE,SAAO,CAAC,KAAG,EAAE,EAAE,MAAIA,EAAE,qBAA6BO,IAAEP,EAAE,OAAO,YAAYA,EAAE,MAAM,OAAzC,UAA6C,EAAE,SAAO,KAAGa,GAAoBN,CAAC,IAAG,GAAE,KAAKA,CAAC,GAAEP,EAAE;AAAmB,MAAG,CAAC,EAAE,QAAO;AAAC,UAAMD,IAAE,SAAS,OAAO,cAAc,GAAGE,CAAC,GAAE,EAAE;AAAE,WAAM,CAACyB,EAAE,cAAa1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,cAAaD,GAAE,YAAWA,EAAC,CAAC;AAAA,EAAC;AAAC,QAAMS,IAAE,SAAS,OAAO,cAAc,GAAGP,CAAC,GAAE,EAAE,GAAE,IAAE,SAAS,OAAO,cAAc,GAAG,CAAC,GAAE,EAAE;AAAE,SAAM,CAACyB,EAAE,cAAa1B,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,cAAaQ,GAAE,YAAW,EAAC,CAAC;AAAC;AAAC,SAASsC,GAAS,GAAE9C,GAAE;AAAC,QAAMC,IAAE8C,GAAU,CAAG,GAAEzC,IAAE,CAAA;AAAG,SAAK,CAACL,EAAE,UAAS,IAAI,CAAAK,EAAE,KAAKL,EAAE,UAAS,CAAE;AAAE,SAAOK,EAAE,KAAKL,EAAE,UAAS,CAAE,GAAEK;AAAC;AAAC,SAASyC,GAAU/C,GAAEQ,GAAE;AAAC,QAAMmB,IAAE3B,EAAE,IAAI,WAAU4B,IAAE5B,EAAE,wBAAsB,IAAGgD,IAAE,IAAIV,GAAOX,CAAC,GAAEsB,IAAE,EAAC,cAA8BC,GAAI;AAAE,SAAM,EAAC,WAAU,WAAoB;AAAC,IAAAF,EAAE,oBAAmB;AAAG,UAAMhD,IAAEgD,EAAE,OAAO,YAAYA,EAAE,MAAM;AAAE,QAAYhD,MAAT,OAAW,QAAM,CAAC0B,EAAE,KAAI,IAAG,IAAG,IAAG,MAAM;AAAE,QAAQ1B,MAAL,MAAQwB,GAAkCwB,CAAC,EAAE,QAAOjB,GAAekB,GAAED,CAAC;AAAE,QAAGpB,MAAU5B,MAAN,OAAcA,MAAL,OAAS4C,GAA8CI,CAAC,EAAE,QAAOH,GAAyB,GAAEG,CAAC;AAAE,QAAGjC,GAAsBf,CAAC,EAAE,QAAO2C,GAAsBM,GAAED,CAAC;AAAE,QAAGtC,GAAiBV,CAAC,EAAE,QAAOoC,GAAoBa,GAAED,CAAC;AAAE,YAAOhD,GAAC;AAAA,MAAE,KAAK;AAAG,eAAOgD,EAAE,iBAAgB,GAAG,CAACtB,EAAE,OAAM,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,oBAAmB,CAACtB,EAAE,OAAM,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,WAAU,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,WAAU,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,YAAW,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,YAAW,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAG,eAAOA,EAAE,oBAAmB,CAACtB,EAAE,aAAY,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAI,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,WAAU,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAI,eAAOA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,YAAW,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM;AAAA,MAAE,KAAK;AAAA,MAAG,KAAK;AAAG,eAAOT,GAAmBU,GAAED,CAAC;AAAA,MAAE,KAAK;AAAG,eAAOd,GAAiBe,GAAED,CAAC;AAAA,MAAE,KAAKzC;AAAAA,MAAE,KAAK;AAAG,eAAOgB,GAAwCyB,CAAC,IAAEZ,GAAoBa,GAAED,CAAC,KAAGA,EAAE,iBAAgB,GAAG,CAACtB,EAAE,OAAMsB,EAAE,OAAOA,EAAE,mBAAmB,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAMA,EAAE,OAAOA,EAAE,mBAAmB,EAAC,CAAC;AAAA,MAAG,KAAK5C;AAAAA,MAAE,KAAKH;AAAAA,MAAE,KAAK;AAAA,MAAG,KAAK;AAAA,MAAE,KAAK;AAAG,eAAOoC,GAAkBW,CAAC;AAAA,MAAE,KAAK1C;AAAE,eAAOiB,GAAwCyB,CAAC,IAAEZ,GAAoBa,GAAED,CAAC,IAAEvB,GAAoCuB,CAAC,KAAGA,EAAE,iBAAiB,CAAC,GAAE,CAACtB,EAAE,KAAI,OAASsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM,KAAG1B,GAAgD,GAAE0B,CAAC,IAAEL,GAAsBM,GAAED,CAAC,KAAGA,EAAE,oBAAmB,CAACtB,EAAE,OAAM,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,IAAG,CAAC;AAAA,MAAG,KAAK;AAAG,eAAOvC,GAAmCuC,CAAC,KAAGA,EAAE,iBAAiB,CAAC,GAAE,CAACtB,EAAE,KAAI,QAAUsB,EAAE,qBAAoBA,EAAE,mBAAkB,MAAM,MAAIA,EAAE,oBAAmB,CAACtB,EAAE,OAAM,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,IAAG,CAAC;AAAA,MAAG,KAAK;AAAG,YAAGA,EAAE,oBAAmB1B,GAAgD,GAAE0B,CAAC,GAAE;AAAC,gBAAMjD,IAAEkC,GAAqBgB,GAAED,CAAC;AAAE,iBAAM,CAACtB,EAAE,WAAUsB,EAAE,OAAO,MAAMA,EAAE,qBAAoBA,EAAE,oBAAkB,CAAC,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,OAAO,cAAc,GAAGjD,CAAC,EAAC,CAAC;AAAA,QAAC;AAAC,eAAM,CAAC2B,EAAE,OAAM,KAAIsB,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,IAAG,CAAC;AAAA,MAAE,KAAK,IAAG;AAAC,YAAG3B,GAAoC2B,CAAC,EAAE,QAAOL,GAAsBM,GAAED,CAAC;AAAE,QAAAA,EAAE,iBAAgB;AAAG,cAAMhD,IAAE,CAAC0B,EAAE,OAAM,MAAKsB,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAM,KAAI,CAAC;AAAE,eAAOC,EAAE,aAAa,IAAI9C,GAAoBJ,GAAE,qCAAoCiD,EAAE,qBAAoBA,EAAE,mBAAkB,CAAC,0BAAyB,+BAA8B,8DAA8D,GAAEhD,CAAC,CAAC,GAAEA;AAAA,MAAC;AAAA,IAAC;AAAC,WAAOgD,EAAE,oBAAmB,CAACtB,EAAE,OAAMsB,EAAE,OAAOA,EAAE,mBAAmB,GAAEA,EAAE,qBAAoBA,EAAE,mBAAkB,EAAC,OAAMA,EAAE,OAAOA,EAAE,mBAAmB,EAAC,CAAC;AAAA,EAAC,GAAE,WAAU,WAAoB;AAAC,WAAgBA,EAAE,OAAO,YAAYA,EAAE,MAAM,MAAtC;AAAA,EAAuC,EAAC;AAAC;AAAC,SAASE,KAAM;AAAC;AAAuJ,SAASC,GAAW,GAAEnD,GAAE;AAAC,QAAMC,IAAE,CAAA;AAAG,aAAUF,KAAKC,EAAE,CAAAC,EAAE,KAAKF,EAAE,YAAY,CAAC,CAAC;AAAE,QAAMO,IAAE8C,GAAenD,CAAC;AAAE,EAAMK,EAAE,CAAC,MAAT,OAAY+C,GAAuB/C,GAAE,GAAEA,EAAE,CAAC,CAAC;AAAE,QAAMF,IAAE,OAAO,cAAc,GAAGE,CAAC,GAAEC,IAAQ,EAAE,CAAC,EAAE,kBAAX,MAAyB,EAAE,CAAC,EAAE,gBAAc,IAAGC,IAAE,EAAE,CAAC,EAAE,MAAM;AAAW,IAAE,CAAC,IAAE,GAAGD,CAAC,GAAGC,CAAC,GAAGJ,CAAC,IAAG,EAAE,CAAC,EAAE,OAAKJ;AAAC;AAAC,SAASoD,GAAe,GAAE;AAAC,MAAIpD,IAAE;AAAE,MAAO,EAAE,CAAC,MAAP,EAAS,GAAE,OAAO,GAAE,GAAEQ,EAAC,GAAER,IAAE;AAAA,WAAU,EAAE,CAAC,MAAIM,MAAG,EAAE,CAAC,MAAIA,GAAE,CAAAN,IAAE;AAAA,WAAU,EAAE,CAAC,MAAIM,MAAG,EAAE,CAAC,EAAE,CAAAN,IAAE,GAAEe,GAAsB,EAAE,CAAC,CAAC,MAAIf,KAAGqD,GAAuB,GAAE,GAAE,EAAE,CAAC,CAAC;AAAA,OAAO;AAAC,QAAG,EAAE,CAAC,MAAI/C,MAAG,CAAC,EAAE,CAAC,EAAE,QAAM,CAAC,IAAG,EAAE,CAAC,CAAC;AAAE,IAAAS,GAAsB,EAAE,CAAC,CAAC,IAAEf,IAAE,KAAGA,IAAE,GAAEA,KAAGqD,GAAuB,GAAE,GAAE,EAAE,CAAC,CAAC;AAAA,EAAE;AAAC,WAAQpD,IAAED,GAAEC,IAAE,EAAE,QAAOA,IAAI,CAAI,EAAEA,CAAC,MAAP,IAASgB,GAAiB,EAAEhB,CAAC,CAAC,MAAIA,KAAGqD,GAAuB,GAAErD,GAAE,EAAEA,CAAC,CAAC,MAAI,EAAE,OAAOA,GAAE,GAAEO,EAAC,GAAEP;AAAK,SAAO;AAAC;AAAC,SAASqD,GAAuB,GAAEtD,GAAEC,GAAE;AAAC,SAAO,EAAE,OAAOD,GAAE,GAAE,IAAGC,CAAC,GAAE;AAAC;AAAC,SAASoD,GAAuB,GAAErD,GAAEC,GAAE;AAAC,QAAMK,IAAEL,EAAE,SAAS,EAAE,GAAEG,IAAE,CAAA;AAAG,aAAUL,KAAKO,EAAE,CAAAF,EAAE,KAAKL,EAAE,YAAY,CAAC,CAAC;AAAE,SAAO,EAAE,OAAOC,GAAE,GAAE,IAAG,GAAGI,GAAE,EAAE,GAAE,IAAEA,EAAE;AAAM;AAAC,MAAM4C,KAAE,OAAO,OAAOtB,CAAC;AAAE,SAAS6B,GAAQ,GAAE;AAAC,SAAM,CAAC,CAAC,MAAM,QAAQ,CAAC,KAAI,EAAE,EAAE,SAAO,MAAK,CAAC,CAACP,GAAE,SAAS,EAAE,CAAC,CAAC,KAAc,OAAO,EAAE,CAAC,KAApB,YAAkC,OAAO,EAAE,CAAC,KAApB,YAAiC,OAAO,EAAE,CAAC,KAApB;AAAyB;AAAC,SAASQ,GAAe,GAAE;AAAC,MAAG,CAAC,EAAE,QAAM;AAAG,UAAO,EAAE,CAAC,GAAC;AAAA,IAAE,KAAK9B,EAAE;AAAA,IAAU,KAAKA,EAAE;AAAA,IAAO,KAAKA,EAAE;AAAW,aAAM;AAAA,IAAG;AAAQ,aAAM;AAAA,EAAE;AAAC;AAAC,SAAS+B,GAA2B,GAAE;AAAC,MAAG,CAAC,EAAE,QAAM;AAAG,UAAO,EAAE,CAAC,GAAC;AAAA,IAAE,KAAK/B,EAAE;AAAA,IAAW,KAAKA,EAAE;AAAQ;IAAS;AAAQ,aAAM;AAAA,EAAE;AAAC;AAA6T,SAASgC,GAAa,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIhC,EAAE;AAAK;AAAC,SAASiC,GAAe,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIjC,EAAE;AAAO;AAAC,SAASkC,GAAa,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIlC,EAAE;AAAK;AAAC,SAASmC,GAAiB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAInC,EAAE;AAAS;AAAC,SAASoC,GAAW,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIpC,EAAE;AAAG;AAAC,SAASqC,GAAgB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIrC,EAAE;AAAQ;AAAC,SAASsC,GAAY,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAItC,EAAE;AAAI;AAAC,SAASuC,GAAa,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIvC,EAAE;AAAK;AAAC,SAASwC,EAAc,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIxC,EAAE;AAAM;AAAC,SAASyC,GAAkB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAIzC,EAAE;AAAU;AAAgK,SAAS0C,GAAkB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAI1C,EAAE;AAAU;AAAC,SAAS2C,GAAiB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAI3C,EAAE;AAAS;AAAC,SAAS4C,GAAkB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAI5C,EAAE;AAAU;AAAC,SAAS6C,GAAkB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAI7C,EAAE;AAAU;AAAgE,SAAS8C,GAAiB,GAAE;AAAC,SAAM,CAAC,CAAC,KAAG,EAAE,CAAC,MAAI9C,EAAE;AAAS;ACAtysB,IAAI+C;AAAE,SAASC,GAAqB,GAAE;AAAC,MAAI1E,IAAE,EAAE,MAAK;AAAG,SAAM,CAACD,GAAEE,GAAEK,MAAI;AAAC,QAAIE,IAAE;AAAG,aAAQD,IAAEP,EAAE,QAAQC,CAAC,GAAEM,IAAEP,EAAE,WAASQ,IAAET,EAAE,QAAQC,EAAEO,CAAC,CAAC,GAAOC,MAAL,MAAQA,IAAEF,IAAGC,IAAI;AAAC,WAAWC,YAAGA,MAAIF,KAAGL,MAAIF,EAAEO,CAAC,MAAIE,KAAIA,KAAGT,EAAE,UAAQ,MAAIC,IAAED,EAAE,SAAQS;AAAA,EAAE;AAAC;AAAC,SAASmE,GAAsB,GAAE3E,GAAE;AAAC,QAAMC,IAAED,EAAE,CAAC;AAAE,MAAGO,GAAEN,CAAC,KAAGG,GAAEH,CAAC,KAAG0B,GAAE1B,CAAC,GAAE;AAAC,UAAMA,IAAE2E,GAAmB,GAAE5E,CAAC;AAAE,WAAM,EAAC,SAAQC,EAAE,SAAQ,MAAKA,EAAE,KAAI;AAAA,EAAC;AAAC,MAAGyB,GAAEzB,CAAC,GAAE;AAAC,UAAMA,IAAE4E,GAAgB,GAAE7E,CAAC;AAAE,WAAM,EAAC,SAAQC,EAAE,SAAQ,MAAKA,EAAE,KAAI;AAAA,EAAC;AAAC,MAAG2B,GAAE3B,CAAC,GAAE;AAAC,UAAMA,IAAE6E,GAAkB,GAAE9E,CAAC;AAAE,WAAM,EAAC,SAAQC,EAAE,SAAQ,MAAKA,EAAE,KAAI;AAAA,EAAC;AAAC,MAAG8E,GAAE9E,CAAC,GAAE;AAAC,UAAMA,IAAE8B,GAAe,GAAE/B,CAAC;AAAE,WAAM,EAAC,SAAQC,EAAE,SAAQ,MAAKA,EAAE,KAAI;AAAA,EAAC;AAAC,SAAM,EAAC,SAAQ,GAAE,MAAK,IAAI+E,EAAU/E,CAAC,EAAC;AAAC;AAAA,CAAE,SAAS,GAAE;AAAC,IAAE,WAAS,YAAW,EAAE,cAAY,gBAAe,EAAE,aAAW,cAAa,EAAE,UAAQ,WAAU,EAAE,QAAM;AAAO,GAAEwE,OAAIA,KAAE,CAAA,EAAG;AAAE,MAAMQ,GAAsB;AAAA,EAA5B;AAA6B,IAAA/E,EAAA,eAAM,CAAA;AAAA;AAAA,EAAG,QAAQH,GAAE;AAAC,WAAO,KAAK,MAAM,QAAQA,CAAC;AAAA,EAAC;AAAA,EAAC,GAAGA,GAAE;AAAC,QAAa,OAAOA,KAAjB,SAAmB,QAAOA,IAAE,MAAIA,IAAE,KAAK,MAAM,SAAOA,IAAG,KAAK,MAAMA,CAAC;AAAA,EAAC;AAAA,EAAC,QAAQA,GAAE,GAAE;AAAC,QAAO,KAAK,MAAM,WAAf,EAAsB;AAAO,UAAME,IAAEyE,GAAqB,KAAK,KAAK;AAAE,QAAIpE,IAAE;AAAE,WAAKA,IAAE,KAAK,MAAM,UAAQ;AAAC,YAAME,IAAE,KAAK,MAAMF,CAAC;AAAE,UAAIC;AAAE,UAAG,MAAIA,IAAE,EAAC,GAAG,EAAC,IAAQR,EAAE,EAAC,MAAKS,GAAE,QAAO,MAAK,OAAMD,EAAC,GAAED,CAAC,MAArC,GAAuC,QAAM;AAAG,UAAGA,IAAEL,EAAE,KAAK,OAAMO,GAAEF,CAAC,GAAOA,MAAL,GAAO;AAAA,IAAK;AAAA,EAAC;AAAA,EAAC,KAAKP,GAAE,GAAE;AAAC,IAAI,KAAK,MAAM,WAAf,KAAuB,KAAK,SAAS,CAACC,GAAEC,MAASF,EAAEC,GAAEC,CAAC,MAAV,OAAe,EAAE,UAASD,EAAE,SAAO,CAAC,KAAK,MAAM,SAASA,EAAE,IAAI,KAAQA,EAAE,KAAK,KAAKD,GAAEC,EAAE,KAAK,MAA1B,OAA8B,SAAS,CAAC;AAAA,EAAC;AAAC;AAAC,MAAMkF,WAAqBD,GAAsB;AAAA,EAA+B,YAAYlF,GAAEC,GAAEC,GAAE;AAAC;AAAjD,IAAAC,EAAA,cAAKuE,GAAE;AAAS,IAAAvE,EAAA;AAAK,IAAAA,EAAA;AAAoC,SAAK,OAAKH,GAAE,KAAK,WAASC,GAAE,KAAK,QAAMC;AAAA,EAAC;AAAA,EAAC,UAAS;AAAC,WAAO,KAAK,KAAK,CAAC,EAAE;AAAA,EAAK;AAAA,EAAC,YAAW;AAACF,IAAAA,GAAE,KAAK,QAAQ,MAAI,KAAK,WAAS,CAACC,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM;AAAA,EAAE;AAAA,EAAC,SAAQ;AAAC,WAAOD,GAAE,KAAK,QAAQ,IAAE,CAAC,KAAK,MAAK,GAAG,KAAK,MAAM,SAAS,CAAAA,MAAGA,EAAE,SAAQ,CAAE,IAAE,CAAC,KAAK,MAAK,GAAG,KAAK,MAAM,SAAS,CAAAA,MAAGA,EAAE,SAAQ,GAAG,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,UAAMA,IAAE,KAAK,MAAM,KAAK,CAAAA,MAAGE,GAAEF,CAAC,IAAEO,GAAEP,CAAC,IAAEA,EAAE,SAAQ,EAAE,EAAG,KAAK,EAAE;AAAE,WAAOO,GAAE,KAAK,IAAI,IAAEP,IAAEO,GAAE,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,MAAK,KAAK,MAAK,MAAK,KAAK,QAAO,GAAG,QAAO,KAAK,OAAM,GAAG,OAAM,KAAK,MAAM,KAAK,CAAAP,MAAGA,EAAE,OAAM,EAAE,EAAE;AAAA,EAAC;AAAA,EAAC,iBAAgB;AAAC,WAAOmF,GAAa,eAAe,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,eAAenF,GAAE;AAAC,WAAM,CAAC,CAACA,KAAIA,aAAamF,MAAcnF,EAAE,SAAO0E,GAAE;AAAA,EAAS;AAAC;AAAC,SAASI,GAAgB7E,GAAE,GAAE;AAAC,QAAMM,IAAE,CAAA;AAAG,MAAIE,IAAE;AAAE,aAAO;AAAC,UAAMD,IAAE,EAAEC,CAAC;AAAE,QAAG,CAACD,KAAGR,GAAEQ,CAAC,EAAE,QAAOP,EAAE,aAAa,IAAImF,GAAE,8CAA6C,EAAE,CAAC,EAAE,CAAC,GAAE,EAAE,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,CAAC,6BAA4B,gBAAgB,CAAC,CAAC,GAAE,EAAC,SAAQ,EAAE,QAAO,MAAK,IAAID,GAAa,EAAE,CAAC,GAAE3E,GAAED,CAAC,EAAC;AAAE,QAAG8E,GAAE7E,CAAC,EAAE,QAAM,EAAC,SAAQC,IAAE,GAAE,MAAK,IAAI0E,GAAa,EAAE,CAAC,GAAE3E,GAAED,CAAC,EAAC;AAAE,QAAG2C,GAAE1C,CAAC,GAAE;AAAC,YAAMR,IAAEsF,GAAgCrF,GAAE,EAAE,MAAMQ,CAAC,CAAC;AAAE,MAAAA,KAAGT,EAAE,SAAQO,EAAE,KAAK,GAAGP,EAAE,KAAK;AAAE;AAAA,IAAQ;AAAC,UAAMK,IAAEuE,GAAsB3E,GAAE,EAAE,MAAMQ,CAAC,CAAC;AAAE,IAAAA,KAAGJ,EAAE,SAAQE,EAAE,KAAKF,EAAE,IAAI;AAAA,EAAC;AAAC;AAAC,MAAMkF,WAAwBL,GAAsB;AAAA,EAAwC,YAAYlF,GAAEC,GAAEC,GAAE;AAAC,UAAK;AAA/D,IAAAC,EAAA,cAAKuE,GAAE;AAAY,IAAAvE,EAAA;AAAW,IAAAA,EAAA;AAAoC,SAAK,aAAWH,GAAE,KAAK,WAASC,GAAE,KAAK,QAAMC;AAAA,EAAC;AAAA,EAAC,YAAW;AAAC,QAAGF,GAAE,KAAK,QAAQ,GAAE;AAAC,YAAMA,IAAES,GAAE,KAAK,UAAU;AAAE,MAAAT,MAAI,KAAK,WAASA;AAAA,IAAE;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAOA,GAAE,KAAK,QAAQ,IAAE,CAAC,KAAK,YAAW,GAAG,KAAK,MAAM,SAAS,CAAAA,MAAGA,EAAE,OAAM,EAAE,CAAE,IAAE,CAAC,KAAK,YAAW,GAAG,KAAK,MAAM,SAAS,CAAAA,MAAGA,EAAE,SAAQ,GAAG,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,UAAMA,IAAE,KAAK,MAAM,KAAK,CAAAA,MAAGE,GAAEF,CAAC,IAAEO,GAAEP,CAAC,IAAEA,EAAE,WAAU,EAAG,KAAK,EAAE;AAAE,WAAOO,GAAE,KAAK,UAAU,IAAEP,IAAEO,GAAE,KAAK,QAAQ;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,MAAK,KAAK,MAAK,YAAW,KAAK,YAAW,QAAO,KAAK,UAAS,OAAM,KAAK,MAAM,KAAK,CAAAP,MAAGA,EAAE,OAAM,EAAE,EAAE;AAAA,EAAC;AAAA,EAAC,oBAAmB;AAAC,WAAOuF,GAAgB,kBAAkB,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,kBAAkBvF,GAAE;AAAC,WAAM,CAAC,CAACA,KAAIA,aAAauF,MAAiBvF,EAAE,SAAO0E,GAAE;AAAA,EAAY;AAAC;AAAC,SAASG,GAAmB5E,GAAE,GAAE;AAAC,QAAMM,IAAE0C,GAAE,EAAE,CAAC,EAAE,CAAC,CAAC;AAAE,MAAG,CAAC1C,EAAE,OAAM,IAAI,MAAM,yEAAyE;AAAE,QAAME,IAAE;AAAG,MAAID,IAAE;AAAE,aAAO;AAAC,UAAMH,IAAE,EAAEG,CAAC;AAAE,QAAG,CAACH,KAAGL,GAAEK,CAAC,EAAE,QAAOJ,EAAE,aAAa,IAAImF,GAAE,kDAAiD,EAAE,CAAC,EAAE,CAAC,GAAE,EAAE,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,CAAC,iCAAgC,gBAAgB,CAAC,CAAC,GAAE,EAAC,SAAQ,EAAE,QAAO,MAAK,IAAIG,GAAgB,EAAE,CAAC,GAAElF,GAAEI,CAAC,EAAC;AAAE,QAAGJ,EAAE,CAAC,MAAIE,EAAE,QAAM,EAAC,SAAQC,IAAE,GAAE,MAAK,IAAI+E,GAAgB,EAAE,CAAC,GAAElF,GAAEI,CAAC,EAAC;AAAE,QAAGyC,GAAE7C,CAAC,GAAE;AAAC,YAAML,IAAEsF,GAAgCrF,GAAE,EAAE,MAAMO,CAAC,CAAC;AAAE,MAAAA,KAAGR,EAAE,SAAQS,EAAE,KAAK,GAAGT,EAAE,KAAK;AAAE;AAAA,IAAQ;AAAC,UAAM,IAAE4E,GAAsB3E,GAAE,EAAE,MAAMO,CAAC,CAAC;AAAE,IAAAA,KAAG,EAAE,SAAQC,EAAE,KAAK,EAAE,IAAI;AAAA,EAAC;AAAC;AAAC,MAAM+E,GAAc;AAAA,EAAyB,YAAYxF,GAAE;AAAtC,IAAAG,EAAA,cAAKuE,GAAE;AAAW,IAAAvE,EAAA;AAAqB,SAAK,QAAMH;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAO,KAAK;AAAA,EAAK;AAAA,EAAC,WAAU;AAAC,WAAOO,GAAE,GAAG,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,MAAK,KAAK,MAAK,QAAO,KAAK,SAAQ;AAAA,EAAC;AAAA,EAAC,mBAAkB;AAAC,WAAOiF,GAAe,iBAAiB,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,iBAAiBxF,GAAE;AAAC,WAAM,CAAC,CAACA,KAAIA,aAAawF,MAAgBxF,EAAE,SAAO0E,GAAE;AAAA,EAAW;AAAC;AAAC,SAASK,GAAkB,GAAE9E,GAAE;AAAC,MAAIC,IAAE;AAAE,aAAO;AAAC,UAAMF,IAAEC,EAAEC,CAAC;AAAE,QAAG,CAAC2B,GAAE7B,CAAC,EAAE,QAAM,EAAC,SAAQE,GAAE,MAAK,IAAIsF,GAAevF,EAAE,MAAM,GAAEC,CAAC,CAAC,EAAC;AAAE,IAAAA;AAAA,EAAG;AAAC;AAAC,MAAMuF,GAAW;AAAA,EAAsB,YAAYzF,GAAE;AAAnC,IAAAG,EAAA,cAAKuE,GAAE;AAAQ,IAAAvE,EAAA;AAAqB,SAAK,QAAMH;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,CAAC,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,WAAOO,GAAE,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,MAAK,KAAK,MAAK,QAAO,KAAK,SAAQ;AAAA,EAAC;AAAA,EAAC,gBAAe;AAAC,WAAOkF,GAAY,cAAc,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,cAAczF,GAAE;AAAC,WAAM,CAAC,CAACA,KAAIA,aAAayF,MAAazF,EAAE,SAAO0E,GAAE;AAAA,EAAQ;AAAC;AAAC,SAAS1C,GAAe,GAAE/B,GAAE;AAAC,SAAM,EAAC,SAAQ,GAAE,MAAK,IAAIwF,GAAYxF,EAAE,CAAC,CAAC,EAAC;AAAC;AAAC,SAASqF,GAAgC,GAAErF,GAAE;AAAC,QAAMC,IAAE,CAAA;AAAG,MAAIK,IAAE;AAAE,YAAO,KAAGsB,GAAE5B,EAAEM,CAAC,CAAC,GAAE;AAAC,UAAMP,IAAE+E,GAAkB,GAAE9E,EAAE,MAAMM,CAAC,CAAC;AAAE,IAAAA,KAAGP,EAAE,SAAQE,EAAE,KAAKF,EAAE,IAAI;AAAA,EAAC,OAAK;AAAC,QAAG,CAACgF,GAAE/E,EAAEM,CAAC,CAAC,EAAE,QAAM,EAAC,SAAQA,GAAE,OAAML,EAAC;AAAE,IAAAA,EAAE,KAAK,IAAIuF,GAAYxF,EAAEM,CAAC,CAAC,CAAC,GAAEA;AAAA,EAAG;AAAC;AAAC,MAAM0E,EAAS;AAAA,EAAoB,YAAYjF,GAAE;AAAjC,IAAAG,EAAA,cAAKuE,GAAE;AAAM,IAAAvE,EAAA;AAAqB,SAAK,QAAMH;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,CAAC,KAAK,KAAK;AAAA,EAAC;AAAA,EAAC,WAAU;AAAC,WAAO,KAAK,MAAM,CAAC;AAAA,EAAC;AAAA,EAAC,SAAQ;AAAC,WAAM,EAAC,MAAK,KAAK,MAAK,QAAO,KAAK,OAAM,EAAE;AAAA,EAAC;AAAA,EAAC,cAAa;AAAC,WAAOiF,EAAU,YAAY,IAAI;AAAA,EAAC;AAAA,EAAC,OAAO,YAAYjF,GAAE;AAAC,WAAM,CAAC,CAACA,KAAIA,aAAaiF,KAAWjF,EAAE,SAAO0E,GAAE;AAAA,EAAM;AAAC;AAAC,SAASgB,GAAoBxF,GAAEK,GAAE;AAAC,QAAME,IAAE,EAAC,eAA+B,MAAI;AAAA,EAAC,GAAE,GAAED,IAAE,CAAC,GAAGN,CAAC;AAAEF,EAAAA,GAAEQ,EAAEA,EAAE,SAAO,CAAC,CAAC,KAAGA,EAAE,KAAK,CAACP,EAAE,KAAI,IAAGO,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,MAAM,CAAC;AAAE,QAAMH,IAAEuE,GAAsBnE,GAAED,CAAC;AAAE,MAAGR,GAAEQ,EAAE,KAAK,IAAIH,EAAE,SAAQG,EAAE,SAAO,CAAC,CAAC,CAAC,EAAE,QAAOH,EAAE;AAAK,EAAAI,EAAE,aAAa,IAAI2E,GAAE,iDAAgDlF,EAAE,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,CAAC,kCAAiC,cAAc,CAAC,CAAC;AAAC;AAAiT,SAASyF,GAAyCzF,GAAEK,GAAE;AAAC,QAAME,IAAE,EAAC,eAAaF,KAAA,gBAAAA,EAAG,kBAAe,MAAI;AAAA,EAAC,GAAE,GAAEC,IAAE,CAAC,GAAGN,CAAC;AAAE,MAAOA,EAAE,WAAN,EAAa,QAAM,CAAA;AAAGF,EAAAA,GAAEQ,EAAEA,EAAE,SAAO,CAAC,CAAC,KAAGA,EAAE,KAAK,CAACP,EAAE,KAAI,IAAGO,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,MAAM,CAAC;AAAE,QAAMH,IAAE,CAAA;AAAG,MAAIuB,IAAE,IAAGD,IAAE;AAAE,aAAO;AAAC,QAAG,CAACnB,EAAEmB,CAAC,KAAG3B,GAAEQ,EAAEmB,CAAC,CAAC,EAAE,QAAOC,EAAE,UAAQvB,EAAE,KAAKuB,CAAC,GAAEvB;AAAE,QAAGuF,GAAEpF,EAAEmB,CAAC,CAAC,GAAE;AAAC,MAAAtB,EAAE,KAAKuB,CAAC,GAAEA,IAAE,IAAGD;AAAI;AAAA,IAAQ;AAAC,UAAM1B,IAAE2E,GAAsBnE,GAAEP,EAAE,MAAMyB,CAAC,CAAC;AAAE,IAAAC,EAAE,KAAK3B,EAAE,IAAI,GAAE0B,KAAG1B,EAAE;AAAA,EAAO;AAAC;AAA8J,SAAS4F,GAAQ,GAAE5F,GAAEC,GAAE;AAAC,MAAO,EAAE,WAAN,EAAa;AAAO,QAAMK,IAAEoE,GAAqB,CAAC;AAAE,MAAI,IAAE;AAAE,SAAK,IAAE,EAAE,UAAQ;AAAC,UAAMnE,IAAE,EAAE,CAAC;AAAQ,QAAsBP,EAAE,EAAC,MAAKO,GAAE,QAAO,EAAC,OAAM,EAAC,GAAE,OAAnD,OAA0D,GAAE,CAAC,MAA1C,GAA4C,QAAM;AAAG,QAAG,IAAED,EAAE,GAAEC,GAAE,CAAC,GAAO,MAAL,GAAO;AAAA,EAAK;AAAC;AAAC,SAASsF,GAAK,GAAE7F,GAAEC,GAAE;AAAC,EAAI,EAAE,WAAN,KAAc2F,GAAQ,IAAG,CAAC3F,GAAEK,MAASN,EAAEC,GAAEK,CAAC,MAAV,OAAe,EAAE,UAASL,EAAE,SAAO,CAAC,EAAE,SAASA,EAAE,IAAI,KAAQA,EAAE,KAAK,KAAKD,GAAEC,EAAE,KAAK,MAA1B,OAA8B,OAAU;AAAC;AAAC,SAAS6F,GAAuB,GAAE9F,GAAE;AAAC,WAAQC,IAAE,GAAEA,IAAE,EAAE,QAAOA;AAAK,IAAA4F,GAAK,EAAE5F,CAAC,IAAG,CAACF,GAAEE,MAAI;AAAC,UAAa,OAAOA,KAAjB,SAAmB;AAAO,YAAM,IAAED,EAAED,EAAE,IAAI;AAAE,YAAI,MAAM,QAAQ,CAAC,IAAEA,EAAE,OAAO,MAAM,OAAOE,GAAE,GAAE,GAAG,CAAC,IAAEF,EAAE,OAAO,MAAM,OAAOE,GAAE,GAAE,CAAC;AAAA,IAAE,EAAC;AAAG,SAAO;AAAC;AAA0F,SAAS8F,GAAkB,GAAE;AAAC,SAAOT,GAAgB,kBAAkB,CAAC;AAAC;AAAC,SAASU,GAAe,GAAE;AAAC,SAAOd,GAAa,eAAe,CAAC;AAAC;AAAC,SAASe,GAAiB,GAAE;AAAC,SAAOV,GAAe,iBAAiB,CAAC;AAAC;AAAC,SAASW,GAAc,GAAE;AAAC,SAAOV,GAAY,cAAc,CAAC;AAAC;AAAC,SAASW,GAA0B,GAAE;AAAC,SAAOF,GAAiB,CAAC,KAAGC,GAAc,CAAC;AAAC;AAAC,SAASE,EAAY,GAAE;AAAC,SAAOpB,EAAU,YAAY,CAAC;AAAC;ACA/7O,MAAMqB,KAAE;AAAS,SAASC,GAAc,GAAE;AAAC,SAAO,EAAE,QAAQD,KAAG,CAAAtG,MAAG,OAAO,aAAaA,EAAE,WAAW,CAAC,IAAE,EAAE,EAAC;AAAE;AAAC,MAAMwG,KAAE,EAAC,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,IAAG,MAAK,GAAE,MAAK,KAAI,OAAM,MAAK,OAAM,KAAI,OAAM,MAAK,OAAM,IAAG,KAAI,GAAE,KAAI,IAAG,MAAK,KAAI,KAAI,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,MAAK,OAAG,KAAG,CAAC,GAAE,CAAC,KAAI,OAAG,KAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,EAAE,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,OAAM,OAAG,CAAC,GAAE,CAAC,QAAO,OAAG,IAAE,GAAE,GAAE,CAAC,OAAM,OAAG,IAAE,MAAI,KAAK,EAAE,GAAE,CAAC,QAAO,OAAG,IAAE,GAAG,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,OAAM,OAAG,MAAG,CAAC,GAAE,CAAC,QAAO,OAAG,CAAC,GAAE,CAAC,OAAM,OAAG,MAAG,IAAE,MAAI,KAAK,EAAE,GAAE,CAAC,QAAO,OAAG,MAAG,IAAE,GAAG,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,OAAM,OAAG,IAAE,GAAG,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,OAAK,CAAC,GAAE,CAAC,KAAI,OAAG,OAAK,IAAE,CAAC,GAAE,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,CAAC,GAAE,CAAC,MAAK,OAAG,KAAG,CAAC,GAAE,CAAC,MAAK,OAAG,KAAG,CAAC,CAAC,CAAC,GAAEjB,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,MAAI,CAAC,GAAE,CAAC,OAAM,OAAG,CAAC,CAAC,CAAC,GAAEkB,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,IAAE,EAAE,GAAE,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,KAAI,OAAG,IAAE,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,OAAK,EAAE,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,KAAI,OAAG,IAAE,GAAG,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,IAAE,IAAE,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,IAAI,GAAE,CAAC,KAAI,OAAG,IAAE,IAAE,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,CAAC,GAAE,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,EAAE,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,IAAE,KAAG,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,IAAI,GAAE,CAAC,KAAI,OAAG,IAAE,KAAG,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,CAAC,GAAE,CAAC,MAAK,OAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,EAAE,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,IAAE,KAAG,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,IAAI,GAAE,CAAC,KAAI,OAAG,IAAE,KAAG,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,KAAG,EAAE,GAAE,CAAC,MAAK,OAAG,CAAC,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,IAAE,IAAE,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,CAAC,GAAE,CAAC,KAAI,OAAG,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,IAAI,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,OAAK,CAAC,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,OAAK,EAAE,GAAE,CAAC,MAAK,OAAG,IAAE,IAAE,OAAK,EAAE,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,OAAM,OAAG,MAAI,IAAE,KAAK,EAAE,GAAE,CAAC,QAAO,OAAG,MAAI,IAAE,KAAK,KAAG,GAAE,GAAE,CAAC,OAAM,OAAG,CAAC,GAAE,CAAC,QAAO,OAAG,MAAI,IAAE,KAAK,KAAG,GAAG,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAK,OAAG,MAAI,CAAC,GAAE,CAAC,KAAI,OAAG,CAAC,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,OAAM,OAAG,MAAI,CAAC,GAAE,CAAC,QAAO,OAAG,MAAI,IAAE,GAAE,GAAE,CAAC,OAAM,OAAG,MAAI,IAAE,MAAI,KAAK,EAAE,GAAE,CAAC,QAAO,OAAG,CAAC,CAAC,CAAC,GAAEC,KAAE,oBAAI,IAAI,CAAC,CAAC,MAAKd,EAAC,GAAE,CAAC,MAAKK,EAAC,GAAE,CAAC,KAAIK,EAAC,GAAE,CAAC,MAAKN,EAAC,GAAE,CAAC,MAAKG,EAAC,GAAE,CAAC,MAAKC,EAAC,GAAE,CAAC,MAAKC,EAAC,GAAE,CAAC,MAAKH,EAAC,GAAE,CAAC,KAAIM,EAAC,GAAE,CAAC,OAAMX,EAAC,GAAE,CAAC,QAAOC,EAAC,GAAE,CAAC,OAAMS,EAAC,GAAE,CAAC,QAAOE,EAAC,GAAE,CAAC,MAAKV,EAAC,GAAE,CAAC,OAAMhB,EAAC,CAAC,CAAC;AAAE,SAAS4B,GAAY,GAAEvH,GAAE;AAAmB,MAAf,CAACwH,GAAE,CAAC,KAAc,CAACA,GAAExH,CAAC,EAAE,QAAOA;AAAE,QAAMC,IAAEqG,GAAc,EAAE,CAAC,EAAE,IAAI,GAAE,IAAEA,GAActG,EAAE,CAAC,EAAE,IAAI;AAAE,MAAGC,MAAI,EAAE,QAAOD;AAAE,QAAM2B,IAAE2F,GAAE,IAAI,CAAC;AAAE,MAAG,CAAC3F,EAAE,QAAO3B;AAAE,QAAM4B,IAAED,EAAE,IAAI1B,CAAC;AAAE,MAAG,CAAC2B,EAAE,QAAO5B;AAAE,QAAMO,IAAEqB,EAAE5B,EAAE,CAAC,EAAE,KAAK,GAAEM,IAAE,CAACmE,EAAE,WAAU,IAAGzE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,GAAGA,EAAE,CAAC,GAAE,eAAcO,IAAE,IAAE,MAAI,QAAO,MAAK,OAAO,UAAUA,CAAC,IAAE6E,EAAE,UAAQA,EAAE,QAAO,OAAM7E,EAAC,CAAC;AAAE,SAAO0C,GAAE3C,GAAE,EAAE,CAAC,EAAE,IAAI,GAAEA;AAAC;AAAC,SAASmH,GAAgB,GAAE;AAAC,MAAG,CAACD,GAAE,CAAC,EAAE,QAAO;AAAE,QAAMxH,IAAEsG,GAAc,EAAE,CAAC,EAAE,IAAI,GAAErG,IAAEsG,GAAEvG,CAAC;AAAE,MAAGA,MAAIC,EAAE,QAAO;AAAE,QAAM,IAAEqH,GAAE,IAAItH,CAAC;AAAE,MAAG,CAAC,EAAE,QAAO;AAAE,QAAM2B,IAAE,EAAE,IAAI1B,CAAC;AAAE,MAAG,CAAC0B,EAAE,QAAO;AAAE,QAAMC,IAAED,EAAE,EAAE,CAAC,EAAE,KAAK,GAAEpB,IAAE,CAACkE,EAAE,WAAU,IAAG,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,GAAG,EAAE,CAAC,GAAE,eAAc7C,IAAE,IAAE,MAAI,QAAO,MAAK,OAAO,UAAUA,CAAC,IAAEwD,EAAE,UAAQA,EAAE,QAAO,OAAMxD,EAAC,CAAC;AAAE,SAAOqB,GAAE1C,GAAEN,CAAC,GAAEM;AAAC;AAAC,SAASmH,GAAS1H,GAAE;AAAC,MAAOA,EAAE,WAAN,EAAa;AAAS,QAAM,IAAEA,EAAE,CAAC,EAAE;AAAM,MAAII,IAAEJ,EAAE,CAAC,EAAE;AAAM,MAAG2H,EAAE,CAAC,KAAGA,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,QAAOzE,EAAE,SAAQ,GAAG,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,OAAM,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwC,GAAE,CAAC,KAAGA,GAAExH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,YAAWzE,EAAE,SAAQ,IAAG,KAAI,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,EAAC,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwH,GAAE,CAAC,KAAGA,GAAEpH,CAAC,MAAIA,IAAEmH,GAAY,GAAEnH,CAAC,GAAEkG,GAAc,EAAE,CAAC,EAAE,IAAI,MAAIA,GAAclG,EAAE,CAAC,EAAE,IAAI,IAAG;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,WAAUzE,EAAE,SAAQ,IAAG,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,QAAO,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASyC,GAAS7H,GAAE;AAAC,MAAOA,EAAE,WAAN,EAAa,QAAM;AAAG,QAAM,IAAEA,EAAE,CAAC,EAAE,OAAMI,IAAEJ,EAAE,CAAC,EAAE;AAAM,MAAG2H,EAAE,CAAC,KAAGA,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,QAAOzE,EAAE,SAAQ,GAAG,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,OAAO,UAAUA,CAAC,IAAEoF,EAAE,UAAQA,EAAE,OAAM,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwC,GAAE,CAAC,KAAGD,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,YAAWzE,EAAE,SAAQ,IAAG,KAAI,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,EAAC,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwH,GAAE,CAAC,KAAGG,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,WAAUzE,EAAE,SAAQ,IAAG,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,OAAO,UAAUA,CAAC,IAAEoF,EAAE,UAAQA,EAAE,QAAO,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS0C,GAAc,GAAE;AAAC,SAAM,CAAC,CAAC,KAAa,OAAO,KAAjB,YAAoB,YAAW,KAAG,MAAM,QAAQ,EAAE,MAAM,KAAG,eAAc;AAAC;AAAC,SAASC,GAAM,GAAE;AAAC,MAAQ,MAAL,GAAO,QAAM;AAAG,QAAM,IAAE;AAAG,WAAQ3H,IAAE,GAAEA,IAAE,EAAE,OAAO,QAAOA,KAAI;AAAC,UAAMuB,IAAE,EAAE,OAAOvB,CAAC;AAAE,QAAGJ,EAAE2B,CAAC,GAAE;AAAC,QAAE,KAAKA,CAAC;AAAE;AAAA,IAAQ;AAAC,UAAMC,IAAEmG,GAAMpG,CAAC;AAAE,QAAQC,MAAL,GAAO;AAAS,MAAE,KAAKA,CAAC;AAAA,EAAC;AAAC,SAAO,EAAE,UAAU,CAAC;AAAC;AAAC,SAASoG,GAAehI,GAAE;AAAC,MAAOA,EAAE,WAAN,EAAa,QAAM;AAAG,QAAM,IAAEA,EAAE,CAAC,EAAE,OAAMI,IAAEJ,EAAE,CAAC,EAAE;AAAM,MAAG2H,EAAE,CAAC,KAAGA,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,QAAOzE,EAAE,YAAW,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,OAAM,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwC,GAAE,CAAC,KAAGD,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,YAAWzE,EAAE,SAAQ,IAAG,KAAI,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,EAAC,CAAC,CAAC;AAAA,EAAC;AAAC,MAAG2H,EAAE,CAAC,KAAGC,GAAExH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,YAAWzE,EAAE,SAAQ,IAAG,KAAI,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,EAAC,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwH,GAAE,CAAC,KAAGG,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,WAAUzE,EAAE,SAAQ,IAAG,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,QAAO,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGuC,EAAE,CAAC,KAAGH,GAAEpH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,WAAUzE,EAAE,SAAQ,IAAGI,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,QAAO,MAAKhF,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS6H,GAA2BhI,GAAEG,GAAE;AAAC,WAAQuB,IAAE,GAAEA,IAAE1B,EAAE,QAAO0B,KAAI;AAAC,UAAMC,IAAE3B,EAAE0B,CAAC;AAAE,QAAG,CAAC3B,EAAE4B,CAAC,EAAE;AAAS,UAAMrB,IAAEqB,EAAE;AAAM,QAAG,CAACoB,GAAEzC,CAAC,EAAE;AAAS,UAAM,IAAE+F,GAAc/F,EAAE,CAAC,EAAE,KAAK;AAAE,YAAO;MAAG,KAAI;AAAI,QAAAN,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAE,CAAC0E,EAAE,QAAO,KAAK,EAAE,SAAQ,GAAGlE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,KAAK,GAAE,MAAK6E,EAAE,OAAM,CAAC,CAAC,CAAC;AAAE;AAAA,MAAM,KAAI;AAAK,QAAAnF,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAE,CAAC0E,EAAE,QAAO,KAAK,GAAG,SAAQ,GAAGlE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,KAAK,IAAG,MAAK6E,EAAE,OAAM,CAAC,CAAC,CAAC;AAAE;AAAA,MAAM,KAAI;AAAW,QAAAnF,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAE,CAAC0E,EAAE,QAAO,YAAWlE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAI,MAAK6E,EAAE,OAAM,CAAC,CAAC,CAAC;AAAE;AAAA,MAAM,KAAI;AAAY,QAAAnF,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAE,CAAC0E,EAAE,QAAO,aAAYlE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,QAAK,MAAK6E,EAAE,OAAM,CAAC,CAAC,CAAC;AAAE;AAAA,MAAM,KAAI;AAAM,QAAAnF,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAE,CAAC0E,EAAE,QAAO,OAAMlE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK6E,EAAE,OAAM,CAAC,CAAC,CAAC;AAAE;AAAA,MAAM;AAAQ,YAAGhF,EAAE,IAAI,CAAC,GAAE;AAAC,gBAAMJ,IAAEI,EAAE,IAAI,CAAC;AAAE,UAAAH,EAAE,OAAO0B,GAAE,GAAE,IAAI5B,EAAEC,CAAC,CAAC;AAAA,QAAC;AAAA,IAAC;AAAA,EAAC;AAAC,SAAOC;AAAC;AAAC,SAASiI,GAAM,GAAE;AAAC,MAAO,EAAE,WAAN,EAAa,QAAM;AAAG,QAAMlI,IAAE,EAAE,CAAC,EAAE;AAAM,SAAOmI,GAAEnI,CAAC,IAAE,EAAE,CAAC,IAAE;AAAE;AAAC,SAASoI,GAAoB,GAAEpI,GAAEC,GAAE;AAAC,SAAOuH,GAAExH,CAAC,IAAEqI,GAAuB,GAAErI,EAAE,CAAC,EAAE,MAAKC,CAAC,IAAE2H,GAAE5H,CAAC,IAAEsI,GAAwB,GAAErI,CAAC,IAAE0H,EAAE3H,CAAC,IAAEuI,GAAoB,GAAEtI,CAAC,IAAE;AAAE;AAAC,SAASoI,GAAuBrI,GAAE,GAAEI,GAAE;AAAC,QAAMuB,IAAE3B,EAAE;AAAS,SAAM,EAAC,QAAO,CAAC,IAAID,EAAE,CAAC0E,EAAE,WAAUrE,EAAE,aAAW,GAAEuB,EAAE,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,EAAC,OAAMvB,GAAE,MAAK,OAAO,UAAUA,CAAC,IAAEgF,EAAE,UAAQA,EAAE,QAAO,MAAK,EAAC,CAAC,CAAC,CAAC,GAAE,WAAU8C,GAAK;AAAC;AAAC,SAASI,GAAwBtI,GAAE,GAAE;AAAC,QAAMI,IAAEJ,EAAE,OAAM;AAAG,SAAM,EAAC,QAAO,CAAC,IAAID,EAAE,CAAC0E,EAAE,YAAW,EAAE,SAAQ,IAAG,KAAIrE,EAAE,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,EAAC,OAAM,EAAC,CAAC,CAAC,CAAC,GAAE,WAAU8H,GAAK;AAAC;AAAC,SAASK,GAAoBvI,GAAE,GAAE;AAAC,QAAMI,IAAEJ,EAAE,OAAM;AAAG,SAAM,EAAC,QAAO,CAAC,IAAID,EAAE,CAAC0E,EAAE,QAAO,EAAE,SAAQ,GAAGrE,EAAE,CAAC,EAAE,CAAC,GAAEA,EAAEA,EAAE,SAAO,CAAC,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAK,OAAO,UAAU,CAAC,IAAEgF,EAAE,UAAQA,EAAE,OAAM,CAAC,CAAC,CAAC,GAAE,WAAU8C,GAAK;AAAC;AAAC,SAASM,GAAU,GAAExI,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,SAAI2H,EAAE1H,CAAC,IAAkBoI,GAAuB,GAAE,OAAM,KAAK,KAAKpI,EAAE,CAAC,EAAE,KAAK,CAAC;AAAC;AAAC,SAASwI,GAAU,GAAEzI,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,SAAI2H,EAAE1H,CAAC,IAAkBoI,GAAuB,GAAE,OAAM,KAAK,KAAKpI,EAAE,CAAC,EAAE,KAAK,CAAC,IAA9D;AAA+D;AAAC,SAASyI,GAAU,GAAE1I,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,SAAI2H,EAAE1H,CAAC,IAAkBoI,GAAuB,GAAE,OAAM,KAAK,KAAKpI,EAAE,CAAC,EAAE,KAAK,CAAC,IAA9D;AAA+D;AAAC,SAAS0I,GAAoB,GAAE;AAAC,SAAOnB,GAAE,CAAC,KAAGG,EAAE,CAAC;AAAC;AAAC,SAASiB,GAAmB,GAAE;AAAC,MAAO,EAAE,WAAN,EAAa;AAAS,QAAM5I,IAAE,EAAE,CAAC;AAAE,MAAG,CAACmI,GAAEnI,CAAC,EAAE;AAAS,MAAO,EAAE,WAAN,EAAa,QAAM;AAAG,MAAGwH,GAAExH,CAAC,GAAE;AAAC,UAAMC,IAAEqG,GAActG,EAAE,CAAC,EAAE,IAAI;AAAE,aAAQ,IAAE,GAAE,IAAE,EAAE,QAAO,KAAI;AAAC,YAAM2B,IAAE,EAAE,CAAC;AAA0B,UAArB3B,EAAE,CAAC,MAAI2B,EAAE,CAAC,KAAc1B,MAAIqG,GAAc3E,EAAE,CAAC,EAAE,IAAI,EAAE;IAAQ;AAAC;EAAQ;AAAC,WAAQ1B,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAM,IAAE,EAAEA,CAAC;AAAE,QAAGD,EAAE,CAAC,MAAI,EAAE,CAAC,EAAE,QAAM;AAAA,EAAE;AAAC,SAAM;AAAE;AAAC,SAAS6I,GAAiB,GAAE7I,GAAE;AAAC,SAAM,CAAC,CAACmI,GAAE,CAAC,MAAIX,GAAE,CAAC,IAAE,EAAE,CAAC,MAAIxH,EAAE,CAAC,KAAGsG,GAAc,EAAE,CAAC,EAAE,IAAI,MAAIA,GAActG,EAAE,CAAC,EAAE,IAAI,IAAE,EAAE,CAAC,MAAIA,EAAE,CAAC;AAAE;AAAC,SAAS8I,GAAW,GAAE9I,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE;AAAM,MAAG,CAAC2I,GAAoB,CAAC,EAAE,QAAM;AAAG,QAAMhH,IAAE4F,GAAY,GAAEtH,EAAE,KAAK;AAAE,SAAI4I,GAAiB,GAAElH,CAAC,IAAkB0G,GAAuB,GAAE,OAAM,KAAK,MAAM,EAAE,CAAC,EAAE,OAAM1G,EAAE,CAAC,EAAE,KAAK,CAAC,IAA1E;AAA2E;AAAC,SAASoH,GAAS,GAAE/I,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE;AAAwB,SAAf,CAACmI,GAAE,CAAC,KAAc,CAAClI,EAAE,kBAAgB2H,GAAE,CAAC,IAAQ,KAAUQ,GAAoB,GAAE,GAAE,KAAK,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC;AAAC;AAAC,SAASY,GAAW,GAAE,GAAE5I,GAAEuB,GAAEC,GAAE;AAAC,MAAG,CAAC5B,EAAE,CAAC,KAAG,CAACA,EAAEI,CAAC,KAAG,CAACJ,EAAE2B,CAAC,EAAE;AAAS,QAAMpB,IAAE,EAAE;AAAwB,MAAf,CAAC4H,GAAE5H,CAAC,KAAc,CAACqB,EAAE,kBAAgBgG,GAAErH,CAAC,EAAE,QAAM;AAAG,QAAMD,IAAEiH,GAAYhH,GAAEH,EAAE,KAAK;AAAE,MAAG,CAACyI,GAAiBtI,GAAED,CAAC,EAAE,QAAM;AAAG,QAAMyE,IAAEwC,GAAYhH,GAAEoB,EAAE,KAAK;AAAE,SAAIkH,GAAiBtI,GAAEwE,CAAC,IAAkBqD,GAAoB,GAAE7H,GAAE,KAAK,IAAIA,EAAE,CAAC,EAAE,OAAM,KAAK,IAAID,EAAE,CAAC,EAAE,OAAMyE,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,IAAtF;AAAuF;AAAC,SAASkE,GAAS,GAAEjJ,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,MAAG,CAAC2I,GAAoB1I,CAAC,EAAE,QAAM;AAAG,MAAI,IAAEA,EAAE,CAAC,EAAE;AAAM,MAAGuH,GAAEvH,CAAC,EAAE,SAAOA,EAAE,CAAC,EAAE,KAAK,YAAW;IAAI,KAAI;AAAM;AAAA,IAAM,KAAI;AAAM,UAAEwG,GAAE,IAAI,KAAK,EAAExG,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM,KAAI;AAAO,UAAEyG,GAAE,IAAI,KAAK,EAAEzG,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM,KAAI;AAAO,UAAEoH,GAAE,IAAI,KAAK,EAAEpH,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM;AAAQ,aAAM;AAAA,EAAE;AAAC,SAAO,IAAE,KAAK,IAAI,CAAC,GAAEsI,GAAoB,GAAE,CAAC;AAAC;AAAC,SAASW,GAAS,GAAElJ,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,SAAI2H,EAAE1H,CAAC,IAAkBsI,GAAoB,GAAE,KAAK,IAAItI,EAAE,CAAC,EAAE,KAAK,CAAC,IAApD;AAAqD;AAAC,SAASkJ,GAAW,GAAE,GAAE/I,GAAE;AAAC,MAAG,CAAC,EAAE,MAAMJ,CAAC,EAAE;AAAS,QAAM2B,IAAE,EAAE,CAAC,EAAE;AAAwB,MAAf,CAACwG,GAAExG,CAAC,KAAc,CAACvB,EAAE,kBAAgBwH,GAAEjG,CAAC,EAAE,QAAM;AAAG,QAAMC,IAAE,EAAE,KAAK,CAAA7B,MAAGwH,GAAY5F,GAAE5B,EAAE,KAAK,EAAC;AAAG,MAAG,CAAC6I,GAAmBhH,CAAC,EAAE;AAAS,QAAMrB,IAAEqB,EAAE,KAAK,CAAA7B,MAAGA,EAAE,CAAC,EAAE,MAAK,GAAGO,IAAE,KAAK,MAAM,GAAGC,CAAC;AAAE,SAAO6H,GAAoB,GAAEzG,GAAErB,CAAC;AAAC;AAAC,SAAS8I,GAAS,GAAE,GAAEhJ,GAAE;AAAC,MAAG,CAAC,EAAE,MAAMJ,CAAC,EAAE,QAAM;AAAG,QAAM2B,IAAE,EAAE,CAAC,EAAE;AAAwB,MAAf,CAACwG,GAAExG,CAAC,KAAc,CAACvB,EAAE,kBAAgBwH,GAAEjG,CAAC,EAAE;AAAS,QAAMC,IAAE,EAAE,KAAK,CAAA7B,MAAGwH,GAAY5F,GAAE5B,EAAE,KAAK,EAAC;AAAG,MAAG,CAAC6I,GAAmBhH,CAAC,EAAE,QAAM;AAAG,QAAMrB,IAAEqB,EAAE,KAAK,CAAA7B,MAAGA,EAAE,CAAC,EAAE,MAAK,GAAGO,IAAE,KAAK,IAAI,GAAGC,CAAC;AAAE,SAAO6H,GAAoB,GAAEzG,GAAErB,CAAC;AAAC;AAAC,SAAS+I,GAAS,GAAE,GAAEjJ,GAAE;AAAC,MAAG,CAAC,EAAE,MAAMJ,CAAC,EAAE,QAAM;AAAG,QAAM2B,IAAE,EAAE,CAAC,EAAE;AAAwB,MAAf,CAACwG,GAAExG,CAAC,KAAc,CAACvB,EAAE,kBAAgBwH,GAAEjG,CAAC,EAAE,QAAM;AAAG,QAAMC,IAAE,EAAE,KAAK,CAAA7B,MAAGwH,GAAY5F,GAAE5B,EAAE,KAAK;AAAI,MAAG,CAAC6I,GAAmBhH,CAAC,EAAE,QAAM;AAAG,QAAMrB,IAAEqB,EAAE,KAAK,CAAA7B,MAAGA,EAAE,CAAC,EAAE,SAAQO,IAAE,KAAK,IAAI,GAAGC,CAAC;AAAE,SAAO6H,GAAoB,GAAEzG,GAAErB,CAAC;AAAC;AAAC,SAASgJ,GAAS,GAAEtJ,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE;AAAM,MAAG,CAACmI,GAAE,CAAC,EAAE;AAAS,QAAMxG,IAAE4F,GAAY,GAAEtH,EAAE,KAAK;AAAE,MAAG,CAAC4I,GAAiB,GAAElH,CAAC,EAAE;AAAS,MAAIC;AAAE,SAAOA,IAAMD,EAAE,CAAC,EAAE,UAAT,IAAe,OAAO,MAAI,OAAO,SAAS,EAAE,CAAC,EAAE,KAAK,MAAI,OAAO,SAASA,EAAE,CAAC,EAAE,KAAK,MAAIA,EAAE,CAAC,EAAE,UAAQ,OAAO,qBAAmB,EAAE,CAAC,EAAE,UAAQ,OAAO,qBAAmB,CAAC,OAAO,GAAG,IAAE,EAAE,CAAC,EAAE,OAAM,EAAE,OAAKA,EAAE,CAAC,EAAE,UAAQ,OAAO,qBAAmB,EAAE,CAAC,EAAE,UAAQ,OAAO,qBAAmB,CAAC,OAAO,GAAG,IAAE,EAAE,CAAC,EAAE,OAAM,CAAC,MAAI,OAAO,SAASA,EAAE,CAAC,EAAE,KAAK,KAAG,EAAE,CAAC,EAAE,QAAMA,EAAE,CAAC,EAAE,QAAMA,EAAE,CAAC,EAAE,SAAOA,EAAE,CAAC,EAAE,QAAM,EAAE,CAAC,EAAE,QAAM,OAAO,KAAIyG,GAAoB,GAAE,GAAExG,CAAC;AAAC;AAAC,SAAS2H,GAAS,GAAEvJ,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE,OAAM2B,IAAE1B,EAAE;AAAwB,SAAf,CAAC0H,EAAE,CAAC,KAAc,CAACkB,GAAiB,GAAElH,CAAC,IAAQ,KAAU4G,GAAoB,GAAE,KAAK,IAAI,EAAE,CAAC,EAAE,OAAM5G,EAAE,CAAC,EAAE,KAAK,CAAC;AAAC;AAAC,SAAS6H,GAAS,GAAExJ,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE;AAAM,MAAG,CAACmI,GAAE,CAAC,EAAE;AAAS,QAAMxG,IAAE4F,GAAY,GAAEtH,EAAE,KAAK;AAAE,MAAG,CAAC4I,GAAiB,GAAElH,CAAC,EAAE;AAAS,MAAIC;AAAE,SAAOA,IAAMD,EAAE,CAAC,EAAE,UAAT,IAAe,OAAO,MAAI,OAAO,SAAS,EAAE,CAAC,EAAE,KAAK,IAAE,OAAO,SAASA,EAAE,CAAC,EAAE,KAAK,IAAE,EAAE,CAAC,EAAE,QAAMA,EAAE,CAAC,EAAE,QAAM,EAAE,CAAC,EAAE,QAAM,OAAO,KAAIyG,GAAoB,GAAE,GAAExG,CAAC;AAAC;AAAC,SAAS6H,GAAW,GAAEzJ,GAAEC,GAAE,GAAE0B,GAAE;AAAC,QAAMC,IAAE3B,EAAE;AAAwB,MAAf,CAACkI,GAAEvG,CAAC,KAAc,CAACD,EAAE,kBAAgBiG,GAAEhG,CAAC,EAAE;AAAS,QAAMrB,IAAEgH,GAAY3F,GAAE,EAAE,KAAK;AAAE,MAAG,CAACiH,GAAiBjH,GAAErB,CAAC,EAAE;AAAS,MAAID;AAAE,MAAOC,EAAE,CAAC,EAAE,UAAT,EAAe,CAAAD,IAAE,OAAO;AAAA,WAAY,OAAO,SAASsB,EAAE,CAAC,EAAE,KAAK,KAAG,OAAO,SAASrB,EAAE,CAAC,EAAE,KAAK,EAAE,KAAG,CAAC,OAAO,SAASqB,EAAE,CAAC,EAAE,KAAK,KAAG,OAAO,SAASrB,EAAE,CAAC,EAAE,KAAK,EAAE,CAAAD,IAAEsB,EAAE,CAAC,EAAE;AAAA,WAAc,OAAO,SAASA,EAAE,CAAC,EAAE,KAAK,KAAG,CAAC,OAAO,SAASrB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAOP;IAAG,KAAI;AAAO,MAAAM,IAAEsB,EAAE,CAAC,EAAE,QAAM,IAAE,SAAK,OAAO,GAAG,IAAG,IAAEA,EAAE,CAAC,EAAE,KAAK,IAAE,KAAG;AAAE;AAAA,IAAM,KAAI;AAAK,MAAAtB,IAAEsB,EAAE,CAAC,EAAE,QAAM,IAAE,QAAI,OAAO,GAAG,GAAE,IAAEA,EAAE,CAAC,EAAE,KAAK,IAAE,IAAE;AAAG;AAAA,IAAM;AAAQ,MAAAtB,IAAE,OAAO,GAAG,GAAE,IAAEsB,EAAE,CAAC,EAAE,KAAK,IAAE,IAAE;AAAA,EAAE;AAAA,WAAS,OAAO,SAASrB,EAAE,CAAC,EAAE,KAAK,EAAE,SAAOP,GAAC;AAAA,IAAE,KAAI;AAAO,MAAAM,IAAE,KAAK,MAAMsB,EAAE,CAAC,EAAE,QAAMrB,EAAE,CAAC,EAAE,KAAK,IAAEA,EAAE,CAAC,EAAE;AAAM;AAAA,IAAM,KAAI;AAAK,MAAAD,IAAE,KAAK,KAAKsB,EAAE,CAAC,EAAE,QAAMrB,EAAE,CAAC,EAAE,KAAK,IAAEA,EAAE,CAAC,EAAE;AAAM;AAAA,IAAM,KAAI;AAAU,MAAAD,IAAE,KAAK,MAAMsB,EAAE,CAAC,EAAE,QAAMrB,EAAE,CAAC,EAAE,KAAK,IAAEA,EAAE,CAAC,EAAE;AAAM;AAAA,IAAM,SAAQ;AAAC,UAAIR,IAAE,KAAK,MAAM6B,EAAE,CAAC,EAAE,QAAMrB,EAAE,CAAC,EAAE,KAAK,IAAEA,EAAE,CAAC,EAAE,OAAMP,IAAE,KAAK,KAAK4B,EAAE,CAAC,EAAE,QAAMrB,EAAE,CAAC,EAAE,KAAK,IAAEA,EAAE,CAAC,EAAE;AAAM,UAAGR,IAAEC,GAAE;AAAC,cAAMC,IAAEF;AAAE,QAAAA,IAAEC,GAAEA,IAAEC;AAAA,MAAC;AAAC,YAAMA,IAAE,KAAK,IAAI2B,EAAE,CAAC,EAAE,QAAM7B,CAAC,GAAEK,IAAE,KAAK,IAAIwB,EAAE,CAAC,EAAE,QAAM5B,CAAC;AAAE,MAAAM,IAAEL,MAAIG,IAAEJ,IAAEC,IAAEG,IAAEL,IAAEC;AAAE;AAAA,IAAK;AAAA,EAAC;AAAA,MAAM,CAAAM,IAAEsB,EAAE,CAAC,EAAE;AAAA,MAAW,CAAAtB,IAAE,OAAO;AAAI,SAAO8H,GAAoB,GAAExG,GAAEtB,CAAC;AAAC;AAAC,SAASoJ,GAAU,GAAE1J,GAAEC,GAAE;AAAC,QAAM,IAAED,EAAE;AAAwB,SAAf,CAACmI,GAAE,CAAC,KAAc,CAAClI,EAAE,kBAAgB2H,GAAE,CAAC,IAAQ,KAAUW,GAAoB,GAAE,KAAK,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC;AAAC;AAAC,SAASoB,GAAS,GAAE3J,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,MAAG,CAAC2I,GAAoB1I,CAAC,EAAE,QAAM;AAAG,MAAI,IAAEA,EAAE,CAAC,EAAE;AAAM,MAAGuH,GAAEvH,CAAC,EAAE,SAAOqG,GAAcrG,EAAE,CAAC,EAAE,IAAI;IAAG,KAAI;AAAM;AAAA,IAAM,KAAI;AAAM,UAAEwG,GAAE,IAAI,KAAK,EAAExG,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM,KAAI;AAAO,UAAEyG,GAAE,IAAI,KAAK,EAAEzG,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM,KAAI;AAAO,UAAEoH,GAAE,IAAI,KAAK,EAAEpH,EAAE,CAAC,EAAE,KAAK;AAAE;AAAA,IAAM;AAAQ,aAAM;AAAA,EAAE;AAAC,SAAO,IAAE,KAAK,IAAI,CAAC,GAAEsI,GAAoB,GAAE,CAAC;AAAC;AAAC,SAASqB,GAAU,GAAE5J,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,SAAI2H,EAAE1H,CAAC,IAAkBsI,GAAoB,GAAE,KAAK,KAAKtI,EAAE,CAAC,EAAE,KAAK,CAAC,IAArD;AAAsD;AAAC,SAAS4J,GAAS,GAAE7J,GAAE;AAAC,QAAMC,IAAED,EAAE;AAAM,MAAG,CAAC2I,GAAoB1I,CAAC,EAAE;AAAS,QAAM,IAAEA,EAAE,CAAC,EAAE;AAAM,MAAI0B,IAAE,GAAEC,IAAE3B,EAAE,CAAC,EAAE;AAAM,MAAGuH,GAAEvH,CAAC,EAAE,SAAOqG,GAAcrG,EAAE,CAAC,EAAE,IAAI;IAAG,KAAI;AAAM,MAAA0B,IAAEwF,GAAE,IAAI,KAAK,EAAE,CAAC;AAAE;AAAA,IAAM,KAAI;AAAM,MAAAxF,IAAE,GAAEC,IAAE6E,GAAE,IAAI,KAAK,EAAE,CAAC;AAAE;AAAA,IAAM,KAAI;AAAO,MAAA9E,IAAE+E,GAAE,IAAI,KAAK,EAAE,CAAC,GAAE9E,IAAE8E,GAAE,IAAI,KAAK,EAAE,CAAC;AAAE;AAAA,IAAM,KAAI;AAAO,MAAA/E,IAAE0F,GAAE,IAAI,KAAK,EAAE,CAAC,GAAEzF,IAAEyF,GAAE,IAAI,KAAK,EAAE,CAAC;AAAE;AAAA,IAAM;AAAQ,aAAM;AAAA,EAAE;AAAC,QAAM9G,IAAEoB,IAAE;AAAG,SAAOC,IAAED,IAAE,MAAI,KAAGpB,IAAE,KAAG,IAAEA,IAAE,IAAE,QAAI,SAAK,KAAK,IAAIqB,CAAC,GAAE2G,GAAoB,GAAE3G,CAAC;AAAC;AAAC,SAASkI,GAAY9J,GAAE;AAAC,MAAOA,EAAE,WAAN,EAAa;AAAS,QAAM,IAAEA,EAAE,CAAC,EAAE;AAAM,MAAII,IAAEJ,EAAE,CAAC,EAAE;AAAM,MAAG2H,EAAE,CAAC,KAAGA,EAAEvH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,QAAOzE,EAAE,YAAW,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,OAAM,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwC,GAAE,CAAC,KAAGA,GAAExH,CAAC,GAAE;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,YAAWzE,EAAE,SAAQ,IAAG,KAAI,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,EAAC,CAAC,CAAC;AAAA,EAAC;AAAC,MAAGwH,GAAE,CAAC,KAAGA,GAAEpH,CAAC,MAAIA,IAAEmH,GAAY,GAAEnH,CAAC,GAAEkG,GAAc,EAAE,CAAC,EAAE,IAAI,MAAIA,GAAclG,EAAE,CAAC,EAAE,IAAI,IAAG;AAAC,UAAMJ,IAAE,EAAE,CAAC,EAAE,QAAMI,EAAE,CAAC,EAAE;AAAM,WAAO,IAAIL,EAAE,CAAC0E,EAAE,WAAUzE,EAAE,SAAQ,IAAG,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAEI,EAAE,CAAC,GAAE,EAAC,OAAMJ,GAAE,MAAK,EAAE,CAAC,EAAE,SAAOoF,EAAE,WAAShF,EAAE,CAAC,EAAE,SAAOgF,EAAE,UAAQA,EAAE,UAAQA,EAAE,QAAO,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS2E,GAAS,GAAE,GAAE;AAAC,MAAO,EAAE,WAAN,GAAa;AAAC,UAAM3J,IAAE,EAAE,CAAC;AAAE,QAAG,CAACA,KAAG,CAACJ,EAAEI,CAAC,EAAE,QAAM;AAAG,UAAMuB,IAAEvB,EAAE;AAAM,WAAIuH,EAAEhG,CAAC,IAAkB4G,GAAoB,GAAE,KAAK,IAAI5G,EAAE,CAAC,EAAE,KAAK,CAAC,IAApD;AAAA,EAAqD;AAAC,MAAO,EAAE,WAAN,GAAa;AAAC,UAAMvB,IAAE,EAAE,CAAC;AAAE,QAAG,CAACA,KAAG,CAACJ,EAAEI,CAAC,EAAE;AAAS,UAAMuB,IAAEvB,EAAE;AAAM,QAAG,CAACuH,EAAEhG,CAAC,EAAE,QAAM;AAAG,UAAMC,IAAE,EAAE,CAAC;AAAE,QAAG,CAACA,KAAG,CAAC5B,EAAE4B,CAAC,EAAE,QAAM;AAAG,UAAMrB,IAAEqB,EAAE;AAAM,WAAI+F,EAAEpH,CAAC,IAAkBgI,GAAoB,GAAE,KAAK,IAAI5G,EAAE,CAAC,EAAE,KAAK,IAAE,KAAK,IAAIpB,EAAE,CAAC,EAAE,KAAK,CAAC,IAAzE;AAAA,EAA0E;AAAC,SAAM;AAAE;AAAC,MAAMyJ,KAAE;AAAU,SAASC,GAAO,GAAE;AAAC,MAAG,MAAM,QAAQ,CAAC,GAAE;AAAC,UAAM,IAAE,EAAE,QAAQ,CAAAlK,MAAG,EAAEE,GAAEF,CAAC,KAAGK,GAAEL,CAAC,GAAE;AAAG,WAAW,EAAE,WAAN,KAAckK,GAAO,EAAE,CAAC,CAAC;AAAA,EAAC;AAAC,MAAG,CAACjK,EAAE,CAAC,EAAE;AAAS,QAAM2B,IAAE,EAAE;AAAM,SAAM,CAAC,CAACqB,GAAErB,CAAC,KAAGqI,GAAE,KAAKrI,EAAE,CAAC,EAAE,KAAK;AAAC;AAAC,MAAMuI,KAAE,OAAO,cAAc,CAAC;AAAE,SAASC,GAAY,GAAEnK,GAAEC,GAAE,GAAE0B,GAAEC,GAAE;AFAlpc,MAAAwI;AEAmpc,MAAQpK,EAAE,UAAP,MAAc,CAAC4B,EAAE,cAAc,QAAM;AAAG,EAAAA,EAAE,kBAAgBA,EAAE,gBAAc,EAAC,cAAa,IAAG,WAAU,GAAE,WAAU,IAAG,YAAW,GAAE,IAAGA,EAAE,iBAAe,CAACA,EAAE,cAAc,cAAYA,EAAE,cAAc,YAAU;AAAG,QAAMrB,IAAEN,EAAE;AAAM,MAAG,CAACkI,GAAE5H,CAAC,EAAE;AAAS,QAAMD,IAAEiH,GAAYhH,GAAE,EAAE,KAAK;AAAE,MAAG,CAACsI,GAAiBtI,GAAED,CAAC,EAAE;AAAS,MAAIyE,IAAE;AAAK,MAAGpD,MAAIoD,IAAEwC,GAAYhH,GAAEoB,EAAE,KAAK,GAAE,CAACkH,GAAiBtI,GAAEwE,CAAC,GAAG,QAAM;AAAyJ,MAAnJ,CAAC,OAAO,SAASxE,EAAE,CAAC,EAAE,KAAK,KAAgD,CAAC,OAAO,SAASD,EAAE,CAAC,EAAE,KAAK,KAAgD,CAAC,OAAO,SAASA,EAAE,CAAC,EAAE,QAAMC,EAAE,CAAC,EAAE,KAAK,EAAE,QAAO6H,GAAoB,GAAE7H,GAAE,OAAO,GAAG;AAAE,MAAGwE,KAAG,CAAC,OAAO,SAASA,EAAE,CAAC,EAAE,KAAK,EAAE,QAAOqD,GAAoB,GAAE7H,GAAEA,EAAE,CAAC,EAAE,KAAK;AAAE,QAAMmB,IAAO1B,EAAE,UAAP,KAAaqK,GAAMC,GAAM,CAACtK,EAAE,cAAYA,EAAE,cAAY,IAAGoK,IAAAxI,EAAE,kBAAF,gBAAAwI,EAAiB,YAAY,IAAIxI,EAAE,cAAc,WAAW,IAAG5B,EAAE,gBAAc,KAAG4B,EAAE,cAAc,WAAUA,EAAE,cAAc,UAAU,EAAE,KAAKsI,EAAC,CAAC,CAAC,IAAE,MAAIlK,EAAE;AAAM,MAAIQ,IAAED,EAAE,CAAC,EAAE,OAAMiH,IAAElH,EAAE,CAAC,EAAE;AAAM,MAAGE,IAAEgH,MAAI,CAAChH,GAAEgH,CAAC,IAAE,CAACA,GAAEhH,CAAC,IAAGuE,MAAIA,EAAE,CAAC,EAAE,SAAO,KAAG,KAAK,IAAIvE,IAAEgH,CAAC,IAAEzC,EAAE,CAAC,EAAE,QAAM,UAAQA,IAAE,OAAMA,GAAE;AAAC,UAAM/E,IAAE,KAAK,IAAI+E,EAAE,CAAC,EAAE,QAAM,KAAI,IAAI,GAAE9E,IAAE,CAACO,CAAC;AAAE,QAAIJ,IAAE;AAAE,eAAO;AAAC,MAAAA,KAAG2E,EAAE,CAAC,EAAE;AAAM,YAAMhF,IAAES,IAAEJ;AAAE,UAAG,EAAEL,IAAEC,IAAEwH,IAAG;AAAC,QAAAvH,EAAE,KAAKuH,CAAC;AAAE;AAAA,MAAK;AAAC,UAAGvH,EAAE,KAAKF,CAAC,GAAEA,IAAEgF,EAAE,CAAC,EAAE,QAAM/E,IAAEwH,EAAE;AAAA,IAAK;AAAC,UAAM7F,IAAED,EAAC;AAAG,WAAO0G,GAAoB,GAAE7H,GAAE,OAAON,EAAE,KAAK,MAAMA,EAAE,SAAO0B,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAAA,EAAC;AAAC,QAAM8C,IAAE/C,EAAC;AAAG,SAAO0G,GAAoB,GAAE7H,GAAE,QAAQkE,KAAG+C,IAAEhH,KAAGA,GAAG,QAAQ,CAAC,CAAC,CAAC;AAAC;AAAC,SAAS6J,GAAM,IAAE,qBAAmBrK,IAAE,qBAAmBC,IAAE,oBAAkB,IAAE,qBAAmB;AAAC,SAAM,MAAI;AAAC,UAAM0B,MAAI,KAAG,MAAI3B,KAAG,KAAG,MAAI,KAAG,KAAG;AAAE,WAAO,IAAE,IAAE,IAAE,GAAE,IAAEA,IAAEA,MAAI,GAAEA,KAAGC,KAAG,MAAIA,KAAG,KAAG,GAAEA,KAAGA,IAAEA,KAAG,KAAGA,MAAI,MAAI0B,IAAE,IAAGA,MAAI,KAAG;AAAA,EAAU;AAAC;AAAC,SAAS2I,GAAM,GAAE;AAAC,MAAItK,IAAE,GAAEC,IAAE,GAAE,IAAE;AAAE,EAAAD,KAAG;AAAG,WAAQ2B,IAAE,GAAEC,IAAE,EAAE,QAAOD,IAAEC,GAAED,IAAI,KAAE,OAAK3B,IAAE,EAAE,WAAW2B,CAAC,IAAG1B,IAAE,EAAO,OAAK,kwEAAkwE,UAAU,IAAE,GAAE,IAAE,IAAE,CAAC,IAAGD,IAAEA,MAAI,IAAEC;AAAE,UAAO,KAAGD,OAAK;AAAC;AAAC,MAAMuK,KAAE,oBAAI,IAAI,CAAC,CAAC,OAAM,SAAaxK,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAE8I,EAAQ;AAAC,CAAC,GAAE,CAAC,QAAO,SAAchJ,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEuI,EAAS;AAAC,CAAC,GAAE,CAAC,QAAO,SAAczI,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEwI,EAAS;AAAC,CAAC,GAAE,CAAC,QAAO,SAAc1I,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEyI,EAAS;AAAC,CAAC,GAAE,CAAC,SAAQ,SAAe3I,GAAE,GAAEE,GAAE;AAAC,SAAOwK,GAA6B1K,GAAE,GAAEE,GAAE6I,EAAU;AAAC,CAAC,GAAE,CAAC,QAAO4B,EAAM,GAAE,CAAC,SAAQ,SAAe,GAAEtK,GAAEwB,GAAE;AAAC,QAAMrB,IAAE0H,GAA2B,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,EAAC,CAAE,GAAEK,CAAC,GAAE2E,IAAE,CAAA,GAAGrD,IAAE,CAAA,GAAGlB,IAAE;AAAG;AAAC,QAAIT,IAAEgF;AAAE,aAAQ9E,IAAE,GAAEA,IAAEM,EAAE,QAAON,KAAI;AAAC,YAAMG,IAAEG,EAAEN,CAAC;AAAE,UAAGD,EAAEI,CAAC,KAAGuK,GAAEvK,EAAE,KAAK,GAAE;AAAC,YAAGL,MAAIS,EAAE,QAAM;AAAG,YAAGT,MAAI2B,GAAE;AAAC,UAAA3B,IAAES;AAAE;AAAA,QAAQ;AAAC,YAAGT,MAAIgF,GAAE;AAAC,UAAAhF,IAAE2B;AAAE;AAAA,QAAQ;AAAC,eAAM;AAAA,MAAE;AAAC,MAAA3B,EAAE,KAAKK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAMoH,IAAEyC,GAAOlF,CAAC,GAAEK,IAAE6E,GAAOzJ,CAAC;AAAE,MAAGgH,KAAGpC,EAAE,QAAOsF,GAAOE,GAAYlJ,CAAC,GAAEtB,GAAEwB,CAAC;AAAE,QAAMqB,IAAE8E,GAAM2C,GAAOE,GAAYlJ,CAAC,GAAEtB,GAAEwB,CAAC,CAAC;AAAE,MAAQqB,MAAL,GAAO;AAAS,MAAGuE,GAAE;AAAC,UAAMxH,IAAE+H,GAAM2C,GAAOE,GAAYpK,CAAC,GAAEJ,GAAEwB,CAAC,CAAC;AAAE,WAAW5B,MAAL,KAAO,KAAGqJ,IAAU1B,IAAE1E,GAAE2E,IAAE5H,GAAE,IAAIM,GAAE,CAACmE,EAAE,UAAS,QAAO,IAAG,IAAG,EAAC,OAAM,MAAK,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM,GAAE,CAACkD,GAAE,IAAI5H,EAAE,CAAC0E,EAAE,OAAM,KAAI,IAAG,IAAG,MAAM,CAAC,GAAEmD,CAAC,CAAC,IAAG,CAAC3E,GAAEjD,CAAC,GAAE4B,CAAC;AAAA,EAAC;AAAC,MAAGwD,GAAE;AAAC,UAAMrF,IAAEgI,GAAM2C,GAAOE,GAAY7F,CAAC,GAAE3E,GAAEwB,CAAC,CAAC;AAAE,WAAW7B,MAAL,KAAO,KAAGqJ,GAASyB,GAAW9K,GAAEkD,CAAC,GAAE,CAAClD,GAAEkD,CAAC,GAAErB,CAAC;AAAA,EAAC;AAAC,MAAI+F,GAAEC;AAAE,QAAM5E,IAAE+E,GAAM2C,GAAOE,GAAY7F,CAAC,GAAE3E,GAAEwB,CAAC,CAAC;AAAE,MAAQoB,MAAL,GAAO;AAAS,QAAMmF,IAAEJ,GAAM2C,GAAOE,GAAYpK,CAAC,GAAEJ,GAAEwB,CAAC,CAAC;AAAE,SAAQuG,MAAL,KAAa,KAAUa,GAAW,GAAEhG,GAAEC,GAAEkF,GAAEvG,CAAC;AAAC,CAAC,GAAE,CAAC,OAAM,SAAa7B,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEgJ,EAAQ;AAAC,CAAC,GAAE,CAAC,OAAM,SAAalJ,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEiJ,EAAQ;AAAC,CAAC,GAAE,CAAC,SAAQ,SAAenJ,GAAE,GAAEE,GAAE;AAAC,SAAO6K,GAAoB/K,GAAEA,EAAE,OAAM,GAAEE,GAAEkJ,EAAU;AAAC,CAAC,GAAE,CAAC,OAAM,SAAapJ,GAAE,GAAEE,GAAE;AAAC,SAAO6K,GAAoB/K,GAAEA,EAAE,OAAM,GAAEE,GAAE8J,EAAQ;AAAC,CAAC,GAAE,CAAC,OAAM,SAAahK,GAAE,GAAEE,GAAE;AAAC,SAAO6K,GAAoB/K,GAAEA,EAAE,OAAM,GAAEE,GAAEmJ,EAAQ;AAAC,CAAC,GAAE,CAAC,OAAM,SAAarJ,GAAE,GAAEE,GAAE;AAAC,SAAO6K,GAAoB/K,GAAEA,EAAE,OAAM,GAAEE,GAAEoJ,EAAQ;AAAC,CAAC,GAAE,CAAC,OAAM,SAAatJ,GAAE,GAAEE,GAAE;AAAC,SAAOwK,GAA6B1K,GAAE,GAAEE,GAAEqJ,EAAQ;AAAC,CAAC,GAAE,CAAC,OAAM,SAAavJ,GAAE,GAAEE,GAAE;AAAC,SAAOwK,GAA6B1K,GAAE,GAAEE,GAAEsJ,EAAQ;AAAC,CAAC,GAAE,CAAC,UAAS,SAAgBxJ,GAAE,GAAEE,GAAE;AAAC,QAAMG,IAAE2K,GAAwBhL,EAAE,MAAM,QAAQ,CAAAA,MAAG,CAAC4B,GAAE5B,CAAC,EAAC,GAAG,GAAEE,CAAC;AAAE,MAAQG,MAAL,GAAO;AAAS,QAAK,CAACwB,GAAErB,CAAC,IAAEH,GAAEE,IAAE0K,GAAkBzK,GAAE,GAAEN,CAAC;AAAE,MAAQK,MAAL,GAAO,QAAM;AAAG,QAAK,CAACyE,GAAErD,GAAElB,CAAC,IAAEF;AAAE,SAAG,CAACyE,KAAG,CAACrD,IAAQ,KAAUyI,GAAYpK,GAAE6B,GAAEmD,GAAErD,GAAElB,GAAEP,CAAC;AAAC,CAAC,GAAE,CAAC,OAAM,SAAaF,GAAE,GAAEE,GAAE;AAAC,SAAOwK,GAA6B1K,GAAE,GAAEE,GAAEuJ,EAAQ;AAAC,CAAC,GAAE,CAAC,SAAQ,SAAe,GAAEpJ,GAAEwB,GAAE;AAAC,QAAMrB,IAAE0H,GAA2B,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,GAAG,GAAEK,CAAC;AAAE,MAAI,IAAE,IAAG2E,IAAE;AAAG,QAAMrD,IAAE,CAAA,GAAGlB,IAAE,CAAA;AAAG;AAAC,QAAIT,IAAE2B;AAAE,aAAQzB,IAAE,GAAEA,IAAEM,EAAE,QAAON,KAAI;AAAC,YAAMG,IAAEG,EAAEN,CAAC;AAAE,UAAG,CAAC,KAAOyB,EAAE,WAAN,KAAkBlB,EAAE,WAAN,KAAcR,EAAEI,CAAC,KAAG4C,GAAE5C,EAAE,KAAK,GAAE;AAAC,cAAML,IAAEK,EAAE,MAAM,CAAC,EAAE,MAAM,YAAW;AAAG,YAAG6K,GAAE,IAAIlL,CAAC,GAAE;AAAC,cAAEA;AAAE;AAAA,QAAQ;AAAA,MAAC;AAAC,UAAGC,EAAEI,CAAC,KAAGuK,GAAEvK,EAAE,KAAK,GAAE;AAAC,YAAGL,MAAIS,EAAE;AAAS,YAAGT,MAAI2B,KAAG,KAAOA,EAAE,WAAN,EAAa;AAAS,YAAG3B,MAAI2B,GAAE;AAAC,UAAAqD,IAAE,IAAGhF,IAAES;AAAE;AAAA,QAAQ;AAAC;MAAQ;AAAC,MAAAT,EAAE,KAAKK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAMoH,IAAEO,GAAM2C,GAAOE,GAAYlJ,CAAC,GAAEtB,GAAEwB,CAAC,CAAC;AAAE,MAAQ4F,MAAL,GAAO,QAAM;AAAG,EAAAzC,KAAOvE,EAAE,WAAN,KAAcA,EAAE,KAAK,IAAIT,EAAE,CAAC0E,EAAE,QAAO,KAAI,IAAG,IAAG,EAAC,OAAM,GAAE,MAAKW,EAAE,QAAO,CAAC,CAAC,CAAC;AAAE,QAAMnC,IAAE8E,GAAM2C,GAAOE,GAAYpK,CAAC,GAAEJ,GAAEwB,CAAC,CAAC;AAAE,SAAQqB,MAAL,KAAa,MAAG,MAAI,IAAE,YAAkBwG,GAAW,GAAE,GAAEjC,GAAEvE,GAAErB,CAAC;AAAC,CAAC,GAAE,CAAC,QAAO,SAAc7B,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAEyJ,EAAS;AAAC,CAAC,GAAE,CAAC,OAAM,SAAa3J,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAE0J,EAAQ;AAAC,CAAC,GAAE,CAAC,QAAO,SAAc5J,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAE2J,EAAS;AAAC,CAAC,GAAE,CAAC,OAAM,SAAa7J,GAAE,GAAEE,GAAE;AAAC,SAAOuK,GAAiBzK,GAAE,GAAEE,GAAE4J,EAAQ;AAAC,CAAC,CAAC,CAAC;AAAE,SAASa,GAAO,GAAE,GAAEtK,GAAE;AAAC,QAAME,IAAE2H,GAA2B,CAAC,GAAG,EAAE,MAAM,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,GAAG,GAAE,CAAC;AAAE,MAAOO,EAAE,WAAN,KAAcN,EAAEM,EAAE,CAAC,CAAC,EAAE,QAAM,EAAC,QAAO,CAACA,EAAE,CAAC,CAAC,GAAE,WAAU4H,GAAK;AAAE,MAAInD,IAAE;AAAE,SAAKA,IAAEzE,EAAE,UAAQ;AAAC,UAAMP,IAAEO,EAAEyE,CAAC;AAAE,QAAGnD,GAAE7B,CAAC,KAAGmL,GAAEnL,EAAE,UAAU,GAAE;AAAC,YAAMC,IAAE0K,GAAO3K,GAAE,GAAEK,CAAC;AAAE,UAAQJ,MAAL,GAAO;AAAS,MAAAM,EAAE,OAAOyE,GAAE,GAAE/E,CAAC;AAAA,IAAC,WAASO,GAAER,CAAC,GAAE;AAAC,YAAMC,IAAEuK,GAAE,IAAIxK,EAAE,QAAO,EAAG,YAAW,CAAE;AAAE,UAAG,CAACC,EAAE;AAAS,YAAM2B,IAAE3B,EAAED,GAAE,GAAEK,CAAC;AAAE,UAAQuB,MAAL,GAAO,QAAM;AAAG,MAAArB,EAAE,OAAOyE,GAAE,GAAEpD,CAAC;AAAA,IAAC,MAAM,CAAAoD;AAAA,EAAG;AAAC,MAAGA,IAAE,GAAMzE,EAAE,WAAN,KAAcwH,GAAcxH,EAAE,CAAC,CAAC,EAAE,QAAOA,EAAE,CAAC;AAAE,SAAKyE,IAAEzE,EAAE,UAAQ;AAAC,UAAMP,IAAEO,EAAEyE,CAAC;AAAE,QAAG,CAAChF,KAAG,CAACC,EAAED,CAAC,KAAG,CAAC+H,GAAc/H,CAAC,GAAE;AAAC,MAAAgF;AAAI;AAAA,IAAQ;AAAC,UAAM9E,IAAEK,EAAEyE,IAAE,CAAC;AAAE,QAAG,CAAC9E,KAAG,CAACD,EAAEC,CAAC,GAAE;AAAC,MAAA8E;AAAI;AAAA,IAAQ;AAAC,UAAM3E,IAAEH,EAAE;AAAM,QAAG,CAACkL,GAAE/K,CAAC,KAASA,EAAE,CAAC,EAAE,UAAX,OAAwBA,EAAE,CAAC,EAAE,UAAX,KAAiB;AAAC,MAAA2E;AAAI;AAAA,IAAQ;AAAC,UAAMpD,IAAErB,EAAEyE,IAAE,CAAC;AAAE,QAAG,CAACpD,KAAG,CAAC3B,EAAE2B,CAAC,KAAG,CAACmG,GAAcnG,CAAC,EAAE,QAAM;AAAG,IAAMvB,EAAE,CAAC,EAAE,UAAX,MAAuBA,EAAE,CAAC,EAAE,UAAX,MAAiB2E,MAAIzE,EAAE,OAAOyE,GAAE,GAAE,EAAC,QAAO,CAAChF,GAAE4B,CAAC,GAAE,WAAUkG,GAAQ,CAAC,IAAEvH,EAAE,OAAOyE,GAAE,GAAE,EAAC,QAAO,CAAChF,GAAE4B,CAAC,GAAE,WAAUqG,GAAc,CAAC;AAAA,EAAC;AAAC,MAAGjD,IAAE,GAAMzE,EAAE,WAAN,KAAcwH,GAAcxH,EAAE,CAAC,CAAC,EAAE,QAAOA,EAAE,CAAC;AAAE,SAAKyE,IAAEzE,EAAE,UAAQ;AAAC,UAAMP,IAAEO,EAAEyE,CAAC;AAAE,QAAG,CAAChF,KAAG,CAACC,EAAED,CAAC,KAAG,CAAC+H,GAAc/H,CAAC,GAAE;AAAC,MAAAgF;AAAI;AAAA,IAAQ;AAAC,UAAM9E,IAAEK,EAAEyE,IAAE,CAAC;AAAE,QAAG,CAAC9E,KAAG,CAACD,EAAEC,CAAC,GAAE;AAAC,MAAA8E;AAAI;AAAA,IAAQ;AAAC,UAAM3E,IAAEH,EAAE;AAAM,QAAG,CAACkL,GAAE/K,CAAC,KAASA,EAAE,CAAC,EAAE,UAAX,OAAwBA,EAAE,CAAC,EAAE,UAAX,KAAiB;AAAC,MAAA2E;AAAI;AAAA,IAAQ;AAAC,UAAMpD,IAAErB,EAAEyE,IAAE,CAAC;AAAE,QAAG,CAACpD,KAAG,CAAC3B,EAAE2B,CAAC,KAAG,CAACmG,GAAcnG,CAAC,EAAE,QAAM;AAAG,IAAMvB,EAAE,CAAC,EAAE,UAAX,MAAuBA,EAAE,CAAC,EAAE,UAAX,MAAiB2E,MAAIzE,EAAE,OAAOyE,GAAE,GAAE,EAAC,QAAO,CAAChF,GAAE4B,CAAC,GAAE,WAAUmI,GAAW,CAAC,IAAExJ,EAAE,OAAOyE,GAAE,GAAE,EAAC,QAAO,CAAChF,GAAE4B,CAAC,GAAE,WAAU+F,GAAQ,CAAC;AAAA,EAAC;AAAC,SAAWpH,EAAE,WAAN,KAAcwH,GAAcxH,EAAE,CAAC,CAAC,IAAEA,EAAE,CAAC,IAAE;AAAE;AAAC,SAASkK,GAAiB,GAAExK,GAAEC,GAAE,GAAE;AAAC,QAAM0B,IAAEyJ,GAAe,EAAE,OAAMpL,GAAEC,CAAC;AAAE,SAAW0B,MAAL,KAAO,KAAG,EAAE,GAAEA,GAAE1B,CAAC;AAAC;AAAC,SAASmL,GAAe,GAAEpL,GAAEC,GAAE;AAAC,QAAM,IAAE8H,GAAM2C,GAAOE,GAAY3C,GAA2B,CAAC,GAAG,EAAE,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,GAAG,GAAEC,CAAC,CAAC,GAAEA,GAAEC,CAAC,CAAC;AAAE,SAAW,MAAL,KAAO,KAAG;AAAC;AAAC,SAASwK,GAA6B,GAAEzK,GAAEC,GAAE,GAAE;AAAC,QAAM0B,IAAE0J,GAA2B,EAAE,OAAMrL,GAAEC,CAAC;AAAE,MAAQ0B,MAAL,GAAO,QAAM;AAAG,QAAK,CAACC,GAAErB,CAAC,IAAEoB;AAAE,SAAO,EAAE,GAAEC,GAAErB,GAAEN,CAAC;AAAC;AAAC,SAASoL,GAA2B,GAAE,GAAEjL,GAAE;AAAC,QAAMwB,IAAEqG,GAA2B,CAAC,GAAG,EAAE,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,EAAC,CAAE,GAAE,CAAC,GAAEQ,IAAE,IAAG,IAAE,CAAA;AAAG;AAAC,QAAIR,IAAEQ;AAAE,aAAQN,IAAE,GAAEA,IAAE2B,EAAE,QAAO3B,KAAI;AAAC,YAAMG,IAAEwB,EAAE3B,CAAC;AAAE,UAAGD,EAAEI,CAAC,KAAGuK,GAAEvK,EAAE,KAAK,GAAE;AAAC,YAAGL,MAAI,EAAE,QAAM;AAAG,YAAGA,MAAIQ,GAAE;AAAC,UAAAR,IAAE;AAAE;AAAA,QAAQ;AAAC,eAAM;AAAA,MAAE;AAAC,MAAAA,EAAE,KAAKK,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,QAAM2E,IAAEgD,GAAM2C,GAAOE,GAAYrK,CAAC,GAAE,GAAEH,CAAC,CAAC;AAAE,MAAQ2E,MAAL,GAAO;AAAS,QAAMrD,IAAEqG,GAAM2C,GAAOE,GAAY,CAAC,GAAE,GAAExK,CAAC,CAAC;AAAE,SAAWsB,WAAE,KAAG,CAACqD,GAAErD,CAAC;AAAC;AAAC,SAASoJ,GAAoB,GAAE9K,GAAEC,GAAE,GAAE0B,GAAE;AAAC,QAAMC,IAAEoJ,GAAkB,EAAE,OAAM/K,GAAE,CAAC;AAAE,SAAW2B,MAAL,KAAO,KAAGD,EAAE,GAAEC,GAAE,CAAC;AAAC;AAAC,SAASoJ,GAAkB,GAAE,GAAE5K,GAAE;AAAC,QAAMwB,IAAEqG,GAA2B,CAAC,GAAG,EAAE,QAAQ,CAAAlI,MAAG,CAAC4B,GAAE5B,CAAC,GAAG,GAAE,CAAC,GAAEQ,IAAE,CAAA;AAAG;AAAC,UAAMR,IAAE,CAAA;AAAG,QAAI,IAAE,CAAA;AAAG,aAAQE,IAAE,GAAEA,IAAE2B,EAAE,QAAO3B,KAAI;AAAC,YAAMG,IAAEwB,EAAE3B,CAAC;AAAED,MAAAA,EAAEI,CAAC,KAAGuK,GAAEvK,EAAE,KAAK,KAAGL,EAAE,KAAK,CAAC,GAAE,IAAE,MAAI,EAAE,KAAKK,CAAC;AAAA,IAAC;AAAC,IAAAL,EAAE,KAAK,CAAC;AAAE,aAAQC,IAAE,GAAEA,IAAED,EAAE,QAAOC,KAAI;AAAC,UAAOD,EAAEC,CAAC,EAAE,WAAT,EAAgB,QAAM;AAAG,YAAM2B,IAAEoG,GAAM2C,GAAOE,GAAY7K,EAAEC,CAAC,CAAC,GAAE,GAAEI,CAAC,CAAC;AAAE,UAAQuB,MAAL,GAAO,QAAM;AAAG,MAAApB,EAAE,KAAKoB,CAAC;AAAA,IAAC;AAAA,EAAC;AAAC,SAAOpB;AAAC;AAAC,MAAM0K,KAAE,oBAAI,IAAI,CAAC,WAAU,MAAK,QAAO,SAAS,CAAC;AAAE,SAASF,GAAwB,GAAE,GAAE3K,GAAE;AAAC,QAAMuB,IAAE,EAAC,QAAO,IAAG,aAAY,IAAG,OAAM,IAAG,eAAc,GAAE,GAAEC,IAAE,EAAE,CAAC;AAAE,MAAG,CAAC5B,EAAE4B,CAAC,KAAG,CAACoB,GAAEpB,EAAE,KAAK,EAAE,QAAM,CAACD,GAAE,CAAC;AAAE,WAAQC,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAMrB,IAAE,EAAEqB,CAAC;AAAE,QAAG,CAAC5B,EAAEO,CAAC,EAAE;AAAS,QAAGoK,GAAEpK,EAAE,KAAK,EAAE,QAAM,CAACoB,GAAE,EAAE,MAAMC,IAAE,CAAC,CAAC;AAAE,QAAG,CAACoB,GAAEzC,EAAE,KAAK,EAAE,QAAM;AAAG,UAAMD,IAAEC,EAAE,MAAM,CAAC,EAAE,MAAM,YAAW;AAAG,QAAsBD,MAAnB,iBAAqB,KAAaA,MAAV,QAAY,KAAYA,MAAT;AAAW,UAAGA,EAAE,WAAW,IAAI,GAAE;AAAC,YAAQqB,EAAE,UAAP,MAAcA,EAAE,OAAO;AAAS,QAAAA,EAAE,cAAYrB;AAAA,MAAC;AAAA,WAAU;AAAC,UAAQqB,EAAE,UAAP,MAAcA,EAAE,YAAY;AAAS,MAAAA,EAAE,SAAO;AAAA,IAAE;AAAA,SAAK;AAAC,UAAGA,EAAE,iBAAeA,EAAE,eAAaA,EAAE,OAAO;AAAS,MAAAC;AAAI,YAAM5B,IAAE,EAAE4B,CAAC;AAAE,UAAG,CAAC5B,EAAE;AAAS,YAAMO,IAAEwH,GAAM2C,GAAOE,GAAY,CAAC5K,CAAC,CAAC,GAAE,GAAEI,CAAC,CAAC;AAA6C,UAAnCG,MAAL,MAAmB,CAACoH,EAAEpH,EAAE,KAAK,KAAcA,EAAE,MAAM,CAAC,EAAE,QAAM,KAAGA,EAAE,MAAM,CAAC,EAAE,QAAM,EAAE,QAAM;AAAG,MAAAoB,EAAE,QAAM,KAAK,IAAI,GAAE,KAAK,IAAIpB,EAAE,MAAM,CAAC,EAAE,OAAM,IAAE,IAAI,CAAC;AAAA,IAAC;AAAA,SAAK;AAAC,UAAQoB,EAAE,UAAP,GAAa;AAAS,MAAAA,EAAE,gBAAc;AAAA,IAAE;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASiJ,GAAY,GAAE;AAAC,SAAO,IAAItK,GAAE,CAACmE,EAAE,UAAS,SAAQ,IAAG,IAAG,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM,GAAE,CAAC;AAAC;AAAC,SAASoG,GAAW7K,GAAE,GAAE;AAAC,SAAO,IAAIM,GAAE,CAACmE,EAAE,UAAS,QAAO,IAAG,IAAG,EAAC,OAAM,MAAK,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,IAAG,IAAG,MAAM,GAAE,CAACzE,GAAE,IAAID,EAAE,CAAC0E,EAAE,OAAM,KAAI,IAAG,IAAG,MAAM,CAAC,GAAE,CAAC,CAAC;AAAC;AAAC,SAAS6G,GAAStL,GAAE;AAAC,MAAQA,MAAL,GAAO;AAAS,MAAGO,GAAEP,CAAC,EAAE,QAAOA;AAAE,QAAM,IAAEA,EAAE;AAAM,SAAOmI,GAAE,CAAC,KAAG,OAAO,MAAM,EAAE,CAAC,EAAE,KAAK,IAAER,EAAE,CAAC,IAAE,IAAIrH,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,OAAM,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,MAAK,CAAC,CAAC,CAAC,CAAC,IAAE+C,GAAE,CAAC,IAAE,IAAIlH,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,OAAM,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,MAAK,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,IAAG,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,WAAU,MAAI,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAKW,EAAE,SAAQ,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC,IAAEwC,GAAE,CAAC,IAAE,IAAItH,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,OAAM,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,MAAK,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,IAAG,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,YAAW,MAAK,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,EAAC,CAAC,CAAC,CAAC,CAAC,IAAE,KAAGzE;AAAC;AAAC,SAASuL,GAAcvL,GAAE;AAAC,MAAQA,MAAL,GAAO;AAAS,MAAGO,GAAEP,CAAC,EAAE,QAAOA;AAAE,QAAM,IAAEA,EAAE;AAAwB,MAAf,CAACmI,GAAE,CAAC,KAAc,OAAO,SAAS,EAAE,CAAC,EAAE,KAAK,KAAG,OAAO,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAOnI;AAAE,MAAII,IAAE;AAAG,SAAO,OAAO,sBAAoB,EAAE,CAAC,EAAE,UAAQA,IAAE,MAAKuH,EAAE,CAAC,IAAE,IAAIrH,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAMrE,IAAE,YAAW,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAMA,IAAE,WAAU,CAAC,CAAC,CAAC,CAAC,IAAEoH,GAAE,CAAC,IAAE,IAAIlH,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAMrE,IAAE,YAAW,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAMA,IAAE,WAAU,CAAC,CAAC,GAAE,IAAI2E,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,IAAG,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,WAAU,MAAI,EAAE,CAAC,EAAE,MAAK,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAKW,EAAE,SAAQ,MAAK,EAAE,CAAC,EAAE,KAAI,CAAC,CAAC,CAAC,CAAC,IAAE,IAAI9E,GAAE,CAACmE,EAAE,UAAS,SAAQ,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,OAAM,CAAC,GAAE,CAACA,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,GAAE,CAAC,IAAI1E,EAAE,CAAC0E,EAAE,OAAMrE,IAAE,YAAW,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAMA,IAAE,WAAU,CAAC,CAAC,GAAE,IAAI2E,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,OAAM,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,IAAG,CAAC,CAAC,GAAE,IAAIM,GAAE,CAAC,CAACN,EAAE,YAAW,KAAI,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,MAAM,CAAC,CAAC,GAAE,IAAI1E,EAAE,CAAC0E,EAAE,YAAW,MAAK,EAAE,CAAC,GAAE,EAAE,CAAC,GAAE,EAAC,OAAM,EAAC,CAAC,CAAC,CAAC,CAAC;AAAC;AAAC,SAAS+G,GAAe,GAAE;AAAC,MAAQ,MAAL,GAAO,QAAM;AAAG,MAAGjL,GAAE,CAAC,EAAE,QAAO;AAAE,QAAMP,IAAE,EAAE;AAAM,SAAOmI,GAAEnI,CAAC,KAAG,OAAO,GAAG,IAAGA,EAAE,CAAC,EAAE,KAAK,MAAUA,EAAE,CAAC,MAAV,SAAc4H,GAAE5H,CAAC,IAAEA,EAAE,CAAC,IAAE,QAAMwH,GAAExH,CAAC,IAAEA,EAAE,CAAC,IAAE,OAAKA,EAAE,CAAC,EAAE,OAAKA,EAAE,CAAC,IAAE,QAAM;AAAI;AAAC,SAASyL,GAAe,GAAEzL,IAAE,IAAG;AAAC,MAAQ,MAAL,GAAO;AAA0B,MAAdA,KAAG,KAAcO,GAAE,CAAC,EAAE,QAAO;AAAE,QAAMN,IAAE,EAAE;AAAwB,MAAf,CAACkI,GAAElI,CAAC,KAAc,OAAO,UAAUA,EAAE,CAAC,EAAE,KAAK,EAAE,QAAO;AAAE,QAAM,IAAE,OAAOA,EAAE,CAAC,EAAE,MAAM,QAAQD,CAAC,CAAC,EAAE,SAAQ;AAAG,SAAO2H,EAAE1H,CAAC,IAAEA,EAAE,CAAC,IAAE,IAAE2H,GAAE3H,CAAC,IAAEA,EAAE,CAAC,IAAE,IAAE,MAAIuH,GAAEvH,CAAC,MAAIA,EAAE,CAAC,IAAE,IAAEA,EAAE,CAAC,EAAE,OAAM;AAAC;AAAC,SAASyL,GAAmB,GAAE;AAAC,SAAW,MAAL,KAAO,MAAGnL,GAAE,CAAC,KAAIiH,GAAE,EAAE,KAAK,MAAG,EAAE,QAAMC,GAAgB,EAAE,KAAK,IAAE;AAAI;AAAC,SAASkE,GAAgB,GAAE3L,GAAE;AAAC,MAAIC,IAAE;AAAE,SAAOD,KAAA,QAAAA,EAAG,qBAAmBC,IAAEyL,GAAmBzL,CAAC,IAAGA,IAAEwL,GAAexL,GAAED,KAAA,gBAAAA,EAAG,SAAS,GAAEC,IAAEuL,GAAevL,CAAC,GAAED,KAAA,QAAAA,EAAG,0CAAwCC,IAAEqL,GAASrL,CAAC,GAAEA,IAAEsL,GAActL,CAAC,IAAGA;AAAC;AAAC,SAAS2L,GAAgB,GAAE;AAAC,QAAM5L,IAAE,oBAAI;AAAI,MAAG,CAAC,EAAE,QAAOA;AAAE,aAAS,CAACC,GAAE,CAAC,KAAI,EAAE,KAAGkF,GAAE,CAAC,EAAE,CAAAnF,EAAE,IAAIC,GAAE,CAAC;AAAA,WAAoB,OAAO,KAAjB,UAAwB;AAAC,UAAMF,IAAE8L,GAAE,EAAC,KAAI,EAAC,CAAC,GAAElK,IAAE5B,EAAE,UAAS;AAA4C,QAAtCA,EAAE,UAAS,GAAG,CAACA,EAAE,UAAS,KAAe,CAACoI,GAAExG,CAAC,EAAE;AAAS,IAAA3B,EAAE,IAAIC,GAAE0B,CAAC;AAAA,EAAC;AAAC,SAAO3B;AAAC;AAAC,SAAS8L,GAAK,GAAE9L,GAAE;AAAC,SAAO+L,GAAwBrK,GAAEsK,GAAE,EAAC,KAAI,EAAC,CAAC,GAAE,CAAA,CAAE,GAAEhM,CAAC,EAAE,KAAK,CAAAD,MAAGA,EAAE,KAAK,CAAAA,MAAGkM,GAAE,GAAGlM,EAAE,OAAM,CAAE,EAAC,EAAG,KAAK,EAAE,EAAC,EAAG,KAAK,GAAG;AAAC;AAAC,SAASgM,GAAwB,GAAE/L,GAAE;AAAC,QAAMC,IAAE2L,GAAgB5L,KAAA,gBAAAA,EAAG,OAAO;AAAE,SAAOQ,GAAE,IAAG,CAAAT,MAAG;AAAC,QAAG,CAACQ,GAAER,CAAC,EAAE;AAAO,UAAMK,IAAEmK,GAAE,IAAIxK,EAAE,QAAO,EAAG,YAAW,CAAE;AAAE,QAAG,CAACK,EAAE;AAAO,UAAMuB,IAAEgK,GAAgB5D,GAAM3H,EAAEL,GAAEE,GAAED,KAAG,EAAE,CAAC,GAAEA,CAAC;AAAE,WAAW2B,MAAL,KAAOA,IAAE;AAAA,EAAM,EAAC;AAAE;AAAC,MAAMuK,KAAE,IAAI,IAAI3B,GAAE,MAAM,GCGrs4B4B,KAAe,OAAO,eAAgB,YACxC,eACA,OAAO,YAAY,OAAQ,aAC3B,cACE,MACAC,KAAS,oBAAI,IAAG,GAEhBC,KAAW,OAAO,WAAY,YAAc,UAC9C,UACE,IAEAC,KAAc,CAACC,GAAKC,GAAMC,GAAMC,MAAO;AACzC,SAAOL,GAAQ,eAAgB,aAC3BA,GAAQ,YAAYE,GAAKC,GAAMC,GAAMC,CAAE,IACrC,QAAQ,MAAM,IAAID,CAAI,KAAKD,CAAI,KAAKD,CAAG,EAAE;AACnD;AACA,IAAII,KAAK,WAAW,iBAChBC,KAAK,WAAW;AHpBpB,IAAAxC;AGsBA,IAAI,OAAOuC,KAAO,KAAa;AAE3B,EAAAC,KAAK,MAAkB;AAAA,IAAlB;AACD,MAAA1M,EAAA;AACA,MAAAA,EAAA,kBAAW,CAAA;AACX,MAAAA,EAAA;AACA,MAAAA,EAAA,iBAAU;AAAA;AAAA,IACV,iBAAiBgM,GAAGQ,GAAI;AACpB,WAAK,SAAS,KAAKA,CAAE;AAAA,IACzB;AAAA,EACR,GAEIC,KAAK,MAAsB;AAAA,IACvB,cAAc;AAGd,MAAAzM,EAAA,gBAAS,IAAI0M,GAAE;AAFX,MAAAC,EAAc;AAAA,IAClB;AAAA,IAEA,MAAMC,GAAQ;AHvCtB,UAAA1C,GAAA2C;AGwCY,UAAI,MAAK,OAAO,SAGhB;AAAA,aAAK,OAAO,SAASD,GAErB,KAAK,OAAO,UAAU;AAEtB,mBAAWJ,KAAM,KAAK,OAAO;AACzB,UAAAA,EAAGI,CAAM;AAEb,SAAAC,KAAA3C,IAAA,KAAK,QAAO,YAAZ,QAAA2C,EAAA,KAAA3C,GAAsB0C;AAAA;AAAA,IAC1B;AAAA,EACR;AACI,MAAIE,MAAyB5C,KAAAiC,GAAQ,QAAR,gBAAAjC,GAAa,iCAAgC;AAC1E,QAAMyC,IAAiB,MAAM;AACzB,IAAKG,MAELA,IAAyB,IACzBV,GAAY,oaAM+D,uBAAuB,WAAWO,CAAc;AAAA,EAC/H;AACJ;AAEA,MAAMI,KAAa,CAACR,MAAS,CAACL,GAAO,IAAIK,CAAI,GAEvCS,KAAW,CAAClN,MAAMA,KAAKA,MAAM,KAAK,MAAMA,CAAC,KAAKA,IAAI,KAAK,SAASA,CAAC,GAUjEmN,KAAe,CAACC,MAASF,GAASE,CAAG,IACrCA,KAAO,KAAK,IAAI,GAAG,CAAC,IAAI,aACpBA,KAAO,KAAK,IAAI,GAAG,EAAE,IAAI,cACrBA,KAAO,KAAK,IAAI,GAAG,EAAE,IAAI,cACrBA,KAAO,OAAO,mBAAmBC,KAC7B,OALyB;AAO/C,MAAMA,WAAkB,MAAM;AAAA,EAC1B,YAAYC,GAAM;AACd,UAAMA,CAAI,GACV,KAAK,KAAK,CAAC;AAAA,EACf;AACJ;AH5FA,IAAAC;AG6FA,MAAMC,KAAN,MAAMA,GAAM;AAAA,EAcR,YAAYJ,GAAKK,GAAS;AAb1B,IAAAvN,EAAA;AACA,IAAAA,EAAA;AAcI,QAAI,CAACwN,EAAAF,IAAMD;AACP,YAAM,IAAI,UAAU,yCAAyC;AAGjE,SAAK,OAAO,IAAIE,EAAQL,CAAG,GAC3B,KAAK,SAAS;AAAA,EAClB;AAAA,EAjBA,OAAO,OAAOA,GAAK;AACf,UAAMK,IAAUN,GAAaC,CAAG;AAChC,QAAI,CAACK;AACD,aAAO,CAAA;AACX,IAAAE,EAAAH,IAAMD,IAAgB;AACtB,UAAM/M,IAAI,IAAIgN,GAAMJ,GAAKK,CAAO;AAChC,WAAAE,EAAAH,IAAMD,IAAgB,KACf/M;AAAA,EACX;AAAA,EAUA,KAAKR,GAAG;AACJ,SAAK,KAAK,KAAK,QAAQ,IAAIA;AAAA,EAC/B;AAAA,EACA,MAAM;AACF,WAAO,KAAK,KAAK,EAAE,KAAK,MAAM;AAAA,EAClC;AACJ;AAzBWuN,KAAA;AAAPK,EAJEJ,IAIKD,IAAgB;AAJ3B,IAAMM,KAANL;AH7FA,IAAApD,IAAA2C,IAAAe,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,GAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;AG0IO,MAAMC,KAAN,MAAMA,GAAS;AAAA,EAuLlB,YAAYC,GAAS;AAvLlB,IAAAjD,EAAA,MAAA4B;AAEH;AAAA,IAAA5B,EAAA,MAAAE;AACA,IAAAF,EAAA,MAAAG;AACA,IAAAH,EAAA,MAAAI;AACA,IAAAJ,EAAA,MAAAK;AACA,IAAAL,EAAA,MAAAM;AACA,IAAAN,EAAA,MAAAO;AACA,IAAAP,EAAA,MAAAQ;AACA,IAAAR,EAAA,MAAAS;AAUA;AAAA;AAAA;AAAA,IAAAnO,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAIA;AAAA;AAAA;AAAA,IAAAA,EAAA;AAEA;AAAA,IAAA0N,EAAA,MAAAU;AACA,IAAAV,EAAA,MAAAW;AACA,IAAAX,EAAA,MAAAY;AACA,IAAAZ,EAAA,MAAAa;AACA,IAAAb,EAAA,MAAAc;AACA,IAAAd,EAAA,MAAAe;AACA,IAAAf,EAAA,MAAAgB;AACA,IAAAhB,EAAA,MAAAiB;AACA,IAAAjB,EAAA,MAAAkB;AACA,IAAAlB,EAAA,MAAAmB;AACA,IAAAnB,EAAA,MAAAoB;AACA,IAAApB,EAAA,MAAAqB;AACA,IAAArB,EAAA,MAAAsB;AACA,IAAAtB,EAAA,MAAAuB;AACA,IAAAvB,EAAA,MAAAwB;AACA,IAAAxB,EAAA,MAAAyB;AACA,IAAAzB,EAAA,MAAA0B;AACA,IAAA1B,EAAA,MAAA2B;AA6RA;AAAA,IAAA3B,EAAA,MAAA8B,IAAiB,MAAM;AAAA,IAAE;AACzB,IAAA9B,EAAA,MAAA+B,IAAa,MAAM;AAAA,IAAE;AACrB,IAAA/B,EAAA,MAAAgC,IAAc,MAAM;AAAA,IAAE;AAEtB;AAAA,IAAAhC,EAAA,MAAAiC,IAAW,MAAM;AAgDjB,IAAAjC,EAAA,MAAAmC,IAAkB,CAAAe,MAAM;AAAA,IAAE;AAC1B,IAAAlD,EAAA,MAAAoC,IAAe,CAACc,GAAIC,GAAIC,MAAQ;AAAA,IAAE;AAClC,IAAApD,EAAA,MAAAqC,IAAe,CAACgB,GAAIC,GAAI5D,GAAM6D,MAAoB;AAC9C,UAAI7D,KAAQ6D;AACR,cAAM,IAAI,UAAU,kEAAkE;AAE1F,aAAO;AAAA,IACX;AAyIA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAAjR,EAAA,MAACkK,IAAsB;AAvYnB,UAAM,EAAE,KAAAgD,IAAM,GAAG,KAAAgE,GAAK,eAAAC,IAAgB,GAAG,cAAAC,GAAc,gBAAAC,GAAgB,gBAAAC,GAAgB,YAAAC,GAAY,SAAAC,GAAS,UAAAC,GAAU,cAAAC,GAAc,gBAAAC,GAAgB,aAAAC,GAAa,SAAAC,IAAU,GAAG,cAAAC,IAAe,GAAG,iBAAAb,GAAiB,aAAAc,GAAa,YAAAC,GAAY,0BAAAC,GAA0B,oBAAAC,GAAoB,4BAAAC,GAA4B,wBAAAC,GAAwB,kBAAAC,GAAkB,MAAAC,EAAI,IAAM3B;AACxW,QAAI2B,MAAS,UACL,QAAOA,KAAA,gBAAAA,EAAM,QAAQ;AACrB,YAAM,IAAI,UAAU,mDAAmD;AAI/E,QADA7E,EAAA,MAAKU,IAAQmE,KAAQrG,KACjBiB,MAAQ,KAAK,CAACF,GAASE,CAAG;AAC1B,YAAM,IAAI,UAAU,0CAA0C;AAElE,UAAMqF,IAAYrF,IAAMD,GAAaC,CAAG,IAAI;AAC5C,QAAI,CAACqF;AACD,YAAM,IAAI,MAAM,wBAAwBrF,CAAG;AAM/C,QAJAO,EAAA,MAAKG,IAAOV,IACZO,EAAA,MAAKI,IAAWgE,IAChB,KAAK,eAAeC,KAAgBtE,EAAA,MAAKK,KACzC,KAAK,kBAAkBoD,GACnB,KAAK,iBAAiB;AACtB,UAAI,CAACzD,EAAA,MAAKK,OAAY,CAAC,KAAK;AACxB,cAAM,IAAI,UAAU,oEAAoE;AAE5F,UAAI,OAAO,KAAK,mBAAoB;AAChC,cAAM,IAAI,UAAU,qCAAqC;AAAA,IAEjE;AACA,QAAImE,MAAe,UACf,OAAOA,KAAe;AACtB,YAAM,IAAI,UAAU,0CAA0C;AAGlE,QADAvE,EAAA,MAAKS,IAAc8D,IACfD,MAAgB,UAChB,OAAOA,KAAgB;AACvB,YAAM,IAAI,UAAU,6CAA6C;AAsCrE,QApCAtE,EAAA,MAAKQ,IAAe8D,IACpBtE,EAAA,MAAK0B,IAAkB,CAAC,CAAC4C,IACzBtE,EAAA,MAAKa,IAAU,oBAAI,IAAG,IACtBb,EAAA,MAAKc,IAAW,IAAI,MAAMrB,CAAG,EAAE,KAAK,MAAS,IAC7CO,EAAA,MAAKe,GAAW,IAAI,MAAMtB,CAAG,EAAE,KAAK,MAAS,IAC7CO,EAAA,MAAKgB,IAAQ,IAAI8D,EAAUrF,CAAG,IAC9BO,EAAA,MAAKiB,IAAQ,IAAI6D,EAAUrF,CAAG,IAC9BO,EAAA,MAAKkB,IAAQ,IACblB,EAAA,MAAKmB,IAAQ,IACbnB,EAAA,MAAKoB,IAAQlB,GAAM,OAAOT,CAAG,IAC7BO,EAAA,MAAKW,IAAQ,IACbX,EAAA,MAAKY,IAAkB,IACnB,OAAOmD,KAAY,cACnB/D,EAAA,MAAKK,IAAW0D,IAEhB,OAAOC,KAAa,cACpBhE,EAAA,MAAKM,IAAY0D,IAEjB,OAAOC,KAAiB,cACxBjE,EAAA,MAAKO,IAAgB0D,IACrBjE,EAAA,MAAKqB,IAAY,CAAA,OAGjBrB,EAAA,MAAKO,IAAgB,SACrBP,EAAA,MAAKqB,IAAY,UAErBrB,EAAA,MAAKyB,IAAc,CAAC,CAAC1B,EAAA,MAAKM,MAC1BL,EAAA,MAAK4B,IAAe,CAAC,CAAC7B,EAAA,MAAKO,MAC3BN,EAAA,MAAK2B,IAAmB,CAAC,CAAC5B,EAAA,MAAKQ,MAC/B,KAAK,iBAAiB,CAAC,CAAC2D,GACxB,KAAK,cAAc,CAAC,CAACC,GACrB,KAAK,2BAA2B,CAAC,CAACK,GAClC,KAAK,6BAA6B,CAAC,CAACE,GACpC,KAAK,yBAAyB,CAAC,CAACC,GAChC,KAAK,mBAAmB,CAAC,CAACC,GAEtB,KAAK,iBAAiB,GAAG;AACzB,UAAI7E,EAAA,MAAKK,QAAa,KACd,CAACb,GAASQ,EAAA,MAAKK,GAAQ;AACvB,cAAM,IAAI,UAAU,iDAAiD;AAG7E,UAAI,CAACb,GAAS,KAAK,YAAY;AAC3B,cAAM,IAAI,UAAU,sDAAsD;AAE9E,MAAAwF,EAAA,MAAKlD,GAAAM,IAAL;AAAA,IACJ;AAWA,QAVA,KAAK,aAAa,CAAC,CAAC2B,GACpB,KAAK,qBAAqB,CAAC,CAACW,GAC5B,KAAK,iBAAiB,CAAC,CAACb,GACxB,KAAK,iBAAiB,CAAC,CAACC,GACxB,KAAK,gBACDtE,GAASmE,CAAa,KAAKA,MAAkB,IACzCA,IACE,GACV,KAAK,eAAe,CAAC,CAACC,GACtB,KAAK,MAAMF,KAAO,GACd,KAAK,KAAK;AACV,UAAI,CAAClE,GAAS,KAAK,GAAG;AAClB,cAAM,IAAI,UAAU,6CAA6C;AAErE,MAAAwF,EAAA,MAAKlD,GAAAC,IAAL;AAAA,IACJ;AAEA,QAAI/B,EAAA,MAAKI,QAAS,KAAK,KAAK,QAAQ,KAAKJ,EAAA,MAAKK,QAAa;AACvD,YAAM,IAAI,UAAU,kDAAkD;AAE1E,QAAI,CAAC,KAAK,gBAAgB,CAACL,EAAA,MAAKI,OAAQ,CAACJ,EAAA,MAAKK,KAAU;AACpD,YAAMtB,IAAO;AACb,MAAIQ,GAAWR,CAAI,MACfL,GAAO,IAAIK,CAAI,GAGfH,GAFY,iGAEK,yBAAyBG,GAAMmE,EAAQ;AAAA,IAEhE;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EA1RA,IAAI,OAAO;AACP,WAAOlD,EAAA,MAAKW;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAyFA,OAAO,sBAAsB3M,GAAG;AAC5B,WAAO;AAAA;AAAA,MAEH,QAAQgM,EAAAhM,GAAEwN;AAAA,MACV,MAAMxB,EAAAhM,GAAEyN;AAAA,MACR,OAAOzB,EAAAhM,GAAEuN;AAAA,MACT,QAAQvB,EAAAhM,GAAE8M;AAAA,MACV,SAASd,EAAAhM,GAAE+M;AAAA,MACX,SAASf,EAAAhM,GAAEgN;AAAA,MACX,MAAMhB,EAAAhM,GAAEiN;AAAA,MACR,MAAMjB,EAAAhM,GAAEkN;AAAA,MACR,IAAI,OAAO;AACP,eAAOlB,EAAAhM,GAAEmN;AAAA,MACb;AAAA,MACA,IAAI,OAAO;AACP,eAAOnB,EAAAhM,GAAEoN;AAAA,MACb;AAAA,MACA,MAAMpB,EAAAhM,GAAEqN;AAAA;AAAA,MAER,mBAAmB,CAAC9L,MAAC;AHrQjC,YAAAmH;AGqQsC,eAAAsI,EAAAtI,IAAA1I,GAAE8N,GAAAe,IAAF,KAAAnG,GAAqBnH;AAAA;AAAA,MAC/C,iBAAiB,CAAC0C,GAAGgN,GAAO9B,GAAS+B,MAAO;AHtQxD,YAAAxI;AGsQ6D,eAAAsI,EAAAtI,IAAA1I,GAAE8N,GAAAc,IAAF,KAAAlG,GAAmBzE,GAAGgN,GAAO9B,GAAS+B;AAAA;AAAA,MACvF,YAAY,CAACD,MAAK;AHvQ9B,YAAAvI;AGuQmC,eAAAsI,EAAAtI,IAAA1I,GAAE8N,GAAAiB,IAAF,KAAArG,GAAcuI;AAAA;AAAA,MACrC,SAAS,CAAC9B,MAAO;AHxQ7B,YAAAzG;AGwQkC,eAAAsI,EAAAtI,IAAA1I,GAAE8N,GAAAU,IAAF,KAAA9F,GAAWyG;AAAA;AAAA,MACjC,UAAU,CAACA,MAAO;AHzQ9B,YAAAzG;AGyQmC,eAAAsI,EAAAtI,IAAA1I,GAAE8N,GAAAW,IAAF,KAAA/F,GAAYyG;AAAA;AAAA,MACnC,SAAS,CAAC8B,MAAK;AH1Q3B,YAAAvI;AG0QgC,eAAAsD,EAAAtD,IAAA1I,GAAEmO,IAAF,KAAAzF,GAAWuI;AAAA;AAAA,IAC3C;AAAA,EACI;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,IAAI,MAAM;AACN,WAAOjF,EAAA,MAAKI;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAU;AACV,WAAOJ,EAAA,MAAKK;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,iBAAiB;AACjB,WAAOL,EAAA,MAAKa;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,OAAO;AACP,WAAOb,EAAA,MAAKY;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,cAAc;AACd,WAAOZ,EAAA,MAAKS;AAAA,EAChB;AAAA,EACA,IAAI,aAAa;AACb,WAAOT,EAAA,MAAKU;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,UAAU;AACV,WAAOV,EAAA,MAAKM;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,WAAW;AACX,WAAON,EAAA,MAAKO;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAIA,IAAI,eAAe;AACf,WAAOP,EAAA,MAAKQ;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA;AAAA,EAsHA,gBAAgB2E,GAAK;AACjB,WAAOnF,EAAA,MAAKc,IAAQ,IAAIqE,CAAG,IAAI,QAAW;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA;AAAA,EAqLA,CAAC,UAAU;AACP,eAAWtS,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL;AACZ,MAAIxC,EAAA,MAAKgB,GAASnO,CAAC,MAAM,UACrBmN,EAAA,MAAKe,IAASlO,CAAC,MAAM,UACrB,CAACmS,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAM,CAACmN,EAAA,MAAKe,IAASlO,CAAC,GAAGmN,EAAA,MAAKgB,GAASnO,CAAC,CAAC;AAAA,EAGrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAC,WAAW;AACR,eAAWA,KAAKmS,EAAA,MAAKlD,GAAAW,IAAL;AACZ,MAAIzC,EAAA,MAAKgB,GAASnO,CAAC,MAAM,UACrBmN,EAAA,MAAKe,IAASlO,CAAC,MAAM,UACrB,CAACmS,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAM,CAACmN,EAAA,MAAKe,IAASlO,CAAC,GAAGmN,EAAA,MAAKgB,GAASnO,CAAC,CAAC;AAAA,EAGrD;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,OAAO;AACJ,eAAWA,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL,YAAiB;AAC7B,YAAMvK,IAAI+H,EAAA,MAAKe,IAASlO,CAAC;AACzB,MAAIoF,MAAM,UACN,CAAC+M,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAMoF;AAAA,IAEd;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAC,QAAQ;AACL,eAAWpF,KAAKmS,EAAA,MAAKlD,GAAAW,IAAL,YAAkB;AAC9B,YAAMxK,IAAI+H,EAAA,MAAKe,IAASlO,CAAC;AACzB,MAAIoF,MAAM,UACN,CAAC+M,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAMoF;AAAA,IAEd;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,CAAC,SAAS;AACN,eAAWpF,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL;AAEZ,MADUxC,EAAA,MAAKgB,GAASnO,CAAC,MACf,UACN,CAACmS,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAMmN,EAAA,MAAKgB,GAASnO,CAAC;AAAA,EAGjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,CAAC,UAAU;AACP,eAAWA,KAAKmS,EAAA,MAAKlD,GAAAW,IAAL;AAEZ,MADUzC,EAAA,MAAKgB,GAASnO,CAAC,MACf,UACN,CAACmS,EAAA,MAAKlD,GAAAe,IAAL,WAAwB7C,EAAA,MAAKgB,GAASnO,CAAC,OACxC,MAAMmN,EAAA,MAAKgB,GAASnO,CAAC;AAAA,EAGjC;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,EAACwM,KAAA,OAAO,UAQP3C,KAAA,OAAO,aARP2C,GAAe,IAAI;AAChB,WAAO,KAAK,QAAO;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,KAAKL,GAAIoG,IAAa,IAAI;AACtB,eAAWvS,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL,YAAiB;AAC7B,YAAM1I,IAAIkG,EAAA,MAAKgB,GAASnO,CAAC,GACnBwS,IAAQL,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AACpE,UAAIuL,MAAU,UAEVrG,EAAGqG,GAAOrF,EAAA,MAAKe,IAASlO,CAAC,GAAG,IAAI;AAChC,eAAO,KAAK,IAAImN,EAAA,MAAKe,IAASlO,CAAC,GAAGuS,CAAU;AAAA,IAEpD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,QAAQpG,GAAIsG,IAAQ,MAAM;AACtB,eAAWzS,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL,YAAiB;AAC7B,YAAM1I,IAAIkG,EAAA,MAAKgB,GAASnO,CAAC,GACnBwS,IAAQL,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AACpE,MAAIuL,MAAU,UAEdrG,EAAG,KAAKsG,GAAOD,GAAOrF,EAAA,MAAKe,IAASlO,CAAC,GAAG,IAAI;AAAA,IAChD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,SAASmM,GAAIsG,IAAQ,MAAM;AACvB,eAAWzS,KAAKmS,EAAA,MAAKlD,GAAAW,IAAL,YAAkB;AAC9B,YAAM3I,IAAIkG,EAAA,MAAKgB,GAASnO,CAAC,GACnBwS,IAAQL,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AACpE,MAAIuL,MAAU,UAEdrG,EAAG,KAAKsG,GAAOD,GAAOrF,EAAA,MAAKe,IAASlO,CAAC,GAAG,IAAI;AAAA,IAChD;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa;AACT,QAAI0S,IAAU;AACd,eAAW1S,KAAKmS,EAAA,MAAKlD,GAAAW,IAAL,WAAe,EAAE,YAAY,GAAI;AAC7C,MAAIzC,EAAA,MAAKmC,IAAL,WAActP,OACdmS,EAAA,MAAKlD,GAAAkB,IAAL,WAAahD,EAAA,MAAKe,IAASlO,CAAC,GAAG,WAC/B0S,IAAU;AAGlB,WAAOA;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,KAAKJ,GAAK;AACN,UAAMtS,IAAImN,EAAA,MAAKc,IAAQ,IAAIqE,CAAG;AAC9B,QAAItS,MAAM;AACN;AACJ,UAAMiH,IAAIkG,EAAA,MAAKgB,GAASnO,CAAC,GAGnBwS,IAAQL,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AACpE,QAAIuL,MAAU;AACV;AAEJ,UAAMG,IAAQ,EAAE,OAAAH,EAAK;AACrB,QAAIrF,EAAA,MAAKyB,OAASzB,EAAA,MAAKwB,KAAS;AAC5B,YAAMkC,IAAM1D,EAAA,MAAKyB,IAAM5O,CAAC,GAClB4S,IAAQzF,EAAA,MAAKwB,IAAQ3O,CAAC;AAC5B,UAAI6Q,KAAO+B,GAAO;AACd,cAAMC,IAAShC,KAAO1D,EAAA,MAAKW,IAAM,IAAG,IAAK8E;AACzC,QAAAD,EAAM,MAAME,GACZF,EAAM,QAAQ,KAAK,IAAG;AAAA,MAC1B;AAAA,IACJ;AACA,WAAIxF,EAAA,MAAKuB,QACLiE,EAAM,OAAOxF,EAAA,MAAKuB,IAAO1O,CAAC,IAEvB2S;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,OAAO;AACH,UAAMG,IAAM,CAAA;AACZ,eAAW9S,KAAKmS,EAAA,MAAKlD,GAAAU,IAAL,WAAc,EAAE,YAAY,GAAI,IAAK;AACjD,YAAM2C,IAAMnF,EAAA,MAAKe,IAASlO,CAAC,GACrBiH,IAAIkG,EAAA,MAAKgB,GAASnO,CAAC,GACnBwS,IAAQL,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AACpE,UAAIuL,MAAU,UAAaF,MAAQ;AAC/B;AACJ,YAAMK,IAAQ,EAAE,OAAAH,EAAK;AACrB,UAAIrF,EAAA,MAAKyB,OAASzB,EAAA,MAAKwB,KAAS;AAC5B,QAAAgE,EAAM,MAAMxF,EAAA,MAAKyB,IAAM5O,CAAC;AAGxB,cAAM+S,IAAM5F,EAAA,MAAKW,IAAM,IAAG,IAAKX,EAAA,MAAKwB,IAAQ3O,CAAC;AAC7C,QAAA2S,EAAM,QAAQ,KAAK,MAAM,KAAK,IAAG,IAAKI,CAAG;AAAA,MAC7C;AACA,MAAI5F,EAAA,MAAKuB,QACLiE,EAAM,OAAOxF,EAAA,MAAKuB,IAAO1O,CAAC,IAE9B8S,EAAI,QAAQ,CAACR,GAAKK,CAAK,CAAC;AAAA,IAC5B;AACA,WAAOG;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,KAAKA,GAAK;AACN,SAAK,MAAK;AACV,eAAW,CAACR,GAAKK,CAAK,KAAKG,GAAK;AAC5B,UAAIH,EAAM,OAAO;AAOb,cAAMI,IAAM,KAAK,IAAG,IAAKJ,EAAM;AAC/B,QAAAA,EAAM,QAAQxF,EAAA,MAAKW,IAAM,IAAG,IAAKiF;AAAA,MACrC;AACA,WAAK,IAAIT,GAAKK,EAAM,OAAOA,CAAK;AAAA,IACpC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BA,IAAIvN,GAAG6B,GAAG+L,IAAa,CAAA,GAAI;AHz4B/B,QAAAnJ,GAAA2C,GAAAyG,GAAAC,GAAAC,GAAAC,GAAAC;AG04BQ,QAAIpM,MAAM;AACN,kBAAK,OAAO7B,CAAC,GACN;AAEX,UAAM,EAAE,KAAAyL,IAAM,KAAK,KAAK,OAAA+B,GAAO,gBAAAtB,IAAiB,KAAK,gBAAgB,iBAAAV,IAAkB,KAAK,iBAAiB,QAAA0C,EAAM,IAAMN;AACzH,QAAI,EAAE,aAAAzB,IAAc,KAAK,YAAW,IAAKyB;AACzC,UAAMjG,IAAOI,EAAA,MAAKuC,IAAL,WAAkBtK,GAAG6B,GAAG+L,EAAW,QAAQ,GAAGpC;AAG3D,QAAI,KAAK,gBAAgB7D,IAAO,KAAK;AACjC,aAAIuG,MACAA,EAAO,MAAM,QACbA,EAAO,uBAAuB,KAGlCnB,EAAA,MAAKlD,GAAAkB,IAAL,WAAa/K,GAAG,QACT;AAEX,QAAIgN,IAAQjF,EAAA,MAAKY,QAAU,IAAI,SAAYZ,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAC7D,QAAIgN,MAAU;AAEV,MAAAA,IAASjF,EAAA,MAAKY,QAAU,IAAIZ,EAAA,MAAKoB,MAC3BpB,EAAA,MAAKqB,IAAM,WAAW,IAAIrB,EAAA,MAAKqB,IAAM,IAAG,IACpCrB,EAAA,MAAKY,QAAUZ,EAAA,MAAKI,MAAO4E,EAAA,MAAKlD,GAAAa,IAAL,WAAY,MACnC3C,EAAA,MAAKY,KACnBZ,EAAA,MAAKe,IAASkE,CAAK,IAAIhN,GACvB+H,EAAA,MAAKgB,GAASiE,CAAK,IAAInL,GACvBkG,EAAA,MAAKc,IAAQ,IAAI7I,GAAGgN,CAAK,GACzBjF,EAAA,MAAKiB,IAAMjB,EAAA,MAAKoB,GAAK,IAAI6D,GACzBjF,EAAA,MAAKkB,IAAM+D,CAAK,IAAIjF,EAAA,MAAKoB,KACzBnB,EAAA,MAAKmB,IAAQ6D,IACbmB,GAAA,MAAKxF,IAAL,KACAZ,EAAA,MAAKsC,IAAL,WAAkB2C,GAAOrF,GAAMuG,IAC3BA,MACAA,EAAO,MAAM,QACjB/B,IAAc,IACVpE,EAAA,MAAK6B,SACLnF,IAAAsD,EAAA,MAAKO,QAAL,QAAA7D,EAAA,WAAiB5C,GAAG7B,GAAG;AAAA,SAG1B;AAED,MAAA+M,EAAA,MAAKlD,GAAAiB,IAAL,WAAiBkC;AACjB,YAAMoB,IAASrG,EAAA,MAAKgB,GAASiE,CAAK;AAClC,UAAInL,MAAMuM,GAAQ;AACd,YAAIrG,EAAA,MAAK2B,OAAmBqD,EAAA,MAAKlD,GAAAe,IAAL,WAAwBwD,IAAS;AACzD,UAAAA,EAAO,kBAAkB,MAAM,IAAI,MAAM,UAAU,CAAC;AACpD,gBAAM,EAAE,sBAAsBvT,EAAC,IAAKuT;AACpC,UAAIvT,MAAM,UAAa,CAACqR,MAChBnE,EAAA,MAAK0B,SACLrC,IAAAW,EAAA,MAAKM,QAAL,QAAAjB,EAAA,WAAgBvM,GAAGmF,GAAG,SAEtB+H,EAAA,MAAK4B,SACLkE,IAAA9F,EAAA,MAAKsB,QAAL,QAAAwE,EAAgB,KAAK,CAAChT,GAAGmF,GAAG,KAAK;AAAA,QAG7C,MACK,CAAKkM,MACFnE,EAAA,MAAK0B,SACLqE,IAAA/F,EAAA,MAAKM,QAAL,QAAAyF,EAAA,WAAgBM,GAAQpO,GAAG,SAE3B+H,EAAA,MAAK4B,SACLoE,IAAAhG,EAAA,MAAKsB,QAAL,QAAA0E,EAAgB,KAAK,CAACK,GAAQpO,GAAG,KAAK;AAM9C,YAHA+H,EAAA,MAAKqC,IAAL,WAAqB4C,IACrBjF,EAAA,MAAKsC,IAAL,WAAkB2C,GAAOrF,GAAMuG,IAC/BnG,EAAA,MAAKgB,GAASiE,CAAK,IAAInL,GACnBqM,GAAQ;AACR,UAAAA,EAAO,MAAM;AACb,gBAAMG,IAAWD,KAAUrB,EAAA,MAAKlD,GAAAe,IAAL,WAAwBwD,KAC/CA,EAAO,uBACLA;AACN,UAAIC,MAAa,WACbH,EAAO,WAAWG;AAAA,QAC1B;AAAA,MACJ,MACK,CAAIH,MACLA,EAAO,MAAM;AAEjB,MAAInG,EAAA,MAAK6B,SACLoE,IAAA,KAAK,aAAL,QAAAA,EAAA,WAAgBnM,GAAG7B,GAAG6B,MAAMuM,IAAS,WAAW;AAAA,IAExD;AAWA,QAVI3C,MAAQ,KAAK,CAAC1D,EAAA,MAAKyB,OACnBuD,EAAA,MAAKlD,GAAAC,IAAL,YAEA/B,EAAA,MAAKyB,QACA2C,KACDpE,EAAA,MAAKkC,IAAL,WAAiB+C,GAAOvB,GAAK+B,IAE7BU,KACAnG,EAAA,MAAKiC,IAAL,WAAgBkE,GAAQlB,KAE5B,CAACd,KAAkBnE,EAAA,MAAK4B,OAAoB5B,EAAA,MAAKsB,KAAW;AAC5D,YAAMiF,IAAKvG,EAAA,MAAKsB;AAChB,UAAIkF;AACJ,aAAQA,IAAOD,KAAA,gBAAAA,EAAI;AACf,SAAAL,IAAAlG,EAAA,MAAKQ,QAAL,QAAA0F,EAAA,WAAqB,GAAGM;AAAA,IAEhC;AACA,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM;AHr/BV,QAAA9J;AGs/BQ,QAAI;AACA,aAAOsD,EAAA,MAAKY,OAAO;AACf,cAAM6F,IAAMzG,EAAA,MAAKgB,GAAShB,EAAA,MAAKmB,GAAK;AAEpC,YADA6D,EAAA,MAAKlD,GAAAa,IAAL,WAAY,KACRqC,EAAA,MAAKlD,GAAAe,IAAL,WAAwB4D;AACxB,cAAIA,EAAI;AACJ,mBAAOA,EAAI;AAAA,mBAGVA,MAAQ;AACb,iBAAOA;AAAA,MAEf;AAAA,IACJ,UACR;AACY,UAAIzG,EAAA,MAAK4B,OAAoB5B,EAAA,MAAKsB,KAAW;AACzC,cAAMiF,IAAKvG,EAAA,MAAKsB;AAChB,YAAIkF;AACJ,eAAQA,IAAOD,KAAA,gBAAAA,EAAI;AACf,WAAA7J,IAAAsD,EAAA,MAAKQ,QAAL,QAAA9D,EAAA,WAAqB,GAAG8J;AAAA,MAEhC;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAkDA,IAAIvO,GAAGyO,IAAa,IAAI;AACpB,UAAM,EAAE,gBAAA5C,IAAiB,KAAK,gBAAgB,QAAAqC,EAAM,IAAKO,GACnDzB,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAChC,QAAIgN,MAAU,QAAW;AACrB,YAAMnL,IAAIkG,EAAA,MAAKgB,GAASiE,CAAK;AAC7B,UAAID,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,MACxBA,EAAE,yBAAyB;AAC3B,eAAO;AAEX,UAAKkG,EAAA,MAAKmC,IAAL,WAAc8C;AAUd,QAAIkB,MACLA,EAAO,MAAM,SACbnG,EAAA,MAAKiC,IAAL,WAAgBkE,GAAQlB;AAAA,UAXxB,QAAInB,KACA9D,EAAA,MAAKgC,IAAL,WAAoBiD,IAEpBkB,MACAA,EAAO,MAAM,OACbnG,EAAA,MAAKiC,IAAL,WAAgBkE,GAAQlB,KAErB;AAAA,IAMf,MACK,CAAIkB,MACLA,EAAO,MAAM;AAEjB,WAAO;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,KAAKlO,GAAG0O,IAAc,IAAI;AACtB,UAAM,EAAE,YAAA5C,IAAa,KAAK,WAAU,IAAK4C,GACnC1B,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAChC,QAAIgN,MAAU,UACT,CAAClB,KAAc/D,EAAA,MAAKmC,IAAL,WAAc8C;AAC9B;AAEJ,UAAMnL,IAAIkG,EAAA,MAAKgB,GAASiE,CAAK;AAE7B,WAAOD,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAAKA,EAAE,uBAAuBA;AAAA,EACjE;AAAA,EAyIA,MAAM,MAAM7B,GAAG2O,IAAe,IAAI;AAC9B,UAAM;AAAA;AAAA,MAEN,YAAA7C,IAAa,KAAK;AAAA,MAAY,gBAAAF,IAAiB,KAAK;AAAA,MAAgB,oBAAAa,IAAqB,KAAK;AAAA;AAAA,MAE9F,KAAAhB,IAAM,KAAK;AAAA,MAAK,gBAAAS,IAAiB,KAAK;AAAA,MAAgB,MAAAvE,IAAO;AAAA,MAAG,iBAAA6D,IAAkB,KAAK;AAAA,MAAiB,aAAAW,IAAc,KAAK;AAAA;AAAA,MAE3H,0BAAAK,IAA2B,KAAK;AAAA,MAA0B,4BAAAE,IAA6B,KAAK;AAAA,MAA4B,kBAAAE,IAAmB,KAAK;AAAA,MAAkB,wBAAAD,IAAyB,KAAK;AAAA,MAAwB,SAAAM;AAAA,MAAS,cAAA2B,IAAe;AAAA,MAAO,QAAAV;AAAA,MAAQ,QAAAW;AAAA,IAAM,IAAMF;AAC3Q,QAAI,CAAC5G,EAAA,MAAK2B;AACN,aAAIwE,MACAA,EAAO,QAAQ,QACZ,KAAK,IAAIlO,GAAG;AAAA,QACf,YAAA8L;AAAA,QACA,gBAAAF;AAAA,QACA,oBAAAa;AAAA,QACA,QAAAyB;AAAA,MAChB,CAAa;AAEL,UAAMhD,IAAU;AAAA,MACZ,YAAAY;AAAA,MACA,gBAAAF;AAAA,MACA,oBAAAa;AAAA,MACA,KAAAhB;AAAA,MACA,gBAAAS;AAAA,MACA,MAAAvE;AAAA,MACA,iBAAA6D;AAAA,MACA,aAAAW;AAAA,MACA,0BAAAK;AAAA,MACA,4BAAAE;AAAA,MACA,wBAAAC;AAAA,MACA,kBAAAC;AAAA,MACA,QAAAsB;AAAA,MACA,QAAAW;AAAA,IACZ;AACQ,QAAI7B,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAC9B,QAAIgN,MAAU,QAAW;AACrB,MAAIkB,MACAA,EAAO,QAAQ;AACnB,YAAM5Q,IAAIyP,EAAA,MAAKlD,GAAAc,IAAL,WAAsB3K,GAAGgN,GAAO9B,GAAS+B;AACnD,aAAQ3P,EAAE,aAAaA;AAAA,IAC3B,OACK;AAED,YAAMuE,IAAIkG,EAAA,MAAKgB,GAASiE,CAAK;AAC7B,UAAID,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,IAAI;AAC5B,cAAMiN,IAAQhD,KAAcjK,EAAE,yBAAyB;AACvD,eAAIqM,MACAA,EAAO,QAAQ,YACXY,MACAZ,EAAO,gBAAgB,MAExBY,IAAQjN,EAAE,uBAAwBA,EAAE,aAAaA;AAAA,MAC5D;AAGA,YAAMkN,IAAUhH,EAAA,MAAKmC,IAAL,WAAc8C;AAC9B,UAAI,CAAC4B,KAAgB,CAACG;AAClB,eAAIb,MACAA,EAAO,QAAQ,QACnBnB,EAAA,MAAKlD,GAAAiB,IAAL,WAAiBkC,IACbpB,KACA7D,EAAA,MAAKgC,IAAL,WAAoBiD,IAEpBkB,KACAnG,EAAA,MAAKiC,IAAL,WAAgBkE,GAAQlB,IACrBnL;AAIX,YAAMvE,IAAIyP,EAAA,MAAKlD,GAAAc,IAAL,WAAsB3K,GAAGgN,GAAO9B,GAAS+B,IAE7C+B,IADW1R,EAAE,yBAAyB,UACfwO;AAC7B,aAAIoC,MACAA,EAAO,QAAQa,IAAU,UAAU,WAC/BC,KAAYD,MACZb,EAAO,gBAAgB,MAExBc,IAAW1R,EAAE,uBAAwBA,EAAE,aAAaA;AAAA,IAC/D;AAAA,EACJ;AAAA,EACA,MAAM,WAAW0C,GAAG2O,IAAe,IAAI;AACnC,UAAM9M,IAAI,MAAM,KAAK,MAAM7B,GAAG2O,CAAY;AAC1C,QAAI9M,MAAM;AACN,YAAM,IAAI,MAAM,4BAA4B;AAChD,WAAOA;AAAA,EACX;AAAA,EACA,KAAK7B,GAAGiP,IAAc,IAAI;AACtB,UAAM1C,IAAaxE,EAAA,MAAKU;AACxB,QAAI,CAAC8D;AACD,YAAM,IAAI,MAAM,uCAAuC;AAE3D,UAAM,EAAE,SAAAU,GAAS,cAAA2B,GAAc,GAAG1D,EAAO,IAAK+D,GACxCpN,IAAI,KAAK,IAAI7B,GAAGkL,CAAO;AAC7B,QAAI,CAAC0D,KAAgB/M,MAAM;AACvB,aAAOA;AACX,UAAMqN,IAAK3C,EAAWvM,GAAG6B,GAAG;AAAA,MACxB,SAAAqJ;AAAA,MACA,SAAA+B;AAAA,IACZ,CAAS;AACD,gBAAK,IAAIjN,GAAGkP,GAAIhE,CAAO,GAChBgE;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAIlP,GAAGmN,IAAa,IAAI;AACpB,UAAM,EAAE,YAAArB,IAAa,KAAK,YAAY,gBAAAF,IAAiB,KAAK,gBAAgB,oBAAAa,IAAqB,KAAK,oBAAoB,QAAAyB,EAAM,IAAMf,GAChIH,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAChC,QAAIgN,MAAU,QAAW;AACrB,YAAMI,IAAQrF,EAAA,MAAKgB,GAASiE,CAAK,GAC3BmC,IAAWpC,EAAA,MAAKlD,GAAAe,IAAL,WAAwBwC;AAGzC,aAFIc,KACAnG,EAAA,MAAKiC,IAAL,WAAgBkE,GAAQlB,IACxBjF,EAAA,MAAKmC,IAAL,WAAc8C,MACVkB,MACAA,EAAO,MAAM,UAEZiB,KASGjB,KACApC,KACAsB,EAAM,yBAAyB,WAC/Bc,EAAO,gBAAgB,KAEpBpC,IAAasB,EAAM,uBAAuB,WAb5CX,KACDM,EAAA,MAAKlD,GAAAkB,IAAL,WAAa/K,GAAG,WAEhBkO,KAAUpC,MACVoC,EAAO,gBAAgB,KACpBpC,IAAasB,IAAQ,YAY5Bc,MACAA,EAAO,MAAM,QAMbiB,IACO/B,EAAM,wBAEjBL,EAAA,MAAKlD,GAAAiB,IAAL,WAAiBkC,IACbpB,KACA7D,EAAA,MAAKgC,IAAL,WAAoBiD,IAEjBI;AAAA,IAEf,MACK,CAAIc,MACLA,EAAO,MAAM;AAAA,EAErB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA8BA,OAAOlO,GAAG;AACN,WAAO+M,EAAA,MAAKlD,GAAAkB,IAAL,WAAa/K,GAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAwDA,QAAQ;AACJ,WAAO+M,EAAA,MAAKlD,GAAAmB,IAAL,WAAY;AAAA,EACvB;AAwCJ;AA14CI7C,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAoEAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,IAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eA9FGC,IAAA,eA+SHC,KAAsB,WAAG;AACrB,QAAMsF,IAAO,IAAI1H,GAAUK,EAAA,MAAKI,GAAI,GAC9BkH,IAAS,IAAI3H,GAAUK,EAAA,MAAKI,GAAI;AACtC,EAAAH,EAAA,MAAKwB,IAAQ4F,IACbpH,EAAA,MAAKuB,IAAU8F,IACfrH,EAAA,MAAKiC,IAAc,CAAC+C,GAAOvB,GAAK+B,IAAQzF,EAAA,MAAKW,IAAM,UAAU;AAGzD,QAFA2G,EAAOrC,CAAK,IAAIvB,MAAQ,IAAI+B,IAAQ,GACpC4B,EAAKpC,CAAK,IAAIvB,GACVA,MAAQ,KAAK,KAAK,cAAc;AAChC,YAAMnR,IAAI,WAAW,MAAM;AACvB,QAAIyN,EAAA,MAAKmC,IAAL,WAAc8C,MACdD,EAAA,MAAKlD,GAAAkB,IAAL,WAAahD,EAAA,MAAKe,IAASkE,CAAK,GAAG;AAAA,MAE3C,GAAGvB,IAAM,CAAC;AAGV,MAAInR,EAAE,SACFA,EAAE,MAAK;AAAA,IAGf;AAAA,EACJ,IACA0N,EAAA,MAAK+B,IAAiB,CAAAiD,MAAS;AAC3B,IAAAqC,EAAOrC,CAAK,IAAIoC,EAAKpC,CAAK,MAAM,IAAIjF,EAAA,MAAKW,IAAM,IAAG,IAAK;AAAA,EAC3D,IACAV,EAAA,MAAKgC,IAAa,CAACkE,GAAQlB,MAAU;AACjC,QAAIoC,EAAKpC,CAAK,GAAG;AACb,YAAMvB,IAAM2D,EAAKpC,CAAK,GAChBQ,IAAQ6B,EAAOrC,CAAK;AAE1B,UAAI,CAACvB,KAAO,CAAC+B;AACT;AACJ,MAAAU,EAAO,MAAMzC,GACbyC,EAAO,QAAQV,GACfU,EAAO,MAAMoB,KAAaC,EAAM;AAChC,YAAM5B,IAAMO,EAAO,MAAMV;AACzB,MAAAU,EAAO,eAAezC,IAAMkC;AAAA,IAChC;AAAA,EACJ;AAGA,MAAI2B,IAAY;AAChB,QAAMC,IAAS,MAAM;AACjB,UAAMlV,IAAI0N,EAAA,MAAKW,IAAM,IAAG;AACxB,QAAI,KAAK,gBAAgB,GAAG;AACxB,MAAA4G,IAAYjV;AACZ,YAAMC,IAAI,WAAW,MAAOgV,IAAY,GAAI,KAAK,aAAa;AAG9D,MAAIhV,EAAE,SACFA,EAAE,MAAK;AAAA,IAGf;AACA,WAAOD;AAAA,EACX;AACA,OAAK,kBAAkB,CAAA6S,MAAO;AAC1B,UAAMF,IAAQjF,EAAA,MAAKc,IAAQ,IAAIqE,CAAG;AAClC,QAAIF,MAAU;AACV,aAAO;AAEX,UAAMvB,IAAM2D,EAAKpC,CAAK,GAChBQ,IAAQ6B,EAAOrC,CAAK;AAC1B,QAAI,CAACvB,KAAO,CAAC+B;AACT,aAAO;AAEX,UAAMG,KAAO2B,KAAaC,EAAM,KAAM/B;AACtC,WAAO/B,IAAMkC;AAAA,EACjB,GACA3F,EAAA,MAAKkC,IAAW,CAAA8C,MAAS;AACrB,UAAMnS,IAAIwU,EAAOrC,CAAK,GAChB1S,IAAI8U,EAAKpC,CAAK;AACpB,WAAO,CAAC,CAAC1S,KAAK,CAAC,CAACO,MAAMyU,KAAaC,OAAY1U,IAAIP;AAAA,EACvD;AACJ,GAEAyP,KAAA,eACAC,KAAA,eACAC,KAAA,eAEAC,KAAA,eACAC,KAAuB,WAAG;AACtB,QAAMqF,IAAQ,IAAI9H,GAAUK,EAAA,MAAKI,GAAI;AACrC,EAAAH,EAAA,MAAKY,IAAkB,IACvBZ,EAAA,MAAKsB,IAASkG,IACdxH,EAAA,MAAKoC,IAAkB,CAAA4C,MAAS;AAC5B,IAAAhF,EAAA,MAAKY,IAALb,EAAA,MAAKa,MAAmB4G,EAAMxC,CAAK,IACnCwC,EAAMxC,CAAK,IAAI;AAAA,EACnB,IACAhF,EAAA,MAAKsC,IAAe,CAACtK,GAAG6B,GAAG8F,GAAM6D,MAAoB;AAGjD,QAAIuB,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I;AACxB,aAAO;AAEX,QAAI,CAAC0F,GAASI,CAAI;AACd,UAAI6D,GAAiB;AACjB,YAAI,OAAOA,KAAoB;AAC3B,gBAAM,IAAI,UAAU,oCAAoC;AAG5D,YADA7D,IAAO6D,EAAgB3J,GAAG7B,CAAC,GACvB,CAACuH,GAASI,CAAI;AACd,gBAAM,IAAI,UAAU,0DAA0D;AAAA,MAEtF;AAEI,cAAM,IAAI,UAAU,2HAEM;AAGlC,WAAOA;AAAA,EACX,IACAK,EAAA,MAAKqC,IAAe,CAAC2C,GAAOrF,GAAMuG,MAAW;AAEzC,QADAsB,EAAMxC,CAAK,IAAIrF,GACXI,EAAA,MAAKK,KAAU;AACf,YAAMgE,IAAUrE,EAAA,MAAKK,MAAWoH,EAAMxC,CAAK;AAC3C,aAAOjF,EAAA,MAAKa,MAAkBwD;AAC1B,QAAAW,EAAA,MAAKlD,GAAAa,IAAL,WAAY;AAAA,IAEpB;AACA,IAAA1C,EAAA,MAAKY,IAALb,EAAA,MAAKa,MAAmB4G,EAAMxC,CAAK,IAC/BkB,MACAA,EAAO,YAAYvG,GACnBuG,EAAO,sBAAsBnG,EAAA,MAAKa;AAAA,EAE1C;AACJ,GACAwB,KAAA,eACAC,KAAA,eACAC,KAAA,eAMCC,KAAQ,WAAC,EAAE,YAAAuB,IAAa,KAAK,WAAU,IAAK,CAAA,GAAI;AAC7C,MAAI/D,EAAA,MAAKY;AACL,aAAS/N,IAAImN,EAAA,MAAKoB,KACV,GAAC4D,EAAA,MAAKlD,GAAAY,IAAL,WAAmB7P,QAGpBkR,KAAc,CAAC/D,EAAA,MAAKmC,IAAL,WAActP,QAC7B,MAAMA,IAENA,MAAMmN,EAAA,MAAKmB;AAIX,MAAAtO,IAAImN,EAAA,MAAKkB,IAAMrO,CAAC;AAIhC,GACC4P,KAAS,WAAC,EAAE,YAAAsB,IAAa,KAAK,WAAU,IAAK,CAAA,GAAI;AAC9C,MAAI/D,EAAA,MAAKY;AACL,aAAS/N,IAAImN,EAAA,MAAKmB,KACV,GAAC6D,EAAA,MAAKlD,GAAAY,IAAL,WAAmB7P,QAGpBkR,KAAc,CAAC/D,EAAA,MAAKmC,IAAL,WAActP,QAC7B,MAAMA,IAENA,MAAMmN,EAAA,MAAKoB;AAIX,MAAAvO,IAAImN,EAAA,MAAKiB,IAAMpO,CAAC;AAIhC,GACA6P,KAAa,SAACuC,GAAO;AACjB,SAAQA,MAAU,UACdjF,EAAA,MAAKc,IAAQ,IAAId,EAAA,MAAKe,IAASkE,CAAK,CAAC,MAAMA;AACnD,GAsaAtC,KAAM,SAAC+E,GAAM;AH9gCjB,MAAAhL,GAAA2C;AG+gCQ,QAAMsI,IAAO3H,EAAA,MAAKmB,KACZlJ,IAAI+H,EAAA,MAAKe,IAAS4G,CAAI,GACtB7N,IAAIkG,EAAA,MAAKgB,GAAS2G,CAAI;AAC5B,SAAI3H,EAAA,MAAK2B,OAAmBqD,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KAChDA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,KAEzCkG,EAAA,MAAK0B,OAAe1B,EAAA,MAAK4B,SAC1B5B,EAAA,MAAK0B,SACLhF,IAAAsD,EAAA,MAAKM,QAAL,QAAA5D,EAAA,WAAgB5C,GAAG7B,GAAG,WAEtB+H,EAAA,MAAK4B,SACLvC,IAAAW,EAAA,MAAKsB,QAAL,QAAAjC,EAAgB,KAAK,CAACvF,GAAG7B,GAAG,OAAO,MAG3C+H,EAAA,MAAKqC,IAAL,WAAqBsF,IAEjBD,MACA1H,EAAA,MAAKe,IAAS4G,CAAI,IAAI,QACtB3H,EAAA,MAAKgB,GAAS2G,CAAI,IAAI,QACtB3H,EAAA,MAAKqB,IAAM,KAAKsG,CAAI,IAEpB3H,EAAA,MAAKY,QAAU,KACfX,EAAA,MAAKkB,IAAQlB,EAAA,MAAKmB,IAAQ,KAC1BpB,EAAA,MAAKqB,IAAM,SAAS,KAGpBpB,EAAA,MAAKkB,IAAQnB,EAAA,MAAKiB,IAAM0G,CAAI,IAEhC3H,EAAA,MAAKc,IAAQ,OAAO7I,CAAC,GACrBmO,GAAA,MAAKxF,IAAL,KACO+G;AACX,GAgEA/E,KAAgB,SAAC3K,GAAGgN,GAAO9B,GAAS+B,GAAS;AACzC,QAAMpL,IAAImL,MAAU,SAAY,SAAYjF,EAAA,MAAKgB,GAASiE,CAAK;AAC/D,MAAID,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I;AACxB,WAAOA;AAEX,QAAM8N,IAAK,IAAI3I,GAAE,GACX,EAAE,QAAA6H,EAAM,IAAK3D;AAEnB,EAAA2D,KAAA,QAAAA,EAAQ,iBAAiB,SAAS,MAAMc,EAAG,MAAMd,EAAO,MAAM,GAAG;AAAA,IAC7D,QAAQc,EAAG;AAAA,EACvB;AACQ,QAAMC,IAAY;AAAA,IACd,QAAQD,EAAG;AAAA,IACX,SAAAzE;AAAA,IACA,SAAA+B;AAAA,EACZ,GACc4C,IAAK,CAAChO,GAAGiO,IAAc,OAAU;AACnC,UAAM,EAAE,SAAAC,MAAYJ,EAAG,QACjBK,IAAc9E,EAAQ,oBAAoBrJ,MAAM;AAYtD,QAXIqJ,EAAQ,WACJ6E,KAAW,CAACD,KACZ5E,EAAQ,OAAO,eAAe,IAC9BA,EAAQ,OAAO,aAAayE,EAAG,OAAO,QAClCK,MACA9E,EAAQ,OAAO,oBAAoB,OAGvCA,EAAQ,OAAO,gBAAgB,KAGnC6E,KAAW,CAACC,KAAe,CAACF;AAC5B,aAAOG,EAAUN,EAAG,OAAO,MAAM;AAGrC,UAAMO,IAAK5S;AACX,WAAIyK,EAAA,MAAKgB,GAASiE,CAAK,MAAM1P,MACrBuE,MAAM,SACFqO,EAAG,yBAAyB,SAC5BnI,EAAA,MAAKgB,GAASiE,CAAK,IAAIkD,EAAG,uBAG1BnD,EAAA,MAAKlD,GAAAkB,IAAL,WAAa/K,GAAG,YAIhBkL,EAAQ,WACRA,EAAQ,OAAO,eAAe,KAClC,KAAK,IAAIlL,GAAG6B,GAAG+N,EAAU,OAAO,KAGjC/N;AAAA,EACX,GACMsO,IAAK,CAACC,OACJlF,EAAQ,WACRA,EAAQ,OAAO,gBAAgB,IAC/BA,EAAQ,OAAO,aAAakF,IAEzBH,EAAUG,CAAE,IAEjBH,IAAY,CAACG,MAAO;AACtB,UAAM,EAAE,SAAAL,MAAYJ,EAAG,QACjBU,IAAoBN,KAAW7E,EAAQ,wBACvCY,IAAauE,KAAqBnF,EAAQ,4BAC1CoF,IAAWxE,KAAcZ,EAAQ,0BACjCgF,IAAK5S;AAgBX,QAfIyK,EAAA,MAAKgB,GAASiE,CAAK,MAAM1P,MAGb,CAACgT,KAAYJ,EAAG,yBAAyB,SAEjDnD,EAAA,MAAKlD,GAAAkB,IAAL,WAAa/K,GAAG,WAEVqQ,MAKNtI,EAAA,MAAKgB,GAASiE,CAAK,IAAIkD,EAAG,wBAG9BpE;AACA,aAAIZ,EAAQ,UAAUgF,EAAG,yBAAyB,WAC9ChF,EAAQ,OAAO,gBAAgB,KAE5BgF,EAAG;AAET,QAAIA,EAAG,eAAeA;AACvB,YAAME;AAAA,EAEd,GACMG,IAAQ,CAACC,GAAKC,MAAQ;AHxsCpC,QAAAhM;AGysCY,UAAMiM,KAAMjM,IAAAsD,EAAA,MAAKS,QAAL,gBAAA/D,EAAA,WAAoBzE,GAAG6B,GAAG+N;AACtC,IAAIc,KAAOA,aAAe,WACtBA,EAAI,KAAK,CAAA7O,MAAK2O,EAAI3O,MAAM,SAAY,SAAYA,CAAC,GAAG4O,CAAG,GAK3Dd,EAAG,OAAO,iBAAiB,SAAS,MAAM;AACtC,OAAI,CAACzE,EAAQ,oBACTA,EAAQ,4BACRsF,EAAI,MAAS,GAETtF,EAAQ,2BACRsF,IAAM,CAAA3O,MAAKgO,EAAGhO,GAAG,EAAI;AAAA,IAGjC,CAAC;AAAA,EACL;AACA,EAAIqJ,EAAQ,WACRA,EAAQ,OAAO,kBAAkB;AACrC,QAAM5N,IAAI,IAAI,QAAQiT,CAAK,EAAE,KAAKV,GAAIM,CAAE,GAClCD,IAAK,OAAO,OAAO5S,GAAG;AAAA,IACxB,mBAAmBqS;AAAA,IACnB,sBAAsB9N;AAAA,IACtB,YAAY;AAAA,EACxB,CAAS;AACD,SAAImL,MAAU,UAEV,KAAK,IAAIhN,GAAGkQ,GAAI,EAAE,GAAGN,EAAU,SAAS,QAAQ,QAAW,GAC3D5C,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC,KAG1B+H,EAAA,MAAKgB,GAASiE,CAAK,IAAIkD,GAEpBA;AACX,GACAtF,KAAkB,SAACtN,GAAG;AAClB,MAAI,CAACyK,EAAA,MAAK2B;AACN,WAAO;AACX,QAAMrD,IAAI/I;AACV,SAAQ,CAAC,CAAC+I,KACNA,aAAa,WACbA,EAAE,eAAe,sBAAsB,KACvCA,EAAE,6BAA6BW;AACvC,GAgKA6D,KAAQ,SAACvN,GAAG,GAAG;AACX,EAAAyK,EAAA,MAAKkB,IAAM,CAAC,IAAI3L,GAChByK,EAAA,MAAKiB,IAAM1L,CAAC,IAAI;AACpB,GACAwN,KAAW,SAACkC,GAAO;AASf,EAAIA,MAAUjF,EAAA,MAAKoB,QACX6D,MAAUjF,EAAA,MAAKmB,MACflB,EAAA,MAAKkB,IAAQnB,EAAA,MAAKiB,IAAMgE,CAAK,KAG7BD,EAAA,MAAKlD,GAAAgB,IAAL,WAAc9C,EAAA,MAAKkB,IAAM+D,CAAK,GAAGjF,EAAA,MAAKiB,IAAMgE,CAAK,IAErDD,EAAA,MAAKlD,GAAAgB,IAAL,WAAc9C,EAAA,MAAKoB,KAAO6D,IAC1BhF,EAAA,MAAKmB,IAAQ6D;AAErB,GASAjC,KAAO,SAAC/K,GAAGmH,GAAQ;AHr7CvB,MAAA1C,GAAA2C,GAAAyG,GAAAC;AGs7CQ,MAAIR,IAAU;AACd,MAAIvF,EAAA,MAAKY,QAAU,GAAG;AAClB,UAAMqE,IAAQjF,EAAA,MAAKc,IAAQ,IAAI7I,CAAC;AAChC,QAAIgN,MAAU;AAEV,UADAM,IAAU,IACNvF,EAAA,MAAKY,QAAU;AACf,QAAAoE,EAAA,MAAKlD,GAAAmB,IAAL,WAAY7D;AAAA,WAEX;AACD,QAAAY,EAAA,MAAKqC,IAAL,WAAqB4C;AACrB,cAAMnL,IAAIkG,EAAA,MAAKgB,GAASiE,CAAK;AAe7B,YAdID,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I,KACxBA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC,KAEzCkG,EAAA,MAAK0B,OAAe1B,EAAA,MAAK4B,SAC1B5B,EAAA,MAAK0B,SACLhF,IAAAsD,EAAA,MAAKM,QAAL,QAAA5D,EAAA,WAAgB5C,GAAG7B,GAAGmH,KAEtBY,EAAA,MAAK4B,SACLvC,IAAAW,EAAA,MAAKsB,QAAL,QAAAjC,EAAgB,KAAK,CAACvF,GAAG7B,GAAGmH,CAAM,MAG1CY,EAAA,MAAKc,IAAQ,OAAO7I,CAAC,GACrB+H,EAAA,MAAKe,IAASkE,CAAK,IAAI,QACvBjF,EAAA,MAAKgB,GAASiE,CAAK,IAAI,QACnBA,MAAUjF,EAAA,MAAKoB;AACf,UAAAnB,EAAA,MAAKmB,IAAQpB,EAAA,MAAKkB,IAAM+D,CAAK;AAAA,iBAExBA,MAAUjF,EAAA,MAAKmB;AACpB,UAAAlB,EAAA,MAAKkB,IAAQnB,EAAA,MAAKiB,IAAMgE,CAAK;AAAA,aAE5B;AACD,gBAAM2D,IAAK5I,EAAA,MAAKkB,IAAM+D,CAAK;AAC3B,UAAAjF,EAAA,MAAKiB,IAAM2H,CAAE,IAAI5I,EAAA,MAAKiB,IAAMgE,CAAK;AACjC,gBAAM4D,IAAK7I,EAAA,MAAKiB,IAAMgE,CAAK;AAC3B,UAAAjF,EAAA,MAAKkB,IAAM2H,CAAE,IAAI7I,EAAA,MAAKkB,IAAM+D,CAAK;AAAA,QACrC;AACA,QAAAmB,GAAA,MAAKxF,IAAL,KACAZ,EAAA,MAAKqB,IAAM,KAAK4D,CAAK;AAAA,MACzB;AAAA,EAER;AACA,MAAIjF,EAAA,MAAK4B,SAAoBkE,IAAA9F,EAAA,MAAKsB,QAAL,QAAAwE,EAAgB,SAAQ;AACjD,UAAMS,IAAKvG,EAAA,MAAKsB;AAChB,QAAIkF;AACJ,WAAQA,IAAOD,KAAA,gBAAAA,EAAI;AACf,OAAAR,IAAA/F,EAAA,MAAKQ,QAAL,QAAAuF,EAAA,WAAqB,GAAGS;AAAA,EAEhC;AACA,SAAOjB;AACX,GAOAtC,KAAM,SAAC7D,GAAQ;AH/+CnB,MAAA1C,GAAA2C,GAAAyG;AGg/CQ,aAAWb,KAASD,EAAA,MAAKlD,GAAAW,IAAL,WAAe,EAAE,YAAY,GAAI,IAAK;AACtD,UAAM3I,IAAIkG,EAAA,MAAKgB,GAASiE,CAAK;AAC7B,QAAID,EAAA,MAAKlD,GAAAe,IAAL,WAAwB/I;AACxB,MAAAA,EAAE,kBAAkB,MAAM,IAAI,MAAM,SAAS,CAAC;AAAA,SAE7C;AACD,YAAM7B,IAAI+H,EAAA,MAAKe,IAASkE,CAAK;AAC7B,MAAIjF,EAAA,MAAK0B,SACLhF,IAAAsD,EAAA,MAAKM,QAAL,QAAA5D,EAAA,WAAgB5C,GAAG7B,GAAGmH,KAEtBY,EAAA,MAAK4B,SACLvC,IAAAW,EAAA,MAAKsB,QAAL,QAAAjC,EAAgB,KAAK,CAACvF,GAAG7B,GAAGmH,CAAM;AAAA,IAE1C;AAAA,EACJ;AAgBA,MAfAY,EAAA,MAAKc,IAAQ,MAAK,GAClBd,EAAA,MAAKgB,GAAS,KAAK,MAAS,GAC5BhB,EAAA,MAAKe,IAAS,KAAK,MAAS,GACxBf,EAAA,MAAKyB,OAASzB,EAAA,MAAKwB,QACnBxB,EAAA,MAAKyB,IAAM,KAAK,CAAC,GACjBzB,EAAA,MAAKwB,IAAQ,KAAK,CAAC,IAEnBxB,EAAA,MAAKuB,OACLvB,EAAA,MAAKuB,IAAO,KAAK,CAAC,GAEtBtB,EAAA,MAAKkB,IAAQ,IACblB,EAAA,MAAKmB,IAAQ,IACbpB,EAAA,MAAKqB,IAAM,SAAS,GACpBpB,EAAA,MAAKY,IAAkB,IACvBZ,EAAA,MAAKW,IAAQ,IACTZ,EAAA,MAAK4B,OAAoB5B,EAAA,MAAKsB,KAAW;AACzC,UAAMiF,IAAKvG,EAAA,MAAKsB;AAChB,QAAIkF;AACJ,WAAQA,IAAOD,KAAA,gBAAAA,EAAI;AACf,OAAAT,IAAA9F,EAAA,MAAKQ,QAAL,QAAAsF,EAAA,WAAqB,GAAGU;AAAA,EAEhC;AACJ;AA34CG,IAAMsC,KAAN5F;ACrHA,MAAM6F,IAAW,CAACnW,MACvB,OAAOA,KAAM,YAAYA,aAAa,QAO3BoW,KAAmB,CAACpW,MAC/BmW,EAASnW,CAAC,KAAK,OAAOA,KAAM,UCzBxBqW,KAAS,mBACTC,KAAW,iBACXC,KAAQ,0BACRC,KAAQ,YACRC,KAAQ,iBACRC,KAAQ,2BACRC,KAAQ,GAAGL,EAAQ,IAAIC,EAAK,IAAIC,EAAK,IAAIC,EAAK,IAAIC,EAAK,IACvDE,KAAQ,QAAQD,EAAK,IACrBE,KAAO,OAAOD,EAAK,IACZE,KAAQ,kBACRC,KACX,wEACWC,KAAM,WAAWX,EAAM,8BAA8BA,EAAM,MAC3DY,KAAe,UAAUZ,EAAM,8BAA8BA,EAAM,MACnEa,IAAO,QACPC,KAAM,GAAGH,EAAG,KACZI,KAAc,OAAOR,EAAK,4BAA4BA,EAAK,QAC3DS,KAAoB,OAAOV,EAAK,SAChCW,KAAa,mCACbC,KAAmB,OAAOV,EAAI,QAGrCW,KAAS,oBAAoBR,EAAG,IAAIG,EAAG,IAAID,CAAI,OAC/CO,KAAa,kBAAkBT,EAAG,IAAIG,EAAG,OACzCO,KAAc,2CACdC,KAAa,8DACbC,KAAU,sBACVC,KAAc,oCACdC,KAAa,GAAGd,EAAG,MAAMF,EAAK,MAC9BiB,KAAkB,MAAMf,EAAG,MAAMF,EAAK,MAAMI,CAAI,KAChDc,KAAgB,MAAMhB,EAAG,IAAIG,EAAG,IAAID,CAAI,KACjCe,KAAS,MAAML,EAAO,aAAaC,EAAW,aAC9CK,KAAc,IAAIN,EAAO,WAAWC,EAAW,aAC/CM,KAAS,cACTC,KAAS,cACTC,KAAU,oBACVC,KAAS,2CAA2CD,EAAO,IAC3DE,KAAS,uBACTC,KAAU,GAAGL,EAAM,IAAIG,EAAM,IAAIC,EAAM,IACvCE,KAAS,GAAGR,EAAM,IAAIO,EAAO,IAC7BE,KAAW,UACXC,KAAgB,eAChBC,KAAS,cACTC,KAAS,MAAMnB,EAAW,oBAC1BoB,KAAc,IAAIpB,EAAW,oBAC7BqB,KAAS,QACTC,KAAe,MAAMV,EAAM,IAAIC,EAAM,WAAWP,EAAa,OAAOR,EAAM,IAC1EyB,KAAoB,kBACpBC,KAAa,IAAIL,EAAM,cAAcA,EAAM,IAC3CM,KAAU,GAAGpB,EAAe,UAAUC,EAAa,OAAOR,EAAM,IAChE4B,KAAc,GAAGtB,EAAU,eAAeX,EAAG,OAAOM,EAAU,IAC9D4B,KAAU,MAAMrB,EAAa,WAAWD,EAAe,GAAGP,EAAM,IAChE8B,KAAU,GAAGtB,EAAa,UAAUA,EAAa,OAAOR,EAAM,IAC9D+B,KAAc,MAAMvC,EAAG,eAAeA,EAAG,QAAQG,EAAG,eAAeA,EAAG,QAAQM,EAAU,IACxF+B,KAAiB,GAAG7B,EAAU,gBAAgByB,EAAW,uBAAuBG,EAAW,+BAA+BJ,EAAO,sCAAsCG,EAAO,4BAA4BD,EAAO,uBAAuBL,EAAY,WACpPS,KAAe,MAAMD,EAAc,WAAWrC,EAAG,MACjDuC,KAAU,4BAA4BjB,EAAM,aAAagB,EAAY,YAAYA,EAAY,WAC7FE,KAAe,0BAA0BlB,EAAM,cAAcgB,EAAY,cAAcA,EAAY,YAGnGG,KAAW,iBACXC,IAAU,YACVC,IAAW,kBCZlBC,KAAY,SAGZC,KAAO,MACPC,KAAO,KACPC,KAAM,GACNC,KAAO,GACPC,KAAO,GACPC,KAAM,GACNC,KAAM,IACNC,KAAM,IACNC,IAAM,IACNC,KAAO,IACPC,KAAW,KACXC,KAAM,KACNC,IAAU,KACVC,IAAU,KACVC,KAAU,GACVC,KAAW,GACXC,KAAa,KACbC,KAAc,OACdC,KAAgB,OAChBC,KAAQ,KACRC,KAAQ,KACRC,KAAQ,KACRC,KAAc,MAAM,OACpBC,KAAY,QAAQ,IA4BpBC,KAAwB;AAAA,EAC5B,SAAS;AAAA,EACT;AAAA,GACC,IAAM,SAAS,UAAU;AAC5B,GACMC,KAAiC;AAAA,EACrC,CAAC,mBAAmB,sBAAsB,mBAAmB;AAAA,EAC7D,CAAC,qBAAqB,oBAAoB,oBAAoB;AAAA,EAC9D,CAAC,sBAAsB,uBAAuB,iBAAiB;AACjE,GACMC,KAAiC;AAAA,EACrC,CAAC,oBAAoB,sBAAsB,oBAAoB;AAAA,EAC/D,CAAC,qBAAqB,oBAAoB,qBAAqB;AAAA,EAC/D,CAAC,uBAAuB,sBAAsB,kBAAkB;AAClE,GAGMC,KAAmC;AAAA,EACvC,CAAC,SAAS,SAAS,QAAQ,QAAQ,QAAQ,KAAK;AAAA,EAChD,CAAC,QAAQ,QAAQ,SAAS,QAAQ,QAAQ,MAAM;AAAA,EAChD,CAAC,OAAO,QAAQ,QAAQ,QAAQ,UAAU,OAAO;AACnD,GACMC,KAAmC;AAAA,EACvC,CAAC,QAAQ,MAAM,OAAO,KAAK,QAAQ,IAAI;AAAA,EACvC,CAAC,UAAU,QAAQ,UAAU,QAAQ,QAAQ,MAAM;AAAA,EACnD,CAAC,MAAM,OAAO,QAAQ,OAAO,MAAM,GAAG;AACxC,GACMC,KAAiC;AAAA,EACrC,CAAC,mBAAmB,oBAAoB,mBAAmB;AAAA,EAC3D,CAAC,oBAAoB,oBAAoB,kBAAkB;AAAA,EAC3D,CAAC,oBAAoB,oBAAoB,kBAAkB;AAC7D,GACMC,KAAiC;AAAA,EACrC,CAAC,oBAAoB,qBAAqB,kBAAkB;AAAA,EAC5D,CAAC,qBAAqB,mBAAmB,mBAAmB;AAAA,EAC5D,CAAC,qBAAqB,qBAAqB,kBAAkB;AAC/D,GACMC,KAAmC;AAAA,EACvC,CAAC,GAAK,oBAAoB,kBAAkB;AAAA,EAC5C,CAAC,GAAK,qBAAqB,mBAAmB;AAAA,EAC9C,CAAC,GAAK,qBAAqB,mBAAmB;AAChD,GACMC,KAAmC;AAAA,EACvC,CAAC,mBAAmB,oBAAoB,mBAAmB;AAAA,EAC3D,CAAC,oBAAoB,mBAAqB,iBAAiB;AAAA,EAC3D,CAAC,oBAAoB,oBAAoB,mBAAmB;AAC9D,GACMC,KAAgC;AAAA,EACpC,CAAC,SAAS,SAAS,SAAS,QAAQ,SAAS,OAAO;AAAA,EACpD,CAAC,QAAQ,QAAQ,SAAS,QAAQ,SAAS,OAAO;AAAA,EAClD,CAAC,IAAI,GAAG,QAAQ,QAAQ,UAAU,OAAO;AAC3C,GACMC,KAAqC;AAAA,EACzC,CAAC,WAAW,UAAU,WAAW,WAAW,WAAW,SAAS;AAAA,EAChE,CAAC,WAAW,UAAU,YAAY,WAAW,UAAU,SAAS;AAAA,EAChE,CAAC,IAAI,GAAG,WAAW,WAAW,YAAY,SAAS;AACrD,GACMC,KAAiC;AAAA,EACrC,CAAC,SAAS,QAAQ,SAAS,SAAS,SAAS,MAAM;AAAA,EACnD,CAAC,SAAS,SAAS,UAAU,SAAS,SAAS,OAAO;AAAA,EACtD,CAAC,QAAQ,SAAS,SAAS,SAAS,UAAU,OAAO;AACvD,GACMC,KAA0C;AAAA,EAC9C,CAAC,oBAAoB,qBAAqB,kBAAkB;AAAA,EAC5D,CAAC,oBAAoB,mBAAmB,iBAAmB;AAAA,EAC3D,CAAC,GAAK,GAAK,kBAAkB;AAC/B,GAGMC,KAAY,IAAI,OAAO,OAAO7C,EAAc,IAAI,GAChD8C,KAAa,IAAI,OAAO,IAAIpE,EAAW,GAAG,GAC1CqE,KAAa,yBACbC,KAAc,mBACdC,KAAe,IAAI,OAAO,iBAAiBzD,EAAY,WAAW,GAClE0D,KAAU,IAAI,OAAO,iBAAiBvD,EAAO,IAAIC,EAAW,WAAW,GACvEuD,KAAU,IAAI,OAAO,eAAexD,EAAO,WAAW,GACtDyD,KAAU,IAAI,OAAO,eAAetD,EAAO,WAAW,GACtDuD,KAAU,IAAI,OAAO,eAAexD,EAAO,WAAW,GACtDyD,KAAU,IAAI,OAAO,IAAIpD,EAAO,GAAG,GACnCqD,KAAe,IAAI,OAAO,IAAIpD,EAAY,GAAG,GAC7CqD,KAAe,IAAI,OAAO,GAAGtD,EAAO,IAAI,GAAG,GAC3CuD,KAAY,IAAI,OAAO,iBAAiB3D,EAAO,WAAW,GAC1D4D,KAAY,IAAI,OAAO,iBAAiB7D,EAAO,WAAW,GAC1D8D,KAAW,+BAKJC,KAAe;AAAA,EAC1B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,cAAc,CAAC,KAAM,KAAM,GAAI;AAAA,EAC/B,MAAM,CAAC,GAAM,KAAM,GAAI;AAAA,EACvB,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,QAAQ,CAAC,KAAM,KAAM,GAAI;AAAA,EACzB,OAAO,CAAC,GAAM,GAAM,CAAI;AAAA,EACxB,gBAAgB,CAAC,KAAM,KAAM,GAAI;AAAA,EACjC,MAAM,CAAC,GAAM,GAAM,GAAI;AAAA,EACvB,YAAY,CAAC,KAAM,IAAM,GAAI;AAAA,EAC7B,OAAO,CAAC,KAAM,IAAM,EAAI;AAAA,EACxB,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,IAAM,KAAM,GAAI;AAAA,EAC5B,YAAY,CAAC,KAAM,KAAM,CAAI;AAAA,EAC7B,WAAW,CAAC,KAAM,KAAM,EAAI;AAAA,EAC5B,OAAO,CAAC,KAAM,KAAM,EAAI;AAAA,EACxB,gBAAgB,CAAC,KAAM,KAAM,GAAI;AAAA,EACjC,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,SAAS,CAAC,KAAM,IAAM,EAAI;AAAA,EAC1B,MAAM,CAAC,GAAM,KAAM,GAAI;AAAA,EACvB,UAAU,CAAC,GAAM,GAAM,GAAI;AAAA,EAC3B,UAAU,CAAC,GAAM,KAAM,GAAI;AAAA,EAC3B,eAAe,CAAC,KAAM,KAAM,EAAI;AAAA,EAChC,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,WAAW,CAAC,GAAM,KAAM,CAAI;AAAA,EAC5B,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,aAAa,CAAC,KAAM,GAAM,GAAI;AAAA,EAC9B,gBAAgB,CAAC,IAAM,KAAM,EAAI;AAAA,EACjC,YAAY,CAAC,KAAM,KAAM,CAAI;AAAA,EAC7B,YAAY,CAAC,KAAM,IAAM,GAAI;AAAA,EAC7B,SAAS,CAAC,KAAM,GAAM,CAAI;AAAA,EAC1B,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,cAAc,CAAC,KAAM,KAAM,GAAI;AAAA,EAC/B,eAAe,CAAC,IAAM,IAAM,GAAI;AAAA,EAChC,eAAe,CAAC,IAAM,IAAM,EAAI;AAAA,EAChC,eAAe,CAAC,IAAM,IAAM,EAAI;AAAA,EAChC,eAAe,CAAC,GAAM,KAAM,GAAI;AAAA,EAChC,YAAY,CAAC,KAAM,GAAM,GAAI;AAAA,EAC7B,UAAU,CAAC,KAAM,IAAM,GAAI;AAAA,EAC3B,aAAa,CAAC,GAAM,KAAM,GAAI;AAAA,EAC9B,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,YAAY,CAAC,IAAM,KAAM,GAAI;AAAA,EAC7B,WAAW,CAAC,KAAM,IAAM,EAAI;AAAA,EAC5B,aAAa,CAAC,KAAM,KAAM,GAAI;AAAA,EAC9B,aAAa,CAAC,IAAM,KAAM,EAAI;AAAA,EAC9B,SAAS,CAAC,KAAM,GAAM,GAAI;AAAA,EAC1B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,MAAM,CAAC,KAAM,KAAM,CAAI;AAAA,EACvB,WAAW,CAAC,KAAM,KAAM,EAAI;AAAA,EAC5B,MAAM,CAAC,KAAM,KAAM,GAAI;AAAA,EACvB,OAAO,CAAC,GAAM,KAAM,CAAI;AAAA,EACxB,aAAa,CAAC,KAAM,KAAM,EAAI;AAAA,EAC9B,MAAM,CAAC,KAAM,KAAM,GAAI;AAAA,EACvB,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,WAAW,CAAC,KAAM,IAAM,EAAI;AAAA,EAC5B,QAAQ,CAAC,IAAM,GAAM,GAAI;AAAA,EACzB,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,eAAe,CAAC,KAAM,KAAM,GAAI;AAAA,EAChC,WAAW,CAAC,KAAM,KAAM,CAAI;AAAA,EAC5B,cAAc,CAAC,KAAM,KAAM,GAAI;AAAA,EAC/B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,sBAAsB,CAAC,KAAM,KAAM,GAAI;AAAA,EACvC,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,aAAa,CAAC,KAAM,KAAM,GAAI;AAAA,EAC9B,eAAe,CAAC,IAAM,KAAM,GAAI;AAAA,EAChC,cAAc,CAAC,KAAM,KAAM,GAAI;AAAA,EAC/B,gBAAgB,CAAC,KAAM,KAAM,GAAI;AAAA,EACjC,gBAAgB,CAAC,KAAM,KAAM,GAAI;AAAA,EACjC,gBAAgB,CAAC,KAAM,KAAM,GAAI;AAAA,EACjC,aAAa,CAAC,KAAM,KAAM,GAAI;AAAA,EAC9B,MAAM,CAAC,GAAM,KAAM,CAAI;AAAA,EACvB,WAAW,CAAC,IAAM,KAAM,EAAI;AAAA,EAC5B,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,SAAS,CAAC,KAAM,GAAM,GAAI;AAAA,EAC1B,QAAQ,CAAC,KAAM,GAAM,CAAI;AAAA,EACzB,kBAAkB,CAAC,KAAM,KAAM,GAAI;AAAA,EACnC,YAAY,CAAC,GAAM,GAAM,GAAI;AAAA,EAC7B,cAAc,CAAC,KAAM,IAAM,GAAI;AAAA,EAC/B,cAAc,CAAC,KAAM,KAAM,GAAI;AAAA,EAC/B,gBAAgB,CAAC,IAAM,KAAM,GAAI;AAAA,EACjC,iBAAiB,CAAC,KAAM,KAAM,GAAI;AAAA,EAClC,mBAAmB,CAAC,GAAM,KAAM,GAAI;AAAA,EACpC,iBAAiB,CAAC,IAAM,KAAM,GAAI;AAAA,EAClC,iBAAiB,CAAC,KAAM,IAAM,GAAI;AAAA,EAClC,cAAc,CAAC,IAAM,IAAM,GAAI;AAAA,EAC/B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,aAAa,CAAC,KAAM,KAAM,GAAI;AAAA,EAC9B,MAAM,CAAC,GAAM,GAAM,GAAI;AAAA,EACvB,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,OAAO,CAAC,KAAM,KAAM,CAAI;AAAA,EACxB,WAAW,CAAC,KAAM,KAAM,EAAI;AAAA,EAC5B,QAAQ,CAAC,KAAM,KAAM,CAAI;AAAA,EACzB,WAAW,CAAC,KAAM,IAAM,CAAI;AAAA,EAC5B,QAAQ,CAAC,KAAM,KAAM,GAAI;AAAA,EACzB,eAAe,CAAC,KAAM,KAAM,GAAI;AAAA,EAChC,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,eAAe,CAAC,KAAM,KAAM,GAAI;AAAA,EAChC,eAAe,CAAC,KAAM,KAAM,GAAI;AAAA,EAChC,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,MAAM,CAAC,KAAM,KAAM,EAAI;AAAA,EACvB,MAAM,CAAC,KAAM,KAAM,GAAI;AAAA,EACvB,MAAM,CAAC,KAAM,KAAM,GAAI;AAAA,EACvB,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,QAAQ,CAAC,KAAM,GAAM,GAAI;AAAA,EACzB,eAAe,CAAC,KAAM,IAAM,GAAI;AAAA,EAChC,KAAK,CAAC,KAAM,GAAM,CAAI;AAAA,EACtB,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,IAAM,KAAM,GAAI;AAAA,EAC5B,aAAa,CAAC,KAAM,IAAM,EAAI;AAAA,EAC9B,QAAQ,CAAC,KAAM,KAAM,GAAI;AAAA,EACzB,YAAY,CAAC,KAAM,KAAM,EAAI;AAAA,EAC7B,UAAU,CAAC,IAAM,KAAM,EAAI;AAAA,EAC3B,UAAU,CAAC,KAAM,KAAM,GAAI;AAAA,EAC3B,QAAQ,CAAC,KAAM,IAAM,EAAI;AAAA,EACzB,QAAQ,CAAC,KAAM,KAAM,GAAI;AAAA,EACzB,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,WAAW,CAAC,KAAM,IAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,WAAW,CAAC,KAAM,KAAM,GAAI;AAAA,EAC5B,MAAM,CAAC,KAAM,KAAM,GAAI;AAAA,EACvB,aAAa,CAAC,GAAM,KAAM,GAAI;AAAA,EAC9B,WAAW,CAAC,IAAM,KAAM,GAAI;AAAA,EAC5B,KAAK,CAAC,KAAM,KAAM,GAAI;AAAA,EACtB,MAAM,CAAC,GAAM,KAAM,GAAI;AAAA,EACvB,SAAS,CAAC,KAAM,KAAM,GAAI;AAAA,EAC1B,QAAQ,CAAC,KAAM,IAAM,EAAI;AAAA,EACzB,WAAW,CAAC,IAAM,KAAM,GAAI;AAAA,EAC5B,QAAQ,CAAC,KAAM,KAAM,GAAI;AAAA,EACzB,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,OAAO,CAAC,KAAM,KAAM,GAAI;AAAA,EACxB,YAAY,CAAC,KAAM,KAAM,GAAI;AAAA,EAC7B,QAAQ,CAAC,KAAM,KAAM,CAAI;AAAA,EACzB,aAAa,CAAC,KAAM,KAAM,EAAI;AAChC,GAUaC,KAAyB,CACpCC,GACAC,GACAC,IAAoB,OAC6B;AACjD,MAAID,MAAWzD;AAEb,WAAA2D,EAASH,GAAUzH,EAAG,GACfA;AAET,MAAI2H;AACF,WAAAC,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,QAAM7H,IAA8B,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AACtD,SAAA4H,EAASH,GAAUzH,CAAG,GACfA;AACT,GAQa8H,KAA2B,CACtCJ,GACAC,IAAoB,OAC6B;AACjD,UAAQD,GAAA;AAAA,IACN,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK1D;AACH,aAAO,IAAI6D,EAAA;AAAA,IAEb,KAAK5D;AACH,aAAO;AAAA,IAET;AACE,aAAI0D,IACK,IAAIE,EAAA,IAEN,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AAAA,EAC3B;AAEJ,GAcaE,KAA0B,CACrC7K,GACA8K,IAOI,OACiC;AACrC,MAAI,CAAC,MAAM,QAAQ9K,CAAG;AACpB,UAAM,IAAI,UAAU,GAAGA,CAAG,mBAAmB;AAE/C,QAAM;AAAA,IACJ,OAAA+K,IAAQ;AAAA,IACR,WAAAC,IAAY5D;AAAAA,IACZ,WAAA6D,IAAY5D;AAAA,IACZ,UAAA6D,IAAW;AAAA,IACX,UAAAC,IAAW;AAAA,IACX,eAAAC,IAAgB;AAAA,EAAA,IACdN;AACJ,MAAI,CAAC,OAAO,SAASE,CAAS;AAC5B,UAAM,IAAI,UAAU,GAAGA,CAAS,mBAAmB;AAErD,MAAI,CAAC,OAAO,SAASC,CAAS;AAC5B,UAAM,IAAI,UAAU,GAAGA,CAAS,mBAAmB;AAErD,MAAI,CAAC,OAAO,SAASC,CAAQ;AAC3B,UAAM,IAAI,UAAU,GAAGA,CAAQ,mBAAmB;AAEpD,MAAI,CAAC,OAAO,SAASC,CAAQ;AAC3B,UAAM,IAAI,UAAU,GAAGA,CAAQ,mBAAmB;AAEpD,QAAMzZ,IAAIsO,EAAI;AACd,MAAItO,IAAIsZ,KAAatZ,IAAIuZ;AACvB,UAAM,IAAI,MAAM,2BAA2BvZ,CAAC,GAAG;AAEjD,MAAIxE,IAAI;AACR,SAAOA,IAAIwE,KAAG;AACZ,UAAMyC,IAAI6L,EAAI9S,CAAC;AACf,QAAK,OAAO,SAASiH,CAAC;UAEXjH,IAAIka,MAAQgE,MAAkBjX,IAAI+W,KAAY/W,IAAIgX;AAC3D,cAAM,IAAI,WAAW,GAAGhX,CAAC,mBAAmB+W,CAAQ,QAAQC,CAAQ,GAAG;UAC9Dje,MAAMka,OAASjT,IAAI,KAAKA,IAAI;AACrC,cAAM,IAAI,WAAW,GAAGA,CAAC,0BAA0B;AAAA,UAJnD,OAAM,IAAI,UAAU,GAAGA,CAAC,mBAAmB;AAM7C,IAAAjH;AAAA,EACF;AACA,SAAI6d,KAASrZ,MAAM0V,MACjBpH,EAAI,KAAK,CAAC,GAELA;AACT,GASaqL,KAAkB,CAC7BC,GACAC,GACAC,IAAgB,OACK;AACrB,MAAK,MAAM,QAAQF,CAAG,GAEtB;AAAA,QAAWA,EAAI,WAAWlE;AACxB,YAAM,IAAI,MAAM,2BAA2BkE,EAAI,MAAM,GAAG;AAC1D,QAAW,CAACE;AACV,eAASte,KAAKoe;AACZ,QAAApe,IAAI2d,GAAwB3d,GAAuB;AAAA,UACjD,WAAWka;AAAAA,UACX,eAAe;AAAA,QAAA,CAChB;AAAA,QARH,OAAM,IAAI,UAAU,GAAGkE,CAAG,mBAAmB;AAW/C,QAAM,CAAC,CAACG,GAAMC,GAAMC,CAAI,GAAG,CAACC,GAAMC,GAAMC,CAAI,GAAG,CAACC,GAAMC,GAAMC,CAAI,CAAC,IAAIX;AACrE,MAAIY,GAAIC,GAAIC;AACZ,EAAIZ,IACF,CAACU,GAAIC,GAAIC,CAAE,IAAIb,IAEf,CAACW,GAAIC,GAAIC,CAAE,IAAIvB,GAAwBU,GAAK;AAAA,IAC1C,WAAWnE;AAAAA,IACX,eAAe;AAAA,EAAA,CAChB;AAEH,QAAMiF,IAAKZ,IAAOS,IAAKR,IAAOS,IAAKR,IAAOS,GACpCE,IAAKV,IAAOM,IAAKL,IAAOM,IAAKL,IAAOM,GACpCG,IAAKR,IAAOG,IAAKF,IAAOG,IAAKF,IAAOG;AAC1C,SAAO,CAACC,GAAIC,GAAIC,CAAE;AACpB,GASaC,KAA2B,CACtCC,GACAC,GACAlB,IAAgB,OACmB;AACnC,MAAK,MAAM,QAAQiB,CAAM;AAEzB,QAAWA,EAAO,WAAWpF;AAC3B,YAAM,IAAI,MAAM,2BAA2BoF,EAAO,MAAM,GAAG;AAAA,QAF3D,OAAM,IAAI,UAAU,GAAGA,CAAM,mBAAmB;AAIlD,MAAK,MAAM,QAAQC,CAAM;AAEzB,QAAWA,EAAO,WAAWrF;AAC3B,YAAM,IAAI,MAAM,2BAA2BqF,EAAO,MAAM,GAAG;AAAA,QAF3D,OAAM,IAAI,UAAU,GAAGA,CAAM,mBAAmB;AAIlD,MAAIxf,IAAI;AACR,SAAOA,IAAIma;AACT,IAAIoF,EAAOvf,CAAC,MAAMiX,KAAQuI,EAAOxf,CAAC,MAAMiX,KACtCsI,EAAOvf,CAAC,IAAI,GACZwf,EAAOxf,CAAC,IAAI,KACHuf,EAAOvf,CAAC,MAAMiX,IACvBsI,EAAOvf,CAAC,IAAIwf,EAAOxf,CAAC,IACXwf,EAAOxf,CAAC,MAAMiX,MACvBuI,EAAOxf,CAAC,IAAIuf,EAAOvf,CAAC,IAEtBA;AAEF,MAAIse;AACF,WAAO,CAACiB,GAAyBC,CAAuB;AAE1D,QAAMC,IAAkB9B,GAAwB4B,GAAyB;AAAA,IACvE,WAAWpF;AAAA,IACX,eAAe;AAAA,EAAA,CAChB,GACKuF,IAAkB/B,GAAwB6B,GAAyB;AAAA,IACvE,WAAWrF;AAAA,IACX,eAAe;AAAA,EAAA,CAChB;AACD,SAAO,CAACsF,GAAkCC,CAAgC;AAC5E,GAOaC,KAAoB,CAACnN,MAA0B;AAC1D,MAAK,OAAO,SAASA,CAAK;AAIxB,QADAA,IAAQ,KAAK,MAAMA,CAAK,GACpBA,IAAQ,KAAKA,IAAQoI;AACvB,YAAM,IAAI,WAAW,GAAGpI,CAAK,yBAAyBoI,CAAO,GAAG;AAAA;AAJlE,UAAM,IAAI,UAAU,GAAGpI,CAAK,mBAAmB;AAOjD,MAAIoN,IAAMpN,EAAM,SAAS+H,CAAG;AAC5B,SAAIqF,EAAI,WAAW,MACjBA,IAAM,IAAIA,CAAG,KAERA;AACT,GAOaC,KAAa,CAACC,MAA0B;AACnD,MAAI5J,EAAS4J,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAMC,IAAOrF,KAAM,KACbsF,IAAMtF,MAAO,KAAK,KAAKT,KACvBgG,IAAM,IAAI,OAAO,KAAKlJ,EAAG,KAAKF,EAAK,KAAK;AAC9C,MAAI,CAACoJ,EAAI,KAAKH,CAAK;AACjB,UAAM,IAAI,YAAY,2BAA2BA,CAAK,EAAE;AAE1D,QAAM,CAAA,EAAGtN,GAAO0N,CAAI,IAAIJ,EAAM,MAAMG,CAAG;AACvC,MAAIE;AACJ,UAAQD,GAAA;AAAA,IACN,KAAK;AACH,MAAAC,IAAM,WAAW3N,CAAK,IAAIuN;AAC1B;AAAA,IACF,KAAK;AACH,MAAAI,IAAM,WAAW3N,CAAK,IAAIwN;AAC1B;AAAA,IACF,KAAK;AACH,MAAAG,IAAM,WAAW3N,CAAK,IAAIkI;AAC1B;AAAA,IACF;AACE,MAAAyF,IAAM,WAAW3N,CAAK;AAAA,EAAA;AAE1B,SAAA2N,KAAOzF,IACHyF,IAAM,IACRA,KAAOzF,KACE,OAAO,GAAGyF,GAAK,EAAE,MAC1BA,IAAM,IAEDA;AACT,GAOaC,KAAa,CAACvC,IAAgB,OAAe;AACxD,MAAI3H,EAAS2H,CAAK;AAEhB,QADAA,IAAQA,EAAM,KAAA,GACV,CAACA;AACH,MAAAA,IAAQ;AAAA,aACCA,MAAU5G;AACnB,MAAA4G,IAAQ;AAAA,SACH;AACL,UAAIzc;AAMJ,UALIyc,EAAM,SAAS,GAAG,IACpBzc,IAAI,WAAWyc,CAAK,IAAIlD,IAExBvZ,IAAI,WAAWyc,CAAK,GAElB,CAAC,OAAO,SAASzc,CAAC;AACpB,cAAM,IAAI,UAAU,GAAGA,CAAC,0BAA0B;AAEpD,MAAIA,IAAI2Y,KACN8D,IAAQ,MACCzc,IAAI,IACbyc,IAAQ,MAERA,IAAQzc,EAAE,QAAQ8Y,EAAI;AAAA,IAE1B;AAAA;AAEA,IAAA2D,IAAQ;AAEV,SAAO,WAAWA,CAAK;AACzB,GAOawC,KAAgB,CAAC7N,MAA0B;AACtD,MAAI0D,EAAS1D,CAAK,GAAG;AACnB,QAAIA,MAAU;AACZ,YAAM,IAAI,YAAY,wCAAwC;AAEhE,IAAAA,IAAQA,EAAM,KAAA;AAAA,EAChB;AACE,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,MAAIqL,IAAQ,SAASrL,GAAO+H,CAAG;AAC/B,MAAIsD,KAAS;AACX,WAAO;AAET,MAAIA,KAASjD;AACX,WAAO;AAET,QAAM0F,wBAAe,IAAA;AACrB,WAAStgB,IAAI,GAAGA,IAAI2a,GAAS3a;AAC3B,IAAAsgB,EAAS,IAAI,KAAK,MAAOtgB,IAAI4a,IAAWD,CAAO,GAAG3a,CAAC;AAErD,SAAIsgB,EAAS,IAAIzC,CAAK,IACpBA,IAAQyC,EAAS,IAAIzC,CAAK,IAAIlD,IAE9BkD,IAAQ,KAAK,MAAMA,IAAQjD,IAAUb,EAAI,IAAIA,IAExC,WAAW8D,EAAM,QAAQ3D,EAAI,CAAC;AACvC,GAQaqG,KAA0B,CACrCC,GACAlC,IAAgB,OACK;AACrB,MAAImC,GAAIC,GAAIC;AACZ,EAAIrC,IACF,CAACmC,GAAIC,GAAIC,CAAE,IAAIH,IAEf,CAACC,GAAIC,GAAIC,CAAE,IAAIhD,GAAwB6C,GAAK;AAAA,IAC1C,WAAWtG;AAAAA,IACX,UAAUU;AAAAA,EAAA,CACX;AAEH,MAAI/a,IAAI4gB,IAAK7F,GACTvT,IAAIqZ,IAAK9F,GACTnP,IAAIkV,IAAK/F;AACb,QAAMgG,IAAW;AACjB,SAAI/gB,IAAI+gB,IACN/gB,IAAI,KAAK,KAAKA,IAAIob,OAAkB,IAAIA,KAAgBF,EAAU,IAElElb,KAAKmb,IAEH3T,IAAIuZ,IACNvZ,IAAI,KAAK,KAAKA,IAAI4T,OAAkB,IAAIA,KAAgBF,EAAU,IAElE1T,KAAK2T,IAEHvP,IAAImV,IACNnV,IAAI,KAAK,KAAKA,IAAIwP,OAAkB,IAAIA,KAAgBF,EAAU,IAElEtP,KAAKuP,IAEA,CAACnb,GAAGwH,GAAGoE,CAAC;AACjB,GAQaoV,KAAoB,CAC/BL,GACAlC,IAAgB,QAEXA,MACHkC,IAAM7C,GAAwB6C,GAAK;AAAA,EACjC,WAAWtG;AAAAA,EACX,UAAUU;AAAA,CACX,IAEH4F,IAAMD,GAAwBC,GAAK,EAAI,GAC3BrC,GAAgBzC,IAAqB8E,GAAK,EAAI,IAuB/CM,KAA0B,CACrCN,GACAO,IAAiB,OACI;AACrB,MAAI,CAAClhB,GAAGwH,GAAGoE,CAAC,IAAIkS,GAAwB6C,GAAK;AAAA,IAC3C,WAAWtG;AAAAA,EAAA,CACZ;AACD,QAAM0G,IAAW,MAAM;AACvB,SAAI/gB,IAAI+gB,IACN/gB,IAAI,KAAK,IAAIA,GAAG,IAAIkb,EAAU,KAAK,IAAIE,MAAiBA,KAExDpb,KAAKmb,IAEPnb,KAAK+a,GACDvT,IAAIuZ,IACNvZ,IAAI,KAAK,IAAIA,GAAG,IAAI0T,EAAU,KAAK,IAAIE,MAAiBA,KAExD5T,KAAK2T,IAEP3T,KAAKuT,GACDnP,IAAImV,IACNnV,IAAI,KAAK,IAAIA,GAAG,IAAIsP,EAAU,KAAK,IAAIE,MAAiBA,KAExDxP,KAAKuP,IAEPvP,KAAKmP,GACE;AAAA,IACLmG,IAAQ,KAAK,MAAMlhB,CAAC,IAAIA;AAAA,IACxBkhB,IAAQ,KAAK,MAAM1Z,CAAC,IAAIA;AAAA,IACxB0Z,IAAQ,KAAK,MAAMtV,CAAC,IAAIA;AAAA,EAAA;AAE5B,GAQauV,KAAoB,CAC/BC,GACA3C,IAAgB,OACK;AACrB,EAAKA,MACH2C,IAAMtD,GAAwBsD,GAAK;AAAA,IACjC,WAAW/G;AAAAA,IACX,eAAe;AAAA,EAAA,CAChB;AAEH,MAAI,CAACra,GAAGwH,GAAGoE,CAAC,IAAI0S,GAAgBxC,IAAqBsF,GAAK,EAAI;AAC9D,UAACphB,GAAGwH,GAAGoE,CAAC,IAAIqV;AAAA,IACV;AAAA,MACE,KAAK,IAAI,KAAK,IAAIjhB,GAAG,CAAC,GAAG,CAAC;AAAA,MAC1B,KAAK,IAAI,KAAK,IAAIwH,GAAG,CAAC,GAAG,CAAC;AAAA,MAC1B,KAAK,IAAI,KAAK,IAAIoE,GAAG,CAAC,GAAG,CAAC;AAAA,IAAA;AAAA,IAE5B;AAAA,EAAA,GAEK,CAAC5L,GAAGwH,GAAGoE,CAAC;AACjB,GAwBayV,KAAoB,CAC/BD,GACA3C,IAAgB,OACK;AACrB,QAAM,CAACmC,GAAIC,GAAIC,CAAE,IAAIK,GAAkBC,GAAK3C,CAAI,GAC1Cze,IAAI4gB,IAAK7F,GACTvT,IAAIqZ,IAAK9F,GACTnP,IAAIkV,IAAK/F,GACT/N,IAAM,KAAK,IAAIhN,GAAGwH,GAAGoE,CAAC,GACtB0V,IAAM,KAAK,IAAIthB,GAAGwH,GAAGoE,CAAC,GACtBhJ,IAAIoK,IAAMsU,GACV3c,KAAKqI,IAAMsU,KAAOnH,KAAOW;AAC/B,MAAI/V,GAAG3E;AACP,MAAI,KAAK,MAAMuE,CAAC,MAAM,KAAK,KAAK,MAAMA,CAAC,MAAMmW;AAC3C,IAAA/V,IAAI,GACJ3E,IAAI;AAAA,WAEJA,IAAKwC,KAAK,IAAI,KAAK,IAAIoK,IAAMsU,IAAM,CAAC,KAAMxG,GACtC1a,MAAM;AACR,IAAA2E,IAAI;AAAA,OACC;AACL,YAAQiI,GAAA;AAAA,MACN,KAAKhN;AACH,QAAA+E,KAAKyC,IAAIoE,KAAKhJ;AACd;AAAA,MACF,KAAK4E;AACH,QAAAzC,KAAK6G,IAAI5L,KAAK4C,IAAIwX;AAClB;AAAA,MACF,KAAKxO;AAAA,MACL;AACE,QAAA7G,KAAK/E,IAAIwH,KAAK5E,IAAI0X;AAClB;AAAA,IAAA;AAEJ,IAAAvV,IAAKA,IAAI4V,KAAQE,IACb9V,IAAI,MACNA,KAAK8V;AAAAA,EAET;AAEF,SAAO,CAAC9V,GAAG3E,GAAGuE,CAAC;AACjB,GAQa4c,KAAoB,CAC/BH,GACA3C,IAAgB,OACK;AACrB,QAAM,CAACze,GAAGwH,GAAGoE,CAAC,IAAIuV,GAAkBC,GAAK3C,CAAI,GACvC+C,IAAK,KAAK,IAAIxhB,GAAGwH,GAAGoE,CAAC,IAAImP,GACzB0G,IAAK,IAAI,KAAK,IAAIzhB,GAAGwH,GAAGoE,CAAC,IAAImP;AACnC,MAAIhW;AACJ,SAAIyc,IAAKC,MAAO,IACd1c,IAAI,IAEJ,CAACA,CAAC,IAAIsc,GAAkBD,CAAG,GAEtB,CAACrc,GAAGyc,IAAK1G,GAAS2G,IAAK3G,CAAO;AACvC,GAQa4G,KAAsB,CACjCN,GACA3C,IAAgB,OACK;AACrB,EAAKA,MACH2C,IAAMtD,GAAwBsD,GAAK;AAAA,IACjC,WAAW/G;AAAAA,IACX,eAAe;AAAA,EAAA,CAChB;AAGH,QAAMsH,IADMrD,GAAgBvC,IAAmBqF,GAAK,EAAI,EACrC,IAAI,OAAK,KAAK,KAAK,CAAC,CAAC;AACxC,MAAI,CAACzc,GAAGpD,GAAGqK,CAAC,IAAI0S,GAAgBpC,IAAqByF,GAAQ,EAAI;AACjE,EAAAhd,IAAI,KAAK,IAAI,KAAK,IAAIA,GAAG,CAAC,GAAG,CAAC;AAC9B,QAAMid,IAAO,KAAK,MAAM,WAAWjd,EAAE,QAAQ2V,EAAI,CAAC,IAAIQ,CAAO;AAC7D,UAAI8G,MAAS,KAAKA,MAAS9G,OACzBvZ,IAAI,GACJqK,IAAI,IAEC,CAACjH,GAAGpD,GAAGqK,CAAC;AACjB,GAQaiW,KAAsB,CACjCT,GACA3C,IAAgB,OACK;AACrB,QAAM,CAAC9Z,GAAGpD,GAAGqK,CAAC,IAAI8V,GAAoBN,GAAK3C,CAAI;AAC/C,MAAInd,GAAGyD;AACP,QAAM6c,IAAO,KAAK,MAAM,WAAWjd,EAAE,QAAQ2V,EAAI,CAAC,IAAIQ,CAAO;AAC7D,SAAI8G,MAAS,KAAKA,MAAS9G,KACzBxZ,IAAI,GACJyD,IAAI,MAEJzD,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIC,GAAGyZ,EAAO,IAAI,KAAK,IAAIpP,GAAGoP,EAAO,CAAC,GAAG,CAAC,GAClE,WAAW1Z,EAAE,QAAQgZ,EAAI,CAAC,MAAM,IAClCvV,IAAI,KAEJA,IAAK,KAAK,MAAM6G,GAAGrK,CAAC,IAAIqZ,KAAY,KAAK,IACrC7V,IAAI,MACNA,KAAK8V,OAIJ,CAAClW,GAAGrD,GAAGyD,CAAC;AACjB,GAQa+c,KAAuB,CAClCV,GACA3C,IAAgB,OACK;AACrB,EAAKA,MACH2C,IAAMtD,GAAwBsD,GAAK;AAAA,IACjC,WAAW/G;AAAAA,IACX,eAAe;AAAA,EAAA,CAChB;AAEH,QAAM0H,IAASzD,GAAgB3C,IAAmByF,GAAK,EAAI;AAE3D,SADYD,GAAkBY,GAAQ,EAAI;AAE5C,GAQaC,KAAuB,CAClCZ,GACA3C,IAAgB,OACK;AACrB,EAAKA,MACH2C,IAAMtD,GAAwBsD,GAAK;AAAA,IACjC,WAAW/G;AAAAA,IACX,eAAe;AAAA,EAAA,CAChB;AAEH,QAAM4H,IAASb,EAAI,IAAI,CAACrN,GAAK5T,MAAM4T,IAAO2H,GAAIvb,CAAC,CAAY,GACrD,CAAC+hB,GAAIC,GAAIC,CAAE,IAAIH,EAAO;AAAA,IAAI,CAAAlO,MAC9BA,IAAMyH,KAAc,KAAK,KAAKzH,CAAG,KAAKA,IAAM0H,KAAYf,KAAOW;AAAA,EAAA,GAE3D1W,IAAI,KAAK,IAAI,KAAK,IAAI0W,KAAQ8G,IAAKzH,GAAK,CAAC,GAAGI,CAAO;AACzD,MAAIvZ,GAAGqK;AACP,SAAIjH,MAAM,KAAKA,MAAMmW,KACnBvZ,IAAI,GACJqK,IAAI,MAEJrK,KAAK2gB,IAAKC,KAAM7G,IAChB1P,KAAKuW,IAAKC,KAAM7G,KAEX,CAAC5W,GAAGpD,GAAGqK,CAAC;AACjB,GAQayW,KAAuB,CAClCjB,GACA3C,IAAgB,OACK;AACrB,QAAM,CAAC9Z,GAAGpD,GAAGqK,CAAC,IAAIoW,GAAqBZ,GAAK3C,CAAI;AAChD,MAAInd,GAAGyD;AACP,SAAIJ,MAAM,KAAKA,MAAMmW,KACnBxZ,IAAI,GACJyD,IAAI,MAEJzD,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,IAAIC,GAAGyZ,EAAO,IAAI,KAAK,IAAIpP,GAAGoP,EAAO,CAAC,GAAG,CAAC,GACtEjW,IAAK,KAAK,MAAM6G,GAAGrK,CAAC,IAAIqZ,KAAY,KAAK,IACrC7V,IAAI,MACNA,KAAK8V,MAGF,CAAClW,GAAGrD,GAAGyD,CAAC;AACjB,GAOaud,KAAkB,CAAC3B,MAA+B;AAC7D,QAAM,CAAC3gB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIF,GAAwB6C,GAAK;AAAA,IACpD,OAAO;AAAA,IACP,UAAU5F;AAAAA,EAAA,CACX,GACK6F,IAAKd,GAAkB9f,CAAC,GACxB6gB,IAAKf,GAAkBtY,CAAC,GACxBsZ,IAAKhB,GAAkBlU,CAAC,GACxB2W,IAAKzC,GAAkB9B,IAAQjD,CAAO;AAC5C,MAAIgF;AACJ,SAAIwC,MAAO,OACTxC,IAAM,IAAIa,CAAE,GAAGC,CAAE,GAAGC,CAAE,KAEtBf,IAAM,IAAIa,CAAE,GAAGC,CAAE,GAAGC,CAAE,GAAGyB,CAAE,IAEtBxC;AACT,GAmFayC,KAAkB,CAAC7P,MAAiC;AAC/D,MAAI0D,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,MACE,EACE,gBAAgB,KAAKA,CAAK,KAC1B,gBAAgB,KAAKA,CAAK,KAC1B,gBAAgB,KAAKA,CAAK,KAC1B,gBAAgB,KAAKA,CAAK;AAG5B,UAAM,IAAI,YAAY,2BAA2BA,CAAK,EAAE;AAE1D,QAAMM,IAAgB,CAAA;AACtB,MAAI,gBAAgB,KAAKN,CAAK,GAAG;AAC/B,UAAM,CAAA,EAAG3S,GAAGwH,GAAGoE,CAAC,IAAI+G,EAAM;AAAA,MACxB;AAAA,IAAA;AAEF,IAAAM,EAAI;AAAA,MACF,SAAS,GAAGjT,CAAC,GAAGA,CAAC,IAAI0a,CAAG;AAAA,MACxB,SAAS,GAAGlT,CAAC,GAAGA,CAAC,IAAIkT,CAAG;AAAA,MACxB,SAAS,GAAG9O,CAAC,GAAGA,CAAC,IAAI8O,CAAG;AAAA,MACxB;AAAA,IAAA;AAAA,EAEJ,WAAW,gBAAgB,KAAK/H,CAAK,GAAG;AACtC,UAAM,CAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIrL,EAAM;AAAA,MAC/B;AAAA,IAAA;AAEF,IAAAM,EAAI;AAAA,MACF,SAAS,GAAGjT,CAAC,GAAGA,CAAC,IAAI0a,CAAG;AAAA,MACxB,SAAS,GAAGlT,CAAC,GAAGA,CAAC,IAAIkT,CAAG;AAAA,MACxB,SAAS,GAAG9O,CAAC,GAAGA,CAAC,IAAI8O,CAAG;AAAA,MACxB8F,GAAc,GAAGxC,CAAK,GAAGA,CAAK,EAAE;AAAA,IAAA;AAAA,EAEpC,WAAW,gBAAgB,KAAKrL,CAAK,GAAG;AACtC,UAAM,CAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIrL,EAAM;AAAA,MAC/B;AAAA,IAAA;AAEF,IAAAM,EAAI;AAAA,MACF,SAASjT,GAAG0a,CAAG;AAAA,MACf,SAASlT,GAAGkT,CAAG;AAAA,MACf,SAAS9O,GAAG8O,CAAG;AAAA,MACf8F,GAAcxC,CAAK;AAAA,IAAA;AAAA,EAEvB,OAAO;AACL,UAAM,CAAA,EAAGhe,GAAGwH,GAAGoE,CAAC,IAAI+G,EAAM;AAAA,MACxB;AAAA,IAAA;AAEF,IAAAM,EAAI,KAAK,SAASjT,GAAG0a,CAAG,GAAG,SAASlT,GAAGkT,CAAG,GAAG,SAAS9O,GAAG8O,CAAG,GAAG,CAAC;AAAA,EAClE;AACA,SAAOzH;AACT,GAOawP,KAAwB,CAAC9P,MAAiC;AACrE,QAAM,CAACiO,GAAIC,GAAIC,GAAI9C,CAAK,IAAIwE,GAAgB7P,CAAK,GAC3C,CAAC3S,GAAGwH,GAAGoE,CAAC,IAAI8U,GAAwB,CAACE,GAAIC,GAAIC,CAAE,GAAG,EAAI;AAC5D,SAAO,CAAC9gB,GAAGwH,GAAGoE,GAAGoS,CAAK;AACxB,GAOa0E,KAAkB,CAAC/P,MAAiC;AAC/D,QAAM,CAAC3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIyE,GAAsB9P,CAAK,GAC9C,CAACnM,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBzC,IAAqB,CAAC7b,GAAGwH,GAAGoE,CAAC,GAAG,EAAI;AACtE,SAAO,CAACpF,GAAGH,GAAGW,GAAGgX,CAAK;AACxB,GAQa2E,KAAW,CACtBhQ,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK,GACpCqC,IAAM,IAAI,OAAO,iBAAiB5G,EAAO,IAAIC,EAAW,WAAW;AACzE,MAAI,CAAC2G,EAAI,KAAKzN,CAAK,GAAG;AACpB,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAM,CAAA,EAAGhC,CAAG,IAAIpB,EAAM,MAAMyN,CAAG,GACzB,CAACjB,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,SAAS,GAAG,EACpB,MAAM,KAAK;AACd,MAAI/T,GAAGwH,GAAGoE;AACV,EAAIuT,MAAO/H,IACTpX,IAAI,KAEAmf,EAAG,SAAS,GAAG,IACjBnf,IAAK,WAAWmf,CAAE,IAAIpE,IAAWD,IAEjC9a,IAAI,WAAWmf,CAAE,GAEnBnf,IAAI,KAAK,IAAI,KAAK,IAAI6iB,EAAiB7iB,GAAGua,EAAG,GAAG,CAAC,GAAGQ,CAAO,IAEzDqE,MAAOhI,IACT5P,IAAI,KAEA4X,EAAG,SAAS,GAAG,IACjB5X,IAAK,WAAW4X,CAAE,IAAIrE,IAAWD,IAEjCtT,IAAI,WAAW4X,CAAE,GAEnB5X,IAAI,KAAK,IAAI,KAAK,IAAIqb,EAAiBrb,GAAG+S,EAAG,GAAG,CAAC,GAAGQ,CAAO,IAEzDsE,MAAOjI,IACTxL,IAAI,KAEAyT,EAAG,SAAS,GAAG,IACjBzT,IAAK,WAAWyT,CAAE,IAAItE,IAAWD,IAEjClP,IAAI,WAAWyT,CAAE,GAEnBzT,IAAI,KAAK,IAAI,KAAK,IAAIiX,EAAiBjX,GAAG2O,EAAG,GAAG,CAAC,GAAGQ,CAAO;AAE7D,QAAMiD,IAAQuC,GAAWqC,CAAE;AAC3B,SAAO,CAAC,OAAO5iB,GAAGwH,GAAGoE,GAAG6R,MAAW1D,KAAW6I,MAAOxL,IAAOA,IAAO4G,CAAK;AAC1E,GAQa8E,KAAW,CACtBnQ,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAACnB,GAAQ,KAAKjK,CAAK,GAAG;AACxB,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAM,CAAA,EAAGhC,CAAG,IAAIpB,EAAM,MAAMiK,EAAO,GAC7B,CAACuC,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,SAAS,GAAG,EACpB,MAAM,KAAK;AACd,MAAIhP,GAAG3E,GAAGuE;AACV,EAAIwa,MAAO/H,IACTrS,IAAI,IAEJA,IAAIib,GAAWb,CAAE,GAEfC,MAAOhI,IACThX,IAAI,IAEJA,IAAI,KAAK,IAAI,KAAK,IAAI,WAAWgf,CAAE,GAAG,CAAC,GAAGtE,CAAO,GAE/CuE,MAAOjI,IACTzS,IAAI,IAEJA,IAAI,KAAK,IAAI,KAAK,IAAI,WAAW0a,CAAE,GAAG,CAAC,GAAGvE,CAAO;AAEnD,QAAMkD,IAAQuC,GAAWqC,CAAE;AAC3B,MAAInF,MAAW;AACb,WAAO;AAAA,MACLA;AAAA,MACA0B,MAAO/H,IAAO+H,IAAKpa;AAAA,MACnBqa,MAAOhI,IAAOgI,IAAKhf;AAAA,MACnBif,MAAOjI,IAAOiI,IAAK1a;AAAA,MACnBie,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,EAAAjZ,IAAKA,IAAI8V,KAAOJ,IAChB9V,KAAKmW;AACL,QAAMiI,IAAM3iB,IAAI0a,IAAW,KAAK,IAAInW,GAAG,IAAIA,CAAC,GACtCqe,IAAKje,IAAI0V,IACTwI,KAAM,IAAIle,KAAK0V,IACfgH,KAAM,IAAI1c,KAAK0V,IACfza,IAAI2E,IAAIoe,IAAK,KAAK,IAAI,IAAI,KAAK,IAAIC,IAAK3I,IAAMA,MAAQW,KAAUgI,GAAI,CAAC,CAAC,GACtExb,IAAI7C,IAAIoe,IAAK,KAAK,IAAI,IAAI,KAAK,IAAIE,IAAK5I,IAAMA,MAAQW,KAAUiI,GAAI,CAAC,CAAC,GACtErX,IAAIjH,IAAIoe,IAAK,KAAK,IAAI,IAAI,KAAK,IAAItB,IAAKpH,IAAMA,MAAQW,KAAUyG,GAAI,CAAC,CAAC;AAC5E,SAAO;AAAA,IACL;AAAA,IACA,KAAK,IAAI,KAAK,IAAIoB,EAAiB7iB,IAAI+a,GAASR,EAAG,GAAG,CAAC,GAAGQ,CAAO;AAAA,IACjE,KAAK,IAAI,KAAK,IAAI8H,EAAiBrb,IAAIuT,GAASR,EAAG,GAAG,CAAC,GAAGQ,CAAO;AAAA,IACjE,KAAK,IAAI,KAAK,IAAI8H,EAAiBjX,IAAImP,GAASR,EAAG,GAAG,CAAC,GAAGQ,CAAO;AAAA,IACjEiD;AAAA,EAAA;AAEJ,GAQakF,KAAW,CACtBvQ,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAAClB,GAAQ,KAAKlK,CAAK,GAAG;AACxB,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAM,CAAA,EAAGhC,CAAG,IAAIpB,EAAM,MAAMkK,EAAO,GAC7B,CAACsC,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,MAAIhP,GAAGyc,GAAIC;AACX,EAAItC,MAAO/H,IACTrS,IAAI,IAEJA,IAAIib,GAAWb,CAAE,GAEfC,MAAOhI,IACToK,IAAK,IAELA,IAAK,KAAK,IAAI,KAAK,IAAI,WAAWpC,CAAE,GAAG,CAAC,GAAGtE,CAAO,IAAIA,GAEpDuE,MAAOjI,IACTqK,IAAK,IAELA,IAAK,KAAK,IAAI,KAAK,IAAI,WAAWpC,CAAE,GAAG,CAAC,GAAGvE,CAAO,IAAIA;AAExD,QAAMkD,IAAQuC,GAAWqC,CAAE;AAC3B,MAAInF,MAAW;AACb,WAAO;AAAA,MACLA;AAAA,MACA0B,MAAO/H,IAAO+H,IAAKpa;AAAA,MACnBqa,MAAOhI,IAAOgI,IAAKoC,IAAK1G;AAAAA,MACxBuE,MAAOjI,IAAOiI,IAAKoC,IAAK3G;AAAAA,MACxB8H,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,MAAIwD,IAAKC,KAAM,GAAG;AAChB,UAAMra,IAAIyb,EAAkBrB,KAAMA,IAAKC,KAAO1G,GAASR,EAAG;AAC1D,WAAO,CAAC,OAAOnT,GAAGA,GAAGA,GAAG4W,CAAK;AAAA,EAC/B;AACA,QAAMmF,KAAU,IAAI3B,IAAKC,KAAM1G;AAC/B,MAAI,CAAA,EAAG/a,GAAGwH,GAAGoE,CAAC,IAAIkX,GAAS,OAAO/d,CAAC,UAAU;AAC7C,SAAA/E,IAAI6iB,GAAkB7iB,IAAImjB,IAAS3B,KAAMzG,GAASR,EAAG,GACrD/S,IAAIqb,GAAkBrb,IAAI2b,IAAS3B,KAAMzG,GAASR,EAAG,GACrD3O,IAAIiX,GAAkBjX,IAAIuX,IAAS3B,KAAMzG,GAASR,EAAG,GAC9C;AAAA,IACL;AAAA,IACA,KAAK,IAAI,KAAK,IAAIva,GAAG,CAAC,GAAG+a,CAAO;AAAA,IAChC,KAAK,IAAI,KAAK,IAAIvT,GAAG,CAAC,GAAGuT,CAAO;AAAA,IAChC,KAAK,IAAI,KAAK,IAAInP,GAAG,CAAC,GAAGmP,CAAO;AAAA,IAChCiD;AAAA,EAAA;AAEJ,GASaoF,KAAW,CACtBzQ,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAACjB,GAAQ,KAAKnK,CAAK,GAAG;AACxB,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAMsN,IAAW,MACXtC,IAAW,GACX,CAAA,EAAGhN,CAAG,IAAIpB,EAAM,MAAMmK,EAAO,GAC7B,CAACqC,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,MAAIpP,GAAGpD,GAAGqK;AACV,EAAIuT,MAAO/H,IACTzS,IAAI,KAEAwa,EAAG,SAAS,GAAG,KACjBxa,IAAI,WAAWwa,CAAE,GACbxa,IAAImW,MACNnW,IAAImW,MAGNnW,IAAI,WAAWwa,CAAE,GAEfxa,IAAI,MACNA,IAAI,KAGJya,MAAOhI,IACT7V,IAAI,IAEJA,IAAI6d,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIiE,IAAW,WAAWjE,CAAE,GAE9DC,MAAOjI,IACTxL,IAAI,IAEJA,IAAIyT,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIgE,IAAW,WAAWhE,CAAE;AAElE,QAAMrB,IAAQuC,GAAWqC,CAAE;AAC3B,MAAIvF,GAAS,KAAKI,CAAM;AACtB,WAAO;AAAA,MACL;AAAA,MACA0B,MAAO/H,IAAO+H,IAAK0D,EAAiBle,GAAG+V,CAAG;AAAA,MAC1C0E,MAAOhI,IAAOgI,IAAKyD,EAAiBthB,GAAGmZ,CAAG;AAAA,MAC1C2E,MAAOjI,IAAOiI,IAAKwD,EAAiBjX,GAAG8O,CAAG;AAAA,MAC1CkI,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,QAAMsF,KAAM3e,IAAI+V,KAAOW,IACjBkI,IAAKhiB,IAAI+Z,KAAQgI,GACjBE,IAAKF,IAAK1X,IAAI2P,IACdkI,IAAQ,KAAK,IAAIH,GAAIrI,EAAQ,GAC7ByI,IAAQ,KAAK,IAAIH,GAAItI,EAAQ,GAC7B0I,IAAQ,KAAK,IAAIH,GAAIvI,EAAQ,GAC7BmG,IAAM;AAAA,IACVsC,IAAQlI,KAAckI,KAASH,IAAKlI,KAAQX,KAAOe;AAAA,IACnD9W,IAAIoc,IAAW0C,IAAQ9e,IAAI8W;AAAA,IAC3BkI,IAAQnI,KAAcmI,KAASH,IAAKnI,KAAQX,KAAOe;AAAA,EAAA,GAE/C,CAACjV,GAAGH,GAAGW,CAAC,IAAIoa,EAAI;AAAA,IACpB,CAACrN,GAAK5T,MAAM4T,IAAO2H,GAAIvb,CAAC;AAAA,EAAA;AAE1B,SAAO;AAAA,IACL;AAAA,IACA0iB,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvBsD;AAAA,EAAA;AAEJ,GAUa4F,KAAW,CACtBjR,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAAChB,GAAQ,KAAKpK,CAAK,GAAG;AACxB,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAMsN,IAAW,KACX,CAAA,EAAGtP,CAAG,IAAIpB,EAAM,MAAMoK,EAAO,GAC7B,CAACoC,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,MAAIpP,GAAGrD,GAAGyD;AACV,EAAIoa,MAAO/H,IACTzS,IAAI,KAEJA,IAAI,WAAWwa,CAAE,GACbxa,IAAI,MACNA,IAAI,KAGJya,MAAOhI,IACT9V,IAAI,IAEJA,IAAI8d,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIiE,IAAW,WAAWjE,CAAE,GAE9DC,MAAOjI,IACTrS,IAAI,IAEJA,IAAIib,GAAWX,CAAE;AAEnB,QAAMrB,IAAQuC,GAAWqC,CAAE;AAC3B,MAAIvF,GAAS,KAAKI,CAAM;AACtB,WAAO;AAAA,MACL;AAAA,MACA0B,MAAO/H,IAAO+H,IAAK0D,EAAiBle,GAAG+V,CAAG;AAAA,MAC1C0E,MAAOhI,IAAOgI,IAAKyD,EAAiBvhB,GAAGoZ,CAAG;AAAA,MAC1C2E,MAAOjI,IAAOiI,IAAKwD,EAAiB9d,GAAG2V,CAAG;AAAA,MAC1CkI,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,QAAMzc,IAAID,IAAI,KAAK,IAAKyD,IAAI,KAAK,KAAM6V,EAAQ,GACzChP,IAAItK,IAAI,KAAK,IAAKyD,IAAI,KAAK,KAAM6V,EAAQ,GACzC,CAAA,EAAGpU,GAAGH,GAAGW,CAAC,IAAIoc,GAAS,OAAOze,CAAC,IAAIpD,CAAC,IAAIqK,CAAC,GAAG;AAClD,SAAO;AAAA,IACL;AAAA,IACAiX,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvBsD;AAAA,EAAA;AAEJ,GAUa6F,KAAa,CACxBlR,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAACZ,GAAU,KAAKxK,CAAK,GAAG;AAC1B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAMsN,IAAW,KACX,CAAA,EAAGtP,CAAG,IAAIpB,EAAM,MAAMwK,EAAS,GAC/B,CAACgC,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,MAAIpP,GAAGpD,GAAGqK;AACV,EAAIuT,MAAO/H,IACTzS,IAAI,KAEJA,IAAIwa,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIrE,IAAU,WAAWqE,CAAE,GAC3Dxa,IAAI,MACNA,IAAI,KAGJya,MAAOhI,IACT7V,IAAI,IACK6d,EAAG,SAAS,GAAG,IACxB7d,IAAK,WAAW6d,CAAE,IAAIiE,IAAYvI,IAElCvZ,IAAI,WAAW6d,CAAE,GAEfC,MAAOjI,IACTxL,IAAI,IACKyT,EAAG,SAAS,GAAG,IACxBzT,IAAK,WAAWyT,CAAE,IAAIgE,IAAYvI,IAElClP,IAAI,WAAWyT,CAAE;AAEnB,QAAMrB,IAAQuC,GAAWqC,CAAE;AAC3B,MAAIvF,GAAS,KAAKI,CAAM;AACtB,WAAO;AAAA,MACL;AAAA,MACA0B,MAAO/H,IAAO+H,IAAK0D,EAAiBle,GAAG+V,CAAG;AAAA,MAC1C0E,MAAOhI,IAAOgI,IAAKyD,EAAiBthB,GAAGmZ,CAAG;AAAA,MAC1C2E,MAAOjI,IAAOiI,IAAKwD,EAAiBjX,GAAG8O,CAAG;AAAA,MAC1CkI,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAIvB,QAAM2D,IADMrD,GAAgBrC,IAAqB,CAACtX,GAAGpD,GAAGqK,CAAC,CAAC,EACvC,IAAI,CAAAtK,MAAK,KAAK,IAAIA,GAAG2Z,EAAQ,CAAC,GAC3C,CAACzU,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBtC,IAAmB2F,GAAQ,EAAI;AACjE,SAAO;AAAA,IACL;AAAA,IACAkB,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvBsD;AAAA,EAAA;AAEJ,GAUa8F,KAAa,CACxBnR,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK;AAC1C,MAAI,CAACX,GAAU,KAAKzK,CAAK,GAAG;AAC1B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAMsN,IAAW,KACX,CAAA,EAAGtP,CAAG,IAAIpB,EAAM,MAAMyK,EAAS,GAC/B,CAAC+B,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC3B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,MAAIpP,GAAGrD,GAAGyD;AACV,EAAIoa,MAAO/H,IACTzS,IAAI,KAEJA,IAAIwa,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIrE,IAAU,WAAWqE,CAAE,GAC3Dxa,IAAI,MACNA,IAAI,KAGJya,MAAOhI,IACT9V,IAAI,KAEA8d,EAAG,SAAS,GAAG,IACjB9d,IAAK,WAAW8d,CAAE,IAAIiE,IAAYvI,IAElCxZ,IAAI,WAAW8d,CAAE,GAEf9d,IAAI,MACNA,IAAI,KAGJ+d,MAAOjI,IACTrS,IAAI,IAEJA,IAAIib,GAAWX,CAAE;AAEnB,QAAMrB,IAAQuC,GAAWqC,CAAE;AAC3B,MAAIvF,GAAS,KAAKI,CAAM;AACtB,WAAO;AAAA,MACL;AAAA,MACA0B,MAAO/H,IAAO+H,IAAK0D,EAAiBle,GAAG+V,CAAG;AAAA,MAC1C0E,MAAOhI,IAAOgI,IAAKyD,EAAiBvhB,GAAGoZ,CAAG;AAAA,MAC1C2E,MAAOjI,IAAOiI,IAAKwD,EAAiB9d,GAAG2V,CAAG;AAAA,MAC1CkI,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,QAAMzc,IAAID,IAAI,KAAK,IAAKyD,IAAI,KAAK,KAAM6V,EAAQ,GACzChP,IAAItK,IAAI,KAAK,IAAKyD,IAAI,KAAK,KAAM6V,EAAQ,GAEzC+G,IADMrD,GAAgBrC,IAAqB,CAACtX,GAAGpD,GAAGqK,CAAC,CAAC,EACvC,IAAI,CAAAmY,MAAM,KAAK,IAAIA,GAAI9I,EAAQ,CAAC,GAC7C,CAACzU,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBtC,IAAmB2F,GAAQ,EAAI;AACjE,SAAO;AAAA,IACL;AAAA,IACAkB,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvBsD;AAAA,EAAA;AAEJ,GAUagG,KAAiB,CAC5BrR,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,YAAAsR,IAAa,IAAI,KAAAC,IAAM,IAAO,QAAAzG,IAAS,IAAI,UAAAC,IAAW,GAAA,IAAUK;AACxE,MAAI,CAACpB,GAAa,KAAKhK,CAAK,GAAG;AAC7B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,QAAM,CAAA,EAAGhC,CAAG,IAAIpB,EAAM,MAAMgK,EAAY;AACxC,MAAI,CAACwH,GAAIhF,GAAIC,GAAIC,GAAIuD,IAAK,EAAE,IAAI7O,EAC7B,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK,GACV/T,GAAG,GAAG4L;AACV,EAAIuY,MAAO,UACTA,IAAK,YAEHhF,MAAO/H,IACTpX,IAAI,IAEJA,IAAImf,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIrE,IAAU,WAAWqE,CAAE,GAE7DC,MAAOhI,IACT,IAAI,IAEJ,IAAIgI,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAItE,IAAU,WAAWsE,CAAE,GAE7DC,MAAOjI,IACTxL,IAAI,IAEJA,IAAIyT,EAAG,SAAS,GAAG,IAAI,WAAWA,CAAE,IAAIvE,IAAU,WAAWuE,CAAE;AAEjE,QAAMrB,IAAQuC,GAAWqC,CAAE;AAC3B,MAAIvF,GAAS,KAAKI,CAAM,KAAMA,MAAW1D,KAAWoK,MAAOF;AACzD,WAAO;AAAA,MACLE;AAAA,MACAhF,MAAO/H,IAAO+H,IAAK0D,EAAiB7iB,GAAGwa,EAAG;AAAA,MAC1C4E,MAAOhI,IAAOgI,IAAKyD,EAAiB,GAAGrI,EAAG;AAAA,MAC1C6E,MAAOjI,IAAOiI,IAAKwD,EAAiBjX,GAAG4O,EAAG;AAAA,MAC1CoI,MAAOxL,IAAOwL,IAAK5E;AAAA,IAAA;AAGvB,MAAIxX,IAAI,GACJH,IAAI,GACJW,IAAI;AAER,MAAImd,MAAO;AACT,KAAC3d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBzC,IAAqB,CAAC7b,GAAG,GAAG4L,CAAC,CAAC,GACtDsY,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,WAGvDmd,MAAO,cAAc;AAC9B,UAAMC,IAAY1D,GAAwB;AAAA,MACxC1gB,IAAI+a;AAAAA,MACJ,IAAIA;AAAAA,MACJnP,IAAImP;AAAAA,IAAA,CACL;AACD,KAACvU,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBnC,IAAkBiI,CAAS,GACnDF,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAWmd,MAAO,WAAW;AAC3B,UAAME,IAAQ,kBACRC,IAAO,mBACPC,IAAW,MACX5D,IAAM,CAAC3gB,GAAG,GAAG4L,CAAC,EAAE,IAAI,CAAAtK,MAAK;AAC7B,UAAIkjB;AACJ,aAAIljB,IAAIgjB,IAAOC,IAAW/J,KACxBgK,IAAKljB,KAAKijB,IAAW/J,MAErBgK,IAAK,KAAK,KAAKljB,IAAI+iB,IAAQ,KAAKA,GAAO,IAAIE,CAAQ,GAE9CC;AAAA,IACT,CAAC;AACD,KAAChe,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBlC,IAAuBuE,CAAG,GAClDuD,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAWmd,MAAO,WAAW;AAC3B,UAAMM,IAAU,YACV9D,IAAM,CAAC3gB,GAAG,GAAG4L,CAAC,EAAE,IAAI,CAAAtK,MACb,KAAK,IAAIA,GAAGmjB,CAAO,CAE/B;AACD,KAACje,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBjC,IAAmBsE,CAAG,GAC9CuD,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAWmd,MAAO,gBAAgB;AAEhC,UAAMxD,IAAM,CAAC3gB,GAAG,GAAG4L,CAAC,EAAE,IAAI,CAAAtK,MAAK;AAC7B,UAAIkjB;AACJ,aAAIljB,IAAI,KAAKoZ,IAAMN,MACjBoK,IAAK,KAAK,IAAIljB,GAAG,GAAY,IAE7BkjB,IAAKljB,IAAIoZ,GAEJ8J;AAAA,IACT,CAAC;AACD,KAAChe,GAAGH,GAAGW,CAAC,IAAIsX,GAAgBhC,IAA4BqE,CAAG,GACtDuD,MACH,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB3C,IAAmB,CAACnV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,MAAA,CAAW,wBAAwB,KAAKmd,CAAE,KACxC,CAAC3d,GAAGH,GAAGW,CAAC,IAAI,CAAChH,GAAG,GAAG4L,CAAC,GAChBuY,MAAO,YACJD,MACH,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB3C,IAAmB,CAACnV,GAAGH,GAAGW,CAAC,CAAC,KAEjDkd,MACT,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI,OAIhE,CAACR,GAAGH,GAAGW,CAAC,IAAIga,GAAkB,CAAChhB,IAAI+a,GAAS,IAAIA,GAASnP,IAAImP,CAAO,CAAC,GACjEmJ,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAGlE,SAAO;AAAA,IACLkd,IAAM,YAAY;AAAA,IAClBrB,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvB+C,MAAW1D,KAAW6I,MAAOxL,IAAOwL,IAAK5E;AAAA,EAAA;AAE7C,GAUa0G,KAAkB,CAC7B/R,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,KAAAuR,IAAM,IAAO,QAAAzG,IAAS,IAAI,UAAAC,IAAW,OAAUK;AACvD,MAAI,CAACxB,GAAU,KAAK5J,CAAK,GAAG;AAC1B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AAIrD,WAHI3H,aAAe6H,KAGfvH,EAASN,CAAG,GACPA;AAAA,EAGX;AACA,MAAIvP,IAAI,GACJH,IAAI,GACJW,IAAI,GACJgX,IAAQ;AAEZ,MAAItB,GAAY,KAAK/J,CAAK,GAAG;AAC3B,QAAI8K,MAAW3D;AACb,aAAO,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AAE3B,QAAI2D,MAAWzD;AACb,aAAOrH;AAAA,EAGX,WAAW,WAAW,KAAKA,CAAK;AAC9B,QAAI,OAAO,OAAO2K,IAAc3K,CAAK,GAAG;AACtC,UAAI8K,MAAWzD;AACb,eAAOrH;AAET,YAAM,CAAC3S,GAAGwH,GAAGoE,CAAC,IAAI0R,GAChB3K,CACF;AAEA,UADAqL,IAAQ,GACJP,MAAW3D;AACb,eAAO,CAAC,OAAO9Z,GAAGwH,GAAGoE,GAAGoS,CAAK;AAE/B,OAACxX,GAAGH,GAAGW,CAAC,IAAIga,GAAkB,CAAChhB,GAAGwH,GAAGoE,CAAC,GAAG,EAAI,GACzCsY,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,IAElE;AACE,cAAQyW,GAAA;AAAA,QACN,KAAK3D;AACH,iBAAI4D,KAAY/K,MAAU,gBACjB,IAAIiL,EAAA,IAEN,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AAAA,QAE3B,KAAK5D;AACH,iBAAIrH,MAAU,gBACLA,IAEF;AAAA,QAET,KAAKoH;AACH,iBAAIpH,MAAU,gBACL,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC,IAEpB,IAAIiL,EAAA;AAAA,MAEb;AAAA,WAIKjL,EAAM,CAAC,MAAM,KAAK;AAC3B,QAAI0K,GAAS,KAAKI,CAAM;AAEtB,aAAO,CAAC,OAAO,GADH+E,GAAgB7P,CAAK,CACZ;AAEvB,KAACnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0E,GAAgB/P,CAAK,GACpCuR,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAW2L,EAAM,WAAW,KAAK,GAAG;AAClC,QAAI0K,GAAS,KAAKI,CAAM;AACtB,aAAO2F,GAASzQ,GAAOoL,CAAG;AAE5B,KAAA,EAAGvX,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoF,GAASzQ,CAAK,GAC9BuR,MACH,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB3C,IAAmB,CAACnV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAW2L,EAAM,WAAW,KAAK,GAAG;AAClC,QAAI0K,GAAS,KAAKI,CAAM;AACtB,aAAOmG,GAASjR,GAAOoL,CAAG;AAE5B,KAAA,EAAGvX,GAAGH,GAAGW,GAAGgX,CAAK,IAAI4F,GAASjR,CAAK,GAC9BuR,MACH,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB3C,IAAmB,CAACnV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAW2L,EAAM,WAAW,OAAO,GAAG;AACpC,QAAI0K,GAAS,KAAKI,CAAM;AACtB,aAAOoG,GAAWlR,GAAOoL,CAAG;AAE9B,KAAA,EAAGvX,GAAGH,GAAGW,GAAGgX,CAAK,IAAI6F,GAAWlR,CAAK,GACjCuR,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAGlE,WAAW2L,EAAM,WAAW,OAAO,GAAG;AACpC,QAAI0K,GAAS,KAAKI,CAAM;AACtB,aAAOqG,GAAWnR,GAAOoL,CAAG;AAE9B,KAAA,EAAGvX,GAAGH,GAAGW,GAAGgX,CAAK,IAAI8F,GAAWnR,CAAK,GACjCuR,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAElE,OAAO;AACL,QAAIhH,GAAGwH,GAAGoE;AAWV,QATI+G,EAAM,WAAW,KAAK,IACxB,CAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAI8E,GAASnQ,CAAK,IAE1BA,EAAM,WAAW,KAAK,IAC/B,CAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIkF,GAASvQ,CAAK,IAGnC,CAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAI2E,GAAShQ,GAAOoL,CAAG,GAEtCV,GAAS,KAAKI,CAAM;AACtB,aAAO,CAAC,OAAO,KAAK,MAAMzd,CAAC,GAAG,KAAK,MAAMwH,CAAC,GAAG,KAAK,MAAMoE,CAAC,GAAGoS,CAAK;AAEnE,KAACxX,GAAGH,GAAGW,CAAC,IAAIga,GAAkB,CAAChhB,GAAGwH,GAAGoE,CAAC,CAAC,GACnCsY,MACF,CAAC1d,GAAGH,GAAGW,CAAC,IAAIsX,GAAgB1C,IAAmB,CAACpV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAElE;AACA,SAAO;AAAA,IACLkd,IAAM,YAAY;AAAA,IAClBrB,EAAiBrc,GAAGkU,CAAG;AAAA,IACvBmI,EAAiBxc,GAAGqU,CAAG;AAAA,IACvBmI,EAAiB7b,GAAG0T,CAAG;AAAA,IACvBsD;AAAA,EAAA;AAEJ,GASa2G,KAAoB,CAC/BhS,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,YAAAsR,IAAa,IAAI,QAAAxG,IAAS,IAAI,UAAAC,IAAW,OAAUK,GACrDP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE,IAAW;AACrC,QAAIF,EAAa;AACf,aAAOA;AAET,UAAMG,IAAaH,EAAa;AAChC,WAAIxO,EAAS2O,CAAU,GACdA;AAAA,EAGX;AACA,MAAI,CAACzI,GAAU,KAAK5J,CAAK,GAAG;AAC1B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AACrD,WAAI3H,aAAe6H,KACjBD,EAASH,GAAU,IAAI,GAChBzH,MAET4H,EAASH,GAAUzH,CAAG,GAClBM,EAASN,CAAG,GACPA;AAAAA,EAGX;AACA,MAAIoO,IAAK,IACLnkB,IAAI,GACJwH,IAAI,GACJoE,IAAI,GACJoS,IAAQ;AAEZ,MAAItB,GAAY,KAAK/J,CAAK;AACxB,QAAI8K,MAAWzD;AACb,aAAA2D,EAASH,GAAU7K,CAAK,GACjBA;AAAA,aAGA,WAAW,KAAKA,CAAK;AAC9B,QAAI,OAAO,OAAO2K,IAAc3K,CAAK,GAAG;AACtC,UAAI8K,MAAWzD;AACb,eAAA2D,EAASH,GAAU7K,CAAK,GACjBA;AAET,OAAC3S,GAAGwH,GAAGoE,CAAC,IAAI0R,GACV3K,CACF,GACAqL,IAAQ;AAAA,IACV;AACE,cAAQP,GAAA;AAAA,QACN,KAAKzD,GAAU;AACb,cAAIrH,MAAU;AACZ,mBAAAgL,EAASH,GAAU7K,CAAK,GACjBA;AAET,gBAAMoD,IAAM;AACZ,iBAAA4H,EAASH,GAAUzH,CAAG,GACfA;AAAAA,QACT;AAAA,QACA,KAAKgE,GAAS;AACZ,cAAIpH,MAAU,eAAe;AAC3B,kBAAMoD,IAA8B,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AACtD,mBAAA4H,EAASH,GAAUzH,CAAG,GACfA;AAAAA,UACT;AACA,iBAAA4H,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,QACb;AAAA,QACA,KAAK9D;AAAA,QACL,SAAS;AACP,cAAI4D,KAAY/K,MAAU;AACxB,mBAAAgL,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,gBAAM7H,IAA8B,CAAC,OAAO,GAAG,GAAG,GAAG,CAAC;AACtD,iBAAA4H,EAASH,GAAUzH,CAAG,GACfA;AAAAA,QACT;AAAA,MAAA;AAAA,WAIKpD,EAAM,CAAC,MAAM;AACtB,KAAC3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIwE,GAAgB7P,CAAK;AAAA,WAE/BA,EAAM,WAAW,KAAK;AAC/B,KAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAI8E,GAASnQ,GAAOoL,CAAG;AAAA,WAE/BpL,EAAM,WAAW,KAAK;AAC/B,KAAA,EAAG3S,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIkF,GAASvQ,GAAOoL,CAAG;AAAA,WAE/B,cAAc,KAAKpL,CAAK,GAAG;AACpC,QAAInM,GAAGH,GAAGW;AAMV,QALI2L,EAAM,WAAW,KAAK,IACxB,CAACwR,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoF,GAASzQ,GAAOoL,CAAG,IAE1C,CAACoG,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAI4F,GAASjR,GAAOoL,CAAG,GAExCV,GAAS,KAAKI,CAAM,GAAG;AACzB,YAAM1H,IAA8B,CAACoO,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK;AACvD,aAAAL,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AACA,KAAC/V,GAAGwH,GAAGoE,CAAC,IAAIkW,GAAqB,CAACtb,GAAGH,GAAGW,CAAC,CAAC;AAAA,EAE5C,WAAW,gBAAgB,KAAK2L,CAAK,GAAG;AACtC,QAAInM,GAAGH,GAAGW;AAMV,QALI2L,EAAM,WAAW,OAAO,IAC1B,CAACwR,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAI6F,GAAWlR,GAAOoL,CAAG,IAE5C,CAACoG,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAI8F,GAAWnR,GAAOoL,CAAG,GAE1CV,GAAS,KAAKI,CAAM,GAAG;AACzB,YAAM1H,IAA8B,CAACoO,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK;AACvD,aAAAL,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AACA,KAAC/V,GAAGwH,GAAGoE,CAAC,IAAIuV,GAAkB,CAAC3a,GAAGH,GAAGW,CAAC,CAAC;AAAA,EAEzC;AACE,KAAA,EAAGhH,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAI2E,GAAShQ,GAAOoL,CAAG;AAE1C,MAAIN,MAAW1D,KAAWkK,MAAe,QAAQ;AAC/C,UAAMlO,IAA8B;AAAA,MAClC;AAAA,MACA/V,IAAI+a;AAAAA,MACJvT,IAAIuT;AAAAA,MACJnP,IAAImP;AAAAA,MACJiD;AAAA,IAAA;AAEF,WAAAL,EAASH,GAAUzH,CAAG,GACfA;AAAAA,EACT;AACA,QAAMA,IAA8B;AAAA,IAClC;AAAA,IACA,KAAK,MAAM/V,CAAC;AAAA,IACZ,KAAK,MAAMwH,CAAC;AAAA,IACZ,KAAK,MAAMoE,CAAC;AAAA,IACZoS;AAAA,EAAA;AAEF,SAAAL,EAASH,GAAUzH,CAAG,GACfA;AACT,GAQakP,KAAmB,CAC9BtS,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,YAAAsR,IAAa,IAAI,QAAAxG,IAAS,IAAI,UAAAC,IAAW,OAAUK,GACrDP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE,IAAW;AACrC,QAAIF,EAAa;AACf,aAAOA;AAET,UAAMG,IAAaH,EAAa;AAChC,WAAIxO,EAAS2O,CAAU,GACdA;AAAA,EAGX;AACA,MAAI,CAACrI,GAAa,KAAKhK,CAAK,GAAG;AAC7B,UAAMoD,IAAM8H,GAAyBJ,GAAQC,CAAQ;AACrD,WAAI3H,aAAe6H,KACjBD,EAASH,GAAU,IAAI,GAChBzH,MAET4H,EAASH,GAAUzH,CAAG,GAClBM,EAASN,CAAG,GACPA;AAAAA,EAGX;AACA,QAAM,CAACoO,GAAIhF,GAAIC,GAAIC,GAAIuD,CAAE,IAAIoB;AAAA,IAC3BrR;AAAA,IACAoL;AAAA,EAAA;AAEF,MAAIV,GAAS,KAAKI,CAAM,KAAMA,MAAW1D,KAAWoK,MAAOF,GAAa;AACtE,UAAMlO,IAA8B,CAACoO,GAAIhF,GAAIC,GAAIC,GAAIuD,CAAE;AACvD,WAAAjF,EAASH,GAAUzH,CAAG,GACfA;AAAAA,EACT;AACA,QAAMvP,IAAI,WAAW,GAAG2Y,CAAE,EAAE,GACtB9Y,IAAI,WAAW,GAAG+Y,CAAE,EAAE,GACtBpY,IAAI,WAAW,GAAGqY,CAAE,EAAE,GACtBrB,IAAQuC,GAAW,GAAGqC,CAAE,EAAE,GAC1B,CAAC5iB,GAAGwH,GAAGoE,CAAC,IAAIuV,GAAkB,CAAC3a,GAAGH,GAAGW,CAAC,GAAG,EAAI,GAC7C+O,IAA8B,CAAC,OAAO/V,GAAGwH,GAAGoE,GAAGoS,CAAK;AAC1D,SAAAL,EAASH,GAAUzH,CAAG,GACfA;AACT,GAQamP,KAA0B,CACrCvS,GACAoL,IAGI,OAC2B;AAC/B,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,YAAAsR,IAAa,IAAI,QAAAxG,IAAS,OAAOM;AACzC,MAAIoG,IAAK,IACLnkB,GAAGwH,GAAGoE,GAAGoS,GAAOxX,GAAGH,GAAGW;AAC1B,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAGT,QADA,CAAC+C,GAAI3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD,GACnB+C,MAAOF;AACT,aAAO,CAACzd,GAAGH,GAAGW,GAAGgX,CAAK;AAExB,KAAChe,GAAGwH,GAAGoE,CAAC,IAAI0S,GAAgBxC,IAAqB,CAACtV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAClE,WAAW2L,EAAM,WAAWiG,EAAQ,GAAG;AACrC,UAAM,CAAA,EAAG7E,CAAG,IAAIpB,EAAM,MAAMgK,EAAY,GAClC,CAACwH,CAAE,IAAIpQ,EACV,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,IAAIoQ,MAAO,gBACT,CAAA,EAAGnkB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIiH,GAAiBtS,GAAO;AAAA,MAC3C,QAAQmH;AAAA,IAAA,CACT,KAED,CAAA,EAAGtT,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK,GACzC,CAAC3S,GAAGwH,GAAGoE,CAAC,IAAI0S,GAAgBxC,IAAqB,CAACtV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAAA,EAEpE;AACE,KAAA,EAAGR,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,CAAK,GAC1C,CAAC3S,GAAGwH,GAAGoE,CAAC,IAAI0S,GAAgBxC,IAAqB,CAACtV,GAAGH,GAAGW,CAAC,GAAG,EAAI;AAElE,SAAO;AAAA,IACL,KAAK,IAAI,KAAK,IAAIhH,GAAG,CAAC,GAAG,CAAC;AAAA,IAC1B,KAAK,IAAI,KAAK,IAAIwH,GAAG,CAAC,GAAG,CAAC;AAAA,IAC1B,KAAK,IAAI,KAAK,IAAIoE,GAAG,CAAC,GAAG,CAAC;AAAA,IAC1BoS;AAAA,EAAA;AAEJ,GASamH,KAAoB,CAC/BxS,GACAoL,IAAe,OACgB;AAC/B,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAI,GAAGvW,GAAGoE,GAAGoS;AACb,MAAIP,MAAW1D,GAAS;AACtB,QAAI4G;AAMJ,QALIhO,EAAM,WAAWiG,EAAQ,IAC3B+H,IAAMsE,GAAiBtS,GAAOoL,CAAG,IAEjC4C,IAAMgE,GAAkBhS,GAAOoL,CAAG,GAEhC4C,aAAe/C;AACjB,aAAO+C;AAET,KAAA,EAAG,GAAGnZ,GAAGoE,GAAGoS,CAAK,IAAI2C;AAAA,EACvB,WAAWhO,EAAM,WAAWiG,EAAQ,GAAG;AACrC,UAAM,CAAA,EAAG7E,CAAG,IAAIpB,EAAM,MAAMgK,EAAY,GAClC,CAACwH,CAAE,IAAIpQ,EACV,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,IAAIoQ,MAAO,UACT,CAAA,EAAG,GAAG3c,GAAGoE,GAAGoS,CAAK,IAAIiH,GAAiBtS,GAAO;AAAA,MAC3C,QAAQmH;AAAA,IAAA,CACT,GACD,KAAKiB,GACLvT,KAAKuT,GACLnP,KAAKmP,KAEL,CAAA,EAAG,GAAGvT,GAAGoE,GAAGoS,CAAK,IAAIiH,GAAiBtS,CAAK;AAAA,EAE/C,MAAA,CAAW,qBAAqB,KAAKA,CAAK,KACxC,CAAC,GAAGnL,GAAGoE,GAAGoS,CAAK,IAAIkH,GAAwBvS,CAAK,GAChD,CAAC,GAAGnL,GAAGoE,CAAC,IAAIqV,GAAwB,CAAC,GAAGzZ,GAAGoE,CAAC,CAAC,KAE7C,CAAA,EAAG,GAAGpE,GAAGoE,GAAGoS,CAAK,IAAI2G,GAAkBhS,GAAO;AAAA,IAC5C,QAAQmH;AAAA,EAAA,CACT;AAEH,SAAO,CAAC,GAAGtS,GAAGoE,GAAGoS,CAAK;AACxB,GAQaoH,KAAoB,CAC/BzS,GACAoL,IAAe,OACgB;AAC/B,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,KAAAuR,IAAM,IAAO,QAAAzG,IAAS,OAAOM;AACrC,MAAIvX,GAAGH,GAAGW,GAAGgX;AACb,MAAIP,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,WAAWzO,EAAM,WAAWiG,EAAQ,GAAG;AACrC,UAAM,CAAA,EAAG7E,CAAG,IAAIpB,EAAM,MAAMgK,EAAY,GAClC,CAACwH,CAAE,IAAIpQ,EACV,QAAQ,KAAK,GAAG,EAChB,MAAM,KAAK;AACd,IAAImQ,IACEC,MAAO,YACT,CAAA,EAAG3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAIiH,GAAiBtS,GAAO;AAAA,MAC3C,QAAQmH;AAAA,IAAA,CACT,IAED,CAAA,EAAGtT,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG;AAAA,MACnBrR;AAAA,MACAoL;AAAA,IAAA,IAGK,iBAAiB,KAAKoG,CAAE,IACjC,CAAA,EAAG3d,GAAGH,GAAGW,GAAGgX,CAAK,IAAIiH,GAAiBtS,GAAO;AAAA,MAC3C,QAAQmH;AAAA,IAAA,CACT,IAED,CAAA,EAAGtT,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK;AAAA,EAE7C;AACE,KAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,GAAOoL,CAAG;AAEjD,SAAO,CAACvX,GAAGH,GAAGW,GAAGgX,CAAK;AACxB,GAQaqH,KAAoB,CAC/B1S,GACAoL,IAAe,OAC4D;AAC3E,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIhZ,GAAG,GAAGJ,GAAGqZ;AACb,MAAIpB,GAAQ,KAAKjK,CAAK;AAIpB,WAHA,CAAA,EAAG5N,GAAG,GAAGJ,GAAGqZ,CAAK,IAAI8E,GAASnQ,GAAO;AAAA,MACnC,QAAQ;AAAA,IAAA,CACT,GACG8K,MAAW,QACN,CAAC,KAAK,MAAM1Y,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,KAAK,MAAMJ,CAAC,GAAGqZ,CAAK,IAErD,CAACjZ,GAAG,GAAGJ,GAAGqZ,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK,IAEzC,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,CAAK;AAG5C,SADA,CAAC5N,GAAG,GAAGJ,CAAC,IAAI0c,GAAkB,CAAC7a,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACzCyW,MAAW,QACN,CAAC,KAAK,MAAM1Y,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,KAAK,MAAMJ,CAAC,GAAGqZ,CAAK,IAErD,CAACP,MAAW1D,KAAW,MAAM,IAAI3C,IAAOrS,GAAG,GAAGJ,GAAGqZ,CAAK;AAC/D,GAQasH,KAAoB,CAC/B3S,GACAoL,IAAe,OAC4D;AAC3E,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIhZ,GAAG8G,GAAGD,GAAGoS;AACb,MAAInB,GAAQ,KAAKlK,CAAK;AAIpB,WAHA,CAAA,EAAG5N,GAAG8G,GAAGD,GAAGoS,CAAK,IAAIkF,GAASvQ,GAAO;AAAA,MACnC,QAAQ;AAAA,IAAA,CACT,GACG8K,MAAW,QACN,CAAC,KAAK,MAAM1Y,CAAC,GAAG,KAAK,MAAM8G,CAAC,GAAG,KAAK,MAAMD,CAAC,GAAGoS,CAAK,IAErD,CAACjZ,GAAG8G,GAAGD,GAAGoS,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK,IAEzC,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,CAAK;AAG5C,SADA,CAAC5N,GAAG8G,GAAGD,CAAC,IAAI2V,GAAkB,CAAC/a,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACzCyW,MAAW,QACN,CAAC,KAAK,MAAM1Y,CAAC,GAAG,KAAK,MAAM8G,CAAC,GAAG,KAAK,MAAMD,CAAC,GAAGoS,CAAK,IAErD,CAACP,MAAW1D,KAAWlO,IAAID,KAAK,MAAMwL,IAAOrS,GAAG8G,GAAGD,GAAGoS,CAAK;AACpE,GAQauH,KAAoB,CAC/B5S,GACAoL,IAAe,OACgB;AAC/B,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIpZ,GAAGpD,GAAGqK,GAAGoS;AACb,MAAIlB,GAAQ,KAAKnK,CAAK;AACpB,YAAA,EAAGhO,GAAGpD,GAAGqK,GAAGoS,CAAK,IAAIoF,GAASzQ,GAAO;AAAA,MACnC,QAAQmH;AAAA,IAAA,CACT,GACM,CAACnV,GAAGpD,GAAGqK,GAAGoS,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAOJ,QANArD,EAAI,MAAM,IACNpL,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,GAAO;AAAA,IACzC,KAAK;AAAA,EAAA,CACN,IAED,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,GAAO;AAAA,IAC1C,KAAK;AAAA,EAAA,CACN;AAEH,UAAChO,GAAGpD,GAAGqK,CAAC,IAAIoW,GAAqB,CAACxb,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACzC,CAACrC,GAAGpD,GAAGqK,GAAGoS,CAAK;AACxB,GAQawH,KAAoB,CAC/B7S,GACAoL,IAAe,OAC4D;AAC3E,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIpZ,GAAGrD,GAAGyD,GAAGiZ;AACb,MAAIjB,GAAQ,KAAKpK,CAAK;AACpB,YAAA,EAAGhO,GAAGrD,GAAGyD,GAAGiZ,CAAK,IAAI4F,GAASjR,GAAO;AAAA,MACnC,QAAQmH;AAAA,IAAA,CACT,GACM,CAACnV,GAAGrD,GAAGyD,GAAGiZ,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAOJ,QANArD,EAAI,MAAM,IACNpL,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,GAAO;AAAA,IACzC,KAAK;AAAA,EAAA,CACN,IAED,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,GAAO;AAAA,IAC1C,KAAK;AAAA,EAAA,CACN;AAEH,UAAChO,GAAGrD,GAAGyD,CAAC,IAAIsd,GAAqB,CAAC7b,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACzC,CAACrC,GAAGrD,GAAGmc,MAAW1D,KAAWzY,MAAM,IAAI8V,IAAOrS,GAAGiZ,CAAK;AAC/D,GAQayH,KAAsB,CACjC9S,GACAoL,IAAe,OACgB;AAC/B,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIpZ,GAAGpD,GAAGqK,GAAGoS;AACb,MAAIb,GAAU,KAAKxK,CAAK;AACtB,YAAA,EAAGhO,GAAGpD,GAAGqK,GAAGoS,CAAK,IAAI6F,GAAWlR,GAAO;AAAA,MACrC,QAAQmH;AAAA,IAAA,CACT,GACM,CAACnV,GAAGpD,GAAGqK,GAAGoS,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK,IAEzC,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,CAAK;AAE5C,UAAChO,GAAGpD,GAAGqK,CAAC,IAAI8V,GAAoB,CAAClb,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACxC,CAACrC,GAAGpD,GAAGqK,GAAGoS,CAAK;AACxB,GAQa0H,KAAsB,CACjC/S,GACAoL,IAAe,OAC4D;AAC3E,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,GAAA,IAAOM;AACxB,MAAIpZ,GAAGrD,GAAGyD,GAAGiZ;AACb,MAAIZ,GAAU,KAAKzK,CAAK;AACtB,YAAA,EAAGhO,GAAGrD,GAAGyD,GAAGiZ,CAAK,IAAI8F,GAAWnR,GAAO;AAAA,MACrC,QAAQmH;AAAA,IAAA,CACT,GACM,CAACnV,GAAGrD,GAAGyD,GAAGiZ,CAAK;AAExB,MAAIxX,GAAGH,GAAGW;AACV,MAAIyW,MAAW1D,GAAS;AACtB,QAAIqH;AAMJ,QALIzO,EAAM,WAAWiG,EAAQ,IAC3BwI,IAAM4C,GAAerR,GAAOoL,CAAG,IAE/BqD,IAAMsD,GAAgB/R,GAAOoL,CAAG,GAE9BqD,aAAexD;AACjB,aAAOwD;AAET,KAAA,EAAG5a,GAAGH,GAAGW,GAAGgX,CAAK,IAAIoD;AAAA,EACvB,MAAA,CAAWzO,EAAM,WAAWiG,EAAQ,IAClC,CAAA,EAAGpS,GAAGH,GAAGW,GAAGgX,CAAK,IAAIgG,GAAerR,CAAK,IAEzC,CAAA,EAAGnM,GAAGH,GAAGW,GAAGgX,CAAK,IAAI0G,GAAgB/R,CAAK;AAE5C,UAAChO,GAAGrD,GAAGyD,CAAC,IAAI8c,GAAoB,CAACrb,GAAGH,GAAGW,CAAC,GAAG,EAAI,GACxC,CAACrC,GAAGrD,GAAGmc,MAAW1D,KAAWzY,MAAM,IAAI8V,IAAOrS,GAAGiZ,CAAK;AAC/D,GAQa2H,KAAkB,CAC7BhT,GACAoL,IAAe,OACkC;AACjD,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA;AAE5B,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,QAAA8K,IAAS,IAAI,UAAAC,IAAW,OAAUK,GACpCP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE,IAAW;AACrC,QAAIF,EAAa;AACf,aAAOA;AAET,UAAMG,IAAaH,EAAa;AAChC,WAAIxO,EAAS2O,CAAU,GACdA;AAAA,EAGX;AACA,QAAMY,IAAc,CAAA;AACpB,MAAI3B,IAAa,IACb4B,IAAS,IACTnG,IAAS,IACToG,IAAO,IACPnG,IAAS,IACToG,IAAO,IACPC,IAAS;AACb,MAAI,CAAChJ,GAAQ,KAAKrK,CAAK;AAErB,QAAIA,EAAM,WAAWmG,EAAM,KAAKoE,GAAa,KAAKvK,CAAK,GAAG;AACxD,YAAMsT,IAAgB,IAAI,OAAO,OAAOzN,EAAM,IAAIC,EAAM,IAAI,GACtDyN,IAAQvT,EAAM,MAAMuK,EAAY;AACtC,iBAAWiJ,KAAQD;AACjB,YAAIC,GAAM;AACR,cAAIpS,IAAM4R,GAAgBQ,GAAM;AAAA,YAC9B,QAAQ1I,MAAWzD,IAAWyD,IAAS3D;AAAA,UAAA,CACxC;AAED,cAAI,MAAM,QAAQ/F,CAAG,GAAG;AACtB,kBAAM,CAACoQ,GAAIhF,GAAIC,GAAIC,IAAIuD,EAAE,IAAI7O;AAC7B,gBAAIoL,MAAO,KAAKC,MAAO,KAAKC,OAAO,KAAKuD,OAAO,GAAG;AAChD,cAAAjQ,IAAQ;AACR;AAAA,YACF;AACA,YAAIsT,EAAc,KAAK9B,CAAE,IACnBvB,OAAO,IACT7O,IAAM,SAASoQ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,EAAE,MAEnCtL,IAAM,SAASoQ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,EAAE,MAAMuD,EAAE,MAEpCA,OAAO,IAChB7O,IAAM,GAAGoQ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,EAAE,MAE7BtL,IAAM,GAAGoQ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,EAAE,MAAMuD,EAAE;AAAA,UAEzC,WAAW,CAAC5F,GAAQ,KAAKjJ,CAAG,GAAG;AAC7B,YAAApB,IAAQ;AACR;AAAA,UACF;AACA,UAAAiT,EAAY,KAAK7R,CAAG,GACpBpB,IAAQA,EAAM,QAAQwT,GAAMpS,CAAG;AAAA,QACjC;AAEF,UAAI,CAACpB;AAEH,eADY4K,GAAuBC,GAAUC,GAAQC,CAAQ;AAAA,IAIjE,WACE/K,EAAM,WAAWmG,EAAM,KACvBnG,EAAM,SAAS,GAAG,KAClBA,EAAM,SAASkG,EAAa,GAC5B;AACA,YAAMoN,IAAgB,IAAI,OAAO,UAAUtN,EAAM,GAAG,GAC9CyN,IAAazT,EAAM,QAAQmG,IAAQ,EAAE,EAAE,QAAQ,OAAO,EAAE,GACxD,CAACuN,IAAS,IAAIC,IAAQ,IAAIC,IAAQ,EAAE,IAAIC,GAAWJ,GAAY;AAAA,QACnE,WAAW;AAAA,MAAA,CACZ,GACK,CAACK,IAAa,IAAIC,IAAW,EAAE,IAAIF,GAAWF,CAAK,GACnD,CAACK,KAAa,IAAIC,KAAW,EAAE,IAAIJ,GAAWD,CAAK,GACnDM,KAAkBC,GAAaL,GAAY;AAAA,QAC/C,QAAQzM;AAAA,MAAA,CACT,GACK+M,KAAkBD,GAAaH,IAAY;AAAA,QAC/C,QAAQ3M;AAAA,MAAA,CACT;AACD,UAAIiM,EAAc,KAAKI,CAAM,KAAKQ,MAAmBE;AACnD,YAAItJ,MAAWzD,GAAU;AACvB,gBAAM,CAAA,EAAGmK,EAAE,IAAIkC,EAAO,MAAMJ,CAAa;AACzC,UAAIzJ,GAAW,KAAK2H,EAAE,IACpB,CAAA,EAAGF,GAAY4B,CAAM,IAAI1B,GAAG,MAAM3H,EAAU,IAE5CyH,IAAaE,IAEfzE,IAASmH,IACLH,MACFZ,IAAOY,IAET/G,IAASoH,IACLH,OACFb,IAAOa,KAETjU,IAAQA,EACL,QAAQ8T,GAAYI,EAAe,EACnC,QAAQF,IAAYI,EAAe,GACtCf,IAAS;AAAA,QACX,OAAO;AACL,gBAAMgB,KAAiBF,GAAaL,GAAY1I,CAAG,GAC7CkJ,KAAiBH,GAAaH,IAAY5I,CAAG;AACnD,UAAI1H,EAAS2Q,EAAc,KAAK3Q,EAAS4Q,EAAc,MACrDtU,IAAQA,EACL,QAAQ8T,GAAYO,EAAc,EAClC,QAAQL,IAAYM,EAAc;AAAA,QAEzC;AAAA;AAGA,eADY1J,GAAuBC,GAAUC,GAAQC,CAAQ;AAAA,IAGjE;AAEE,aADYH,GAAuBC,GAAUC,GAAQC,CAAQ;AAIjE,MAAIkI,EAAY,UAAUnI,MAAWzD,GAAU;AAC7C,UAAMiM,IAAgB,IAAI,OAAO,2BAA2BtN,EAAM,QAAQ,GACpE,CAAA,EAAGwL,CAAE,IAAIxR,EAAM,MAAMsT,CAAa;AAMxC,QALIzJ,GAAW,KAAK2H,CAAE,IACpB,CAAA,EAAGF,GAAY4B,CAAM,IAAI1B,EAAG,MAAM3H,EAAU,IAE5CyH,IAAaE,GAEXyB,EAAY,WAAW,GAAG;AAC5B,UAAI,CAACsB,GAAOC,CAAK,IAAIvB;AACrB,MAAAsB,IAAQA,EAAM,QAAQ,aAAa,IAAI,GACvCC,IAAQA,EAAM,QAAQ,aAAa,IAAI;AACvC,YAAMC,IAAO,IAAI,OAAO,IAAIF,CAAK,YAAY7P,EAAG,KAAK,GAC/CgQ,IAAO,IAAI,OAAO,IAAIF,CAAK,YAAY9P,EAAG,KAAK;AACrD,OAAA,EAAGqI,GAAQoG,CAAI,IAAInT,EAAM,MAAMyU,CAAI,GACnC,CAAA,EAAGzH,GAAQoG,CAAI,IAAIpT,EAAM,MAAM0U,CAAI;AAAA,IACrC,OAAO;AACL,UAAI,CAAClB,CAAI,IAAIP;AACb,MAAAO,IAAOA,EAAK,QAAQ,aAAa,IAAI;AACrC,YAAMmB,IAAW,GAAGnB,CAAI,UAAU9O,EAAG,MAC/BkQ,IAAe,IAAIpB,CAAI,YAAY9O,EAAG,OACtCmQ,IAAc,IAAI,OAAO,IAAID,CAAY,GAAG,GAC5CE,IAAc,IAAI,OAAO,GAAGF,CAAY,UAAU,GAClDG,KAAe,IAAI,OAAO,KAAKhO,EAAc,YAAYrC,EAAG,MAAM;AAExE,UAAIoQ,EAAY,KAAK9U,CAAK,GAAG;AAC3B,cAAMyN,KAAM,IAAI;AAAA,UACd,IAAIzG,EAAY,cAAc2N,CAAQ;AAAA,QAAA,GAElC,CAAA,EAAGb,IAAYE,EAAU,IAAIhU,EAAM,MAAMyN,EAAG;AAClD,SAAA,EAAGV,GAAQoG,CAAI,IAAIW,GAAW,MAAMiB,EAAY,GAChD,CAAA,EAAG/H,GAAQoG,CAAI,IAAIY,GAAW,MAAMa,CAAW;AAAA,MACjD,OAAO;AACL,cAAMpH,KAAM,IAAI;AAAA,UACd,IAAIkH,CAAQ,cAAc3N,EAAY;AAAA,QAAA,GAElC,CAAA,EAAG8M,IAAYE,EAAU,IAAIhU,EAAM,MAAMyN,EAAG;AAClD,SAAA,EAAGV,GAAQoG,CAAI,IAAIW,GAAW,MAAMe,CAAW,GAC/C,CAAA,EAAG7H,GAAQoG,CAAI,IAAIY,GAAW,MAAMe,EAAY;AAAA,MAClD;AAAA,IACF;AAAA,EACF,WAAW,CAAC1B,GAAQ;AAClB,UAAM,CAAA,EAAG7B,GAAIsC,GAAYE,CAAU,IAAIhU,EAAM;AAAA,MAC3CsK;AAAA,IAAA,GAEImD,IAAM,IAAI,OAAO,KAAK1G,EAAc,YAAYrC,EAAG,MAAM;AAC/D,KAAA,EAAGqI,GAAQoG,CAAI,IAAIW,EAAW,MAAMrG,CAAG,GACvC,CAAA,EAAGT,GAAQoG,CAAI,IAAIY,EAAW,MAAMvG,CAAG,GACnC5D,GAAW,KAAK2H,CAAE,IACpB,CAAA,EAAGF,GAAY4B,CAAM,IAAI1B,EAAG,MAAM3H,EAAU,IAE5CyH,IAAaE;AAAA,EAEjB;AAEA,MAAIwD,GAAIC,GAAI5iB;AACZ,MAAI8gB,KAAQC,GAAM;AAChB,UAAMzG,IAAK,WAAWwG,CAAI,IAAIhL,GACxByE,IAAK,WAAWwG,CAAI,IAAIjL;AAC9B,QAAIwE,IAAK,KAAKA,IAAK,KAAKC,IAAK,KAAKA,IAAK,KAAMD,MAAO,KAAKC,MAAO;AAE9D,aADYhC,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAMyF,IAAS7D,IAAKC;AACpB,IAAAoI,IAAKrI,IAAK6D,GACVyE,IAAKrI,IAAK4D,GACVne,IAAIme,IAAS,IAAIA,IAAS;AAAA,EAC5B,OAAO;AACL,QAAI2C,GAAM;AAER,UADA6B,IAAK,WAAW7B,CAAI,IAAIhL,GACpB6M,IAAK,KAAKA,IAAK;AAEjB,eADYpK,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,MAAAkK,IAAK,IAAID;AAAA,IACX,WAAW5B,GAAM;AAEf,UADA6B,IAAK,WAAW7B,CAAI,IAAIjL,GACpB8M,IAAK,KAAKA,IAAK;AAEjB,eADYrK,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,MAAAiK,IAAK,IAAIC;AAAA,IACX;AACE,MAAAD,IAAKxN,IACLyN,IAAKzN;AAEP,IAAAnV,IAAI;AAAA,EACN;AAKA,MAJIif,MAAe,UACjBA,IAAa,YAGXxG,MAAWzD,GAAU;AACvB,QAAI6N,IAAS,IACTC,IAAS;AACb,QAAIpI,EAAO,WAAW5G,EAAM,KAAK4G,EAAO,WAAW7G,EAAa;AAC9D,MAAAgP,IAASnI;AAAA,aACAA,EAAO,WAAW9G,EAAQ,GAAG;AACtC,YAAM,CAACuL,GAAIhF,GAAIC,GAAIC,GAAIuD,CAAE,IAAIoB;AAAA,QAC3BtE;AAAA,QACA3B;AAAA,MAAA;AAEF,MAAI6E,MAAO,IACTiF,IAAS,SAAS1D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAEtCwI,IAAS,SAAS1D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,CAAE;AAAA,IAElD,OAAO;AACL,YAAM7O,IAAM2Q,GAAgBhF,GAAQ3B,CAAG;AACvC,UAAI,MAAM,QAAQhK,CAAG,GAAG;AACtB,cAAM,CAACoQ,GAAIhF,GAAIC,GAAIC,GAAIuD,EAAE,IAAI7O;AAC7B,QAAI6O,OAAO,IACLuB,MAAO,QACT0D,IAAS,GAAG1D,CAAE,IAAIhF,CAAE,KAAKC,CAAE,KAAKC,CAAE,MAElCwI,IAAS,GAAG1D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAEzB8E,MAAO,QAChB0D,IAAS,GAAG1D,CAAE,KAAKhF,CAAE,KAAKC,CAAE,KAAKC,CAAE,KAAKuD,EAAE,MAE1CiF,IAAS,GAAG1D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,EAAE;AAAA,MAE5C,OAAO;AACL,YAAI,CAACvM,EAAStC,CAAG,KAAK,CAACA;AACrB,iBAAA4J,EAASH,GAAU,EAAE,GACd;AAET,QAAAqK,IAAS9T;AAAA,MACX;AAAA,IACF;AACA,QAAI4L,EAAO,WAAW7G,EAAM,KAAK6G,EAAO,WAAW9G,EAAa;AAC9D,MAAAiP,IAASnI;AAAA,aACAA,EAAO,WAAW/G,EAAQ,GAAG;AACtC,YAAM,CAACuL,GAAIhF,GAAIC,GAAIC,GAAIuD,CAAE,IAAIoB;AAAA,QAC3BrE;AAAA,QACA5B;AAAA,MAAA;AAEF,MAAI6E,MAAO,IACTkF,IAAS,SAAS3D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAEtCyI,IAAS,SAAS3D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,CAAE;AAAA,IAElD,OAAO;AACL,YAAM7O,IAAM2Q,GAAgB/E,GAAQ5B,CAAG;AACvC,UAAI,MAAM,QAAQhK,CAAG,GAAG;AACtB,cAAM,CAACoQ,GAAIhF,GAAIC,GAAIC,GAAIuD,EAAE,IAAI7O;AAC7B,QAAI6O,OAAO,IACLuB,MAAO,QACT2D,IAAS,GAAG3D,CAAE,IAAIhF,CAAE,KAAKC,CAAE,KAAKC,CAAE,MAElCyI,IAAS,GAAG3D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAEzB8E,MAAO,QAChB2D,IAAS,GAAG3D,CAAE,KAAKhF,CAAE,KAAKC,CAAE,KAAKC,CAAE,KAAKuD,EAAE,MAE1CkF,IAAS,GAAG3D,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,EAAE;AAAA,MAE5C,OAAO;AACL,YAAI,CAACvM,EAAStC,CAAG,KAAK,CAACA;AACrB,iBAAA4J,EAASH,GAAU,EAAE,GACd;AAET,QAAAsK,IAAS/T;AAAA,MACX;AAAA,IACF;AACA,QAAI+R,KAAQC;AACV,MAAA8B,KAAU,IAAI,WAAW/B,CAAI,CAAC,KAC9BgC,KAAU,IAAI,WAAW/B,CAAI,CAAC;AAAA,aACrBD,GAAM;AACf,YAAM6B,IAAK,WAAW7B,CAAI;AAC1B,MAAI6B,MAAO7M,IAAUX,OACnB0N,KAAU,IAAIF,CAAE;AAAA,IAEpB,WAAW5B,GAAM;AACf,YAAM4B,IAAK7M,IAAU,WAAWiL,CAAI;AACpC,MAAI4B,MAAO7M,IAAUX,OACnB0N,KAAU,IAAIF,CAAE;AAAA,IAEpB;AACA,QAAI9B,GAAQ;AACV,YAAM9P,IAAM,gBAAgBkO,CAAU,IAAI4B,CAAM,SAASgC,CAAM,KAAKC,CAAM;AAC1E,aAAAnK,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT,OAAO;AACL,YAAMA,IAAM,gBAAgBkO,CAAU,KAAK4D,CAAM,KAAKC,CAAM;AAC5D,aAAAnK,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AAAA,EACF;AACA,MAAI/V,IAAI,GACJwH,IAAI,GACJoE,IAAI,GACJoS,IAAQ;AAEZ,MAAI,qBAAqB,KAAKiG,CAAU,GAAG;AACzC,QAAI8D,GAAMC;AAoCV,QAnCI/D,MAAe,UACbvH,GAAY,KAAKgD,CAAM,IACzBqI,IAAO,CAAC3Q,GAAMA,GAAMA,GAAMA,CAAI,IAE9B2Q,IAAO5C,GAAkBzF,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzBqI,IAAO,CAAC5Q,GAAMA,GAAMA,GAAMA,CAAI,IAE9B4Q,IAAO7C,GAAkBxF,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,MAGC2C,GAAY,KAAKgD,CAAM,IACzBqI,IAAO,CAAC3Q,GAAMA,GAAMA,GAAMA,CAAI,IAE9B2Q,IAAO7C,GAAwBxF,GAAQ;AAAA,MACrC,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzBqI,IAAO,CAAC5Q,GAAMA,GAAMA,GAAMA,CAAI,IAE9B4Q,IAAO9C,GAAwBvF,GAAQ;AAAA,MACrC,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,IAGDgO,aAAgBnK,KAAcoK,aAAgBpK;AAEhD,aADYL,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAM,CAACuK,GAAKC,GAAKC,GAAKC,CAAG,IAAIL,GACvB,CAACM,GAAKC,IAAKC,IAAKC,EAAG,IAAIR,GACvBS,KAAQR,MAAQ7Q,KAAQiR,MAAQjR,GAChCsR,KAAQR,MAAQ9Q,KAAQkR,OAAQlR,GAChCuR,KAAQR,MAAQ/Q,KAAQmR,OAAQnR,GAChCwR,KAAYR,MAAQhR,KAAQoR,OAAQpR,GACpC,CAAC,CAACyR,IAAIC,IAAIC,IAAIC,EAAM,GAAG,CAACC,IAAIC,IAAIC,IAAIC,EAAM,CAAC,IAC/C3J;AAAA,MACE,CAACwI,GAAKC,GAAKC,GAAKC,CAAG;AAAA,MACnB,CAACC,GAAKC,IAAKC,IAAKC,EAAG;AAAA,MACnB;AAAA,IAAA,GAEEa,KAAUL,KAASrB,GACnB2B,KAAUF,KAASxB;AAYzB,QAXA5J,IAAQqL,KAAUC,IACdtL,MAAU,KACZhe,IAAI6oB,KAAKlB,IAAKsB,KAAKrB,GACnBpgB,IAAIshB,KAAKnB,IAAKuB,KAAKtB,GACnBhc,IAAImd,KAAKpB,IAAKwB,KAAKvB,MAEnB5nB,KAAK6oB,KAAKQ,KAAUJ,KAAKK,MAAWtL,GACpCxW,KAAKshB,KAAKO,KAAUH,KAAKI,MAAWtL,GACpCpS,KAAKmd,KAAKM,KAAUF,KAAKG,MAAWtL,GACpCA,IAAQ,WAAWA,EAAM,QAAQ,CAAC,CAAC,IAEjCP,MAAW3D,IAAU;AACvB,YAAM/D,KAA8B;AAAA,QAClCkO;AAAA,QACAwE,KAAQrR,IAAOyL,EAAiB7iB,GAAG0a,CAAG;AAAA,QACtCgO,KAAQtR,IAAOyL,EAAiBrb,GAAGkT,CAAG;AAAA,QACtCiO,KAAQvR,IAAOyL,EAAiBjX,GAAG8O,CAAG;AAAA,QACtCkO,KAAYxR,IAAO4G,IAAQhZ;AAAA,MAAA;AAE7B,aAAA2Y,EAASH,GAAUzH,EAAG,GACfA;AAAAA,IACT;AACA,IAAA/V,KAAK+a,GACLvT,KAAKuT,GACLnP,KAAKmP;AAAAA,EAEP,WAAW0B,GAAW,KAAKwH,CAAU,GAAG;AACtC,QAAIsF,GAAMC;AAmBV,QAlBI9M,GAAY,KAAKgD,CAAM,IACzB6J,IAAO,CAACnS,GAAMA,GAAMA,GAAMA,CAAI,IAE9BmS,IAAOnE,GAAkB1F,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,KAAKA,MAAe;AAAA,MACpB,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzB6J,IAAO,CAACpS,GAAMA,GAAMA,GAAMA,CAAI,IAE9BoS,IAAOpE,GAAkBzF,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,KAAKA,MAAe;AAAA,MACpB,QAAQlK;AAAA,IAAA,CACT,GAECwP,aAAgB3L,KAAc4L,aAAgB5L;AAEhD,aADYL,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAM,CAAC+L,GAAKC,GAAKC,GAAKvB,CAAG,IAAImB,GACvB,CAACK,GAAKC,IAAKC,IAAKtB,EAAG,IAAIgB,GACvBO,KAAQN,MAAQrS,KAAQwS,MAAQxS,GAChC4S,KAAQN,MAAQtS,KAAQyS,OAAQzS,GAChC6S,KAAQN,MAAQvS,KAAQ0S,OAAQ1S,GAChCwR,KAAYR,MAAQhR,KAAQoR,OAAQpR,GACpC,CAAC,CAAC8S,IAAIC,IAAIC,IAAIpB,EAAM,GAAG,CAACqB,IAAIC,IAAIC,IAAInB,EAAM,CAAC,IAC/C3J;AAAA,MACE,CAACgK,GAAKC,GAAKC,GAAKvB,CAAG;AAAA,MACnB,CAACwB,GAAKC,IAAKC,IAAKtB,EAAG;AAAA,MACnB;AAAA,IAAA,GAEEa,KAAUL,KAASrB,GACnB2B,KAAUF,KAASxB;AACzB,IAAA5J,IAAQqL,KAAUC;AAClB,QAAI9iB,IAAGH,IAAGW;AAWV,QAVIgX,MAAU,KACZxX,KAAI0jB,KAAKvC,IAAK0C,KAAKzC,GACnBvhB,KAAI8jB,KAAKxC,IAAK2C,KAAK1C,GACnB5gB,KAAIojB,KAAKzC,IAAK4C,KAAK3C,MAEnBphB,MAAK0jB,KAAKb,KAAUgB,KAAKf,MAAWtL,GACpC3X,MAAK8jB,KAAKd,KAAUiB,KAAKhB,MAAWtL,GACpChX,MAAKojB,KAAKf,KAAUkB,KAAKjB,MAAWtL,GACpCA,IAAQ,WAAWA,EAAM,QAAQ,CAAC,CAAC,IAEjCP,MAAW3D,IAAU;AACvB,YAAM/D,KAA8B;AAAA,QAClCkO;AAAA,QACA8F,KAAQ3S,IAAOyL,EAAiBrc,IAAGkU,CAAG;AAAA,QACtCsP,KAAQ5S,IAAOyL,EAAiBxc,IAAGqU,CAAG;AAAA,QACtCuP,KAAQ7S,IAAOyL,EAAiB7b,IAAG0T,CAAG;AAAA,QACtCkO,KAAYxR,IAAO4G,IAAQhZ;AAAA,MAAA;AAE7B,aAAA2Y,EAASH,GAAUzH,EAAG,GACfA;AAAAA,IACT;AACA,IAAIkO,MAAe,YACjB,CAACjkB,GAAGwH,GAAGoE,CAAC,IAAIkW,GAAqB,CAACtb,IAAGH,IAAGW,EAAC,GAAG,EAAI,IAEhD,CAAChH,GAAGwH,GAAGoE,CAAC,IAAIuV,GAAkB,CAAC3a,IAAGH,IAAGW,EAAC,GAAG,EAAI;AAAA,EAGjD,WAAW,eAAe,KAAKid,CAAU,GAAG;AAC1C,QAAIuG,GAAMC;AAoCV,QAnCIxG,MAAe,SACbvH,GAAY,KAAKgD,CAAM,IACzB8K,IAAO,CAACpT,GAAMA,GAAMA,GAAMA,CAAI,IAE9BoT,IAAOnF,GAAkB3F,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzB8K,IAAO,CAACrT,GAAMA,GAAMA,GAAMA,CAAI,IAE9BqT,IAAOpF,GAAkB1F,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,MAGC2C,GAAY,KAAKgD,CAAM,IACzB8K,IAAO,CAACpT,GAAMA,GAAMA,GAAMA,CAAI,IAE9BoT,IAAOlF,GAAkB5F,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzB8K,IAAO,CAACrT,GAAMA,GAAMA,GAAMA,CAAI,IAE9BqT,IAAOnF,GAAkB3F,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,IAGDyQ,aAAgB5M,KAAc6M,aAAgB7M;AAEhD,aADYL,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAM,CAACgN,GAAKC,GAAKC,GAAKxC,CAAG,IAAIoC,GACvB,CAACK,GAAKC,IAAKC,IAAKvC,EAAG,IAAIiC,GACvB7B,KAAYR,MAAQhR,KAAQoR,OAAQpR;AAC1C,QAAI,CAAC,CAAC4T,IAAIC,IAAIC,IAAIlC,EAAM,GAAG,CAACmC,IAAIC,IAAIC,IAAIjC,EAAM,CAAC,IAAI3J;AAAA,MACjD,CAACiL,GAAKC,GAAKC,GAAKxC,CAAG;AAAA,MACnB,CAACyC,GAAKC,IAAKC,IAAKvC,EAAG;AAAA,MACnB;AAAA,IAAA;AAEF,IAAI3C,MACF,CAACmF,IAAIG,EAAE,IAAIG,GAAeN,IAAIG,IAAItF,CAAM;AAE1C,UAAMwD,KAAUL,KAASrB,GACnB2B,KAAUF,KAASxB;AACzB,IAAA5J,IAAQqL,KAAUC;AAClB,UAAMvkB,MAAKimB,KAAKrD,IAAKwD,KAAKvD,KAAM/M;AAChC,QAAIza,IAAGuE;AAYP,QAXIqZ,MAAU,KACZ5d,KAAI6qB,KAAKtD,IAAKyD,KAAKxD,GACnBjjB,KAAIumB,KAAKvD,IAAK0D,KAAKzD,MAEnBxnB,MAAK6qB,KAAK5B,KAAU+B,KAAK9B,MAAWtL,GACpCrZ,MAAKumB,KAAK7B,KAAUgC,KAAK/B,MAAWtL,GACpCA,IAAQ,WAAWA,EAAM,QAAQ,CAAC,CAAC,IAErC,CAAChe,GAAGwH,GAAGoE,CAAC,IAAIuZ;AAAA,MACV,GAAGlB,CAAU,IAAIlf,EAAC,IAAI3E,EAAC,IAAIuE,EAAC;AAAA,IAAA,GAE1B8Y,MAAW3D,IAAU;AACvB,YAAM/D,KAA8B;AAAA,QAClC;AAAA,QACA8M,EAAiB7iB,IAAI+a,GAASL,CAAG;AAAA,QACjCmI,EAAiBrb,IAAIuT,GAASL,CAAG;AAAA,QACjCmI,EAAiBjX,IAAImP,GAASL,CAAG;AAAA,QACjCkO,KAAYxR,IAAO4G,IAAQhZ;AAAA,MAAA;AAE7B,aAAA2Y,EAASH,GAAUzH,EAAG,GACfA;AAAAA,IACT;AAAA,EAEF,WAAW,eAAe,KAAKkO,CAAU,GAAG;AAC1C,QAAIsH,GAAMC;AAoCV,QAnCIvH,MAAe,SACbvH,GAAY,KAAKgD,CAAM,IACzB6L,IAAO,CAACnU,GAAMA,GAAMA,GAAMA,CAAI,IAE9BmU,IAAO/F,GAAkB9F,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzB6L,IAAO,CAACpU,GAAMA,GAAMA,GAAMA,CAAI,IAE9BoU,IAAOhG,GAAkB7F,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,MAGC2C,GAAY,KAAKgD,CAAM,IACzB6L,IAAO,CAACnU,GAAMA,GAAMA,GAAMA,CAAI,IAE9BmU,IAAO7F,GAAoBhG,GAAQ;AAAA,MACjC,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzB6L,IAAO,CAACpU,GAAMA,GAAMA,GAAMA,CAAI,IAE9BoU,IAAO9F,GAAoB/F,GAAQ;AAAA,MACjC,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,IAGDwR,aAAgB3N,KAAc4N,aAAgB5N;AAEhD,aADYL,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAM,CAACkN,GAAKa,GAAKf,GAAKtC,CAAG,IAAImD,GACvB,CAACR,GAAKW,IAAKb,IAAKrC,EAAG,IAAIgD,GACvBG,KAAQf,MAAQxT,KAAQ2T,MAAQ3T,GAChCwU,KAAQH,MAAQrU,KAAQsU,OAAQtU,GAChCyU,KAAQnB,MAAQtT,KAAQyT,OAAQzT,GAChCwR,KAAYR,MAAQhR,KAAQoR,OAAQpR;AAC1C,QAAI,CAAC,CAAC8T,IAAIY,IAAId,IAAIhC,EAAM,GAAG,CAACqC,IAAIU,IAAIZ,IAAI/B,EAAM,CAAC,IAAI3J;AAAA,MACjD,CAACmL,GAAKa,GAAKf,GAAKtC,CAAG;AAAA,MACnB,CAAC2C,GAAKW,IAAKb,IAAKrC,EAAG;AAAA,MACnB;AAAA,IAAA;AAEF,IAAI3C,MACF,CAACmF,IAAIG,EAAE,IAAIG,GAAeN,IAAIG,IAAItF,CAAM;AAE1C,UAAMwD,KAAUL,KAASrB,GACnB2B,KAAUF,KAASxB;AACzB,IAAA5J,IAAQqL,KAAUC;AAClB,UAAMvkB,MAAKimB,KAAKrD,IAAKwD,KAAKvD,KAAM/M;AAChC,QAAIlW,IAAGrD;AASP,QARI0c,MAAU,KACZrZ,KAAIumB,KAAKvD,IAAK0D,KAAKzD,GACnBtmB,KAAIwqB,KAAKnE,IAAKoE,KAAKnE,MAEnBjjB,MAAKumB,KAAK7B,KAAUgC,KAAK/B,MAAWtL,GACpC1c,MAAKwqB,KAAKzC,KAAU0C,KAAKzC,MAAWtL,GACpCA,IAAQ,WAAWA,EAAM,QAAQ,CAAC,CAAC,IAEjCP,MAAW3D,IAAU;AACvB,YAAM/D,KAA8B;AAAA,QAClCkO;AAAA,QACA0H,KAAQvU,IAAOyL,EAAiBle,IAAG+V,CAAG;AAAA,QACtCkR,KAAQxU,IAAOyL,EAAiBvhB,IAAGoZ,CAAG;AAAA,QACtCmR,KAAQzU,IAAOyL,EAAiB9d,IAAG2V,CAAG;AAAA,QACtCkO,KAAYxR,IAAO4G,IAAQhZ;AAAA,MAAA;AAE7B,aAAA2Y,EAASH,GAAUzH,EAAG,GACfA;AAAAA,IACT;AACA,KAAA,EAAG/V,GAAGwH,GAAGoE,CAAC,IAAI+Y;AAAA,MACZ,GAAGV,CAAU,IAAItf,EAAC,IAAIrD,EAAC,IAAIyD,EAAC;AAAA,IAAA;AAAA,EAGhC,OAAO;AACL,QAAIinB,GAAMC;AAoCV,QAnCIhI,MAAe,SACbvH,GAAY,KAAKgD,CAAM,IACzBsM,IAAO,CAAC5U,GAAMA,GAAMA,GAAMA,CAAI,IAE9B4U,IAAOzG,GAAkB7F,GAAQ;AAAA,MAC/B,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzBsM,IAAO,CAAC7U,GAAMA,GAAMA,GAAMA,CAAI,IAE9B6U,IAAO1G,GAAkB5F,GAAQ;AAAA,MAC/B,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,MAGC2C,GAAY,KAAKgD,CAAM,IACzBsM,IAAO,CAAC5U,GAAMA,GAAMA,GAAMA,CAAI,IAE9B4U,IAAOvG,GAAoB/F,GAAQ;AAAA,MACjC,YAAAuE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,GAEC2C,GAAY,KAAKiD,CAAM,IACzBsM,IAAO,CAAC7U,GAAMA,GAAMA,GAAMA,CAAI,IAE9B6U,IAAOxG,GAAoB9F,GAAQ;AAAA,MACjC,YAAAsE;AAAA,MACA,QAAQlK;AAAA,IAAA,CACT,IAGDiS,aAAgBpO,KAAcqO,aAAgBrO;AAEhD,aADYL,GAAuBC,GAAUC,GAAQC,CAAQ;AAG/D,UAAM,CAACkN,GAAKxC,GAAKD,GAAK+D,CAAG,IAAIF,GACvB,CAACjB,GAAKvC,IAAKD,IAAK4D,EAAG,IAAIF,GACvBN,KAAQf,MAAQxT,KAAQ2T,MAAQ3T,GAChCgV,KAAQhE,MAAQhR,KAAQoR,OAAQpR,GAChCuR,KAAQR,MAAQ/Q,KAAQmR,OAAQnR,GAChCwR,KAAYsD,MAAQ9U,KAAQ+U,OAAQ/U,GACpC,CAAC,CAAC8T,IAAImB,IAAItD,IAAIC,EAAM,GAAG,CAACqC,IAAIiB,IAAInD,IAAIC,EAAM,CAAC,IAC/C3J;AAAA,MACE,CAACmL,GAAKxC,GAAKD,GAAK+D,CAAG;AAAA,MACnB,CAACnB,GAAKvC,IAAKD,IAAK4D,EAAG;AAAA,MACnB;AAAA,IAAA,GAEE9C,KAAUL,KAASrB,GACnB2B,KAAUF,KAASxB;AACzB,IAAA5J,IAAQqL,KAAUC;AAClB,QAAI3kB,IAAG4nB,IAAIC;AAWX,QAVIxO,MAAU,KACZrZ,KAAIumB,KAAKvD,IAAK0D,KAAKzD,GACnB2E,KAAKF,KAAK1E,IAAK2E,KAAK1E,GACpB4E,KAAKzD,KAAKpB,IAAKwB,KAAKvB,MAEpBjjB,MAAKumB,KAAK7B,KAAUgC,KAAK/B,MAAWtL,GACpCuO,MAAMF,KAAKhD,KAAUiD,KAAKhD,MAAWtL,GACrCwO,MAAMzD,KAAKM,KAAUF,KAAKG,MAAWtL,GACrCA,IAAQ,WAAWA,EAAM,QAAQ,CAAC,CAAC,IAEjCP,MAAW3D,IAAU;AACvB,YAAM/D,KAA8B;AAAA,QAClCkO;AAAA,QACA0H,KAAQvU,IAAOyL,EAAiBle,IAAG+V,CAAG;AAAA,QACtC0R,KAAQhV,IAAOyL,EAAiB0J,IAAI7R,CAAG;AAAA,QACvCiO,KAAQvR,IAAOyL,EAAiB2J,IAAI9R,CAAG;AAAA,QACvCkO,KAAYxR,IAAO4G,IAAQhZ;AAAA,MAAA;AAE7B,aAAA2Y,EAASH,GAAUzH,EAAG,GACfA;AAAAA,IACT;AACA,KAAA,EAAG/V,GAAGwH,GAAGoE,CAAC,IAAI+Y;AAAA,MACZ,GAAGV,CAAU,IAAItf,EAAC,IAAI4nB,EAAE,IAAIC,EAAE;AAAA,IAAA;AAAA,EAElC;AACA,QAAMzW,IAA8B;AAAA,IAClC;AAAA,IACA,KAAK,MAAM/V,CAAC;AAAA,IACZ,KAAK,MAAMwH,CAAC;AAAA,IACZ,KAAK,MAAMoE,CAAC;AAAA,IACZ,YAAYoS,IAAQhZ,GAAG,QAAQ,CAAC,CAAC;AAAA,EAAA;AAEnC,SAAA2Y,EAASH,GAAUzH,CAAG,GACfA;AACT,GCn6GM;AAAA,EACJ,YAAY0W;AAAAA,EACZ,SAASC;AAAAA,EAAA,KACTC;AAAAA,EACA,OAAOC;AAAAA,EACP,YAAYC;AACd,IAAIC,GACE7S,KAAY,WAGZ8S,KAAc,IAAI,OAAOzV,EAAW,GACpC0V,KAAa,IAAI,OAAOxV,EAAU;AAQjC,SAASyV,GACdC,GACAnP,IAAe,IACO;AACtB,MAAI,CAAC,MAAM,QAAQmP,CAAM;AACvB,UAAM,IAAI,UAAU,GAAGA,CAAM,mBAAmB;AAElD,QAAM,EAAE,gBAAAC,IAAiB,CAAA,EAAC,IAAMpP,GAC1BmI,IAAkB,CAAA;AACxB,SAAOgH,EAAO,UAAQ;AACpB,UAAME,IAAQF,EAAO,MAAA;AACrB,QAAI,CAAC,MAAM,QAAQE,CAAK;AACtB,YAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,UAAM,CAAChhB,GAAMuG,CAAK,IAAIya;AAEtB,QAAIhhB,MAASqgB;AACX;AAGF,QAAI9Z,MAAUsG,IAAQ;AACpB,YAAM,CAACoU,GAAYlH,CAAI,IAAI8G,GAAsBC,GAAQnP,CAAG;AAC5D,MAAAmP,IAASG,GACLlH,KACFD,EAAM,KAAKC,CAAI;AAAA,IAEnB,WAAW/Z,MAASwgB;AAClB,UAAIja,EAAM,WAAW,IAAI,GAAG;AAC1B,YAAIwT;AACJ,QAAI,OAAO,OAAOgH,GAAgBxa,CAAK,IACrCwT,IAAOgH,EAAexa,CAAK,IAClB,OAAOwa,EAAe,YAAa,eAC5ChH,IAAOgH,EAAe,SAASxa,CAAK,IAElCwT,KACFD,EAAM,KAAKC,CAAI;AAAA,MAEnB,OAAWxT,KACTuT,EAAM,KAAKvT,CAAK;AAAA,EAGtB;AACA,MAAI2a,IAAiB;AACrB,MAAIpH,EAAM,SAAS,GAAG;AACpB,UAAMqH,IAAYrH,EAAMA,EAAM,SAAS,CAAC;AACxC,IAAAoH,IAAiBE,GAAQD,CAAS;AAAA,EACpC;AACA,MAAIE,IAAgB;AACpB,WAAStH,KAAQD,GAAO;AAEtB,QADAC,IAAOA,EAAK,KAAA,GACR6G,GAAW,KAAK7G,CAAI,GAAG;AAEzB,YAAMuH,IAAeC,GAAWxH,GAAMpI,CAAG;AACzC,MAAI1H,EAASqX,CAAY,MACnBJ,IACEE,GAAQE,CAAY,MACtBD,IAAgBC,KAGlBD,IAAgBC;AAAA,IAGtB,MAAA,CAAWX,GAAY,KAAK5G,CAAI,KAC9BA,IAAOyH,GAAQzH,GAAMpI,CAAG,GACpBuP,IACEE,GAAQrH,CAAI,MACdsH,IAAgBtH,KAGlBsH,IAAgBtH,KAGlBA,KACA,CAAC,gDAAgD,KAAKA,CAAI,MAEtDmH,IACEE,GAAQrH,CAAI,MACdsH,IAAgBtH,KAGlBsH,IAAgBtH;AAGpB,QAAIsH;AACF;AAAA,EAEJ;AACA,SAAO,CAACP,GAAQO,CAAa;AAC/B;AAQO,SAASI,GACdX,GACAnP,IAAe,IACQ;AACvB,QAAMhI,IAAgB,CAAA;AACtB,SAAOmX,EAAO,UAAQ;AACpB,UAAME,IAAQF,EAAO,MAAA,GACf,CAAC9gB,IAAO,IAAIuG,IAAQ,EAAE,IAAIya;AAChC,QAAIza,MAAUsG,IAAQ;AACpB,YAAM,CAACoU,GAAYI,CAAa,IAAIR,GAAsBC,GAAQnP,CAAG;AACrE,UAAI,CAAC0P;AACH,eAAO,IAAI7P,EAAA;AAEb,MAAAsP,IAASG,GACTtX,EAAI,KAAK0X,CAAa;AAAA,IACxB;AACE,cAAQrhB,GAAA;AAAA,QACN,KAAKqgB,IAAa;AAChB,UAAI1W,EAAI,UACYA,EAAIA,EAAI,SAAS,CAAC,MAClB,MAChBA,EAAI,OAAO,IAAI,GAAGpD,CAAK,IAKzBoD,EAAI,KAAKpD,CAAK;AAEhB;AAAA,QACF;AAAA,QACA,KAAKka,IAAS;AACZ,cAAI9W,EAAI,QAAQ;AACd,kBAAMwX,IAAYxX,EAAIA,EAAI,SAAS,CAAC;AACpC,YACEM,EAASkX,CAAS,KAClB,CAACA,EAAU,SAAS,GAAG,KACvBA,MAAc,OAEdxX,EAAI,KAAKpD,CAAK;AAAA,UAElB;AACA;AAAA,QACF;AAAA,QACA;AACE,UAAIvG,MAASsgB,MAAWtgB,MAASugB,MAC/B5W,EAAI,KAAKpD,CAAK;AAAA,MAElB;AAAA,EAGN;AACA,SAAOoD;AACT;AAQO,SAAS4X,GACdhb,GACAoL,IAAe,IACM;AACrB,QAAM,EAAE,QAAAN,IAAS,GAAA,IAAOM;AACxB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,QAAI,CAACqa,GAAW,KAAKra,CAAK,KAAK8K,MAAWzD;AACxC,aAAOrH;AAET,IAAAA,IAAQA,EAAM,KAAA;AAAA,EAChB;AACE,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACRA,IAEFA,EAAa;AAEtB,QAAMqI,IAASxqB,GAAS,EAAE,KAAKiQ,GAAO,GAChCmb,IAASD,GAAYX,GAAQnP,CAAG;AACtC,MAAI,MAAM,QAAQ+P,CAAM,GAAG;AACzB,QAAIC,IAAQD,EAAO,KAAK,EAAE;AAC1B,WAAIf,GAAY,KAAKgB,CAAK,MACxBA,IAAQH,GAAQG,GAAOhQ,CAAG,IAE5BJ,EAASH,GAAUuQ,CAAK,GACjBA;AAAA,EACT;AACE,WAAApQ,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEf;AAQO,MAAMoQ,KAAS,CAACrb,GAAeoL,IAAe,OAAe;AAClE,QAAM0P,IAAgBE,GAAWhb,GAAOoL,CAAG;AAC3C,SAAI1H,EAASoX,CAAa,IACjBA,IAEF;AACT;ACzPA,SAASQ,GAAiBpuB,GAAED,GAAE;AAAC,SAAM,CAACC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,GAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,GAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,IAAEC,EAAE,CAAC,IAAED,EAAE,CAAC,CAAC;AAAC;AAAC,MAAMC,KAAE,CAAC,mBAAiB,sBAAoB,qBAAmB,qBAAmB,oBAAmB,sBAAoB,sBAAoB,uBAAqB,iBAAiB;AACtT;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,SAASquB,GAAWtuB,GAAE;AAAC,SAAOquB,GAAiBpuB,IAAED,CAAC;AAAC;AAAC,MAAMA,KAAE,CAAC,oBAAmB,sBAAoB,sBAAoB,qBAAmB,oBAAkB,uBAAqB,uBAAqB,sBAAoB,kBAAiB;AAC/O;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,SAASuuB,GAAWtuB,GAAE;AAAC,SAAOouB,GAAiBruB,IAAEC,CAAC;AAAC;AACtD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASG,SAASuuB,GAAYvuB,GAAE;AAAC,MAAID,IAAEC,EAAE,CAAC,IAAE;AAAI,QAAMiM,IAAEjM,EAAE,CAAC,IAAE,KAAIK,IAAEL,EAAE,CAAC,IAAE;AAAI,SAAOD,IAAE,MAAIA,KAAG,MAAK,CAACyuB,GAAoB,GAAEzuB,GAAEkM,GAAE5L,CAAC,GAAEmuB,GAAoB,GAAEzuB,GAAEkM,GAAE5L,CAAC,GAAEmuB,GAAoB,GAAEzuB,GAAEkM,GAAE5L,CAAC,CAAC;AAAC;AAAC,SAASmuB,GAAoBxuB,GAAED,GAAEkM,GAAE5L,GAAE;AAAC,QAAMP,KAAGE,IAAED,IAAE,MAAI;AAAG,SAAOM,IAAE4L,IAAE,KAAK,IAAI5L,GAAE,IAAEA,CAAC,IAAE,KAAK,IAAI,IAAG,KAAK,IAAIP,IAAE,GAAE,IAAEA,GAAE,CAAC,CAAC;AAAC;AACzS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASG,SAAS2uB,GAAYzuB,GAAE;AAAC,QAAMD,IAAEC,EAAE,CAAC,GAAEiM,IAAEjM,EAAE,CAAC,IAAE,KAAIK,IAAEL,EAAE,CAAC,IAAE;AAAI,MAAGiM,IAAE5L,KAAG,GAAE;AAAC,UAAML,IAAEiM,KAAGA,IAAE5L;AAAG,WAAM,CAACL,GAAEA,GAAEA,CAAC;AAAA,EAAC;AAAC,QAAMF,IAAEyuB,GAAY,CAACxuB,GAAE,KAAI,EAAE,CAAC,GAAE2B,IAAE,IAAEuK,IAAE5L;AAAE,SAAM,CAACP,EAAE,CAAC,IAAE4B,IAAEuK,GAAEnM,EAAE,CAAC,IAAE4B,IAAEuK,GAAEnM,EAAE,CAAC,IAAE4B,IAAEuK,CAAC;AAAC;AACjL;AAAA;AAAA;AAAA;AAGG,SAASyiB,GAAW1uB,GAAE;AAAC,QAAMD,IAAEC,EAAE,CAAC,IAAE,KAAK,KAAG;AAAI,SAAM,CAACA,EAAE,CAAC,GAAEA,EAAE,CAAC,IAAE,KAAK,IAAID,CAAC,GAAEC,EAAE,CAAC,IAAE,KAAK,IAAID,CAAC,CAAC;AAAC;AACjG;AAAA;AAAA;AAAA;AAGG,SAAS4uB,GAAW3uB,GAAE;AAAC,QAAMD,IAAE,MAAI,KAAK,MAAMC,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,IAAE,KAAK;AAAG,SAAM,CAACA,EAAE,CAAC,GAAE,KAAK,KAAK,KAAK,IAAIA,EAAE,CAAC,GAAE,CAAC,IAAE,KAAK,IAAIA,EAAE,CAAC,GAAE,CAAC,CAAC,GAAED,KAAG,IAAEA,IAAEA,IAAE,GAAG;AAAC;AAAC,MAAMkM,KAAE,CAAC,SAAM,QAAM,GAAE,SAAM,MAAK;AAC7K;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,SAAS2iB,GAAW5uB,GAAE;AAAC,QAAMD,IAAE,mBAASM,IAAE,MAAI,OAAMP,KAAGE,EAAE,CAAC,IAAE,MAAI,KAAI0B,IAAE1B,EAAE,CAAC,IAAE,MAAIF,GAAEK,IAAEL,IAAEE,EAAE,CAAC,IAAE;AAAI,SAAM,EAAE,KAAK,IAAI0B,GAAE,CAAC,IAAErB,IAAE,KAAK,IAAIqB,GAAE,CAAC,KAAG,MAAIA,IAAE,MAAI3B,KAAGkM,GAAE,CAAC,IAAGjM,EAAE,CAAC,IAAE,IAAE,KAAK,KAAKA,EAAE,CAAC,IAAE,MAAI,KAAI,CAAC,IAAEA,EAAE,CAAC,IAAED,KAAGkM,GAAE,CAAC,IAAG,KAAK,IAAI9L,GAAE,CAAC,IAAEE,IAAE,KAAK,IAAIF,GAAE,CAAC,KAAG,MAAIA,IAAE,MAAIJ,KAAGkM,GAAE,CAAC,CAAC;AAAC;AAC3P;AAAA;AAAA;AAAA;AAAA;AAIG,SAAS4iB,GAAe7uB,GAAE;AAAC,QAAMD,IAAEC,EAAE,CAAC,IAAE,KAAK,KAAG;AAAI,SAAM,CAACA,EAAE,CAAC,GAAEA,EAAE,CAAC,IAAE,KAAK,IAAID,CAAC,GAAEC,EAAE,CAAC,IAAE,KAAK,IAAID,CAAC,CAAC;AAAC;AACrG;AAAA;AAAA;AAAA;AAAA;AAIG,SAAS+uB,GAAe9uB,GAAE;AAAC,QAAMD,IAAE,MAAI,KAAK,MAAMC,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,IAAE,KAAK;AAAG,SAAM,CAACA,EAAE,CAAC,GAAE,KAAK,KAAKA,EAAE,CAAC,KAAG,IAAEA,EAAE,CAAC,KAAG,CAAC,GAAED,KAAG,IAAEA,IAAEA,IAAE,GAAG;AAAC;AAAC,MAAMM,KAAE,CAAC,oBAAmB,qBAAmB,oBAAkB,qBAAmB,mBAAkB,qBAAmB,qBAAmB,qBAAmB,kBAAkB,GAAEP,KAAE,CAAC,GAAE,oBAAkB,oBAAkB,GAAE,qBAAmB,qBAAmB,GAAE,qBAAmB,mBAAmB;AACza;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAASivB,GAAa/uB,GAAE;AAAC,QAAMD,IAAEquB,GAAiBtuB,IAAEE,CAAC;AAAE,SAAOouB,GAAiB/tB,IAAE,CAACN,EAAE,CAAC,KAAG,GAAEA,EAAE,CAAC,KAAG,GAAEA,EAAE,CAAC,KAAG,CAAC,CAAC;AAAC;AAC3G;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,SAASivB,GAAWhvB,GAAE;AAAC,QAAMD,IAAEkvB,GAAUjvB,EAAE,CAAC,IAAEiM,GAAE,CAAC,CAAC,GAAE5L,IAAE4uB,GAAUjvB,EAAE,CAAC,IAAEiM,GAAE,CAAC,CAAC;AAAE,SAAM,CAAC,MAAI5L,IAAE,IAAG,OAAKN,IAAEM,IAAG,OAAKA,IAAE4uB,GAAUjvB,EAAE,CAAC,IAAEiM,GAAE,CAAC,CAAC,EAAE;AAAC;AAAC,MAAMvK,KAAE,MAAI,OAAMvB,KAAE,QAAM;AAAG,SAAS8uB,GAAUjvB,GAAE;AAAC,SAAOA,IAAE0B,KAAE,KAAK,KAAK1B,CAAC,KAAGG,KAAEH,IAAE,MAAI;AAAG;AAAC,MAAM8E,KAAE,CAAC,mBAAiB,oBAAkB,qBAAmB,oBAAkB,oBAAkB,oBAAkB,oBAAkB,oBAAkB,kBAAiB,GAAExE,KAAE,CAAC,mBAAiB,oBAAkB,qBAAmB,oBAAmB,mBAAkB,mBAAiB,oBAAkB,oBAAkB,mBAAkB;AAC/iB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,SAAS4uB,GAAalvB,GAAE;AAAC,QAAMD,IAAEquB,GAAiBtpB,IAAE9E,CAAC;AAAE,SAAOouB,GAAiB9tB,IAAE,CAAC,KAAK,KAAKP,EAAE,CAAC,CAAC,GAAE,KAAK,KAAKA,EAAE,CAAC,CAAC,GAAE,KAAK,KAAKA,EAAE,CAAC,CAAC,CAAC,CAAC;AAAC;AAAC,MAAM0B,KAAE,CAAC,WAAS,UAAS,WAAS,UAAS,WAAS,UAAS,oBAAkB,mBAAkB,SAAO,UAAS,SAAO,UAAS,WAAS,UAAS,iBAAgB;AACzS;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,MAAME,KAAE,CAAC,SAAO,QAAO,UAAQ,QAAO,SAAO,QAAO,SAAO,OAAM,QAAM,OAAM,MAAI,OAAM,QAAM,QAAO,SAAO,QAAO,SAAO,MAAM;AAClI;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,SAASwtB,GAAcnvB,GAAE;AAAC,SAAOouB,GAAiBzsB,IAAE3B,CAAC;AAAC;AAAC,MAAMO,KAAE,CAAC,oBAAmB,sBAAoB,sBAAoB,qBAAmB,oBAAmB,qBAAmB,GAAE,GAAE,kBAAkB;AAC7M;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,MAAM2E,KAAE,CAAC,UAAQ,QAAO,UAAQ,QAAO,UAAQ,QAAO,UAAQ,QAAO,UAAQ,QAAO,QAAM,QAAO,QAAM,SAAQ,UAAQ,SAAQ,UAAQ,OAAO;AACjJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAKG,MAAMC,KAAE,CAAC,QAAM,MAAK,OAAK,KAAI,QAAM,MAAK,UAAQ,QAAO,UAAQ,QAAO,QAAM,QAAO,MAAI,OAAM,QAAM,OAAM,MAAI,GAAG;AACnH;AAAA;AAAA;AAAA;AAGG,SAASiqB,GAAgBpvB,GAAE;AAAC,SAAOouB,GAAiBjpB,IAAEnF,CAAC;AAAC;AAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,MAAMkI,KAAE,kBAAiB6D,KAAE;AAAiB,SAASsjB,GAAiBrvB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,IAAEF,KAAEhM,KAAGmI,KAAE,KAAK,IAAI+D,GAAE,IAAG,KAAG/D,KAAE,MAAI,MAAIlI;AAAC;AACvJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASG,SAASsvB,GAAStvB,GAAE;AAAC,SAAM,CAACuvB,GAAiBvvB,EAAE,CAAC,CAAC,GAAEuvB,GAAiBvvB,EAAE,CAAC,CAAC,GAAEuvB,GAAiBvvB,EAAE,CAAC,CAAC,CAAC;AAAC;AAAC,SAASuvB,GAAiBvvB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,IAAE,WAASlM,KAAG,QAAM,KAAK,IAAIkM,GAAE,IAAE,GAAG,IAAE,SAAM,QAAMjM;AAAC;AAC3N;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,SAASwvB,GAAOxvB,GAAE;AAAC,SAAOsvB,GAAStvB,CAAC;AAAC;AACxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOG,MAAM2H,KAAE,IAAE;AAAI,SAAS8nB,GAAqBzvB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,KAAGtE,KAAE5H,IAAE,KAAK,IAAIkM,GAAE,IAAE,GAAG,IAAE,KAAGjM;AAAC;AACrH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,SAAS0vB,GAAmB1vB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOD,IAAE,KAAK,IAAIkM,GAAE,MAAI,GAAG;AAAC;AAC7F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOG,MAAM0jB,KAAE,kBAAiB3kB,KAAE;AAAiB,SAAS4kB,GAAiB5vB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,IAAE,MAAIjB,KAAEhL,IAAE,MAAID,IAAE,KAAK,KAAKkM,IAAE0jB,KAAE,KAAGA,IAAE,IAAE,IAAG;AAAC;AAAC,MAAMzoB,KAAE,CAAC,WAAS,UAAS,WAAS,WAAU,WAAS,WAAU,WAAS,UAAS,mBAAiB,UAAQ,WAAU,GAAE,WAAS,WAAU,kBAAkB;AACzT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,SAAS2oB,GAAS7vB,GAAE;AAAC,SAAM,CAAC8vB,GAAiB9vB,EAAE,CAAC,CAAC,GAAE8vB,GAAiB9vB,EAAE,CAAC,CAAC,GAAE8vB,GAAiB9vB,EAAE,CAAC,CAAC,CAAC;AAAC;AAAC,SAAS8vB,GAAiB9vB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,KAAG,UAAOjM,IAAE,QAAMD,IAAE,KAAK,KAAKkM,IAAE,SAAM,OAAM,GAAG;AAAC;AACrN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,SAAS8jB,GAAO/vB,GAAE;AAAC,SAAO6vB,GAAS7vB,CAAC;AAAC;AAAC,MAAMwE,KAAE,CAAC,SAAO,SAAQ,SAAO,QAAO,SAAO,SAAQ,QAAM,QAAO,SAAO,QAAO,SAAO,SAAQ,GAAE,QAAM,QAAO,UAAQ,OAAO;AACtK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOG,SAASwrB,GAAchwB,GAAE;AAAC,SAAOouB,GAAiB5pB,IAAExE,CAAC;AAAC;AACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOG,MAAMyG,KAAE,KAAG;AAAI,SAASwpB,GAAqBjwB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOiM,KAAGxF,KAAEzG,IAAE,KAAGD,IAAE,KAAK,IAAIkM,GAAE,GAAG;AAAC;AAAC,MAAMjJ,KAAE,CAAC,oBAAkB,qBAAmB,oBAAkB,oBAAkB,mBAAiB,mBAAkB,GAAE,GAAE,kBAAiB;AAC/P;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOG,SAASktB,GAAmBlwB,GAAE;AAAC,QAAMD,IAAEC,IAAE,IAAE,KAAG,GAAEiM,IAAE,KAAK,IAAIjM,CAAC;AAAE,SAAOD,IAAE,KAAK,IAAIkM,GAAE,MAAI,GAAG;AAAC;AAAC,MAAMlJ,KAAE,CAAC,SAAO,QAAO,SAAO,SAAQ,SAAO,QAAO,SAAO,SAAQ,UAAQ,SAAQ,SAAO,SAAQ,QAAM,SAAQ,SAAO,SAAQ,UAAQ,OAAO;AAC5O;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaG,MAAMgE,KAAE,CAAC,SAAO,SAAQ,QAAM,QAAO,QAAM,OAAM,QAAM,QAAO,SAAO,QAAO,QAAM,QAAO,OAAK,QAAO,QAAM,QAAO,UAAQ,OAAO;AACpI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMG,SAASopB,GAAgBnwB,GAAE;AAAC,SAAOouB,GAAiBrnB,IAAE/G,CAAC;AAAC;AAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAaG,SAASowB,GAAYpwB,GAAE;AAAC,QAAMD,IAAEC,EAAE,CAAC,GAAEiM,IAAEjM,EAAE,CAAC,GAAEK,IAAEL,EAAE,CAAC,GAAEF,IAAE,KAAK,IAAIC,GAAEkM,GAAE5L,CAAC,GAAEqB,IAAE,KAAK,IAAI3B,GAAEkM,GAAE5L,CAAC,GAAEF,KAAGuB,IAAE5B,KAAG,GAAEgF,IAAEhF,IAAE4B;AAAE,MAAIpB,IAAE,OAAO,KAAImB,IAAE;AAAE,MAAO,KAAK,MAAM,MAAIqD,CAAC,MAApB,GAAsB;AAAC,UAAM9E,IAAE,KAAK,MAAM,MAAIG,CAAC;AAAE,YAAOsB,IAAMzB,MAAJ,KAAaA,MAAN,MAAQ,KAAGF,IAAEK,KAAG,KAAK,IAAIA,GAAE,IAAEA,CAAC,GAAEL,GAAC;AAAA,MAAE,KAAKC;AAAE,QAAAO,KAAG2L,IAAE5L,KAAGyE,KAAGmH,IAAE5L,IAAE,IAAE;AAAG;AAAA,MAAM,KAAK4L;AAAE,QAAA3L,KAAGD,IAAEN,KAAG+E,IAAE;AAAE;AAAA,MAAM,KAAKzE;AAAE,QAAAC,KAAGP,IAAEkM,KAAGnH,IAAE;AAAA,IAAC;AAAC,IAAAxE,KAAG;AAAA,EAAE;AAAC,SAAOmB,IAAE,MAAInB,KAAG,KAAImB,IAAE,KAAK,IAAIA,CAAC,IAAGnB,KAAG,QAAMA,KAAG,MAAK,CAACA,GAAE,MAAImB,GAAE,MAAItB,CAAC;AAAC;AAAC,SAASkwB,GAAYrwB,GAAE;AAAC,QAAMD,IAAEC,EAAE,CAAC,GAAEiM,IAAEjM,EAAE,CAAC,GAAEK,IAAEL,EAAE,CAAC,GAAEF,IAAE,KAAK,IAAIC,GAAEkM,GAAE5L,CAAC,GAAEqB,IAAE,KAAK,IAAI3B,GAAEkM,GAAE5L,CAAC;AAAE,MAAIF,IAAE,OAAO;AAAI,QAAM2E,IAAEhF,IAAE4B;AAAE,MAAOoD,MAAJ,GAAM;AAAC,YAAOhF,GAAC;AAAA,MAAE,KAAKC;AAAE,QAAAI,KAAG8L,IAAE5L,KAAGyE,KAAGmH,IAAE5L,IAAE,IAAE;AAAG;AAAA,MAAM,KAAK4L;AAAE,QAAA9L,KAAGE,IAAEN,KAAG+E,IAAE;AAAE;AAAA,MAAM,KAAKzE;AAAE,QAAAF,KAAGJ,IAAEkM,KAAGnH,IAAE;AAAA,IAAC;AAAC,IAAA3E,KAAG;AAAA,EAAE;AAAC,SAAOA,KAAG,QAAMA,KAAG,MAAKA;AAAC;AAAC,SAASmwB,GAAgBtwB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAE8vB,GAAS9vB,CAAC,GAAEA,IAAEowB,GAAgBpwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASwwB,GAAgBvwB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEqvB,GAAgBrvB,CAAC,GAAEA,IAAEuvB,GAASvvB,CAAC,GAAEA;AAAC;AAAC,SAASywB,GAAexwB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEwuB,GAAYxuB,CAAC,GAAEA,IAAE8vB,GAAS9vB,CAAC,GAAEA,IAAEowB,GAAgBpwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAAS0wB,GAAezwB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEqvB,GAAgBrvB,CAAC,GAAEA,IAAEuvB,GAASvvB,CAAC,GAAEA,IAAEqwB,GAAYrwB,CAAC,GAAEA;AAAC;AAAC,SAAS2wB,GAAe1wB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAE0uB,GAAY1uB,CAAC,GAAEA,IAAE8vB,GAAS9vB,CAAC,GAAEA,IAAEowB,GAAgBpwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAAS4wB,GAAe3wB,GAAE;AAAC,MAAID,IAAEC;AAAE,EAAAD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEqvB,GAAgBrvB,CAAC;AAAE,QAAMkM,IAAEqjB,GAASvvB,CAAC,GAAEM,IAAE,KAAK,IAAI4L,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC,GAAEnM,IAAE,IAAE,KAAK,IAAImM,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAEA,EAAE,CAAC,CAAC;AAAE,SAAM,CAACokB,GAAYpkB,CAAC,GAAE,MAAI5L,GAAE,MAAIP,CAAC;AAAC;AAAC,SAAS8wB,GAAe5wB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAE6uB,GAAW7uB,CAAC,GAAEA;AAAC;AAAC,SAAS8wB,GAAe7wB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEivB,GAAWjvB,CAAC,GAAEA;AAAC;AAAC,SAAS+wB,GAAe9wB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAE2uB,GAAW3uB,CAAC,GAAEA,IAAE6uB,GAAW7uB,CAAC,GAAEA;AAAC;AAAC,SAASgxB,GAAe/wB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEivB,GAAWjvB,CAAC,GAAEA,IAAE4uB,GAAW5uB,CAAC,GAAEA;AAAC;AAAC,SAASixB,GAAiBhxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEgvB,GAAahvB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASkxB,GAAiBjxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEmvB,GAAanvB,CAAC,GAAEA;AAAC;AAAC,SAASmxB,GAAiBlxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAE8uB,GAAe9uB,CAAC,GAAEA,IAAEgvB,GAAahvB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASoxB,GAAiBnxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEmvB,GAAanvB,CAAC,GAAEA,IAAE+uB,GAAe/uB,CAAC,GAAEA;AAAC;AAAC,SAASqxB,GAAoBpxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEowB,GAAgBpwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASsxB,GAAoBrxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEqvB,GAAgBrvB,CAAC,GAAEA;AAAC;AAAC,SAASuxB,GAAmBtxB,GAAE;AAAC,MAAID,IAAEC;AAAA,EACloE;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAOA,MAAIiM;AAAE,SAAOlM,IAAE,CAACmwB,IAAoBjkB,IAAElM,GAAG,CAAC,CAAC,GAAEmwB,GAAmBjkB,EAAE,CAAC,CAAC,GAAEikB,GAAmBjkB,EAAE,CAAC,CAAC,CAAC,GAAElM,IAAEquB,GAAiBrrB,IAAEhD,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASwxB,GAAmBvxB,GAAE;AAAC,MAAID,IAAEC;AAAE,MAAIiM;AAAE,SAAOlM,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEquB,GAAiBlpB,IAAEnF,CAAC,GAAEA,IAAE,CAAC2vB,IAAoBzjB,IAAElM,GAAG,CAAC,CAAC,GAAE2vB,GAAmBzjB,EAAE,CAAC,CAAC,GAAEyjB,GAAmBzjB,EAAE,CAAC,CAAC,CAAC,GAAElM;AAAC;AAAC,SAASyxB,GAAcxxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEgwB,GAAOhwB,CAAC,GAAEA,IAAEiwB,GAAcjwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAAS0xB,GAAczxB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEovB,GAAcpvB,CAAC,GAAEA,IAAEyvB,GAAOzvB,CAAC,GAAEA;AAAC;AAAC,SAAS2xB,GAAkB1xB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEiwB,GAAcjwB,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAAS4xB,GAAkB3xB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEovB,GAAcpvB,CAAC,GAAEA;AAAC;AAAC,SAAS6xB,GAAoB5xB,GAAE;AAAC,MAAID,IAAEC;AAAE,MAAIiM;AAAE,SAAOlM,IAAE,CAAC6vB,IAAkB3jB,IAAElM,GAAG,CAAC,CAAC,GAAE6vB,GAAiB3jB,EAAE,CAAC,CAAC,GAAE2jB,GAAiB3jB,EAAE,CAAC,CAAC,CAAC,GAAElM,IAAEquB,GAAiBlnB,IAAEnH,CAAC,GAAEA,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAAS8xB,GAAoB7xB,GAAE;AAAC,MAAID,IAAEC;AAAE,MAAIiM;AAAE,SAAOlM,IAAEsuB,GAAWtuB,CAAC,GAAEA,IAAEquB,GAAiB3sB,IAAE1B,CAAC,GAAEA,IAAE,CAACsvB,IAAkBpjB,IAAElM,GAAG,CAAC,CAAC,GAAEsvB,GAAiBpjB,EAAE,CAAC,CAAC,GAAEojB,GAAiBpjB,EAAE,CAAC,CAAC,CAAC,GAAElM;AAAC;AAAC,SAAS+xB,GAAwB9xB,GAAE;AAAC,MAAID,IAAEC;AAAE,MAAIiM;AAAE,SAAOlM,IAAE,CAACkwB,IAAsBhkB,IAAElM,GAAG,CAAC,CAAC,GAAEkwB,GAAqBhkB,EAAE,CAAC,CAAC,GAAEgkB,GAAqBhkB,EAAE,CAAC,CAAC,CAAC,GAAElM,IAAEquB,GAAiBprB,IAAEjD,CAAC,GAAEA;AAAC;AAAC,SAASgyB,GAAoB/xB,GAAE;AAAC,MAAID,IAAEC;AAAE,MAAIiM;AAAE,SAAOlM,IAAEquB,GAAiB7tB,IAAER,CAAC,GAAEA,IAAE,CAAC0vB,IAAsBxjB,IAAElM,GAAG,CAAC,CAAC,GAAE0vB,GAAqBxjB,EAAE,CAAC,CAAC,GAAEwjB,GAAqBxjB,EAAE,CAAC,CAAC,CAAC,GAAElM;AAAC;AAAC,SAASiyB,GAAmBhyB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEuuB,GAAWvuB,CAAC,GAAEA;AAAC;AAAC,SAASkyB,GAAmBjyB,GAAE;AAAC,MAAID,IAAEC;AAAE,SAAOD,IAAEsuB,GAAWtuB,CAAC,GAAEA;AAAC;AAAyC,SAASmyB,GAAQlyB,GAAE;AAAC,SAAOA,EAAE,CAAC,KAAG,SAAOA,EAAE,CAAC,KAAG,UAAQA,EAAE,CAAC,KAAG,SAAOA,EAAE,CAAC,KAAG,UAAQA,EAAE,CAAC,KAAG,SAAOA,EAAE,CAAC,KAAG;AAAM;AAAC,SAASmyB,GAAKnyB,GAAE;AAAC,SAAM,CAACA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,GAAEA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,GAAEA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,IAAE,IAAE,IAAEA,EAAE,CAAC,CAAC;AAAC;AAW/qD;AAAA;AAAA;AAEG,SAASoyB,GAAiBpyB,GAAED,GAAEkM,GAAE;AAAC,QAAM5L,IAAEL,EAAE,CAAC,GAAEF,IAAEE,EAAE,CAAC;AAAE,MAAI0B,IAAE3B,EAAEC,CAAC;AAAE,QAAMG,IAAEJ,EAAE,CAACM,GAAE,GAAEP,CAAC,CAAC;AAAE,WAAQE,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,QAAGA,IAAE,GAAE;AAAC,YAAMA,IAAEiM,EAAEvK,CAAC;AAAE,MAAA1B,EAAE,CAAC,IAAEK,GAAEL,EAAE,CAAC,IAAEF,GAAE4B,IAAE3B,EAAEC,CAAC;AAAA,IAAC;AAAC,UAAM8E,IAAEutB,GAAYlyB,GAAEuB,CAAC;AAAE,QAAG,CAACoD,EAAE;AAAM,IAAApD,IAAEoD;AAAA,EAAC;AAAC,SAAOqtB,GAAKzwB,CAAC;AAAC;AAAC,SAAS2wB,GAAYryB,GAAED,GAAE;AAAC,MAAIkM,IAAE,OAAI5L,IAAE;AAAK,QAAMP,IAAE,CAAC,GAAE,GAAE,CAAC;AAAE,WAAQ4B,IAAE,GAAEA,IAAE,GAAEA,KAAI;AAAC,UAAMvB,IAAEH,EAAE0B,CAAC,GAAEoD,IAAE/E,EAAE2B,CAAC,IAAEvB;AAAE,IAAAL,EAAE4B,CAAC,IAAEoD;AAAE,UAAMxE,IAAE,GAAEmB,IAAE;AAAE,QAAGqD,GAAE;AAAC,YAAM9E,IAAE,IAAE8E,GAAE/E,KAAGO,IAAEH,KAAGH,GAAEF,KAAG2B,IAAEtB,KAAGH;AAAE,MAAAK,IAAE,KAAK,IAAI,KAAK,IAAIN,GAAED,CAAC,GAAEO,CAAC,GAAE4L,IAAE,KAAK,IAAI,KAAK,IAAIlM,GAAED,CAAC,GAAEmM,CAAC;AAAA,IAAC,WAAS9L,IAAEG,KAAGH,IAAEsB,EAAE,QAAM;AAAA,EAAE;AAAC,SAAM,EAAEpB,IAAE4L,KAAGA,IAAE,OAAK5L,IAAE,MAAIA,IAAE4L,IAAG,CAAC,CAAC,SAAS5L,CAAC,KAAG,CAACL,EAAE,CAAC,IAAEF,EAAE,CAAC,IAAEO,GAAEL,EAAE,CAAC,IAAEF,EAAE,CAAC,IAAEO,GAAEL,EAAE,CAAC,IAAEF,EAAE,CAAC,IAAEO,CAAC;AAAE;AAAC,MAAM0J,KAAE,EAAC,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,cAAa,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,GAAE,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,GAAE,GAAE,CAAC,GAAE,gBAAe,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,GAAE,GAAE,GAAG,GAAE,YAAW,CAAC,KAAI,IAAG,GAAG,GAAE,OAAM,CAAC,KAAI,IAAG,EAAE,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,IAAG,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,CAAC,GAAE,WAAU,CAAC,KAAI,KAAI,EAAE,GAAE,OAAM,CAAC,KAAI,KAAI,EAAE,GAAE,gBAAe,CAAC,KAAI,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,IAAG,EAAE,GAAE,MAAK,CAAC,GAAE,KAAI,GAAG,GAAE,UAAS,CAAC,GAAE,GAAE,GAAG,GAAE,UAAS,CAAC,GAAE,KAAI,GAAG,GAAE,eAAc,CAAC,KAAI,KAAI,EAAE,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,GAAE,KAAI,CAAC,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,GAAE,GAAG,GAAE,gBAAe,CAAC,IAAG,KAAI,EAAE,GAAE,YAAW,CAAC,KAAI,KAAI,CAAC,GAAE,YAAW,CAAC,KAAI,IAAG,GAAG,GAAE,SAAQ,CAAC,KAAI,GAAE,CAAC,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,cAAa,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,IAAG,IAAG,GAAG,GAAE,eAAc,CAAC,IAAG,IAAG,EAAE,GAAE,eAAc,CAAC,IAAG,IAAG,EAAE,GAAE,eAAc,CAAC,GAAE,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,GAAE,GAAG,GAAE,UAAS,CAAC,KAAI,IAAG,GAAG,GAAE,aAAY,CAAC,GAAE,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,IAAG,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,IAAG,EAAE,GAAE,aAAY,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,IAAG,KAAI,EAAE,GAAE,SAAQ,CAAC,KAAI,GAAE,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,KAAI,KAAI,CAAC,GAAE,WAAU,CAAC,KAAI,KAAI,EAAE,GAAE,MAAK,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,GAAE,KAAI,CAAC,GAAE,aAAY,CAAC,KAAI,KAAI,EAAE,GAAE,MAAK,CAAC,KAAI,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,IAAG,EAAE,GAAE,QAAO,CAAC,IAAG,GAAE,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,CAAC,GAAE,cAAa,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,sBAAqB,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,IAAG,KAAI,GAAG,GAAE,cAAa,CAAC,KAAI,KAAI,GAAG,GAAE,gBAAe,CAAC,KAAI,KAAI,GAAG,GAAE,gBAAe,CAAC,KAAI,KAAI,GAAG,GAAE,gBAAe,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,GAAE,KAAI,CAAC,GAAE,WAAU,CAAC,IAAG,KAAI,EAAE,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,GAAE,GAAG,GAAE,QAAO,CAAC,KAAI,GAAE,CAAC,GAAE,kBAAiB,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,GAAE,GAAE,GAAG,GAAE,cAAa,CAAC,KAAI,IAAG,GAAG,GAAE,cAAa,CAAC,KAAI,KAAI,GAAG,GAAE,gBAAe,CAAC,IAAG,KAAI,GAAG,GAAE,iBAAgB,CAAC,KAAI,KAAI,GAAG,GAAE,mBAAkB,CAAC,GAAE,KAAI,GAAG,GAAE,iBAAgB,CAAC,IAAG,KAAI,GAAG,GAAE,iBAAgB,CAAC,KAAI,IAAG,GAAG,GAAE,cAAa,CAAC,IAAG,IAAG,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,GAAE,GAAE,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,CAAC,GAAE,WAAU,CAAC,KAAI,KAAI,EAAE,GAAE,QAAO,CAAC,KAAI,KAAI,CAAC,GAAE,WAAU,CAAC,KAAI,IAAG,CAAC,GAAE,QAAO,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,KAAI,KAAI,GAAG,GAAE,eAAc,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,KAAI,KAAI,EAAE,GAAE,MAAK,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,GAAE,GAAG,GAAE,eAAc,CAAC,KAAI,IAAG,GAAG,GAAE,KAAI,CAAC,KAAI,GAAE,CAAC,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,IAAG,KAAI,GAAG,GAAE,aAAY,CAAC,KAAI,IAAG,EAAE,GAAE,QAAO,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,EAAE,GAAE,UAAS,CAAC,IAAG,KAAI,EAAE,GAAE,UAAS,CAAC,KAAI,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,IAAG,EAAE,GAAE,QAAO,CAAC,KAAI,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,IAAG,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,WAAU,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,KAAI,KAAI,GAAG,GAAE,aAAY,CAAC,GAAE,KAAI,GAAG,GAAE,WAAU,CAAC,IAAG,KAAI,GAAG,GAAE,KAAI,CAAC,KAAI,KAAI,GAAG,GAAE,MAAK,CAAC,GAAE,KAAI,GAAG,GAAE,SAAQ,CAAC,KAAI,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,IAAG,EAAE,GAAE,WAAU,CAAC,IAAG,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,OAAM,CAAC,KAAI,KAAI,GAAG,GAAE,YAAW,CAAC,KAAI,KAAI,GAAG,GAAE,QAAO,CAAC,KAAI,KAAI,CAAC,GAAE,aAAY,CAAC,KAAI,KAAI,EAAE,EAAC;AAAE,SAASuoB,GAAUtyB,GAAE;AAAC,QAAK,CAACD,GAAEkM,GAAE5L,CAAC,IAAEL,EAAE,IAAI,CAAAA,MAAGA,KAAG,UAAOA,IAAE,QAAM,KAAK,KAAKA,IAAE,SAAM,OAAM,GAAG,CAAC;AAAE,SAAM,SAAMD,IAAE,SAAMkM,IAAE,SAAM5L;AAAC;AAAC,SAASkyB,GAAwBvyB,GAAED,GAAE;AAAC,QAAMkM,IAAEqmB,GAAUtyB,CAAC,GAAEK,IAAEiyB,GAAUvyB,CAAC;AAAE,UAAO,KAAK,IAAIkM,GAAE5L,CAAC,IAAE,SAAM,KAAK,IAAI4L,GAAE5L,CAAC,IAAE;AAAI;ACtQ3mF,IAAImyB,GAAGC;AAAG,SAASC,GAAiB,GAAE;AAAC,SAAM,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC,IAAE,IAAE,EAAE,CAAC,GAAE,OAAO,MAAM,EAAE,CAAC,CAAC,IAAE,IAAE,EAAE,CAAC,GAAE,OAAO,MAAM,EAAE,CAAC,CAAC,IAAE,IAAE,EAAE,CAAC,CAAC;AAAC;AAAC,SAASC,GAAqB,GAAE;AAAC,UAAO,EAAE,eAAa;AAAA,IAAE,KAAKH,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAK,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAS9rB,GAAEgsB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAY,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASvoB,GAAEyoB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAW,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAStnB,GAAEwnB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAkB,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASzoB,GAAE2oB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAQ,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAStrB,GAAEwrB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAQ,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASrrB,GAAEurB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAa,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAS5mB,GAAE8mB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAI,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAS/rB,GAAEisB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAI,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAStqB,GAAEwqB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAI,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASjsB,GAAEmsB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAM,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAS9sB,GAAEgtB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAI,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAS5rB,GAAE8rB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAM,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASI,GAAEF,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE,KAAKF,EAAG;AAAQ,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAAWE,GAAiB,EAAE,QAAQ,EAAE;AAAA,IAAE,KAAKF,EAAG;AAAQ,aAAM,EAAC,GAAG,GAAE,eAAcA,EAAG,SAAQ,UAASzrB,GAAE2rB,GAAiB,EAAE,QAAQ,CAAC,EAAC;AAAA,IAAE;AAAQ,YAAM,IAAI,MAAM,4BAA4B;AAAA,EAAC;AAAC;AAAA,CAAE,SAAS,GAAE;AAAC,IAAE,UAAQ,WAAU,EAAE,aAAW,cAAa,EAAE,oBAAkB,qBAAoB,EAAE,MAAI,OAAM,EAAE,MAAI,OAAM,EAAE,MAAI,OAAM,EAAE,MAAI,OAAM,EAAE,MAAI,OAAM,EAAE,cAAY,eAAc,EAAE,QAAM,SAAQ,EAAE,QAAM,SAAQ,EAAE,eAAa,gBAAe,EAAE,MAAI,OAAM,EAAE,OAAK,QAAO,EAAE,UAAQ,WAAU,EAAE,UAAQ,WAAU,EAAE,UAAQ;AAAS,GAAEF,MAAKA,IAAG,CAAA,EAAG,IAAE,SAAS,GAAE;AAAC,IAAE,eAAa,iBAAgB,EAAE,WAAS,aAAY,EAAE,qBAAmB,wBAAuB,EAAE,kBAAgB,qBAAoB,EAAE,kBAAgB,qBAAoB,EAAE,qBAAmB,wBAAuB,EAAE,sBAAoB,yBAAwB,EAAE,mBAAiB,sBAAqB,EAAE,MAAI,OAAM,EAAE,YAAU,cAAa,EAAE,YAAU,cAAa,EAAE,aAAW,eAAc,EAAE,sBAAoB,yBAAwB,EAAE,WAAS,aAAY,EAAE,mBAAiB,sBAAqB,EAAE,gBAAc,kBAAiB,EAAE,sBAAoB,yBAAwB,EAAE,eAAa;AAAc,GAAEC,MAAKA,IAAG,GAAG;AAAE,MAAMI,KAAG,oBAAI,IAAI,CAACL,EAAG,SAAQA,EAAG,YAAWA,EAAG,mBAAkBA,EAAG,KAAIA,EAAG,aAAYA,EAAG,cAAaA,EAAG,KAAIA,EAAG,MAAKA,EAAG,SAAQA,EAAG,SAAQA,EAAG,OAAO,CAAC;AAAE,SAASM,GAAY,GAAEpxB,GAAE;AAAC,QAAM,IAAE,EAAC,GAAG,EAAC;AAAE,MAAG,EAAE,kBAAgBA,GAAE;AAAC,UAAM5B,IAAE6yB,GAAqB,CAAC;AAAE,YAAOjxB,GAAC;AAAA,MAAE,KAAK8wB,EAAG;AAAA,MAAI,KAAKA,EAAG;AAAI,UAAE,gBAAcA,EAAG,KAAI,EAAE,WAAS7rB,GAAE7G,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAK,UAAE,gBAAcA,EAAG,MAAK,EAAE,WAAS7rB,GAAE7G,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAY,UAAE,gBAAcA,EAAG,aAAY,EAAE,WAASxmB,GAAElM,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAW,UAAE,gBAAcA,EAAG,YAAW,EAAE,WAAS9qB,GAAE5H,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAkB,UAAE,gBAAcA,EAAG,mBAAkB,EAAE,WAASvmB,GAAEnM,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAQ,UAAE,gBAAcA,EAAG,SAAQ,EAAE,WAAShsB,GAAE1G,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAa,UAAE,gBAAcA,EAAG,cAAa,EAAE,WAASzvB,GAAEjD,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAQ,UAAE,gBAAcA,EAAG,SAAQ,EAAE,WAAShuB,GAAE1E,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAI,UAAE,gBAAcA,EAAG,KAAI,EAAE,WAAS7qB,GAAE7H,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAI,UAAE,gBAAcA,EAAG,KAAI,EAAE,WAASjrB,GAAEzH,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAI,UAAE,gBAAcA,EAAG,KAAI,EAAE,WAASzmB,GAAEjM,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAI,UAAE,gBAAcA,EAAG,KAAI,EAAE,WAASvnB,GAAEnL,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAM,UAAE,gBAAcA,EAAG,OAAM,EAAE,WAASxvB,GAAElD,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAM,UAAE,gBAAcA,EAAG,OAAM,EAAE,WAASrtB,GAAErF,EAAE,QAAQ;AAAE;AAAA,MAAM,KAAK0yB,EAAG;AAAQ,UAAE,gBAAcA,EAAG,SAAQ,EAAE,WAAW1yB,EAAE;AAAU;AAAA,MAAM,KAAK0yB,EAAG;AAAQ,UAAE,gBAAcA,EAAG,SAAQ,EAAE,WAAS/wB,GAAE3B,EAAE,QAAQ;AAAE;AAAA,MAAM;AAAQ,cAAM,IAAI,MAAM,4BAA4B;AAAA,IAAC;AAAA,EAAC,MAAM,GAAE,WAAS4yB,GAAiB,EAAE,QAAQ;AAAE,MAAGhxB,MAAI,EAAE,cAAc,GAAE,WAASqxB,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAA,WAAUF,GAAG,IAAInxB,CAAC,KAAGmxB,GAAG,IAAI,EAAE,aAAa,EAAE,GAAE,WAASE,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAA,MAAO,SAAOrxB;IAAG,KAAK8wB,EAAG;AAAI,cAAO,EAAE,eAAa;AAAA,QAAE,KAAKA,EAAG;AAAI,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAA,MAAC;AAAC;AAAA,IAAM,KAAKP,EAAG;AAAI,cAAO,EAAE,eAAa;AAAA,QAAE,KAAKA,EAAG;AAAI,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAA,MAAC;AAAC;AAAA,IAAM,KAAKP,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,cAAO,EAAE,eAAa;AAAA,QAAE,KAAKA,EAAG;AAAI,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAA,MAAC;AAAC;AAAA,IAAM,KAAKP,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,cAAO,EAAE,eAAa;AAAA,QAAE,KAAKA,EAAG;AAAI,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAI,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,CAAC,GAAE,EAAE,UAAS,CAAC,CAAC,CAAC;AAAE;AAAA,QAAM,KAAKP,EAAG;AAAA,QAAI,KAAKA,EAAG;AAAM,YAAE,WAASO,GAA8B,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAA,MAAC;AAAA,EAAC;AAAC,SAAO,EAAE,WAASC,GAA8C,EAAE,UAAStxB,CAAC,GAAE;AAAC;AAAC,SAASsxB,GAA8C,GAAEtxB,GAAE;AAAC,QAAM,IAAE,CAAC,GAAG,CAAC;AAAE,UAAOA,GAAC;AAAA,IAAE,KAAK8wB,EAAG;AAAI,OAAC,OAAO,MAAM,EAAE,CAAC,CAAC,KAAGS,GAAgB,EAAE,CAAC,GAAE,CAAC,KAAG,MAAI,EAAE,CAAC,IAAE,OAAO;AAAK;AAAA,IAAM,KAAKT,EAAG;AAAI,WAAK,IAAI,GAAES,GAAgB,EAAE,CAAC,GAAE,CAAC,CAAC,IAAE,KAAK,IAAI,GAAEA,GAAgB,EAAE,CAAC,GAAE,CAAC,CAAC,KAAG,QAAM,EAAE,CAAC,IAAE,OAAO;AAAK;AAAA,IAAM,KAAKT,EAAG;AAAI,OAAC,OAAO,MAAM,EAAE,CAAC,CAAC,KAAGS,GAAgB,EAAE,CAAC,GAAE,CAAC,KAAG,MAAI,EAAE,CAAC,IAAE,OAAO;AAAK;AAAA,IAAM,KAAKT,EAAG;AAAM,OAAC,OAAO,MAAM,EAAE,CAAC,CAAC,KAAGS,GAAgB,EAAE,CAAC,GAAE,CAAC,KAAG,MAAI,EAAE,CAAC,IAAE,OAAO;AAAA,EAAI;AAAC,SAAO;AAAC;AAA02B,SAASF,GAA8B,GAAErxB,GAAE,GAAE,GAAE;AAAC,QAAMrB,IAAE,CAAC,GAAG,CAAC;AAAE,aAAUN,KAAK2B,EAAE,QAAO,MAAM,EAAEA,EAAE3B,CAAC,CAAC,CAAC,MAAIM,EAAE,EAAEN,CAAC,CAAC,IAAE,OAAO;AAAK,SAAOM;AAAC;AAAC,SAAS6yB,GAAmC,GAAE;AAAC,QAAMxxB,IAAE,oBAAI;AAAI,UAAO,EAAE,eAAa;AAAA,IAAE,KAAK8wB,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAI,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,MAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,MAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,MAAI,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAI,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAI,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAA,IAAK,KAAKA,EAAG;AAAA,IAAQ,KAAKA,EAAG;AAAA,IAAW,KAAKA,EAAG;AAAA,IAAkB,KAAKA,EAAG;AAAA,IAAQ,KAAKA,EAAG;AAAA,IAAY,KAAKA,EAAG;AAAa,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAE;AAAA,IAAM,KAAKX,EAAG;AAAA,IAAQ,KAAKA,EAAG;AAAQ,MAAA9wB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAEzxB,EAAE,IAAI,KAAIyxB,GAAiB,EAAE,SAAS,CAAC,CAAC,CAAC,GAAY,OAAO,EAAE,SAAnB,YAA0BzxB,EAAE,IAAI,SAAQyxB,GAAiB,EAAE,KAAK,CAAC;AAAA,EAAC;AAAC,SAAOzxB;AAAC;AAAC,SAAS0xB,GAAsC,GAAE;AAAC,QAAM1xB,IAAE,IAAI,IAAI,CAAC;AAAE,aAAS,CAAC,GAAE,CAAC,KAAI,EAAE,QAAO,MAAM,EAAE,CAAC,EAAE,KAAK,KAAGA,EAAE,IAAI,GAAEyxB,GAAiB,CAAC,CAAC;AAAE,SAAOzxB;AAAC;AAAC,SAASyxB,GAAiBpzB,GAAE;AAAC,SAAO,OAAO,MAAMA,CAAC,IAAE,CAACD,EAAE,QAAO,QAAO,IAAG,IAAG,EAAC,OAAM,OAAO,KAAI,MAAK4B,EAAE,OAAM,CAAC,IAAE,CAAC5B,EAAE,QAAOC,EAAE,SAAQ,GAAG,IAAG,IAAG,EAAC,OAAMA,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAC;AAAC,SAASuxB,GAAgB,GAAEvxB,IAAE,GAAE;AAAC,MAAG,OAAO,MAAM,CAAC,EAAE,QAAO;AAAE,QAAM,IAAE,KAAK,IAAI,IAAGA,CAAC;AAAE,SAAO,KAAK,MAAM,IAAE,CAAC,IAAE;AAAC;AAAwd,SAAS2xB,EAAU,GAAE3xB,GAAE,GAAE,GAAE;AAAC,SAAO,KAAK,IAAI,KAAK,IAAI,IAAEA,GAAE,CAAC,GAAE,CAAC;AAAC;AAAC,MAAM4xB,KAAG;AAAS,SAASjtB,GAAc,GAAE;AAAC,SAAO,EAAE,QAAQitB,IAAG,CAAAxzB,MAAG,OAAO,aAAaA,EAAE,WAAW,CAAC,IAAE,EAAE,CAAC;AAAC;AAAC,SAASyzB,GAA8BvzB,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAGvB,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,aAAY,UAAU;AAAE,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,aAAY,UAAU;AAAE,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,MAAM8xB,KAAG,oBAAI,IAAI,CAAC,QAAO,eAAc,cAAa,qBAAoB,WAAU,gBAAe,WAAU,OAAM,WAAU,SAAS,CAAC;AAAE,SAASC,GAAQ,GAAE/xB,GAAE;AAAC,QAAMvB,IAAE,CAAA,GAAGI,IAAE,CAAA,GAAGoB,IAAE,CAAA,GAAGrB,IAAE,CAAA;AAAG,MAAImB,GAAEyD,GAAEC,IAAE,IAAGnC,IAAE;AAAG,QAAMiI,IAAE,EAAC,eAAcunB,EAAG,MAAK,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAAA,CAAE,EAAC;AAAE,MAAIzmB,IAAE5L;AAAE,WAAQE,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,QAAIkH,IAAE,EAAE,MAAMlH,CAAC;AAAE,QAAGqzB,GAAGnsB,CAAC,KAAGosB,GAAGpsB,CAAC,EAAE,QAAKmsB,GAAG,EAAE,MAAMrzB,IAAE,CAAC,CAAC,KAAGszB,GAAG,EAAE,MAAMtzB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAA,aAAY0L,MAAI5L,KAAGA,EAAE,WAAS4L,IAAExL,IAAGwL,MAAIxL,KAAGA,EAAE,WAASwL,IAAEpK,IAAGiyB,EAAGrsB,CAAC,KAAGvH,GAAEuH,EAAE,KAAK,KAASA,EAAE,MAAM,CAAC,EAAE,UAAjB,KAAuB;AAAC,UAAGwE,MAAIzL,EAAE,QAAM;AAAG,MAAAyL,IAAEzL;AAAA,IAAC,OAAK;AAAC,UAAGuzB,GAAGtsB,CAAC,GAAE;AAAC,YAAGwE,MAAIzL,KAAW+F,GAAckB,EAAE,QAAO,CAAE,MAAjC,OAAmC;AAAC,UAAA0D,EAAE,YAAY,IAAIwnB,EAAG,gBAAgB,GAAE1mB,EAAE,KAAKxE,CAAC;AAAE;AAAA,QAAQ;AAAC,YAAG,CAACusB,GAAG,IAAIztB,GAAckB,EAAE,QAAO,CAAE,CAAC,EAAE,QAAM;AAAG,cAAK,CAAC,CAACzH,CAAC,CAAC,IAAEi0B,GAAG,CAAC,CAACxsB,CAAC,CAAC,GAAE,EAAC,uCAAsC,IAAG,SAAQrC,GAAE,WAAU,IAAG,kBAAiB,IAAG,gBAAe,GAAE,CAAC;AAAE,YAAG,CAACpF,KAAG,CAAC8zB,EAAG9zB,CAAC,KAAG,CAACgF,GAAEhF,EAAE,KAAK,EAAE,QAAM;AAAG,eAAO,MAAMA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAIA,EAAE,MAAM,CAAC,EAAE,QAAM,IAAGyH,IAAEzH;AAAA,MAAC;AAAC,UAAGiM,MAAI5L,KAAOA,EAAE,WAAN,KAAcyzB,EAAGrsB,CAAC,KAAGxH,GAAEwH,EAAE,KAAK,KAAGisB,GAAG,IAAIntB,GAAckB,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAE;AAAC,YAAGpC,EAAE,QAAM;AAAG,QAAAA,IAAEkB,GAAckB,EAAE,MAAM,CAAC,EAAE,KAAK,GAAE0D,EAAE,gBAAc+oB,GAA8B7uB,CAAC,GAAEnC,MAAIA,EAAE,kBAAgBiI,EAAE,kBAAgBjI,IAAE8vB,GAAY9vB,GAAEiI,EAAE,aAAa,IAAGxJ,IAAEyxB,GAAmClwB,CAAC,GAAEkC,IAAEkuB,GAAsC3xB,CAAC;AAAA,MAAE,WAASsK,MAAI5L,KAAOA,EAAE,WAAN,KAAcyzB,EAAGrsB,CAAC,KAAGxH,GAAEwH,EAAE,KAAK,KAAYlB,GAAckB,EAAE,MAAM,CAAC,EAAE,KAAK,MAAvC,QAAyC;AAAe,YAAXvE,KAAcmC,EAAE,QAAM;AAAG,eAAKuuB,GAAG,EAAE,MAAMrzB,IAAE,CAAC,CAAC,KAAGszB,GAAG,EAAE,MAAMtzB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAI,YAAGA,KAAIkH,IAAE,EAAE,MAAMlH,CAAC,GAAE2C,IAAEtB,EAAE6F,CAAC,GAAOvE,MAAL,GAAO,QAAM;AAAG,QAAAA,EAAE,YAAY,IAAIyvB,EAAG,YAAY,KAAGxnB,EAAE,YAAY,IAAIwnB,EAAG,YAAY,GAAExnB,EAAE,YAAY,IAAIwnB,EAAG,mBAAmB;AAAA,MAAC,OAAK;AAAC,YAAG,CAACmB,EAAGrsB,CAAC,EAAE;AAAS,YAAGxH,GAAEwH,EAAE,KAAK,KAAG9F,KAAGA,EAAE,IAAI4E,GAAckB,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,GAAE;AAAC,UAAAwE,EAAE,KAAK,IAAIkoB,EAAGxyB,EAAE,IAAI4E,GAAckB,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;AAAE;AAAA,QAAQ;AAAC,QAAAwE,EAAE,KAAKxE,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAA0I,MAAtI,CAACpC,KAAkB4G,EAAE,WAAN,KAA6B5L,EAAE,WAAN,KAAkBI,EAAE,WAAN,KAAkBoB,EAAE,WAAN,KAAyB,CAACiyB,EAAGzzB,EAAE,CAAC,CAAC,KAAG,CAACyzB,EAAGrzB,EAAE,CAAC,CAAC,KAAG,CAACqzB,EAAGjyB,EAAE,CAAC,CAAC,KAAcF,KAAG,CAACA,EAAE,IAAI,OAAO,EAAE,QAAM;AAAG,QAAM8F,IAAEgsB,GAA8BpzB,EAAE,CAAC,EAAE,OAAM,GAAE8K,CAAC;AAAE,MAAG,CAAC1D,KAAG,CAAClH,EAAEkH,CAAC,EAAE,QAAM;AAAG,QAAM,IAAEgsB,GAA8BhzB,EAAE,CAAC,EAAE,OAAM,GAAE0K,CAAC;AAAE,MAAG,CAAC,KAAG,CAAC5K,EAAE,CAAC,EAAE,QAAM;AAAG,QAAMmE,IAAE+uB,GAA8B5xB,EAAE,CAAC,EAAE,OAAM,GAAEsJ,CAAC;AAAE,MAAG,CAACzG,KAAG,CAACnE,EAAEmE,CAAC,EAAE,QAAM;AAAG,QAAMzB,IAAE,CAACwE,GAAE,GAAE/C,CAAC;AAAE,MAAOlE,EAAE,WAAN,EAAa,KAAG2K,EAAE,YAAY,IAAIwnB,EAAG,QAAQ,GAAEmB,EAAGtzB,EAAE,CAAC,CAAC,GAAE;AAAC,UAAMR,IAAEyzB,GAA8BjzB,EAAE,CAAC,EAAE,OAAM,GAAE2K,CAAC;AAAE,QAAG,CAACnL,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,IAAAiD,EAAE,KAAKjD,CAAC;AAAA,EAAC,MAAM,CAAAmL,EAAE,QAAM3K,EAAE,CAAC;AAAA,WAAUmB,KAAGA,EAAE,IAAI,OAAO,GAAE;AAAC,UAAM3B,IAAEyzB,GAA8B9xB,EAAE,IAAI,OAAO,GAAE,GAAEwJ,CAAC;AAAE,QAAG,CAACnL,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,IAAAiD,EAAE,KAAKjD,CAAC;AAAA,EAAC;AAAC,SAAOmL,EAAE,WAAS,CAAClI,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAMA,EAAE,WAAN,MAAekI,EAAE,QAAMlI,EAAE,CAAC,EAAE,CAAC,EAAE,QAAOkI;AAAC;AAAC,SAAS+oB,GAA8B,GAAE;AAAC,UAAO,GAAC;AAAA,IAAE,KAAI;AAAO,aAAOxB,EAAG;AAAA,IAAK,KAAI;AAAc,aAAOA,EAAG;AAAA,IAAY,KAAI;AAAa,aAAOA,EAAG;AAAA,IAAW,KAAI;AAAoB,aAAOA,EAAG;AAAA,IAAkB,KAAI;AAAU,aAAOA,EAAG;AAAA,IAAQ,KAAI;AAAe,aAAOA,EAAG;AAAA,IAAa,KAAI;AAAU,aAAOA,EAAG;AAAA,IAAQ,KAAI;AAAA,IAAM,KAAI;AAAU,aAAOA,EAAG;AAAA,IAAQ,KAAI;AAAU,aAAOA,EAAG;AAAA,IAAQ;AAAQ,YAAM,IAAI,MAAM,+BAA6B,CAAC;AAAA,EAAC;AAAC;AAAC,MAAM0B,KAAG,oBAAI,IAAI,CAAC,QAAO,eAAc,cAAa,qBAAoB,WAAU,gBAAe,WAAU,OAAM,SAAQ,OAAM,WAAU,SAAS,CAAC,GAAEC,KAAG,oBAAI,IAAI,CAAC,OAAM,OAAM,OAAM,OAAO,CAAC,GAAEC,KAAG,oBAAI,IAAI,CAAC,WAAU,UAAS,cAAa,YAAY,CAAC;AAAE,SAASC,GAAS,GAAE3yB,GAAE;AAAC,MAAIvB,IAAE,MAAKE,IAAE,MAAKL,IAAE,MAAK8E,IAAE;AAAG,WAAQnD,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,UAAM,IAAE,EAAE,MAAMA,CAAC;AAAE,QAAG,CAAC2yB,GAAG,CAAC,GAAE;AAAC,UAAG,EAAEn0B,KAAGyzB,EAAG,CAAC,KAAG7zB,GAAE,EAAE,KAAK,KAAUsG,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK,MAArC,MAAwC,QAAOkuB,GAAoB,SAAQC,GAAmB,EAAE,OAAM9yB,CAAC,CAAC;AAAE,UAAGkyB,EAAG,CAAC,KAAG7zB,GAAE,EAAE,KAAK,GAAE;AAAC,YAAG,CAACI,KAAUkG,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK,MAArC,MAAuC;AAAC,UAAAlG,IAAE;AAAE;AAAA,QAAQ;AAAC,YAAGA,KAAG,CAACE,GAAE;AAAC,UAAAA,IAAEgG,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK;AAAE;AAAA,QAAQ;AAAC,YAAGlG,KAAGE,KAAG,CAACL,KAAGm0B,GAAG,IAAI9zB,CAAC,GAAE;AAAC,UAAAL,IAAEqG,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK;AAAE;AAAA,QAAQ;AAAC,YAAGlG,KAAGE,KAAGL,KAAG,CAAC8E,KAAWuB,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK,MAAtC,OAAwC;AAAC,UAAAvB,IAAE;AAAG;AAAA,QAAQ;AAAC,eAAM;AAAA,MAAE;AAAC,aAAM,EAAE,CAAC8uB,EAAG,CAAC,KAAG,CAACrzB,GAAE,EAAE,KAAK,MAAK,CAAC,CAACF,MAAIL,KAAG8E,IAAE,CAAC,EAAEzE,KAAGL,KAAG8E,KAAGqvB,GAAG,IAAI9zB,CAAC,KAAG+zB,GAAG,IAAIp0B,CAAC,MAAIy0B,GAAcp0B,GAAEL,GAAEw0B,GAAmB,EAAE,MAAM,MAAM7yB,IAAE,CAAC,GAAED,CAAC,CAAC,IAAEwyB,GAAG,IAAI7zB,CAAC,IAAEk0B,GAAoBl0B,GAAEm0B,GAAmB,EAAE,MAAM,MAAM7yB,IAAE,CAAC,GAAED,CAAC,CAAC,IAAE,CAAC,CAACyyB,GAAG,IAAI9zB,CAAC,KAAGo0B,GAAcp0B,GAAE,WAAUm0B,GAAmB,EAAE,MAAM,MAAM7yB,IAAE,CAAC,GAAED,CAAC,CAAC;AAAA,IAAG;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS8yB,GAAmB,GAAE9yB,GAAE;AAAC,QAAM,IAAE;AAAG,MAAIrB,IAAE,GAAEL,IAAE,IAAG2B,IAAE;AAAG,WAAQtB,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,QAAIC,IAAE,EAAED,CAAC;AAAE,QAAG,CAACi0B,GAAGh0B,CAAC,GAAE;AAAC,UAAG,CAACszB,EAAGtzB,CAAC,KAAG,CAACC,GAAED,EAAE,KAAK,GAAE;AAAC,YAAG,CAACN,GAAE;AAAC,gBAAMF,IAAE4B,EAAEpB,CAAC;AAAE,cAAGR,GAAE;AAAC,YAAAE,IAAEF;AAAE;AAAA,UAAQ;AAAA,QAAC;AAAC,YAAG,CAAC6B,GAAE;AAAC,cAAGkyB,GAAGvzB,CAAC,KAAGwzB,GAAG,IAAIztB,GAAc/F,EAAE,QAAO,CAAE,CAAC,GAAE;AAAC,gBAAG,CAAC,CAACA,CAAC,CAAC,IAAEyzB,GAAG,CAAC,CAACzzB,CAAC,CAAC,GAAE,EAAC,uCAAsC,IAAG,WAAU,IAAG,kBAAiB,IAAG,gBAAe,GAAE,CAAC,GAAE,CAACA,KAAG,CAACszB,EAAGtzB,CAAC,KAAG,CAACwE,GAAExE,EAAE,KAAK,EAAE;AAAS,mBAAO,MAAMA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAIA,EAAE,MAAM,CAAC,EAAE,QAAM;AAAA,UAAE;AAAC,cAAGszB,EAAGtzB,CAAC,KAAGH,GAAEG,EAAE,KAAK,KAAGA,EAAE,MAAM,CAAC,EAAE,SAAO,GAAE;AAAC,YAAAqB,IAAErB,EAAE,MAAM,CAAC,EAAE;AAAM;AAAA,UAAQ;AAAA,QAAC;AAAC,eAAM;AAAA,MAAE;AAAC,UAAG,CAACN,EAAE,QAAM;AAAG,QAAE,KAAK,EAAC,OAAMA,GAAE,YAAW2B,EAAC,CAAC,GAAE3B,IAAE,IAAG2B,IAAE;AAAA,IAAE;AAAA,EAAC;AAAC,MAAG,CAAC3B,EAAE;AAAS,IAAE,KAAK,EAAC,OAAMA,GAAE,YAAW2B,EAAC,CAAC;AAAE,MAAIrB,IAAE,GAAEmB,IAAE;AAAE,WAAQ3B,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAM4B,IAAE,EAAE5B,CAAC,EAAE;AAAW,QAAQ4B,MAAL,IAAO;AAAC,UAAGA,IAAE,KAAGA,IAAE,IAAI,QAAM;AAAG,MAAApB,KAAGoB;AAAA,IAAC,MAAM,CAAAD;AAAA,EAAG;AAAC,QAAMyD,IAAE,KAAK,IAAI,GAAE,MAAI5E,CAAC;AAAE,EAAAA,IAAE;AAAE,WAAQR,IAAE,GAAEA,IAAE,EAAE,QAAOA,IAAI,CAAK,EAAEA,CAAC,EAAE,eAAV,OAAuB,EAAEA,CAAC,EAAE,aAAWoF,IAAEzD,IAAGnB,KAAG,EAAER,CAAC,EAAE;AAAW,MAAOQ,MAAJ,EAAM,QAAM,EAAC,QAAO,CAAC,EAAC,OAAM,EAAC,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,eAAckyB,EAAG,MAAK,OAAM,GAAE,aAAY,oBAAI,MAAG,GAAE,YAAW,EAAC,CAAC,GAAE,iBAAgB,EAAC;AAAE,MAAGlyB,IAAE,IAAI,UAAQR,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,QAAI4B,IAAE,EAAE5B,CAAC,EAAE;AAAW,IAAA4B,IAAEA,IAAEpB,IAAE,KAAI,EAAER,CAAC,EAAE,aAAW4B;AAAA,EAAC;AAAC,MAAGpB,IAAE,KAAI;AAAC,IAAAD,IAAEC,IAAE;AAAI,aAAQR,IAAE,GAAEA,IAAE,EAAE,QAAOA,KAAI;AAAC,UAAI4B,IAAE,EAAE5B,CAAC,EAAE;AAAW,MAAA4B,IAAEA,IAAEpB,IAAE,KAAI,EAAER,CAAC,EAAE,aAAW4B;AAAA,IAAC;AAAA,EAAC;AAAC,SAAM,EAAC,QAAO,GAAE,iBAAgBrB,EAAC;AAAC;AAAC,SAASk0B,GAAoB,GAAE7yB,GAAE;ATA7uiB,MAAAyI;ASA8uiB,MAAG,CAACzI,KAAG,CAACA,EAAE,OAAO,OAAO,QAAM;AAAG,QAAM,IAAEA,EAAE,OAAO,MAAK;AAAG,IAAE,QAAO;AAAG,MAAI,IAAE8wB,EAAG;AAAI,UAAO;IAAG,KAAI;AAAO,UAAEA,EAAG;AAAI;AAAA,IAAM,KAAI;AAAc,UAAEA,EAAG;AAAY;AAAA,IAAM,KAAI;AAAa,UAAEA,EAAG;AAAW;AAAA,IAAM,KAAI;AAAoB,UAAEA,EAAG;AAAkB;AAAA,IAAM,KAAI;AAAU,UAAEA,EAAG;AAAQ;AAAA,IAAM,KAAI;AAAe,UAAEA,EAAG;AAAa;AAAA,IAAM,KAAI;AAAU,UAAEA,EAAG;AAAQ;AAAA,IAAM,KAAI;AAAM,UAAEA,EAAG;AAAI;AAAA,IAAM,KAAI;AAAQ,UAAEA,EAAG;AAAM;AAAA,IAAM,KAAI;AAAU,UAAEA,EAAG;AAAQ;AAAA,IAAM,KAAI;AAAA,IAAM,KAAI;AAAU,UAAEA,EAAG;AAAQ;AAAA,IAAM;AAAQ,aAAM;AAAA,EAAE;AAAC,MAAO,EAAE,WAAN,GAAa;AAAC,UAAM1yB,IAAEgzB,GAAY,EAAE,CAAC,EAAE,OAAM,CAAC;AAAE,WAAOhzB,EAAE,gBAAc,GAAEA,EAAE,YAAY,IAAI2yB,EAAG,gBAAgB,GAAY,OAAO3yB,EAAE,SAAnB,WAAyB,MAAIA,EAAE,QAAMA,EAAE,QAAM4B,EAAE,iBAAgB5B;AAAA,EAAE;AAAC,SAAK,EAAE,UAAQ,KAAG;AAAC,UAAMA,IAAE,EAAE,OAAM4B,IAAE,EAAE;AAAM,QAAG,CAAC5B,KAAG,CAAC4B,EAAE,QAAM;AAAG,UAAMrB,IAAEq0B,GAAwB,GAAE50B,EAAE,OAAMA,EAAE,YAAW4B,EAAE,OAAMA,EAAE,UAAU;AAAE,QAAG,CAACrB,EAAE;AAAS,MAAE,KAAK,EAAC,OAAMA,GAAE,YAAWP,EAAE,aAAW4B,EAAE,WAAU,CAAC;AAAA,EAAC;AAAC,QAAMrB,KAAE8J,IAAA,EAAE,CAAC,MAAH,gBAAAA,EAAM;AAAM,SAAM,CAAC,CAAC9J,MAAIqB,EAAE,OAAO,KAAK,CAAA5B,MAAGA,EAAE,MAAM,YAAY,IAAI2yB,EAAG,YAAY,CAAC,KAAGpyB,EAAE,YAAY,IAAIoyB,EAAG,YAAY,GAAY,OAAOpyB,EAAE,SAAnB,aAA2BA,EAAE,QAAMA,EAAE,QAAMqB,EAAE,iBAAoBA,EAAE,OAAO,WAAb,KAAqBrB,EAAE,YAAY,IAAIoyB,EAAG,gBAAgB,GAAEpyB;AAAG;AAAC,SAASq0B,GAAwB,GAAEhzB,GAAE,GAAE,GAAErB,GAAE;AAAC,QAAML,IAAE,KAAG,IAAEK;AAAG,MAAIyE,IAAEpD,EAAE;AAAM,MAAa,OAAOoD,KAAjB,SAAmB,QAAM;AAAG,MAAIvE,IAAE,EAAE;AAAM,MAAa,OAAOA,KAAjB,SAAmB,QAAM;AAAG,EAAAuE,IAAE,OAAO,MAAMA,CAAC,IAAEvE,IAAEuE,GAAEvE,IAAE,OAAO,MAAMA,CAAC,IAAEuE,IAAEvE;AAAE,QAAMoB,IAAEmxB,GAAYpxB,GAAE,CAAC,EAAE,UAASpB,IAAEwyB,GAAY,GAAE,CAAC,EAAE;AAAS,EAAAnxB,EAAE,CAAC,IAAEgzB,GAAuBhzB,EAAE,CAAC,GAAErB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEq0B,GAAuBr0B,EAAE,CAAC,GAAEqB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEgzB,GAAuBhzB,EAAE,CAAC,GAAErB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEq0B,GAAuBr0B,EAAE,CAAC,GAAEqB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEgzB,GAAuBhzB,EAAE,CAAC,GAAErB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEq0B,GAAuBr0B,EAAE,CAAC,GAAEqB,EAAE,CAAC,CAAC,GAAEA,EAAE,CAAC,IAAEizB,GAAYjzB,EAAE,CAAC,GAAEmD,CAAC,GAAEnD,EAAE,CAAC,IAAEizB,GAAYjzB,EAAE,CAAC,GAAEmD,CAAC,GAAEnD,EAAE,CAAC,IAAEizB,GAAYjzB,EAAE,CAAC,GAAEmD,CAAC,GAAExE,EAAE,CAAC,IAAEs0B,GAAYt0B,EAAE,CAAC,GAAEC,CAAC,GAAED,EAAE,CAAC,IAAEs0B,GAAYt0B,EAAE,CAAC,GAAEC,CAAC,GAAED,EAAE,CAAC,IAAEs0B,GAAYt0B,EAAE,CAAC,GAAEC,CAAC;AAAE,QAAMkB,IAAEozB,GAAY/vB,GAAEvE,GAAEP,CAAC;AAAE,SAAM,EAAC,eAAc,GAAE,UAAS,CAAC80B,GAAeD,GAAYlzB,EAAE,CAAC,GAAErB,EAAE,CAAC,GAAEN,CAAC,GAAEyB,CAAC,GAAEqzB,GAAeD,GAAYlzB,EAAE,CAAC,GAAErB,EAAE,CAAC,GAAEN,CAAC,GAAEyB,CAAC,GAAEqzB,GAAeD,GAAYlzB,EAAE,CAAC,GAAErB,EAAE,CAAC,GAAEN,CAAC,GAAEyB,CAAC,CAAC,GAAE,OAAMA,GAAE,aAAY,oBAAI,IAAI,CAACgxB,EAAG,QAAQ,CAAC,EAAC;AAAC;AAAC,SAASgC,GAAc,GAAE/yB,GAAE,GAAE;ATArvmB,MAAAyI;ASAsvmB,MAAG,CAAC,KAAG,CAAC,EAAE,OAAO,OAAO,QAAM;AAAG,QAAM,IAAE,EAAE,OAAO,MAAK;AAAG,IAAE,QAAO;AAAG,MAAI9J,IAAEmyB,EAAG;AAAI,UAAO;IAAG,KAAI;AAAM,MAAAnyB,IAAEmyB,EAAG;AAAI;AAAA,IAAM,KAAI;AAAM,MAAAnyB,IAAEmyB,EAAG;AAAI;AAAA,IAAM,KAAI;AAAM,MAAAnyB,IAAEmyB,EAAG;AAAI;AAAA,IAAM,KAAI;AAAQ,MAAAnyB,IAAEmyB,EAAG;AAAM;AAAA,IAAM;AAAQ,aAAM;AAAA,EAAE;AAAC,MAAO,EAAE,WAAN,GAAa;AAAC,UAAM1yB,IAAEgzB,GAAY,EAAE,CAAC,EAAE,OAAMzyB,CAAC;AAAE,WAAOP,EAAE,gBAAcO,GAAEP,EAAE,YAAY,IAAI2yB,EAAG,gBAAgB,GAAY,OAAO3yB,EAAE,SAAnB,WAAyB,MAAIA,EAAE,QAAMA,EAAE,QAAM,EAAE,iBAAgBA;AAAA,EAAE;AAAC,SAAK,EAAE,UAAQ,KAAG;AAAC,UAAMA,IAAE,EAAE,IAAG,GAAGC,IAAE,EAAE,IAAG;AAAG,QAAG,CAACD,KAAG,CAACC,EAAE,QAAM;AAAG,UAAMC,IAAE+0B,GAAkB10B,GAAEqB,GAAE5B,EAAE,OAAMA,EAAE,YAAWC,EAAE,OAAMA,EAAE,UAAU;AAAE,QAAG,CAACC,EAAE;AAAS,MAAE,KAAK,EAAC,OAAMA,GAAE,YAAWF,EAAE,aAAWC,EAAE,WAAU,CAAC;AAAA,EAAC;AAAC,QAAMC,KAAEmK,IAAA,EAAE,CAAC,MAAH,gBAAAA,EAAM;AAAM,SAAM,CAAC,CAACnK,MAAI,EAAE,OAAO,KAAK,CAAAF,MAAGA,EAAE,MAAM,YAAY,IAAI2yB,EAAG,YAAY,CAAC,KAAGzyB,EAAE,YAAY,IAAIyyB,EAAG,YAAY,GAAY,OAAOzyB,EAAE,SAAnB,aAA2BA,EAAE,QAAMA,EAAE,QAAM,EAAE,iBAAoB,EAAE,OAAO,WAAb,KAAqBA,EAAE,YAAY,IAAIyyB,EAAG,gBAAgB,GAAEzyB;AAAG;AAAC,SAAS+0B,GAAkB,GAAErzB,GAAE,GAAE,GAAErB,GAAEL,GAAE;AAAC,QAAM8E,IAAE,KAAG,IAAE9E;AAAG,MAAIO,IAAE,GAAEoB,IAAE,GAAErB,IAAE,GAAEmB,IAAE,GAAE,IAAE,GAAE0D,IAAE,GAAEnC,IAAE,EAAE;AAAM,MAAa,OAAOA,KAAjB,SAAmB,QAAM;AAAG,MAAIiI,IAAE5K,EAAE;AAAM,MAAa,OAAO4K,KAAjB,SAAmB,QAAM;AAAG,EAAAjI,IAAE,OAAO,MAAMA,CAAC,IAAEiI,IAAEjI,GAAEiI,IAAE,OAAO,MAAMA,CAAC,IAAEjI,IAAEiI;AAAE,QAAMc,IAAE+mB,GAAY,GAAE,CAAC,EAAE,UAASvrB,IAAEurB,GAAYzyB,GAAE,CAAC,EAAE;AAAS,UAAO,GAAC;AAAA,IAAE,KAAKmyB,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAI,MAAAjyB,IAAEwL,EAAE,CAAC,GAAEpK,IAAE4F,EAAE,CAAC,GAAEjH,IAAEyL,EAAE,CAAC,GAAEtK,IAAE8F,EAAE,CAAC,GAAE,IAAEwE,EAAE,CAAC,GAAE5G,IAAEoC,EAAE,CAAC;AAAE;AAAA,IAAM,KAAKirB,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,MAAAlyB,IAAEyL,EAAE,CAAC,GAAEtK,IAAE8F,EAAE,CAAC,GAAE,IAAEwE,EAAE,CAAC,GAAE5G,IAAEoC,EAAE,CAAC,GAAEhH,IAAEwL,EAAE,CAAC,GAAEpK,IAAE4F,EAAE,CAAC;AAAA,EAAC;AAAC,EAAAhH,IAAEo0B,GAAuBp0B,GAAEoB,CAAC,GAAE,OAAO,MAAMpB,CAAC,MAAIA,IAAE,IAAGoB,IAAEgzB,GAAuBhzB,GAAEpB,CAAC,GAAE,OAAO,MAAMoB,CAAC,MAAIA,IAAE,IAAGrB,IAAEq0B,GAAuBr0B,GAAEmB,CAAC,GAAEA,IAAEkzB,GAAuBlzB,GAAEnB,CAAC,GAAE,IAAEq0B,GAAuB,GAAExvB,CAAC,GAAEA,IAAEwvB,GAAuBxvB,GAAE,CAAC;AAAE,QAAMwC,IAAEhG,IAAEpB;AAAE,UAAOmB;IAAG,KAAI;AAAU,MAAAiG,IAAE,MAAIpH,KAAG,MAAIoH,IAAE,SAAOhG,KAAG;AAAK;AAAA,IAAM,KAAI;AAAS,aAAKgG,KAAGA,IAAE,QAAMA,IAAE,IAAEpH,KAAG,MAAIoB,KAAG;AAAK;AAAA,IAAM,KAAI;AAAa,MAAAgG,IAAE,MAAIhG,KAAG;AAAK;AAAA,IAAM,KAAI;AAAa,MAAAgG,IAAE,MAAIpH,KAAG;AAAK;AAAA,IAAM;AAAQ,YAAM,IAAI,MAAM,kCAAkC;AAAA,EAAC;AAAC,EAAAD,IAAEs0B,GAAYt0B,GAAE0C,CAAC,GAAE,IAAE4xB,GAAY,GAAE5xB,CAAC,GAAEvB,IAAEmzB,GAAYnzB,GAAEwJ,CAAC,GAAE9F,IAAEyvB,GAAYzvB,GAAE8F,CAAC;AAAE,MAAIzG,IAAE,CAAC,GAAE,GAAE,CAAC;AAAE,QAAMzB,IAAE8xB,GAAY7xB,GAAEiI,GAAEnG,CAAC;AAAE,UAAO,GAAC;AAAA,IAAE,KAAK0tB,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAI,MAAAhuB,IAAE,CAACqwB,GAAYt0B,GAAEoB,GAAEmD,CAAC,GAAEgwB,GAAeD,GAAYv0B,GAAEmB,GAAEqD,CAAC,GAAE/B,CAAC,GAAE+xB,GAAeD,GAAY,GAAE1vB,GAAEL,CAAC,GAAE/B,CAAC,CAAC;AAAE;AAAA,IAAM,KAAKyvB,EAAG;AAAA,IAAI,KAAKA,EAAG;AAAM,MAAAhuB,IAAE,CAACswB,GAAeD,GAAYv0B,GAAEmB,GAAEqD,CAAC,GAAE/B,CAAC,GAAE+xB,GAAeD,GAAY,GAAE1vB,GAAEL,CAAC,GAAE/B,CAAC,GAAE8xB,GAAYt0B,GAAEoB,GAAEmD,CAAC,CAAC;AAAA,EAAC;AAAC,SAAM,EAAC,eAAc,GAAE,UAASN,GAAE,OAAMzB,GAAE,aAAY,oBAAI,IAAI,CAAC0vB,EAAG,QAAQ,CAAC,EAAC;AAAC;AAAC,SAASkC,GAAuB,GAAEjzB,GAAE;AAAC,SAAO,OAAO,MAAM,CAAC,IAAEA,IAAE;AAAC;AAAC,SAASmzB,GAAY,GAAEnzB,GAAE,GAAE;AAAC,SAAO,IAAE,IAAEA,KAAG,IAAE;AAAE;AAAC,SAASkzB,GAAY,GAAElzB,GAAE;AAAC,SAAO,OAAO,MAAMA,CAAC,IAAE,IAAE,OAAO,MAAM,CAAC,IAAE,OAAO,MAAI,IAAEA;AAAC;AAAC,SAASozB,GAAe,GAAEpzB,GAAE;AAAC,SAAWA,MAAJ,KAAO,OAAO,MAAMA,CAAC,IAAE,IAAE,OAAO,MAAM,CAAC,IAAE,OAAO,MAAI,IAAEA;AAAC;AAAC,SAASwe,GAAI,GAAE;AAAC,QAAMxe,IAAE2E,GAAc,EAAE,CAAC,EAAE,KAAK;AAAE,MAAG3E,EAAE,MAAM,WAAW,EAAE,QAAM;AAAG,QAAM,IAAE,EAAC,eAAc8wB,EAAG,KAAI,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAACC,EAAG,GAAG,CAAC,EAAC,GAAE,IAAE/wB,EAAE;AAAO,MAAO,MAAJ,GAAM;AAAC,UAAM5B,IAAE4B,EAAE,CAAC,GAAEvB,IAAEuB,EAAE,CAAC,GAAErB,IAAEqB,EAAE,CAAC;AAAE,WAAO,EAAE,WAAS,CAAC,SAAS5B,IAAEA,GAAE,EAAE,IAAE,KAAI,SAASK,IAAEA,GAAE,EAAE,IAAE,KAAI,SAASE,IAAEA,GAAE,EAAE,IAAE,GAAG,GAAE;AAAA,EAAC;AAAC,MAAO,MAAJ,GAAM;AAAC,UAAMP,IAAE4B,EAAE,CAAC,IAAEA,EAAE,CAAC,GAAEvB,IAAEuB,EAAE,CAAC,IAAEA,EAAE,CAAC,GAAErB,IAAEqB,EAAE,CAAC,IAAEA,EAAE,CAAC;AAAE,WAAO,EAAE,WAAS,CAAC,SAAS5B,GAAE,EAAE,IAAE,KAAI,SAASK,GAAE,EAAE,IAAE,KAAI,SAASE,GAAE,EAAE,IAAE,GAAG,GAAE;AAAA,EAAC;AAAC,MAAO,MAAJ,GAAM;AAAC,UAAMP,IAAE4B,EAAE,CAAC,GAAEvB,IAAEuB,EAAE,CAAC,GAAErB,IAAEqB,EAAE,CAAC,GAAE1B,IAAE0B,EAAE,CAAC;AAAE,WAAO,EAAE,WAAS,CAAC,SAAS5B,IAAEA,GAAE,EAAE,IAAE,KAAI,SAASK,IAAEA,GAAE,EAAE,IAAE,KAAI,SAASE,IAAEA,GAAE,EAAE,IAAE,GAAG,GAAE,EAAE,QAAM,SAASL,IAAEA,GAAE,EAAE,IAAE,KAAI,EAAE,YAAY,IAAIyyB,EAAG,QAAQ,GAAE;AAAA,EAAC;AAAC,MAAO,MAAJ,GAAM;AAAC,UAAM3yB,IAAE4B,EAAE,CAAC,IAAEA,EAAE,CAAC,GAAEvB,IAAEuB,EAAE,CAAC,IAAEA,EAAE,CAAC,GAAErB,IAAEqB,EAAE,CAAC,IAAEA,EAAE,CAAC,GAAE1B,IAAE0B,EAAE,CAAC,IAAEA,EAAE,CAAC;AAAE,WAAO,EAAE,WAAS,CAAC,SAAS5B,GAAE,EAAE,IAAE,KAAI,SAASK,GAAE,EAAE,IAAE,KAAI,SAASE,GAAE,EAAE,IAAE,GAAG,GAAE,EAAE,QAAM,SAASL,GAAE,EAAE,IAAE,KAAI,EAAE,YAAY,IAAIyyB,EAAG,QAAQ,GAAE;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASuC,GAAaj1B,GAAE;AAAC,MAAGM,EAAEN,CAAC,EAAE,QAAOA,EAAE,CAAC,EAAE,QAAMA,EAAE,CAAC,EAAE,QAAM,KAAIA,EAAE,CAAC,IAAEA,EAAE,CAAC,EAAE,MAAM,YAAWA;AAAE,MAAG4B,GAAE5B,CAAC,GAAE;AAAC,QAAII,IAAEJ,EAAE,CAAC,EAAE;AAAM,YAAOsG,GAActG,EAAE,CAAC,EAAE,IAAI,GAAC;AAAA,MAAE,KAAI;AAAM;AAAA,MAAM,KAAI;AAAM,QAAAI,IAAE,MAAIJ,EAAE,CAAC,EAAE,QAAM,KAAK;AAAG;AAAA,MAAM,KAAI;AAAO,QAAAI,IAAE,MAAGJ,EAAE,CAAC,EAAE;AAAM;AAAA,MAAM,KAAI;AAAO,QAAAI,IAAE,MAAIJ,EAAE,CAAC,EAAE;AAAM;AAAA,MAAM;AAAQ,eAAM;AAAA,IAAE;AAAC,WAAOI,KAAG,KAAI,CAACL,EAAE,QAAOK,EAAE,SAAQ,GAAGJ,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMI,GAAE,MAAKuB,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASuzB,GAAmCl1B,GAAE,GAAE+E,GAAE;AAAC,MAAO,MAAJ,GAAM;AAAC,UAAMhF,IAAEk1B,GAAaj1B,CAAC;AAAE,WAAWD,MAAL,OAAS6B,GAAE5B,CAAC,KAAG+E,EAAE,YAAY,IAAI2tB,EAAG,kBAAkB,GAAE3yB;AAAA,EAAE;AAAC,MAAGK,GAAEJ,CAAC,GAAE;AAAC,IAAI,MAAJ,IAAM+E,EAAE,YAAY,IAAI2tB,EAAG,kBAAkB,IAAE3tB,EAAE,YAAY,IAAI2tB,EAAG,mBAAmB;AAAE,QAAI,IAAEY,EAAUtzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW,MAAJ,MAAQ,IAAEszB,EAAUtzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACD,EAAE,QAAO,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEN,CAAC,GAAE;AAAC,QAAO,MAAJ,EAAM,QAAM;AAAG,QAAI,IAAEszB,EAAUtzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW,MAAJ,MAAQ,IAAEszB,EAAUtzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACD,EAAE,QAAO,EAAE,YAAWC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASwzB,GAAmCl1B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAOoD,MAAJ,GAAM;AAAC,UAAMhF,IAAEk1B,GAAah1B,CAAC;AAAE,WAAWF,MAAL,OAAS6B,GAAE3B,CAAC,KAAGO,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,GAAE3yB;AAAA,EAAE;AAAC,MAAGK,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,IAAMvE,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,IAAElyB,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEC,EAAE,CAAC,EAAE;AAAM,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,UAAU,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEC,EAAE,CAAC,EAAE;AAAM,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,UAAU,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASyzB,GAAyB,GAAEzzB,GAAE,GAAE,GAAE;AAAC,QAAM1B,IAAE,IAAG2B,IAAE,CAAA,GAAGrB,IAAE,CAAA,GAAGmB,IAAE,CAAA,GAAGyD,IAAE,EAAC,eAAc,GAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,IAAI,IAAI,CAAC,EAAC;AAAE,MAAIC,IAAEnF;AAAE,WAAQ0B,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,QAAI3B,IAAE,EAAE,MAAM2B,CAAC;AAAE,QAAG,CAACgyB,GAAG3zB,CAAC,KAAG,CAAC4zB,GAAG5zB,CAAC,GAAE;AAAC,UAAG6zB,EAAG7zB,CAAC,KAAGQ,GAAER,EAAE,KAAK,GAAE;AAAC,YAAGoF,MAAInF,GAAE;AAAC,UAAAmF,IAAExD;AAAE;AAAA,QAAQ;AAAC,YAAGwD,MAAIxD,GAAE;AAAC,UAAAwD,IAAE7E;AAAE;AAAA,QAAQ;AAAC,YAAG6E,MAAI7E,GAAE;AAAC,UAAA6E,IAAE1D;AAAE;AAAA,QAAQ;AAAC,YAAG0D,MAAI1D,EAAE,QAAM;AAAA,MAAE;AAAC,UAAGoyB,GAAG9zB,CAAC,GAAE;AAAC,YAAGoF,MAAI1D,KAAW1B,EAAE,QAAO,EAAG,YAAW,MAA/B,OAAkC;AAAC,UAAAmF,EAAE,YAAY,IAAIutB,EAAG,gBAAgB,GAAEttB,EAAE,KAAKpF,CAAC;AAAE;AAAA,QAAQ;AAAC,YAAG,CAAC+zB,GAAG,IAAI/zB,EAAE,QAAO,EAAG,YAAW,CAAE,EAAE;AAAS,cAAK,CAAC,CAACD,CAAC,CAAC,IAAEi0B,GAAG,CAAC,CAACh0B,CAAC,CAAC,GAAE,EAAC,uCAAsC,IAAG,WAAU,IAAG,kBAAiB,IAAG,gBAAe,GAAE,CAAC;AAAE,YAAG,CAACD,KAAG,CAAC8zB,EAAG9zB,CAAC,KAAG,CAACgF,GAAEhF,EAAE,KAAK,EAAE,QAAM;AAAG,eAAO,MAAMA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAIA,EAAE,MAAM,CAAC,EAAE,QAAM,IAAGC,IAAED;AAAA,MAAC;AAAC,UAAG,CAAC8zB,EAAG7zB,CAAC,EAAE,QAAM;AAAG,MAAAoF,EAAE,KAAKpF,CAAC;AAAA,IAAC;AAAA,EAAC;AAA+E,MAAvEoF,EAAE,WAAN,KAA6BnF,EAAE,WAAN,KAAkB2B,EAAE,WAAN,KAAkBrB,EAAE,WAAN,KAAyB,CAACszB,EAAG5zB,EAAE,CAAC,CAAC,KAAG,CAAC4zB,EAAGjyB,EAAE,CAAC,CAAC,KAAG,CAACiyB,EAAGtzB,EAAE,CAAC,CAAC,EAAE,QAAM;AAAG,QAAM0C,IAAEtB,EAAE1B,EAAE,CAAC,EAAE,OAAM,GAAEkF,CAAC;AAAE,MAAG,CAAClC,KAAG,CAAC3C,EAAE2C,CAAC,EAAE,QAAM;AAAG,QAAMiI,IAAEvJ,EAAEC,EAAE,CAAC,EAAE,OAAM,GAAEuD,CAAC;AAAE,MAAG,CAAC+F,KAAG,CAAC5K,EAAE4K,CAAC,EAAE,QAAM;AAAG,QAAMc,IAAErK,EAAEpB,EAAE,CAAC,EAAE,OAAM,GAAE4E,CAAC;AAAE,MAAG,CAAC6G,KAAG,CAAC1L,EAAE0L,CAAC,EAAE,QAAM;AAAG,QAAMxE,IAAE,CAACvE,GAAEiI,GAAEc,CAAC;AAAE,MAAOtK,EAAE,WAAN,EAAa,KAAGyD,EAAE,YAAY,IAAIutB,EAAG,QAAQ,GAAEmB,EAAGnyB,EAAE,CAAC,CAAC,GAAE;AAAC,UAAM3B,IAAE4B,EAAED,EAAE,CAAC,EAAE,OAAM,GAAEyD,CAAC;AAAE,QAAG,CAACpF,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,IAAAyH,EAAE,KAAKzH,CAAC;AAAA,EAAC,MAAM,CAAAoF,EAAE,QAAMzD,EAAE,CAAC;AAAE,SAAOyD,EAAE,WAAS,CAACqC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAMA,EAAE,WAAN,MAAerC,EAAE,QAAMqC,EAAE,CAAC,EAAE,CAAC,EAAE,QAAOrC;AAAC;AAAC,SAASkwB,GAA2B,GAAE1zB,GAAEvB,GAAEI,GAAEoB,GAAE;AAAC,QAAMrB,IAAE,CAAA,GAAGmB,IAAE,IAAGyD,IAAE,CAAA,GAAGC,IAAE,CAAA;AAAG,MAAInC,GAAEiI,GAAEc,IAAE;AAAG,QAAMxE,IAAE,EAAC,eAAcpH,GAAE,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,IAAI,IAAII,CAAC,EAAC;AAAE,MAAI,IAAED;AAAE,WAAQoB,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,QAAIrB,IAAE,EAAE,MAAMqB,CAAC;AAAE,QAAGgyB,GAAGrzB,CAAC,KAAGszB,GAAGtzB,CAAC,EAAE,QAAKqzB,GAAG,EAAE,MAAMhyB,IAAE,CAAC,CAAC,KAAGiyB,GAAG,EAAE,MAAMjyB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAA,aAAY,MAAIpB,KAAGA,EAAE,WAAS,IAAEmB,IAAG,MAAIA,KAAGA,EAAE,WAAS,IAAEyD,IAAG0uB,EAAGvzB,CAAC,KAAGL,GAAEK,EAAE,KAAK,KAASA,EAAE,MAAM,CAAC,EAAE,UAAjB,KAAuB;AAAC,UAAG,MAAI8E,EAAE,QAAM;AAAG,UAAEA;AAAA,IAAC,OAAK;AAAC,UAAG0uB,GAAGxzB,CAAC,GAAE;AAAC,YAAG,MAAI8E,KAAW9E,EAAE,QAAO,EAAG,YAAW,MAA/B,OAAkC;AAAC,UAAAkH,EAAE,YAAY,IAAIkrB,EAAG,gBAAgB,GAAE,EAAE,KAAKpyB,CAAC;AAAE;AAAA,QAAQ;AAAC,YAAG,CAACyzB,GAAG,IAAIzzB,EAAE,QAAO,EAAG,YAAW,CAAE,EAAE,QAAM;AAAG,cAAK,CAAC,CAACP,CAAC,CAAC,IAAEi0B,GAAG,CAAC,CAAC1zB,CAAC,CAAC,GAAE,EAAC,uCAAsC,IAAG,SAAQ4K,GAAE,WAAU,IAAG,kBAAiB,IAAG,gBAAe,GAAE,CAAC;AAAE,YAAG,CAACnL,KAAG,CAAC8zB,EAAG9zB,CAAC,KAAG,CAACgF,GAAEhF,EAAE,KAAK,EAAE,QAAM;AAAG,eAAO,MAAMA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAIA,EAAE,MAAM,CAAC,EAAE,QAAM,IAAGO,IAAEP;AAAA,MAAC;AAAC,UAAG,MAAIQ,KAAOA,EAAE,WAAN,KAAcszB,EAAGvzB,CAAC,KAAGN,GAAEM,EAAE,KAAK,KAAYA,EAAE,MAAM,CAAC,EAAE,MAAM,kBAA1B,QAAwC;AAAC,YAAG0L,EAAE;AAAS,eAAK2nB,GAAG,EAAE,MAAMhyB,IAAE,CAAC,CAAC,KAAGiyB,GAAG,EAAE,MAAMjyB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAI,YAAGA,KAAIrB,IAAE,EAAE,MAAMqB,CAAC,GAAEqK,IAAEpK,EAAEtB,CAAC,GAAO0L,MAAL,GAAO;AAAS,QAAAA,EAAE,YAAY,IAAI0mB,EAAG,YAAY,KAAGlrB,EAAE,YAAY,IAAIkrB,EAAG,YAAY,GAAElrB,EAAE,YAAY,IAAIkrB,EAAG,mBAAmB,GAAE1mB,EAAE,kBAAgB5L,MAAI4L,IAAE+mB,GAAY/mB,GAAE5L,CAAC,IAAG6C,IAAEkwB,GAAmCnnB,CAAC,GAAEd,IAAEmoB,GAAsCpwB,CAAC;AAAA,MAAC,OAAK;AAAC,YAAG,CAAC4wB,EAAGvzB,CAAC,EAAE,QAAM;AAAG,YAAGN,GAAEM,EAAE,KAAK,KAAG2C,GAAE;AAAC,gBAAMlD,IAAEO,EAAE,MAAM,CAAC,EAAE,MAAM;AAAc,cAAG2C,EAAE,IAAIlD,CAAC,GAAE;AAAC,cAAE,KAAK,IAAIm0B,EAAGjxB,EAAE,IAAIlD,CAAC,CAAC,CAAC;AAAE;AAAA,UAAQ;AAAA,QAAC;AAAC,UAAE,KAAKO,CAAC;AAAA,MAAC;AAAA,IAAC;AAAA,EAAC;AAA2H,MAAnH,EAAE,WAAN,KAA6BC,EAAE,WAAN,KAAkBmB,EAAE,WAAN,KAAkByD,EAAE,WAAN,KAAyB,CAAC0uB,EAAGtzB,EAAE,CAAC,CAAC,KAAG,CAACszB,EAAGnyB,EAAE,CAAC,CAAC,KAAG,CAACmyB,EAAG1uB,EAAE,CAAC,CAAC,KAAclC,KAAG,CAACA,EAAE,IAAI,OAAO,EAAE,QAAM;AAAG,QAAMwB,IAAE9C,EAAEpB,EAAE,CAAC,EAAE,OAAM,GAAEiH,CAAC;AAAE,MAAG,CAAC/C,KAAG,CAACnE,EAAEmE,CAAC,EAAE,QAAM;AAAG,QAAMzB,IAAErB,EAAED,EAAE,CAAC,EAAE,OAAM,GAAE8F,CAAC;AAAE,MAAG,CAACxE,KAAG,CAAC1C,EAAE0C,CAAC,EAAE,QAAM;AAAG,QAAMyD,IAAE9E,EAAEwD,EAAE,CAAC,EAAE,OAAM,GAAEqC,CAAC;AAAE,MAAG,CAACf,KAAG,CAACnG,EAAEmG,CAAC,EAAE;AAAS,QAAMyF,IAAE,CAACzH,GAAEzB,GAAEyD,CAAC;AAAE,MAAOrB,EAAE,WAAN,EAAa,KAAGoC,EAAE,YAAY,IAAIkrB,EAAG,QAAQ,GAAEmB,EAAGzuB,EAAE,CAAC,CAAC,GAAE;AAAC,UAAMrF,IAAE4B,EAAEyD,EAAE,CAAC,EAAE,OAAM,GAAEoC,CAAC;AAAE,QAAG,CAACzH,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,IAAAmM,EAAE,KAAKnM,CAAC;AAAA,EAAC,MAAM,CAAAyH,EAAE,QAAMpC,EAAE,CAAC;AAAA,WAAUnC,KAAGA,EAAE,IAAI,OAAO,GAAE;AAAC,UAAMlD,IAAE4B,EAAEsB,EAAE,IAAI,OAAO,GAAE,GAAEuE,CAAC;AAAE,QAAG,CAACzH,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,IAAAmM,EAAE,KAAKnM,CAAC;AAAA,EAAC;AAAC,SAAOyH,EAAE,WAAS,CAAC0E,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,OAAMA,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,GAAMA,EAAE,WAAN,MAAe1E,EAAE,QAAM0E,EAAE,CAAC,EAAE,CAAC,EAAE,QAAO1E;AAAC;AAAC,SAAS8tB,GAAI,GAAE3zB,GAAE;AAAC,MAAG,EAAE,MAAM,KAAK,CAAA5B,MAAG8zB,EAAG9zB,CAAC,KAAGS,GAAET,EAAE,KAAK,CAAC,GAAE;AAAC,UAAM4B,IAAE4zB,GAAkB,CAAC;AAAE,QAAQ5zB,MAAL,GAAO,QAAOA;AAAA,EAAC;AAAC;AAAC,UAAM,IAAE6zB,GAAkB,GAAE7zB,CAAC;AAAE,QAAQ,MAAL,GAAO,QAAO;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS4zB,GAAkB,GAAE;AAAC,SAAOH,GAAyB,GAAEF,IAAmCzC,EAAG,KAAI,CAACC,EAAG,SAAS,CAAC;AAAC;AAAC,SAAS8C,GAAkB,GAAE7zB,GAAE;AAAC,SAAO0zB,GAA2B,GAAEF,IAAmC1C,EAAG,KAAI,CAAA,GAAG9wB,CAAC;AAAC;AAAC,SAAS8zB,GAA4Bx1B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAOoD,MAAJ,GAAM;AAAC,UAAMhF,IAAEk1B,GAAah1B,CAAC;AAAE,WAAWF,MAAL,OAAS6B,GAAE3B,CAAC,KAAGO,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,GAAE3yB;AAAA,EAAE;AAAC,MAAGK,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,IAAMvE,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,IAAElyB,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEC,EAAE,CAAC,EAAE;AAAM,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEC,EAAE,CAAC,EAAE;AAAM,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS+zB,GAA4Bz1B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAGvB,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW8E,MAAJ,KAAWA,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAG,aAAY,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW8E,MAAJ,KAAWA,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,aAAY,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASg0B,GAAI,GAAEh0B,GAAE;AAAC,SAAO0zB,GAA2B,GAAEK,IAA4BjD,EAAG,KAAI,CAAA,GAAG9wB,CAAC;AAAC;AAAC,SAASi0B,GAA4B31B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAOoD,MAAJ,GAAM;AAAC,UAAMhF,IAAEk1B,GAAah1B,CAAC;AAAE,WAAWF,MAAL,OAAS6B,GAAE3B,CAAC,KAAGO,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,GAAE3yB;AAAA,EAAE;AAAC,MAAGK,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,MAAI,KAAI,GAAE,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,YAAWC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,GAAG;AAAE,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASk0B,GAAI,GAAEl0B,GAAE;AAAC,SAAO0zB,GAA2B,GAAEO,IAA4BnD,EAAG,KAAI,IAAG9wB,CAAC;AAAC;AAAC,MAAMm0B,KAAG,oBAAI;AAAI,WAAS,CAAC,GAAEn0B,CAAC,KAAI,OAAO,QAAQ2F,EAAC,EAAE,CAAAwuB,GAAG,IAAI,GAAEn0B,CAAC;AAAE,SAASo0B,GAAW,GAAE;AAAC,QAAMp0B,IAAEm0B,GAAG,IAAIxvB,GAAc,CAAC,CAAC;AAAE,SAAM,CAAC,CAAC3E,KAAG,EAAC,eAAc8wB,EAAG,KAAI,UAAS,CAAC9wB,EAAE,CAAC,IAAE,KAAIA,EAAE,CAAC,IAAE,KAAIA,EAAE,CAAC,IAAE,GAAG,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAAC+wB,EAAG,cAAaA,EAAG,UAAU,CAAC,EAAC;AAAC;AAAC,SAASsD,GAA8B/1B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAGvB,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC;AAAE,WAAW8E,MAAJ,KAAWA,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,aAAY,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC;AAAE,WAAW8E,MAAJ,KAAWA,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,aAAY,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASs0B,GAAM,GAAEt0B,GAAE;AAAC,SAAO0zB,GAA2B,GAAEW,IAA8BvD,EAAG,OAAM,CAAA,GAAG9wB,CAAC;AAAC;AAAC,SAASu0B,GAA8Bj2B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYqG,GAAcrG,EAAE,CAAC,EAAE,KAAK,MAAjC,OAAmC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAOoD,MAAJ,GAAM;AAAC,UAAMhF,IAAEk1B,GAAah1B,CAAC;AAAE,WAAWF,MAAL,OAAS6B,GAAE3B,CAAC,KAAGO,EAAE,YAAY,IAAIkyB,EAAG,kBAAkB,GAAE3yB;AAAA,EAAE;AAAC,MAAGK,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC;AAAE,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC;AAAE,WAAW8E,MAAJ,IAAM/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,UAAU,IAAM8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASw0B,GAAM,GAAEx0B,GAAE;AAAC,SAAO0zB,GAA2B,GAAEa,IAA8BzD,EAAG,OAAM,CAAA,GAAG9wB,CAAC;AAAC;AAAC,SAASy0B,GAAoCp2B,GAAE,GAAE+E,GAAE;AAAC,MAAG3E,GAAEJ,CAAC,GAAE;AAAC,IAAI,MAAJ,IAAM+E,EAAE,YAAY,IAAI2tB,EAAG,kBAAkB,IAAE3tB,EAAE,YAAY,IAAI2tB,EAAG,mBAAmB;AAAE,UAAM,IAAEY,EAAUtzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC;AAAE,WAAM,CAACD,EAAE,QAAO,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEN,CAAC,GAAE;AAAC,IAAI,MAAJ,KAAO+E,EAAE,YAAY,IAAI2tB,EAAG,eAAe;AAAE,QAAI,IAAEY,EAAUtzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC;AAAE,WAAW,MAAJ,MAAQ,IAAEszB,EAAUtzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACD,EAAE,QAAO,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC;AAAQ;AAAC,SAAS00B,GAAoCp2B,GAAE8E,GAAEvE,GAAE;AAAC,MAAGR,GAAEC,CAAC,KAAYA,EAAE,CAAC,EAAE,MAAM,YAAW,MAA/B,OAAkC,QAAOO,EAAE,YAAY,IAAIkyB,EAAG,eAAe,GAAE,CAAC3yB,EAAE,QAAO,QAAOE,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAM,OAAO,KAAI,MAAK0B,EAAE,OAAM,CAAC;AAAE,MAAGvB,GAAEH,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,mBAAmB;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,aAAY,UAAU;AAAE,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,MAAGrB,EAAEL,CAAC,GAAE;AAAC,IAAI8E,MAAJ,KAAOvE,EAAE,YAAY,IAAIkyB,EAAG,eAAe;AAAE,QAAI1yB,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,KAAI,aAAY,UAAU;AAAE,WAAW8E,MAAJ,MAAQ/E,IAAEszB,EAAUrzB,EAAE,CAAC,EAAE,OAAM,GAAE,GAAE,CAAC,IAAG,CAACF,EAAE,QAAOC,EAAE,SAAQ,GAAGC,EAAE,CAAC,GAAEA,EAAE,CAAC,GAAE,EAAC,OAAMD,GAAE,MAAK2B,EAAE,OAAM,CAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAASof,GAAI,GAAEpf,GAAE;AAAC,MAAG,EAAE,MAAM,KAAK,CAAA5B,MAAG8zB,EAAG9zB,CAAC,KAAGS,GAAET,EAAE,KAAK,CAAC,GAAE;AAAC,UAAM4B,IAAE20B,GAAkB,CAAC;AAAE,QAAQ30B,MAAL,GAAO,SAAO,CAACA,EAAE,YAAY,IAAI+wB,EAAG,eAAe,KAAG,CAAC/wB,EAAE,YAAY,IAAI+wB,EAAG,mBAAmB,MAAI/wB;AAAA,EAAC,OAAK;AAAC,UAAM,IAAE40B,GAAkB,GAAE50B,CAAC;AAAE,QAAQ,MAAL,GAAO,QAAO;AAAA,EAAC;AAAC,SAAM;AAAE;AAAC,SAAS20B,GAAkB,GAAE;AAAC,SAAOlB,GAAyB,GAAEgB,IAAoC3D,EAAG,KAAI,CAACC,EAAG,SAAS,CAAC;AAAC;AAAC,SAAS6D,GAAkB,GAAE50B,GAAE;AAAC,SAAO0zB,GAA2B,GAAEgB,IAAoC5D,EAAG,KAAI,IAAG9wB,CAAC;AAAC;AAAC,SAAS60B,GAAsB,GAAE;AAAC,QAAM70B,IAAEiF,GAAE,CAAC;AAAE,MAAG+D,GAAEhJ,CAAC,EAAE,QAAOiuB,GAAEjuB,CAAC;AAAE,MAAI,IAAE;AAAE,SAAO,IAAEsB,GAAE,CAAC,GAAE,EAAE,CAAC,IAAE,SAAO,IAAE,CAAC,GAAE,GAAE,CAAC,IAAG,EAAE,CAAC,IAAE,aAAU,IAAE,CAAC,GAAE,GAAE,CAAC,IAAGwzB,GAAExrB,GAAE,GAAEyrB,IAAkBC,EAAiB,CAAC;AAAC;AAAC,SAASD,GAAkB,GAAE;AAAC,SAAO,IAAEnwB,GAAE,CAAC,GAAE,IAAEO,GAAE,CAAC,GAAEC,GAAE,CAAC;AAAC;AAAC,SAAS4vB,GAAkB,GAAE;AAAC,SAAO,IAAEtwB,GAAE,CAAC,GAAE,IAAEY,GAAE,CAAC,GAAEC,GAAE,CAAC;AAAC;AAAC,SAAS0vB,GAAc,GAAEj1B,GAAE;AAAC,MAAI,IAAE;AAAG,WAAQvB,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,UAAME,IAAE,EAAE,MAAMF,CAAC;AAAE,QAAG,CAACuzB,GAAGrzB,CAAC,KAAG,CAACszB,GAAGtzB,CAAC,MAAI,MAAI,IAAEqB,EAAErB,CAAC,GAAE,CAAC,IAAI,QAAM;AAAA,EAAE;AAAC,MAAG,CAAC,EAAE,QAAM;AAAG,IAAE,WAASqyB,GAAiB,EAAE,QAAQ,GAAE,EAAE,WAAS6D,GAAsB5D,GAAqB,CAAC,EAAE,QAAQ,GAAE,EAAE,gBAAcH,EAAG;AAAK,QAAM,IAAE,EAAC,eAAcA,EAAG,MAAK,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAACC,EAAG,eAAcA,EAAG,YAAY,CAAC,EAAC,GAAEpyB,IAAEiK,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC,GAAEtK,IAAEsK,GAAE,EAAE,UAAS,CAAC,GAAE,GAAE,CAAC,CAAC;AAAE,SAAO,EAAE,WAASjK,IAAEL,IAAE,CAAC,GAAE,GAAE,CAAC,IAAE,CAAC,GAAE,GAAE,CAAC,GAAE;AAAC;AAAC,SAASme,GAAM,GAAEzc,GAAE;AAAC,MAAIvB,GAAEI,GAAEoB,IAAE,IAAGrB,IAAE,IAAGmB,IAAE;AAAG,QAAMyD,IAAE,EAAC,eAAcstB,EAAG,MAAK,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAAA,CAAE,EAAC;AAAE,WAAQrtB,IAAE,GAAEA,IAAE,EAAE,MAAM,QAAOA,KAAI;AAAC,QAAInC,IAAE,EAAE,MAAMmC,CAAC;AAAE,QAAGuuB,GAAG1wB,CAAC,KAAG2wB,GAAG3wB,CAAC,EAAE,QAAK0wB,GAAG,EAAE,MAAMvuB,IAAE,CAAC,CAAC,KAAGwuB,GAAG,EAAE,MAAMxuB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAA,aAAY1D,KAAG,CAACE,KAAG,CAACrB,KAAGszB,EAAG5wB,CAAC,KAAGhD,GAAEgD,EAAE,KAAK,KAASA,EAAE,MAAM,CAAC,EAAE,UAAjB,IAAuB,CAAArB,IAAE;AAAA,SAAO;AAAC,UAAGkyB,GAAG7wB,CAAC,KAAG8wB,GAAG,IAAIztB,GAAcrD,EAAE,QAAO,CAAE,CAAC,GAAE;AAAC,cAAK,CAAC,CAAClD,CAAC,CAAC,IAAEi0B,GAAG,CAAC,CAAC/wB,CAAC,CAAC,GAAE,EAAC,uCAAsC,IAAG,SAAQzC,GAAE,WAAU,IAAG,kBAAiB,IAAG,gBAAe,GAAE,CAAC;AAAE,YAAG,CAACT,KAAG,CAAC8zB,EAAG9zB,CAAC,KAAG,CAACgF,GAAEhF,EAAE,KAAK,EAAE,QAAM;AAAG,eAAO,MAAMA,EAAE,MAAM,CAAC,EAAE,KAAK,MAAIA,EAAE,MAAM,CAAC,EAAE,QAAM,IAAGkD,IAAElD;AAAA,MAAC;AAAC,UAAG6B,KAAGrB,KAAG,CAACszB,EAAG5wB,CAAC,KAAG,CAACjD,GAAEiD,EAAE,KAAK,KAAYqD,GAAcrD,EAAE,MAAM,CAAC,EAAE,KAAK,MAAvC,QAAyC;AAAgB,YAAZ,CAACrB,KAAcrB,EAAE,QAAM;AAAG,YAAGszB,EAAG5wB,CAAC,GAAE;AAAC,cAAGjD,GAAEiD,EAAE,KAAK,KAAaqD,GAAcrD,EAAE,MAAM,CAAC,EAAE,KAAK,MAAxC,WAA2C7C,KAAGA,EAAE,IAAI,OAAO,GAAE;AAAC,YAAA+E,EAAE,QAAM/E,EAAE,IAAI,OAAO,EAAE,CAAC,EAAE,OAAMG,IAAE;AAAG;AAAA,UAAQ;AAAC,gBAAMR,IAAEyzB,GAA8BvwB,EAAE,OAAM,GAAEkC,CAAC;AAAE,cAAG,CAACpF,KAAG,CAACO,EAAEP,CAAC,EAAE,QAAM;AAAG,UAAAoF,EAAE,QAAM,IAAI+uB,EAAGn0B,CAAC,GAAEQ,IAAE;AAAG;AAAA,QAAQ;AAAC,YAAGuzB,GAAG7wB,CAAC,GAAE;AAAC,gBAAMlD,IAAE82B,GAAG,CAAC,CAAC5zB,CAAC,CAAC,GAAE,CAAAlD,MAAG;AAAC,gBAAG8zB,EAAG9zB,CAAC,KAAGC,GAAED,EAAE,KAAK,KAAauG,GAAcvG,EAAE,MAAM,CAAC,EAAE,KAAK,MAAxC,WAA2CK,KAAGA,EAAE,IAAI,OAAO,EAAE,QAAO,IAAI8zB,EAAG9zB,EAAE,IAAI,OAAO,CAAC;AAAA,UAAC,CAAC;AAAE,UAAA+E,EAAE,QAAMpF,EAAE,CAAC,EAAE,CAAC,GAAEQ,IAAE;AAAG;AAAA,QAAQ;AAAC;MAAQ;AAAC,UAAGmB,EAAE,QAAM;AAAG,aAAKiyB,GAAG,EAAE,MAAMvuB,IAAE,CAAC,CAAC,KAAGwuB,GAAG,EAAE,MAAMxuB,IAAE,CAAC,CAAC,IAAG,CAAAA;AAAI,UAAGA,KAAInC,IAAE,EAAE,MAAMmC,CAAC,GAAE1D,IAAEC,EAAEsB,CAAC,GAAOvB,MAAL,GAAO,QAAM;AAAG,MAAAtB,IAAE+yB,GAAmCzxB,CAAC,GAAElB,IAAE6yB,GAAsCjzB,CAAC,GAAE+E,EAAE,cAAY,IAAI,IAAIzD,EAAE,WAAW,GAAEyD,EAAE,YAAY,IAAIutB,EAAG,mBAAmB,GAAEvtB,EAAE,WAAS,CAAC,GAAGzD,EAAE,QAAQ,GAAEyD,EAAE,gBAAczD,EAAE,eAAcyD,EAAE,QAAMzD,EAAE;AAAA,IAAK;AAAA,EAAC;AAAC,SAAM,CAAC,CAACtB,KAAG+E;AAAC;AAA27J,SAASgpB,GAAM,GAAE;AAAC,MAAG2F,GAAG,CAAC;AAAG,YAAOxtB,GAAc,EAAE,QAAO,CAAE,GAAC;AAAA,MAAE,KAAI;AAAA,MAAM,KAAI;AAAO,eAAOya,GAAI,GAAEoN,EAAK;AAAA,MAAE,KAAI;AAAA,MAAM,KAAI;AAAO,eAAOmH,GAAI,GAAEnH,EAAK;AAAA,MAAE,KAAI;AAAM,eAAOxsB,IAAEwsB,IAAMkH,GAA2B,GAAEI,IAA4BhD,EAAG,KAAI,CAAA,GAAG9wB,CAAC;AAAA,MAAE,KAAI;AAAM,eAAOg0B,GAAI,GAAExH,EAAK;AAAA,MAAE,KAAI;AAAM,eAAO0H,GAAI,GAAE1H,EAAK;AAAA,MAAE,KAAI;AAAQ,eAAO8H,GAAM,GAAE9H,EAAK;AAAA,MAAE,KAAI;AAAQ,eAAOgI,GAAM,GAAEhI,EAAK;AAAA,MAAE,KAAI;AAAQ,eAAOuF,GAAQ,GAAEvF,EAAK;AAAA,MAAE,KAAI;AAAY,eAAOmG,GAAS,GAAEnG,EAAK;AAAA,MAAE,KAAI;AAAiB,eAAOyI,GAAc,GAAEzI,EAAK;AAAA,MAAE,KAAI;AAAQ,eAAO/P,GAAM,GAAE+P,EAAK;AAAA,IAAC;AAAE,MAAIxsB;AAAE,MAAGkyB,EAAG,CAAC,GAAE;AAAC,QAAGtzB,GAAE,EAAE,KAAK,EAAE,QAAO4f,GAAI,EAAE,KAAK;AAAE,QAAGngB,GAAE,EAAE,KAAK,GAAE;AAAC,YAAM2B,IAAEo0B,GAAW,EAAE,MAAM,CAAC,EAAE,KAAK;AAAE,aAAWp0B,MAAL,KAAOA,IAAkB2E,GAAc,EAAE,MAAM,CAAC,EAAE,KAAK,MAA9C,iBAAiD,EAAC,eAAcmsB,EAAG,KAAI,UAAS,CAAC,GAAE,GAAE,CAAC,GAAE,OAAM,GAAE,aAAY,oBAAI,IAAI,CAACC,EAAG,YAAY,CAAC,EAAC;AAAA,IAAC;AAAA,EAAC;AAAC,SAAM;AAAE;AC4Cn8yC,MAAM;AAAA,EACJ,YAAY7F;AAAAA,EACZ,SAASC;AAAAA,EACT,WAAWgK;AAAAA,EAAA,KACX/J;AAAAA,EACA,UAAUgK;AAAAA,EACV,OAAO/J;AAAAA,EACP,QAAQ1V;AAAA,EACR,WAAW0f;AAAAA,EACX,YAAYvf;AAAA,EACZ,YAAYwV;AACd,IAAIC,GACE,EAAE,iBAAiB+J,GAAA,IAAaC,GAChC7c,KAAY,kBAGZM,KAAM,GACNC,KAAM,IACNE,KAAM,IACNI,KAAU,KACVC,KAAU,KASVgc,KAAiB,IAAI;AAAA,EACzB,IAAIhe,EAAM,IAAIW,EAAc,IAAIE,EAAO;AACzC,GACMod,KAAa,kBACbC,KAAa,IAAI,OAAO,OAAO5e,EAAM,IAAIC,EAAM,IAAI,GACnD4e,KAAoB,IAAI,OAAO3f,EAAiB,GAChD4f,KAAa,IAAI,OAAOpe,EAAM,GAC9Bqe,KAAkB,IAAI,OAAO,IAAIpe,EAAW,EAAE,GAC9Cqe,KAAmB,IAAI,OAAO,IAAIte,EAAM,EAAE,GAC1CiU,KAAa,IAAI,OAAOxV,EAAU;AAQjC,SAAS8f,GACdpK,GACAnP,IAAe,IAC2B;AAC1C,MAAI,CAAC,MAAM,QAAQmP,CAAM;AACvB,UAAM,IAAI,UAAU,GAAGA,CAAM,mBAAmB;AAElD,QAAM,EAAE,YAAAjJ,IAAa,IAAI,QAAAxG,IAAS,OAAOM,GAanCwZ,yBAZoB,IAAI;AAAA,IAC5B,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAClC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IACjC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAClC,CAAC,SAAS,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAClC,CAAC,OAAO,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,IAChC,CAAC,QAAQ,CAAC,KAAK,KAAK,KAAK,OAAO,CAAC;AAAA,EAAA,CAClC,GACkC,IAAItT,CAAU;AAEjD,MAAI,CAACsT;AACH,WAAO,IAAI3Z,EAAA;AAEb,QAAM4Z,wBAAe,IAAA,GACfC,IAKF,CAAC,CAAA,GAAI,CAAA,GAAI,CAAA,GAAI,CAAA,CAAE;AACnB,MAAIt3B,IAAI,GACJu3B,IAAO,GACPC,IAAO;AACX,SAAOzK,EAAO,UAAQ;AACpB,UAAME,IAAQF,EAAO,MAAA;AACrB,QAAI,CAAC,MAAM,QAAQE,CAAK;AACtB,YAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,UAAM,CAAChhB,GAAMuG,GAAA,EAAA,EAAWilB,CAAM,IAAIxK,GAO5ByK,IAAUJ,EAASt3B,CAAC;AAC1B,QAAI,MAAM,QAAQ03B,CAAO;AACvB,cAAQzrB,GAAA;AAAA,QACN,KAAKsqB,IAAK;AACR,gBAAMjJ,IAAgBqK,GAAiB1K,GAAOrP,CAAG;AACjD,UAAI1H,EAASoX,CAAa,IACxBoK,EAAQ,KAAKpK,CAAa,IAE1BoK,EAAQ,KAAKllB,CAAK;AAEpB;AAAA,QACF;AAAA,QACA,KAAKgkB,IAAM;AACT,UAAAkB,EAAQ,KAAKllB,CAAK,GAClBglB,IAAO,IACPD,KACIR,GAAkB,KAAKvkB,CAAK,KAC9B6kB,EAAS,IAAIE,CAAI;AAEnB;AAAA,QACF;AAAA,QACA,KAAK9K,IAAO;AAEV,cAAI,CAAC2K,EAAa,SAAS5kB,CAAK;AAC9B,mBAAO,IAAIiL,EAAA;AAEb,UAAAia,EAAQ,KAAKllB,CAAK,GACbglB,KACHx3B;AAEF;AAAA,QACF;AAAA,QACA,KAAK+W,IAAK;AACR,UAAA2gB,EAAQ,KAAK,OAAOD,KAAA,gBAAAA,EAAQ,KAAK,CAAC,GAC7BD,KACHx3B;AAEF;AAAA,QACF;AAAA,QACA,KAAKy2B,IAAY;AACf,UAAAiB,EAAQ,KAAKllB,CAAK,GAClB+kB;AACA;AAAA,QACF;AAAA,QACA,KAAKjL,IAAa;AAChB,UAAIkL,MACgBE,EAAQA,EAAQ,SAAS,CAAC,MAC1B,MAChBA,EAAQ,OAAO,IAAI,GAAGllB,CAAK,IAE3BklB,EAAQ,KAAKllB,CAAK,GAEhB6kB,EAAS,IAAIE,CAAI,KACnBF,EAAS,OAAOE,CAAI,GAEtBA,KACIA,MAAS,MACXC,IAAO,IACPx3B;AAGJ;AAAA,QACF;AAAA,QACA,KAAKkX,IAAK;AACR,UAAAwgB,EAAQ,KAAK,OAAOD,KAAA,gBAAAA,EAAQ,KAAK,IAAI9c,EAAO,GACvC6c,KACHx3B;AAEF;AAAA,QACF;AAAA,QACA,KAAK0sB,IAAS;AACZ,cAAIgL,EAAQ,UAAUF,GAAM;AAC1B,kBAAMpK,IAAYsK,EAAQA,EAAQ,SAAS,CAAC;AAC5C,aAAI,OAAOtK,KAAc,YAGvBlX,EAASkX,CAAS,KAClB,CAACA,EAAU,SAAS,GAAG,KACvBA,MAAc,QAEdsK,EAAQ,KAAKllB,CAAK;AAAA,UAEtB;AACA;AAAA,QACF;AAAA,QACA;AACE,UAAIvG,MAASsgB,MAAWtgB,MAASugB,MAAOgL,KACtCE,EAAQ,KAAKllB,CAAK;AAAA,MAEtB;AAAA,EAGN;AACA,QAAMolB,IAAgB,CAAA;AACtB,aAAWF,KAAWJ;AACpB,QAAII,EAAQ,WAAW,GAAG;AACxB,YAAM,CAACpK,CAAa,IAAIoK;AACxB,MAAIvhB,GAAiBmX,CAAa,KAChCsK,EAAc,KAAKtK,CAAa;AAAA,IAEpC,WAAWoK,EAAQ,QAAQ;AACzB,YAAMpK,IAAgBuK,GAAcH,EAAQ,KAAK,EAAE,GAAG;AAAA,QACpD,QAAApa;AAAA,MAAA,CACD;AACD,MAAAsa,EAAc,KAAKtK,CAAa;AAAA,IAClC;AAEF,SAAOsK;AACT;AAQO,SAASE,GACdtlB,GACAoL,IAAe,IACM;AACrB,QAAM,EAAE,aAAAma,IAAc,UAAU,cAAAC,IAAe,IAAI,QAAA1a,IAAS,OAAOM;AACnE,MAAI1H,EAAS1D,CAAK,GAAG;AAEnB,QADAA,IAAQA,EAAM,YAAA,EAAc,KAAA,GACxB,CAACA;AACH,aAAO,IAAIiL,EAAA;AAEb,QAAI,CAACyZ,GAAiB,KAAK1kB,CAAK;AAC9B,aAAOA;AAAA,EAEX;AACE,WAAO,IAAIiL,EAAA;AAEb,QAAMJ,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACRA,IAEFA,EAAa;AAEtB,MAAI,eAAe,KAAKlS,CAAK;AAC3B,QAAIwlB;AACF,MAAAxlB,IAAQA,EAAM,QAAQ,iBAAiBwlB,CAAY;AAAA;AAEnD,aAAAxa,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAGf,MAAIqG,IAAa;AAKjB,MAJImT,GAAgB,KAAKzkB,CAAK,MAC5B,CAAA,EAAGsR,CAAU,IAAItR,EAAM,MAAMykB,EAAe,IAE9CrZ,EAAI,aAAakG,GACbtR,EAAM,SAASkG,EAAa,GAAG;AACjC,UAAMuN,IAAazT,EAChB,QAAQ,IAAI,OAAO,IAAIsR,CAAU,KAAK,GAAG,EAAE,EAC3C,QAAQ,OAAO,EAAE,GACd,CAAA,EAAGmU,IAAc,EAAE,IAAI5R,GAAWJ,CAAU,GAC5CiS,IAAuBvR,GAAasR,GAAa;AAAA,MACrD,aAAAF;AAAA,MACA,QAAQle;AAAA,IAAA,CACT;AACD,QAAIqe,MAAyB;AAC3B,aAAA1a,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,QAAIH,MAAWzD;AACb,MAAArH,IAAQA,EAAM,QAAQylB,GAAaC,CAAoB;AAAA,SAClD;AACL,YAAMC,IAAsBxR,GAAauR,GAAsBta,CAAG;AAClE,MAAI1H,EAASiiB,CAAmB,MAC9B3lB,IAAQA,EAAM,QAAQylB,GAAaE,CAAmB;AAAA,IAE1D;AAAA,EACF;AACA,MAAIvB,GAAe,KAAKpkB,CAAK,GAAG;AAC9B,UAAM,CAAA,EAAGylB,CAAW,IAAIzlB,EAAM,MAAMokB,EAAc,GAC5C,CAAA,EAAGwB,CAAS,IAAI5lB,EAAM,MAAMylB,CAAW;AAC7C,QAAI,WAAW,KAAKA,CAAW;AAC7B,UACE,CAAC,gBAAgB,KAAKA,CAAW,KACjC,CAAC,OAAO,OAAO9a,IAAc8a,CAAW;AAExC,eAAAza,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,eAEJH,MAAWzD,GAAU;AAC9B,YAAMse,IAAsBxR,GAAasR,GAAara,CAAG;AACzD,MAAI1H,EAASiiB,CAAmB,MAC9B3lB,IAAQA,EAAM,QAAQylB,GAAaE,CAAmB;AAAA,IAE1D;AACA,QAAI7a,MAAWzD,GAAU;AACvB,YAAMkT,IAASxqB,GAAS,EAAE,KAAK61B,GAAW,GACpCR,IAAgBT,GAAqBpK,GAAQnP,CAAG;AACtD,UAAIga,aAAyBna;AAC3B,eAAAD,EAASH,GAAU,IAAI,GAChBua;AAET,YAAM,CAAC5Y,GAAIC,GAAIC,GAAIuD,CAAE,IAAImV;AACzB,UAAIS,IAAe;AACnB,MAAIliB,GAAiBsM,CAAE,IACrB4V,IAAe,IAAIrZ,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,CAAE,MAEzC4V,IAAe,IAAIT,EAAc,KAAK,GAAG,CAAC,KAExCQ,MAAcC,MAChB7lB,IAAQA,EAAM,QAAQ4lB,GAAWC,CAAY;AAAA,IAEjD;AAAA,EAEF,OAAO;AACL,UAAM,CAAA,EAAGD,CAAS,IAAI5lB,EAAM,MAAM0kB,EAAgB,GAC5CnK,IAASxqB,GAAS,EAAE,KAAK61B,GAAW,GACpCH,IAAwB,CAAA;AAC9B,QAAIV,IAAO;AACX,WAAOxK,EAAO,UAAQ;AACpB,YAAM,CAAC9gB,GAAMqsB,CAAU,IAAIvL,EAAO,MAAA;AAClC,cAAQ9gB,GAAA;AAAA,QACN,KAAKuqB;AAAAA,QACL,KAAKC,IAAY;AACf,UAAAwB,EAAY,KAAKK,CAAU,GAC3Bf;AACA;AAAA,QACF;AAAA,QACA,KAAKjL,IAAa;AAChB,gBAAMc,IAAY6K,EAAYA,EAAY,SAAS,CAAC;AACpD,UAAI7K,MAAc,MAChB6K,EAAY,OAAO,IAAI,GAAGK,CAAU,IAC3BpiB,EAASkX,CAAS,KAC3B6K,EAAY,KAAKK,CAAU,GAE7Bf;AACA;AAAA,QACF;AAAA,QACA,KAAK7K,IAAS;AACZ,gBAAMU,IAAY6K,EAAYA,EAAY,SAAS,CAAC;AACpD,UACE/hB,EAASkX,CAAS,KAClB,CAACA,EAAU,SAAS,GAAG,KACvBA,MAAc,OAEd6K,EAAY,KAAKK,CAAU;AAE7B;AAAA,QACF;AAAA,QACA;AACE,UAAIrsB,MAASsgB,MAAWtgB,MAASugB,MAC/ByL,EAAY,KAAKK,CAAU;AAAA,MAE/B;AAEF,UAAIf,MAAS;AACX;AAAA,IAEJ;AACA,UAAMY,IAAsBI;AAAA,MAC1BN,EAAY,KAAK,EAAE,EAAE,KAAA;AAAA,MACrBra;AAAA,IAAA;AAEF,QAAIua,aAA+B1a;AACjC,aAAAD,EAASH,GAAU,IAAI,GAChB8a;AAET,UAAMP,IAAgBT,GAAqBpK,GAAQnP,CAAG;AACtD,QAAIga,aAAyBna;AAC3B,aAAAD,EAASH,GAAU,IAAI,GAChBua;AAET,UAAM,CAAC5Y,GAAIC,GAAIC,GAAIuD,CAAE,IAAImV;AACzB,QAAIS,IAAe;AACnB,IAAIliB,GAAiBsM,CAAE,IACrB4V,IAAe,IAAIrZ,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMuD,CAAE,MAEzC4V,IAAe,IAAIT,EAAc,KAAK,GAAG,CAAC,KAE5CplB,IAAQA,EAAM,QAAQ4lB,GAAW,GAAGD,CAAmB,GAAGE,CAAY,EAAE;AAAA,EAC1E;AACA,SAAA7a,EAASH,GAAU7K,CAAK,GACjBA;AACT;AAQO,SAAS+lB,GACd/lB,GACAoL,IAAe,IACM;AACrB,QAAM,EAAE,QAAAN,IAAS,GAAA,IAAOM;AACxB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,QAAIqa,GAAW,KAAKra,CAAK,GAAG;AAC1B,UAAI8K,MAAWzD;AACb,eAAOrH;AAGP,YAAM,IAAI,YAAY,oBAAoBsG,EAAM,SAAS;AAAA,IAE7D,WAAW,CAACke,GAAW,KAAKxkB,CAAK;AAC/B,aAAOA;AAET,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA,EAC9B;AACE,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACRA,IAEFA,EAAa;AAEtB,QAAMuT,IAAcH,GAAmBtlB,GAAOoL,CAAG;AACjD,MAAIqa,aAAuBxa;AACzB,WAAAD,EAASH,GAAU,IAAI,GAChB4a;AAGT,MADAzlB,IAAQylB,GACJ3a,MAAWzD;AACb,WAAIrH,EAAM,WAAW,OAAO,IAC1BA,IAAQA,EAAM,QAAQ,WAAW,MAAM,IAC9BA,EAAM,WAAW,OAAO,MACjCA,IAAQA,EAAM,QAAQ,WAAW,MAAM,IAElCA;AAET,QAAMua,IAASxqB,GAAS,EAAE,KAAKiQ,GAAO,GAChCgmB,IAAatzB,GAAoB6nB,CAAM,GACvC0L,IAAmBC,GAAYF,CAAU;AAC/C,MAAI,CAACC;AACH,WAAAjb,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,QAAM;AAAA,IACJ,OAAOkb;AAAA,IACP,UAAUC;AAAA,IACV,eAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEL;AACJ,MAAI5a;AACJ,EAAI,OAAO,MAAM,OAAO8a,CAAc,CAAC,IACjCG,aAAuB,OAAOA,EAAY,IAAIpC,EAAQ,IACxD7Y,IAAQ5G,IAER4G,IAAQ,IAGVA,IAAQ6E,EAAiB,OAAOiW,CAAc,GAAGve,EAAG;AAEtD,MAAI4E,GACAC,GACAC;AACJ,GAACF,GAAIC,GAAIC,CAAE,IAAI0Z;AACf,MAAItL;AACJ,MAAIwJ,GAAW,KAAK+B,CAAa,GAAG;AAClC,UAAME,IAAUD,aAAuB,OAAOA,EAAY,IAAIpC,EAAQ;AACtE,IAAI,OAAO,MAAM1X,CAAE,IACb+Z,IACF/Z,IAAK/H,IAEL+H,IAAK,IAGPA,IAAK0D,EAAiB1D,GAAIzE,EAAG,GAE3B,OAAO,MAAM0E,CAAE,IACb8Z,IACF9Z,IAAKhI,IAELgI,IAAK,IAGPA,IAAKyD,EAAiBzD,GAAI1E,EAAG,GAE3B,OAAO,MAAM2E,CAAE,IACb6Z,IACF7Z,IAAKjI,IAELiI,IAAK,IAGPA,IAAKwD,EAAiBxD,GAAI3E,EAAG,GAE3BsD,MAAU,IACZyP,IAAgB,GAAGuL,CAAa,IAAI7Z,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAElDoO,IAAgB,GAAGuL,CAAa,IAAI7Z,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMrB,CAAK;AAAA,EAEjE,WAAWgZ,GAAW,KAAKgC,CAAa,GAAG;AACzC,IAAI,OAAO,MAAM7Z,CAAE,MACjBA,IAAK,IAEH,OAAO,MAAMC,CAAE,MACjBA,IAAK,IAEH,OAAO,MAAMC,CAAE,MACjBA,IAAK;AAEP,QAAI,CAACrf,GAAGwH,GAAGoE,CAAC,IAAIuZ;AAAA,MACd,GAAG6T,CAAa,IAAI7Z,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMrB,CAAK;AAAA,IAAA;AAE/C,IAAAhe,IAAI6iB,EAAiB7iB,IAAI+a,IAASP,EAAG,GACrChT,IAAIqb,EAAiBrb,IAAIuT,IAASP,EAAG,GACrC5O,IAAIiX,EAAiBjX,IAAImP,IAASP,EAAG,GACjCwD,MAAU,IACZyP,IAAgB,cAAcztB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAEzC6hB,IAAgB,cAAcztB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAAMoS,CAAK;AAAA,EAExD,OAAO;AACL,UAAMmG,IAAK6U,MAAkB,QAAQ,SAASA,GACxCE,IAAUD,aAAuB,OAAOA,EAAY,IAAIpC,EAAQ;AACtE,IAAI,OAAO,MAAM1X,CAAE,IACb+Z,IACF/Z,IAAK/H,IAEL+H,IAAK,IAGPA,IAAK0D,EAAiB1D,GAAI3E,EAAG,GAE3B,OAAO,MAAM4E,CAAE,IACb8Z,IACF9Z,IAAKhI,IAELgI,IAAK,IAGPA,IAAKyD,EAAiBzD,GAAI5E,EAAG,GAE3B,OAAO,MAAM6E,CAAE,IACb6Z,IACF7Z,IAAKjI,IAELiI,IAAK,IAGPA,IAAKwD,EAAiBxD,GAAI7E,EAAG,GAE3BwD,MAAU,IACZyP,IAAgB,SAAStJ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAE7CoO,IAAgB,SAAStJ,CAAE,IAAIhF,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMrB,CAAK;AAAA,EAE5D;AACA,SAAAL,EAASH,GAAUiQ,CAAa,GACzBA;AACT;ACnjBA,MAAMxT,KAAY,WACZkf,KAAkB,oBAGlBpM,KAAc,IAAI,OAAOzV,EAAW,GACpC8hB,KAAoB,IAAI,OAAOjgB,EAAiB,GAChDge,KAAa,IAAI,OAAO/d,EAAU,GAClC4T,KAAa,IAAI,OAAOxV,EAAU,GAQ3BsP,KAAe,CAC1BnU,GACAoL,IAAe,OACS;AACxB,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM;AAAA,IACJ,aAAAulB,IAAc;AAAA,IACd,cAAAC,IAAe;AAAA,IACf,QAAA1a,IAAS3D;AAAA,IACT,UAAA4D,IAAW;AAAA,EAAA,IACTK,GACEP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACRA,IAEFA,EAAa;AAEtB,MAAImI,GAAW,KAAKra,CAAK,GAAG;AAC1B,QAAI8K,MAAWzD;AACb,aAAA2D,EAASH,GAAU7K,CAAK,GACjBA;AAET,UAAM8a,IAAgBE,GAAWhb,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,cAAQH,GAAA;AAAA,QACN,KAAK;AAAA,QACL,KAAK;AACH,iBAAAE,EAASH,GAAUiQ,CAAa,GACzBA;AAAA,QAET,SAAS;AACP,cAAI/P;AACF,mBAAAC,EAASH,GAAUiQ,CAAa,GACzBA;AAET,gBAAM1X,IAAMojB;AACZ,iBAAAxb,EAASH,GAAUzH,CAAG,GACfA;AAAAA,QACT;AAAA,MAAA;AAAA;AAGF,MAAApD,IAAQ8a;AAAA,EAEZ;AAKA,MAJI1P,EAAI,WAAWN,MACjBM,EAAI,SAASN,IAEf9K,IAAQA,EAAM,YAAA,GACVymB,GAAkB,KAAKzmB,CAAK,KAAKA,EAAM,SAAS,GAAG,GAAG;AACxD,UAAMyT,IAAazT,EAAM,QAAQymB,IAAmB,EAAE,EAAE,QAAQ,OAAO,EAAE,GACnE,CAACC,IAAQ,IAAIC,IAAO,EAAE,IAAI9S,GAAWJ,GAAY;AAAA,MACrD,WAAW;AAAA,IAAA,CACZ;AACD,QAAIiT,KAASC,GAAM;AACjB,UAAI7b,MAAWzD,GAAU;AACvB,cAAMuf,IAAazS,GAAauS,GAAOtb,CAAG,GACpCyb,IAAY1S,GAAawS,GAAMvb,CAAG;AACxC,YAAIhI;AACJ,eAAIwjB,KAAcC,IAChBzjB,IAAM,cAAcwjB,CAAU,KAAKC,CAAS,MAE5CzjB,IAAM,IAER4H,EAASH,GAAUzH,CAAG,GACfA;AAAAA,MACT;AACA,UAAI0X;AACJ,MAAIyK,MAAgB,SAClBzK,IAAgB3G,GAAawS,GAAMvb,CAAG,IAEtC0P,IAAgB3G,GAAauS,GAAOtb,CAAG;AAEzC,UAAIhI;AACJ,aAAI0X,aAAyB7P,IACvBF,IACF3H,IAAM0X,IAEN1X,IAAMojB,KAGRpjB,IAAM0X,GAER9P,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AAEA,YAAQ0H,GAAA;AAAA,MACN,KAAKzD;AACH,eAAA2D,EAASH,GAAU,EAAE,GACd;AAAA,MAET,KAAK;AAAA,MACL,KAAK;AACH,eAAAG,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,MAEb,KAAK9D;AAAA,MACL,SAAS;AACP,cAAM/D,IAAMojB;AACZ,eAAAxb,EAASH,GAAUzH,CAAG,GACfA;AAAAA,MACT;AAAA,IAAA;AAAA,EAEJ;AACA,MAAIohB,GAAW,KAAKxkB,CAAK,GAAG;AAC1B,UAAM8a,IAAgBiL,GAAqB/lB,GAAOoL,CAAG;AACrD,QAAIN,MAAW3D,IAAU;AACvB,UAAI/D;AACJ,aAAI0X,aAAyB7P,IACvBF,IACF3H,IAAM0X,IAEN1X,IAAMojB,KAGRpjB,IAAM0X,GAER9P,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AACA,QAAI0H,MAAWzD,GAAU;AACvB,UAAIjE,IAAM;AACV,aAAI0X,aAAyB7P,IAC3B7H,IAAM,KAENA,IAAM0X,GAER9P,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AACA,IAAI0X,aAAyB7P,IAC3BjL,IAAQ,KAERA,IAAQ8a;AAAA,EAEZ;AACA,EAAIV,GAAY,KAAKpa,CAAK,MACxBA,IAAQib,GAAQjb,GAAOoL,CAAG;AAE5B,MAAIoG,IAAK,IACLnkB,IAAI,KACJwH,IAAI,KACJoE,IAAI,KACJoS,IAAQ;AACZ,MAAIrL,MAAU;AACZ,YAAQ8K,GAAA;AAAA,MACN,KAAKzD;AACH,eAAA2D,EAASH,GAAU7K,CAAK,GACjBA;AAAA,MAET,KAAK;AACH,eAAAgL,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,MAEb,KAAK,YAAY;AACf,cAAM7H,IAAM;AACZ,eAAA4H,EAASH,GAAUzH,CAAG,GACfA;AAAAA,MACT;AAAA,MACA,KAAK+D;AAAA,MACL,SAAS;AACP,cAAM/D,IAAMojB;AACZ,eAAAxb,EAASH,GAAUzH,CAAG,GACfA;AAAAA,MACT;AAAA,IAAA;AAAA,WAEOpD,MAAU,gBAAgB;AACnC,QAAI8K,MAAWzD;AACb,aAAA2D,EAASH,GAAU7K,CAAK,GACjBA;AAET,QAAIwlB,GAAc;AAChB,UAAI1K;AAQJ,UAPI0K,EAAa,WAAWrf,EAAM,IAChC2U,IAAgB9H,GAAgBwS,GAAcpa,CAAG,IACxCoa,EAAa,WAAWvf,EAAQ,IACzC6U,IAAgBxI,GAAiBkT,GAAcpa,CAAG,IAElD0P,IAAgB9I,GAAkBwT,GAAcpa,CAAG,GAEjD0P,aAAyB7P;AAC3B,eAAAD,EAASH,GAAUiQ,CAAa,GACzBA;AAET,OAACtJ,GAAInkB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIyP;AAAA,IACzB,WAAWhQ,MAAW3D,IAAU;AAC9B,YAAM/D,IAAMojB;AACZ,aAAAxb,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AAAA,EACF,WAAW0H,MAAWzD;AACpB,QAAIrH,EAAM,WAAWmG,EAAM,GAAG;AAC5B,YAAM/C,IAAM4P,GAAgBhT,GAAOoL,CAAG;AACtC,aAAAJ,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT,WAAWpD,EAAM,WAAWiG,EAAQ,GAAG;AACrC,YAAM,CAAC6gB,GAAK7Y,GAAIC,GAAIC,GAAIyB,CAAE,IAAI0C;AAAA,QAC5BtS;AAAA,QACAoL;AAAA,MAAA;AAEF,UAAIhI,IAAM;AACV,aAAIwM,MAAO,IACTxM,IAAM,SAAS0jB,CAAG,IAAI7Y,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAEpC/K,IAAM,SAAS0jB,CAAG,IAAI7Y,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMyB,CAAE,KAE9C5E,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT,OAAO;AACL,YAAM4K,IAAMgE,GAAkBhS,GAAOoL,CAAG;AACxC,UAAI1H,EAASsK,CAAG;AACd,eAAAhD,EAASH,GAAUmD,CAAG,GACfA;AAET,YAAM,CAAC8Y,GAAK7Y,GAAIC,GAAIC,GAAIyB,CAAE,IAAI5B;AAC9B,UAAI5K,IAAM;AACV,aAAI0jB,MAAQ,QACNlX,MAAO,IACTxM,IAAM,GAAG0jB,CAAG,IAAI7Y,CAAE,KAAKC,CAAE,KAAKC,CAAE,MAEhC/K,IAAM,GAAG0jB,CAAG,KAAK7Y,CAAE,KAAKC,CAAE,KAAKC,CAAE,KAAKyB,CAAE,MAEjCA,MAAO,IAChBxM,IAAM,GAAG0jB,CAAG,IAAI7Y,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAE9B/K,IAAM,GAAG0jB,CAAG,IAAI7Y,CAAE,IAAIC,CAAE,IAAIC,CAAE,MAAMyB,CAAE,KAExC5E,EAASH,GAAUzH,CAAG,GACfA;AAAAA,IACT;AAAA,WACSpD,EAAM,WAAWmG,EAAM,GAAG;AACnC,IAAI,eAAe,KAAKnG,CAAK,KACvBwlB,MACFxlB,IAAQA,EAAM,QAAQ,iBAAiBwlB,CAAY,IAGnD,cAAc,KAAKxlB,CAAK,MAC1BA,IAAQA,EAAM,QAAQ,gBAAgBwmB,EAAe;AAEvD,UAAM1L,IAAgB9H,GAAgBhT,GAAOoL,CAAG;AAChD,QAAI0P,aAAyB7P;AAC3B,aAAAD,EAASH,GAAUiQ,CAAa,GACzBA;AAET,KAACtJ,GAAInkB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIyP;AAAA,EACzB,WAAW9a,EAAM,WAAWiG,EAAQ,GAAG;AACrC,UAAM6U,IAAgBxI,GAAiBtS,GAAOoL,CAAG;AACjD,QAAI0P,aAAyB7P;AAC3B,aAAAD,EAASH,GAAUiQ,CAAa,GACzBA;AAET,KAACtJ,GAAInkB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIyP;AAAA,EACzB,WAAW9a,GAAO;AAChB,UAAM8a,IAAgB9I,GAAkBhS,GAAOoL,CAAG;AAClD,QAAI0P,aAAyB7P;AAC3B,aAAAD,EAASH,GAAUiQ,CAAa,GACzBA;AAET,KAACtJ,GAAInkB,GAAGwH,GAAGoE,GAAGoS,CAAK,IAAIyP;AAAA,EACzB;AACA,MAAI1X,IAAM;AACV,UAAQ0H,GAAA;AAAA,IACN,KAAK,OAAO;AACV,UACE,OAAO,MAAMzd,CAAC,KACd,OAAO,MAAMwH,CAAC,KACd,OAAO,MAAMoE,CAAC,KACd,OAAO,MAAMoS,CAAK,KAClBA,MAAU;AAEV,eAAAL,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,MAAA7H,IAAMuM,GAAgB,CAACtiB,GAAGwH,GAAGoE,GAAG,CAAC,CAAC;AAClC;AAAA,IACF;AAAA,IACA,KAAK,YAAY;AACf,UACE,OAAO,MAAM5L,CAAC,KACd,OAAO,MAAMwH,CAAC,KACd,OAAO,MAAMoE,CAAC,KACd,OAAO,MAAMoS,CAAK;AAElB,eAAAL,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAEb,MAAA7H,IAAMuM,GAAgB,CAACtiB,GAAGwH,GAAGoE,GAAGoS,CAAK,CAAC;AACtC;AAAA,IACF;AAAA,IACA,KAAKlE;AAAA,IACL;AACE,cAAQqK,GAAA;AAAA,QACN,KAAK,OAAO;AACV,UAAInG,MAAU,IACZjI,IAAM,GAAGoO,CAAE,IAAInkB,CAAC,KAAKwH,CAAC,KAAKoE,CAAC,MAE5BmK,IAAM,GAAGoO,CAAE,KAAKnkB,CAAC,KAAKwH,CAAC,KAAKoE,CAAC,KAAKoS,CAAK;AAEzC;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK,SAAS;AACZ,UAAIA,MAAU,IACZjI,IAAM,GAAGoO,CAAE,IAAInkB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAE1BmK,IAAM,GAAGoO,CAAE,IAAInkB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAAMoS,CAAK;AAEvC;AAAA,QACF;AAAA;AAAA,QAEA;AACE,UAAIA,MAAU,IACZjI,IAAM,SAASoO,CAAE,IAAInkB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAEhCmK,IAAM,SAASoO,CAAE,IAAInkB,CAAC,IAAIwH,CAAC,IAAIoE,CAAC,MAAMoS,CAAK;AAAA,MAE/C;AAAA,EAEJ;AAEF,SAAAL,EAASH,GAAUzH,CAAG,GACfA;AACT,GA4Ca2jB,KAAU,CAAC/mB,GAAeoL,IAAe,OAAsB;AAC1E,EAAAA,EAAI,WAAW;AACf,QAAM0P,IAAgB3G,GAAanU,GAAOoL,CAAG;AAC7C,SAAI0P,aAAyB7P,IACpB,OAEF6P;AACT,GC7aM;AAAA,EACJ,YAAYhB;AAAAA,EACZ,OAAOkN;AAAA,EACP,SAASjN;AAAAA,EACT,OAAOkN;AAAA,EAAA,KACPjN;AAAAA,EACA,UAAUgK;AAAAA,EACV,OAAO/J;AAAA,EACP,WAAWgK;AAAAA,EACX,YAAY/J;AACd,IAAIC,GACE7S,KAAY,QAGZO,KAAM,IACNE,KAAM,IACNG,KAAM,KACND,KAAW,KAGX2B,KAAY,IAAI,OAAO,OAAO7C,EAAc,IAAI,GAChDiD,KACJ,+DACIK,KAAU,IAAI,OAAOpD,EAAO,GAUrB4M,KAAa,CAAC7T,GAAeoL,IAAe,OAAiB;AACxE,MAAI1H,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,EAAE,WAAAknB,IAAY,KAAK,iBAAAC,IAAkB,OAAU/b,GAC/CP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEF;AAAA,MACE,WAAAknB;AAAA,MACA,iBAAAC;AAAA,IAAA;AAAA,EACF,GAEIjV,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,MAAIkV;AACJ,EAAIF,MAAc,MAChBE,IAAe,QACNF,MAAc,MACvBE,IAAe,SAEfA,IAAe;AAEjB,QAAM7M,IAASxqB,GAAS,EAAE,KAAKiQ,GAAO;AACtC,MAAI+kB,IAAO,GACPsC,IAAM;AACV,QAAMjkB,IAAgB,CAAA;AACtB,SAAOmX,EAAO,UAAQ;AACpB,UAAM,CAAC9gB,GAAMuG,CAAK,IAAIua,EAAO,MAAA;AAC7B,YAAQ9gB,GAAA;AAAA,MACN,KAAKutB,IAAO;AACV,QAAII,EAAa,KAAKpnB,CAAK,KACrB+kB,MAAS,KACX3hB,EAAI,KAAKikB,EAAI,MAAM,GACnBA,IAAM,MAKRA,KAAOrnB;AAET;AAAA,MACF;AAAA,MACA,KAAKinB,IAAO;AACV,QAAIG,EAAa,KAAKpnB,CAAK,KACrB+kB,MAAS,KACX3hB,EAAI,KAAKikB,EAAI,MAAM,GACnBA,IAAM,MAKRA,KAAOrnB;AAET;AAAA,MACF;AAAA,MACA,KAAK+Z,IAAS;AACZ,QAAIoN,MAAoBD,MAAc,OAAOA,MAAc,SACzDG,KAAOrnB;AAET;AAAA,MACF;AAAA,MACA,KAAKgkB;AAAAA,MACL,KAAKC,IAAY;AACf,QAAAoD,KAAOrnB,GACP+kB;AACA;AAAA,MACF;AAAA,MACA,KAAKjL,IAAa;AAChB,QAAAuN,KAAOrnB,GACP+kB;AACA;AAAA,MACF;AAAA,MACA,KAAK7K,IAAS;AACZ,QAAIkN,EAAa,KAAKpnB,CAAK,IACrB+kB,MAAS,IACPsC,MACFjkB,EAAI,KAAKikB,EAAI,MAAM,GACnBA,IAAM,MAGRA,KAAO,MAECA,EAAI,SAAS,GAAG,MAC1BA,KAAO;AAET;AAAA,MACF;AAAA,MACA;AACE,QAAI5tB,MAASugB,MACX5W,EAAI,KAAKikB,EAAI,MAAM,GACnBA,IAAM,MAENA,KAAOrnB;AAAAA,IAEX;AAAA,EAEJ;AACA,SAAAgL,EAASH,GAAUzH,CAAG,GACfA;AACT,GAOakkB,KAAqB,CAACtnB,MAA4B;AAC7D,MAAI0D,EAAS1D,CAAK;AAChB,IAAAA,IAAQA,EAAM,KAAA;AAAA;AAEd,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH,GAAe;AAAA,IACtC,WAAW3K;AAAAA,IACX,MAAM;AAAA,IACN,OAAAtH;AAAA,EAAA,CACD,GACKkS,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAMqI,IAASxqB,GAAS,EAAE,KAAKiQ,GAAO,GAChCuT,wBAAY,IAAA;AAClB,SAAOgH,EAAO,UAAQ;AACpB,UAAM,CAAC9gB,GAAMuG,CAAK,IAAIua,EAAO,MAAA;AAC7B,IAAI9gB,MAASwgB,MAASja,EAAM,WAAW,IAAI,KACzCuT,EAAM,IAAIvT,CAAK;AAAA,EAEnB;AACA,QAAMoD,IAAM,CAAC,GAAGmQ,CAAK;AACrB,SAAAvI,EAASH,GAAUzH,CAAG,GACfA;AACT,GAQayX,KAAU,CAAC7a,GAAgBoL,IAAe,OAAgB;AACrE,MAAI1H,EAAS1D,CAAK,MAChBA,IAAQA,EAAM,YAAA,EAAc,KAAA,GACxBA,KAAS0D,EAAS1D,CAAK;AACzB,QAAI,WAAW,KAAKA,CAAK;AACvB,UACE,iCAAiC,KAAKA,CAAK,KAC3C,OAAO,OAAO2K,IAAc3K,CAAK;AAEjC,eAAO;AAAA,WAEX;AAAA,UAAW4J,GAAU,KAAK5J,CAAK,KAAKqK,GAAQ,KAAKrK,CAAK;AACpD,eAAO;AACT,UAAWgK,GAAa,KAAKhK,CAAK,MAChCoL,EAAI,WAAW,IACVA,EAAI,WACPA,EAAI,SAAS/D,IAEO8M,GAAanU,GAAOoL,CAAG;AAE3C,eAAO;AAAA;AAKf,SAAO;AACT,GAQamc,KAAoB,CAC/BvnB,GACAglB,IAAgB,OAEZ,OAAOhlB,IAAU,MACZ,KAEG,KAAK,UAAUA,GAAO,CAACwnB,GAAMpmB,MAAQ;AAC/C,MAAIqmB;AACJ,SAAI,OAAOrmB,IAAQ,MACjBqmB,IAAgB,OACP,OAAOrmB,KAAQ,aACpB4jB,IACFyC,IAAgBrmB,EAAI,WAAW,QAAQ,OAAO,EAAE,EAAE,UAAU,GAAG2G,EAAG,IAElE0f,IAAgBrmB,EAAI,OAEbA,aAAe,OAAOA,aAAe,MAC9CqmB,IAAgB,CAAC,GAAGrmB,CAAG,IACd,OAAOA,KAAQ,WACxBqmB,IAAgBrmB,EAAI,SAAA,IAEpBqmB,IAAgBrmB,GAEXqmB;AACT,CAAC,GAUUvX,IAAmB,CAAClQ,GAAe0nB,IAAc,MAAc;AAC1E,MAAI,CAAC,OAAO,SAAS1nB,CAAK;AACxB,UAAM,IAAI,UAAU,GAAGA,CAAK,0BAA0B;AAExD,MAAK,OAAO,SAAS0nB,CAAG;AAExB,QAAWA,IAAM,KAAKA,IAAM3f;AAC1B,YAAM,IAAI,WAAW,GAAG2f,CAAG,yBAAyB3f,EAAG,GAAG;AAAA,QAF1D,OAAM,IAAI,UAAU,GAAG2f,CAAG,0BAA0B;AAItD,MAAIA,MAAQ;AACV,WAAO,KAAK,MAAM1nB,CAAK;AAEzB,MAAIoB;AACJ,SAAIsmB,MAAQ3f,KACV3G,IAAMpB,EAAM,YAAY,CAAC,IAChB0nB,IAAM7f,KACfzG,IAAMpB,EAAM,YAAY,CAAC,IAEzBoB,IAAMpB,EAAM,YAAY,CAAC,GAEpB,WAAWoB,CAAG;AACvB,GASauX,KAAiB,CAC5BgP,GACAC,GACAC,IAAc,cACO;AACrB,MAAI,CAAC,OAAO,SAASF,CAAI;AACvB,UAAM,IAAI,UAAU,GAAGA,CAAI,0BAA0B;AAEvD,MAAI,CAAC,OAAO,SAASC,CAAI;AACvB,UAAM,IAAI,UAAU,GAAGA,CAAI,0BAA0B;AAEvD,UAAQC,GAAA;AAAA,IACN,KAAK,cAAc;AACjB,MAAID,IAAOD,MACTA,KAAQzf;AAEV;AAAA,IACF;AAAA,IACA,KAAK,cAAc;AACjB,MAAI0f,IAAOD,MACTC,KAAQ1f;AAEV;AAAA,IACF;AAAA,IACA,KAAK,UAAU;AACb,MAAI0f,IAAOD,KAAQC,IAAOD,IAAO1f,KAC/B0f,KAAQzf,KACC0f,IAAOD,IAAO1f,KAAW,MAAM2f,KAAQD,MAChDC,KAAQ1f;AAEV;AAAA,IACF;AAAA,IACA,KAAK;AAAA,IACL;AACE,MAAI0f,IAAOD,IAAO1f,KAChB0f,KAAQzf,KACC0f,IAAOD,IAAO1f,KAAW,OAClC2f,KAAQ1f;AAAA,EAEZ;AAEF,SAAO,CAACyf,GAAMC,CAAI;AACpB,GCtUME,KAAY;AbTlB,IAAAC,IAAAC;AacO,MAAM5V,GAAU;AAAA;AAAA;AAAA;AAAA,EAQrB,YAAYoB,GAAeyU,IAAkB,IAAO;AANpD;AAAA,IAAAptB,EAAA,MAAAktB;AACA,IAAAltB,EAAA,MAAAmtB;AAME,IAAAptB,EAAA,MAAKotB,IAAQxU,IACb5Y,EAAA,MAAKmtB,IAAU,CAAC,CAACE;AAAA,EACnB;AAAA,EAEA,IAAI,OAAO;AACT,WAAOttB,EAAA,MAAKqtB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOrtB,EAAA,MAAKotB;AAAA,EACd;AACF;AAlBEA,KAAA,eACAC,KAAA;AAsBK,MAAM/c,UAAmBmH,GAAU;AAAA;AAAA;AAAA;AAAA,EAIxC,cAAc;AACZ,UAAM,OAAO,MAAM,GAAG,EAAI;AAAA,EAC5B;AACF;AAKO,MAAM8V,KAAW,IAAIzkB,GAAS;AAAA,EACnC,KAAKqkB;AACP,CAAC,GAQY9c,IAAW,CAAClL,GAAaE,MAAyB;AAC7D,EAAIF,MACEE,MAAU,OACZkoB,GAAS,IAAIpoB,GAAK,IAAImL,EAAA,CAAY,IACzBjL,aAAiBoS,KAC1B8V,GAAS,IAAIpoB,GAAKE,CAAK,IAEvBkoB,GAAS,IAAIpoB,GAAK,IAAIsS,GAAUpS,CAAK,CAAC;AAG5C,GAOamS,KAAW,CAACrS,MAAqC;AAC5D,MAAIA,KAAOooB,GAAS,IAAIpoB,CAAG,GAAG;AAC5B,UAAM0T,IAAO0U,GAAS,IAAIpoB,CAAG;AAC7B,WAAI0T,aAAgBpB,KACXoB,KAGT0U,GAAS,OAAOpoB,CAAG,GACZ;AAAA,EACT;AACA,SAAO;AACT,GAQamS,KAAiB,CAC5BkW,GACA/c,IAAe,OACJ;AACX,QAAM,EAAE,gBAAAoP,IAAiB,CAAA,GAAI,WAAA4N,IAAY,CAAA,MAAOhd;AAChD,MAAIP,IAAW;AACf,SACEsd,KACA,OAAO,KAAKA,CAAO,EAAE,UACrB,OAAO3N,EAAe,YAAa,cACnC,OAAO4N,EAAU,YAAa,eAE9BD,EAAQ,MAAMZ,GAAkBnc,CAAG,GACnCP,IAAW0c,GAAkBY,CAAO,IAE/Btd;AACT,GCpFM;AAAA,EACJ,YAAYiP;AAAA,EACZ,SAASC;AAAA,EACT,WAAWgK;AAAA,EACX,KAAA/J;AAAA,EACA,UAAUgK;AAAA,EACV,WAAWC;AAAA,EACX,YAAY/J;AACd,IAAIC,GACE7S,KAAY,YAGZI,KAAO,GACPK,KAAM,IACNI,KAAU,KAGViS,KAAc,IAAI,OAAOzV,EAAW,GACpC0jB,KAAkB,IAAI,OAAO,YAAY9jB,EAAG,OAAO,GACnDggB,KAAoB,IAAI,OAAO3f,EAAiB,GAChDyV,KAAa,IAAI,OAAOxV,EAAU,GAClCyjB,KAAmB,IAAI,OAAOxjB,EAAgB,GAC9CyjB,KAAe,cACfC,KAAe,IAAI,OAAO,KAAKjkB,EAAG,KAAKF,EAAK,IAAIC,EAAM,IAAI,GAC1DmkB,KAAmB,IAAI,OAAO,KAAKlkB,EAAG,KAAKF,EAAK,IAAIC,EAAM,MAAM,GAChEokB,KAAe,IAAI,OAAO,KAAKnkB,EAAG,KAAK;AdtD7C,IAAAokB,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC,IAAAC;Ac2DO,MAAMC,GAAW;AAAA;AAAA;AAAA;AAAA,EA0BtB,cAAc;AAvBd;AAAA;AAAA,IAAA9uB,EAAA,MAAA8tB;AACA,IAAA9tB,EAAA,MAAA+tB;AACA,IAAA/tB,EAAA,MAAAguB;AAEA;AAAA,IAAAhuB,EAAA,MAAAiuB;AACA,IAAAjuB,EAAA,MAAAkuB;AACA,IAAAluB,EAAA,MAAAmuB;AAEA;AAAA,IAAAnuB,EAAA,MAAAouB;AACA,IAAApuB,EAAA,MAAAquB;AACA,IAAAruB,EAAA,MAAAsuB;AACA,IAAAtuB,EAAA,MAAAuuB;AACA,IAAAvuB,EAAA,MAAAwuB;AAEA;AAAA,IAAAxuB,EAAA,MAAAyuB;AACA,IAAAzuB,EAAA,MAAA0uB;AACA,IAAA1uB,EAAA,MAAA2uB;AACA,IAAA3uB,EAAA,MAAA4uB;AACA,IAAA5uB,EAAA,MAAA6uB;AAOE,IAAA9uB,EAAA,MAAK+tB,IAAU,KACf/tB,EAAA,MAAKguB,IAAU,CAAA,IACfhuB,EAAA,MAAKiuB,IAAU,CAAA,IAEfjuB,EAAA,MAAKkuB,IAAU,KACfluB,EAAA,MAAKmuB,IAAU,CAAA,IACfnuB,EAAA,MAAKouB,IAAU,CAAA,IAEfpuB,EAAA,MAAKquB,IAAU,KACfruB,EAAA,MAAKsuB,IAAU,CAAA,IACftuB,EAAA,MAAKuuB,IAAU,CAAA,IACfvuB,EAAA,MAAKwuB,IAAU,CAAA,IACfxuB,EAAA,MAAKyuB,IAAU,CAAA,IAEfzuB,EAAA,MAAK0uB,IAAU,KACf1uB,EAAA,MAAK2uB,IAAU,CAAA,IACf3uB,EAAA,MAAK4uB,IAAU,CAAA,IACf5uB,EAAA,MAAK6uB,IAAU,CAAA,IACf7uB,EAAA,MAAK8uB,IAAU,CAAA;AAAA,EACjB;AAAA,EAEA,IAAI,SAAS;AACX,WAAO/uB,EAAA,MAAKguB;AAAA,EACd;AAAA,EAEA,IAAI,OAAO3oB,GAAgB;AACzB,IAAApF,EAAA,MAAK+tB,IAAU,CAAC,CAAC3oB;AAAA,EACnB;AAAA,EAEA,IAAI,SAAS;AACX,WAAOrF,EAAA,MAAKiuB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOjuB,EAAA,MAAKkuB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOluB,EAAA,MAAKmuB;AAAA,EACd;AAAA,EAEA,IAAI,OAAO9oB,GAAgB;AACzB,IAAApF,EAAA,MAAKkuB,IAAU,CAAC,CAAC9oB;AAAA,EACnB;AAAA,EAEA,IAAI,SAAS;AACX,WAAOrF,EAAA,MAAKouB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOpuB,EAAA,MAAKquB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOruB,EAAA,MAAKsuB;AAAA,EACd;AAAA,EAEA,IAAI,OAAOjpB,GAAgB;AACzB,IAAApF,EAAA,MAAKquB,IAAU,CAAC,CAACjpB;AAAA,EACnB;AAAA,EAEA,IAAI,SAAS;AACX,WAAOrF,EAAA,MAAKuuB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOvuB,EAAA,MAAKwuB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOxuB,EAAA,MAAKyuB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAOzuB,EAAA,MAAK0uB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO1uB,EAAA,MAAK2uB;AAAA,EACd;AAAA,EAEA,IAAI,OAAOtpB,GAAgB;AACzB,IAAApF,EAAA,MAAK0uB,IAAU,CAAC,CAACtpB;AAAA,EACnB;AAAA,EAEA,IAAI,SAAS;AACX,WAAOrF,EAAA,MAAK4uB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO5uB,EAAA,MAAK6uB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO7uB,EAAA,MAAK8uB;AAAA,EACd;AAAA,EAEA,IAAI,SAAS;AACX,WAAO9uB,EAAA,MAAK+uB;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,QAAQ;AAEN,IAAA9uB,EAAA,MAAK+tB,IAAU,KACf/tB,EAAA,MAAKguB,IAAU,CAAA,IACfhuB,EAAA,MAAKiuB,IAAU,CAAA,IAEfjuB,EAAA,MAAKkuB,IAAU,KACfluB,EAAA,MAAKmuB,IAAU,CAAA,IACfnuB,EAAA,MAAKouB,IAAU,CAAA,IAEfpuB,EAAA,MAAKquB,IAAU,KACfruB,EAAA,MAAKsuB,IAAU,CAAA,IACftuB,EAAA,MAAKuuB,IAAU,CAAA,IACfvuB,EAAA,MAAKwuB,IAAU,CAAA,IACfxuB,EAAA,MAAKyuB,IAAU,CAAA,IAEfzuB,EAAA,MAAK0uB,IAAU,KACf1uB,EAAA,MAAK2uB,IAAU,CAAA,IACf3uB,EAAA,MAAK4uB,IAAU,CAAA,IACf5uB,EAAA,MAAK6uB,IAAU,CAAA,IACf7uB,EAAA,MAAK8uB,IAAU,CAAA;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,KAAKvO,IAAmB,IAAc;AACpC,UAAM7a,IAAM,CAAC,GAAG6a,CAAM;AACtB,WAAI7a,EAAI,SAAS,KACfA,EAAI,KAAK,CAAC1R,GAAGqK,MAAM;AACjB,UAAImK;AACJ,UAAIqlB,GAAiB,KAAK75B,CAAC,KAAK65B,GAAiB,KAAKxvB,CAAC,GAAG;AACxD,cAAM,CAAA,EAAG2wB,GAAMC,CAAK,IAAIj7B,EAAE,MAAM65B,EAAgB,GAC1C,CAAA,EAAGqB,GAAMC,CAAK,IAAI9wB,EAAE,MAAMwvB,EAAgB;AAChD,QAAIoB,MAAUE,IACR,OAAOH,CAAI,MAAM,OAAOE,CAAI,IAC9B1mB,IAAM,IACG,OAAOwmB,CAAI,IAAI,OAAOE,CAAI,IACnC1mB,IAAM,IAENA,IAAM,KAECymB,IAAQE,IACjB3mB,IAAM,IAENA,IAAM;AAAA,MAEV;AACE,QAAIxU,MAAMqK,IACRmK,IAAM,IACGxU,IAAIqK,IACbmK,IAAM,IAENA,IAAM;AAGV,aAAOA;AAAA,IACT,CAAC,GAEI9C;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,WAAmB;AACjB,UAAMN,IAAQ,CAAA;AACd,QAAIgqB;AACJ,QAAIrvB,EAAA,MAAKguB,KAAS;AAChB,MAAAqB,IAAM;AACN,iBAAWx8B,KAAKmN,EAAA,MAAKkuB;AAEnB,YADAmB,KAAOx8B,GACHw8B,MAAQ,KAAK,CAAC,OAAO,SAASA,CAAG,KAAK,OAAO,MAAMA,CAAG;AACxD;AAGJ,MAAI,CAACrvB,EAAA,MAAKmuB,OAAW,CAACnuB,EAAA,MAAKsuB,OAAW,CAAC,KAAK,WACtC,OAAO,SAASe,CAAG,MACrBA,IAAM9Z,EAAiB8Z,GAAKjiB,EAAG,IAEjC/H,EAAM,KAAKgqB,CAAG;AAAA,IAElB;AACA,QAAIrvB,EAAA,MAAKmuB,KAAS;AAChB,MAAI,OAAOkB,KAAQ,aACjBA,IAAM;AAER,iBAAWx8B,KAAKmN,EAAA,MAAKquB;AAEnB,YADAgB,KAAOx8B,GACHw8B,MAAQ,KAAK,CAAC,OAAO,SAASA,CAAG,KAAK,OAAO,MAAMA,CAAG;AACxD;AAGJ,MAAI,OAAO,SAASA,CAAG,MACrBA,IAAM,GAAG9Z,EAAiB8Z,GAAKjiB,EAAG,CAAC,MAEjC,CAACpN,EAAA,MAAKsuB,OAAW,CAAC,KAAK,UACzBjpB,EAAM,KAAKgqB,CAAG;AAAA,IAElB;AACA,QAAIrvB,EAAA,MAAKsuB,KAAS;AAChB,UAAIgB,IAAM,IACNC,IAAM,IACNC,IAAM;AACV,MAAIxvB,EAAA,MAAKyuB,IAAQ,WACXzuB,EAAA,MAAKyuB,IAAQ,WAAW,IAC1B,CAACc,CAAG,IAAIvvB,EAAA,MAAKyuB,MAEbc,IAAM,GAAG,KAAK,KAAKvvB,EAAA,MAAKyuB,GAAO,EAAE,KAAK,KAAK,CAAC,KAG5CzuB,EAAA,MAAK0uB,IAAQ,WACX1uB,EAAA,MAAK0uB,IAAQ,WAAW,IAC1B,CAACc,CAAG,IAAIxvB,EAAA,MAAK0uB,MAEbc,IAAM,GAAG,KAAK,KAAKxvB,EAAA,MAAK0uB,GAAO,EAAE,KAAK,KAAK,CAAC,KAG5C,OAAO,SAASW,CAAG,KACjBE,IACEC,IACEA,EAAI,SAAS,GAAG,IAClBF,IAAMlxB,GAAK,QAAQixB,CAAG,MAAME,CAAG,OAAOC,CAAG,MAAM;AAAA,QAC7C,kBAAkB;AAAA,MAAA,CACnB,IAEDF,IAAMlxB,GAAK,QAAQixB,CAAG,MAAME,CAAG,MAAMC,CAAG,KAAK;AAAA,QAC3C,kBAAkB;AAAA,MAAA,CACnB,IAGHF,IAAMlxB,GAAK,QAAQixB,CAAG,MAAME,CAAG,KAAK;AAAA,QAClC,kBAAkB;AAAA,MAAA,CACnB,IAEMC,EAAI,SAAS,GAAG,IACzBF,IAAMlxB,GAAK,QAAQixB,CAAG,OAAOG,CAAG,MAAM;AAAA,QACpC,kBAAkB;AAAA,MAAA,CACnB,IAEDF,IAAMlxB,GAAK,QAAQixB,CAAG,MAAMG,CAAG,KAAK;AAAA,QAClC,kBAAkB;AAAA,MAAA,CACnB,GAEHnqB,EAAM,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC,MAE/B,CAACjqB,EAAM,UAAUgqB,MAAQ,UAC3BhqB,EAAM,KAAKgqB,CAAG,GAEZE,KACEC,IACEA,EAAI,SAAS,GAAG,IAClBF,IAAMlxB,GAAK,QAAQmxB,CAAG,OAAOC,CAAG,MAAM;AAAA,QACpC,kBAAkB;AAAA,MAAA,CACnB,IAEDF,IAAMlxB,GAAK,QAAQmxB,CAAG,MAAMC,CAAG,KAAK;AAAA,QAClC,kBAAkB;AAAA,MAAA,CACnB,IAGHF,IAAMlxB,GAAK,QAAQmxB,CAAG,KAAK;AAAA,QACzB,kBAAkB;AAAA,MAAA,CACnB,GAEClqB,EAAM,SACRA,EAAM,KAAK,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC,IAExCjqB,EAAM,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC,MAGrCA,IAAMlxB,GAAK,QAAQoxB,CAAG,KAAK;AAAA,QACzB,kBAAkB;AAAA,MAAA,CACnB,GACGnqB,EAAM,SACRA,EAAM,KAAK,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC,IAExCjqB,EAAM,KAAK,KAAK,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC;AAAA,IAIrD;AACA,QAAItvB,EAAA,MAAK2uB,KAAS;AAChB,UAAI3uB,EAAA,MAAK8uB,IAAQ,QAAQ;AACvB,QAAI,CAACzpB,EAAM,UAAUgqB,MAAQ,UAC3BhqB,EAAM,KAAKgqB,CAAG;AAEhB,cAAME,IAAM,KAAK,KAAKvvB,EAAA,MAAK8uB,GAAO,EAAE,KAAK,KAAK;AAC9C,QAAIzpB,EAAM,SACRA,EAAM,KAAK,KAAKkqB,CAAG,EAAE,IAErBlqB,EAAM,KAAK,GAAGkqB,CAAG,EAAE;AAAA,MAEvB;AACA,UAAIvvB,EAAA,MAAK+uB,IAAQ,QAAQ;AACvB,cAAMS,IAAM,KAAK,KAAKxvB,EAAA,MAAK+uB,GAAO,EAAE,KAAK,KAAK;AAC9C,QAAIS,EAAI,SAAS,GAAG,IACdnqB,EAAM,SACRA,EAAM,KAAK,MAAMmqB,CAAG,GAAG,IAEvBnqB,EAAM,KAAK,QAAQmqB,CAAG,GAAG,IAElBnqB,EAAM,SACfA,EAAM,KAAK,KAAKmqB,CAAG,EAAE,IAErBnqB,EAAM,KAAK,OAAOmqB,CAAG,EAAE;AAAA,MAE3B;AAAA,IACF;AACA,WAAInqB,EAAM,SACDA,EAAM,KAAK,GAAG,IAEhB;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAc;AACZ,UAAMA,IAAQ,CAAA;AACd,QAAIrF,EAAA,MAAKguB,KAAS;AAChB,UAAIqB,IAAM;AACV,iBAAWx8B,KAAKmN,EAAA,MAAKiuB;AAEnB,YADAoB,KAAOx8B,GACH,CAAC,OAAO,SAASw8B,CAAG,KAAK,OAAO,MAAMA,CAAG;AAC3C;AAGJ,MAAAhqB,EAAM,KAAKgqB,CAAG;AAAA,IAChB;AACA,QAAIrvB,EAAA,MAAKmuB,KAAS;AAChB,UAAIkB,IAAuB;AAC3B,iBAAWx8B,KAAKmN,EAAA,MAAKouB;AAEnB,YADAiB,KAAOx8B,GACH,CAAC,OAAO,SAASw8B,CAAG;AACtB;AAGJ,MAAI,OAAO,SAASA,CAAG,MACrBA,IAAM,GAAGA,CAAG,MAEVhqB,EAAM,SACRA,EAAM,KAAK,KAAKgqB,CAAG,EAAE,IAErBhqB,EAAM,KAAKgqB,CAAG;AAAA,IAElB;AACA,QAAIrvB,EAAA,MAAKsuB,KAAS;AAChB,UAAIgB,GAAKG,GAAKC;AACd,MAAI1vB,EAAA,MAAKuuB,IAAQ,WACfkB,IAAM,KAAK,KAAKzvB,EAAA,MAAKuuB,GAAO,EAAE,KAAK,KAAK,IAEtCvuB,EAAA,MAAKwuB,IAAQ,WACfkB,IAAM,KAAK,KAAK1vB,EAAA,MAAKwuB,GAAO,EAAE,KAAK,KAAK,IAEtCiB,IACEC,IACEA,EAAI,SAAS,GAAG,IAClBJ,IAAMlxB,GAAK,QAAQqxB,CAAG,OAAOC,CAAG,MAAM;AAAA,QACpC,kBAAkB;AAAA,MAAA,CACnB,IAEDJ,IAAMlxB,GAAK,QAAQqxB,CAAG,MAAMC,CAAG,KAAK;AAAA,QAClC,kBAAkB;AAAA,MAAA,CACnB,IAGHJ,IAAMlxB,GAAK,QAAQqxB,CAAG,KAAK;AAAA,QACzB,kBAAkB;AAAA,MAAA,CACnB,IAGHH,IAAMlxB,GAAK,cAAcsxB,CAAG,MAAM;AAAA,QAChC,kBAAkB;AAAA,MAAA,CACnB,GAECrqB,EAAM,SACRA,EAAM,KAAK,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC,IAExCjqB,EAAM,KAAKiqB,EAAI,QAAQ,SAAS,EAAE,CAAC;AAAA,IAEvC;AACA,QAAItvB,EAAA,MAAK2uB,KAAS;AAChB,UAAI3uB,EAAA,MAAK4uB,IAAQ,QAAQ;AACvB,cAAMa,IAAM,KAAK,KAAKzvB,EAAA,MAAK4uB,GAAO,EAC/B,IAAI,CAAA/V,MAAQ;AACX,cAAIpQ;AACJ,iBACEmlB,GAAa,KAAK/U,CAAI,KACtB,CAACA,EAAK,WAAW,GAAG,KACpB,CAACA,EAAK,SAAS,GAAG,IAElBpQ,IAAM,IAAIoQ,CAAI,MAEdpQ,IAAMoQ,GAEDpQ;AAAA,QACT,CAAC,EACA,KAAK,KAAK;AACb,QAAIpD,EAAM,SACJrF,EAAA,MAAK4uB,IAAQ,SAAS,IACxBvpB,EAAM,KAAK,MAAMoqB,CAAG,GAAG,IAEvBpqB,EAAM,KAAK,KAAKoqB,CAAG,EAAE,IAGvBpqB,EAAM,KAAK,GAAGoqB,CAAG,EAAE;AAAA,MAEvB;AACA,UAAIzvB,EAAA,MAAK6uB,IAAQ,QAAQ;AACvB,cAAMa,IAAM,KAAK,KAAK1vB,EAAA,MAAK6uB,GAAO,EAC/B,IAAI,CAAAhW,MAAQ;AACX,cAAIpQ;AACJ,iBACEmlB,GAAa,KAAK/U,CAAI,KACtB,CAACA,EAAK,WAAW,GAAG,KACpB,CAACA,EAAK,SAAS,GAAG,IAElBpQ,IAAM,IAAIoQ,CAAI,MAEdpQ,IAAMoQ,GAEDpQ;AAAA,QACT,CAAC,EACA,KAAK,KAAK;AACb,QAAIpD,EAAM,SACJrF,EAAA,MAAK6uB,IAAQ,SAAS,IACxBxpB,EAAM,KAAK,MAAMqqB,CAAG,GAAG,IAEvBrqB,EAAM,KAAK,KAAKqqB,CAAG,EAAE,IAEd1vB,EAAA,MAAK6uB,IAAQ,SAAS,IAC/BxpB,EAAM,KAAK,SAASqqB,CAAG,GAAG,IAE1BrqB,EAAM,KAAK,QAAQqqB,CAAG,EAAE;AAAA,MAE5B;AAAA,IACF;AACA,WAAIrqB,EAAM,SACDA,EAAM,KAAK,GAAG,IAEhB;AAAA,EACT;AACF;AA7dE2oB,KAAA,eACAC,KAAA,eACAC,KAAA,eAEAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAEAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eAEAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA,eACAC,KAAA;AAmdK,MAAMY,KAAiB,CAC5BnP,IAA8B,IAC9BoP,IAAoB,OACT;AACX,MAAIpP,EAAO,SAASzT;AAClB,UAAM,IAAI,MAAM,2BAA2ByT,EAAO,MAAM,GAAG;AAE7D,QAAM/a,IAAQ+a,EAAO,MAAA;AACrB,MAAI,CAACzX,EAAStD,CAAK,KAAK,CAACA,EAAM,SAAS,GAAG;AACzC,UAAM,IAAI,MAAM,oBAAoBA,CAAK,GAAG;AAE9C,QAAMoqB,IAAMrP,EAAO,IAAA;AACnB,MAAIqP,MAAQ;AACV,UAAM,IAAI,MAAM,oBAAoBA,CAAG,GAAG;AAE5C,MAAIrP,EAAO,WAAW,GAAG;AACvB,UAAM,CAACnb,CAAK,IAAImb;AAChB,QAAI,CAACxX,GAAiB3D,CAAK;AACzB,YAAM,IAAI,MAAM,oBAAoBA,CAAK,GAAG;AAE9C,WAAO,GAAGI,CAAK,GAAGJ,CAAK,GAAGwqB,CAAG;AAAA,EAC/B;AACA,QAAMC,IAAe,CAAA,GACfC,IAAM,IAAIf,GAAA;AAChB,MAAIgB,IAAmB;AACvB,QAAM34B,IAAImpB,EAAO;AACjB,WAAS3tB,IAAI,GAAGA,IAAIwE,GAAGxE,KAAK;AAC1B,UAAMwS,IAAQmb,EAAO3tB,CAAC;AACtB,QAAI,CAACmW,GAAiB3D,CAAK;AACzB,YAAM,IAAI,MAAM,oBAAoBA,CAAK,GAAG;AAE9C,QAAIA,MAAU,OAAOA,MAAU;AAC7B,MAAA2qB,IAAW3qB;AAAA,aACFA,MAAU,OAAOA,MAAU,KAAK;AACzC,YAAM4qB,IAAcF,EAAI,SAAA;AACxB,MAAIE,KACFH,EAAa,KAAKG,GAAa5qB,CAAK,GAEtC0qB,EAAI,MAAA,GACJC,IAAW;AAAA,IACb,OAAO;AACL,YAAME,IAAW,OAAO7qB,CAAK,GACvB8qB,IAAW,GAAG9qB,CAAK;AACzB,cAAQ2qB,GAAA;AAAA,QACN,KAAK,KAAK;AACR,cAAI,OAAO,SAASE,CAAQ;AAC1B,YAAAH,EAAI,SAAS,IACbA,EAAI,OAAO,KAAK,IAAIG,CAAQ;AAAA,mBACnBnC,GAAa,KAAKoC,CAAQ,GAAG;AACtC,kBAAM,CAAA,EAAG1pB,CAAG,IAAI0pB,EAAS,MAAMpC,EAAY;AAC3C,YAAAgC,EAAI,SAAS,IACbA,EAAI,OAAO,KAAMviB,KAAUA,KAAW,OAAO/G,CAAG,CAAC;AAAA,UACnD,MAAA,CAAWonB,GAAa,KAAKsC,CAAQ,KACnCJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ,MAExBJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ;AAE1B;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL;AACE,cAAI,OAAO,SAASD,CAAQ;AAC1B,YAAAH,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKG,CAAQ;AAAA,mBACfnC,GAAa,KAAKoC,CAAQ,GAAG;AACtC,kBAAM,CAAA,EAAG1pB,CAAG,IAAI0pB,EAAS,MAAMpC,EAAY;AAC3C,YAAAgC,EAAI,SAAS,IACbA,EAAI,OAAO,KAAK,OAAOtpB,CAAG,CAAC;AAAA,UAC7B,MAAA,CAAWonB,GAAa,KAAKsC,CAAQ,KACnCJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ,MAExBJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ;AAAA,MAE5B;AAAA,IAEJ;AACA,QAAIt9B,MAAMwE,IAAI,GAAG;AACf,YAAM44B,IAAcF,EAAI,SAAA;AACxB,MAAIE,KACFH,EAAa,KAAKG,CAAW,GAE/BF,EAAI,MAAA,GACJC,IAAW;AAAA,IACb;AAAA,EACF;AACA,MAAI7P,IAAgB;AACpB,MAAIyP,MAAaE,EAAa,SAAS,GAAG,KAAKA,EAAa,SAAS,GAAG,IAAI;AAC1E,UAAMM,IAAkB,CAAA;AACxB,IAAAL,EAAI,MAAA,GACJC,IAAW;AACX,UAAM34B,IAAIy4B,EAAa;AACvB,aAASj9B,IAAI,GAAGA,IAAIwE,GAAGxE,KAAK;AAC1B,YAAMwS,IAAQyqB,EAAaj9B,CAAC;AAC5B,UAAImW,GAAiB3D,CAAK;AACxB,YAAIA,MAAU,OAAOA,MAAU;AAC7B,UAAA2qB,IAAW3qB;AAAA,aACN;AACL,gBAAM6qB,IAAW,OAAO7qB,CAAK,GACvB8qB,IAAW,GAAG9qB,CAAK;AACzB,kBAAQ2qB,GAAA;AAAA,YACN,KAAK,KAAK;AACR,kBAAI,OAAO,SAASE,CAAQ;AAC1B,gBAAAH,EAAI,SAAS,IACbA,EAAI,OAAO,KAAK,KAAKG,CAAQ;AAAA,uBACpBnC,GAAa,KAAKoC,CAAQ,GAAG;AACtC,sBAAM,CAAA,EAAG1pB,CAAG,IAAI0pB,EAAS,MAAMpC,EAAY;AAC3C,gBAAAgC,EAAI,SAAS,IACbA,EAAI,OAAO,KAAK,KAAK,OAAOtpB,CAAG,CAAC;AAAA,cAClC,MAAA,CAAWonB,GAAa,KAAKsC,CAAQ,KACnCJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ,MAExBJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ;AAE1B;AAAA,YACF;AAAA,YACA,KAAK;AAAA,YACL;AACE,kBAAI,OAAO,SAASD,CAAQ;AAC1B,gBAAAH,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKG,CAAQ;AAAA,uBACfnC,GAAa,KAAKoC,CAAQ,GAAG;AACtC,sBAAM,CAAA,EAAG1pB,CAAG,IAAI0pB,EAAS,MAAMpC,EAAY;AAC3C,gBAAAgC,EAAI,SAAS,IACbA,EAAI,OAAO,KAAK,OAAOtpB,CAAG,CAAC;AAAA,cAC7B,MAAA,CAAWonB,GAAa,KAAKsC,CAAQ,KACnCJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ,MAExBJ,EAAI,SAAS,IACbA,EAAI,OAAO,KAAKI,CAAQ;AAAA,UAE5B;AAAA,QAEJ;AAEF,UAAIt9B,MAAMwE,IAAI,GAAG;AACf,cAAM44B,IAAcF,EAAI,IAAA;AACxB,QAAIE,KACFG,EAAgB,KAAKH,CAAW,GAElCF,EAAI,MAAA,GACJC,IAAW;AAAA,MACb;AAAA,IACF;AACA,IAAA7P,IAAgBiQ,EAAgB,KAAK,GAAG,EAAE,QAAQ,UAAU,IAAI;AAAA,EAClE;AACE,IAAAjQ,IAAgB2P,EAAa,KAAK,GAAG,EAAE,QAAQ,UAAU,IAAI;AAE/D,SACE3P,EAAc,WAAW,GAAG,KAC5BA,EAAc,SAAS,GAAG,KAC1BA,EAAc,YAAY,GAAG,MAAM,KACnCA,EAAc,QAAQ,GAAG,MAAMA,EAAc,SAAS,MAEtDA,IAAgBA,EAAc,QAAQ,OAAO,EAAE,EAAE,QAAQ,OAAO,EAAE,IAE7D,GAAG1a,CAAK,GAAG0a,CAAa,GAAG0P,CAAG;AACvC,GAQanF,KAAgB,CAACrlB,GAAeoL,IAAe,OAAe;AACzE,QAAM,EAAE,QAAAN,IAAS,GAAA,IAAOM;AACxB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,QAAI,CAACsoB,GAAiB,KAAKtoB,CAAK,KAAK8K,MAAWzD;AAC9C,aAAOrH;AAET,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA,EAC9B;AACE,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAMqB,IAAkBxjB,GAAS,EAAE,KAAKiQ,GAAO,EAC5C,IAAI,CAACya,MAA4B;AAChC,UAAM,CAAChhB,GAAMuG,CAAK,IAAIya;AACtB,QAAIrX,IAAM;AACV,WAAI3J,MAASygB,MAAWzgB,MAASsgB,OAC/B3W,IAAMpD,IAEDoD;AAAA,EACT,CAAC,EACA,OAAO,CAAA3O,MAAKA,CAAC;AAChB,MAAIu2B,IAAazX,EAAM,cAAc,CAACC,MAAiB,MAAM,KAAKA,CAAI,CAAC;AACvE,SAAOwX,KAAY;AACjB,UAAMC,IAAW1X,EAAM,UAAU,CAACC,GAAe5T,MACxC4T,MAAS,OAAO5T,IAAQorB,CAChC,GACKE,IAAyB3X,EAAM,MAAMyX,GAAYC,IAAW,CAAC;AACnE,QAAIE,IAA0Bb,GAAeY,CAAY;AACzD,IAAI5C,GAAiB,KAAK6C,CAAe,MACvCA,IAAkBpyB,GAAKoyB,GAAiB;AAAA,MACtC,kBAAkB;AAAA,IAAA,CACnB,IAEH5X,EAAM,OAAOyX,GAAYC,IAAWD,IAAa,GAAGG,CAAe,GACnEH,IAAazX,EAAM,cAAc,CAACC,MAAiB,MAAM,KAAKA,CAAI,CAAC;AAAA,EACrE;AACA,QAAM4X,IAAiBd,GAAe/W,GAAO,EAAI;AACjD,SAAAvI,EAASH,GAAUugB,CAAc,GAC1BA;AACT,GAQajG,KAAmB,CAC9B1K,GACArP,IAAe,OACS;AACxB,MAAI,CAAC,MAAM,QAAQqP,CAAK;AACtB,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM,CAAA,EAAA,EAAA,EAAA,EAASwK,IAAS,CAAA,CAAE,IAAIxK,GACxB,EAAE,MAAA/M,GAAM,OAAA1N,EAAA,IAAUilB,GAIlB,EAAE,WAAAmD,IAAY,CAAA,EAAC,IAAMhd;AAC3B,MAAIsC,MAAS;AACX,WAAO,GAAG1N,CAAK,GAAG0N,CAAI;AAExB,QAAM2d,IAAgB,OAAOrrB,CAAK;AAClC,MAAI0N,KAAQ,OAAO,SAAS2d,CAAa,GAAG;AAC1C,QAAIC;AAOJ,QANI,OAAO,OAAOlD,GAAW1a,CAAI,IAC/B4d,IAAalD,EAAU1a,CAAI,IAClB,OAAO0a,EAAU,YAAa,eACvCkD,IAAalD,EAAU,SAAS1a,CAAI,IAEtC4d,IAAa,OAAOA,CAAU,GAC1B,OAAO,SAASA,CAAU;AAC5B,aAAO,GAAGD,IAAgBC,CAAU;AAAA,EAExC;AACA,SAAO,IAAIrgB,EAAA;AACb,GAQaiQ,KAAc,CACzBX,GACAnP,IAAe,OACF;AACb,MAAI,CAAC,MAAM,QAAQmP,CAAM;AACvB,UAAM,IAAI,UAAU,GAAGA,CAAM,mBAAmB;AAElD,QAAM,EAAE,QAAAzP,IAAS,GAAA,IAAOM,GAClByZ,wBAAe,IAAA;AACrB,MAAIE,IAAO;AACX,QAAM3hB,IAAgB,CAAA;AACtB,SAAOmX,EAAO,UAAQ;AACpB,UAAME,IAAQF,EAAO,MAAA;AACrB,QAAI,CAAC,MAAM,QAAQE,CAAK;AACtB,YAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,UAAM,CAAChhB,IAAO,IAAIuG,IAAQ,EAAE,IAAIya;AAChC,YAAQhhB,GAAA;AAAA,MACN,KAAKsqB,IAAK;AACR,YAAIjZ,MAAWzD,KAAY,CAACwd,EAAS,IAAIE,CAAI;AAC3C,UAAA3hB,EAAI,KAAKpD,CAAK;AAAA,aACT;AACL,gBAAM8a,IAAgBqK,GAAiB1K,GAAOrP,CAAG;AACjD,UAAI1H,EAASoX,CAAa,IACxB1X,EAAI,KAAK0X,CAAa,IAEtB1X,EAAI,KAAKpD,CAAK;AAAA,QAElB;AACA;AAAA,MACF;AAAA,MACA,KAAKgkB;AAAA,MACL,KAAKC,IAAY;AACf,QAAA7gB,EAAI,KAAKpD,CAAK,GACd+kB,KACIR,GAAkB,KAAKvkB,CAAK,KAC9B6kB,EAAS,IAAIE,CAAI;AAEnB;AAAA,MACF;AAAA,MACA,KAAKjL,IAAa;AAChB,QAAI1W,EAAI,UACYA,EAAIA,EAAI,SAAS,CAAC,MAClB,MAChBA,EAAI,OAAO,IAAI,GAAGpD,CAAK,IAKzBoD,EAAI,KAAKpD,CAAK,GAEZ6kB,EAAS,IAAIE,CAAI,KACnBF,EAAS,OAAOE,CAAI,GAEtBA;AACA;AAAA,MACF;AAAA,MACA,KAAK7K,IAAS;AACZ,YAAI9W,EAAI,QAAQ;AACd,gBAAMwX,IAAYxX,EAAIA,EAAI,SAAS,CAAC;AACpC,UACEM,EAASkX,CAAS,KAClB,CAACA,EAAU,SAAS,GAAG,KACvBA,MAAc,OAEdxX,EAAI,KAAKpD,CAAK;AAAA,QAElB;AACA;AAAA,MACF;AAAA,MACA;AACE,QAAIvG,MAASsgB,MAAWtgB,MAASugB,MAC/B5W,EAAI,KAAKpD,CAAK;AAAA,IAElB;AAAA,EAEJ;AACA,SAAOoD;AACT,GAQa6X,KAAU,CAACjb,GAAeoL,IAAe,OAAe;AACnE,QAAM,EAAE,QAAAN,IAAS,GAAA,IAAOM;AACxB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,QAAIqa,GAAW,KAAKra,CAAK,GAAG;AAC1B,UAAI8K,MAAWzD;AACb,eAAOrH;AACF;AACL,cAAM8a,IAAgBE,GAAWhb,GAAOoL,CAAG;AAC3C,eAAI1H,EAASoX,CAAa,IACjBA,IAEA;AAAA,MAEX;AAAA,IACF,WAAW,CAACV,GAAY,KAAKpa,CAAK;AAChC,aAAOA;AAET,IAAAA,IAAQA,EAAM,YAAA,EAAc,KAAA;AAAA,EAC9B;AACE,UAAM,IAAI,UAAU,GAAGA,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAMqI,IAASxqB,GAAS,EAAE,KAAKiQ,GAAO,GAChCmb,IAASD,GAAYX,GAAQnP,CAAG;AACtC,MAAI0P,IAAwB/hB,GAAKoiB,EAAO,KAAK,EAAE,GAAG;AAAA,IAChD,kBAAkB;AAAA,EAAA,CACnB;AACD,MAAImN,GAAiB,KAAKtoB,CAAK,GAAG;AAChC,QAAIyoB,GAAiB,KAAK3N,CAAa,GAAG;AACxC,YAAM,GAAG1Z,GAAKsM,CAAI,IAAIoN,EAAc;AAAA,QAClC2N;AAAA,MAAA;AAEF,MAAA3N,IAAgB,GAAG5K,EAAiB,OAAO9O,CAAG,GAAG2G,EAAG,CAAC,GAAG2F,CAAI;AAAA,IAC9D;AAEA,IACEoN,KACA,CAACwN,GAAiB,KAAKxN,CAAa,KACpChQ,MAAWzD,MAEXyT,IAAgB,QAAQA,CAAa;AAAA,EAEzC;AACA,MAAIhQ,MAAWzD;AACb,QAAI,aAAa,KAAKyT,CAAa,KAAK,CAACA,EAAc,SAAS,KAAK;AACnE,MAAAA,IAAgBuK,GAAcvK,GAAe1P,CAAG;AAAA,aACvCid,GAAgB,KAAKvN,CAAa,GAAG;AAC9C,YAAM,CAAA,EAAG1Z,CAAG,IAAI0Z,EAAc,MAAMuN,EAAe;AACnD,MAAAvN,IAAgB,QAAQ5K,EAAiB,OAAO9O,CAAG,GAAG2G,EAAG,CAAC;AAAA,IAC5D;AAAA;AAEF,SAAAiD,EAASH,GAAUiQ,CAAa,GACzBA;AACT,GC96BMxT,KAAY,gBACZikB,KAAY,GAAGhnB,EAAG,MAAMF,EAAK,KAC7BmnB,KAAgB,GAAGD,EAAS,IAAI7mB,EAAG,IACnC+mB,KAAU,GAAGlnB,EAAG,MAAMD,EAAM,OAC5BonB,KAAc,GAAGD,EAAO,IAAI/mB,EAAG,IAC/BinB,KAAmB,GAAGnnB,EAAY,MAAMF,EAAM,SAC9CsnB,KAAe,GAAGpnB,EAAY,MAAMF,EAAM,OAC1CunB,KAAM,UACNC,KAAM,cACNC,KAAM,cACNC,KAAM,aACNC,KAAS,GAAGH,EAAG,SAASE,EAAG,KAC3BE,KAAS,GAAGH,EAAG,SAASC,EAAG,KAC3BG,KAAQ,YAAYH,EAAG,KACvBI,KAAS,aAAaJ,EAAG,KACzBK,KAAQ,GAAGR,EAAG,IAAII,EAAM,IAAIC,EAAM,IAAIC,EAAK,IAAIC,EAAM,IAAIV,EAAW,IACpEY,KAAQ;AAAA,EACZ,MAAMT,EAAG,IAAII,EAAM,WAAWJ,EAAG,IAAIK,EAAM;AAAA,EAC3C,MAAML,EAAG,IAAIK,EAAM,WAAWL,EAAG,IAAII,EAAM;AAAA,EAC3C,MAAMJ,EAAG,IAAII,EAAM,IAAIP,EAAW,WAAWG,EAAG,IAAIK,EAAM,IAAIR,EAAW;AAAA,EACzE,MAAMG,EAAG,IAAIM,EAAK,WAAWN,EAAG,IAAIO,EAAM;AAAA,EAC1C,MAAMP,EAAG,IAAIO,EAAM,WAAWP,EAAG,IAAIM,EAAK;AAAA,EAC1C,MAAMN,EAAG,IAAIG,EAAG,WAAWH,EAAG,IAAIG,EAAG;AACvC,EAAE,KAAK,GAAG,GACJO,KAAQ;AAAA,EACZ,MAAMN,EAAM,WAAWP,EAAW,WAAWQ,EAAM,WAAWR,EAAW;AAAA,EACzE,MAAMQ,EAAM,WAAWR,EAAW,WAAWO,EAAM,WAAWP,EAAW;AAAA,EACzE,MAAMS,EAAK,WAAWT,EAAW,WAAWU,EAAM,WAAWV,EAAW;AAAA,EACxE,MAAMU,EAAM,WAAWV,EAAW,WAAWS,EAAK,WAAWT,EAAW;AAAA,EACxE,MAAMM,EAAG,WAAWN,EAAW,WAAWM,EAAG,WAAWN,EAAW;AACrE,EAAE,KAAK,GAAG,GACJc,KAAa,qCACbC,KAAW;AAAA,EACf,GAAGD,EAAU,UAAUA,EAAU;AAAA,EACjC,GAAGZ,EAAY;AAAA,EACf,MAAMD,EAAgB,WAAWA,EAAgB;AACnD,EAAE,KAAK,GAAG,GACJe,KAAY,kBACZC,KAAa,WAAWpB,EAAS,IACjCqB,KAAc,YAAYP,EAAK,IAAIC,EAAK,IAAIC,EAAK,KACjDM,KAAiB,eAAef,EAAG,aAAaC,EAAG,UAAUA,EAAG,aAAaD,EAAG,QAChFgB,KAAiB,YAAY/mB,EAAO,IAAIP,EAAM,KA2C9CunB,KAAW,sDACXC,KAAgB,wDAOTC,KAAkB,CAACjtB,MAA0B;AACxD,MAAI0D,EAAS1D,CAAK,MAChBA,IAAQA,EAAM,KAAA,GACV+sB,GAAS,KAAK/sB,CAAK,IAAG;AACxB,UAAM,CAAA,EAAGvG,CAAI,IAAIuG,EAAM,MAAMgtB,EAAa;AAC1C,WAAOvzB;AAAA,EACT;AAEF,SAAO;AACT,GAQayzB,KAAuB,CAClCltB,GACAvG,MACyB;AACzB,MAAIiK,EAAS1D,CAAK,KAAK0D,EAASjK,CAAI,GAAG;AACrC,IAAAuG,IAAQA,EAAM,KAAA,GACdvG,IAAOA,EAAK,KAAA;AACZ,QAAI0zB,IAAa;AACjB,UAAMC,IAAgB,CAAA;AA0CtB,QAzCI,mCAAmC,KAAK3zB,CAAI,KAO9C0zB,IAAa;AAAA,MACX,MAAM5B,EAAS,IAAIsB,EAAc,WAAWC,EAAc;AAAA,MAC1D,GAAGA,EAAc,aAAavB,EAAS,IAAIsB,EAAc;AAAA,IAAA,EACzD,KAAK,GAAG,GACVO,EAAc,KAAK,aAAa,KACvB,mCAAmC,KAAK3zB,CAAI,KAMrD0zB,IAAa;AAAA,MACX,MAAMT,EAAS,cAAcD,EAAQ,aAAaG,EAAW,YAAYE,EAAc;AAAA,MACvF,MAAML,EAAQ,cAAcC,EAAS,aAAaE,EAAW,YAAYE,EAAc;AAAA,MACvF,GAAGF,EAAW,UAAUE,EAAc;AAAA,MACtC,GAAGA,EAAc,UAAUJ,EAAS,cAAcD,EAAQ,aAAaG,EAAW;AAAA,MAClF,GAAGE,EAAc,UAAUL,EAAQ,cAAcC,EAAS,aAAaE,EAAW;AAAA,MAClF,GAAGE,EAAc,UAAUF,EAAW;AAAA,IAAA,EACtC,KAAK,GAAG,GACVQ,EAAc,KAAK,WAAW,mBAAmB,aAAa,KACrD,kCAAkC,KAAK3zB,CAAI,MAOpD0zB,IAAa;AAAA,MACX,GAAGR,EAAU,UAAUC,EAAW,YAAYE,EAAc;AAAA,MAC5D,GAAGF,EAAW,UAAUE,EAAc;AAAA,MACtC,GAAGA,EAAc,UAAUH,EAAU,YAAYC,EAAW;AAAA,IAAA,EAC5D,KAAK,GAAG,GACVQ,EAAc,KAAK,aAAa,IAE9BD,GAAY;AAEd,YAAME,IADM,IAAI,OAAO,OAAOF,CAAU,IAAI,EAC1B,KAAKntB,CAAK;AAC5B,UAAIqtB,GAAO;AACT,YAAIC,IAAOttB;AACX,mBAAWutB,KAAgBH;AACzB,UAAAE,IAAOA,EAAK,QAAQC,GAAc,EAAE;AAEtC,eAAAD,IAAOA,EAAK,QAAQ,WAAW,GAAG,EAAE,KAAA,GAC7B;AAAA,UACL,MAAAA;AAAA,UACA,OAAAD;AAAA,QAAA;AAAA,MAEJ;AACA,aAAO;AAAA,QACL,OAAAA;AAAA,QACA,MAAMrtB;AAAA,MAAA;AAAA,IAEV;AAAA,EACF;AACA,SAAO;AAAA,IACL,MAAMA;AAAA,IACN,OAAO;AAAA,EAAA;AAEX,GASawtB,KAAwB,CACnCC,GACAh0B,GACA2R,IAAe,CAAA,MACQ;AACvB,MAAI,MAAM,QAAQqiB,CAAI,KAAKA,EAAK,SAAS,GAAG;AAC1C,UAAMrF,IAAY,kCAAkC,KAAK3uB,CAAI,IACzD+xB,KACAE,IACEgC,IAAe,IAAI,OAAO,OAAOtF,CAAS,IAAI,GAC9CuF,IAAe,IAAI,OAAO,aAAavF,CAAS,UAAU,GAC1DwF,IAAa,CAAA,GACbC,IAAY,CAAA;AAClB,eAAWra,KAAQia;AACjB,UAAI/pB,EAAS8P,CAAI;AACf,YAAIka,EAAa,KAAKla,CAAI;AACxB,UAAAoa,EAAW,KAAK,MAAM,GACtBC,EAAU,KAAKra,CAAI;AAAA,aACd;AACL,gBAAMsa,IAAYta,EAAK,QAAQma,GAAc,EAAE;AAC/C,cAAI9S,GAAQiT,GAAW,EAAE,QAAQzmB,EAAA,CAAU,GAAG;AAC5C,kBAAM0mB,IAAgB5Z,GAAa2Z,GAAW1iB,CAAG;AACjD,YAAAwiB,EAAW,KAAK,OAAO,GACvBC,EAAU,KAAKra,EAAK,QAAQsa,GAAWC,CAAa,CAAC;AAAA,UACvD;AACE,mBAAO;AAAA,cACL,YAAYN;AAAA,cACZ,OAAO;AAAA,YAAA;AAAA,QAGb;AAIJ,WAAO;AAAA,MACL,OAFY,+BAA+B,KAAKG,EAAW,KAAK,GAAG,CAAC;AAAA,MAGpE,YAAYC;AAAA,IAAA;AAAA,EAEhB;AACA,SAAO;AAAA,IACL,YAAYJ;AAAA,IACZ,OAAO;AAAA,EAAA;AAEX,GAQaO,KAAgB,CAC3BhuB,GACAoL,IAAe,OACK;AACpB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,IAAAA,IAAQA,EAAM,KAAA;AACd,UAAM6K,IAAmBoH;AAAA,MACvB;AAAA,QACE,WAAW3K;AAAAA,QACX,MAAM;AAAA,QACN,OAAAtH;AAAA,MAAA;AAAA,MAEFoL;AAAA,IAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,QAAIqH,aAAwBE;AAC1B,aAAIF,EAAa,SACR,OAEFA,EAAa;AAEtB,UAAMzY,IAAOwzB,GAAgBjtB,CAAK,GAC5BiuB,IAAYjuB,EAAM,QAAQ+sB,IAAU,EAAE,EAAE,QAAQ,OAAO,EAAE;AAC/D,QAAItzB,KAAQw0B,GAAW;AACrB,YAAM,CAACC,IAAkB,IAAI,GAAGC,CAAQ,IAAIta,GAAWoa,GAAW;AAAA,QAChE,WAAW;AAAA,MAAA,CACZ,GACK7F,IAAY,kCAAkC,KAAK3uB,CAAI,IACzD+xB,KACAE,IACEiC,IAAe,IAAI,OAAO,aAAavF,CAAS,UAAU;AAChE,UAAIgG,IAAY;AAChB,UAAIT,EAAa,KAAKO,CAAe,GAAG;AACtC,cAAMJ,IAAYI,EAAgB,QAAQP,GAAc,EAAE;AAC1D,YAAI9S,GAAQiT,GAAW,EAAE,QAAQzmB,EAAA,CAAU,GAAG;AAC5C,gBAAM0mB,IAAgB5Z,GAAa2Z,GAAW1iB,CAAG;AACjD,UAAAgjB,IAAYF,EAAgB,QAAQJ,GAAWC,CAAa;AAAA,QAC9D;AAAA,MACF,OAAWlT,GAAQqT,GAAiB,EAAE,QAAQ7mB,EAAA,CAAU,MACtD+mB,IAAYja,GAAa+Z,GAAiB9iB,CAAG;AAE/C,UAAIgjB,GAAW;AACb,QAAAD,EAAS,QAAQC,CAAS;AAC1B,cAAM,EAAE,YAAAC,GAAY,OAAAhB,EAAA,IAAUG;AAAA,UAC5BW;AAAA,UACA10B;AAAA,UACA2R;AAAA,QAAA;AAEF,YAAIiiB,GAAO;AACT,gBAAMjqB,IAAgB;AAAA,YACpB,OAAApD;AAAA,YACA,MAAAvG;AAAA,YACA,eAAe40B;AAAA,UAAA;AAEjB,iBAAArjB,EAASH,GAAUzH,CAAG,GACfA;AAAA,QACT;AAAA,MACF,WAAW+qB,EAAS,SAAS,GAAG;AAC9B,cAAM,EAAE,MAAMG,GAAc,OAAOC,MAAcrB;AAAA,UAC/CgB;AAAA,UACAz0B;AAAA,QAAA,GAEI,EAAE,YAAA40B,GAAY,OAAOG,EAAA,IAAoBhB;AAAA,UAC7CW;AAAA,UACA10B;AAAA,UACA2R;AAAA,QAAA;AAEF,YAAImjB,KAAaC,GAAiB;AAChC,gBAAMprB,IAAgB;AAAA,YACpB,OAAApD;AAAA,YACA,MAAAvG;AAAA,YACA,cAAA60B;AAAA,YACA,eAAeD;AAAA,UAAA;AAEjB,iBAAArjB,EAASH,GAAUzH,CAAG,GACfA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AACA,WAAA4H,EAASH,GAAU,IAAI,GAChB;AAAA,EACT;AACA,SAAO;AACT,GAQa4jB,KAAkB,CAACzuB,GAAeoL,IAAe,OAAe;AAC3E,QAAM,EAAE,QAAAN,IAAS3D,GAAA,IAAaiE,GACxBsjB,IAAWV,GAAchuB,GAAOoL,CAAG;AACzC,MAAIsjB,GAAU;AACZ,UAAM,EAAE,MAAAj1B,IAAO,IAAI,cAAA60B,IAAe,IAAI,eAAAK,IAAgB,CAAA,MAAOD;AAC7D,QAAIj1B,KAAQ,MAAM,QAAQk1B,CAAa,KAAKA,EAAc,SAAS;AACjE,aAAIL,IACK,GAAG70B,CAAI,IAAI60B,CAAY,KAAKK,EAAc,KAAK,IAAI,CAAC,MAEtD,GAAGl1B,CAAI,IAAIk1B,EAAc,KAAK,IAAI,CAAC;AAAA,EAE9C;AACA,SAAI7jB,MAAWzD,IACN,KAEF;AACT,GAQaunB,KAAa,CAAC5uB,GAAeoL,IAAe,OACtC4iB,GAAchuB,GAAOoL,CAAG,MACrB,MC9VhB9D,KAAY,WAGZ8S,KAAc,IAAI,OAAOzV,EAAW,GACpC6f,KAAa,IAAI,OAAO/d,EAAU,GAClC4T,KAAa,IAAI,OAAOxV,EAAU,GAQ3BgqB,KAAa,CACxB7uB,GACAoL,IAAe,OACS;AACxB,MAAI1H,EAAS1D,CAAK;AAEhB,QADAA,IAAQA,EAAM,KAAA,GACV,CAACA;AACH,aAAO,IAAIiL,EAAA;AAAA;AAGb,WAAO,IAAIA,EAAA;AAEb,QAAMJ,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACRA,IAEFA,EAAa;AAEtB,MAAImI,GAAW,KAAKra,CAAK,GAAG;AAC1B,UAAM8a,IAAgBE,GAAWhb,GAAOoL,CAAG;AAC3C,QAAI1H,EAASoX,CAAa;AACxB,MAAA9a,IAAQ8a;AAAA;AAER,aAAA9P,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,EAEf;AACA,MAAIuZ,GAAW,KAAKxkB,CAAK,GAAG;AAC1B,UAAM8a,IAAgBiL,GAAqB/lB,GAAOoL,CAAG;AACrD,QAAI1H,EAASoX,CAAa;AACxB,MAAA9a,IAAQ8a;AAAA;AAER,aAAA9P,EAASH,GAAU,IAAI,GAChB,IAAII,EAAA;AAAA,EAEf,MAAA,CAAWmP,GAAY,KAAKpa,CAAK,MAC/BA,IAAQib,GAAQjb,GAAOoL,CAAG;AAE5B,MAAIpL,EAAM,WAAW,WAAW,GAAG;AACjC,UAAM8uB,IAAY,gBAAgB1jB,CAAG;AACrC,IAAA0jB,EAAU,SAAS3nB,IACnB2nB,EAAU,WAAW;AACrB,UAAMhU,IAAgB3G,GAAanU,GAAO8uB,CAAS;AACnD,WAAA9jB,EAASH,GAAUiQ,CAAa,GACzBA;AAAA,EACT;AACA,SAAA9P,EAASH,GAAU7K,CAAK,GACjBA;AACT,GAOa+uB,KAAc,CAAC/uB,MACdmN,GAAkBnN,CAAK,GAWxBgvB,KAAa,CAAChvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO;AAET,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM,EAAE,OAAAqL,IAAQ,GAAA,IAAUD,GACpBP,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAIF,EAAa,SACR,OAEFA,EAAa;AAEtB,MAAI9E;AASJ,SARAhC,EAAI,WAAW,IACXC,KACFD,EAAI,SAAS,YACbgC,IAAM+G,GAAanU,GAAOoL,CAAG,MAE7BA,EAAI,SAAS,OACbgC,IAAM+G,GAAanU,GAAOoL,CAAG,IAE3B1H,EAAS0J,CAAG,KACdpC,EAASH,GAAUuC,CAAG,GACfA,MAETpC,EAASH,GAAU,IAAI,GAChB;AACT,GAQaokB,KAAa,CAACjvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,EAAA9G,EAAI,SAAS;AACb,QAAMmX,IAAM7P,GAAkB1S,GAAOoL,CAAG;AACxC,SAAAJ,EAASH,GAAU0X,CAAG,GACfA;AACT,GAQa2M,KAAa,CAAClvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,EAAA9G,EAAI,SAAS;AACb,QAAM+jB,IAAMxc,GAAkB3S,GAAOoL,CAAG;AACxC,SAAAJ,EAASH,GAAUskB,CAAG,GACfA;AACT,GAQaC,KAAa,CAACpvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAM0Q,IAAMhQ,GAAkB5S,GAAOoL,CAAG;AACxC,SAAAJ,EAASH,GAAU+X,CAAG,GACfA;AACT,GAQayM,KAAa,CAACrvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAM4Q,IAAMjQ,GAAkB7S,GAAOoL,CAAG;AACxC,SAAAJ,EAASH,GAAUiY,CAAG,GACfA;AACT,GAQawM,KAAe,CAC1BtvB,GACAoL,IAAe,OACG;AAClB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAM0Q,IAAM9P,GAAoB9S,GAAOoL,CAAG;AAC1C,SAAAJ,EAASH,GAAU+X,CAAG,GACfA;AACT,GAQa2M,KAAe,CAC1BvvB,GACAoL,IAAe,OACG;AAClB,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAM4Q,IAAM/P,GAAoB/S,GAAOoL,CAAG;AAC1C,SAAAJ,EAASH,GAAUiY,CAAG,GACfA;AACT,GAQa0M,KAAa,CAACxvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,QAAMlE,IAAMwE,GAAkBxS,GAAOoL,CAAG;AACxC,SAAAJ,EAASH,GAAUmD,CAAG,GACfA;AACT,GAQayhB,KAAa,CAACzvB,GAAeoL,IAAe,OAAsB;AAC7E,MAAI1H,EAAS1D,CAAK,GAAG;AACnB,UAAM8a,IAAgB+T,GAAW7uB,GAAOoL,CAAG;AAC3C,QAAI0P,aAAyB7P;AAC3B,aAAO,CAAC,GAAG,GAAG,GAAG,CAAC;AAEpB,IAAAjL,IAAQ8a,EAAc,YAAA;AAAA,EACxB;AACE,UAAM,IAAI,UAAU,GAAG9a,CAAK,mBAAmB;AAEjD,QAAM6K,IAAmBoH;AAAA,IACvB;AAAA,MACE,WAAW3K;AAAA,MACX,MAAM;AAAA,MACN,OAAAtH;AAAA,IAAA;AAAA,IAEFoL;AAAA,EAAA,GAEI8G,IAAeC,GAAStH,CAAQ;AACtC,MAAIqH,aAAwBE;AAC1B,WAAOF,EAAa;AAEtB,MAAIzD;AACJ,SAAIzO,EAAM,WAAW,QAAQ,IAC3B,CAAA,EAAG,GAAGyO,CAAG,IAAI4C,GAAerR,GAAOoL,CAAG,IAEtC,CAAA,EAAG,GAAGqD,CAAG,IAAIsD,GAAgB/R,GAAOoL,CAAG,GAEzCJ,EAASH,GAAU4D,CAAG,GACfA;AACT,GAQaihB,KAAgB,CAC3B1vB,GACAoL,IAAe,QAEfA,EAAI,MAAM,IACHqkB,GAAWzvB,GAAOoL,CAAG,IAIjBukB,KAAU;AAAA,EACrB,YAAAX;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAE;AAAA,EACA,YAAAC;AAAA,EACA,cAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,aAAAX;AACF;ACpdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAeO,MAAMa,KAAQ;AAAA,EACnB,SAASC;AAAAA,EACT,QAAAxU;AAAA,EACA,oBAAAiM;AAAA,EACA,SAASwI;AAAAA,EACT,YAAAlB;AAAA,EACA,iBAAAH;AAAA,EACA,YAAA5a;AACF;","x_google_ignoreList":[0,1,2,3,8,9]}
|